[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "address", "name": "_rewardToken", "type": "address" }, { "internalType": "address", "name": "_nativeRewardToken", "type": "address" }, { "components": [ { "internalType": "address", "name": "poolReward", "type": "address" }, { "internalType": "address", "name": "extraReward", "type": "address" }, { "internalType": "address", "name": "token0", "type": "address" }, { "internalType": "address", "name": "token1", "type": "address" } ], "internalType": "struct MasterChefStrategyForLP.SwapPairs", "name": "_swapPairs", "type": "tuple" }, { "internalType": "address", "name": "_stakingRewards", "type": "address" }, { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "address", "name": "_timelock", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "minTokensToReinvest", "type": "uint256" }, { "internalType": "uint256", "name": "adminFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "devFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "reinvestRewardBips", "type": "uint256" } ], "internalType": "struct MasterChefStrategy.StrategySettings", "name": "_strategySettings", "type": "tuple" } ], "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": "PID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "extraToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "miniChef", "outputs": [ { "internalType": "contract IMiniChefV2", "name": "", "type": "address" } ], "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": [ { "internalType": "address", "name": "_extraTokenSwapPair", "type": "address" } ], "name": "setExtraRewardSwapPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapPairExtraReward", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapPairRewardToken", "outputs": [ { "internalType": "address", "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" } ]
60e0604052600960a0819052685969656c642059616b60b81b60c09081526200002c916000919062001629565b506040805180820190915260038082526216549560ea1b6020909201918252620000599160019162001629565b503480156200006757600080fd5b506040516200612b3803806200612b8339810160408190526200008a91620017e1565b8888888888888789888888888888600001518960200151898989896000620000b76200026860201b60201c565b600680546001600160a01b0319166001600160a01b038316908117909155604051919250906000906000805160206200610b833981519152908290a3508951620001099060009060208d019062001629565b50600980546001600160a01b03808c166001600160a01b031992831617909255600a80548b84169083161790556080849052600b80548216732d580f9cf2fb2d09bc411532988f2afda4e7beff1790556012805492871692909116919091179055620001778888886200026c565b6200018285620004ce565b80516200018f90620006e3565b60208101516200019f906200076b565b6040810151620001af9062000839565b6060810151620001bf90620008f3565b620001cb6001620009ad565b620001d68362000a55565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2346000806040516200020a9291906200192f565b60405180910390a1505050505050505050506200022f85888862000b0f60201b60201c565b5050601980546001600160a01b0319166001600160a01b039c909c169b909b17909a555062001cc99d5050505050505050505050505050565b3390565b806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a657600080fd5b505afa158015620002bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e19190620017c4565b6001600160a01b0316826001600160a01b03161415620003b257826001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033f57600080fd5b505afa15801562000354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037a9190620017c4565b6001600160a01b031614620003ac5760405162461bcd60e51b8152600401620003a39062001a6d565b60405180910390fd5b6200049f565b806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ec57600080fd5b505afa15801562000401573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004279190620017c4565b6001600160a01b0316826001600160a01b031614156200048557826001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033f57600080fd5b60405162461bcd60e51b8152600401620003a390620019ba565b601380546001600160a01b039384166001600160a01b0319918216179091556014805492909316911617905550565b6001600160a01b03811615620006c357600a5460408051630dfe168160e01b815290516001600160a01b0392831692841691630dfe1681916004808301926020929190829003018186803b1580156200052657600080fd5b505afa1580156200053b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005619190620017c4565b6001600160a01b031614156200060c57806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620005ab57600080fd5b505afa158015620005c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005e69190620017c4565b601680546001600160a01b0319166001600160a01b0392909216919091179055620006a2565b806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200064657600080fd5b505afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006819190620017c4565b601680546001600160a01b0319166001600160a01b03929092169190911790555b601580546001600160a01b0319166001600160a01b038316179055620006e0565b601580546001600160a01b03199081169091556016805490911690555b50565b620006ed62000268565b6001600160a01b031662000700620015eb565b6001600160a01b031614620007295760405162461bcd60e51b8152600401620003a39062001b6d565b7f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100600c54826040516200075e9291906200192f565b60405180910390a1600c55565b6200077562000268565b6001600160a01b031662000788620015eb565b6001600160a01b031614620007b15760405162461bcd60e51b8152600401620003a39062001b6d565b612710620007eb600f54620007d760115485620015fa60201b62001bde1790919060201c565b620015fa60201b62001bde1790919060201c565b1115620007f757600080fd5b7f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a601054826040516200082c9291906200192f565b60405180910390a1601055565b6200084362000268565b6001600160a01b031662000856620015eb565b6001600160a01b0316146200087f5760405162461bcd60e51b8152600401620003a39062001b6d565b612710620008a5600f54620007d760105485620015fa60201b62001bde1790919060201c565b1115620008b157600080fd5b7f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d65172613160115482604051620008e69291906200192f565b60405180910390a1601155565b620008fd62000268565b6001600160a01b031662000910620015eb565b6001600160a01b031614620009395760405162461bcd60e51b8152600401620003a39062001b6d565b6127106200095f601154620007d760105485620015fa60201b62001bde1790919060201c565b11156200096b57600080fd5b7fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2600f5482604051620009a09291906200192f565b60405180910390a1600f55565b620009b762000268565b6001600160a01b0316620009ca620015eb565b6001600160a01b031614620009f35760405162461bcd60e51b8152600401620003a39062001b6d565b600e5460ff161515811515141562000a0a57600080fd5b600e805460ff19168215151790556040517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859062000a4a90839062001924565b60405180910390a150565b62000a5f62000268565b6001600160a01b031662000a72620015eb565b6001600160a01b03161462000a9b5760405162461bcd60e51b8152600401620003a39062001b6d565b6001600160a01b03811662000ac45760405162461bcd60e51b8152600401620003a3906200193d565b6006546040516001600160a01b038084169216906000805160206200610b83398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000b5e57600080fd5b505afa15801562000b73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b999190620017c4565b6001600160a01b0316826001600160a01b03161415801562000c565750600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801562000c0557600080fd5b505afa15801562000c1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c409190620017c4565b6001600160a01b0316826001600160a01b031614155b15620013145760408301516001600160a01b031662000c895760405162461bcd60e51b8152600401620003a39062001b24565b60608301516001600160a01b031662000cb65760405162461bcd60e51b8152600401620003a39062001bff565b604083810151601780546001600160a01b03199081166001600160a01b0393841617918290556060870151601880549092169084161790558251630dfe168160e01b81529251858316939190921691630dfe168191600480820192602092909190829003018186803b15801562000d2c57600080fd5b505afa15801562000d41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d679190620017c4565b6001600160a01b0316148062000e0557506017546040805163d21220a760e01b815290516001600160a01b0380861693169163d21220a7916004808301926020929190829003018186803b15801562000dbf57600080fd5b505afa15801562000dd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dfa9190620017c4565b6001600160a01b0316145b62000e245760405162461bcd60e51b8152600401620003a39062001ab9565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000e7357600080fd5b505afa15801562000e88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000eae9190620017c4565b6001600160a01b0316601760009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000f0657600080fd5b505afa15801562000f1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f419190620017c4565b6001600160a01b031614806200107a5750600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000fa157600080fd5b505afa15801562000fb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fdc9190620017c4565b6001600160a01b0316601760009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200103457600080fd5b505afa15801562001049573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200106f9190620017c4565b6001600160a01b0316145b620010995760405162461bcd60e51b8152600401620003a39062001ba2565b600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620010e857600080fd5b505afa158015620010fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011239190620017c4565b6001600160a01b0316601860009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200117b57600080fd5b505afa15801562001190573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011b69190620017c4565b6001600160a01b03161480620012ef5750600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200121657600080fd5b505afa1580156200122b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012519190620017c4565b6001600160a01b0316601860009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620012a957600080fd5b505afa158015620012be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e49190620017c4565b6001600160a01b0316145b6200130e5760405162461bcd60e51b8152600401620003a39062001c48565b620014a7565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200136357600080fd5b505afa15801562001378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200139e9190620017c4565b6001600160a01b0316826001600160a01b03161415620013e057600954601880546001600160a01b0319166001600160a01b03909216919091179055620014a7565b600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200142f57600080fd5b505afa15801562001444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200146a9190620017c4565b6001600160a01b0316826001600160a01b03161415620014a757600954601780546001600160a01b0319166001600160a01b039092169190911790555b82600001516001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620014e557600080fd5b505afa158015620014fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015209190620017c4565b6001600160a01b0316816001600160a01b03161415620015e657816001600160a01b031683600001516001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200158257600080fd5b505afa15801562001597573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015bd9190620017c4565b6001600160a01b031614620015e65760405162461bcd60e51b8152600401620003a39062001a10565b505050565b6006546001600160a01b031690565b600082820183811015620016225760405162461bcd60e51b8152600401620003a39062001983565b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200166c57805160ff19168380011785556200169c565b828001600101855582156200169c579182015b828111156200169c5782518255916020019190600101906200167f565b50620016aa929150620016ae565b5090565b5b80821115620016aa5760008155600101620016af565b80516001600160a01b0381168114620016dd57600080fd5b919050565b600060808284031215620016f4578081fd5b604051608081016001600160401b03811182821017156200171157fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201525092915050565b60006080828403121562001754578081fd5b604051608081016001600160401b03811182821017156200177157fe5b6040529050806200178283620016c5565b81526200179260208401620016c5565b6020820152620017a560408401620016c5565b6040820152620017b860608401620016c5565b60608201525092915050565b600060208284031215620017d6578081fd5b6200162282620016c5565b60008060008060008060008060006101e08a8c03121562001800578485fd5b89516001600160401b038082111562001817578687fd5b818c0191508c601f8301126200182b578687fd5b8151818111156200183857fe5b6020915062001850601f8201601f1916830162001ca5565b8181528e8383860101111562001864578889fd5b885b828110156200188357848101840151828201850152830162001866565b828111156200189457898484840101525b509b50620018a690508c8201620016c5565b99505050620018b860408b01620016c5565b9650620018c860608b01620016c5565b9550620018d98b60808c0162001742565b9450620018ea6101008b01620016c5565b93506101208a01519250620019036101408b01620016c5565b9150620019158b6101608c01620016e2565b90509295985092959850929598565b901515815260200190565b918252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252604190820152600080516020620060eb83398151915260408201527f6f6573206e6f7420636f6e7461696e20706f6f6c2072657761726420746f6b656060820152603760f91b608082015260a00190565b6020808252603a908201527f537761702070616972207377617050616972506f6f6c52657761726420646f6560408201527f73206e6f7420636f6e7461696e2072657761726420746f6b656e000000000000606082015260800190565b6020808252603f90820152600080516020620060eb83398151915260408201527f6f6573206e6f7420636f6e7461696e2065636f73797374656d20746f6b656e00606082015260800190565b60208082526045908201527f53776170207061697220737570706c69656420646f6573206e6f74206861766560408201527f207468652072657761726420746f6b656e206173206f6e65206f662069742773606082015264103830b4b960d91b608082015260a00190565b60208082526029908201527f5377617020706169722030206973206e656365737361727920627574206e6f74604082015268081cdd5c1c1b1a595960ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526038908201527f537761702070616972203020737570706c69656420646f6573206e6f74206d6160408201527f74636820746865207061697220696e207175657374696f6e0000000000000000606082015260800190565b60208082526029908201527f5377617020706169722031206973206e656365737361727920627574206e6f74604082015268081cdd5c1c1b1a595960ba1b606082015260800190565b60208082526038908201527f537761702070616972203120737570706c69656420646f6573206e6f74206d6160408201527f74636820746865207061697220696e207175657374696f6e0000000000000000606082015260800190565b6040518181016001600160401b038111828210171562001cc157fe5b604052919050565b6080516143da62001d11600039806107d352806109825280610d675280610f0852806115805280611e99528061215a528061264752806128a75280612b4a52506143da6000f3fe608060405234801561001057600080fd5b50600436106103a45760003560e01c80638aff733d116101e9578063bd079f551161010f578063dd62ed3e116100ad578063ed24911d1161007c578063ed24911d146106e9578063f2fde38b146106f1578063f7c618c114610704578063fdb5a03e1461070c576103a4565b8063dd62ed3e1461069d578063dd8ce4d6146106b0578063e21ac825146106c3578063eab89a5a146106d6576103a4565b8063cff1b6ef116100e9578063cff1b6ef14610667578063d505accf1461067a578063da09c72c1461068d578063dbd9a4d414610695576103a4565b8063bd079f551461064f578063c4b24a4614610657578063c89039c51461065f576103a4565b80639e4e731811610187578063ac0d31ff11610156578063ac0d31ff14610619578063b52a321f1461062c578063b6b55f2514610634578063b9e57b8014610647576103a4565b80639e4e7318146105e3578063a1a4ddeb146105eb578063a8ae2b7c146105f3578063a9059cbb14610606576103a4565b8063909ac8f4116101c3578063909ac8f4146105ad5780639291d563146105b557806395d89b41146105c857806399729ec1146105d0576103a4565b80638aff733d1461058a5780638b73e606146105925780638da5cb5b146105a5576103a4565b80634bebd1e7116102ce578063715018a61161026c5780637ecebe001161023b5780637ecebe001461053e57806381837230146105515780638432e894146105645780638980f11f14610577576103a4565b8063715018a614610513578063789139bc1461051b5780637ae26773146105235780637d88209714610536576103a4565b80635e5eee1b116102a85780635e5eee1b146104e85780635ea682ea146104f05780635eaec0e4146104f857806370a0823114610500576103a4565b80634bebd1e7146104af5780634e77ace5146104c25780634ebb7916146104d5576103a4565b80632e1a7d4d116103465780633bdc6e72116103155780633bdc6e721461046c5780634005760a14610474578063483c2ef0146104895780634a970be71461049c576103a4565b80632e1a7d4d146104275780632f4f21e21461043c57806330adf81f1461044f578063313ce56714610457576103a4565b80630f23475d116103825780630f23475d146103fc57806318160ddd1461040457806320606b701461040c57806323b872dd14610414576103a4565b806306fdde03146103a957806307677111146103c7578063095ea7b3146103dc575b600080fd5b6103b1610714565b6040516103be9190613b73565b60405180910390f35b6103cf6107a2565b6040516103be9190613aec565b6103ef6103ea3660046137d6565b6107a8565b6040516103be9190613ae1565b6103cf6107bf565b6103cf61082b565b6103cf610831565b6103ef610422366004613729565b610855565b61043a610435366004613887565b61093c565b005b61043a61044a3660046137d6565b610a29565b6103cf610a37565b61045f610a5b565b6040516103be91906142c8565b6103cf610a60565b61047c610a66565b6040516103be9190613a35565b6103ef6104973660046136b9565b610a75565b61043a6104aa3660046138fe565b610a8a565b61043a6104bd3660046136b9565b610b22565b61043a6104d0366004613801565b610c06565b61043a6104e3366004613887565b610ca4565b61047c610d50565b6103cf610d5f565b6103cf610d65565b6103cf61050e3660046136b9565b610d89565b61043a610da8565b6103cf610e31565b61043a6105313660046136f1565b610e37565b6103cf610f00565b6103cf61054c3660046136b9565b610f33565b61043a61055f366004613887565b610f45565b61043a6105723660046136b9565b610fc4565b61043a6105853660046137d6565b610ffa565b6103cf61110c565b61043a6105a03660046136b9565b611112565b61047c611218565b61047c611227565b61043a6105c33660046136b9565b611236565b6103b16112c9565b61043a6105de366004613887565b611323565b6103cf6113d1565b61047c6113f5565b61043a610601366004613887565b611404565b6103ef6106143660046137d6565b6114ac565b61043a6106273660046138b7565b6114b9565b6103ef6116c0565b61043a610642366004613887565b6116c9565b6103cf6116d3565b6103cf611714565b6103cf61171a565b61047c61172e565b61043a610675366004613887565b61173d565b61043a610688366004613769565b6117e5565b61047c61189a565b61043a6118a9565b6103cf6106ab3660046136f1565b611900565b6103cf6106be366004613887565b61192b565b61043a6106d1366004613887565b611965565b6103cf6106e4366004613887565b6119e4565b6103cf611a15565b61043a6106ff3660046136b9565b611aac565b61047c611b6d565b61043a611b7c565b6000805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561079a5780601f1061076f5761010080835404028352916020019161079a565b820191906000526020600020905b81548152906001019060200180831161077d57829003601f168201915b505050505081565b60105481565b60006107b5338484611c0a565b5060015b92915050565b6000806107ca610f00565b905060006107f77f0000000000000000000000000000000000000000000000000000000000000000611cbe565b90506000610816610806611cc4565b6108108585611cca565b90611d04565b90506108228382611d46565b93505050505b90565b60025481565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6001600160a01b03831660008181526003602090815260408083203380855292528220549192909190821480159061088f57506000198114155b156109255760006108bb856040518060600160405280602f8152602001614321602f9139849190611d84565b6001600160a01b03808916600081815260036020908152604080832094891680845294909152908190208490555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061091b908590613aec565b60405180910390a3505b610930868686611db0565b50600195945050505050565b6000610947826119e4565b9050600081116109725760405162461bcd60e51b815260040161096990613e33565b60405180910390fd5b61097b81611e94565b60006109a67f0000000000000000000000000000000000000000000000000000000000000000611cbe565b905060006109b5610806611cc4565b6009549091506109d8906001600160a01b0316336109d38685611d46565b611ebe565b6109e23385611f5f565b336001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436484604051610a1b9190613aec565b60405180910390a250505050565b610a338282612039565b5050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60075481565b6019546001600160a01b031681565b60086020526000908152604090205460ff1681565b6009546040517fd505accf0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d505accf90610adf90339030908a908a908a908a908a90600401613a6d565b600060405180830381600087803b158015610af957600080fd5b505af1158015610b0d573d6000803e3d6000fd5b50505050610b1b3386612039565b5050505050565b610b2a6121e7565b6001600160a01b0316610b3b611218565b6001600160a01b031614610b615760405162461bcd60e51b815260040161096990613fde565b6001600160a01b03811660009081526008602052604090205460ff1615610b9a5760405162461bcd60e51b815260040161096990613d0b565b6001600160a01b0381166000908152600860205260409020805460ff19166001908117909155600754610bcc91611bde565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b610c0e6121e7565b6001600160a01b0316610c1f611218565b6001600160a01b031614610c455760405162461bcd60e51b815260040161096990613fde565b600e5460ff1615158115151415610c5b57600080fd5b600e805460ff19168215151790556040517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e8590610c99908390613ae1565b60405180910390a150565b610cac6121e7565b6001600160a01b0316610cbd611218565b6001600160a01b031614610ce35760405162461bcd60e51b815260040161096990613fde565b60008111610cf057600080fd5b604051339082156108fc029083906000818181858888f19350505050158015610d1d573d6000803e3d6000fd5b507f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28600082604051610c99929190613aae565b601a546001600160a01b031681565b60115481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600460205260409020545b919050565b610db06121e7565b6001600160a01b0316610dc1611218565b6001600160a01b031614610de75760405162461bcd60e51b815260040161096990613fde565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b600d5481565b610e3f6121e7565b6001600160a01b0316610e50611218565b6001600160a01b031614610e765760405162461bcd60e51b815260040161096990613fde565b60405163095ea7b360e01b81526001600160a01b0383169063095ea7b390610ea5908490600090600401613aae565b602060405180830381600087803b158015610ebf57600080fd5b505af1158015610ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef7919061381d565b610a3357600080fd5b600080610f2d7f0000000000000000000000000000000000000000000000000000000000000000306121eb565b91505090565b60056020526000908152604090205481565b610f4d6121e7565b6001600160a01b0316610f5e611218565b6001600160a01b031614610f845760405162461bcd60e51b815260040161096990613fde565b7f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100600c5482604051610fb7929190614263565b60405180910390a1600c55565b600b546001600160a01b03163314610fee5760405162461bcd60e51b81526004016109699061413b565b610ff78161228e565b50565b6110026121e7565b6001600160a01b0316611013611218565b6001600160a01b0316146110395760405162461bcd60e51b815260040161096990613fde565b6000811161104657600080fd5b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb906110749033908590600401613aae565b602060405180830381600087803b15801561108e57600080fd5b505af11580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c6919061381d565b6110cf57600080fd5b7f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288282604051611100929190613aae565b60405180910390a15050565b600f5481565b61111a6121e7565b6001600160a01b031661112b611218565b6001600160a01b0316146111515760405162461bcd60e51b815260040161096990613fde565b6000600754116111735760405162461bcd60e51b815260040161096990613c51565b6001600160a01b03811660009081526008602052604090205460ff1615156001146111b05760405162461bcd60e51b815260040161096990613e6a565b6001600160a01b0381166000908152600860205260409020805460ff191690556007546111de906001611d46565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b6006546001600160a01b031690565b6015546001600160a01b031681565b600b546001600160a01b031633146112605760405162461bcd60e51b81526004016109699061413b565b600b546040517fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c009161129f916001600160a01b03909116908490613ac7565b60405180910390a1600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561079a5780601f1061076f5761010080835404028352916020019161079a565b61132b6121e7565b6001600160a01b031661133c611218565b6001600160a01b0316146113625760405162461bcd60e51b815260040161096990613fde565b612710611386600f5461138060105485611bde90919063ffffffff16565b90611bde565b111561139157600080fd5b7f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131601154826040516113c4929190614263565b60405180910390a1601155565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b6016546001600160a01b031681565b61140c6121e7565b6001600160a01b031661141d611218565b6001600160a01b0316146114435760405162461bcd60e51b815260040161096990613fde565b61271061146160115461138060105485611bde90919063ffffffff16565b111561146c57600080fd5b7fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2600f548260405161149f929190614263565b60405180910390a1600f55565b60006107b5338484611db0565b6114c16121e7565b6001600160a01b03166114d2611218565b6001600160a01b0316146114f85760405162461bcd60e51b815260040161096990613fde565b6009546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611529903090600401613a35565b60206040518083038186803b15801561154157600080fd5b505afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611579919061389f565b90506115a47f00000000000000000000000000000000000000000000000000000000000000006124ab565b6009546040516370a0823160e01b81526000916001600160a01b0316906370a08231906115d5903090600401613a35565b60206040518083038186803b1580156115ed57600080fd5b505afa158015611601573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611625919061389f565b9050836116328284611d46565b10156116505760405162461bcd60e51b815260040161096990613d42565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234611679610f00565b60025460405161168a929190614263565b60405180910390a1600e5460ff16151560011480156116ab57506001831515145b156116ba576116ba6000610c06565b50505050565b600e5460ff1681565b610ff73382612039565b6000806116de61171a565b9050600c54811061170c57611704612710610810600f5484611cca90919063ffffffff16565b915050610828565b600091505090565b600c5481565b6000806117256125b2565b94505050505090565b6009546001600160a01b031681565b6117456121e7565b6001600160a01b0316611756611218565b6001600160a01b03161461177c5760405162461bcd60e51b815260040161096990613fde565b61271061179a600f5461138060115485611bde90919063ffffffff16565b11156117a557600080fd5b7f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a601054826040516117d8929190614263565b60405180910390a1601055565b428410156118055760405162461bcd60e51b815260040161096990613dfc565b6001600160a01b03871660009081526005602090815260408083208054600181019091559051611860927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92918c9101613af5565b60405160208183030381529060405280519060200120905061188588828686866127c8565b611890888888611c0a565b5050505050505050565b600b546001600160a01b031681565b6118b16121e7565b6001600160a01b03166118c2611218565b6001600160a01b0316146118e85760405162461bcd60e51b815260040161096990613fde565b60405162461bcd60e51b815260040161096990614104565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6000611941611938610f00565b60025490611cca565b61194c575080610da3565b6107b9611957610f00565b600254610810908590611cca565b61196d6121e7565b6001600160a01b031661197e611218565b6001600160a01b0316146119a45760405162461bcd60e51b815260040161096990613fde565b7fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f600d54826040516119d7929190614263565b60405180910390a1600d55565b60006119f1611938610f00565b6119fd57506000610da3565b6107b9600254610810611a0e610f00565b8590611cca565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b6000604051611a4a919061398f565b6040519081900390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6611a7c61289e565b30604051602001611a91959493929190613b29565b60405160208183030381529060405280519060200120905090565b611ab46121e7565b6001600160a01b0316611ac5611218565b6001600160a01b031614611aeb5760405162461bcd60e51b815260040161096990613fde565b6001600160a01b038116611b115760405162461bcd60e51b815260040161096990613b86565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031681565b323314611b9b5760405162461bcd60e51b815260040161096990613be3565b600080600080611ba96125b2565b9350935093509350600c54811015611bd35760405162461bcd60e51b815260040161096990614172565b6116ba8285856128a2565b600082820183811015611c035760405162461bcd60e51b815260040161096990613c1a565b9392505050565b6001600160a01b038316611c305760405162461bcd60e51b815260040161096990614013565b6001600160a01b038216611c565760405162461bcd60e51b8152600401610969906141e0565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611cb1908590613aec565b60405180910390a3505050565b50600090565b61271090565b600082611cd9575060006107b9565b82820282848281611ce657fe5b0414611c035760405162461bcd60e51b815260040161096990613f81565b6000611c0383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129e9565b6000611c0383836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152505b60008184841115611da85760405162461bcd60e51b81526004016109699190613b73565b505050900390565b6001600160a01b038216611dd65760405162461bcd60e51b81526004016109699061404a565b611e13816040518060600160405280602e8152602001614377602e91396001600160a01b0386166000908152600460205260409020549190611d84565b6001600160a01b038085166000908152600460205260408082209390935590841681522054611e429082611bde565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cb1908590613aec565b610ff77f000000000000000000000000000000000000000000000000000000000000000082612a20565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90611eec9085908590600401613aae565b602060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3e919061381d565b611f5a5760405162461bcd60e51b815260040161096990613d9f565b505050565b611f9c81604051806060016040528060278152602001614350602791396001600160a01b0385166000908152600460205260409020549190611d84565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550611fec816040518060600160405280602781526020016142fa602791396002549190611d84565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061202d908590613aec565b60405180910390a35050565b600e5460ff1615156001146120605760405162461bcd60e51b8152600401610969906141a9565b600d5415612098576000806000806120766125b2565b9350935093509350600d54811115612093576120938285856128a2565b505050505b6009546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906323b872dd906120e590339030908690600401613a49565b602060405180830381600087803b1580156120ff57600080fd5b505af1158015612113573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612137919061381d565b6121535760405162461bcd60e51b8152600401610969906140a7565b600061217e7f0000000000000000000000000000000000000000000000000000000000000000611cbe565b9050600061218d610806611cc4565b90506121a5846121a06106be8685611d46565b612aa3565b6121ae83612b25565b836001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c84604051610a1b9190613aec565b3390565b6019546040517f93f1a40b0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906393f1a40b90612237908690869060040161424c565b604080518083038186803b15801561224e57600080fd5b505afa158015612262573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228691906138db565b509392505050565b6001600160a01b0381161561248c57600a54604080517f0dfe168100000000000000000000000000000000000000000000000000000000815290516001600160a01b0392831692841691630dfe1681916004808301926020929190829003018186803b1580156122fd57600080fd5b505afa158015612311573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233591906136d5565b6001600160a01b031614156123da57806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561237d57600080fd5b505afa158015612391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b591906136d5565b601680546001600160a01b0319166001600160a01b039290921691909117905561246c565b806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561241357600080fd5b505afa158015612427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244b91906136d5565b601680546001600160a01b0319166001600160a01b03929092169190911790555b601580546001600160a01b0319166001600160a01b038316179055610ff7565b601580546001600160a01b031990811690915560168054909116905550565b6019546040517f2f940c700000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690632f940c70906124f6908490309060040161424c565b600060405180830381600087803b15801561251057600080fd5b505af1158015612524573d6000803e3d6000fd5b505060095460195460405163095ea7b360e01b81526001600160a01b03928316945063095ea7b393506125609290911690600090600401613aae565b602060405180830381600087803b15801561257a57600080fd5b505af115801561258e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a33919061381d565b6013546040516370a0823160e01b815260009182918291829182916001600160a01b0316906370a08231906125eb903090600401613a35565b60206040518083038186803b15801561260357600080fd5b505afa158015612617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263b919061389f565b9050600080600061266c7f000000000000000000000000000000000000000000000000000000000000000030612b6f565b91945092509050600061267f8585611bde565b601354600a546014549293506000926126aa9285926001600160a01b03918216929082169116612c1d565b905060006001600160a01b0384161561271d576001600160a01b03841673b31f66aa3c1e785363f0875a1b74e27b85fd66c714156126e957508361271d565b6015546001600160a01b03161561271d57600a5460155461271a91879187916001600160a01b039081169116612c1d565b90505b600a546040516370a0823160e01b81526000916127a49184916001600160a01b0316906370a0823190612754903090600401613a35565b60206040518083038186803b15801561276c57600080fd5b505afa158015612780573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611380919061389f565b905060006127b28285611bde565b949d969c50909a50929850939650505050505050565b60006127d2611a15565b856040516020016127e49291906139ff565b6040516020818303038152906040528051906020012090506000600182868686604051600081526020016040526040516128219493929190613b55565b6020604051602081039080840390855afa158015612843573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906128795750866001600160a01b0316816001600160a01b0316145b6128955760405162461bcd60e51b815260040161096990613cae565b50505050505050565b4690565b6128cb7f0000000000000000000000000000000000000000000000000000000000000000612cea565b60006128e06128d984612d63565b8590611bde565b90506128f66128ef8584612dab565b8290611bde565b50600061291461271061081060115485611cca90919063ffffffff16565b9050801561293957600a54600b54612939916001600160a01b03908116911683611ebe565b6000612956612710610810600f5486611cca90919063ffffffff16565b9050801561297557600a54612975906001600160a01b03163383611ebe565b600061299361298e836129888787611d46565b90611d46565b612efe565b905061299e81612b25565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2346129c7610f00565b6002546040516129d8929190614263565b60405180910390a150505050505050565b60008183612a0a5760405162461bcd60e51b81526004016109699190613b73565b506000838581612a1657fe5b0495945050505050565b6019546040517f0ad58d2f0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690630ad58d2f90612a6d90859085903090600401614271565b600060405180830381600087803b158015612a8757600080fd5b505af1158015612a9b573d6000803e3d6000fd5b505050505050565b600254612ab09082611bde565b6002556001600160a01b038216600090815260046020526040902054612ad69082611bde565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061202d908590613aec565b60008111612b455760405162461bcd60e51b815260040161096990613f24565b610ff77f000000000000000000000000000000000000000000000000000000000000000082612f2d565b6019546040517f98969e82000000000000000000000000000000000000000000000000000000008152600091829182916001600160a01b0316906398969e8290612bbf908890889060040161424c565b60206040518083038186803b158015612bd757600080fd5b505afa158015612beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0f919061389f565b956000955085945092505050565b600080612c2a8585613003565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612c6957600080fd5b505afa158015612c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca19190613839565b5091509150866001600160a01b0316836001600160a01b031614612cc157905b612cde88836001600160701b0316836001600160701b0316613034565b98975050505050505050565b6019546040517f18fccc760000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906318fccc7690612d35908490309060040161424c565b600060405180830381600087803b158015612d4f57600080fd5b505af1158015610b1b573d6000803e3d6000fd5b601354600a546000916001600160a01b0391821691161415612d86575080610da3565b601354600a546014546107b99285926001600160a01b0391821692908216911661307c565b60008115612ef5576015546001600160a01b031615612df057601654600a54601554612de99285926001600160a01b0391821692908216911661307c565b90506107b9565b478015612e605773b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e4657600080fd5b505af1158015612e5a573d6000803e3d6000fd5b50505050505b6040516370a0823160e01b8152612eed90859073b31f66aa3c1e785363f0875a1b74e27b85fd66c7906370a0823190612e9d903090600401613a35565b60206040518083038186803b158015612eb557600080fd5b505afa158015612ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612988919061389f565b9150506107b9565b50600092915050565b600a546009546017546018546000936107b99386936001600160a01b039283169391831692908116911661320f565b60095460195460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612f63929116908590600401613aae565b602060405180830381600087803b158015612f7d57600080fd5b505af1158015612f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb5919061381d565b506019546040517f8dbdbe6d0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638dbdbe6d90612a6d90859085903090600401614271565b600080826001600160a01b0316846001600160a01b031610613026578284613029565b83835b915091509250929050565b600080613043856103e5611cca565b905060006130518285611cca565b9050600061306583611380886103e8611cca565b90506130718282611d04565b979650505050505050565b6000806130898585613003565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156130c857600080fd5b505afa1580156130dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131009190613839565b5091509150866001600160a01b0316836001600160a01b03161461312057905b6000806131408a856001600160701b0316856001600160701b0316613034565b9050886001600160a01b0316856001600160a01b03161461315d57905b61316889888c613389565b604080516000815260208101918290527f022c0d9f000000000000000000000000000000000000000000000000000000009091526001600160a01b0388169063022c0d9f906131c09085908590309060248101614290565b600060405180830381600087803b1580156131da57600080fd5b505af11580156131ee573d6000803e3d6000fd5b505050508181116131ff5781613201565b805b9a9950505050505050505050565b60008061321d876002611d04565b90506000811161323f5760405162461bcd60e51b815260040161096990613ec7565b6000856001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561327a57600080fd5b505afa15801561328e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b291906136d5565b9050816001600160a01b03888116908316146132d7576132d48389848961307c565b90505b6000876001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561331257600080fd5b505afa158015613326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334a91906136d5565b9050836001600160a01b038a81169083161461336f5761336c858b848a61307c565b90505b61337a898483613425565b9b9a5050505050505050505050565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906133b79085908590600401613aae565b602060405180830381600087803b1580156133d157600080fd5b505af11580156133e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613409919061381d565b611f5a5760405162461bcd60e51b815260040161096990614217565b6000806000856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561346357600080fd5b505afa158015613477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349b9190613839565b509150915060006134bf86846001600160701b0316846001600160701b0316613679565b9050848111156134ec578490506134e985836001600160701b0316856001600160701b0316613679565b95505b613567876001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561352857600080fd5b505afa15801561353c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061356091906136d5565b8888613389565b6135e2876001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156135a357600080fd5b505afa1580156135b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135db91906136d5565b8883613389565b6040517f6a6278420000000000000000000000000000000000000000000000000000000081526001600160a01b03881690636a62784290613627903090600401613a35565b602060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613071919061389f565b6000613689836108108685611cca565b949350505050565b80516001600160701b0381168114610da357600080fd5b803560ff81168114610da357600080fd5b6000602082840312156136ca578081fd5b8135611c03816142d6565b6000602082840312156136e6578081fd5b8151611c03816142d6565b60008060408385031215613703578081fd5b823561370e816142d6565b9150602083013561371e816142d6565b809150509250929050565b60008060006060848603121561373d578081fd5b8335613748816142d6565b92506020840135613758816142d6565b929592945050506040919091013590565b600080600080600080600060e0888a031215613783578283fd5b873561378e816142d6565b9650602088013561379e816142d6565b955060408801359450606088013593506137ba608089016136a8565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156137e8578182fd5b82356137f3816142d6565b946020939093013593505050565b600060208284031215613812578081fd5b8135611c03816142eb565b60006020828403121561382e578081fd5b8151611c03816142eb565b60008060006060848603121561384d578283fd5b61385684613691565b925061386460208501613691565b9150604084015163ffffffff8116811461387c578182fd5b809150509250925092565b600060208284031215613898578081fd5b5035919050565b6000602082840312156138b0578081fd5b5051919050565b600080604083850312156138c9578182fd5b82359150602083013561371e816142eb565b600080604083850312156138ed578182fd5b505080516020909101519092909150565b600080600080600060a08688031215613915578283fd5b853594506020860135935061392c604087016136a8565b94979396509394606081013594506080013592915050565b60008151808452815b818110156139695760208185018101518683018201520161394d565b8181111561397a5782602083870101525b50601f01601f19169290920160200192915050565b60008083546001808216600081146139ae57600181146139c5576139f4565b60ff198316865260028304607f16860193506139f4565b600283048786526020808720875b838110156139ec5781548a8201529085019082016139d3565b505050860193505b509195945050505050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b600060208252611c036020830184613944565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f59616b53747261746567793a3a6f6e6c79454f41000000000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526034908201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60408201527f6f20616c6c6f776564206465706f7369746f7273000000000000000000000000606082015260800190565b60208082526024908201527f417263683a3a76616c69646174655369673a20696e76616c6964207369676e6160408201527f7475726500000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f7200000000604082015260600190565b60208082526029908201527f4d617374657243686566537472617465677956313a3a7265736375654465706c60408201527f6f79656446756e64730000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d617374657243686566537472617465677956313a3a5452414e534645525f4660408201527f524f4d5f4641494c454400000000000000000000000000000000000000000000606082015260800190565b6020808252600f908201527f7065726d69743a3a657870697265640000000000000000000000000000000000604082015260600190565b6020808252601e908201527f4d617374657243686566537472617465677956313a3a77697468647261770000604082015260600190565b6020808252602a908201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60408201527f6f7420616c6c6f77656400000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4465784c6962726172793a3a5f636f6e76657274526577617264546f6b656e7360408201527f546f4465706f736974546f6b656e730000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d617374657243686566537472617465677956313a3a5f7374616b654465706f60408201527f736974546f6b656e730000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f5f617070726f76653a3a6f776e6572207a65726f206164647265737300000000604082015260600190565b60208082526034908201527f5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657260408201527f20746f20746865207a65726f2061646472657373000000000000000000000000606082015260800190565b60208082526025908201527f4d617374657243686566537472617465677956313a3a7472616e73666572206660408201527f61696c6564000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f736574416c6c6f77616e6365733a3a6465707265636174656400000000000000604082015260600190565b60208082526014908201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604082015260600190565b6020808252601e908201527f4d617374657243686566537472617465677956313a3a7265696e766573740000604082015260600190565b6020808252601e908201527f4d617374657243686566537472617465677956313a3a5f6465706f7369740000604082015260600190565b6020808252601e908201527f5f617070726f76653a3a7370656e646572207a65726f20616464726573730000604082015260600190565b6020808252818101527f4465784c6962726172793a3a5452414e534645525f46524f4d5f4641494c4544604082015260600190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b92835260208301919091526001600160a01b0316604082015260600190565b60008582528460208301526001600160a01b0384166040830152608060608301526142be6080830184613944565b9695505050505050565b60ff91909116815260200190565b6001600160a01b0381168114610ff757600080fd5b8015158114610ff757600080fdfe5f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c797472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e63655f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a2646970667358221220407ae8703ed071695c909b8dc237dd97e59ecba1140bceba0bc00fa6056a5feb64736f6c6343000703003353776170207061697220277377617050616972506f6f6c5265776172642720648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000bb700450811a30c5ee0db80925cf1ba53dbbd60a000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000060781c2586d68229fde47564546784ab3faca982000000000000000000000000d7538cabbf8605bde1f4901b47b8d42c61de03670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bb700450811a30c5ee0db80925cf1ba53dbbd60a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f806f7c8ded893fd3cae279191ad7aa3798e928000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000008d36c5c6947adccd25ef49ea1aac2ceacfff0bd7000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bc0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000001d5969656c642059616b3a2050616e676f6c696e204d4158492d41564158000000