[ { "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": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "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": "sniperAddress", "type": "address" } ], "name": "SniperCaught", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensSwapped", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "quoteReceived", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensIntoLiqudity", "type": "uint256" } ], "name": "SwapAndLiquify", "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" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_pullOnlyBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_purchasedTotal", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_purchasedTotalPause", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "t", "type": "bool" } ], "name": "_setSniperProtection", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "_swapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_sweepEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "ret", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "sAmount", "type": "uint256" } ], "name": "calcUnscaledAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "campaignPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimAVAX", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "communityWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "dexPair", "outputs": [ { "internalType": "contract IGenericPair", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dexRouter", "outputs": [ { "internalType": "contract IGenericAVAXRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "endOn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "excludeFromReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "lockedAmount", "type": "uint256" }, { "internalType": "uint256", "name": "quoteBalance", "type": "uint256" } ], "name": "finalizeLaunch", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getScalingFactor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "i", "type": "uint256" } ], "name": "holders", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "holdersCount", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "min", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" }, { "internalType": "uint256", "name": "maxq", "type": "uint256" }, { "internalType": "uint256", "name": "maxTBps", "type": "uint256" }, { "internalType": "uint256", "name": "maxQBps", "type": "uint256" }, { "internalType": "uint256", "name": "maxT", "type": "uint256" }, { "internalType": "bool", "name": "doSwap", "type": "bool" }, { "internalType": "bool", "name": "doSweep", "type": "bool" } ], "name": "housekeeping", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "includeInReward", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromFee", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromReward", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isSniper", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "launchedOn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidityDrive", "outputs": [ { "internalType": "contract SpearLiquidityDrive", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerSwapAndLiquify", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minPerSwapAndLiquify", "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": "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": "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": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "quoteToken", "outputs": [ { "internalType": "contract IGenericToken", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "quoteTreasuryWallet", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "recordedPurchases", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tAmount", "type": "uint256" } ], "name": "reflect", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reinit6", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeSniper", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "buyFromPool", "type": "bool" }, { "internalType": "uint256", "name": "inflatePerc", "type": "uint256" } ], "name": "restoreLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "t", "type": "bool" } ], "name": "setFeeExcluded", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "swapLowWater_", "type": "uint256" }, { "internalType": "uint256", "name": "sweepMaxQ_", "type": "uint256" }, { "internalType": "uint256", "name": "sweepMaxT_", "type": "uint256" } ], "name": "setHousekeepingAmounts", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "sweepQMax_", "type": "uint256" }, { "internalType": "uint256", "name": "swapTMax_", "type": "uint256" } ], "name": "setHousekeepingBps", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "swapEnabled_", "type": "bool" }, { "internalType": "bool", "name": "sweepEnabled_", "type": "bool" } ], "name": "setHousekeepingEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "min", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "name": "setMinMaxSwapAndLiquify", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "e", "type": "uint256" } ], "name": "setSniperBlockEnd", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "t", "type": "bool" } ], "name": "setSniperProtection", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "pt", "type": "uint256" }, { "internalType": "uint256", "name": "ptp", "type": "uint256" }, { "internalType": "uint256", "name": "pob", "type": "uint256" } ], "name": "setTotals", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "snipersCaught", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "startedOn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "teamLocker", "outputs": [ { "internalType": "contract SpearTeamLocker", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "teamWallet", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "transactionFeeLiquidityPerc", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transactionFeePercBasis", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transactionFeeRewardPerc", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "ret", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "ret", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "dexRouter_", "type": "address" } ], "name": "updateRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526000805461ff001916815560018181556002829055600a829055600b91909155600c805460ff191690911790553480156200003e57600080fd5b506200004a33620000c2565b6127106109606109c4606462000063816113246200025e565b6200006f91906200025e565b6200007b91906200025e565b6200008791906200025e565b148015620000a357506103e8620000a16101f4806200025e565b145b620000b257620000b262000285565b620000bc62000120565b6200029b565b600c80546001600160a01b0383811663010000008181026301000000600160b81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200012c60ff6200012f565b50565b600c5460009062010000900460ff1615620001cb578160ff1660011480156200016b575062000169306200024f60201b620026201760201c565b155b620001c35760405162461bcd60e51b815260206004820152602e60248201526000805160206200510883398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b506000919050565b600c5460ff80841661010090920416106200022f5760405162461bcd60e51b815260206004820152602e60248201526000805160206200510883398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620001ba565b50600c805460ff9092166101000261ff0019909216919091179055600190565b6001600160a01b03163b151590565b600082198211156200028057634e487b7160e01b600052601160045260246000fd5b500190565b634e487b7160e01b600052600160045260246000fd5b614e5d80620002ab6000396000f3fe6080604052600436106104075760003560e01c80637435a8ec11610213578063c757483911610123578063df05eef5116100ab578063f242ab411161007a578063f242ab4114610ca4578063f2fde38b14610cc4578063f5b20b0814610ce4578063fb75b2c714610cfa578063ff098f5c14610d1a57600080fd5b8063df05eef514610c4d578063df2f61b014610c63578063df6d21f114610c78578063e79d416014610c8e57600080fd5b8063ccba0e15116100f2578063ccba0e1514610b91578063cd940c6814610bb1578063d0a6478114610bd1578063d505accf14610be7578063dd62ed3e14610c0757600080fd5b8063c757483914610b1b578063c851cc3214610b3b578063c9f1f47f14610b5b578063cb07ae1914610b7b57600080fd5b80638e1dd6f1116101a6578063a9059cbb11610175578063a9059cbb14610a77578063ac8c2ba714610a97578063b43b3ab514610ab7578063b6ef4e5514610ad7578063bc7be4a314610b0557600080fd5b80638e1dd6f114610a0c57806395d89b4114610a2c57806397d4289a14610a41578063a457c2d714610a5757600080fd5b806383f78928116101e257806383f789281461097757806388f82020146109975780638adc22bc146109d05780638da5cb5b146109e657600080fd5b80637435a8ec1461090257806378368238146109225780637ecebe001461093757806380bc99cb1461095757600080fd5b8063313ce5671161031957806352390c02116102a157806369d3cac71161027057806369d3cac7146108695780636b4ed21b146108895780636bb59aa2146108b357806370a08231146108cd578063715018a6146108ed57600080fd5b806352390c02146107d05780635342acb4146107f0578063548256b714610829578063599270441461084957600080fd5b80633685d419116102e85780633685d41914610730578063395093511461075057806339e5362c146107705780634600712b146107865780634e19d34c146107a657600080fd5b8063313ce567146106be57806333251a0b146106da57806336161bb7146106fa5780633644e5151461071a57600080fd5b80630f3a325f1161039c57806318160ddd1161036b57806318160ddd14610615578063217a4b701461062a57806323b872dd1461064a5780632a11ced01461066a57806330adf81f1461068a57600080fd5b80630f3a325f1461059b57806313114a9d146105d457806314e09c7f146105e957806317ae7e1a146105ff57600080fd5b806306fdde03116103d857806306fdde03146104f25780630758d92414610514578063095ea7b31461054c57806309afb3ce1461057c57600080fd5b806205e96514610472578062b214ec1461049b578063053ab182146104b25780630638c05d146104d257600080fd5b3661046d5760405162461bcd60e51b815260206004820152602b60248201527f446f206e6f742073656e642066756e6473206469726563746c7920746f20746860448201526a1a5cc818dbdb9d1c9858dd60aa1b60648201526084015b60405180910390fd5b600080fd5b34801561047e57600080fd5b5061048860225481565b6040519081526020015b60405180910390f35b3480156104a757600080fd5b506104b0610d3a565b005b3480156104be57600080fd5b506104b06104cd3660046146a3565b610dc0565b3480156104de57600080fd5b506104b06104ed3660046146bc565b610eb4565b3480156104fe57600080fd5b50610507610eee565b60405161049291906146de565b34801561052057600080fd5b50600454610534906001600160a01b031681565b6040516001600160a01b039091168152602001610492565b34801561055857600080fd5b5061056c610567366004614748565b610f80565b6040519015158152602001610492565b34801561058857600080fd5b5060005461056c90610100900460ff1681565b3480156105a757600080fd5b5061056c6105b6366004614774565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156105e057600080fd5b50601654610488565b3480156105f557600080fd5b5061048860255481565b34801561060b57600080fd5b5061048860015481565b34801561062157600080fd5b50610488610f97565b34801561063657600080fd5b50600554610534906001600160a01b031681565b34801561065657600080fd5b5061056c610665366004614791565b610fb9565b34801561067657600080fd5b506105346106853660046146a3565b611080565b34801561069657600080fd5b506104887f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b3480156106ca57600080fd5b5060405160098152602001610492565b3480156106e657600080fd5b506104b06106f5366004614774565b6110e5565b34801561070657600080fd5b506104b06107153660046147e0565b6111aa565b34801561072657600080fd5b50610488602e5481565b34801561073c57600080fd5b506104b061074b366004614774565b611822565b34801561075c57600080fd5b5061056c61076b366004614748565b6119e0565b34801561077c57600080fd5b5061048860205481565b34801561079257600080fd5b506104b06107a13660046146a3565b611a17565b3480156107b257600080fd5b506107bb611a52565b60408051928352602083019190915201610492565b3480156107dc57600080fd5b506104b06107eb366004614774565b611aaa565b3480156107fc57600080fd5b5061056c61080b366004614774565b6001600160a01b031660009081526012602052604090205460ff1690565b34801561083557600080fd5b50601a54610534906001600160a01b031681565b34801561085557600080fd5b50601d54610534906001600160a01b031681565b34801561087557600080fd5b506104b06108843660046146bc565b611c05565b34801561089557600080fd5b5061089e611c42565b60405163ffffffff9091168152602001610492565b3480156108bf57600080fd5b50602a5461056c9060ff1681565b3480156108d957600080fd5b506104886108e8366004614774565b611c7e565b3480156108f957600080fd5b506104b0611cdd565b34801561090e57600080fd5b5061048861091d3660046146a3565b611d1b565b34801561092e57600080fd5b5061056c611d9f565b34801561094357600080fd5b50610488610952366004614774565b611e24565b34801561096357600080fd5b50601c54610534906001600160a01b031681565b34801561098357600080fd5b506104b0610992366004614807565b611e42565b3480156109a357600080fd5b5061056c6109b2366004614774565b6001600160a01b031660009081526013602052604090205460ff1690565b3480156109dc57600080fd5b5061048860065481565b3480156109f257600080fd5b50610534600c54630100000090046001600160a01b031690565b348015610a1857600080fd5b50600854610534906001600160a01b031681565b348015610a3857600080fd5b50610507611ea1565b348015610a4d57600080fd5b5061048860185481565b348015610a6357600080fd5b5061056c610a72366004614748565b611eb0565b348015610a8357600080fd5b5061056c610a92366004614748565b611f4b565b348015610aa357600080fd5b506104b0610ab2366004614840565b611f6a565b348015610ac357600080fd5b506104b0610ad236600461486c565b611faa565b348015610ae357600080fd5b506104b0610af2366004614906565b600c805460ff1916911515919091179055565b348015610b1157600080fd5b50610488601b5481565b348015610b2757600080fd5b50601e54610534906001600160a01b031681565b348015610b4757600080fd5b506104b0610b56366004614774565b61208e565b348015610b6757600080fd5b506104b0610b76366004614923565b61212d565b348015610b8757600080fd5b5061048860195481565b348015610b9d57600080fd5b506104b0610bac366004614840565b61218a565b348015610bbd57600080fd5b5061056c610bcc3660046146bc565b6121ca565b348015610bdd57600080fd5b50610488602c5481565b348015610bf357600080fd5b506104b0610c02366004614941565b612320565b348015610c1357600080fd5b50610488610c223660046149b8565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b348015610c5957600080fd5b5061048860215481565b348015610c6f57600080fd5b50610488612533565b348015610c8457600080fd5b5061048860175481565b348015610c9a57600080fd5b50610488600b5481565b348015610cb057600080fd5b50600354610534906001600160a01b031681565b348015610cd057600080fd5b506104b0610cdf366004614774565b61253d565b348015610cf057600080fd5b5061048860025481565b348015610d0657600080fd5b50601f54610534906001600160a01b031681565b348015610d2657600080fd5b506104b0610d35366004614906565b6125dd565b600c546001600160a01b036301000000909104163314610d6c5760405162461bcd60e51b8152600401610464906149e6565b610d85600c54630100000090046001600160a01b031690565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610dbd573d6000803e3d6000fd5b50565b3360008181526013602052604090205460ff1615610e395760405162461bcd60e51b815260206004820152603060248201527f4f6e6c79206164647265737365732070617274696369706174696e6720696e2060448201526f3932bbb0b932399030b63637bbb2b21760811b6064820152608401610464565b6000610e4361262f565b610e4d9084614a31565b6001600160a01b0383166000908152600f6020526040902054909150610e74908290614a50565b6001600160a01b0383166000908152600f6020526040902055601554610e9b908290614a50565b601555601654610eac908490614a67565b601655505050565b600c546001600160a01b036301000000909104163314610ee65760405162461bcd60e51b8152600401610464906149e6565b602655602755565b6060600d8054610efd90614a7f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2990614a7f565b8015610f765780601f10610f4b57610100808354040283529160200191610f76565b820191906000526020600020905b815481529060010190602001808311610f5957829003601f168201915b5050505050905090565b6000610f8d338484612652565b5060015b92915050565b6000610fa56009600a614b97565b610fb49064e8d4a51000614a31565b905090565b600033610fc584612776565b610fd0858585612873565b6001600160a01b03808616600090815260116020908152604080832093851683529290522054838110156110575760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610464565b61106b86836110668785614a50565b612652565b61107486612a9b565b50600195945050505050565b600c546000906001600160a01b0363010000009091041633146110b55760405162461bcd60e51b8152600401610464906149e6565b602382815481106110c8576110c8614ba6565b6000918252602090912001546001600160a01b031690505b919050565b600c546001600160a01b0363010000009091041633146111175760405162461bcd60e51b815260040161046490614bbc565b6001600160a01b03811660009081526009602052604090205460ff166111895760405162461bcd60e51b815260206004820152602160248201527f4163636f756e74206973206e6f742061207265636f7264656420736e697065726044820152601760f91b6064820152608401610464565b6001600160a01b03166000908152600960205260409020805460ff19169055565b600c546001600160a01b0363010000009091041633146111dc5760405162461bcd60e51b8152600401610464906149e6565b60008054602a5460ff6101009092048216929116906111fb9080611e42565b600061120630611c7e565b90506000602c5460295461121a9190614a67565b82111561124257602c546029546112319190614a67565b61123b9083614a50565b9150611247565b600091505b8561133257600080600360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156112a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c69190614bfd565b506007546001600160701b0392831694509116915060ff16156112e557905b6112f0898383612c04565b925086156113115760646113048885614a31565b61130e9190614c4d565b92505b8284101561132b57611324848284612c04565b985061132f565b8293505b50505b6005546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139f9190614c6f565b600854600554604051630d172a0160e01b81526001600160a01b039182166004820152306024820152604481018c90529293501690630d172a0190606401600060405180830381600087803b1580156113f757600080fd5b505af115801561140b573d6000803e3d6000fd5b50506005546040516370a0823160e01b81523060048201528493506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015611459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147d9190614c6f565b6114879190614a50565b90508781146114c35760405162461bcd60e51b81526020600482015260086024820152670dad2e6dac2e8c6d60c31b6044820152606401610464565b86156116f957604080516002808252606082018352600092602083019080368337505060055482519293506001600160a01b03169183915060009061150a5761150a614ba6565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061153e5761153e614ba6565b6001600160a01b0390921660209283029190910190910152611561600283614c4d565b6005546004805460405163095ea7b360e01b81526001600160a01b03918216928101929092526024820184905292945091169063095ea7b3906044016020604051808303816000875af11580156115bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e09190614c88565b506004546007546001600160a01b0391821691635c11d7959185916000918691620100009091041661161342603c614a67565b6040518663ffffffff1660e01b8152600401611633959493929190614ca5565b600060405180830381600087803b15801561164d57600080fd5b505af1158015611661573d6000803e3d6000fd5b5050600754604051630f41a04d60e11b8152306004820152620100009091046001600160a01b03169250631e83409a9150602401600060405180830381600087803b1580156116af57600080fd5b505af11580156116c3573d6000803e3d6000fd5b5050505083602c546029546116d730611c7e565b6116e19190614a50565b6116eb9190614a50565b6116f59190614a50565b9350505b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117669190614c6f565b905061177130611c7e565b925061177d8483612cc6565b61178630611c7e565b6117909084614a50565b6003546040516370a0823160e01b815230600482015291945082916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156117dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118019190614c6f565b61180b9190614a50565b90506118178686611e42565b505050505050505050565b600c546001600160a01b0363010000009091041633146118545760405162461bcd60e51b8152600401610464906149e6565b6001600160a01b03811660009081526013602052604090205460ff166118bc5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610464565b60005b6014548110156119dc57816001600160a01b0316601482815481106118e6576118e6614ba6565b6000918252602090912001546001600160a01b0316036119ca576014805461191090600190614a50565b8154811061192057611920614ba6565b600091825260209091200154601480546001600160a01b03909216918390811061194c5761194c614ba6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152601082526040808220829055601390925220805460ff1916905560148054806119a4576119a4614d16565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806119d481614d2c565b9150506118bf565b5050565b3360008181526011602090815260408083206001600160a01b03871684529091528120549091610f8d918590611066908690614a67565b600c546001600160a01b036301000000909104163314611a495760405162461bcd60e51b815260040161046490614bbc565b610dbd81600a55565b600080336001600160a01b0316611a78600c54630100000090046001600160a01b031690565b6001600160a01b031614611a9e5760405162461bcd60e51b8152600401610464906149e6565b50506006546025549091565b600c546001600160a01b036301000000909104163314611adc5760405162461bcd60e51b8152600401610464906149e6565b6001600160a01b03811660009081526013602052604090205460ff1615611b455760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610464565b6001600160a01b0381166000908152600f602052604090205415611b9f576001600160a01b0381166000908152600f6020526040902054611b8590611d1b565b6001600160a01b0382166000908152601060205260409020555b6001600160a01b03166000818152601360205260408120805460ff191660019081179091556014805491820181559091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b0319169091179055565b600c546001600160a01b036301000000909104163314611c375760405162461bcd60e51b8152600401610464906149e6565b600191909155600255565b600c546000906001600160a01b036301000000909104163314611c775760405162461bcd60e51b8152600401610464906149e6565b5060235490565b6001600160a01b03811660009081526013602052604081205460ff1615611cbb57506001600160a01b031660009081526010602052604090205490565b6001600160a01b0382166000908152600f6020526040902054610f9190611d1b565b600c546001600160a01b036301000000909104163314611d0f5760405162461bcd60e51b8152600401610464906149e6565b611d196000612e5d565b565b6000601554821115611d825760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610464565b6000611d8c61262f565b9050611d988184614c4d565b9392505050565b600060066000611dae82612ebb565b90508015611dc857600c805462ff00001916620100001790555b6000602c819055602b55600192508015611e1f57600c805462ff00001916905560405160ff831681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505090565b6001600160a01b0381166000908152602d6020526040812054610f91565b600c546001600160a01b036301000000909104163314611e745760405162461bcd60e51b8152600401610464906149e6565b6000805461ff0019166101009315159390930292909217909155602a805460ff1916911515919091179055565b6060600e8054610efd90614a7f565b3360009081526011602090815260408083206001600160a01b038616845290915281205482811015611f325760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610464565b611f4133856110668685614a50565b5060019392505050565b6000611f5683612776565b611f61338484612873565b610f8d33612a9b565b600c546001600160a01b036301000000909104163314611f9c5760405162461bcd60e51b8152600401610464906149e6565b602992909255602855602b55565b600c546001600160a01b036301000000909104163314611fdc5760405162461bcd60e51b8152600401610464906149e6565b80156120245785600003611ffc57600a600654611ff99190614c4d565b95505b601d54600854612024918c918c91600a916001600160a01b0391821691168b8a8a6001612f51565b811561208257600061203530611c7e565b9050602c546029546120479190614a67565b81111561208057602c5460295461205e9083614a50565b6120689190614a50565b90508015612080576120808b8b838c8c8b600161399d565b505b50505050505050505050565b600c546001600160a01b0363010000009091041633146120c05760405162461bcd60e51b8152600401610464906149e6565b6001600160a01b03811661210b5760405162461bcd60e51b8152602060048201526012602482015271149bdd5d195c881b5d5cdd081899481cd95d60721b6044820152606401610464565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b03630100000090910416331461215f5760405162461bcd60e51b8152600401610464906149e6565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b600c546001600160a01b0363010000009091041633146121bc5760405162461bcd60e51b8152600401610464906149e6565b600692909255602555602c55565b6000600260006121d982612ebb565b905080156121f357600c805462ff00001916620100001790555b6121fd8585612cc6565b6000805461ff001916610100179055602a805460ff19166001179055600a60268190556027556122cb61222e610eee565b805160209182012060408051808201825260018152603160f81b9084015280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a0808401919091528151808403909101815260c090920190528051910120602e55565b60019250801561231857600c805462ff00001916905560405160ff831681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505092915050565b834211156123705760405162461bcd60e51b815260206004820152601f60248201527f455243323631325065726d69743a206578706972656420646561646c696e65006044820152606401610464565b6001600160a01b038781166000818152602d602090815260408083205481517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e084018552805190820120602e5461190160f01b61010086015261010285015261012280850182905285518086039091018152610142850180875281519184019190912090849052610162850180875281905260ff89166101828601526101a285018890526101c2850187905294519094936001926101e2808301939192601f198301929081900390910190855afa158015612485573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906124bb5750896001600160a01b0316816001600160a01b0316145b6125075760405162461bcd60e51b815260206004820181905260248201527f455243323631325065726d69743a20496e76616c6964207369676e61747572656044820152606401610464565b6001600160a01b038a166000908152602d6020526040902061252890613db1565b6120828a8a8a612652565b6000610fb461262f565b600c546001600160a01b03630100000090910416331461256f5760405162461bcd60e51b8152600401610464906149e6565b6001600160a01b0381166125d45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610464565b610dbd81612e5d565b600c546001600160a01b03630100000090910416331461260f5760405162461bcd60e51b815260040161046490614bbc565b600c805460ff191682151517905550565b6001600160a01b03163b151590565b600080600061263c613dce565b909250905061264b8183614c4d565b9250505090565b6001600160a01b0383166126b45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610464565b6001600160a01b0382166127155760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610464565b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03811660009081526024602052604090205463ffffffff168015806127a7575063ffffffff818116145b156119dc576023805460018101825560008290527fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f42300180546001600160a01b0319166001600160a01b0385161790555463ffffffff1161283c5760405162461bcd60e51b815260206004820152601060248201526f746f6f206d616e7920686f6c6465727360801b6044820152606401610464565b506023546001600160a01b03919091166000908152602460205260409020805463ffffffff191663ffffffff909216919091179055565b6001600160a01b0383166128d75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610464565b6001600160a01b0382166129395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610464565b6000811161299b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610464565b602a5460ff16156129da57601d54600854602854602754602b546129da9488948894600a946001600160a01b0393841694929093169290916000612f51565b600054610100900460ff1615612a475760006129f530611c7e565b9050602c54602954612a079190614a67565b811115612a4557602c54602954612a1e9083614a50565b612a289190614a50565b90508015612a4557612a458484836000196000602654600061399d565b505b6001600160a01b03831660009081526012602052604081205460ff1680612a8657506001600160a01b03831660009081526012602052604090205460ff165b159050612a9584848484613f1b565b50505050565b6001600160a01b03811660009081526024602052604090205463ffffffff168015801590612ace575063ffffffff818116105b156119dc576000612ade83611c7e565b1115612ae8575050565b6001600160a01b0382166000908152602460205260408120805463ffffffff191663ffffffff17905560238054612b2190600190614a50565b81548110612b3157612b31614ba6565b600091825260209091200154602380546001600160a01b0390921692509080612b5c57612b5c614d16565b600082815260209020810160001990810180546001600160a01b03191690550190556001600160a01b0381811690841614612bff57806023612b9f600185614d45565b63ffffffff1681548110612bb557612bb5614ba6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602490915260409020805463ffffffff191663ffffffff84161790555b505050565b6000808411612c555760405162461bcd60e51b815260206004820152601d60248201527f7175746f6528293a20696e73756666696369656e7420616d6f756e74410000006044820152606401610464565b600083118015612c655750600082115b612ca95760405162461bcd60e51b815260206004820152601560248201527471756f746528293a207a65726f207265736572766560581b6044820152606401610464565b82612cb48386614a31565b612cbe9190614c4d565b949350505050565b600454612cde9030906001600160a01b031684612652565b6005546004805460405163095ea7b360e01b81526001600160a01b0391821692810192909252602482018490529091169063095ea7b3906044016020604051808303816000875af1158015612d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5b9190614c88565b612db35760405162461bcd60e51b8152602060048201526024808201527f417070726f76616c206661696c75726520647572696e67206164644c697175696044820152636469747960e01b6064820152608401610464565b6004805460055460405162e8e33760e81b8152309381018490526001600160a01b039182166024820152604481018690526064810185905260006084820181905260a482015260c48101939093524260e4840152169063e8e3370090610104016060604051808303816000875af1158015612e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e569190614d6a565b5050505050565b600c80546001600160a01b0383811663010000008181026301000000600160b81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c5460009062010000900460ff1615612f05578160ff166001148015612ee15750303b155b612efd5760405162461bcd60e51b815260040161046490614d98565b506000919050565b600c5460ff8084166101009092041610612f315760405162461bcd60e51b815260040161046490614d98565b50600c805460ff9092166101000261ff0019909216919091179055600190565b60005460ff16611817576000805460ff191660011790556007805461ff00191661010017905580158015612f9257506003546001600160a01b038a81169116145b61397d5760065484811115612fa45750835b831561306e57600080600360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613000573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130249190614bfd565b506007546001600160701b0392831694509116915060ff161561304357905b60006127106130528885614a31565b61305c9190614c4d565b90508084111561306a578093505b5050505b8060000361307c575061397d565b600354604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156130c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ea9190614c6f565b90506000600460009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015613141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131659190614de6565b6001600160a01b031663017e7e586040518163ffffffff1660e01b81526004016020604051808303816000875af11580156131a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c89190614de6565b90506001600160a01b0381161561336b5760035460408051637464fc3d60e01b815290516000926001600160a01b031691637464fc3d9160048083019260209291908290030181865afa158015613223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132479190614c6f565b9050801561336957600080600360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156132a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c99190614bfd565b509150915060006132f6826001600160701b0316846001600160701b03166132f19190614a31565b614212565b9050600061330385614212565b9050808211156133645760006133198284614a50565b6133239089614a31565b9050600082613333856005614a31565b61333d9190614a67565b9050600061334b8284614c4d565b905080156133605761335d818b614a67565b99505b5050505b505050505b505b50600080600360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156133c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e69190614bfd565b506007546001600160701b0392831694509116915060ff161561340557905b6000613412836002614a31565b61341c8587614a31565b6134269190614c4d565b90506103e981101561343c57505050505061397d565b6134486103e882614a50565b6003546004805460405163095ea7b360e01b81526001600160a01b03918216928101929092526024820184905292935091169063095ea7b3906044016020604051808303816000875af11580156134a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c79190614c88565b61351f5760405162461bcd60e51b8152602060048201526024808201527f417070726f76616c206661696c75726520647572696e6720686f7573656b656560448201526370696e6760e01b6064820152608401610464565b6005546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358c9190614c6f565b9050600061359930611c7e565b6004546005546007549293506001600160a01b039182169263baa2abde929182169130918891600091829162010000909104166135d7426064614a67565b60405160e089901b6001600160e01b03191681526001600160a01b039788166004820152958716602487015260448601949094526064850192909252608484015290921660a482015260c481019190915260e40160408051808303816000875af1158015613649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366d9190614e03565b600754604051630f41a04d60e11b81523060048201529297509095506201000090046001600160a01b031690631e83409a90602401600060405180830381600087803b1580156136bc57600080fd5b505af11580156136d0573d6000803e3d6000fd5b5050600754600554604051630f41a04d60e11b81526001600160a01b03918216600482015262010000909204169250631e83409a9150602401600060405180830381600087803b15801561372357600080fd5b505af1158015613737573d6000803e3d6000fd5b50506005546040516370a0823160e01b81523060048201528593506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015613785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a99190614c6f565b6137b39190614a50565b9150806137bf30611c7e565b6137c99190614a50565b9050602c54816137d99190614a67565b9050888111156137f7576137ed8982614a50565b602c5550876137fd565b6000602c555b80156138195761380c81614281565b6138169083614a67565b91505b811561396457600060648f8461382f9190614a31565b6138399190614c4d565b9050600560009054906101000a90046001600160a01b03166001600160a01b031663a9059cbb8f836040518363ffffffff1660e01b81526004016138929291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156138b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d59190614c88565b506005546001600160a01b031663a9059cbb8e6138f28487614a50565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561393d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139619190614c88565b50505b866006546139729190614a50565b600655505050505050505b6007805461ff00191690556000805460ff19169055505050505050505050565b60005460ff16613da8576000805460ff19166001179055801580156139cb57506139c9878686866144f7565b155b613d9d5760008084116139e0576002546139e2565b835b9050808611156139f0578095505b508115613abb57600080600360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a719190614bfd565b506007546001600160701b0392831694509116915060ff1615613a9057905b6000612710613a9f8684614a31565b613aa99190614c4d565b905080881115613ab7578097505b5050505b8415613d9d576000613ace600287614c4d565b9050613ada8187614a50565b6005546040516370a0823160e01b81523060048201529197506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015613b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b4c9190614c6f565b90506000613b5988614281565b6005546040516370a0823160e01b815230600482015291925083916001600160a01b03909116906370a0823190602401602060405180830381865afa158015613ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bca9190614c6f565b613bd49190614a50565b9150613be08183614a50565b6003546040516370a0823160e01b81523060048201529193506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015613c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c529190614c6f565b9050613c5e8483612cc6565b6003546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015613ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cca9190614c6f565b613cd49190614a50565b90508215613d575760055460085460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810186905291169063a9059cbb906044016020604051808303816000875af1158015613d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d559190614c88565b505b604080518a8152602081018590529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505b6000805460ff191690555b50505050505050565b6001816000016000828254613dc69190614a67565b909155505050565b601554600090819081613de36009600a614b97565b613df29064e8d4a51000614a31565b905060008080805b601454811015613eb35760148181548110613e1757613e17614ba6565b60009182526020808320909101546001600160a01b0316808352600f82526040808420546010909352909220549095509350915085841180613e5857508483115b15613e8957601554613e6c6009600a614b97565b613e7b9064e8d4a51000614a31565b975097505050505050509091565b613e938487614a50565b9550613e9f8386614a50565b945080613eab81614d2c565b915050613dfa565b50613ec06009600a614b97565b613ecf9064e8d4a51000614a31565b601554613edc9190614c4d565b851015613f0e57601554613ef26009600a614b97565b613f019064e8d4a51000614a31565b9650965050505050509091565b5092959194509092505050565b6000613f2561262f565b90506000613f338285614a31565b9050600080841561403a576000613f4987614553565b90506000613f5688614570565b905080613f63838a614a50565b613f6d9190614a50565b92506000613f7b8784614a31565b90506000613f898884614a31565b905080613f968389614a50565b613fa09190614a50565b306000908152600f6020526040902054909650613fbe908290614a67565b306000908152600f602090815260408083209390935560139052205460ff161561400e5730600090815260106020526040902054613ffd908490614a67565b306000908152601060205260409020555b8160155461401c9190614a50565b60155560165461402d908590614a67565b6016555061404092505050565b50819050845b6003546001600160a01b03898116911614801561407657506001600160a01b03871660009081526012602052604090205460ff16155b1561409a5761409a606461408b603a89614a31565b6140959190614c4d565b614583565b6001600160a01b03881660009081526013602052604090205460ff16156140f9576001600160a01b0388166000908152601060205260409020546140df908790614a50565b6001600160a01b0389166000908152601060205260409020555b6001600160a01b03871660009081526013602052604090205460ff1615614158576001600160a01b03871660009081526010602052604090205461413e908290614a67565b6001600160a01b0388166000908152601060205260409020555b6001600160a01b0388166000908152600f602052604090205461417c908490614a50565b6001600160a01b03808a166000908152600f602052604080822093909355908916815220546141ac908390614a67565b6001600160a01b038089166000818152600f602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906142009085815260200190565b60405180910390a35050505050505050565b60006003821115614273575080600061422c600283614c4d565b614237906001614a67565b90505b8181101561426d579050806002816142528186614c4d565b61425c9190614a67565b6142669190614c4d565b905061423a565b50919050565b81156110e057506001919050565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106142ba576142ba614ba6565b6001600160a01b0392831660209182029290920101526005548251911690829060019081106142eb576142eb614ba6565b6001600160a01b0392831660209182029290920101526004546143119130911685612652565b6005546007546040516370a0823160e01b8152620100009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015614366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061438a9190614c6f565b60048054600754604051635c11d79560e01b81529394506001600160a01b0391821693635c11d795936143d1938a936000938a936201000090920490921691429101614ca5565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50506005546007546040516370a0823160e01b81526001600160a01b036201000090920482166004820152859450911691506370a0823190602401602060405180830381865afa158015614457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061447b9190614c6f565b6144859190614a50565b600754600554604051630f41a04d60e11b81526001600160a01b039182166004820152929350620100009091041690631e83409a90602401600060405180830381600087803b1580156144d757600080fd5b505af11580156144eb573d6000803e3d6000fd5b50929695505050505050565b6003546000906001600160a01b038681169116148061451f575060025415801561451f575081155b8061453b5750600019831061453657600154614538565b825b84105b1561454857506000612cbe565b506001949350505050565b6000601954601754836145669190614a31565b610f919190614c4d565b6000601954601854836145669190614a31565b600754610100900460ff16156145965750565b600080600360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156145ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146109190614bfd565b506007546001600160701b0392831694509116915060ff161561462f57905b600061463b8483614a50565b614647906103e5614a31565b84614654856103e8614a31565b61465e9190614a31565b6146689190614c4d565b602a5490915060ff161561468c57806006546146849190614a67565b600655612a95565b8060255461469a9190614a67565b60255550505050565b6000602082840312156146b557600080fd5b5035919050565b600080604083850312156146cf57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561470b578581018301518582016040015282016146ef565b8181111561471d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610dbd57600080fd5b6000806040838503121561475b57600080fd5b823561476681614733565b946020939093013593505050565b60006020828403121561478657600080fd5b8135611d9881614733565b6000806000606084860312156147a657600080fd5b83356147b181614733565b925060208401356147c181614733565b929592945050506040919091013590565b8015158114610dbd57600080fd5b6000806000606084860312156147f557600080fd5b8335925060208401356147c1816147d2565b6000806040838503121561481a57600080fd5b8235614825816147d2565b91506020830135614835816147d2565b809150509250929050565b60008060006060848603121561485557600080fd5b505081359360208301359350604090920135919050565b6000806000806000806000806000806101408b8d03121561488c57600080fd5b8a3561489781614733565b995060208b01356148a781614733565b985060408b0135975060608b0135965060808b0135955060a08b0135945060c08b0135935060e08b013592506101008b01356148e2816147d2565b91506101208b01356148f3816147d2565b809150509295989b9194979a5092959850565b60006020828403121561491857600080fd5b8135611d98816147d2565b6000806040838503121561493657600080fd5b823561482581614733565b600080600080600080600060e0888a03121561495c57600080fd5b873561496781614733565b9650602088013561497781614733565b95506040880135945060608801359350608088013560ff8116811461499b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156149cb57600080fd5b82356149d681614733565b9150602083013561483581614733565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615614a4b57614a4b614a1b565b500290565b600082821015614a6257614a62614a1b565b500390565b60008219821115614a7a57614a7a614a1b565b500190565b600181811c90821680614a9357607f821691505b60208210810361426d57634e487b7160e01b600052602260045260246000fd5b600181815b80851115614aee578160001904821115614ad457614ad4614a1b565b80851615614ae157918102915b93841c9390800290614ab8565b509250929050565b600082614b0557506001610f91565b81614b1257506000610f91565b8160018114614b285760028114614b3257614b4e565b6001915050610f91565b60ff841115614b4357614b43614a1b565b50506001821b610f91565b5060208310610133831016604e8410600b8410161715614b71575081810a610f91565b614b7b8383614ab3565b8060001904821115614b8f57614b8f614a1b565b029392505050565b6000611d9860ff841683614af6565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f3737ba1039b734b832b91030b236b4b760811b604082015260600190565b80516001600160701b03811681146110e057600080fd5b600080600060608486031215614c1257600080fd5b614c1b84614be6565b9250614c2960208501614be6565b9150604084015163ffffffff81168114614c4257600080fd5b809150509250925092565b600082614c6a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215614c8157600080fd5b5051919050565b600060208284031215614c9a57600080fd5b8151611d98816147d2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614cf55784516001600160a01b031683529383019391830191600101614cd0565b50506001600160a01b03969096166060850152505050608001529392505050565b634e487b7160e01b600052603160045260246000fd5b600060018201614d3e57614d3e614a1b565b5060010190565b600063ffffffff83811690831681811015614d6257614d62614a1b565b039392505050565b600080600060608486031215614d7f57600080fd5b8351925060208401519150604084015190509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060208284031215614df857600080fd5b8151611d9881614733565b60008060408385031215614e1657600080fd5b50508051602090910151909290915056fea2646970667358221220c3c379e11c16f32991e9631e46aec05ccb0601bd3984df45a9f38308056bbd7364736f6c634300080d0033496e697469616c697a61626c653a20636f6e747261637420697320616c726561