[ { "inputs": [ { "internalType": "address", "name": "_stormRoyalty", "type": "address" }, { "internalType": "address[]", "name": "_admins", "type": "address[]" }, { "internalType": "address", "name": "_pangolinRouter", "type": "address" }, { "internalType": "address", "name": "_underlying", "type": "address" }, { "internalType": "address", "name": "_shelter", "type": "address" }, { "internalType": "address", "name": "_theTap", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountTokensErased", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amountTokensErased", "type": "uint256" } ], "name": "GarbageCollected", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "numTokens", "type": "uint256" } ], "name": "Minted", "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": "previousPrice", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "currentPrice", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalSupply", "type": "uint256" } ], "name": "PriceChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountTokens", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountUnderlying", "type": "uint256" } ], "name": "Redeemed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "mintFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "transferFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "cashedOutFee", "type": "uint256" } ], "name": "SetFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "Contract", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "feeExempt", "type": "bool" } ], "name": "SetPermissions", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "newRouter", "type": "address" } ], "name": "SetRouter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "blockNo", "type": "uint256" } ], "name": "TokenActivated", "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": "activateToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "numTokens", "type": "uint256" } ], "name": "amountOut", "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": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "calculatePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cashedOutFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getHolders", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSellFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getUnderlyingAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" } ], "name": "getValueOfHoldings", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "holderEntryTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "holders", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isFeeExempt", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "numTokens", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "mintWithBacking", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint8", "name": "slippage", "type": "uint8" } ], "name": "mintWithNative", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "sell", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "sell", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" } ], "name": "sellDownAccounts", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellDownAllAccounts", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "sellDownExempt", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintFee", "type": "uint256" }, { "internalType": "uint256", "name": "_transferFee", "type": "uint256" }, { "internalType": "uint256", "name": "_sellFee", "type": "uint256" }, { "internalType": "uint256", "name": "_cashedOutFee", "type": "uint256" } ], "name": "setFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "Contract", "type": "address" }, { "internalType": "bool", "name": "feeExempt", "type": "bool" } ], "name": "setPermissions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "isExempt", "type": "bool" } ], "name": "setSellDownExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newTapAddress", "type": "address" } ], "name": "setTheTap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "tokenActivated", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "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": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "transferFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "underlying", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newRouter", "type": "address" } ], "name": "upgradeRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "token", "type": "address" } ], "name": "withdrawNonStableToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052670de0b6b3a764000060025562017318600e5562017318600f556201731860105562016f306011553480156200003957600080fd5b5060405162003b7438038062003b748339810160408190526200005c916200025b565b60016000556200006c33620001d6565b600880546001600160a01b03199081166001600160a01b038981169190911790925560078054821687841690811790915560128054831687851617905560068054610100600160a81b03191661010087861602179055600980549092169284169290921790556000908152600560209081526040808320805460ff1990811660019081179092553385528285208054821683179055600d90935290832080549092161790555b85518110156200017e576001600d60008884815181106200013757620001376200038d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806200017581620003a3565b91505062000112565b5060025433600081815260036020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050505050620003cb565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200024057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c087890312156200027557600080fd5b620002808762000228565b602088810151919750906001600160401b0380821115620002a057600080fd5b818a0191508a601f830112620002b557600080fd5b815181811115620002ca57620002ca62000245565b8060051b604051601f19603f83011681018181108582111715620002f257620002f262000245565b60405291825284820192508381018501918d8311156200031157600080fd5b938501935b828510156200033a576200032a8562000228565b8452938501939285019262000316565b809a50505050505050620003516040880162000228565b9350620003616060880162000228565b9250620003716080880162000228565b91506200038160a0880162000228565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b600060018201620003c457634e487b7160e01b600052601160045260246000fd5b5060010190565b61379980620003db6000396000f3fe6080604052600436106102765760003560e01c80636fcba3771161014f578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e146107b4578063e4849b32146107fa578063f2fde38b1461081a578063f957417e1461083a578063fa9d69871461084f578063feac02881461087c57600080fd5b8063a9059cbb1461070e578063acb2ad6f1461072e578063c5006ff614610744578063c8e94d9214610774578063ced72f871461078a578063d348b4091461079f57600080fd5b80637a5caab3116101135780637a5caab31461065957806388a68682146106725780638d8ea6cb146106905780638da5cb5b146106a357806395d89b41146106c15780639a17d8c1146106f557600080fd5b80636fcba377146105ae57806370a08231146105ce578063715018a6146106045780637314f1091461061957806375fe9fba1461063957600080fd5b80632b14ca56116101e857806355445017116101ac57806355445017146104f257806355565fce1461050c5780635d924f421461052c5780635fe8e7cc1461054c5780636165234c1461056e5780636f307dc31461058e57600080fd5b80632b14ca5614610450578063313ce567146104665780633f4218e0146104825780634189a68e146104b257806342966c68146104d257600080fd5b806318160ddd1161023a57806318160ddd146103795780631aa5a82d1461038e5780631f02a29c146103ae57806323b872dd146103ce578063289af0d8146103ee5780632a11ced01461041857600080fd5b806306fdde03146102a3578063095ea7b3146102f057806309b22aba146103205780630c8463fd1461034057806313966db51461035557600080fd5b3661029e5761028733600c3461089c565b5061029130610a96565b61029c61dead610a96565b005b600080fd5b3480156102af57600080fd5b506040805180820190915260128152710a6e8dee4da5c9adedccaf240a6a09882a6960731b60208201525b6040516102e791906131fd565b60405180910390f35b3480156102fc57600080fd5b5061031061030b366004613260565b610b5c565b60405190151581526020016102e7565b34801561032c57600080fd5b5061029c61033b36600461328c565b610bc9565b34801561034c57600080fd5b5061029c610c28565b34801561036157600080fd5b5061036b600e5481565b6040519081526020016102e7565b34801561038557600080fd5b5060025461036b565b34801561039a57600080fd5b5061029c6103a9366004613301565b610c8c565b3480156103ba57600080fd5b5061036b6103c9366004613301565b610df9565b3480156103da57600080fd5b506103106103e936600461331e565b610e1b565b3480156103fa57600080fd5b50600f54620186a05b604080519283526020830191909152016102e7565b34801561042457600080fd5b5061043861043336600461335f565b610ebc565b6040516001600160a01b0390911681526020016102e7565b34801561045c57600080fd5b5061036b600f5481565b34801561047257600080fd5b50604051601281526020016102e7565b34801561048e57600080fd5b5061031061049d366004613301565b60056020526000908152604090205460ff1681565b3480156104be57600080fd5b5061036b6104cd366004613378565b610ee6565b3480156104de57600080fd5b5061029c6104ed36600461335f565b610f0a565b3480156104fe57600080fd5b506006546103109060ff1681565b34801561051857600080fd5b5061029c610527366004613301565b610fde565b34801561053857600080fd5b5061029c610547366004613301565b611065565b34801561055857600080fd5b506105616110b5565b6040516102e791906133ec565b34801561057a57600080fd5b5061029c61058936600461340d565b611117565b34801561059a57600080fd5b50601254610438906001600160a01b031681565b3480156105ba57600080fd5b5061029c6105c936600461343b565b6111a9565b3480156105da57600080fd5b5061036b6105e9366004613301565b6001600160a01b031660009081526003602052604090205490565b34801561061057600080fd5b5061029c611253565b34801561062557600080fd5b5061036b610634366004613378565b611265565b34801561064557600080fd5b5061036b61065436600461335f565b61128d565b34801561066557600080fd5b50600e54620186a0610403565b34801561067e57600080fd5b506012546001600160a01b0316610438565b61036b61069e36600461346d565b6112b3565b3480156106af57600080fd5b506001546001600160a01b0316610438565b3480156106cd57600080fd5b5060408051808201909152600b81526a0e6e8dee4daa6a09882a6960ab1b60208201526102da565b34801561070157600080fd5b50601054620186a0610403565b34801561071a57600080fd5b50610310610729366004613260565b6112d4565b34801561073a57600080fd5b5061036b60105481565b34801561075057600080fd5b5061031061075f366004613301565b600d6020526000908152604090205460ff1681565b34801561078057600080fd5b5061036b60115481565b34801561079657600080fd5b5061036b611317565b3480156107ab57600080fd5b5061036b611391565b3480156107c057600080fd5b5061036b6107cf3660046134a1565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561080657600080fd5b5061036b61081536600461335f565b6113a0565b34801561082657600080fd5b5061029c610835366004613301565b6113c8565b34801561084657600080fd5b5061029c61143e565b34801561085b57600080fd5b5061036b61086a366004613301565b600c6020526000908152604090205481565b34801561088857600080fd5b5061029c61089736600461340d565b61148f565b60006108a66114c2565b600034116108e85760405162461bcd60e51b815260206004820152600a6024820152695a65726f2056616c756560b01b60448201526064015b60405180910390fd5b6001600160a01b03841661090e5760405162461bcd60e51b81526004016108df906134cf565b60065460ff168061092957506001546001600160a01b031633145b61096b5760405162461bcd60e51b8152602060048201526013602482015272151bdad95b88139bdd081058dd1a5d985d1959606a1b60448201526064016108df565b600061097561151b565b6012546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e791906134f5565b905060006109f586866115c4565b905060008215610a055782610a71565b6012546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7191906134f5565b9050610a7f888383876118f3565b945050505050610a8f6001600055565b9392505050565b6001600160a01b0381166000908152600360205260409020546103e8811115610b58576000610ac361151b565b9050610ace82611a66565b610ad88383611b1f565b6040518281527f8a1c945864c85a9dee42b8734075761f7a16095a8384ab751f2417c5767e227e9060200160405180910390a17f046aa811b2923fd55b4ca06375b4045117d4584c66fc40880a8ab8ee32d88ed181610b3561151b565b6002546040805193845260208401929092529082015260600160405180910390a1505b5050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bb79086815260200190565b60405180910390a35060015b92915050565b610bd16114c2565b610bd9611c1f565b8060005b81811015610c1c57610c14848483818110610bfa57610bfa61350e565b9050602002016020810190610c0f9190613301565b611c79565b600101610bdd565b5050610b586001600055565b610c306114c2565b610c38611c1f565b600a5460005b81811015610c7e57610c76600a8281548110610c5c57610c5c61350e565b6000918252602090912001546001600160a01b0316611c79565b600101610c3e565b5050610c8a6001600055565b565b610c94611c1f565b6012546001600160a01b0390811690821603610cf25760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f7420576974686472617720556e6465726c79696e6720417373657460448201526064016108df565b6001600160a01b038116610d185760405162461bcd60e51b81526004016108df906134cf565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8a91906134f5565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b589190613524565b6001600160a01b038116600090815260036020526040812054610bc39061128d565b6000610e256114c2565b6040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600482528381203382529091529190912054610e81918490611d0b565b6001600160a01b0385166000908152600460209081526040808320338452909152902055610eb0848484611d37565b9050610a8f6001600055565b600a8181548110610ecc57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610ef06114c2565b610efd3384846000611ffe565b90505b610bc36001600055565b610f126114c2565b33600090815260036020526040902054818110801590610f325750600081115b610f6e5760405162461bcd60e51b815260206004820152600d60248201526c5a65726f20486f6c64696e677360981b60448201526064016108df565b6000610f7861151b565b9050610f8383611a66565b610f8d3384611b1f565b610f96816123e0565b60408051338152602081018590527fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5910160405180910390a15050610fdb6001600055565b50565b610fe6611c1f565b6001600160a01b038116610ff957600080fd5b6001600160a01b038116600081815260056020908152604091829020805460ff19166001179055600780546001600160a01b0319168417905590519182527f6de4326a8b9054d72d9dbab97d27bc4edffadee7d966f5af9cc4eafdaf8e5455910160405180910390a150565b61106d611c1f565b6001600160a01b0381166110935760405162461bcd60e51b81526004016108df906134cf565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6060600a80548060200260200160405190810160405280929190818152602001828054801561110d57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110ef575b5050505050905090565b61111f611c1f565b6001600160a01b0382166111455760405162461bcd60e51b81526004016108df906134cf565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527fd0444b45a0ac5fd0ea9b910a05d75621679a6fa7c73922fe24c17c5824cd3ff391015b60405180910390a15050565b6111b1611c1f565b62015f908410156111c157600080fd5b62015f908310156111d157600080fd5b62015f908210156111e157600080fd5b62015f908110156111f157600080fd5b600e8490556010839055600f82905560118190556040805185815260208101859052908101839052606081018290527f747eaccb30a9769474f1620ae0dd833b1ffb89520dcac6833b33df942b7c0c499060800160405180910390a150505050565b61125b611c1f565b610c8a6000612472565b600061126f6114c2565b61127830610a96565b61128361dead610a96565b610efd83836124c4565b6000610bc3670de0b6b3a76400006112ad846112a761151b565b90612791565b9061279d565b60006112be30610a96565b6112c961dead610a96565b610a8f83833461089c565b60006112de6114c2565b336001600160a01b03841603611305576112fb3383336000611ffe565b5060019050610f00565b611310338484611d37565b9050610f00565b600080600860009054906101000a90046001600160a01b03166001600160a01b031663ced72f876040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc391906134f5565b600061139b61151b565b905090565b60006113aa6114c2565b6113b73383336000611ffe565b90506113c36001600055565b919050565b6113d0611c1f565b6001600160a01b0381166114355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108df565b610fdb81612472565b611446611c1f565b6006805460ff191660011790556040517f43f7deefc1f4e825772604a0bc01b8362eb1eef895e6bd4db39bfab68c1e94c8906114859043815260200190565b60405180910390a1565b611497611c1f565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6002600054036115145760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108df565b6002600055565b60008060025460001461153057600254611533565b60015b6012546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a591906134f5565b90506115bd826112ad83670de0b6b3a7640000612791565b9250505090565b6012546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611611573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163591906134f5565b60408051600280825260608201835292935060009290916020830190803683375050600754604080516339d94ae160e11b815290519394506001600160a01b03909116926373b295c2925060048083019260209291908290030181865afa1580156116a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c89190613557565b816000815181106116db576116db61350e565b6001600160a01b03928316602091820292909201015260125482519116908290600190811061170c5761170c61350e565b6001600160a01b03928316602091820292909201015260075460405163d06ca61f60e01b8152600092919091169063d06ca61f906117509088908690600401613574565b600060405180830381865afa15801561176d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117959190810190613595565b905060006117d760646112ad6117ae8260ff8c166127a9565b856001815181106117c1576117c161350e565b602002602001015161279190919063ffffffff16565b6007549091506001600160a01b031663a2a1623d878386306117fb4261012c61365d565b6040518663ffffffff1660e01b815260040161181a9493929190613670565b60006040518083038185885af1158015611838573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526118619190810190613595565b506012546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156118ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cf91906134f5565b90508481116118dd57600080fd5b6118e785826136a5565b98975050505050505050565b60008060025460001461190857600254611912565b670de0b6b3a76400005b90506000611924856112ad8489612791565b336000908152600560205260408120549192509060ff166119605761195b620186a06112ad600e548561279190919063ffffffff16565b611996565b60408051808201909152601181527026b4b734b6bab69022bc32b6b83a34b7b760791b6020820152611996908390600a90611d0b565b9050600081116119d65760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8105b5bdd5b9d60aa1b60448201526064016108df565b6119e088826127b5565b3360009081526005602052604090205460ff16611a10576000611a0383836127a9565b9050611a0e81611a66565b505b611a19856123e0565b604080516001600160a01b038a168152602081018390527f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe910160405180910390a1979650505050505050565b6000611a70611317565b90508015610b58576000611a8960646112ad8585612791565b90506000611a968261128d565b90508015611b195760125460085460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af1158015611af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b179190613524565b505b50505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038516600090815260039091529190912054611b71918390611d0b565b6001600160a01b038316600090815260036020908152604091829020929092558051808201909152600f81526e4e6567617469766520537570706c7960881b91810191909152600254611bc5918390611d0b565b6002556040518181526000906001600160a01b038416906000805160206137448339815191529060200160405180910390a36001600160a01b0382166000908152600360205260408120549003610b5857610b588261285c565b6001546001600160a01b03163314610c8a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108df565b6001600160a01b038116611c9f5760405162461bcd60e51b81526004016108df906134cf565b6001600160a01b0381166000908152600360205260409020541580611cdc57506001600160a01b0381166000908152600d602052604090205460ff165b15611ce45750565b6001600160a01b038116600090815260036020526040902054610b58908290816001611ffe565b60008184841115611d2f5760405162461bcd60e51b81526004016108df91906131fd565b505050900390565b60006001600160a01b03831615801590611d5957506001600160a01b03841615155b611d985760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220546f205a65726f60801b60448201526064016108df565b60008211611ddc5760405162461bcd60e51b81526020600482015260116024820152705472616e7366657220416d74205a65726f60781b60448201526064016108df565b6001600160a01b0383166000908152600360205260408120549003611e0457611e04836129bc565b6000611e0e61151b565b6001600160a01b0386166000908152600560205260408120549192509060ff1680611e5157506001600160a01b03851660009081526005602052604090205460ff165b611e7657611e71620186a06112ad6010548761279190919063ffffffff16565b611e78565b835b90506000611e8685836127a9565b9050611eee8560405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250600360008b6001600160a01b03166001600160a01b0316815260200190815260200160002054611d0b9092919063ffffffff16565b6001600160a01b038089166000908152600360205260408082209390935590881681522054611f1d9083612a2b565b6001600160a01b0387166000908152600360205260409020558015611f8557611f4581611a66565b600254611f5290826127a9565b6002556040518181526000906001600160a01b038916906000805160206137448339815191529060200160405180910390a35b6001600160a01b0387166000908152600360205260408120549003611fad57611fad8761285c565b611fb6836123e0565b856001600160a01b0316876001600160a01b031660008051602061374483398151915284604051611fe991815260200190565b60405180910390a35060019695505050505050565b6000808411801561202757506001600160a01b0385166000908152600360205260409020548411155b61203057600080fd5b6001600160a01b0385161580159061205057506001600160a01b03831615155b61205957600080fd5b600061206361151b565b905060008361207457600f54612078565b6011545b6001600160a01b0388166000908152600560205260408120549192509060ff166120b2576120ad620186a06112ad8985612791565b6120e8565b60408051808201909152601181527026b4b734b6bab69022bc32b6b83a34b7b760791b60208201526120e8908890600a90611d0b565b905060006120f58261128d565b3360009081526005602052604090205490915060ff1661212857600061211b89846127a9565b905061212681611a66565b505b6121328989611b1f565b85156122be576000612145600d83612a37565b9050600660019054906101000a90046001600160a01b03166001600160a01b03166388a686826040518163ffffffff1660e01b8152600401602060405180830381865afa15801561219a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121be9190613557565b60065460405163095ea7b360e01b81526001600160a01b03610100909204821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af1158015612215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122399190613524565b50600654604051637314f10960e01b8152600481018390526001600160a01b038a8116602483015261010090920490911690637314f109906044016020604051808303816000875af1158015612293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b791906134f5565b5050612381565b60125460405163a9059cbb60e01b81526001600160a01b038981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015612311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123359190613524565b6123815760405162461bcd60e51b815260206004820152601b60248201527f556e6465726c79696e67205472616e73666572204661696c757265000000000060448201526064016108df565b61238a846123e0565b604080516001600160a01b038b168152602081018a90529081018290527ff3a670cd3af7d64b488926880889d08a8585a138ff455227af6737339a1ec2629060600160405180910390a198975050505050505050565b60006123ea61151b565b9050818110156124305760405162461bcd60e51b8152602060048201526011602482015270141c9a58d94810d85b9b9bdd0811985b1b607a1b60448201526064016108df565b6002546040805184815260208101849052908101919091527f046aa811b2923fd55b4ca06375b4045117d4584c66fc40880a8ab8ee32d88ed19060600161119d565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60065460009060ff16806124e257506001546001600160a01b031633145b6125245760405162461bcd60e51b8152602060048201526013602482015272151bdad95b88139bdd081058dd1a5d985d1959606a1b60448201526064016108df565b6012546040516370a0823160e01b81523360048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561256d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259191906134f5565b90506000811180156125a35750808411155b6125e65760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016108df565b60006125f061151b565b6012546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561263e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266291906134f5565b9050600061267660646112ad89600a612791565b6009546040516336b40b2160e21b8152600481018390529192506001600160a01b03169063dad02c8490602401600060405180830381600087803b1580156126bd57600080fd5b505af11580156126d1573d6000803e3d6000fd5b5050601254600092508391506126f0906001600160a01b03168a61306c565b6126fa919061365d565b90506000831561270a5783612776565b6012546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612752573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277691906134f5565b9050612784888383886118f3565b9998505050505050505050565b6000610a8f82846136b8565b6000610a8f82846136cf565b6000610a8f82846136a5565b6001600160a01b03821660009081526003602052604081205490036127dd576127dd826129bc565b6001600160a01b0382166000908152600360205260409020546128009082612a2b565b6001600160a01b0383166000908152600360205260409020556002546128269082612a2b565b6002556040518181526001600160a01b038316906000906000805160206137448339815191529060200160405180910390a35050565b6001600160a01b0381166000908152600b6020526040812054600a8054919291612888906001906136a5565b815481106128985761289861350e565b60009182526020808320909101546001600160a01b03868116808552600b909352604090932054600a8054949092169450919290919081106128dc576128dc61350e565b6000918252602090912001546001600160a01b0316146128fb57505050565b6001600160a01b0381166000908152600b60205260409020829055600a80548291908490811061292d5761292d61350e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a80548061296c5761296c6136f1565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03949094168152600b84526040808220829055600c909452928320929092555050565b600a80546001600160a01b039092166000818152600b6020908152604080832095909555600c90529283204290558154600181018355919092527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000610a8f828461365d565b600080600660019054906101000a90046001600160a01b03166001600160a01b03166388a686826040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab19190613557565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015612afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1f91906134f5565b60125460075460405163095ea7b360e01b81526001600160a01b03918216600482015260248101889052929350169063095ea7b3906044016020604051808303816000875af1158015612b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9a9190613524565b5060606000600760009054906101000a90046001600160a01b03166001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c169190613557565b6012546001600160a01b03918216911603612dba5760408051600280825260608201835290916020830190803683375050600754604080516339d94ae160e11b815290519395506001600160a01b03909116926373b295c2925060048083019260209291908290030181865afa158015612c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb89190613557565b82600081518110612ccb57612ccb61350e565b60200260200101906001600160a01b031690816001600160a01b0316815250508382600181518110612cff57612cff61350e565b6001600160a01b03928316602091820292909201015260075460405163d06ca61f60e01b8152600092919091169063d06ca61f90612d43908a908790600401613574565b600060405180830381865afa158015612d60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d889190810190613595565b9050612db260646112ad612d9f8260ff8d166127a9565b846001815181106117c1576117c161350e565b915050612f76565b604080516003808252608082019092529060208201606080368337505060125482519294506001600160a01b031691849150600090612dfb57612dfb61350e565b6001600160a01b03928316602091820292909201810191909152600754604080516339d94ae160e11b8152905191909316926373b295c29260048083019391928290030181865afa158015612e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e789190613557565b82600181518110612e8b57612e8b61350e565b60200260200101906001600160a01b031690816001600160a01b0316815250508382600281518110612ebf57612ebf61350e565b6001600160a01b03928316602091820292909201015260075460405163d06ca61f60e01b8152600092919091169063d06ca61f90612f03908a908790600401613574565b600060405180830381865afa158015612f20573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f489190810190613595565b9050612f7260646112ad612f5f8260ff8d166127a9565b846002815181106117c1576117c161350e565b9150505b6007546001600160a01b0316635c11d79587838530612f974261012c61365d565b6040518663ffffffff1660e01b8152600401612fb7959493929190613707565b600060405180830381600087803b158015612fd157600080fd5b505af1158015612fe5573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03871691506370a0823190602401602060405180830381865afa158015613030573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305491906134f5565b905083811161306257600080fd5b6118e784826136a5565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156130b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d991906134f5565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506000906001600160a01b038616906323b872dd906064016020604051808303816000875af1158015613132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131569190613524565b6040516370a0823160e01b815230600482015290915060009083906001600160a01b038816906370a0823190602401602060405180830381865afa1580156131a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c691906134f5565b6131d091906136a5565b90508180156131df5750600081115b80156131eb5750848111155b6131f457600080fd5b95945050505050565b600060208083528351808285015260005b8181101561322a5785810183015185820160400152820161320e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610fdb57600080fd5b6000806040838503121561327357600080fd5b823561327e8161324b565b946020939093013593505050565b6000806020838503121561329f57600080fd5b823567ffffffffffffffff808211156132b757600080fd5b818501915085601f8301126132cb57600080fd5b8135818111156132da57600080fd5b8660208260051b85010111156132ef57600080fd5b60209290920196919550909350505050565b60006020828403121561331357600080fd5b8135610a8f8161324b565b60008060006060848603121561333357600080fd5b833561333e8161324b565b9250602084013561334e8161324b565b929592945050506040919091013590565b60006020828403121561337157600080fd5b5035919050565b6000806040838503121561338b57600080fd5b82359150602083013561339d8161324b565b809150509250929050565b600081518084526020808501945080840160005b838110156133e15781516001600160a01b0316875295820195908201906001016133bc565b509495945050505050565b602081526000610a8f60208301846133a8565b8015158114610fdb57600080fd5b6000806040838503121561342057600080fd5b823561342b8161324b565b9150602083013561339d816133ff565b6000806000806080858703121561345157600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561348057600080fd5b823561348b8161324b565b9150602083013560ff8116811461339d57600080fd5b600080604083850312156134b457600080fd5b82356134bf8161324b565b9150602083013561339d8161324b565b6020808252600c908201526b5a65726f204164647265737360a01b604082015260600190565b60006020828403121561350757600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561353657600080fd5b8151610a8f816133ff565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561356957600080fd5b8151610a8f8161324b565b82815260406020820152600061358d60408301846133a8565b949350505050565b600060208083850312156135a857600080fd5b825167ffffffffffffffff808211156135c057600080fd5b818501915085601f8301126135d457600080fd5b8151818111156135e6576135e6613541565b8060051b604051601f19603f8301168101818110858211171561360b5761360b613541565b60405291825284820192508381018501918883111561362957600080fd5b938501935b828510156118e75784518452938501939285019261362e565b634e487b7160e01b600052601160045260246000fd5b80820180821115610bc357610bc3613647565b84815260806020820152600061368960808301866133a8565b6001600160a01b03949094166040830152506060015292915050565b81810381811115610bc357610bc3613647565b8082028115828204841417610bc357610bc3613647565b6000826136ec57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fd5b85815284602082015260a06040820152600061372660a08301866133a8565b6001600160a01b039490941660608301525060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204c18476edafd8f8448bd5b41fbacb55fc0c2de709c3f8c324ac89efe7d9e69dc64736f6c634300081100330000000000000000000000004306c3576de42e8c274e26d9543deecdceacad5000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000e54ca86531e17ef3616d22ca28b0d458b6c89106000000000000000000000000e16253892f126d068e711c2fdde6db56969dbcf60000000000000000000000007c6a3fd7f1585ffeefef9600562299b8fa6c3c2e000000000000000000000000d17a5d992567e2fc2a3fe1c8bc58bf63d24e55e10000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f7ed166a1629c8d5e2c27e1b11e9245c90058e8f000000000000000000000000ac647e766f151a31f21fd5adff4f042f8490d88a0000000000000000000000001799dada49693da4ab9ec838ad29e00f704e8718