[ { "inputs": [ { "internalType": "contract IProtocolToken", "name": "token", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "usageAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Allocate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "usageAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ApproveUsage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "xTokenAmount", "type": "uint256" } ], "name": "CancelRedeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Convert", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "usageAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "Deallocate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "xTokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "FinalizeRedeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "xTokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "Redeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "add", "type": "bool" } ], "name": "SetTransferWhitelist", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "usageAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "UpdateDeallocationFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousDividendsAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newDividendsAddress", "type": "address" } ], "name": "UpdateDividendsAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "redeemIndex", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "previousDividendsAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newDividendsAddress", "type": "address" } ], "name": "UpdateRedeemDividendsAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "minRedeemRatio", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "maxRedeemRatio", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "minRedeemDuration", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "maxRedeemDuration", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "redeemDividendsAdjustment", "type": "uint256" } ], "name": "UpdateRedeemSettings", "type": "event" }, { "inputs": [], "name": "MAX_DEALLOCATION_FEE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_FIXED_RATIO", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "usageAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "usageData", "type": "bytes" } ], "name": "allocate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "allocateFromUsage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IXTokenUsage", "name": "usage", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approveUsage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "redeemIndex", "type": "uint256" } ], "name": "cancelRedeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "convert", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "convertTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "usageAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "usageData", "type": "bytes" } ], "name": "deallocate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "deallocateFromUsage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "dividendsAddress", "outputs": [ { "internalType": "contract IXTokenUsage", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "redeemIndex", "type": "uint256" } ], "name": "finalizeRedeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "getAmountByVestingDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" }, { "internalType": "address", "name": "usageAddress", "type": "address" } ], "name": "getUsageAllocation", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" }, { "internalType": "address", "name": "usageAddress", "type": "address" } ], "name": "getUsageApproval", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" }, { "internalType": "uint256", "name": "redeemIndex", "type": "uint256" } ], "name": "getUserRedeem", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "xTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "address", "name": "dividendsContract", "type": "address" }, { "internalType": "uint256", "name": "dividendsAllocation", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "getUserRedeemsLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "getxTokenBalance", "outputs": [ { "internalType": "uint256", "name": "allocatedAmount", "type": "uint256" }, { "internalType": "uint256", "name": "redeemingAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isTransferWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxRedeemDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxRedeemRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minRedeemDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minRedeemRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "protocolToken", "outputs": [ { "internalType": "contract IProtocolToken", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "xTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "redeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "redeemDividendsAdjustment", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "transferWhitelist", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transferWhitelistLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "usageAddress", "type": "address" }, { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "updateDeallocationFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IXTokenUsage", "name": "dividendsAddress_", "type": "address" } ], "name": "updateDividendsAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "redeemIndex", "type": "uint256" } ], "name": "updateRedeemDividendsAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "minRedeemRatio_", "type": "uint256" }, { "internalType": "uint256", "name": "maxRedeemRatio_", "type": "uint256" }, { "internalType": "uint256", "name": "minRedeemDuration_", "type": "uint256" }, { "internalType": "uint256", "name": "maxRedeemDuration_", "type": "uint256" }, { "internalType": "uint256", "name": "redeemDividendsAdjustment_", "type": "uint256" } ], "name": "updateRedeemSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "add", "type": "bool" } ], "name": "updateTransferWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "usageAllocations", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "usageApprovals", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "usagesDeallocationFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "userRedeems", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "xTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "contract IXTokenUsage", "name": "dividendsAddress", "type": "address" }, { "internalType": "uint256", "name": "dividendsAllocation", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "xTokenBalances", "outputs": [ { "internalType": "uint256", "name": "allocatedAmount", "type": "uint256" }, { "internalType": "uint256", "name": "redeemingAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60a06040526032600d556064600e556213c680600f556276a70060105560326011553480156200002e57600080fd5b506040516200436738038062004367833981810160405260208110156200005457600080fd5b5051604080518082018252601781527f426173657377617020657363726f77656420746f6b656e000000000000000000602082810191909152825180840190935260048352630f084a6b60e31b90830152906000620000b262000170565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055815162000115906005906020850190620001fb565b5080516200012b906006906020840190620001fb565b505060078054601260ff1990911617905550606081901b6001600160601b0319166080526200016860083062000174602090811b620029e717901c565b5050620002a7565b3390565b60006200018b836001600160a01b03841662000194565b90505b92915050565b6000620001a28383620001e3565b620001da575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200018e565b5060006200018e565b60009081526001919091016020526040902054151590565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200023357600085556200027e565b82601f106200024e57805160ff19168380011785556200027e565b828001600101855582156200027e579182015b828111156200027e57825182559160200191906001019062000261565b506200028c92915062000290565b5090565b5b808211156200028c576000815560010162000291565b60805160601c61408e620002d96000398061101152806131f35280613386528061349152806134ba525061408e6000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c8063549230c9116101bd578063a3908e1b116100f9578063c4b10766116100a2578063e3a2950b1161007c578063e3a2950b14610b05578063e9ed87f814610b0d578063f2fde38b14610b15578063f7a0a88514610b3b5761034c565b8063c4b1076614610aa3578063cc6c542314610aab578063dd62ed3e14610ad75761034c565b8063aff6cbf1116100d3578063aff6cbf114610a34578063b90c2b5214610a51578063c360ed1c14610a775761034c565b8063a3908e1b146109bf578063a457c2d7146109dc578063a9059cbb14610a085761034c565b80637cbc2373116101665780638da5cb5b116101405780638da5cb5b1461096057806395d89b411461096857806399cd11ea14610970578063a0bdc7cb146109935761034c565b80637cbc2373146108e9578063890836541461090c5780638975f9181461093a5761034c565b8063619ac95b11610197578063619ac95b146108b357806370a08231146108bb578063715018a6146108e15761034c565b8063549230c9146107c35780635a1d34dc146108485780635b7b5281146108745761034c565b80632b4896791161028c5780633b90f9a0116102355780634a5b406e1161020f5780634a5b406e146107215780634b359d38146107295780634f62b7ec14610746578063539ffb77146107a65761034c565b80633b90f9a0146106bf578063488c8303146106eb578063497965ee146107195761034c565b806331124ce31161026657806331124ce314610658578063313ce5671461067557806339509351146106935761034c565b80632b489679146105ce5780632cc2f5ce146105fc5780632e9a76e41461062a5761034c565b8063161aab43116102f95780631c352679116102d35780631c352679146104e55780631c75e369146104ed5780631eee7e601461057257806323b872dd146105985761034c565b8063161aab43146104b157806318160ddd146104b95780631a465fe1146104c15761034c565b8063093220b71161032a578063093220b714610410578063095ea7b3146104455780630f7d3a69146104855761034c565b806302f91e551461035157806306045a211461036b57806306fdde0314610393575b600080fd5b610359610b61565b60408051918252519081900360200190f35b6103916004803603602081101561038157600080fd5b50356001600160a01b0316610b66565b005b61039b610c7a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d55781810151838201526020016103bd565b50505050905090810190601f1680156104025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610391600480360360a081101561042657600080fd5b5080359060208101359060408101359060608101359060800135610d10565b6104716004803603604081101561045b57600080fd5b506001600160a01b038135169060200135610ebc565b604080519115158252519081900360200190f35b6103916004803603604081101561049b57600080fd5b506001600160a01b038135169060200135610eda565b610359610ff8565b610359611009565b6104c961100f565b604080516001600160a01b039092168252519081900360200190f35b610359611033565b6103916004803603606081101561050357600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561053357600080fd5b82018360208201111561054557600080fd5b8035906020019184600183028401116401000000008311171561056757600080fd5b509092509050611039565b6104716004803603602081101561058857600080fd5b50356001600160a01b031661114e565b610471600480360360608110156105ae57600080fd5b506001600160a01b0381358116916020810135909116906040013561115b565b610359600480360360408110156105e457600080fd5b506001600160a01b03813581169160200135166111e3565b6103596004803603604081101561061257600080fd5b506001600160a01b038135811691602001351661120e565b6103596004803603604081101561064057600080fd5b506001600160a01b038135811691602001351661122b565b6103916004803603602081101561066e57600080fd5b5035611256565b61067d61162b565b6040805160ff9092168252519081900360200190f35b610471600480360360408110156106a957600080fd5b506001600160a01b038135169060200135611634565b610391600480360360408110156106d557600080fd5b506001600160a01b038135169060200135611682565b6103596004803603604081101561070157600080fd5b506001600160a01b03813581169160200135166116f2565b6104c961170f565b610359611723565b6104c96004803603602081101561073f57600080fd5b5035611729565b6107726004803603604081101561075c57600080fd5b506001600160a01b038135169060200135611736565b604080519586526020860194909452848401929092526001600160a01b031660608401526080830152519081900360a00190f35b610391600480360360208110156107bc57600080fd5b503561178d565b610391600480360360608110156107d957600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561080957600080fd5b82018360208201111561081b57600080fd5b8035906020019184600183028401116401000000008311171561083d57600080fd5b509092509050611a02565b6103916004803603604081101561085e57600080fd5b50803590602001356001600160a01b0316611af5565b61089a6004803603602081101561088a57600080fd5b50356001600160a01b0316611bb6565b6040805192835260208301919091528051918290030190f35b610359611bcf565b610359600480360360208110156108d157600080fd5b50356001600160a01b0316611bd4565b610391611bef565b610391600480360360408110156108ff57600080fd5b5080359060200135611cc5565b6103916004803603604081101561092257600080fd5b506001600160a01b038135169060200135151561204b565b6103596004803603602081101561095057600080fd5b50356001600160a01b0316612174565b6104c9612186565b61039b612195565b6103596004803603604081101561098657600080fd5b50803590602001356121f6565b610391600480360360408110156109a957600080fd5b506001600160a01b0381351690602001356122a4565b610391600480360360208110156109d557600080fd5b503561230c565b610471600480360360408110156109f257600080fd5b506001600160a01b03813516906020013561237a565b61047160048036036040811015610a1e57600080fd5b506001600160a01b0381351690602001356123e2565b61039160048036036020811015610a4a57600080fd5b50356123f6565b61035960048036036020811015610a6757600080fd5b50356001600160a01b031661266c565b61039160048036036040811015610a8d57600080fd5b506001600160a01b038135169060200135612687565b61035961278f565b61077260048036036040811015610ac157600080fd5b506001600160a01b038135169060200135612795565b61035960048036036040811015610aed57600080fd5b506001600160a01b0381358116916020013516612861565b61035961288c565b610359612892565b61039160048036036020811015610b2b57600080fd5b50356001600160a01b0316612898565b61089a60048036036020811015610b5157600080fd5b50356001600160a01b03166129c4565b60c881565b610b6e6129fc565b6001600160a01b0316610b7f612186565b6001600160a01b031614610bda576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610bee5760006011555b600754604080516001600160a01b0361010090930483168152918316602083015280517f044c75b8fa43ce72364b4c23fdb8451beafbda46505bf44c76f0853a01ed4ade9281900390910190a1600780546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60058054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610d065780601f10610cdb57610100808354040283529160200191610d06565b820191906000526020600020905b815481529060010190602001808311610ce957829003601f168201915b5050505050905090565b610d186129fc565b6001600160a01b0316610d29612186565b6001600160a01b031614610d84576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b83851115610dc35760405162461bcd60e51b8152600401808060200182810382526028815260200180613db76028913960400191505060405180910390fd5b818310610e015760405162461bcd60e51b815260040180806020018281038252602b815260200180613ddf602b913960400191505060405180910390fd5b60648411158015610e13575060648111155b610e4e5760405162461bcd60e51b8152600401808060200182810382526028815260200180613db76028913960400191505060405180910390fd5b600d859055600e849055600f839055601082905560118190556040805186815260208101869052808201859052606081018490526080810183905290517f5b37d10782e41a6539b50d59366d4112a880236e4187e85b6d1514d20e07d9b89181900360a00190a15050505050565b6000610ed0610ec96129fc565b8484612a00565b5060015b92915050565b610ee26129fc565b6001600160a01b0316610ef3612186565b6001600160a01b031614610f4e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60c8811115610fa4576040805162461bcd60e51b815260206004820152601f60248201527f7570646174654465616c6c6f636174696f6e4665653a20746f6f206869676800604482015290519081900360640190fd5b6001600160a01b0382166000818152600c6020908152604091829020849055815184815291517f6ff024152fc2cd8071bc701f966036513eb03e243863f21d8218646faac0eaef9281900390910190a25050565b60006110046008612aec565b905090565b60045490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d5481565b60026001541415611091576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556110a1338585612af7565b836001600160a01b0316631c75e369338585856040518563ffffffff1660e01b815260040180856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561112c57600080fd5b505af1158015611140573d6000803e3d6000fd5b505060018055505050505050565b6000610ed4600883612cb3565b6000611168848484612cc8565b6111d8846111746129fc565b6111d385604051806060016040528060288152602001613ebc602891396001600160a01b038a166000908152600360205260408120906111b26129fc565b6001600160a01b031681526020810191909152604001600020549190612e25565b612a00565b5060015b9392505050565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b600b60209081526000928352604080842090915290825290205481565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b600260015414156112ae576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015533600081815260136020526040902054829081106113025760405162461bcd60e51b815260040180806020018281038252602b815260200180613fad602b913960400191505060405180910390fd5b33600090815260136020526040812080548590811061131d57fe5b6000918252602090912060059091020160038101546007549192506001600160a01b039081166101009092041614801590611367575060075461010090046001600160a01b031615155b1561162157600481015415611583576003810154600482015460408051600080825260208201928390527f549230c90000000000000000000000000000000000000000000000000000000083523360248301818152604484018690526060606485019081528451608486018190526001600160a01b039098169763549230c99793969395949293919260a486019291908190849084905b838110156114165781810151838201526020016113fe565b50505050905090810190601f1680156114435780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561146457600080fd5b505af1158015611478573d6000803e3d6000fd5b5050600754600484015460408051600080825260208201928390527f1c75e3690000000000000000000000000000000000000000000000000000000083523360248301818152604484018690526060606485019081528451608486018190526101009098046001600160a01b03169950631c75e3699850919693949093919260a4860192908190849084905b8381101561151c578181015183820152602001611504565b50505050905090810190601f1680156115495780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561156a57600080fd5b505af115801561157e573d6000803e3d6000fd5b505050505b6003810154600754604080518781526001600160a01b03938416602082015261010090920490921681830152905133917fa60c8f9118be22c9277a8129333d64ffda3de44ca7a5831d077a3127f1237a18919081900360600190a26007546003820180546101009092046001600160a01b03167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790555b5050600180555050565b60075460ff1690565b6000610ed06116416129fc565b846111d385600360006116526129fc565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612ebc565b600260015414156116da576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556116ea823383612af7565b505060018055565b600a60209081526000928352604080842090915290825290205481565b60075461010090046001600160a01b031681565b60115481565b6000610ed4600883612f16565b6013602052816000526040600020818154811061175257600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929550909350916001600160a01b03169085565b600260015414156117e5576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015533600081815260136020526040902054829081106118395760405162461bcd60e51b815260040180806020018281038252602b815260200180613fad602b913960400191505060405180910390fd5b3360009081526012602090815260408083206013909252822080549192918690811061186157fe5b9060005260206000209060050201905061188c81600101548360010154612f2290919063ffffffff16565b82600101819055506118a330338360010154612cc8565b6004810154156119b4576003810154600482015460408051600080825260208201928390527f549230c90000000000000000000000000000000000000000000000000000000083523360248301818152604484018690526060606485019081528451608486018190526001600160a01b039098169763549230c99793969395949293919260a486019291908190849084905b8381101561194d578181015183820152602001611935565b50505050905090810190601f16801561197a5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561199b57600080fd5b505af11580156119af573d6000803e3d6000fd5b505050505b6001810154604080519182525133917f56d7520e387607a8daa892e3fed116badc2a636307bdc794b1c1aed97ae203f4919081900360200190a26119f785612f7f565b505060018055505050565b60026001541415611a5a576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600155611a6a3385856130bf565b836001600160a01b031663549230c9338585856040518563ffffffff1660e01b815260040180856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561112c57600080fd5b60026001541415611b4d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600155611b5b336132d4565b611bac576040805162461bcd60e51b815260206004820152601660248201527f636f6e76657274546f3a206e6f7420616c6c6f77656400000000000000000000604482015290519081900360640190fd5b6116ea82826132da565b6012602052600090815260409020805460019091015482565b606481565b6001600160a01b031660009081526002602052604090205490565b611bf76129fc565b6001600160a01b0316611c08612186565b6001600160a01b031614611c63576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60026001541415611d1d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015581611d5e5760405162461bcd60e51b8152600401808060200182810382526023815260200180613ee46023913960400191505060405180910390fd5b600f54811015611db5576040805162461bcd60e51b815260206004820152601860248201527f72656465656d3a206475726174696f6e20746f6f206c6f770000000000000000604482015290519081900360640190fd5b611dc0333084612cc8565b33600090815260126020526040812090611dda84846121f6565b6040805186815260208101839052808201869052905191925033917fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76469181900360600190a28215612040576001820154611e349085612ebc565b6001830155601154600090611e5790606490611e519088906133b2565b9061340b565b90508015611f6c5760075461010090046001600160a01b0316631c75e369338360006040519080825280601f01601f191660200182016040528015611ea3576020820181803683370190505b506040518463ffffffff1660e01b815260040180846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f05578181015183820152602001611eed565b50505050905090810190601f168015611f325780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611f5357600080fd5b505af1158015611f67573d6000803e3d6000fd5b505050505b33600090815260136020908152604091829020825160a081018452858152918201889052918101611fa587611f9f613472565b90612ebc565b815260075461010090046001600160a01b0390811660208084019190915260409283019590955283546001808201865560009586529486902084516005909202019081559483015193850193909355810151600284015560608101516003840180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919093161790915560800151600490910155611621565b611621338583613476565b6120536129fc565b6001600160a01b0316612064612186565b6001600160a01b0316146120bf576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382163014156121075760405162461bcd60e51b815260040180806020018281038252603c815260200180613f28603c913960400191505060405180910390fd5b801561211e576121186008836129e7565b5061212b565b612129600883613589565b505b604080516001600160a01b0384168152821515602082015281517f3a34209cb941a5d23a56dea730a13738454bc7daefd4bb32e8d7df58c1bd920d929181900390910190a15050565b600c6020526000908152604090205481565b6000546001600160a01b031690565b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610d065780601f10610cdb57610100808354040283529160200191610d06565b6000600f5482101561220a57506000610ed4565b6010548211156122355761222e6064611e51600e54866133b290919063ffffffff16565b9050610ed4565b600061228b612282612254600f54601054612f2290919063ffffffff16565b611e5161226e600d54600e54612f2290919063ffffffff16565b600f5461227c908990612f22565b906133b2565b600d5490612ebc565b905061229c6064611e5186846133b2565b949350505050565b600260015414156122fc576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556116ea8233836130bf565b60026001541415612364576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015561237381336132da565b5060018055565b6000610ed06123876129fc565b846111d38560405180606001604052806025815260200161403460259139600360006123b16129fc565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612e25565b6000610ed06123ef6129fc565b8484612cc8565b6002600154141561244e576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015533600081815260136020526040902054829081106124a25760405162461bcd60e51b815260040180806020018281038252602b815260200180613fad602b913960400191505060405180910390fd5b336000908152601260209081526040808320601390925282208054919291869081106124ca57fe5b9060005260206000209060050201905080600201546124e7613472565b10156125245760405162461bcd60e51b8152600401808060200182810382526032815260200180613fd86032913960400191505060405180910390fd5b6001808201549083015461253791612f22565b82600101819055506125523382600101548360000154613476565b600481015415612663576003810154600482015460408051600080825260208201928390527f549230c90000000000000000000000000000000000000000000000000000000083523360248301818152604484018690526060606485019081528451608486018190526001600160a01b039098169763549230c99793969395949293919260a486019291908190849084905b838110156125fc5781810151838201526020016125e4565b50505050905090810190601f1680156126295780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561264a57600080fd5b505af115801561265e573d6000803e3d6000fd5b505050505b6119f785612f7f565b6001600160a01b031660009081526013602052604090205490565b600260015414156126df576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556001600160a01b0382166127295760405162461bcd60e51b8152600401808060200182810382526029815260200180613e516029913960400191505060405180910390fd5b336000818152600a602090815260408083206001600160a01b03871680855290835292819020859055805185815290519293927fe75ec259c38e4601f24580968665ec00b21cca4f996689b260ec598aec5c08db929181900390910190a3505060018055565b600f5481565b6001600160a01b03821660009081526013602052604081205481908190819081908790879081106127f75760405162461bcd60e51b815260040180806020018281038252602b815260200180613fad602b913960400191505060405180910390fd5b6001600160a01b038916600090815260136020526040812080548a90811061281b57fe5b600091825260209091206005909102018054600182015460028301546003840154600490940154929e919d509b506001600160a01b039092169950975095505050505050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b600e5481565b60105481565b6128a06129fc565b6001600160a01b03166128b1612186565b6001600160a01b03161461290c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166129515760405162461bcd60e51b8152600401808060200182810382526026815260200180613d6f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b0316600090815260126020526040902080546001909101549091565b60006111dc836001600160a01b03841661359e565b3390565b6001600160a01b038316612a455760405162461bcd60e51b8152600401808060200182810382526024815260200180613f896024913960400191505060405180910390fd5b6001600160a01b038216612a8a5760405162461bcd60e51b8152600401808060200182810382526022815260200180613d956022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610ed4826135e8565b60008111612b4c576040805162461bcd60e51b815260206004820152601f60248201527f616c6c6f636174653a20616d6f756e742063616e6e6f74206265206e756c6c00604482015290519081900360640190fd5b6001600160a01b038084166000908152601260209081526040808320600a835281842094871684529390915290205482811015612bd0576040805162461bcd60e51b815260206004820152601f60248201527f616c6c6f636174653a206e6f6e20617574686f72697a656420616d6f756e7400604482015290519081900360640190fd5b612bda8184612f22565b6001600160a01b038087166000818152600a60209081526040808320948a1680845294825280832095909555918152600b82528381209281529190522054612c229084612ebc565b6001600160a01b038087166000908152600b60209081526040808320938916835292905220558154612c549084612ebc565b8255612c61853085612cc8565b836001600160a01b0316856001600160a01b03167f5168bfb88d6125d4580e2b91ecb103a730312c3e8b0be9c4031a0fc794e2cd5f856040518082815260200191505060405180910390a35050505050565b60006111dc836001600160a01b0384166135ec565b6001600160a01b038316612d0d5760405162461bcd60e51b8152600401808060200182810382526025815260200180613f646025913960400191505060405180910390fd5b6001600160a01b038216612d525760405162461bcd60e51b8152600401808060200182810382526023815260200180613d2a6023913960400191505060405180910390fd5b612d5d838383613604565b612d9a81604051806060016040528060268152602001613e0a602691396001600160a01b0386166000908152600260205260409020549190612e25565b6001600160a01b038085166000908152600260205260408082209390935590841681522054612dc99082612ebc565b6001600160a01b0380841660008181526002602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115612eb45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e79578181015183820152602001612e61565b50505050905090810190601f168015612ea65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156111dc576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006111dc8383613687565b600082821115612f79576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b33600090815260136020526040902080546000198101908110612f9e57fe5b906000526020600020906005020160136000336001600160a01b03166001600160a01b031681526020019081526020016000208281548110612fdc57fe5b600091825260208083208454600590930201918255600180850154908301556002808501549083015560038085015490830180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055600493840154939091019290925533815260139091526040902080548061306657fe5b60008281526020812060056000199093019283020181815560018101829055600281018290556003810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560040155905550565b600081116130fe5760405162461bcd60e51b8152600401808060200182810382526021815260200180613e7a6021913960400191505060405180910390fd5b6001600160a01b038084166000908152600b6020908152604080832093861683529290522054818110156131635760405162461bcd60e51b8152600401808060200182810382526021815260200180613e306021913960400191505060405180910390fd5b61316d8183612f22565b6001600160a01b038086166000908152600b60209081526040808320938816835292815282822093909355600c9092528120546131b39061271090611e519086906133b2565b6001600160a01b03861660009081526012602052604090208054919250906131db9085612f22565b81556131f130876131ec8786612f22565b612cc8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166342966c68836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561325757600080fd5b505af115801561326b573d6000803e3d6000fd5b5050505061327930836136eb565b846001600160a01b0316866001600160a01b03167f7d613f7bd1a777aeeefdd38ae61201003086575188df50618d02482220f5c1478685604051808381526020018281526020019250505060405180910390a3505050505050565b3b151590565b8161332c576040805162461bcd60e51b815260206004820152601e60248201527f636f6e766572743a20616d6f756e742063616e6e6f74206265206e756c6c0000604482015290519081900360640190fd5b61333681836137e7565b604080516001600160a01b038316815260208101849052815133927fccfaeb3043a96a967dc036ab72e078a9632af809671bc2a1ac30a8043645f89e928290030190a26133ae6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856138d9565b5050565b6000826133c157506000610ed4565b828202828482816133ce57fe5b04146111dc5760405162461bcd60e51b8152600401808060200182810382526021815260200180613e9b6021913960400191505060405180910390fd5b6000808211613461576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161346a57fe5b049392505050565b4290565b60006134828383612f22565b90506134b86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168584613967565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166342966c68826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561351e57600080fd5b505af1158015613532573d6000803e3d6000fd5b5050505061354030846136eb565b604080518481526020810184905281516001600160a01b038716927f0da072ebd7a5649099f43a3776eb0cda17aca79426ee9f28aae203f5dfa04eda928290030190a250505050565b60006111dc836001600160a01b0384166139e7565b60006135aa83836135ec565b6135e057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ed4565b506000610ed4565b5490565b60009081526001919091016020526040902054151590565b6001600160a01b03831615806136205750613620600884612cb3565b806136315750613631600883612cb3565b613682576040805162461bcd60e51b815260206004820152601560248201527f7472616e736665723a206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b505050565b815460009082106136c95760405162461bcd60e51b8152600401808060200182810382526022815260200180613d086022913960400191505060405180910390fd5b8260000182815481106136d857fe5b9060005260206000200154905092915050565b6001600160a01b0382166137305760405162461bcd60e51b8152600401808060200182810382526021815260200180613f076021913960400191505060405180910390fd5b61373c82600083613604565b61377981604051806060016040528060228152602001613d4d602291396001600160a01b0385166000908152600260205260409020549190612e25565b6001600160a01b03831660009081526002602052604090205560045461379f9082612f22565b6004556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b038216613842576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61384e60008383613604565b60045461385b9082612ebc565b6004556001600160a01b0382166000908152600260205260409020546138819082612ebc565b6001600160a01b03831660008181526002602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052613961908590613aad565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052613682908490613aad565b60008181526001830160205260408120548015613aa35783546000198083019190810190600090879083908110613a1a57fe5b9060005260206000200154905080876000018481548110613a3757fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080613a6757fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610ed4565b6000915050610ed4565b6000613b02826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b5e9092919063ffffffff16565b80519091501561368257808060200190516020811015613b2157600080fd5b50516136825760405162461bcd60e51b815260040180806020018281038252602a81526020018061400a602a913960400191505060405180910390fd5b606061229c848460008585613b72856132d4565b613bc3576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310613c1f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613be2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613c81576040519150601f19603f3d011682016040523d82523d6000602084013e613c86565b606091505b5091509150613c96828286613ca1565b979650505050505050565b60608315613cb05750816111dc565b825115613cc05782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315612e79578181015183820152602001612e6156fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737375706461746552656465656d53657474696e67733a2077726f6e6720726174696f2076616c75657375706461746552656465656d53657474696e67733a2077726f6e67206475726174696f6e2076616c75657345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656465616c6c6f636174653a206e6f6e20617574686f72697a656420616d6f756e74617070726f766555736167653a20617070726f766520746f20746865207a65726f20616464726573736465616c6c6f636174653a20616d6f756e742063616e6e6f74206265206e756c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636572656465656d3a2078546f6b656e416d6f756e742063616e6e6f74206265206e756c6c45524332303a206275726e2066726f6d20746865207a65726f20616464726573737570646174655472616e7366657257686974656c6973743a2043616e6e6f742072656d6f76652078546f6b656e2066726f6d2077686974656c69737445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737376616c696461746552656465656d3a2072656465656d20656e74727920646f6573206e6f7420657869737466696e616c697a6552656465656d3a2076657374696e67206475726174696f6e20686173206e6f7420656e646564207965745361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cec1d853b883c66733761ae4e7b4ec03fc61918e8d873ef6c7d67dd0e20f907a64736f6c63430007060033000000000000000000000000d5046b976188eb40f6de40fb527f89c05b323385
0x000000000000000000000000d5046b976188eb40f6de40fb527f89c05b323385
----Decoded View------------Arg [0] : token (address): 0xd5046B976188EB40f6DE40fB527F89c05b323385
----Encoded View------------Arg [0] : 0x000000000000000000000000d5046b976188eb40f6de40fb527f89c05b323385