[ { "inputs": [ { "internalType": "address", "name": "_marketContract", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "_expirationTime", "type": "uint256" }, { "internalType": "uint256", "name": "_marketId", "type": "uint256" }, { "internalType": "uint256", "name": "_optionId", "type": "uint256" }, { "internalType": "address", "name": "_creator", "type": "address" }, { "internalType": "address", "name": "_platform", "type": "address" }, { "internalType": "enum BondingCurveToken.Mode", "name": "_mode", "type": "uint8" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBasePrice", "type": "uint256" } ], "name": "BasePriceChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "walletAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "eth", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "avgPrice", "type": "uint256" } ], "name": "BuyToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "creatorFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "platformFee", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "actionType", "type": "string" } ], "name": "FeeTransferred", "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": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newPrice", "type": "uint256" } ], "name": "PriceChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "walletAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "eth", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "avgPrice", "type": "uint256" } ], "name": "SellToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newSlope", "type": "uint256" } ], "name": "SlopeChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" } ], "name": "TradingPaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" } ], "name": "TradingResumed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DECIMALS", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DECIMAL_FACTOR", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEE_PERCENTAGE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "autoSellTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "basePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "buy", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "buyFromContract", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "calculateBuyTokenAmountAddFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "supply", "type": "uint256" } ], "name": "calculatePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "calculateSellTokenAmountAddFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "calculateTokenAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "calculateTotalCost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "calculateTotalProceeds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "calculateTotalProceedsWithoutFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkTradingStatus", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "creator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "expirationTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketResolved", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mode", "outputs": [ { "internalType": "enum BondingCurveToken.Mode", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "optionId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pauseTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platform", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "resumeTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "resumeTradingTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "sell", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "sellFromContract", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sendLoseOptionPriceTo0Event", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_autoSellTime", "type": "uint256" } ], "name": "setAutoSellTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newBasePrice", "type": "uint256" } ], "name": "setBasePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_resolved", "type": "bool" } ], "name": "setMarketResolved", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_platform", "type": "address" } ], "name": "setPlatform", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "setResumeTradingTimestamp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newSlope", "type": "uint256" } ], "name": "setSlope", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "slope", "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": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101006040523461055f57612a178038038061001a81610564565b9283398101906101208183031261055f5761003481610589565b60208201519092906001600160401b03811161055f578161005691840161059d565b604083015190916001600160401b03821161055f5761007691840161059d565b6060830151608084015160a08501519161009260c08701610589565b936101006100a260e08901610589565b97015195600187101561055f578051906001600160401b03821161045c5760035490600182811c92168015610555575b602083101461043c5781601f8493116104e5575b50602090601f831160011461047d57600092610472575b50508160011b916000199060031b1c1916176003555b8051906001600160401b03821161045c5760045490600182811c92168015610452575b602083101461043c5781601f8493116103cc575b50602090601f831160011461036457600092610359575b50508160011b916000199060031b1c1916176004555b3315610343576005546040519790336001600160a01b0382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a81b03199081163360ff60a01b1916176005556406fc23ac0060065563b2d05e0060075560809190915260a091825260c09290925260e092909252600a80546001600160a01b0319166001600160a01b03948516179055600b805490911694909216939093179190921b60ff60a01b1617905560001960095561240e908161060982396080518181816102640152818161072f015281816108a201528181610c8701528181610da201528181610e08015281816110e30152818161125b015281816113f40152818161149d01528181611597015281816117aa015281816119fb0152611c33015260a0518181816109a00152611c6f015260c05181818161035201528181610609015281816107a9015281816108fd01528181610a67015281816110810152818161129f0152818161144f015281816117f10152611a5d015260e0518181816103740152818161062b015281816107ce015281816108dc01528181610a8901528181610d18015281816112c20152818161142e015281816118140152611a800152f35b631e4fbdf760e01b600052600060045260246000fd5b015190503880610161565b600460009081528281209350601f198516905b8181106103b4575090846001959493921061039b575b505050811b01600455610177565b015160001960f88460031b161c1916905538808061038d565b92936020600181928786015181550195019301610377565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610432575b90601f859493920160051c01905b818110610423575061014a565b60008155849350600101610416565b9091508190610408565b634e487b7160e01b600052602260045260246000fd5b91607f1691610136565b634e487b7160e01b600052604160045260246000fd5b0151905038806100fd565b600360009081528281209350601f198516905b8181106104cd57509084600195949392106104b4575b505050811b01600355610113565b015160001960f88460031b161c191690553880806104a6565b92936020600181928786015181550195019301610490565b60036000529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101916020851061054b575b90601f859493920160051c01905b81811061053c57506100e6565b6000815584935060010161052f565b9091508190610521565b91607f16916100d2565b600080fd5b6040519190601f01601f191682016001600160401b0381118382101761045c57604052565b51906001600160a01b038216820361055f57565b81601f8201121561055f578051906001600160401b03821161045c576105cc601f8301601f1916602001610564565b928284526020838301011161055f5760005b8281106105f357505060206000918301015290565b806020809284010151828287010152016105de56fe608080604052600436101561001357600080fd5b600090813560e01c9081620b46f814611ad15750806302d05d3f14611aa85780630694db1e146119e457806306fdde0314611927578063095ea7b31461187d5780630e120fa11461185f5780631031e36e1461179357806310cc58921461177757806318160ddd1461175957806323b872dd14611679578063295a5212146116365780632e0f2625146115645780632e1a7d4d14611580578063313ce5671461156457806333fdbbe51461154157806334618c4d146115235780634bde38c8146114fa57806353e23e2e146114d4578063541ec31714611485578063569e3e02146113b55780635b5739621461131c5780635c975abb146112f657806366410994146112445780636810209d146111345780636945c5ea146110c35780636e9ec2d9146110a45780636ed71ede1461106957806370a0823114611031578063715018a614610fd4578063769aee8314610fb557806383caf27514610f97578063853fd42114610f715780638da5cb5b14610f4857806395d89b4114610e3f5780639666de2314610df057806398efca5414610dd1578063a1794bcd14610d8c578063a24bcf4614610d6d578063a9059cbb14610d3b578063ad27179614610d00578063ae10426514610cd9578063b575b73814610c62578063c7876ea414610c44578063d96a094a146109c3578063da284dcc14610988578063dd62ed3e14610933578063de4b326214610863578063e12a43e71461071d578063e4849b3214610498578063f2fde38b1461040f5763fa64ef501461025157600080fd5b3461040c57602036600319011261040c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03811691906004359061029e338514611b66565b838352826020526102b58260408520541015611f1e565b6102be826121e7565b926102cb84471015611f6a565b6102d583836122f5565b670de0b6b3a7640000840294841595858104670de0b6b3a7640000148717156103f8578280878194610308898496611df3565b9a83906103ef575bf1156103e35750926000805160206123b9833981519152917f9649ad0ee23296902c3e5aeea5c80cb0eae49caf2ca5404f032ba7707a7d5df9846020966103a27f0000000000000000000000000000000000000000000000000000000000000000957f000000000000000000000000000000000000000000000000000000000000000095604051948594888a87611eef565b0390a16103d86103b3600254611ecc565b6040519384934291859094939260609260808301968352602083015260408201520152565b0390a1604051908152f35b604051903d90823e3d90fd5b506108fc610310565b634e487b7160e01b83526011600452602483fd5b80fd5b503461040c57602036600319011261040c57610429611b35565b6104316121be565b6001600160a01b0316801561048457600580546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b503461040c57602036600319011261040c57600435906104b6612277565b6104be611c0b565b338152806020526104d58260408320541015611f1e565b6104de8261212b565b906103e88202928215938381046103e8148517156103f8576103ca9004600f810290808204600f14901517156103f8576103e89004916105324761052b856105268189611bfe565b611bfe565b1115611f6a565b61053c82336122f5565b670de0b6b3a76400008402848104670de0b6b3a76400001486171561070957610566838392611df3565b958582916106ff575b8280929181923390f1156103e35760018060a01b03600a541681808080878195811596876106f6575bf1156106e95781808086819460018060a01b03600b54169083906106e0575bf1156103e357506020937f0baf2218b55f879cd170b80e18a05568de52b011d16e0edcfe666deec1d369819260e0927f9649ad0ee23296902c3e5aeea5c80cb0eae49caf2ca5404f032ba7707a7d5df97f0000000000000000000000000000000000000000000000000000000000000000937f00000000000000000000000000000000000000000000000000000000000000009261065e6040519283928b33888b87611eef565b0390a16000805160206123b98339815191526106a461067e600254611ecc565b604051918291428689859094939260609260808301968352602083015260408201520152565b0390a160405192835286830152806040830152606082015260a06080820152600460a0820152631cd95b1b60e21b60c0820152a1604051908152f35b506108fc6105b7565b50604051903d90823e3d90fd5b506108fc610598565b6108fc915061056f565b634e487b7160e01b82526011600452602482fd5b50604036600319011261040c576024357f0000000000000000000000000000000000000000000000000000000000000000600435610765336001600160a01b03841614611b66565b82341061081e577fb461cb86c12522dc130fc68e82c7889ec2ad77139953bf116fab36f27768a5436000805160206123b9833981519152936107a78385612297565b7f0000000000000000000000000000000000000000000000000000000000000000936108077f0000000000000000000000000000000000000000000000000000000000000000946107f88185611df3565b90604051948594888a87611eef565b0390a16108186103b3600254611ecc565b0390a180f35b60405162461bcd60e51b815260206004820152601860248201527f496e636f7272656374207061796d656e7420616d6f756e7400000000000000006044820152606490fd5b503461040c57602036600319011261040c577fc8feb121a4b9a3f31571b042fd0ec0fcc7f4bec75a956abaaa63bed559d555536108186004356108d0337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611b66565b806006556040519182917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846040919493926060820195825260208201520152565b503461040c57604036600319011261040c57604061094f611b35565b91610958611b50565b9260018060a01b031681526001602052209060018060a01b03166000526020526020604060002054604051908152f35b503461040c578060031936011261040c5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50602036600319011261040c576004356109db612277565b6109e3611c0b565b6109ec81612207565b90600f820291801592818104600f14841715610bf457610406900492813410610c0857610a198333612297565b670de0b6b3a7640000820290828204670de0b6b3a7640000141715610bf457610a43838692611df3565b917fb461cb86c12522dc130fc68e82c7889ec2ad77139953bf116fab36f27768a5437f0000000000000000000000000000000000000000000000000000000000000000937f000000000000000000000000000000000000000000000000000000000000000095610abc60405192839286338b8b87611eef565b0390a16000805160206123b9833981519152610b02610adc600254611ecc565b604051918291428989859094939260609260808301968352602083015260408201520152565b0390a1803411610bc7575b5060018060a01b03600a54168180808088819581159687610bbe575bf1156106e957600b5482918291829188916001600160a01b0316908390610bb5575bf115610baa577f0baf2218b55f879cd170b80e18a05568de52b011d16e0edcfe666deec1d369819260e0926040519283526020830152806040830152606082015260a06080820152600360a08201526262757960e81b60c0820152a180f35b6040513d85823e3d90fd5b506108fc610b4b565b506108fc610b29565b8180610bd4819334611dd3565b818115610beb575b3390f115610baa578338610b0d565b506108fc610bdc565b634e487b7160e01b85526011600452602485fd5b60405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606490fd5b503461040c578060031936011261040c576020600654604051908152f35b503461040c57602036600319011261040c57600435801515809103610cd557610cb5337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611b66565b6005805460ff60b01b191660b09290921b60ff60b01b1691909117905580f35b5080fd5b503461040c57602036600319011261040c576020610cf8600435611ecc565b604051908152f35b503461040c578060031936011261040c5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461040c57604036600319011261040c57610d62610d58611b35565b6024359033611fb6565b602060405160018152f35b503461040c57602036600319011261040c576020610cf8600435611e13565b503461040c578060031936011261040c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461040c57602036600319011261040c576020610cf8600435612207565b503461040c57602036600319011261040c57610e36337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611b66565b60043560085580f35b503461040c578060031936011261040c576040519080600454908160011c91600181168015610f3e575b602084108114610f2a57838652908115610f035750600114610ea6575b610ea284610e9681860382611bc6565b60405191829182611aec565b0390f35b600481527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b808210610ee957509091508101602001610e9682610e86565b919260018160209254838588010152019101909291610ed0565b60ff191660208087019190915292151560051b85019092019250610e969150839050610e86565b634e487b7160e01b83526022600452602483fd5b92607f1692610e69565b503461040c578060031936011261040c576005546040516001600160a01b039091168152602090f35b503461040c578060031936011261040c57602060ff60055460b01c166040519015158152f35b503461040c578060031936011261040c576020600754604051908152f35b503461040c57602036600319011261040c576020610cf86004356121e7565b503461040c578060031936011261040c57610fed6121be565b600580546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461040c57602036600319011261040c576020906040906001600160a01b03611059611b35565b1681528083522054604051908152f35b503461040c578060031936011261040c5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461040c57602036600319011261040c576020610cf860043561212b565b503461040c57602036600319011261040c576110dd611b35565b611111337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611b66565b60018060a01b03166bffffffffffffffffffffffff60a01b600b541617600b5580f35b503461040c57602036600319011261040c576004356002549060075491611175670de0b6b3a764000061116b8560011c9386611de0565b0460065490611bfe565b916103e88102908082046103e81490151715610bf457610406900461119a8380611de0565b916001600160fe1b03811603610bf457916111d26111cd6111d7936111c788966003198960011b16611de0565b90611bfe565b612376565b611dd3565b91600119169261123057506111ed82151561207b565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561121a57602091610cf891611df3565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b81526011600452602490fd5b503461040c578060031936011261040c57611289337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611b66565b6000805160206123b983398151915260806040517f000000000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006020820152426040820152836060820152a180f35b503461040c578060031936011261040c57602060ff60055460a01c166040519015158152f35b503461040c57602036600319011261040c576004356103ca8102908082046103ca1490151715610709576002549060075491611368670de0b6b3a764000061116b8560011c9386611de0565b916113738380611de0565b916001600160fe1b03811603610bf4576111cd6113a393926111c76103e86111d294046003198860011b16611de0565b906001191691506111ed82151561207b565b503461040c57602036600319011261040c577fb4c5c83aff60e77a0838320a228e9da812a84a9dc369946909d9ef62cb248b4e610818600435611422337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611b66565b806007556040519182917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846040919493926060820195825260208201520152565b503461040c57602036600319011261040c576114cb337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611b66565b60043560095580f35b503461040c578060031936011261040c57602060ff60055460a81c166040519015158152f35b503461040c578060031936011261040c57600b546040516001600160a01b039091168152602090f35b503461040c578060031936011261040c576020600854604051908152f35b503461040c578060031936011261040c576020604051670de0b6b3a76400008152f35b503461040c578060031936011261040c57602060405160128152f35b503461040c57602036600319011261040c576004357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115ca338214611b66565b4782116115f1578280809381938282156115e8575bf1156103e35780f35b506108fc6115df565b60405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420726573657276652062616c616e6365000000006044820152606490fd5b503461040c578060031936011261040c5760ff600b5460a01c1660405190600181101561166557602092508152f35b634e487b7160e01b83526021600452602483fd5b503461040c57606036600319011261040c57611693611b35565b61169b611b50565b6001600160a01b0382168084526001602081815260408087203388529091528520546044359492909182016116d7575b5050610d629350611fb6565b84821061173e57801561172a573315611716576040868692610d629852600160205281812060018060a01b0333168252602052209103905538806116cb565b634a1406b160e11b86526004869052602486fd5b63e602df0560e01b86526004869052602486fd5b6064868684637dc7a0d960e11b835233600452602452604452fd5b503461040c578060031936011261040c576020600254604051908152f35b503461040c578060031936011261040c57611790611c0b565b80f35b503461040c578060031936011261040c576117d8337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611b66565b6005805460ff60a81b1916600160a81b179055604080517f000000000000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060208201527f09897bb64196ad96c20605d3138c3db57e1beb240a07d42daeed0565b1d046ad9190a180f35b503461040c578060031936011261040c576020600954604051908152f35b503461040c57604036600319011261040c57611897611b35565b602435903315611913576001600160a01b03169182156118ff5760408291338152600160205281812085825260205220556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b81526004819052602490fd5b63e602df0560e01b83526004839052602483fd5b503461040c578060031936011261040c576040519080600354908160011c916001811680156119da575b602084108114610f2a57838652908115610f03575060011461197d57610ea284610e9681860382611bc6565b600381527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106119c057509091508101602001610e9682610e86565b9192600181602092548385880101520191019092916119a7565b92607f1692611951565b503461040c578060031936011261040c57611a29337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611b66565b60ff60a81b19600554166005557fd1677f71a0b86e781379c353f2195da5af2e70e5c7a148f31fcbc45d26997d22604080517f000000000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006020820152a180f35b503461040c578060031936011261040c57600a546040516001600160a01b039091168152602090f35b905034610cd55781600319360112610cd55780600f60209252f35b91909160208152825180602083015260005b818110611b1f575060409293506000838284010152601f8019910116010190565b8060208092870101516040828601015201611afe565b600435906001600160a01b0382168203611b4b57565b600080fd5b602435906001600160a01b0382168203611b4b57565b15611b6d57565b60405162461bcd60e51b815260206004820152602b60248201527f4f6e6c79206d61726b657420636f6e74726163742063616e2063616c6c20746860448201526a34b990333ab731ba34b7b760a91b6064820152608490fd5b90601f8019910116810190811067ffffffffffffffff821117611be857604052565b634e487b7160e01b600052604160045260246000fd5b9190820180921161121a57565b60055460ff8160b01c1615600014611d685760405163a65726c560e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215611d5c57600092611d28575b507f000000000000000000000000000000000000000000000000000000000000000091824210928315611d13575b505081611d04575b5015611caa57565b60405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574206973206578706972656420616e642074726164696e6720697360448201526b081b9bdd08185b1b1bddd95960a21b6064820152608490fd5b60ff915060a81c161538611ca2565b611d1e929350611bfe565b4211903880611c9a565b9091506020813d602011611d54575b81611d4460209383611bc6565b81010312611b4b57519038611c6c565b3d9150611d37565b6040513d6000823e3d90fd5b506008544210611d7457565b60405162461bcd60e51b815260206004820152603160248201527f4d61726b6574206973207265736f6c76656420616e642074726164696e6720696044820152701cc81b9bdd08185b1b1bddd959081e595d607a1b6064820152608490fd5b9190820391821161121a57565b8181029291811591840414171561121a57565b8115611dfd570490565b634e487b7160e01b600052601260045260246000fd5b60008115611ec7576002549160075492611e3d670de0b6b3a764000061116b8660011c9387611de0565b91611e488380611de0565b916001600160fe1b03811603611eb3576111cd611e7493926111c76111d2936003198960011b16611de0565b91600119169050611e8681151561207b565b670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561121a57611eb091611df3565b90565b634e487b7160e01b84526011600452602484fd5b905090565b611eb090670de0b6b3a7640000611ee860065492600754611de0565b0490611bfe565b9260a094919796959260c085019885526020850152600180861b03166040840152606083015260808201520152565b15611f2557565b60405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742062616c616e636520746f2073656c6c000000006044820152606490fd5b15611f7157565b60405162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e74207265736572766520746f20706179206f7574006044820152606490fd5b6001600160a01b0316908115612065576001600160a01b031691821561204f5760008281528060205260408120548281106120355791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b916064928463391434e360e21b8452600452602452604452fd5b63ec442f0560e01b600052600060045260246000fd5b634b637e8f60e11b600052600060045260246000fd5b1561208257565b60405162461bcd60e51b815260206004820152602560248201527f44656e6f6d696e61746f72206d7573742062652067726561746572207468616e604482015264207a65726f60d81b6064820152608490fd5b156120dc57565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e20616d6f756e74206578636565647320746f74616c20737570706c6044820152607960f81b6064820152608490fd5b61219490670de0b6b3a7640000611ee86002549261214b848211156120d5565b61218e671bc16d674ec800006121848561217c612176868361216f82600654611de0565b049a611dd3565b86611de0565b049380611de0565b0460075492611bfe565b90611de0565b600f810290808204600f148115171561121a576121b86103e8611eb0930480611bfe565b90611dd3565b6005546001600160a01b031633036121d257565b63118cdaa760e01b6000523360045260246000fd5b611eb090670de0b6b3a7640000611ee86002549261214b848211156120d5565b61224390670de0b6b3a7640000611ee86002549261218e671bc16d674ec800006121848561217c8161223b87600654611de0565b049886611de0565b8060011b908082046002148115171561121a57600f820291808304600f149015171561121a576103e8611eb0920490611bfe565b60ff60055460a01c1661228657565b63d93c066560e01b60005260046000fd5b6001600160a01b031690811561204f576122b381600254611bfe565b6002557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602060009284845283825260408420818154019055604051908152a3565b6001600160a01b031680156120655760009181835282602052604083205481811061235d57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926020928587528684520360408620558060025403600255604051908152a3565b6064939263391434e360e21b8452600452602452604452fd5b80156123b2576001810180821161121a5760011c815b82821061239857505090565b9091506123a9826105268184611df3565b60011c9061238c565b5060009056fe11db4f8d26695a880a9a2ce8b75c6f8165386916a5143ff81f66886967aabbd0a2646970667358221220c9352d8420df8ce30b916bb6253afa4eb879142593cee230f82d578bf6568caa64736f6c634300081a0033000000000000000000000000c5412e5cacdc516801dfeebef2d06e4e0545e84c000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000066eaced0000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000010000000000000000000000007be76455de5052c8605fd8b49bd29af8826ad27700000000000000000000000078200f6a304e216268bed6fc5289bde077fd7583000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024e4f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024e4f000000000000000000000000000000000000000000000000000000000000