[ { "inputs": [ { "internalType": "uint256", "name": "_KECCAK_SEED", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" } ], "name": "AllowanceExceeded", "type": "error" }, { "inputs": [], "name": "ApprovalFromZero", "type": "error" }, { "inputs": [], "name": "ApprovalToZero", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "name": "BalanceExceeded", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [], "name": "KeccakError", "type": "error" }, { "inputs": [], "name": "MaxBuy", "type": "error" }, { "inputs": [], "name": "MaxWallet", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [], "name": "TradingNotLive", "type": "error" }, { "inputs": [], "name": "TransferFromZero", "type": "error" }, { "inputs": [], "name": "TransferOfZero", "type": "error" }, { "inputs": [], "name": "TransferToZero", "type": "error" }, { "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": false, "internalType": "uint256", "name": "tokens", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokens", "type": "uint256" } ], "name": "FeeSwap", "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": "uint256", "name": "eth", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "success", "type": "bool" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "SendInsuranceFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokens", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "eth", "type": "uint256" } ], "name": "SendLiquidityFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "eth", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "success", "type": "bool" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "SendMarketingFee", "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" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "DEAD_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FACTORY", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ORACLE", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAIR", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ROUTER", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WETH", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WHIRL", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ZERO_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disableMaxBuy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disableMaxWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_key", "type": "string" }, { "internalType": "uint256", "name": "_contractTokenBalance", "type": "uint256" } ], "name": "extConvertWHIRLToETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_key", "type": "string" }, { "internalType": "uint256", "name": "_contractETHBalance", "type": "uint256" } ], "name": "extDistributeETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_key", "type": "string" }, { "internalType": "uint256", "name": "_contractTokenBalance", "type": "uint256" }, { "internalType": "uint256", "name": "_contractETHBalance", "type": "uint256" } ], "name": "extSupplyETHManual", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "contract IUniswapV2Factory", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBuyFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getETHPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFactory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getFeeWallets", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMarketCap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMaxBuy", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMaxWallet", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMinFeeSwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getOracle", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRouter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getSellFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWHIRLPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getWalletValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "insuranceFund", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidityFund", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "live", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketingFund", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxBuy", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxBuyEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWalletEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minFeeSwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oracle", "outputs": [ { "internalType": "contract AggregatorV3Interface", "name": "", "type": "address" } ], "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": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "router", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "startTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "tradingEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "weth", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
61026060405260056102209081526415da1a5c9b60da1b61024052600490620000299082620006da565b506200004067016345785d8a0000600019620007a6565b6200004e90600019620007df565b600955600a805462ffffff1916620101001790556001600b819055600c8190556002600d8190556000600e819055600f83905560108390556011919091556012556200009b9080620007f5565b601355601054600c54620000b09190620007f5565b601455601154600d54620000c59190620007f5565b601555601254600e54620000da9190620007f5565b601655600e54600d54600c54600b54620000f59190620007f5565b620001019190620007f5565b6200010d9190620007f5565b601755601254601154601054600f54620001289190620007f5565b620001349190620007f5565b620001409190620007f5565b6018556017546019556000601a55336101c08190526101e0819052610200523480156200016c57600080fd5b5060405162003af938038062003af98339810160408190526200018f916200080b565b600480546200019e9062000649565b80601f0160208091040260200160405190810160405280929190818152602001828054620001cc9062000649565b80156200021d5780601f10620001f1576101008083540402835291602001916200021d565b820191906000526020600020905b815481529060010190602001808311620001ff57829003601f168201915b50506040805180820190915260018152603160f81b602082015292503391508190506200026557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200027081620004b6565b506200027e82600162000506565b610120526200028f81600262000506565b61014052815160208084019190912060e052815190820120610100524660a0526200031d60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c08190526101a08190526040516364e329cb60e11b8152600481019190915273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26024820152735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9063c9c65396906044016020604051808303816000875af11580156200039c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c2919062000825565b6001600160a01b0390811661018052610160829052336000908152600860205260408082208054600160ff1991821681179092556101a051948516845291909220805490911690911790556200043090737a250d5630b4cf539739df2c5dacb4c659f2488d6000196200053f565b6200045333737a250d5630b4cf539739df2c5dacb4c659f2488d6000196200053f565b600954336000818152600560205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620004a79067016345785d8a0000815260200190565b60405180910390a350620008cd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208351101562000526576200051e83620005f0565b905062000539565b81620005338482620006da565b5060ff90505b92915050565b6001600160a01b0383166200056757604051633ec81b6d60e21b815260040160405180910390fd5b6001600160a01b0382166200058f576040516347242c1560e11b815260040160405180910390fd5b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080829050601f815111156200061e578260405163305a27a960e01b81526004016200025c919062000857565b80516200062b82620008a8565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200065e57607f821691505b6020821081036200067f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006d5576000816000526020600020601f850160051c81016020861015620006b05750805b601f850160051c820191505b81811015620006d157828155600101620006bc565b5050505b505050565b81516001600160401b03811115620006f657620006f662000633565b6200070e8162000707845462000649565b8462000685565b602080601f8311600181146200074657600084156200072d5750858301515b600019600386901b1c1916600185901b178555620006d1565b600085815260208120601f198616915b82811015620007775788860151825594840194600190910190840162000756565b5085821015620007965787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082620007c457634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b81810381811115620005395762000539620007c9565b80820180821115620005395762000539620007c9565b6000602082840312156200081e57600080fd5b5051919050565b6000602082840312156200083857600080fd5b81516001600160a01b03811681146200085057600080fd5b9392505050565b60006020808352835180602085015260005b81811015620008875785810183015185820160400152820162000869565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200067f5760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516130cb62000a2e6000396000818161064a015281816108b40152612106015260008181610622015281816109c20152611ba90152600081816105fd01528181610b2001528181610f87015281816114e701528181611b5c0152611c0d015260008181610b74015281816114bb0152818161183c0152818161187a015281816118c0015281816119a401528181611b07015281816120e10152818161226b0152818161231d0152818161250d0152612550015260008181610952015281816109f30152818161109301528181611107015281816113330152818161137f01526117ca015260008181610f1301528181610ffd0152611439015260006120870152600061205a01526000611e5101526000611e2901526000611d8401526000611dae01526000611dd801526130cb6000f3fe6080604052600436106103815760003560e01c80638b27278b116101cf578063b46a51a111610101578063dd62ed3e1161009a578063f2fde38b1161006c578063f2fde38b14610b42578063f887ea40146104dc578063f8b45b05146106c4578063fe797cfe14610b6257005b8063dd62ed3e14610a97578063e26ea3a414610add578063e5507f4e14610af6578063f256b13014610b0e57005b8063c45a0155116100d3578063c45a015514610480578063cf6c3e2c14610a37578063d045a32914610a57578063d505accf14610a7757005b8063b46a51a11461099b578063b7902303146109b0578063c1f1b1b5146109e4578063c34e480014610a1757005b806397eccf2a11610173578063a98a934a11610145578063a98a934a1461092b578063ace3a8a714610940578063ad5c464814610561578063b0f479a11461097457005b806397eccf2a146108a2578063a457c2d7146108d6578063a607a8d9146108f6578063a9059cbb1461090b57005b806390825c28116101ac57806390825c2814610832578063957aa58c1461084757806395d89b411461085f57806396790d4a1461088d57005b80638b27278b146107df5780638da5cb5b146107ff5780638f818b901461081d57005b806342966c68116102b357806376b35d811161024c578063831e41581161021e578063831e415814610749578063833b1fce1461076957806384b0196e1461079057806388cc58e4146107b857005b806376b35d81146106f457806379cc6790146107095780637dc0d1d0146105195780637ecebe001461072957005b8063538ba4f911610285578063538ba4f91461068f57806370a08231146106a457806370db69d6146106c4578063715018a6146106df57005b806342966c68146105a85780634ada218b146105c85780634aee3e9f146105e25780634e6fd6c41461067957005b80632dd310001161032557806338013f02116102f757806338013f021461051957806339509351146105415780633fc8cef314610561578063417fd2d61461058957005b80632dd3100014610480578063313ce567146104c057806332fe7b26146104dc5780633644e5151461050457005b806318160ddd1161035e57806318160ddd1461041157806323b872dd14610436578063289af0d814610456578063293230b81461046b57005b806306fdde031461038a578063095ea7b3146103b55780630fa604e4146103e557005b3661038857005b005b34801561039657600080fd5b5061039f610b96565b6040516103ac9190612a1b565b60405180910390f35b3480156103c157600080fd5b506103d56103d0366004612a51565b610c28565b60405190151581526020016103ac565b3480156103f157600080fd5b506103fa610c3f565b6040805192151583526020830191909152016103ac565b34801561041d57600080fd5b5067016345785d8a00005b6040519081526020016103ac565b34801561044257600080fd5b506103d5610451366004612a7b565b610c6e565b34801561046257600080fd5b50610428610cee565b34801561047757600080fd5b50610388610d10565b34801561048c57600080fd5b506104a8735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b6040516001600160a01b0390911681526020016103ac565b3480156104cc57600080fd5b50604051600981526020016103ac565b3480156104e857600080fd5b506104a8737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561051057600080fd5b50610428610d27565b34801561052557600080fd5b506104a8735f4ec3df9cbd43714fe2740f5e3616155c5b841981565b34801561054d57600080fd5b506103d561055c366004612a51565b610d31565b34801561056d57600080fd5b506104a873c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b34801561059557600080fd5b50600a546103d590610100900460ff1681565b3480156105b457600080fd5b506103886105c3366004612ab7565b610d68565b3480156105d457600080fd5b50600a546103d59060ff1681565b3480156105ee57600080fd5b50604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f000000000000000000000000000000000000000000000000000000000000000016918101919091526060016103ac565b34801561068557600080fd5b506104a861dead81565b34801561069b57600080fd5b506104a8600081565b3480156106b057600080fd5b506104286106bf366004612ad0565b610de8565b3480156106d057600080fd5b5061042866071afd498d000081565b3480156106eb57600080fd5b50610388610e0a565b34801561070057600080fd5b50610388610e1e565b34801561071557600080fd5b50610388610724366004612a51565b610e33565b34801561073557600080fd5b50610428610744366004612ad0565b610ef1565b34801561075557600080fd5b50610388610764366004612b34565b610f0f565b34801561077557600080fd5b50735f4ec3df9cbd43714fe2740f5e3616155c5b84196104a8565b34801561079c57600080fd5b506107a5610fb3565b6040516103ac9796959493929190612b80565b3480156107c457600080fd5b50735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f6104a8565b3480156107eb57600080fd5b506103886107fa366004612c19565b610ff9565b34801561080b57600080fd5b506000546001600160a01b03166104a8565b34801561082957600080fd5b50610428611078565b34801561083e57600080fd5b5061042861108b565b34801561085357600080fd5b50600a5460ff166103d5565b34801561086b57600080fd5b5060408051808201909152600581526415d212549360da1b602082015261039f565b34801561089957600080fd5b506103fa6111c3565b3480156108ae57600080fd5b506104a87f000000000000000000000000000000000000000000000000000000000000000081565b3480156108e257600080fd5b506103d56108f1366004612a51565b6111e0565b34801561090257600080fd5b50610428611279565b34801561091757600080fd5b506103d5610926366004612a51565b611308565b34801561093757600080fd5b50610388611315565b34801561094c57600080fd5b506104a87f000000000000000000000000000000000000000000000000000000000000000081565b34801561098057600080fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d6104a8565b3480156109a757600080fd5b5061042861132b565b3480156109bc57600080fd5b506104a87f000000000000000000000000000000000000000000000000000000000000000081565b3480156109f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104a8565b348015610a2357600080fd5b50610428610a32366004612ad0565b611418565b348015610a4357600080fd5b50610388610a52366004612b34565b611435565b348015610a6357600080fd5b50600a546103d59062010000900460ff1681565b348015610a8357600080fd5b50610388610a92366004612c6a565b61150c565b348015610aa357600080fd5b50610428610ab2366004612cdd565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610ae957600080fd5b5061042864174876e80081565b348015610b0257600080fd5b5064174876e800610428565b348015610b1a57600080fd5b506104a87f000000000000000000000000000000000000000000000000000000000000000081565b348015610b4e57600080fd5b50610388610b5d366004612ad0565b611646565b348015610b6e57600080fd5b506104a87f000000000000000000000000000000000000000000000000000000000000000081565b606060048054610ba590612d10565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd190612d10565b8015610c1e5780601f10610bf357610100808354040283529160200191610c1e565b820191906000526020600020905b815481529060010190602001808311610c0157829003601f168201915b5050505050905090565b6000610c35338484611684565b5060015b92915050565b600a54600090819062010000900460ff1680610c5d57600019610c66565b66071afd498d00005b915091509091565b6000610c7b848484611734565b6001600160a01b038416600090815260076020908152604080832033845290915290205480831115610ccf57604051635492412b60e11b815260048101849052602481018290526044015b60405180910390fd5b610ce38533610cde8685612d60565b611684565b506001949350505050565b6000610cf960125490565b610d01611d35565b610d0b9190612d73565b905090565b610d18611d4a565b600a805460ff19166001179055565b6000610d0b611d77565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610c35918590610cde908690612d73565b610d7133610de8565b811115610da45780610d8233610de8565b60405163f4dcf56b60e01b815260048101929092526024820152604401610cc6565b610db2336000836000611ea2565b6040518181527fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9060200160405180910390a150565b6001600160a01b038116600090815260056020526040812054610c3990611ec3565b610e12611d4a565b610e1c6000611f6a565b565b610e26611d4a565b600a805461ff0019169055565b610e3c82610de8565b811115610e4d5780610d8283610de8565b610e5b826000836000611ea2565b6001600160a01b038216600090815260076020908152604080832033845290915290205480821115610eaa57604051635492412b60e11b81526004810183905260248101829052604401610cc6565b610eb98333610cde8585612d60565b6040518281527fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9060200160405180910390a1505050565b6001600160a01b038116600090815260036020526040812054610c39565b82827f000000000000000000000000000000000000000000000000000000000000000060001b8282604051602001610f48929190612d86565b6040516020818303038152906040528051906020012014610f7c576040516323b369c560e21b815260040160405180910390fd5b8215610fac57610fac7f000000000000000000000000000000000000000000000000000000000000000084611fba565b5050505050565b600060608060008060006060610fc7612053565b610fcf612080565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b83837f000000000000000000000000000000000000000000000000000000000000000060001b8282604051602001611032929190612d86565b6040516020818303038152906040528051906020012014611066576040516323b369c560e21b815260040160405180910390fd5b61107084846120ad565b505050505050565b6000611083600e5490565b610d01612220565b6000806110b77f0000000000000000000000000000000000000000000000000000000000000000610de8565b905080156111bb576110d18167016345785d8a0000612dac565b6110dd60096002612dc0565b6110e890600a612ec7565b6110f0611279565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa158015611168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118c9190612ed6565b6111969190612eef565b6111a09190612dac565b6111aa9190612eef565b6111b5906002612eef565b91505090565b600091505090565b600a546000908190610100900460ff1680610c5d57600019610c66565b3360009081526007602090815260408083206001600160a01b0386168452909152812054828110156112625760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610cc6565b61126f3385858403611684565b5060019392505050565b600080735f4ec3df9cbd43714fe2740f5e3616155c5b84196001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156112ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f29190612f20565b5050509150506305f5e100816111b59190612f70565b6000610c35338484611734565b61131d611d4a565b600a805462ff000019169055565b6000806113577f0000000000000000000000000000000000000000000000000000000000000000610de8565b905080156111bb5780611368611279565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa1580156113e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114049190612ed6565b61140e9190612eef565b6111b59190612dac565b600061142261132b565b61142b83610de8565b610c399190612eef565b82827f000000000000000000000000000000000000000000000000000000000000000060001b828260405160200161146e929190612d86565b60405160208183030381529060405280519060200120146114a2576040516323b369c560e21b815260040160405180910390fd5b82156114b1576114b183612235565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016318015611070576110707f000000000000000000000000000000000000000000000000000000000000000082611fba565b834211156115305760405163313c898160e11b815260048101859052602401610cc6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861157d8c6001600160a01b0316600090815260036020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006115d8826123cb565b905060006115e8828787876123f8565b9050896001600160a01b0316816001600160a01b03161461162f576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610cc6565b61163a8a8a8a611684565b50505050505050505050565b61164e611d4a565b6001600160a01b03811661167857604051631e4fbdf760e01b815260006004820152602401610cc6565b61168181611f6a565b50565b6001600160a01b0383166116ab57604051633ec81b6d60e21b815260040160405180910390fd5b6001600160a01b0382166116d2576040516347242c1560e11b815260040160405180910390fd5b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661175b5760405163f38f85c360e01b815260040160405180910390fd5b6001600160a01b0382166117825760405163a38ca3d960e01b815260040160405180910390fd5b806000036117a35760405163ef4f660360e01b815260040160405180910390fd5b6117ac83610de8565b8111156117bd5780610d8284610de8565b6001600160a01b038381167f00000000000000000000000000000000000000000000000000000000000000008216908114918416146118046000546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561183357506000546001600160a01b03858116911614155b801561187157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156118af57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b15611c3c57600a5460ff16611910577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614611910576040516302b7c73360e01b815260040160405180910390fd5b600a54610100900460ff16156119475766071afd498d00008311156119475760405162a2a6e360e51b815260040160405180910390fd5b8015801561195d5750600a5462010000900460ff165b1561199d5766071afd498d00008361197486610de8565b61197e9190612d73565b111561199d57604051630949534d60e31b815260040160405180910390fd5b60006119c87f0000000000000000000000000000000000000000000000000000000000000000610de8565b905064174876e80081101580156119e95750600a546301000000900460ff16155b80156119f3575082155b8015611a1857506001600160a01b03861660009081526008602052604090205460ff16155b8015611a3d57506001600160a01b03851660009081526008602052604090205460ff16155b15611c3a576000611a4c611d35565b611a54612220565b611a5e9190612d73565b90508015611c385760008160135484611a779190612eef565b611a819190612dac565b905060008260145485611a949190612eef565b611a9e9190612dac565b9050600081611aad8487612d60565b611ab79190612d60565b90506000611ac6600283612dac565b600a805464ff0000000019166401000000001790559050611aef611aea8286612d73565b612235565b600a805464ff00000000191690556001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016318015611c32578515611c085760008660135483611b459190612eef565b611b4f9190612dac565b90508015611b8157611b817f000000000000000000000000000000000000000000000000000000000000000082611fba565b60008760145484611b929190612eef565b611b9c9190612dac565b90508015611bce57611bce7f000000000000000000000000000000000000000000000000000000000000000082611fba565b600081611bdb8486612d60565b611be59190612d60565b90508015611c0057611c00611bfa8688612d60565b826120ad565b505050611c32565b611c327f000000000000000000000000000000000000000000000000000000000000000082611fba565b50505050505b505b505b6001600160a01b03851660009081526008602052604090205460019060ff1680611c7e57506001600160a01b03851660009081526008602052604090205460ff165b80611c90575082158015611c90575081155b15611c9d57506000611d29565b828015611cc757506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611ce357611cd4612220565b601955600e545b601a55611d29565b818015611d0d57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611d2557611d1a611d35565b601955601254611cdb565b5060005b61107086868684611ea2565b6000601154601054600f54610d019190612d73565b6000546001600160a01b03163314610e1c5760405163118cdaa760e01b8152336004820152602401610cc6565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611dd057507f000000000000000000000000000000000000000000000000000000000000000046145b15611dfa57507f000000000000000000000000000000000000000000000000000000000000000090565b610d0b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b80611eb25760006019819055601a555b611ebd848484612426565b50505050565b6000600954821115611ed457600080fd5b600a5465010000000000900460ff16158015611efb5750600a54640100000000900460ff16155b8015611f105750600a546301000000900460ff165b611f2b57611f1c612622565b611f269083612dac565b610c39565b611f3760096002612dc0565b611f4290600a612ec7565b611f4e6009600a612ec7565b611f589190612eef565b611f60612622565b610c399190612dac565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080836001600160a01b03168360405160006040518083038185875af1925050503d8060008114612008576040519150601f19603f3d011682016040523d82523d6000602084013e61200d565b606091505b50915091507ffceb7297ad5adaa14c4d67ff8ca5ea354d440bf53fdcf8e387f80dffbc6777ec83838360405161204593929190612f9e565b60405180910390a150505050565b6060610d0b7f0000000000000000000000000000000000000000000000000000000000000000600161263a565b6060610d0b7f0000000000000000000000000000000000000000000000000000000000000000600261263a565b600a805465ff00ff000000191665010001000000179055737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d719827f0000000000000000000000000000000000000000000000000000000000000000856000807f000000000000000000000000000000000000000000000000000000000000000061213142610708612d73565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af115801561219e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121c39190612fc8565b5050600a805465ff0000000000191690555060408051838152602081018390527f255bf213400477e336cd345f579495e48d7fe558c06f79c351ef9c323e9e550b91015b60405180910390a15050600a805463ff00000019169055565b6000600d54600c54600b54610d019190612d73565b600a805463ff000000191663010000001790556040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061229d5761229d612ff6565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106122e5576122e5612ff6565b6001600160a01b0390921660209283029190910190910152737a250d5630b4cf539739df2c5dacb4c659f2488d63791ac947836000847f000000000000000000000000000000000000000000000000000000000000000061234842610708612d73565b6040518663ffffffff1660e01b815260040161236895949392919061300c565b600060405180830381600087803b15801561238257600080fd5b505af1158015612396573d6000803e3d6000fd5b505050507f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b878260405161220791815260200190565b6000610c396123d8611d77565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061240a888888886126e5565b92509250925061241a82826127b4565b50909695505050505050565b600a546301000000900460ff1615806124495750600a54640100000000900460ff165b8061245f5750600a5465010000000000900460ff165b156125dd57600080600080600061247586612871565b6001600160a01b038e16600090815260056020526040902054959a5093985091965094509092506124a891879150612d60565b6001600160a01b03808a1660009081526005602052604080822093909355908916815220546124d8908590612d73565b6001600160a01b0388166000908152600560205260409020556124f9612622565b6125039082612eef565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600560205260409020546125469190612d73565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660009081526005602052604090205560095461258d908490612d60565b6009556040518281526001600160a01b0380891691908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161172791815260200190565b600067016345785d8a0000600954610d0b9190612dac565b606060ff83146126545761264d836128c6565b9050610c39565b81805461266090612d10565b80601f016020809104026020016040519081016040528092919081815260200182805461268c90612d10565b80156126d95780601f106126ae576101008083540402835291602001916126d9565b820191906000526020600020905b8154815290600101906020018083116126bc57829003601f168201915b50505050509050610c39565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561272057506000915060039050826127aa565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612774573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166127a0575060009250600191508290506127aa565b9250600091508190505b9450945094915050565b60008260038111156127c8576127c861307f565b036127d1575050565b60018260038111156127e5576127e561307f565b036128035760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156128175761281761307f565b036128385760405163fce698f760e01b815260048101829052602401610cc6565b600382600381111561284c5761284c61307f565b0361286d576040516335e2f38360e21b815260048101829052602401610cc6565b5050565b600080600080600080600080600061288e8a601a54601954612905565b92509250925060008060006128ac8d86866128a7612622565b61295e565b919f909e50909c50959a5093985091965092945050505050565b606060006128d3836129ad565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600080808060646129168789612eef565b6129209190612dac565b905060006064612930878a612eef565b61293a9190612dac565b905080612947838a612d60565b6129519190612d60565b9891975095509350505050565b600080808061296d8589612eef565b9050600061297b8689612eef565b9050816129888789612eef565b6129928385612d60565b61299c9190612d60565b909a90995090975095505050505050565b600060ff8216601f811115610c3957604051632cd44ac360e21b815260040160405180910390fd5b6000815180845260005b818110156129fb576020818501810151868301820152016129df565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000612a2e60208301846129d5565b9392505050565b80356001600160a01b0381168114612a4c57600080fd5b919050565b60008060408385031215612a6457600080fd5b612a6d83612a35565b946020939093013593505050565b600080600060608486031215612a9057600080fd5b612a9984612a35565b9250612aa760208501612a35565b9150604084013590509250925092565b600060208284031215612ac957600080fd5b5035919050565b600060208284031215612ae257600080fd5b612a2e82612a35565b60008083601f840112612afd57600080fd5b50813567ffffffffffffffff811115612b1557600080fd5b602083019150836020828501011115612b2d57600080fd5b9250929050565b600080600060408486031215612b4957600080fd5b833567ffffffffffffffff811115612b6057600080fd5b612b6c86828701612aeb565b909790965060209590950135949350505050565b60ff60f81b881681526000602060e06020840152612ba160e084018a6129d5565b8381036040850152612bb3818a6129d5565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015612c0757835183529284019291840191600101612beb565b50909c9b505050505050505050505050565b60008060008060608587031215612c2f57600080fd5b843567ffffffffffffffff811115612c4657600080fd5b612c5287828801612aeb565b90989097506020870135966040013595509350505050565b600080600080600080600060e0888a031215612c8557600080fd5b612c8e88612a35565b9650612c9c60208901612a35565b95506040880135945060608801359350608088013560ff81168114612cc057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215612cf057600080fd5b612cf983612a35565b9150612d0760208401612a35565b90509250929050565b600181811c90821680612d2457607f821691505b602082108103612d4457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610c3957610c39612d4a565b80820180821115610c3957610c39612d4a565b8183823760009101908152919050565b634e487b7160e01b600052601260045260246000fd5b600082612dbb57612dbb612d96565b500490565b60ff8181168382160290811690818114612ddc57612ddc612d4a565b5092915050565b600181815b80851115612e1e578160001904821115612e0457612e04612d4a565b80851615612e1157918102915b93841c9390800290612de8565b509250929050565b600082612e3557506001610c39565b81612e4257506000610c39565b8160018114612e585760028114612e6257612e7e565b6001915050610c39565b60ff841115612e7357612e73612d4a565b50506001821b610c39565b5060208310610133831016604e8410600b8410161715612ea1575081810a610c39565b612eab8383612de3565b8060001904821115612ebf57612ebf612d4a565b029392505050565b6000612a2e60ff841683612e26565b600060208284031215612ee857600080fd5b5051919050565b8082028115828204841417610c3957610c39612d4a565b805169ffffffffffffffffffff81168114612a4c57600080fd5b600080600080600060a08688031215612f3857600080fd5b612f4186612f06565b9450602086015193506040860151925060608601519150612f6460808701612f06565b90509295509295909350565b600082612f7f57612f7f612d96565b600160ff1b821460001984141615612f9957612f99612d4a565b500590565b8381528215156020820152606060408201526000612fbf60608301846129d5565b95945050505050565b600080600060608486031215612fdd57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b8181101561305e5784516001600160a01b031683529383019391830191600101613039565b50506001600160a01b03969096166060850152505050608001529392505050565b634e487b7160e01b600052602160045260246000fdfea26469706673582212205fe089d1c9f6ce5b1d4d0847855a0da525d134451c9385c715b8e4e935106aca64736f6c63430008170033d8afe1c66252cc93792010b8432e17501ccecb68d6d68c7e1008a02c4fad6208