[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "address", "name": "_qiRewardToken", "type": "address" }, { "internalType": "address", "name": "_stakingContract", "type": "address" }, { "internalType": "address", "name": "_swapPairToken", "type": "address" }, { "internalType": "address", "name": "_timelock", "type": "address" }, { "internalType": "uint256", "name": "_minTokensToReinvest", "type": "uint256" }, { "internalType": "uint256", "name": "_adminFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_devFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_reinvestRewardBips", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "AllowDepositor", "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": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "DepositsEnabled", "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": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Recovered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newTotalDeposits", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalSupply", "type": "uint256" } ], "name": "Reinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "RemoveDepositor", "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": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateAdminFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValue", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValue", "type": "address" } ], "name": "UpdateDevAddr", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateDevFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMaxTokensToDepositWithoutReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMinTokensToReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateReinvestReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "ADMIN_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEPOSITS_ENABLED", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEV_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_TOKENS_TO_DEPOSIT_WITHOUT_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_TOKENS_TO_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REINVEST_REWARD_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION_HASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "allowDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "allowedDepositors", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositFor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "depositToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "depositWithPermit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "devAddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimateDeployedBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimateReinvestReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getDepositTokensForShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDomainSeparator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getSharesForDepositTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numberOfAllowedDepositors", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverAVAX", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "removeDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "minReturnAmountAccepted", "type": "uint256" }, { "internalType": "bool", "name": "disableDeposits", "type": "bool" } ], "name": "rescueDeployedFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "revokeAllowance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "setAllowances", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalDeposits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "src", "type": "address" }, { "internalType": "address", "name": "dst", "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": "newValue", "type": "uint256" } ], "name": "updateAdminFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "updateDepositsEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newValue", "type": "address" } ], "name": "updateDevAddr", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateDevFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMaxTokensToDepositWithoutReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMinTokensToReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateReinvestReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c060405260096080819052685969656c642059616b60b81b60a09081526200002c916000919062000b6a565b506040805180820190915260038082526216549560ea1b6020909201918252620000599160019162000b6a565b503480156200006757600080fd5b5060405162004bdd38038062004bdd83398181016040526101408110156200008e57600080fd5b8101908080516040519392919084640100000000821115620000af57600080fd5b908301906020820185811115620000c557600080fd5b8251640100000000811182820188101715620000e057600080fd5b82525081516020918201929091019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c086015160e087015161010088015161012090980151969950949750929591949093919060006200018c620002f9565b600680546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062004b96833981519152908290a3508951620001de9060009060208d019062000b6a565b50600a80546001600160a01b03808c166001600160a01b03199283161790925560148054821673b31f66aa3c1e785363f0875a1b74e27b85fd66c71790819055600b80548316918416919091179055601580548b841690831617905560138054928a1692821692909217909155600c8054909116331790556200026186620002fd565b6200026b620003e9565b6200027684620004dc565b620002818362000586565b6200028c8262000676565b620002978162000752565b620002a360016200082e565b620002ae85620008f4565b604080516000808252602082015281517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234929181900390910190a15050505050505050505062000c06565b3390565b6001600160a01b038116620003445760405162461bcd60e51b815260040180806020018281038252602781526020018062004bb66027913960400191505060405180910390fd5b601680546001600160a01b0319166001600160a01b0383811691909117918290556014546015546200037e938316929182169116620009ee565b80620003a95750601654601554601454620003a9926001600160a01b039081169281169116620009ee565b620003e65760405162461bcd60e51b815260040180806020018281038252602581526020018062004b516025913960400191505060405180910390fd5b50565b620003f3620002f9565b6001600160a01b03166200040662000af9565b6001600160a01b03161462000451576040805162461bcd60e51b8152602060048201819052602482015260008051602062004b76833981519152604482015290519081900360640190fd5b600a546013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b158015620004ac57600080fd5b505af1158015620004c1573d6000803e3d6000fd5b505050506040513d6020811015620004d857600080fd5b5050565b620004e6620002f9565b6001600160a01b0316620004f962000af9565b6001600160a01b03161462000544576040805162461bcd60e51b8152602060048201819052602482015260008051602062004b76833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b62000590620002f9565b6001600160a01b0316620005a362000af9565b6001600160a01b031614620005ee576040805162461bcd60e51b8152602060048201819052602482015260008051602062004b76833981519152604482015290519081900360640190fd5b61271062000628601054620006146012548562000b0860201b6200250a1790919060201c565b62000b0860201b6200250a1790919060201c565b11156200063457600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b62000680620002f9565b6001600160a01b03166200069362000af9565b6001600160a01b031614620006de576040805162461bcd60e51b8152602060048201819052602482015260008051602062004b76833981519152604482015290519081900360640190fd5b61271062000704601054620006146011548562000b0860201b6200250a1790919060201c565b11156200071057600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b6200075c620002f9565b6001600160a01b03166200076f62000af9565b6001600160a01b031614620007ba576040805162461bcd60e51b8152602060048201819052602482015260008051602062004b76833981519152604482015290519081900360640190fd5b612710620007e0601254620006146011548562000b0860201b6200250a1790919060201c565b1115620007ec57600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b62000838620002f9565b6001600160a01b03166200084b62000af9565b6001600160a01b03161462000896576040805162461bcd60e51b8152602060048201819052602482015260008051602062004b76833981519152604482015290519081900360640190fd5b600f5460ff1615158115151415620008ad57600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b620008fe620002f9565b6001600160a01b03166200091162000af9565b6001600160a01b0316146200095c576040805162461bcd60e51b8152602060048201819052602482015260008051602062004b76833981519152604482015290519081900360640190fd5b6001600160a01b038116620009a35760405162461bcd60e51b815260040180806020018281038252602681526020018062004b2b6026913960400191505060405180910390fd5b6006546040516001600160a01b0380841692169060008051602062004b9683398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000826001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000a3457600080fd5b505afa15801562000a49573d6000803e3d6000fd5b505050506040513d602081101562000a6057600080fd5b50516001600160a01b031614801562000af15750816001600160a01b0316846001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801562000ab857600080fd5b505afa15801562000acd573d6000803e3d6000fd5b505050506040513d602081101562000ae457600080fd5b50516001600160a01b0316145b949350505050565b6006546001600160a01b031690565b60008282018381101562000b63576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000bad57805160ff191683800117855562000bdd565b8280016001018555821562000bdd579182015b8281111562000bdd57825182559160200191906001019062000bc0565b5062000beb92915062000bef565b5090565b5b8082111562000beb576000815560010162000bf0565b613f158062000c166000396000f3fe6080604052600436106103595760003560e01c80638b73e606116101bb578063c4b24a46116100f7578063dd8ce4d611610095578063ed24911d1161006f578063ed24911d14610b8b578063f2fde38b14610ba0578063f7c618c114610bd3578063fdb5a03e14610be857610360565b8063dd8ce4d614610b0d578063e21ac82514610b37578063eab89a5a14610b6157610360565b8063d505accf116100d1578063d505accf14610a4a578063da09c72c14610aa8578063dbd9a4d414610abd578063dd62ed3e14610ad257610360565b8063c4b24a46146109f6578063c89039c514610a0b578063cff1b6ef14610a2057610360565b8063a8ae2b7c11610164578063b52a321f1161013e578063b52a321f1461098d578063b6b55f25146109a2578063b9e57b80146109cc578063bd079f55146109e157610360565b8063a8ae2b7c146108f8578063a9059cbb14610922578063ac0d31ff1461095b57610360565b806395d89b411161019557806395d89b41146108a457806399729ec1146108b95780639e4e7318146108e357610360565b80638b73e6061461080d5780638da5cb5b146108405780639291d5631461087157610360565b80634a970be711610295578063789139bc116102335780637ecebe001161020d5780637ecebe001461076257806381837230146107955780638980f11f146107bf5780638aff733d146107f857610360565b8063789139bc146106fd5780637ae26773146107125780637d8820971461074d57610360565b80634ebb79161161026f5780634ebb7916146106765780635ea682ea146106a057806370a08231146106b5578063715018a6146106e857610360565b80634a970be7146105d25780634bebd1e7146106175780634e77ace51461064a57610360565b806323b872dd1161030257806330adf81f116102dc57806330adf81f1461054a578063313ce5671461055f5780633bdc6e721461058a578063483c2ef01461059f57610360565b806323b872dd146104a25780632e1a7d4d146104e55780632f4f21e21461051157610360565b80630f23475d116103335780630f23475d1461046357806318160ddd1461047857806320606b701461048d57610360565b806306fdde031461036557806307677111146103ef578063095ea7b31461041657610360565b3661036057005b600080fd5b34801561037157600080fd5b5061037a610bfd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103b457818101518382015260200161039c565b50505050905090810190601f1680156103e15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103fb57600080fd5b50610404610c8b565b60408051918252519081900360200190f35b34801561042257600080fd5b5061044f6004803603604081101561043957600080fd5b506001600160a01b038135169060200135610c91565b604080519115158252519081900360200190f35b34801561046f57600080fd5b50610404610ca8565b34801561048457600080fd5b50610404610d25565b34801561049957600080fd5b50610404610d2b565b3480156104ae57600080fd5b5061044f600480360360608110156104c557600080fd5b506001600160a01b03813581169160208101359091169060400135610d4f565b3480156104f157600080fd5b5061050f6004803603602081101561050857600080fd5b5035610e31565b005b34801561051d57600080fd5b5061050f6004803603604081101561053457600080fd5b506001600160a01b038135169060200135610eb9565b34801561055657600080fd5b50610404610ec3565b34801561056b57600080fd5b50610574610ee7565b6040805160ff9092168252519081900360200190f35b34801561059657600080fd5b50610404610eec565b3480156105ab57600080fd5b5061044f600480360360208110156105c257600080fd5b50356001600160a01b0316610ef2565b3480156105de57600080fd5b5061050f600480360360a08110156105f557600080fd5b5080359060208101359060ff6040820135169060608101359060800135610f07565b34801561062357600080fd5b5061050f6004803603602081101561063a57600080fd5b50356001600160a01b0316610fc0565b34801561065657600080fd5b5061050f6004803603602081101561066d57600080fd5b503515156110fc565b34801561068257600080fd5b5061050f6004803603602081101561069957600080fd5b50356111bb565b3480156106ac57600080fd5b50610404611297565b3480156106c157600080fd5b50610404600480360360208110156106d857600080fd5b50356001600160a01b031661129d565b3480156106f457600080fd5b5061050f6112bc565b34801561070957600080fd5b50610404611375565b34801561071e57600080fd5b5061050f6004803603604081101561073557600080fd5b506001600160a01b038135811691602001351661137b565b34801561075957600080fd5b5061040461146a565b34801561076e57600080fd5b506104046004803603602081101561078557600080fd5b50356001600160a01b0316611470565b3480156107a157600080fd5b5061050f600480360360208110156107b857600080fd5b5035611482565b3480156107cb57600080fd5b5061050f600480360360408110156107e257600080fd5b506001600160a01b038135169060200135611526565b34801561080457600080fd5b5061040461167a565b34801561081957600080fd5b5061050f6004803603602081101561083057600080fd5b50356001600160a01b0316611680565b34801561084c57600080fd5b506108556117e7565b604080516001600160a01b039092168252519081900360200190f35b34801561087d57600080fd5b5061050f6004803603602081101561089457600080fd5b50356001600160a01b03166117f6565b3480156108b057600080fd5b5061037a6118cc565b3480156108c557600080fd5b5061050f600480360360208110156108dc57600080fd5b5035611926565b3480156108ef57600080fd5b506104046119f9565b34801561090457600080fd5b5061050f6004803603602081101561091b57600080fd5b5035611a1d565b34801561092e57600080fd5b5061044f6004803603604081101561094557600080fd5b506001600160a01b038135169060200135611aea565b34801561096757600080fd5b5061050f6004803603604081101561097e57600080fd5b50803590602001351515611af7565b34801561099957600080fd5b5061044f611d6c565b3480156109ae57600080fd5b5061050f600480360360208110156109c557600080fd5b5035611d75565b3480156109d857600080fd5b50610404611d82565b3480156109ed57600080fd5b50610404611dc9565b348015610a0257600080fd5b50610404611dcf565b348015610a1757600080fd5b50610855611de2565b348015610a2c57600080fd5b5061050f60048036036020811015610a4357600080fd5b5035611df1565b348015610a5657600080fd5b5061050f600480360360e0811015610a6d57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611ebe565b348015610ab457600080fd5b50610855611fbe565b348015610ac957600080fd5b5061050f611fcd565b348015610ade57600080fd5b5061040460048036036040811015610af557600080fd5b506001600160a01b03813581169160200135166120cc565b348015610b1957600080fd5b5061040460048036036020811015610b3057600080fd5b50356120f7565b348015610b4357600080fd5b5061050f60048036036020811015610b5a57600080fd5b5035612136565b348015610b6d57600080fd5b5061040460048036036020811015610b8457600080fd5b50356121da565b348015610b9757600080fd5b5061040461221a565b348015610bac57600080fd5b5061050f60048036036020811015610bc357600080fd5b50356001600160a01b0316612327565b348015610bdf57600080fd5b50610855612437565b348015610bf457600080fd5b5061050f612446565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c835780601f10610c5857610100808354040283529160200191610c83565b820191906000526020600020905b815481529060010190602001808311610c6657829003601f168201915b505050505081565b60115481565b6000610c9e33848461256b565b5060015b92915050565b6013546040805163044c28db60e21b815230600482015290516000926001600160a01b031691631130a36c916024808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b505190505b90565b60025481565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6001600160a01b038316600081815260036020908152604080832033808552925282205491929091908214801590610d8957506000198114155b15610e1a576000610db5856040518060600160405280602f8152602001613e34602f9139849190612683565b6001600160a01b0380891660008181526003602090815260408083209489168084529482529182902085905581518581529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b610e2586868661271a565b50600195945050505050565b6000610e3c826121da565b90508015610eb557610e4d81612827565b600a54610e64906001600160a01b031633836128c7565b610e6e338361298a565b600954610e7b9082612a5f565b60095560408051828152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a25b5050565b610eb58282612aa1565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60075481565b60086020526000908152604090205460ff1681565b600a54604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905290516001600160a01b039092169163d505accf9160e48082019260009290919082900301818387803b158015610f9757600080fd5b505af1158015610fab573d6000803e3d6000fd5b50505050610fb93386612aa1565b5050505050565b610fc8612c9e565b6001600160a01b0316610fd96117e7565b6001600160a01b031614611022576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615611090576040805162461bcd60e51b815260206004820152601c60248201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f7200000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600860205260409020805460ff191660019081179091556007546110c29161250a565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b611104612c9e565b6001600160a01b03166111156117e7565b6001600160a01b03161461115e576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b600f5460ff161515811515141561117457600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b6111c3612c9e565b6001600160a01b03166111d46117e7565b6001600160a01b03161461121d576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b6000811161122a57600080fd5b604051339082156108fc029083906000818181858888f19350505050158015611257573d6000803e3d6000fd5b5060408051600081526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a150565b60125481565b6001600160a01b0381166000908152600460205260409020545b919050565b6112c4612c9e565b6001600160a01b03166112d56117e7565b6001600160a01b03161461131e576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36006805473ffffffffffffffffffffffffffffffffffffffff19169055565b600e5481565b611383612c9e565b6001600160a01b03166113946117e7565b6001600160a01b0316146113dd576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b816001600160a01b031663095ea7b38260006040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561143557600080fd5b505af1158015611449573d6000803e3d6000fd5b505050506040513d602081101561145f57600080fd5b5051610eb557600080fd5b60095481565b60056020526000908152604090205481565b61148a612c9e565b6001600160a01b031661149b6117e7565b6001600160a01b0316146114e4576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b61152e612c9e565b6001600160a01b031661153f6117e7565b6001600160a01b031614611588576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b6000811161159557600080fd5b604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b1580156115fd57600080fd5b505af1158015611611573d6000803e3d6000fd5b505050506040513d602081101561162757600080fd5b505161163257600080fd5b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a15050565b60105481565b611688612c9e565b6001600160a01b03166116996117e7565b6001600160a01b0316146116e2576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b6000600754116117235760405162461bcd60e51b8152600401808060200182810382526034815260200180613c966034913960400191505060405180910390fd5b6001600160a01b03811660009081526008602052604090205460ff16151560011461177f5760405162461bcd60e51b815260040180806020018281038252602a815260200180613d15602a913960400191505060405180910390fd5b6001600160a01b0381166000908152600860205260409020805460ff191690556007546117ad906001612a5f565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b6006546001600160a01b031690565b600c546001600160a01b03163314611855576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015290519081900360640190fd5b600c54604080516001600160a01b039283168152918316602083015280517fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c009281900390910190a1600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c835780601f10610c5857610100808354040283529160200191610c83565b61192e612c9e565b6001600160a01b031661193f6117e7565b6001600160a01b031614611988576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b6127106119ac6010546119a66011548561250a90919063ffffffff16565b9061250a565b11156119b757600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b611a25612c9e565b6001600160a01b0316611a366117e7565b6001600160a01b031614611a7f576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b612710611a9d6012546119a66011548561250a90919063ffffffff16565b1115611aa857600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b6000610c9e33848461271a565b611aff612c9e565b6001600160a01b0316611b106117e7565b6001600160a01b031614611b59576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b6013546040805163044c28db60e21b815230600482015290516000926001600160a01b031691631130a36c916024808301926020929190829003018186803b158015611ba457600080fd5b505afa158015611bb8573d6000803e3d6000fd5b505050506040513d6020811015611bce57600080fd5b50516013546040805163db006a7560e01b81526004810184905290519293506001600160a01b039091169163db006a759160248082019260009290919082900301818387803b158015611c2057600080fd5b505af1158015611c34573d6000803e3d6000fd5b50506013546040805163044c28db60e21b81523060048201529051600094506001600160a01b039092169250631130a36c916024808301926020929190829003018186803b158015611c8557600080fd5b505afa158015611c99573d6000803e3d6000fd5b505050506040513d6020811015611caf57600080fd5b5051905083611cbe8284612a5f565b1015611cfb5760405162461bcd60e51b8152600401808060200182810382526027815260200180613cee6027913960400191505060405180910390fd5b600981905560025460408051838152602081019290925280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a1600f5460ff1615156001148015611d5757506001831515145b15611d6657611d6660006110fc565b50505050565b600f5460ff1681565b611d7f3382612aa1565b50565b600080611d8d611dcf565b9050600d548110611dc157611db9612710611db360105484612ca290919063ffffffff16565b90612cfb565b915050610d22565b600091505090565b600d5481565b600080611dda612d3d565b935050505090565b600a546001600160a01b031681565b611df9612c9e565b6001600160a01b0316611e0a6117e7565b6001600160a01b031614611e53576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b612710611e716010546119a66012548561250a90919063ffffffff16565b1115611e7c57600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b42841015611f13576040805162461bcd60e51b815260206004820152600f60248201527f7065726d69743a3a657870697265640000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938a1660608401526080830189905260a083019390935260c08083018890528151808403909101815260e090920190528051910120611fa98882868686612e76565b611fb488888861256b565b5050505050505050565b600c546001600160a01b031681565b611fd5612c9e565b6001600160a01b0316611fe66117e7565b6001600160a01b03161461202f576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b600a54601354604080517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156120a257600080fd5b505af11580156120b6573d6000803e3d6000fd5b505050506040513d6020811015610eb557600080fd5b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6000612110600954600254612ca290919063ffffffff16565b61211b5750806112b7565b610ca2600954611db360025485612ca290919063ffffffff16565b61213e612c9e565b6001600160a01b031661214f6117e7565b6001600160a01b031614612198576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b600e54604080519182526020820183905280517fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f9281900390910190a1600e55565b60006121f3600954600254612ca290919063ffffffff16565b6121ff575060006112b7565b610ca2600254611db360095485612ca290919063ffffffff16565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b6000604051808280546001816001161561010002031660029004801561229d5780601f1061227b57610100808354040283529182019161229d565b820191906000526020600020905b815481529060010190602001808311612289575b505091505060405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660001b6122d6612fae565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b61232f612c9e565b6001600160a01b03166123406117e7565b6001600160a01b031614612389576040805162461bcd60e51b81526020600482018190526024820152600080516020613db6833981519152604482015290519081900360640190fd5b6001600160a01b0381166123ce5760405162461bcd60e51b8152600401808060200182810382526026815260200180613c1b6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600b546001600160a01b031681565b32331461249a576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79454f41000000000000000000000000604482015290519081900360640190fd5b6000806124a5612d3d565b9250925050600d54811015612501576040805162461bcd60e51b815260206004820152601c60248201527f42656e71695374726174656779466f724c503a3a7265696e7665737400000000604482015290519081900360640190fd5b610eb582612fb2565b600082820183811015612564576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0383166125c6576040805162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038216612621576040805162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600081848411156127125760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126d75781810151838201526020016126bf565b50505050905090810190601f1680156127045780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661275f5760405162461bcd60e51b8152600401808060200182810382526034815260200180613dd66034913960400191505060405180910390fd5b61279c816040518060600160405280602e8152602001613eb2602e91396001600160a01b0386166000908152600460205260409020549190612683565b6001600160a01b0380851660009081526004602052604080822093909355908416815220546127cb908261250a565b6001600160a01b0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081116128665760405162461bcd60e51b815260040180806020018281038252602a815260200180613e0a602a913960400191505060405180910390fd5b6013546040805163db006a7560e01b81526004810184905290516001600160a01b039092169163db006a759160248082019260009290919082900301818387803b1580156128b357600080fd5b505af1158015610fb9573d6000803e3d6000fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561291e57600080fd5b505af1158015612932573d6000803e3d6000fd5b505050506040513d602081101561294857600080fd5b50516129855760405162461bcd60e51b8152600401808060200182810382526028815260200180613e8a6028913960400191505060405180910390fd5b505050565b6129c781604051806060016040528060278152602001613e63602791396001600160a01b0385166000908152600460205260409020549190612683565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550612a1781604051806060016040528060278152602001613d3f602791396002549190612683565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061256483836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612683565b60075415612afc573360009081526008602052604090205460ff161515600114612afc5760405162461bcd60e51b815260040180806020018281038252602e815260200180613c68602e913960400191505060405180910390fd5b600f5460ff161515600114612b58576040805162461bcd60e51b815260206004820152601c60248201527f42656e71695374726174656779466f724c503a3a5f6465706f73697400000000604482015290519081900360640190fd5b600e5415612b8657600080612b6b612d3d565b9250925050600e54811115612b8357612b8382612fb2565b50505b600a54604080517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015230602483015260448201859052915191909216916323b872dd9160648083019260209291908290030181600087803b158015612bfb57600080fd5b505af1158015612c0f573d6000803e3d6000fd5b505050506040513d6020811015612c2557600080fd5b5051612c3057600080fd5b612c3981613195565b612c4b82612c46836120f7565b61323a565b600954612c58908261250a565b6009556040805182815290516001600160a01b038416917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25050565b3390565b600082612cb157506000610ca2565b82820282848281612cbe57fe5b04146125645760405162461bcd60e51b8152600401808060200182810382526021815260200180613d956021913960400191505060405180910390fd5b600061256483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132c5565b60135460408051633d8b3efd60e11b815260006004820181905291519192839283926001600160a01b0390921691637b167dfa916024808301926020929190829003018186803b158015612d9057600080fd5b505afa158015612da4573d6000803e3d6000fd5b505050506040513d6020811015612dba57600080fd5b505160135460408051633d8b3efd60e11b81526001600482015290519295506001600160a01b0390911691637b167dfa91602480820192602092909190829003018186803b158015612e0b57600080fd5b505afa158015612e1f573d6000803e3d6000fd5b505050506040513d6020811015612e3557600080fd5b5051601554601454601654929450600092612e629286926001600160a01b0391821692908216911661332a565b9050612e6e848261250a565b915050909192565b6000612e8061221a565b8560405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612f34573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612f6a5750866001600160a01b0316816001600160a01b0316145b612fa55760405162461bcd60e51b8152600401808060200182810382526024815260200180613cca6024913960400191505060405180910390fd5b50505050505050565b4690565b601360009054906101000a90046001600160a01b03166001600160a01b031663372500ab6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561300257600080fd5b505af1158015613016573d6000803e3d6000fd5b50479250508115905061308c5773b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561307257600080fd5b505af1158015613086573d6000803e3d6000fd5b50505050505b600082116130e1576040805162461bcd60e51b815260206004820152601d60248201527f42656e71695374726174656779466f724c503a3a5f7265696e76657374000000604482015290519081900360640190fd5b6015546014546016546000926131099286926001600160a01b039283169291821691166133fa565b90506000613117838361250a565b601454909150600090613133906001600160a01b03168361360a565b905061313e81613195565b60095461314b908261250a565b600981905560025460408051928352602083019190915280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a15050505050565b600081116131d45760405162461bcd60e51b8152600401808060200182810382526027815260200180613c416027913960400191505060405180910390fd5b601354604080517fb6b55f250000000000000000000000000000000000000000000000000000000081526004810184905290516001600160a01b039092169163b6b55f259160248082019260009290919082900301818387803b1580156128b357600080fd5b600254613247908261250a565b6002556001600160a01b03821660009081526004602052604090205461326d908261250a565b6001600160a01b03831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081836133145760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156126d75781810151838201526020016126bf565b50600083858161332057fe5b0495945050505050565b60008061333785856136ed565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561337657600080fd5b505afa15801561338a573d6000803e3d6000fd5b505050506040513d60608110156133a057600080fd5b50805160209091015190925090506001600160a01b03838116908816146133c357905b6133ee88836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff1661371e565b98975050505050505050565b60008061340785856136ed565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561344657600080fd5b505afa15801561345a573d6000803e3d6000fd5b505050506040513d606081101561347057600080fd5b50805160209091015190925090506001600160a01b038381169088161461349357905b6000806134c18a856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff1661371e565b9050886001600160a01b0316856001600160a01b0316146134de57905b6134e989888c613766565b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201858152604483018590523060648401819052608060848501908152845160a486018190526001600160a01b038e169663022c0d9f968a968a9691949193919260c486019290918190849084905b8381101561358657818101518382015260200161356e565b50505050905090810190601f1680156135b35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156135d557600080fd5b505af11580156135e9573d6000803e3d6000fd5b505050508181116135fa57816135fc565b805b9a9950505050505050505050565b600080613628612710611db360125486612ca290919063ffffffff16565b9050801561364857600c546136489085906001600160a01b0316836128c7565b6000613665612710611db360115487612ca290919063ffffffff16565b9050801561367f5761367f856136796117e7565b836128c7565b600061369c612710611db360105488612ca290919063ffffffff16565b905080156136af576136af8633836128c7565b6136e36136c8826136c285818a89612a5f565b90612a5f565b600a5460165489916001600160a01b0390811691168061383a565b9695505050505050565b600080826001600160a01b0316846001600160a01b031610613710578284613713565b83835b915091509250929050565b60008061372d856103e5612ca2565b9050600061373b8285612ca2565b9050600061374f836119a6886103e8612ca2565b905061375b8282612cfb565b979650505050505050565b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156137bd57600080fd5b505af11580156137d1573d6000803e3d6000fd5b505050506040513d60208110156137e757600080fd5b5051612985576040805162461bcd60e51b815260206004820181905260248201527f4465784c6962726172793a3a5452414e534645525f46524f4d5f4641494c4544604482015290519081900360640190fd5b600080613848876002612cfb565b9050600081116138895760405162461bcd60e51b815260040180806020018281038252602f815260200180613d66602f913960400191505060405180910390fd5b6000856001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156138c457600080fd5b505afa1580156138d8573d6000803e3d6000fd5b505050506040513d60208110156138ee57600080fd5b50519050816001600160a01b038881169083161461391557613912838984896133fa565b90505b6000876001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561395057600080fd5b505afa158015613964573d6000803e3d6000fd5b505050506040513d602081101561397a57600080fd5b50519050836001600160a01b038a8116908316146139a15761399e858b848a6133fa565b90505b6139ac8984836139bb565b9b9a5050505050505050505050565b6000806000856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156139f957600080fd5b505afa158015613a0d573d6000803e3d6000fd5b505050506040513d6060811015613a2357600080fd5b50805160209091015190925090506000613a51866dffffffffffffffffffffffffffff808616908516613c02565b905084811115613a8c57849050613a8985836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16613c02565b95505b613afb876001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015613ac857600080fd5b505afa158015613adc573d6000803e3d6000fd5b505050506040513d6020811015613af257600080fd5b50518888613766565b613b6a876001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015613b3757600080fd5b505afa158015613b4b573d6000803e3d6000fd5b505050506040513d6020811015613b6157600080fd5b50518883613766565b604080517f6a62784200000000000000000000000000000000000000000000000000000000815230600482015290516001600160a01b03891691636a6278429160248083019260209291908290030181600087803b158015613bcb57600080fd5b505af1158015613bdf573d6000803e3d6000fd5b505050506040513d6020811015613bf557600080fd5b5051979650505050505050565b6000613c1283611db38685612ca2565b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737342656e71695374726174656779466f724c503a3a5f7374616b654465706f736974546f6b656e735065726d697373696f6e65643a3a6f6e6c79416c6c6f7765644465706f736974732c206e6f7420616c6c6f7765645065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f20616c6c6f776564206465706f7369746f7273417263683a3a76616c69646174655369673a20696e76616c6964207369676e617475726542656e71695374726174656779466f724c503a3a7265736375654465706c6f79656446756e64735065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f7420616c6c6f7765645f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c794465784c6962726172793a3a5f636f6e76657274526577617264546f6b656e73546f4465706f736974546f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f206164647265737342656e71695374726174656779466f724c503a3a5f77697468647261774465706f736974546f6b656e737472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e636542656e71695374726174656779466f724c503a3a5452414e534645525f46524f4d5f4641494c45445f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a2646970667358221220e3ff5f84cb7c203647b5565b6101f4f1941b16f948b48a5c1387faa9944527e664736f6c634300070300334f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737353776170207061697220646f6573206e6f74206d61746368205741564158206f722051492e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0537761702070616972206973206e656365737361727920627574206e6f7420737570706c6965640000000000000000000000000000000000000000000000000000000000000140000000000000000000000000e530dc2095ef5653205cf5ea79f8979a7028065c0000000000000000000000008729438eb15e2c8b576fcc6aecda6a148776c0f5000000000000000000000000784da19e61cf348a8c54547531795ecfee2affd1000000000000000000000000e530dc2095ef5653205cf5ea79f8979a7028065c0000000000000000000000008d36c5c6947adccd25ef49ea1aac2ceacfff0bd7000000000000000000000000000000000000000000000000000009184e72a000000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000001e5969656c642059616b3a2042656e716920782050474c2051492d415641580000