[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "address", "name": "_rewardToken", "type": "address" }, { "internalType": "address", "name": "_stakingContract", "type": "address" }, { "internalType": "address", "name": "_router", "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": "router", "outputs": [ { "internalType": "contract IRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "setAllowances", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakingContract", "outputs": [ { "internalType": "contract IStakingRewards", "name": "", "type": "address" } ], "stateMutability": "view", "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" } ]
60c060405260096080819052685969656c642059616b60b81b60a09081526200002c916000919062000bc3565b506040805180820190915260038082526216549560ea1b6020909201918252620000599160019162000bc3565b503480156200006757600080fd5b5060405162004c4838038062004c4883398181016040526101408110156200008e57600080fd5b8101908080516040519392919084640100000000821115620000af57600080fd5b908301906020820185811115620000c557600080fd5b8251640100000000811182820188101715620000e057600080fd5b82525081516020918201929091019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c086015160e087015161010088015161012090980151969950949750929591949093919060006200018c620002cc565b600680546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062004c28833981519152908290a3508951620001de9060009060208d019062000bc3565b50600a80546001600160a01b03808c166001600160a01b031992831617909255600b80548b8416908316179055601380548a84169083161790556014805492891692821692909217909155600c8054909116331790556200023e620002d0565b620002498462000640565b6200025483620006ea565b6200025f82620007da565b6200026a81620008b6565b62000276600162000992565b620002818562000a58565b604080516000808252602082015281517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234929181900390910190a15050505050505050505062000c5f565b3390565b620002da620002cc565b6001600160a01b0316620002ed62000b52565b6001600160a01b03161462000338576040805162461bcd60e51b8152602060048201819052602482015260008051602062004c08833981519152604482015290519081900360640190fd5b600a546013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200039357600080fd5b505af1158015620003a8573d6000803e3d6000fd5b505050506040513d6020811015620003bf57600080fd5b5050600b546014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200041c57600080fd5b505af115801562000431573d6000803e3d6000fd5b505050506040513d60208110156200044857600080fd5b5050600a5460408051630dfe168160e01b815290516001600160a01b0390921691630dfe168191600480820192602092909190829003018186803b1580156200049057600080fd5b505afa158015620004a5573d6000803e3d6000fd5b505050506040513d6020811015620004bc57600080fd5b50516014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200051657600080fd5b505af11580156200052b573d6000803e3d6000fd5b505050506040513d60208110156200054257600080fd5b5050600a546040805163d21220a760e01b815290516001600160a01b039092169163d21220a791600480820192602092909190829003018186803b1580156200058a57600080fd5b505afa1580156200059f573d6000803e3d6000fd5b505050506040513d6020811015620005b657600080fd5b50516014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200061057600080fd5b505af115801562000625573d6000803e3d6000fd5b505050506040513d60208110156200063c57600080fd5b5050565b6200064a620002cc565b6001600160a01b03166200065d62000b52565b6001600160a01b031614620006a8576040805162461bcd60e51b8152602060048201819052602482015260008051602062004c08833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b620006f4620002cc565b6001600160a01b03166200070762000b52565b6001600160a01b03161462000752576040805162461bcd60e51b8152602060048201819052602482015260008051602062004c08833981519152604482015290519081900360640190fd5b6127106200078c601054620007786012548562000b6160201b620025141790919060201c565b62000b6160201b620025141790919060201c565b11156200079857600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b620007e4620002cc565b6001600160a01b0316620007f762000b52565b6001600160a01b03161462000842576040805162461bcd60e51b8152602060048201819052602482015260008051602062004c08833981519152604482015290519081900360640190fd5b61271062000868601054620007786011548562000b6160201b620025141790919060201c565b11156200087457600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b620008c0620002cc565b6001600160a01b0316620008d362000b52565b6001600160a01b0316146200091e576040805162461bcd60e51b8152602060048201819052602482015260008051602062004c08833981519152604482015290519081900360640190fd5b61271062000944601254620007786011548562000b6160201b620025141790919060201c565b11156200095057600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b6200099c620002cc565b6001600160a01b0316620009af62000b52565b6001600160a01b031614620009fa576040805162461bcd60e51b8152602060048201819052602482015260008051602062004c08833981519152604482015290519081900360640190fd5b600f5460ff161515811515141562000a1157600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b62000a62620002cc565b6001600160a01b031662000a7562000b52565b6001600160a01b03161462000ac0576040805162461bcd60e51b8152602060048201819052602482015260008051602062004c08833981519152604482015290519081900360640190fd5b6001600160a01b03811662000b075760405162461bcd60e51b815260040180806020018281038252602681526020018062004be26026913960400191505060405180910390fd5b6006546040516001600160a01b0380841692169060008051602062004c2883398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031690565b60008282018381101562000bbc576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000c0657805160ff191683800117855562000c36565b8280016001018555821562000c36579182015b8281111562000c3657825182559160200191906001019062000c19565b5062000c4492915062000c48565b5090565b5b8082111562000c44576000815560010162000c49565b613f738062000c6f6000396000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c80638da5cb5b116101d3578063cff1b6ef11610104578063eab89a5a116100a2578063f2fde38b1161007c578063f2fde38b14610929578063f7c618c11461094f578063f887ea4014610957578063fdb5a03e1461095f57610378565b8063eab89a5a146108fc578063ed24911d14610919578063ee99205c1461092157610378565b8063dbd9a4d4116100de578063dbd9a4d41461088c578063dd62ed3e14610894578063dd8ce4d6146108c2578063e21ac825146108df57610378565b8063cff1b6ef14610816578063d505accf14610833578063da09c72c1461088457610378565b8063ac0d31ff11610171578063b9e57b801161014b578063b9e57b80146107f6578063bd079f55146107fe578063c4b24a4614610806578063c89039c51461080e57610378565b8063ac0d31ff146107ac578063b52a321f146107d1578063b6b55f25146107d957610378565b806399729ec1116101ad57806399729ec11461073e5780639e4e73181461075b578063a8ae2b7c14610763578063a9059cbb1461078057610378565b80638da5cb5b146106ec5780639291d5631461071057806395d89b411461073657610378565b80634bebd1e7116102ad5780637ae267731161024b578063818372301161022557806381837230146106755780638980f11f146106925780638aff733d146106be5780638b73e606146106c657610378565b80637ae26773146106195780637d882097146106475780637ecebe001461064f57610378565b80635ea682ea116102875780635ea682ea146105db57806370a08231146105e3578063715018a614610609578063789139bc1461061157610378565b80634bebd1e7146105795780634e77ace51461059f5780634ebb7916146105be57610378565b80632e1a7d4d1161031a578063313ce567116102f4578063313ce567146104f55780633bdc6e7214610513578063483c2ef01461051b5780634a970be71461054157610378565b80632e1a7d4d146104a25780632f4f21e2146104c157806330adf81f146104ed57610378565b80630f23475d116103565780630f23475d1461045457806318160ddd1461045c57806320606b701461046457806323b872dd1461046c57610378565b806306fdde031461037d57806307677111146103fa578063095ea7b314610414575b600080fd5b610385610967565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bf5781810151838201526020016103a7565b50505050905090810190601f1680156103ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104026109f5565b60408051918252519081900360200190f35b6104406004803603604081101561042a57600080fd5b506001600160a01b0381351690602001356109fb565b604080519115158252519081900360200190f35b610402610a12565b610402610a8f565b610402610a95565b6104406004803603606081101561048257600080fd5b506001600160a01b03813581169160208101359091169060400135610ab9565b6104bf600480360360208110156104b857600080fd5b5035610b9b565b005b6104bf600480360360408110156104d757600080fd5b506001600160a01b038135169060200135610cdd565b610402610ce7565b6104fd610d0b565b6040805160ff9092168252519081900360200190f35b610402610d10565b6104406004803603602081101561053157600080fd5b50356001600160a01b0316610d16565b6104bf600480360360a081101561055757600080fd5b5080359060208101359060ff6040820135169060608101359060800135610d2b565b6104bf6004803603602081101561058f57600080fd5b50356001600160a01b0316610dcb565b6104bf600480360360208110156105b557600080fd5b50351515610f07565b6104bf600480360360208110156105d457600080fd5b5035610fc6565b6104026110a2565b610402600480360360208110156105f957600080fd5b50356001600160a01b03166110a8565b6104bf6110c7565b610402611173565b6104bf6004803603604081101561062f57600080fd5b506001600160a01b0381358116916020013516611179565b610402611268565b6104026004803603602081101561066557600080fd5b50356001600160a01b031661126e565b6104bf6004803603602081101561068b57600080fd5b5035611280565b6104bf600480360360408110156106a857600080fd5b506001600160a01b038135169060200135611324565b61040261145f565b6104bf600480360360208110156106dc57600080fd5b50356001600160a01b0316611465565b6106f46115cc565b604080516001600160a01b039092168252519081900360200190f35b6104bf6004803603602081101561072657600080fd5b50356001600160a01b03166115db565b61038561165c565b6104bf6004803603602081101561075457600080fd5b50356116b6565b610402611789565b6104bf6004803603602081101561077957600080fd5b50356117ad565b6104406004803603604081101561079657600080fd5b506001600160a01b03813516906020013561187a565b6104bf600480360360408110156107c257600080fd5b50803590602001351515611887565b610440611af5565b6104bf600480360360208110156107ef57600080fd5b5035611afe565b610402611b0b565b610402611b52565b610402611b58565b6106f4611ba1565b6104bf6004803603602081101561082c57600080fd5b5035611bb0565b6104bf600480360360e081101561084957600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611c7d565b6106f4611d6f565b6104bf611d7e565b610402600480360360408110156108aa57600080fd5b506001600160a01b03813581169160200135166120d2565b610402600480360360208110156108d857600080fd5b50356120fd565b6104bf600480360360208110156108f557600080fd5b503561213c565b6104026004803603602081101561091257600080fd5b50356121e0565b610402612220565b6106f461232d565b6104bf6004803603602081101561093f57600080fd5b50356001600160a01b031661233c565b6106f461243f565b6106f461244e565b6104bf61245d565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109ed5780601f106109c2576101008083540402835291602001916109ed565b820191906000526020600020905b8154815290600101906020018083116109d057829003601f168201915b505050505081565b60115481565b6000610a08338484612575565b5060015b92915050565b601354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610a5d57600080fd5b505afa158015610a71573d6000803e3d6000fd5b505050506040513d6020811015610a8757600080fd5b505190505b90565b60025481565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6001600160a01b038316600081815260036020908152604080832033808552925282205491929091908214801590610af357506000198114155b15610b84576000610b1f856040518060600160405280602f8152602001613eba602f913984919061268d565b6001600160a01b0380891660008181526003602090815260408083209489168084529482529182902085905581518581529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b610b8f868686612724565b50600195945050505050565b6000610ba6826121e0565b90508015610cd957610bb781612831565b600a546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015610c0b57600080fd5b505af1158015610c1f573d6000803e3d6000fd5b505050506040513d6020811015610c3557600080fd5b5051610c88576040805162461bcd60e51b815260206004820152601760248201527f446578537472617465677956343a3a7769746864726177000000000000000000604482015290519081900360640190fd5b610c9233836128d1565b600954610c9f90826129a6565b60095560408051828152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a25b5050565b610cd982826129e8565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60075481565b60086020526000908152604090205460ff1681565b600a546040805163d505accf60e01b8152336004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905290516001600160a01b039092169163d505accf9160e48082019260009290919082900301818387803b158015610da257600080fd5b505af1158015610db6573d6000803e3d6000fd5b50505050610dc433866129e8565b5050505050565b610dd3612bc5565b6001600160a01b0316610de46115cc565b6001600160a01b031614610e2d576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615610e9b576040805162461bcd60e51b815260206004820152601c60248201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f7200000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600860205260409020805460ff19166001908117909155600754610ecd91612514565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b610f0f612bc5565b6001600160a01b0316610f206115cc565b6001600160a01b031614610f69576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b600f5460ff1615158115151415610f7f57600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b610fce612bc5565b6001600160a01b0316610fdf6115cc565b6001600160a01b031614611028576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b6000811161103557600080fd5b604051339082156108fc029083906000818181858888f19350505050158015611062573d6000803e3d6000fd5b5060408051600081526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a150565b60125481565b6001600160a01b0381166000908152600460205260409020545b919050565b6110cf612bc5565b6001600160a01b03166110e06115cc565b6001600160a01b031614611129576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b600e5481565b611181612bc5565b6001600160a01b03166111926115cc565b6001600160a01b0316146111db576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b816001600160a01b031663095ea7b38260006040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561123357600080fd5b505af1158015611247573d6000803e3d6000fd5b505050506040513d602081101561125d57600080fd5b5051610cd957600080fd5b60095481565b60056020526000908152604090205481565b611288612bc5565b6001600160a01b03166112996115cc565b6001600160a01b0316146112e2576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b61132c612bc5565b6001600160a01b031661133d6115cc565b6001600160a01b031614611386576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b6000811161139357600080fd5b6040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b1580156113e257600080fd5b505af11580156113f6573d6000803e3d6000fd5b505050506040513d602081101561140c57600080fd5b505161141757600080fd5b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a15050565b60105481565b61146d612bc5565b6001600160a01b031661147e6115cc565b6001600160a01b0316146114c7576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b6000600754116115085760405162461bcd60e51b8152600401808060200182810382526034815260200180613d456034913960400191505060405180910390fd5b6001600160a01b03811660009081526008602052604090205460ff1615156001146115645760405162461bcd60e51b815260040180806020018281038252602a815260200180613dc2602a913960400191505060405180910390fd5b6001600160a01b0381166000908152600860205260409020805460ff191690556007546115929060016129a6565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b6006546001600160a01b031690565b600c546001600160a01b031633146115f257600080fd5b600c54604080516001600160a01b039283168152918316602083015280517fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c009281900390910190a1600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109ed5780601f106109c2576101008083540402835291602001916109ed565b6116be612bc5565b6001600160a01b03166116cf6115cc565b6001600160a01b031614611718576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b61271061173c6010546117366011548561251490919063ffffffff16565b90612514565b111561174757600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b6117b5612bc5565b6001600160a01b03166117c66115cc565b6001600160a01b03161461180f576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b61271061182d6012546117366011548561251490919063ffffffff16565b111561183857600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b6000610a08338484612724565b61188f612bc5565b6001600160a01b03166118a06115cc565b6001600160a01b0316146118e9576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561193457600080fd5b505afa158015611948573d6000803e3d6000fd5b505050506040513d602081101561195e57600080fd5b5051601354604080516374fd6c7760e11b815290519293506001600160a01b039091169163e9fad8ee9160048082019260009290919082900301818387803b1580156119a957600080fd5b505af11580156119bd573d6000803e3d6000fd5b5050600a54604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b158015611a0e57600080fd5b505afa158015611a22573d6000803e3d6000fd5b505050506040513d6020811015611a3857600080fd5b5051905083611a4782846129a6565b1015611a845760405162461bcd60e51b8152600401808060200182810382526022815260200180613cad6022913960400191505060405180910390fd5b600981905560025460408051838152602081019290925280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a1600f5460ff1615156001148015611ae057506001831515145b15611aef57611aef6000610f07565b50505050565b600f5460ff1681565b611b0833826129e8565b50565b600080611b16611b58565b9050600d548110611b4a57611b42612710611b3c60105484612bc990919063ffffffff16565b90612c22565b915050610a8c565b600091505090565b600d5481565b601354604080516246613160e11b815230600482015290516000926001600160a01b031691628cc262916024808301926020929190829003018186803b158015610a5d57600080fd5b600a546001600160a01b031681565b611bb8612bc5565b6001600160a01b0316611bc96115cc565b6001600160a01b031614611c12576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b612710611c306010546117366012548561251490919063ffffffff16565b1115611c3b57600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b42841015611cc4576040805162461bcd60e51b815260206004820152600f60248201526e1c195c9b5a5d0e8e995e1c1a5c9959608a1b604482015290519081900360640190fd5b6001600160a01b0380881660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938a1660608401526080830189905260a083019390935260c08083018890528151808403909101815260e090920190528051910120611d5a8882868686612c64565b611d65888888612575565b5050505050505050565b600c546001600160a01b031681565b611d86612bc5565b6001600160a01b0316611d976115cc565b6001600160a01b031614611de0576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b600a546013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b158015611e3a57600080fd5b505af1158015611e4e573d6000803e3d6000fd5b505050506040513d6020811015611e6457600080fd5b5050600b546014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b158015611ec057600080fd5b505af1158015611ed4573d6000803e3d6000fd5b505050506040513d6020811015611eea57600080fd5b5050600a5460408051630dfe168160e01b815290516001600160a01b0390921691630dfe168191600480820192602092909190829003018186803b158015611f3157600080fd5b505afa158015611f45573d6000803e3d6000fd5b505050506040513d6020811015611f5b57600080fd5b50516014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b158015611fb457600080fd5b505af1158015611fc8573d6000803e3d6000fd5b505050506040513d6020811015611fde57600080fd5b5050600a546040805163d21220a760e01b815290516001600160a01b039092169163d21220a791600480820192602092909190829003018186803b15801561202557600080fd5b505afa158015612039573d6000803e3d6000fd5b505050506040513d602081101561204f57600080fd5b50516014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b505050506040513d6020811015610cd957600080fd5b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6000612116600954600254612bc990919063ffffffff16565b6121215750806110c2565b610a0c600954611b3c60025485612bc990919063ffffffff16565b612144612bc5565b6001600160a01b03166121556115cc565b6001600160a01b03161461219e576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b600e54604080519182526020820183905280517fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f9281900390910190a1600e55565b60006121f9600954600254612bc990919063ffffffff16565b612205575060006110c2565b610a0c600254611b3c60095485612bc990919063ffffffff16565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b600060405180828054600181600116156101000203166002900480156122a35780601f106122815761010080835404028352918201916122a3565b820191906000526020600020905b81548152906001019060200180831161228f575b505091505060405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660001b6122dc612d81565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b6013546001600160a01b031681565b612344612bc5565b6001600160a01b03166123556115cc565b6001600160a01b03161461239e576040805162461bcd60e51b81526020600482018190526024820152600080516020613e66833981519152604482015290519081900360640190fd5b6001600160a01b0381166123e35760405162461bcd60e51b8152600401808060200182810382526026815260200180613ccf6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031681565b6014546001600160a01b031681565b3233146124a8576040805162461bcd60e51b815260206004820152601460248201527359616b53747261746567793a3a6f6e6c79454f4160601b604482015290519081900360640190fd5b60006124b2611b58565b9050600d5481101561250b576040805162461bcd60e51b815260206004820152601760248201527f446578537472617465677956343a3a7265696e76657374000000000000000000604482015290519081900360640190fd5b611b0881612d85565b60008282018381101561256e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0383166125d0576040805162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b03821661262b576040805162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000818484111561271c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126e15781810151838201526020016126c9565b50505050905090810190601f16801561270e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0382166127695760405162461bcd60e51b8152600401808060200182810382526034815260200180613e866034913960400191505060405180910390fd5b6127a6816040518060600160405280602e8152602001613f10602e91396001600160a01b038616600090815260046020526040902054919061268d565b6001600160a01b0380851660009081526004602052604080822093909355908416815220546127d59082612514565b6001600160a01b0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081116128705760405162461bcd60e51b8152600401808060200182810382526025815260200180613d9d6025913960400191505060405180910390fd5b60135460408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156128bd57600080fd5b505af1158015610dc4573d6000803e3d6000fd5b61290e81604051806060016040528060278152602001613ee9602791396001600160a01b038516600090815260046020526040902054919061268d565b60046000846001600160a01b03166001600160a01b031681526020019081526020016000208190555061295e81604051806060016040528060278152602001613e1e60279139600254919061268d565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061256e83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f770081525061268d565b60075415612a43573360009081526008602052604090205460ff161515600114612a435760405162461bcd60e51b815260040180806020018281038252602e815260200180613d17602e913960400191505060405180910390fd5b600f5460ff161515600114612a9f576040805162461bcd60e51b815260206004820152601760248201527f446578537472617465677956343a3a5f6465706f736974000000000000000000604482015290519081900360640190fd5b600e5415612ac8576000612ab1611b58565b9050600e54811115612ac657612ac681612d85565b505b600a54604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506040513d6020811015612b4c57600080fd5b5051612b5757600080fd5b612b6081613162565b612b7282612b6d836120fd565b6131ee565b600954612b7f9082612514565b6009556040805182815290516001600160a01b038416917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25050565b3390565b600082612bd857506000610a0c565b82820282848281612be557fe5b041461256e5760405162461bcd60e51b8152600401808060200182810382526021815260200180613e456021913960400191505060405180910390fd5b600061256e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613279565b6000612c6e612220565b85604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612d07573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612d3d5750866001600160a01b0316816001600160a01b0316145b612d785760405162461bcd60e51b8152600401808060200182810382526024815260200180613d796024913960400191505060405180910390fd5b50505050505050565b4690565b601360009054906101000a90046001600160a01b03166001600160a01b0316633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050506000612e0a612710611b3c60125485612bc990919063ffffffff16565b90508015612ee857600b54600c546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015612e6b57600080fd5b505af1158015612e7f573d6000803e3d6000fd5b505050506040513d6020811015612e9557600080fd5b5051612ee8576040805162461bcd60e51b815260206004820152601d60248201527f446578537472617465677956343a3a5f7265696e766573742c20646576000000604482015290519081900360640190fd5b6000612f05612710611b3c60115486612bc990919063ffffffff16565b90508015612fea57600b546001600160a01b031663a9059cbb612f266115cc565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612f6d57600080fd5b505af1158015612f81573d6000803e3d6000fd5b505050506040513d6020811015612f9757600080fd5b5051612fea576040805162461bcd60e51b815260206004820152601f60248201527f446578537472617465677956343a3a5f7265696e766573742c2061646d696e00604482015290519081900360640190fd5b6000613007612710611b3c60105487612bc990919063ffffffff16565b905080156130e057600b546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561306357600080fd5b505af1158015613077573d6000803e3d6000fd5b505050506040513d602081101561308d57600080fd5b50516130e0576040805162461bcd60e51b815260206004820181905260248201527f446578537472617465677956343a3a5f7265696e766573742c20726577617264604482015290519081900360640190fd5b60006131006130fb836130f586818a8a6129a6565b906129a6565b6132de565b905061310b81613162565b6009546131189082612514565b600981905560025460408051928352602083019190915280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a15050505050565b600081116131a15760405162461bcd60e51b8152600401808060200182810382526022815260200180613cf56022913960400191505060405180910390fd5b6013546040805163534a7e1d60e11b81526004810184905290516001600160a01b039092169163a694fc3a9160248082019260009290919082900301818387803b1580156128bd57600080fd5b6002546131fb9082612514565b6002556001600160a01b0382166000908152600460205260409020546132219082612514565b6001600160a01b03831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081836132c85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156126e15781810151838201526020016126c9565b5060008385816132d457fe5b0495945050505050565b6000806132ec836002612c22565b90506000811161332d5760405162461bcd60e51b8152600401808060200182810382526032815260200180613dec6032913960400191505060405180910390fd5b60408051600280825260608281019093529190828160200160208202803683375050600b5482519293506001600160a01b03169183915060009061336d57fe5b6001600160a01b03928316602091820292909201810191909152600a5460408051630dfe168160e01b815290519190931692630dfe1681926004808301939192829003018186803b1580156133c157600080fd5b505afa1580156133d5573d6000803e3d6000fd5b505050506040513d60208110156133eb57600080fd5b50518151829060019081106133fc57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600083905081600184038151811061343057fe5b60200260200101516001600160a01b03168260008151811061344e57fe5b60200260200101516001600160a01b031614613762576014546040805163d06ca61f60e01b815260048101878152602482019283528551604483015285516060946001600160a01b03169363d06ca61f938a938993909291606401906020808601910280838360005b838110156134cf5781810151838201526020016134b7565b50505050905001935050505060006040518083038186803b1580156134f357600080fd5b505afa158015613507573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561353057600080fd5b8101908080516040519392919084600160201b82111561354f57600080fd5b90830190602082018581111561356457600080fd5b82518660208202830111600160201b8211171561358057600080fd5b82525081516020918201928201910280838360005b838110156135ad578181015183820152602001613595565b505050509050016040525050509050806001825103815181106135cc57fe5b60200260200101519150601460009054906101000a90046001600160a01b03166001600160a01b03166338ed173986848630426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561366f578181015183820152602001613657565b505050509050019650505050505050600060405180830381600087803b15801561369857600080fd5b505af11580156136ac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156136d557600080fd5b8101908080516040519392919084600160201b8211156136f457600080fd5b90830190602082018581111561370957600080fd5b82518660208202830111600160201b8211171561372557600080fd5b82525081516020918201928201910280838360005b8381101561375257818101518382015260200161373a565b5050505090500160405250505050505b60408051600280825260608281019093529190828160200160208202803683370190505090508360008151811061379557fe5b6020026020010151816000815181106137aa57fe5b6001600160a01b03928316602091820292909201810191909152600a546040805163d21220a760e01b81529051919093169263d21220a7926004808301939192829003018186803b1580156137fe57600080fd5b505afa158015613812573d6000803e3d6000fd5b505050506040513d602081101561382857600080fd5b505181518290600190811061383957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600086905081600184038151811061386d57fe5b60200260200101516001600160a01b03168260008151811061388b57fe5b60200260200101516001600160a01b031614613b9f576014546040805163d06ca61f60e01b8152600481018a8152602482019283528551604483015285516060946001600160a01b03169363d06ca61f938d938993909291606401906020808601910280838360005b8381101561390c5781810151838201526020016138f4565b50505050905001935050505060006040518083038186803b15801561393057600080fd5b505afa158015613944573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561396d57600080fd5b8101908080516040519392919084600160201b82111561398c57600080fd5b9083019060208201858111156139a157600080fd5b82518660208202830111600160201b821117156139bd57600080fd5b82525081516020918201928201910280838360005b838110156139ea5781810151838201526020016139d2565b50505050905001604052505050905080600182510381518110613a0957fe5b60200260200101519150601460009054906101000a90046001600160a01b03166001600160a01b03166338ed173989848630426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613aac578181015183820152602001613a94565b505050509050019650505050505050600060405180830381600087803b158015613ad557600080fd5b505af1158015613ae9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613b1257600080fd5b8101908080516040519392919084600160201b821115613b3157600080fd5b908301906020820185811115613b4657600080fd5b82518660208202830111600160201b82111715613b6257600080fd5b82525081516020918201928201910280838360005b83811015613b8f578181015183820152602001613b77565b5050505090500160405250505050505b60145485516000916001600160a01b03169063e8e337009088906000198b01908110613bc757fe5b6020026020010151856001880381518110613bde57fe5b6020026020010151888660008030426040518963ffffffff1660e01b815260040180896001600160a01b03168152602001886001600160a01b03168152602001878152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200198505050505050505050606060405180830381600087803b158015613c6f57600080fd5b505af1158015613c83573d6000803e3d6000fd5b505050506040513d6060811015613c9957600080fd5b50604001519a995050505050505050505056fe446578537472617465677956343a3a7265736375654465706c6f79656446756e64734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373446578537472617465677956343a3a5f7374616b654465706f736974546f6b656e735065726d697373696f6e65643a3a6f6e6c79416c6c6f7765644465706f736974732c206e6f7420616c6c6f7765645065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f20616c6c6f776564206465706f7369746f7273417263683a3a76616c69646174655369673a20696e76616c6964207369676e6174757265446578537472617465677956343a3a5f77697468647261774465706f736974546f6b656e735065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f7420616c6c6f776564446578537472617465677956343a3a5f636f6e76657274526577617264546f6b656e73546f4465706f736974546f6b656e735f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c79536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573737472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e63655f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a26469706673582212201f9145e4c878951f6a4de493283bad6bcda1b50e05e54a7b73d067a19dc1c4c164736f6c634300070300334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000000000000000000000000001400000000000000000000000009d472e21f6589380b21c42674b3585c47b74c89100000000000000000000000060781c2586d68229fde47564546784ab3faca982000000000000000000000000759ee0072901f409e4959e00b00a16fd729397ec000000000000000000000000e54ca86531e17ef3616d22ca28b0d458b6c891060000000000000000000000008d36c5c6947adccd25ef49ea1aac2ceacfff0bd7000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000165969656c642059616b3a2050474c20504e472d56534f00000000000000000000