[ { "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" } ]
60e0604052600960a0819052685969656c642059616b60b81b60c09081526200002c916000919062001643565b506040805180820190915260038082526216549560ea1b6020909201918252620000599160019162001643565b503480156200006757600080fd5b50604051620061f0380380620061f08339810160408190526200008a91620017fb565b8888888888888789888888888888600001518960200151898989896000620000b76200026860201b60201c565b600680546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620061d0833981519152908290a3508951620001099060009060208d019062001643565b50600980546001600160a01b03808c166001600160a01b031992831617909255600a80548b84169083161790556080849052600b80548216732d580f9cf2fb2d09bc411532988f2afda4e7beff1790556012805492871692909116919091179055620001778888886200026c565b6200018285620004e8565b80516200018f90620006fd565b60208101516200019f9062000785565b6040810151620001af9062000853565b6060810151620001bf906200090d565b620001cb6001620009c7565b620001d68362000a6f565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2346000806040516200020a92919062001949565b60405180910390a1505050505050505050506200022f85888862000b2960201b60201c565b5050601980546001600160a01b0319166001600160a01b039c909c169b909b17909a555062001ce39d5050505050505050505050505050565b3390565b826001600160a01b0316826001600160a01b031614620004b957806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c057600080fd5b505afa158015620002d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fb9190620017de565b6001600160a01b0316826001600160a01b03161415620003cc57826001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035957600080fd5b505afa1580156200036e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003949190620017de565b6001600160a01b031614620003c65760405162461bcd60e51b8152600401620003bd9062001a87565b60405180910390fd5b620004b9565b806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040657600080fd5b505afa1580156200041b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004419190620017de565b6001600160a01b0316826001600160a01b031614156200049f57826001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035957600080fd5b60405162461bcd60e51b8152600401620003bd90620019d4565b601380546001600160a01b039384166001600160a01b0319918216179091556014805492909316911617905550565b6001600160a01b03811615620006dd57600a5460408051630dfe168160e01b815290516001600160a01b0392831692841691630dfe1681916004808301926020929190829003018186803b1580156200054057600080fd5b505afa15801562000555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057b9190620017de565b6001600160a01b031614156200062657806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620005c557600080fd5b505afa158015620005da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006009190620017de565b601680546001600160a01b0319166001600160a01b0392909216919091179055620006bc565b806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200066057600080fd5b505afa15801562000675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200069b9190620017de565b601680546001600160a01b0319166001600160a01b03929092169190911790555b601580546001600160a01b0319166001600160a01b038316179055620006fa565b601580546001600160a01b03199081169091556016805490911690555b50565b6200070762000268565b6001600160a01b03166200071a62001605565b6001600160a01b031614620007435760405162461bcd60e51b8152600401620003bd9062001b87565b7f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100600c54826040516200077892919062001949565b60405180910390a1600c55565b6200078f62000268565b6001600160a01b0316620007a262001605565b6001600160a01b031614620007cb5760405162461bcd60e51b8152600401620003bd9062001b87565b61271062000805600f54620007f1601154856200161460201b62001bde1790919060201c565b6200161460201b62001bde1790919060201c565b11156200081157600080fd5b7f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a601054826040516200084692919062001949565b60405180910390a1601055565b6200085d62000268565b6001600160a01b03166200087062001605565b6001600160a01b031614620008995760405162461bcd60e51b8152600401620003bd9062001b87565b612710620008bf600f54620007f1601054856200161460201b62001bde1790919060201c565b1115620008cb57600080fd5b7f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131601154826040516200090092919062001949565b60405180910390a1601155565b6200091762000268565b6001600160a01b03166200092a62001605565b6001600160a01b031614620009535760405162461bcd60e51b8152600401620003bd9062001b87565b61271062000979601154620007f1601054856200161460201b62001bde1790919060201c565b11156200098557600080fd5b7fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2600f5482604051620009ba92919062001949565b60405180910390a1600f55565b620009d162000268565b6001600160a01b0316620009e462001605565b6001600160a01b03161462000a0d5760405162461bcd60e51b8152600401620003bd9062001b87565b600e5460ff161515811515141562000a2457600080fd5b600e805460ff19168215151790556040517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859062000a649083906200193e565b60405180910390a150565b62000a7962000268565b6001600160a01b031662000a8c62001605565b6001600160a01b03161462000ab55760405162461bcd60e51b8152600401620003bd9062001b87565b6001600160a01b03811662000ade5760405162461bcd60e51b8152600401620003bd9062001957565b6006546040516001600160a01b03808416921690600080516020620061d083398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000b7857600080fd5b505afa15801562000b8d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bb39190620017de565b6001600160a01b0316826001600160a01b03161415801562000c705750600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801562000c1f57600080fd5b505afa15801562000c34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c5a9190620017de565b6001600160a01b0316826001600160a01b031614155b156200132e5760408301516001600160a01b031662000ca35760405162461bcd60e51b8152600401620003bd9062001b3e565b60608301516001600160a01b031662000cd05760405162461bcd60e51b8152600401620003bd9062001c19565b604083810151601780546001600160a01b03199081166001600160a01b0393841617918290556060870151601880549092169084161790558251630dfe168160e01b81529251858316939190921691630dfe168191600480820192602092909190829003018186803b15801562000d4657600080fd5b505afa15801562000d5b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d819190620017de565b6001600160a01b0316148062000e1f57506017546040805163d21220a760e01b815290516001600160a01b0380861693169163d21220a7916004808301926020929190829003018186803b15801562000dd957600080fd5b505afa15801562000dee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e149190620017de565b6001600160a01b0316145b62000e3e5760405162461bcd60e51b8152600401620003bd9062001ad3565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000e8d57600080fd5b505afa15801562000ea2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ec89190620017de565b6001600160a01b0316601760009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000f2057600080fd5b505afa15801562000f35573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f5b9190620017de565b6001600160a01b03161480620010945750600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000fbb57600080fd5b505afa15801562000fd0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ff69190620017de565b6001600160a01b0316601760009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200104e57600080fd5b505afa15801562001063573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010899190620017de565b6001600160a01b0316145b620010b35760405162461bcd60e51b8152600401620003bd9062001bbc565b600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200110257600080fd5b505afa15801562001117573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200113d9190620017de565b6001600160a01b0316601860009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200119557600080fd5b505afa158015620011aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011d09190620017de565b6001600160a01b03161480620013095750600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200123057600080fd5b505afa15801562001245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126b9190620017de565b6001600160a01b0316601860009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620012c357600080fd5b505afa158015620012d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012fe9190620017de565b6001600160a01b0316145b620013285760405162461bcd60e51b8152600401620003bd9062001c62565b620014c1565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200137d57600080fd5b505afa15801562001392573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013b89190620017de565b6001600160a01b0316826001600160a01b03161415620013fa57600954601880546001600160a01b0319166001600160a01b03909216919091179055620014c1565b600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200144957600080fd5b505afa1580156200145e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014849190620017de565b6001600160a01b0316826001600160a01b03161415620014c157600954601780546001600160a01b0319166001600160a01b039092169190911790555b82600001516001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620014ff57600080fd5b505afa15801562001514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200153a9190620017de565b6001600160a01b0316816001600160a01b031614156200160057816001600160a01b031683600001516001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200159c57600080fd5b505afa158015620015b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015d79190620017de565b6001600160a01b031614620016005760405162461bcd60e51b8152600401620003bd9062001a2a565b505050565b6006546001600160a01b031690565b6000828201838110156200163c5760405162461bcd60e51b8152600401620003bd906200199d565b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200168657805160ff1916838001178555620016b6565b82800160010185558215620016b6579182015b82811115620016b657825182559160200191906001019062001699565b50620016c4929150620016c8565b5090565b5b80821115620016c45760008155600101620016c9565b80516001600160a01b0381168114620016f757600080fd5b919050565b6000608082840312156200170e578081fd5b604051608081016001600160401b03811182821017156200172b57fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201525092915050565b6000608082840312156200176e578081fd5b604051608081016001600160401b03811182821017156200178b57fe5b6040529050806200179c83620016df565b8152620017ac60208401620016df565b6020820152620017bf60408401620016df565b6040820152620017d260608401620016df565b60608201525092915050565b600060208284031215620017f0578081fd5b6200163c82620016df565b60008060008060008060008060006101e08a8c0312156200181a578485fd5b89516001600160401b038082111562001831578687fd5b818c0191508c601f83011262001845578687fd5b8151818111156200185257fe5b602091506200186a601f8201601f1916830162001cbf565b8181528e838386010111156200187e578889fd5b885b828110156200189d57848101840151828201850152830162001880565b82811115620018ae57898484840101525b509b50620018c090508c8201620016df565b99505050620018d260408b01620016df565b9650620018e260608b01620016df565b9550620018f38b60808c016200175c565b9450620019046101008b01620016df565b93506101208a015192506200191d6101408b01620016df565b91506200192f8b6101608c01620016fc565b90509295985092959850929598565b901515815260200190565b918252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252604190820152600080516020620061b083398151915260408201527f6f6573206e6f7420636f6e7461696e20706f6f6c2072657761726420746f6b656060820152603760f91b608082015260a00190565b6020808252603a908201527f537761702070616972207377617050616972506f6f6c52657761726420646f6560408201527f73206e6f7420636f6e7461696e2072657761726420746f6b656e000000000000606082015260800190565b6020808252603f90820152600080516020620061b083398151915260408201527f6f6573206e6f7420636f6e7461696e2065636f73797374656d20746f6b656e00606082015260800190565b60208082526045908201527f53776170207061697220737570706c69656420646f6573206e6f74206861766560408201527f207468652072657761726420746f6b656e206173206f6e65206f662069742773606082015264103830b4b960d91b608082015260a00190565b60208082526029908201527f5377617020706169722030206973206e656365737361727920627574206e6f74604082015268081cdd5c1c1b1a595960ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526038908201527f537761702070616972203020737570706c69656420646f6573206e6f74206d6160408201527f74636820746865207061697220696e207175657374696f6e0000000000000000606082015260800190565b60208082526029908201527f5377617020706169722031206973206e656365737361727920627574206e6f74604082015268081cdd5c1c1b1a595960ba1b606082015260800190565b60208082526038908201527f537761702070616972203120737570706c69656420646f6573206e6f74206d6160408201527f74636820746865207061697220696e207175657374696f6e0000000000000000606082015260800190565b6040518181016001600160401b038111828210171562001cdb57fe5b604052919050565b60805161448562001d2b600039806107d352806109825280610d675280610f0852806115805280611e99528061215a528061264752806129525280612bf552506144856000f3fe608060405234801561001057600080fd5b50600436106103a45760003560e01c80638aff733d116101e9578063bd079f551161010f578063dd62ed3e116100ad578063ed24911d1161007c578063ed24911d146106e9578063f2fde38b146106f1578063f7c618c114610704578063fdb5a03e1461070c576103a4565b8063dd62ed3e1461069d578063dd8ce4d6146106b0578063e21ac825146106c3578063eab89a5a146106d6576103a4565b8063cff1b6ef116100e9578063cff1b6ef14610667578063d505accf1461067a578063da09c72c1461068d578063dbd9a4d414610695576103a4565b8063bd079f551461064f578063c4b24a4614610657578063c89039c51461065f576103a4565b80639e4e731811610187578063ac0d31ff11610156578063ac0d31ff14610619578063b52a321f1461062c578063b6b55f2514610634578063b9e57b8014610647576103a4565b80639e4e7318146105e3578063a1a4ddeb146105eb578063a8ae2b7c146105f3578063a9059cbb14610606576103a4565b8063909ac8f4116101c3578063909ac8f4146105ad5780639291d563146105b557806395d89b41146105c857806399729ec1146105d0576103a4565b80638aff733d1461058a5780638b73e606146105925780638da5cb5b146105a5576103a4565b80634bebd1e7116102ce578063715018a61161026c5780637ecebe001161023b5780637ecebe001461053e57806381837230146105515780638432e894146105645780638980f11f14610577576103a4565b8063715018a614610513578063789139bc1461051b5780637ae26773146105235780637d88209714610536576103a4565b80635e5eee1b116102a85780635e5eee1b146104e85780635ea682ea146104f05780635eaec0e4146104f857806370a0823114610500576103a4565b80634bebd1e7146104af5780634e77ace5146104c25780634ebb7916146104d5576103a4565b80632e1a7d4d116103465780633bdc6e72116103155780633bdc6e721461046c5780634005760a14610474578063483c2ef0146104895780634a970be71461049c576103a4565b80632e1a7d4d146104275780632f4f21e21461043c57806330adf81f1461044f578063313ce56714610457576103a4565b80630f23475d116103825780630f23475d146103fc57806318160ddd1461040457806320606b701461040c57806323b872dd14610414576103a4565b806306fdde03146103a957806307677111146103c7578063095ea7b3146103dc575b600080fd5b6103b1610714565b6040516103be9190613c1e565b60405180910390f35b6103cf6107a2565b6040516103be9190613b97565b6103ef6103ea366004613881565b6107a8565b6040516103be9190613b8c565b6103cf6107bf565b6103cf61082b565b6103cf610831565b6103ef6104223660046137d4565b610855565b61043a610435366004613932565b61093c565b005b61043a61044a366004613881565b610a29565b6103cf610a37565b61045f610a5b565b6040516103be9190614373565b6103cf610a60565b61047c610a66565b6040516103be9190613ae0565b6103ef610497366004613764565b610a75565b61043a6104aa3660046139a9565b610a8a565b61043a6104bd366004613764565b610b22565b61043a6104d03660046138ac565b610c06565b61043a6104e3366004613932565b610ca4565b61047c610d50565b6103cf610d5f565b6103cf610d65565b6103cf61050e366004613764565b610d89565b61043a610da8565b6103cf610e31565b61043a61053136600461379c565b610e37565b6103cf610f00565b6103cf61054c366004613764565b610f33565b61043a61055f366004613932565b610f45565b61043a610572366004613764565b610fc4565b61043a610585366004613881565b610ffa565b6103cf61110c565b61043a6105a0366004613764565b611112565b61047c611218565b61047c611227565b61043a6105c3366004613764565b611236565b6103b16112c9565b61043a6105de366004613932565b611323565b6103cf6113d1565b61047c6113f5565b61043a610601366004613932565b611404565b6103ef610614366004613881565b6114ac565b61043a610627366004613962565b6114b9565b6103ef6116c0565b61043a610642366004613932565b6116c9565b6103cf6116d3565b6103cf611714565b6103cf61171a565b61047c61172e565b61043a610675366004613932565b61173d565b61043a610688366004613814565b6117e5565b61047c61189a565b61043a6118a9565b6103cf6106ab36600461379c565b611900565b6103cf6106be366004613932565b61192b565b61043a6106d1366004613932565b611965565b6103cf6106e4366004613932565b6119e4565b6103cf611a15565b61043a6106ff366004613764565b611aac565b61047c611b6d565b61043a611b7c565b6000805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561079a5780601f1061076f5761010080835404028352916020019161079a565b820191906000526020600020905b81548152906001019060200180831161077d57829003601f168201915b505050505081565b60105481565b60006107b5338484611c0a565b5060015b92915050565b6000806107ca610f00565b905060006107f77f0000000000000000000000000000000000000000000000000000000000000000611cbe565b90506000610816610806611cc4565b6108108585611cca565b90611d04565b90506108228382611d46565b93505050505b90565b60025481565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6001600160a01b03831660008181526003602090815260408083203380855292528220549192909190821480159061088f57506000198114155b156109255760006108bb856040518060600160405280602f81526020016143cc602f9139849190611d84565b6001600160a01b03808916600081815260036020908152604080832094891680845294909152908190208490555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061091b908590613b97565b60405180910390a3505b610930868686611db0565b50600195945050505050565b6000610947826119e4565b9050600081116109725760405162461bcd60e51b815260040161096990613ede565b60405180910390fd5b61097b81611e94565b60006109a67f0000000000000000000000000000000000000000000000000000000000000000611cbe565b905060006109b5610806611cc4565b6009549091506109d8906001600160a01b0316336109d38685611d46565b611ebe565b6109e23385611f5f565b336001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436484604051610a1b9190613b97565b60405180910390a250505050565b610a338282612039565b5050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60075481565b6019546001600160a01b031681565b60086020526000908152604090205460ff1681565b6009546040517fd505accf0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d505accf90610adf90339030908a908a908a908a908a90600401613b18565b600060405180830381600087803b158015610af957600080fd5b505af1158015610b0d573d6000803e3d6000fd5b50505050610b1b3386612039565b5050505050565b610b2a6121e7565b6001600160a01b0316610b3b611218565b6001600160a01b031614610b615760405162461bcd60e51b815260040161096990614089565b6001600160a01b03811660009081526008602052604090205460ff1615610b9a5760405162461bcd60e51b815260040161096990613db6565b6001600160a01b0381166000908152600860205260409020805460ff19166001908117909155600754610bcc91611bde565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b610c0e6121e7565b6001600160a01b0316610c1f611218565b6001600160a01b031614610c455760405162461bcd60e51b815260040161096990614089565b600e5460ff1615158115151415610c5b57600080fd5b600e805460ff19168215151790556040517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e8590610c99908390613b8c565b60405180910390a150565b610cac6121e7565b6001600160a01b0316610cbd611218565b6001600160a01b031614610ce35760405162461bcd60e51b815260040161096990614089565b60008111610cf057600080fd5b604051339082156108fc029083906000818181858888f19350505050158015610d1d573d6000803e3d6000fd5b507f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28600082604051610c99929190613b59565b601a546001600160a01b031681565b60115481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600460205260409020545b919050565b610db06121e7565b6001600160a01b0316610dc1611218565b6001600160a01b031614610de75760405162461bcd60e51b815260040161096990614089565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b600d5481565b610e3f6121e7565b6001600160a01b0316610e50611218565b6001600160a01b031614610e765760405162461bcd60e51b815260040161096990614089565b60405163095ea7b360e01b81526001600160a01b0383169063095ea7b390610ea5908490600090600401613b59565b602060405180830381600087803b158015610ebf57600080fd5b505af1158015610ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef791906138c8565b610a3357600080fd5b600080610f2d7f0000000000000000000000000000000000000000000000000000000000000000306121eb565b91505090565b60056020526000908152604090205481565b610f4d6121e7565b6001600160a01b0316610f5e611218565b6001600160a01b031614610f845760405162461bcd60e51b815260040161096990614089565b7f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100600c5482604051610fb792919061430e565b60405180910390a1600c55565b600b546001600160a01b03163314610fee5760405162461bcd60e51b8152600401610969906141e6565b610ff78161228e565b50565b6110026121e7565b6001600160a01b0316611013611218565b6001600160a01b0316146110395760405162461bcd60e51b815260040161096990614089565b6000811161104657600080fd5b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb906110749033908590600401613b59565b602060405180830381600087803b15801561108e57600080fd5b505af11580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c691906138c8565b6110cf57600080fd5b7f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288282604051611100929190613b59565b60405180910390a15050565b600f5481565b61111a6121e7565b6001600160a01b031661112b611218565b6001600160a01b0316146111515760405162461bcd60e51b815260040161096990614089565b6000600754116111735760405162461bcd60e51b815260040161096990613cfc565b6001600160a01b03811660009081526008602052604090205460ff1615156001146111b05760405162461bcd60e51b815260040161096990613f15565b6001600160a01b0381166000908152600860205260409020805460ff191690556007546111de906001611d46565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b6006546001600160a01b031690565b6015546001600160a01b031681565b600b546001600160a01b031633146112605760405162461bcd60e51b8152600401610969906141e6565b600b546040517fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c009161129f916001600160a01b03909116908490613b72565b60405180910390a1600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561079a5780601f1061076f5761010080835404028352916020019161079a565b61132b6121e7565b6001600160a01b031661133c611218565b6001600160a01b0316146113625760405162461bcd60e51b815260040161096990614089565b612710611386600f5461138060105485611bde90919063ffffffff16565b90611bde565b111561139157600080fd5b7f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131601154826040516113c492919061430e565b60405180910390a1601155565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b6016546001600160a01b031681565b61140c6121e7565b6001600160a01b031661141d611218565b6001600160a01b0316146114435760405162461bcd60e51b815260040161096990614089565b61271061146160115461138060105485611bde90919063ffffffff16565b111561146c57600080fd5b7fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2600f548260405161149f92919061430e565b60405180910390a1600f55565b60006107b5338484611db0565b6114c16121e7565b6001600160a01b03166114d2611218565b6001600160a01b0316146114f85760405162461bcd60e51b815260040161096990614089565b6009546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611529903090600401613ae0565b60206040518083038186803b15801561154157600080fd5b505afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611579919061394a565b90506115a47f00000000000000000000000000000000000000000000000000000000000000006124ab565b6009546040516370a0823160e01b81526000916001600160a01b0316906370a08231906115d5903090600401613ae0565b60206040518083038186803b1580156115ed57600080fd5b505afa158015611601573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611625919061394a565b9050836116328284611d46565b10156116505760405162461bcd60e51b815260040161096990613ded565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234611679610f00565b60025460405161168a92919061430e565b60405180910390a1600e5460ff16151560011480156116ab57506001831515145b156116ba576116ba6000610c06565b50505050565b600e5460ff1681565b610ff73382612039565b6000806116de61171a565b9050600c54811061170c57611704612710610810600f5484611cca90919063ffffffff16565b915050610828565b600091505090565b600c5481565b6000806117256125b2565b94505050505090565b6009546001600160a01b031681565b6117456121e7565b6001600160a01b0316611756611218565b6001600160a01b03161461177c5760405162461bcd60e51b815260040161096990614089565b61271061179a600f5461138060115485611bde90919063ffffffff16565b11156117a557600080fd5b7f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a601054826040516117d892919061430e565b60405180910390a1601055565b428410156118055760405162461bcd60e51b815260040161096990613ea7565b6001600160a01b03871660009081526005602090815260408083208054600181019091559051611860927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92918c9101613ba0565b6040516020818303038152906040528051906020012090506118858882868686612873565b611890888888611c0a565b5050505050505050565b600b546001600160a01b031681565b6118b16121e7565b6001600160a01b03166118c2611218565b6001600160a01b0316146118e85760405162461bcd60e51b815260040161096990614089565b60405162461bcd60e51b8152600401610969906141af565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6000611941611938610f00565b60025490611cca565b61194c575080610da3565b6107b9611957610f00565b600254610810908590611cca565b61196d6121e7565b6001600160a01b031661197e611218565b6001600160a01b0316146119a45760405162461bcd60e51b815260040161096990614089565b7fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f600d54826040516119d792919061430e565b60405180910390a1600d55565b60006119f1611938610f00565b6119fd57506000610da3565b6107b9600254610810611a0e610f00565b8590611cca565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b6000604051611a4a9190613a3a565b6040519081900390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6611a7c612949565b30604051602001611a91959493929190613bd4565b60405160208183030381529060405280519060200120905090565b611ab46121e7565b6001600160a01b0316611ac5611218565b6001600160a01b031614611aeb5760405162461bcd60e51b815260040161096990614089565b6001600160a01b038116611b115760405162461bcd60e51b815260040161096990613c31565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031681565b323314611b9b5760405162461bcd60e51b815260040161096990613c8e565b600080600080611ba96125b2565b9350935093509350600c54811015611bd35760405162461bcd60e51b81526004016109699061421d565b6116ba82858561294d565b600082820183811015611c035760405162461bcd60e51b815260040161096990613cc5565b9392505050565b6001600160a01b038316611c305760405162461bcd60e51b8152600401610969906140be565b6001600160a01b038216611c565760405162461bcd60e51b81526004016109699061428b565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611cb1908590613b97565b60405180910390a3505050565b50600090565b61271090565b600082611cd9575060006107b9565b82820282848281611ce657fe5b0414611c035760405162461bcd60e51b81526004016109699061402c565b6000611c0383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a94565b6000611c0383836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152505b60008184841115611da85760405162461bcd60e51b81526004016109699190613c1e565b505050900390565b6001600160a01b038216611dd65760405162461bcd60e51b8152600401610969906140f5565b611e13816040518060600160405280602e8152602001614422602e91396001600160a01b0386166000908152600460205260409020549190611d84565b6001600160a01b038085166000908152600460205260408082209390935590841681522054611e429082611bde565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cb1908590613b97565b610ff77f000000000000000000000000000000000000000000000000000000000000000082612acb565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90611eec9085908590600401613b59565b602060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3e91906138c8565b611f5a5760405162461bcd60e51b815260040161096990613e4a565b505050565b611f9c816040518060600160405280602781526020016143fb602791396001600160a01b0385166000908152600460205260409020549190611d84565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550611fec816040518060600160405280602781526020016143a5602791396002549190611d84565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061202d908590613b97565b60405180910390a35050565b600e5460ff1615156001146120605760405162461bcd60e51b815260040161096990614254565b600d5415612098576000806000806120766125b2565b9350935093509350600d548111156120935761209382858561294d565b505050505b6009546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906323b872dd906120e590339030908690600401613af4565b602060405180830381600087803b1580156120ff57600080fd5b505af1158015612113573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213791906138c8565b6121535760405162461bcd60e51b815260040161096990614152565b600061217e7f0000000000000000000000000000000000000000000000000000000000000000611cbe565b9050600061218d610806611cc4565b90506121a5846121a06106be8685611d46565b612b4e565b6121ae83612bd0565b836001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c84604051610a1b9190613b97565b3390565b6019546040517f93f1a40b0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906393f1a40b9061223790869086906004016142f7565b604080518083038186803b15801561224e57600080fd5b505afa158015612262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122869190613986565b509392505050565b6001600160a01b0381161561248c57600a54604080517f0dfe168100000000000000000000000000000000000000000000000000000000815290516001600160a01b0392831692841691630dfe1681916004808301926020929190829003018186803b1580156122fd57600080fd5b505afa158015612311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123359190613780565b6001600160a01b031614156123da57806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561237d57600080fd5b505afa158015612391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b59190613780565b601680546001600160a01b0319166001600160a01b039290921691909117905561246c565b806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561241357600080fd5b505afa158015612427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244b9190613780565b601680546001600160a01b0319166001600160a01b03929092169190911790555b601580546001600160a01b0319166001600160a01b038316179055610ff7565b601580546001600160a01b031990811690915560168054909116905550565b6019546040517f2f940c700000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690632f940c70906124f690849030906004016142f7565b600060405180830381600087803b15801561251057600080fd5b505af1158015612524573d6000803e3d6000fd5b505060095460195460405163095ea7b360e01b81526001600160a01b03928316945063095ea7b393506125609290911690600090600401613b59565b602060405180830381600087803b15801561257a57600080fd5b505af115801561258e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3391906138c8565b6013546040516370a0823160e01b815260009182918291829182916001600160a01b0316906370a08231906125eb903090600401613ae0565b60206040518083038186803b15801561260357600080fd5b505afa158015612617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263b919061394a565b9050600080600061266c7f000000000000000000000000000000000000000000000000000000000000000030612c1a565b91945092509050600061267f8585611bde565b600a546013549192506000916001600160a01b03908116911614156126a457846126c9565b601354600a546014546126c99285926001600160a01b03918216929082169116612cc8565b905060006001600160a01b038416156127c8576001600160a01b03841673b31f66aa3c1e785363f0875a1b74e27b85fd66c714156127085750836127c8565b6015546001600160a01b0316156127c8576016546040516370a0823160e01b81526127a2916001600160a01b0316906370a082319061274b903090600401613ae0565b60206040518083038186803b15801561276357600080fd5b505afa158015612777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279b919061394a565b8690611bde565b600a546015549196506127c591879187916001600160a01b039182169116612cc8565b90505b600a546040516370a0823160e01b815260009161284f9184916001600160a01b0316906370a08231906127ff903090600401613ae0565b60206040518083038186803b15801561281757600080fd5b505afa15801561282b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611380919061394a565b9050600061285d8285611bde565b949d969c50909a50929850939650505050505050565b600061287d611a15565b8560405160200161288f929190613aaa565b6040516020818303038152906040528051906020012090506000600182868686604051600081526020016040526040516128cc9493929190613c00565b6020604051602081039080840390855afa1580156128ee573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906129245750866001600160a01b0316816001600160a01b0316145b6129405760405162461bcd60e51b815260040161096990613d59565b50505050505050565b4690565b6129767f0000000000000000000000000000000000000000000000000000000000000000612d95565b600061298b61298484612e0e565b8590611bde565b90506129a161299a8584612e56565b8290611bde565b5060006129bf61271061081060115485611cca90919063ffffffff16565b905080156129e457600a54600b546129e4916001600160a01b03908116911683611ebe565b6000612a01612710610810600f5486611cca90919063ffffffff16565b90508015612a2057600a54612a20906001600160a01b03163383611ebe565b6000612a3e612a3983612a338787611d46565b90611d46565b612fa9565b9050612a4981612bd0565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234612a72610f00565b600254604051612a8392919061430e565b60405180910390a150505050505050565b60008183612ab55760405162461bcd60e51b81526004016109699190613c1e565b506000838581612ac157fe5b0495945050505050565b6019546040517f0ad58d2f0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690630ad58d2f90612b189085908590309060040161431c565b600060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050505050565b600254612b5b9082611bde565b6002556001600160a01b038216600090815260046020526040902054612b819082611bde565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061202d908590613b97565b60008111612bf05760405162461bcd60e51b815260040161096990613fcf565b610ff77f000000000000000000000000000000000000000000000000000000000000000082612fd8565b6019546040517f98969e82000000000000000000000000000000000000000000000000000000008152600091829182916001600160a01b0316906398969e8290612c6a90889088906004016142f7565b60206040518083038186803b158015612c8257600080fd5b505afa158015612c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cba919061394a565b956000955085945092505050565b600080612cd585856130ae565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612d1457600080fd5b505afa158015612d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4c91906138e4565b5091509150866001600160a01b0316836001600160a01b031614612d6c57905b612d8988836001600160701b0316836001600160701b03166130df565b98975050505050505050565b6019546040517f18fccc760000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906318fccc7690612de090849030906004016142f7565b600060405180830381600087803b158015612dfa57600080fd5b505af1158015610b1b573d6000803e3d6000fd5b601354600a546000916001600160a01b0391821691161415612e31575080610da3565b601354600a546014546107b99285926001600160a01b03918216929082169116613127565b60008115612fa0576015546001600160a01b031615612e9b57601654600a54601554612e949285926001600160a01b03918216929082169116613127565b90506107b9565b478015612f0b5773b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612ef157600080fd5b505af1158015612f05573d6000803e3d6000fd5b50505050505b6040516370a0823160e01b8152612f9890859073b31f66aa3c1e785363f0875a1b74e27b85fd66c7906370a0823190612f48903090600401613ae0565b60206040518083038186803b158015612f6057600080fd5b505afa158015612f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a33919061394a565b9150506107b9565b50600092915050565b600a546009546017546018546000936107b99386936001600160a01b03928316939183169290811691166132ba565b60095460195460405163095ea7b360e01b81526001600160a01b039283169263095ea7b39261300e929116908590600401613b59565b602060405180830381600087803b15801561302857600080fd5b505af115801561303c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306091906138c8565b506019546040517f8dbdbe6d0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638dbdbe6d90612b189085908590309060040161431c565b600080826001600160a01b0316846001600160a01b0316106130d15782846130d4565b83835b915091509250929050565b6000806130ee856103e5611cca565b905060006130fc8285611cca565b9050600061311083611380886103e8611cca565b905061311c8282611d04565b979650505050505050565b60008061313485856130ae565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561317357600080fd5b505afa158015613187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ab91906138e4565b5091509150866001600160a01b0316836001600160a01b0316146131cb57905b6000806131eb8a856001600160701b0316856001600160701b03166130df565b9050886001600160a01b0316856001600160a01b03161461320857905b61321389888c613434565b604080516000815260208101918290527f022c0d9f000000000000000000000000000000000000000000000000000000009091526001600160a01b0388169063022c0d9f9061326b908590859030906024810161433b565b600060405180830381600087803b15801561328557600080fd5b505af1158015613299573d6000803e3d6000fd5b505050508181116132aa57816132ac565b805b9a9950505050505050505050565b6000806132c8876002611d04565b9050600081116132ea5760405162461bcd60e51b815260040161096990613f72565b6000856001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561332557600080fd5b505afa158015613339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335d9190613780565b9050816001600160a01b03888116908316146133825761337f83898489613127565b90505b6000876001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156133bd57600080fd5b505afa1580156133d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f59190613780565b9050836001600160a01b038a81169083161461341a57613417858b848a613127565b90505b6134258984836134d0565b9b9a5050505050505050505050565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906134629085908590600401613b59565b602060405180830381600087803b15801561347c57600080fd5b505af1158015613490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b491906138c8565b611f5a5760405162461bcd60e51b8152600401610969906142c2565b6000806000856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561350e57600080fd5b505afa158015613522573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354691906138e4565b5091509150600061356a86846001600160701b0316846001600160701b0316613724565b9050848111156135975784905061359485836001600160701b0316856001600160701b0316613724565b95505b613612876001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156135d357600080fd5b505afa1580156135e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360b9190613780565b8888613434565b61368d876001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561364e57600080fd5b505afa158015613662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136869190613780565b8883613434565b6040517f6a6278420000000000000000000000000000000000000000000000000000000081526001600160a01b03881690636a627842906136d2903090600401613ae0565b602060405180830381600087803b1580156136ec57600080fd5b505af1158015613700573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311c919061394a565b6000613734836108108685611cca565b949350505050565b80516001600160701b0381168114610da357600080fd5b803560ff81168114610da357600080fd5b600060208284031215613775578081fd5b8135611c0381614381565b600060208284031215613791578081fd5b8151611c0381614381565b600080604083850312156137ae578081fd5b82356137b981614381565b915060208301356137c981614381565b809150509250929050565b6000806000606084860312156137e8578081fd5b83356137f381614381565b9250602084013561380381614381565b929592945050506040919091013590565b600080600080600080600060e0888a03121561382e578283fd5b873561383981614381565b9650602088013561384981614381565b9550604088013594506060880135935061386560808901613753565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613893578182fd5b823561389e81614381565b946020939093013593505050565b6000602082840312156138bd578081fd5b8135611c0381614396565b6000602082840312156138d9578081fd5b8151611c0381614396565b6000806000606084860312156138f8578283fd5b6139018461373c565b925061390f6020850161373c565b9150604084015163ffffffff81168114613927578182fd5b809150509250925092565b600060208284031215613943578081fd5b5035919050565b60006020828403121561395b578081fd5b5051919050565b60008060408385031215613974578182fd5b8235915060208301356137c981614396565b60008060408385031215613998578182fd5b505080516020909101519092909150565b600080600080600060a086880312156139c0578283fd5b85359450602086013593506139d760408701613753565b94979396509394606081013594506080013592915050565b60008151808452815b81811015613a14576020818501810151868301820152016139f8565b81811115613a255782602083870101525b50601f01601f19169290920160200192915050565b6000808354600180821660008114613a595760018114613a7057613a9f565b60ff198316865260028304607f1686019350613a9f565b600283048786526020808720875b83811015613a975781548a820152908501908201613a7e565b505050860193505b509195945050505050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b600060208252611c0360208301846139ef565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f59616b53747261746567793a3a6f6e6c79454f41000000000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526034908201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60408201527f6f20616c6c6f776564206465706f7369746f7273000000000000000000000000606082015260800190565b60208082526024908201527f417263683a3a76616c69646174655369673a20696e76616c6964207369676e6160408201527f7475726500000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f7200000000604082015260600190565b60208082526029908201527f4d617374657243686566537472617465677956313a3a7265736375654465706c60408201527f6f79656446756e64730000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d617374657243686566537472617465677956313a3a5452414e534645525f4660408201527f524f4d5f4641494c454400000000000000000000000000000000000000000000606082015260800190565b6020808252600f908201527f7065726d69743a3a657870697265640000000000000000000000000000000000604082015260600190565b6020808252601e908201527f4d617374657243686566537472617465677956313a3a77697468647261770000604082015260600190565b6020808252602a908201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60408201527f6f7420616c6c6f77656400000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4465784c6962726172793a3a5f636f6e76657274526577617264546f6b656e7360408201527f546f4465706f736974546f6b656e730000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d617374657243686566537472617465677956313a3a5f7374616b654465706f60408201527f736974546f6b656e730000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f5f617070726f76653a3a6f776e6572207a65726f206164647265737300000000604082015260600190565b60208082526034908201527f5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657260408201527f20746f20746865207a65726f2061646472657373000000000000000000000000606082015260800190565b60208082526025908201527f4d617374657243686566537472617465677956313a3a7472616e73666572206660408201527f61696c6564000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f736574416c6c6f77616e6365733a3a6465707265636174656400000000000000604082015260600190565b60208082526014908201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604082015260600190565b6020808252601e908201527f4d617374657243686566537472617465677956313a3a7265696e766573740000604082015260600190565b6020808252601e908201527f4d617374657243686566537472617465677956313a3a5f6465706f7369740000604082015260600190565b6020808252601e908201527f5f617070726f76653a3a7370656e646572207a65726f20616464726573730000604082015260600190565b6020808252818101527f4465784c6962726172793a3a5452414e534645525f46524f4d5f4641494c4544604082015260600190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b92835260208301919091526001600160a01b0316604082015260600190565b60008582528460208301526001600160a01b03841660408301526080606083015261436960808301846139ef565b9695505050505050565b60ff91909116815260200190565b6001600160a01b0381168114610ff757600080fd5b8015158114610ff757600080fdfe5f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c797472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e63655f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a26469706673582212205d12d89b8f1d1a5d9eec4f565a52d46ac8f9f9ccf459c3110302ed0f61bca78c64736f6c6343000703003353776170207061697220277377617050616972506f6f6c5265776172642720648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000bced3b6d759b9ca8fc7706e46aa81627b2e9eae8000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000060781c2586d68229fde47564546784ab3faca982000000000000000000000000d7538cabbf8605bde1f4901b47b8d42c61de036700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bced3b6d759b9ca8fc7706e46aa81627b2e9eae80000000000000000000000001f806f7c8ded893fd3cae279191ad7aa3798e9280000000000000000000000000000000000000000000000000000000000000035000000000000000000000000302404cb8f34713a8b8dbf9b4989a41252332068000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bc0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000001c5969656c642059616b3a2050616e676f6c696e205455532d4156415800000000