[ { "inputs": [], "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": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "name": "DelegateVotesChanged", "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": "snapshotBlock", "type": "uint256" } ], "name": "SnapshotBlockSet", "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": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "calculateReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint32", "name": "fromBlock", "type": "uint32" }, { "internalType": "uint224", "name": "votes", "type": "uint224" } ], "internalType": "struct ERC20Votes.Checkpoint", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimMyReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "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": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "halvingBlockNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "hasReceivedHalvingReward", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setRandomSnapshotBlock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "snapshotBlock", "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": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101606040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610140523480156200003757600080fd5b506040518060400160405280600b81526020016a2430b63b34b73390233ab760a91b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600b81526020016a2430b63b34b73390233ab760a91b815250604051806040016040528060088152602001672448414c5649465560c01b8152508160039081620000cd91906200097c565b506004620000dc82826200097c565b5050825160209384012082519284019290922060e08390526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818901819052818301979097526060810194909452608080850193909352308483018190528151808603909301835260c09485019091528151919096012090529290925261012052506200017b905033620001a6565b6001600a5562000199336c01431e0fae6d7217caa0000000620001f8565b62cc6a86600b5562000aa0565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152602081905260409020541580156200023757506001600160a01b0382811660009081526006602052604090205416155b15620002495762000249828062000264565b620002608282620002e560201b620010ba1760201c565b5050565b6001600160a01b038281166000818152600660208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4620002df82848362000396565b50505050565b620002fc8282620004d260201b6200114a1760201c565b6001600160e01b0362000310620005c18216565b11156200037d5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084015b60405180910390fd5b620002df600862001235620005c760201b1783620005de565b816001600160a01b0316836001600160a01b031614158015620003b95750600081115b15620004cd576001600160a01b0383161562000446576001600160a01b03831660009081526007602090815260408220829162000403919062000790901b620012411785620005de565b91509150846001600160a01b031660008051602062002dc583398151915283836040516200043b929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615620004cd576001600160a01b0382166000908152600760209081526040822082916200048a9190620005c7901b620012351785620005de565b91509150836001600160a01b031660008051602062002dc58339815191528383604051620004c2929190918252602082015260400190565b60405180910390a250505b505050565b6001600160a01b0382166200052a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000374565b80600260008282546200053e919062000a5e565b90915550506001600160a01b038216600090815260208190526040812080548392906200056d90849062000a5e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000260600083836200079e565b60025490565b6000620005d5828462000a5e565b90505b92915050565b825460009081908015620006305785620005fa60018362000a74565b815481106200060d576200060d62000a8a565b60009182526020909120015464010000000090046001600160e01b031662000633565b60005b6001600160e01b031692506200064a83858760201c565b91506000811180156200068e575043866200066760018462000a74565b815481106200067a576200067a62000a8a565b60009182526020909120015463ffffffff16145b156200070257620006aa82620007b660201b6200124d1760201c565b86620006b860018462000a74565b81548110620006cb57620006cb62000a8a565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555062000787565b85604051806040016040528062000724436200082560201b620012ba1760201c565b63ffffffff1681526020016200074585620007b660201b6200124d1760201c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b6000620005d5828462000a74565b620004cd8383836200088c60201b6200131f1760201c565b60006001600160e01b03821115620008215760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840162000374565b5090565b600063ffffffff821115620008215760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840162000374565b620008a4838383620004cd60201b6200133a1760201c565b6001600160a01b03838116600090815260066020526040808220548584168352912054620004cd9291821691168362000396565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200090357607f821691505b6020821081036200092457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004cd57600081815260208120601f850160051c81016020861015620009535750805b601f850160051c820191505b8181101562000974578281556001016200095f565b505050505050565b81516001600160401b03811115620009985762000998620008d8565b620009b081620009a98454620008ee565b846200092a565b602080601f831160018114620009e85760008415620009cf5750858301515b600019600386901b1c1916600185901b17855562000974565b600085815260208120601f198616915b8281101562000a1957888601518255948401946001909101908401620009f8565b508582101562000a385787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820180821115620005d857620005d862000a48565b81810381811115620005d857620005d862000a48565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e0516101005161012051610140516122ca62000afb6000396000610e1c01526000611711015260006117600152600061173b01526000611694015260006116be015260006116e801526122ca6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636fcfff451161010f578063a457c2d7116100a2578063d82e396211610071578063d82e396214610409578063dd62ed3e1461041c578063f1127ed814610455578063f2fde38b1461049257600080fd5b8063a457c2d7146103bd578063a9059cbb146103d0578063c3cda520146103e3578063d505accf146103f657600080fd5b80638da5cb5b116100de5780638da5cb5b1461037e5780638e539e8c1461038f57806395d89b41146103a25780639ab24eb0146103aa57600080fd5b80636fcfff451461031257806370a082311461033a578063715018a6146103635780637ecebe001461036b57600080fd5b806323b872dd116101875780633a46b1a8116101565780633a46b1a81461029e578063560617a5146102b1578063587cde1e146102d45780635c19a95c146102ff57600080fd5b806323b872dd14610261578063313ce567146102745780633644e51514610283578063395093511461028b57600080fd5b80631f1c26e0116101c35780631f1c26e01461023d5780631f54e4c7146102475780631f90b2a514610250578063233eb5481461025957600080fd5b806306fdde03146101ea578063095ea7b31461020857806318160ddd1461022b575b600080fd5b6101f26104a5565b6040516101ff9190611f70565b60405180910390f35b61021b610216366004611fda565b610537565b60405190151581526020016101ff565b6002545b6040519081526020016101ff565b61024561054e565b005b61022f600b5481565b61022f600c5481565b610245610731565b61021b61026f366004612004565b6108ba565b604051601281526020016101ff565b61022f610964565b61021b610299366004611fda565b610973565b61022f6102ac366004611fda565b6109af565b61021b6102bf366004612040565b600d6020526000908152604090205460ff1681565b6102e76102e2366004612040565b610a29565b6040516001600160a01b0390911681526020016101ff565b61024561030d366004612040565b610a47565b610325610320366004612040565b610a54565b60405163ffffffff90911681526020016101ff565b61022f610348366004612040565b6001600160a01b031660009081526020819052604090205490565b610245610a76565b61022f610379366004612040565b610adc565b6009546001600160a01b03166102e7565b61022f61039d36600461205b565b610afa565b6101f2610b56565b61022f6103b8366004612040565b610b65565b61021b6103cb366004611fda565b610bec565b61021b6103de366004611fda565b610c85565b6102456103f1366004612085565b610c92565b6102456104043660046120dd565b610dc8565b61022f610417366004612040565b610f2c565b61022f61042a366004612147565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61046861046336600461217a565b610f6e565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016101ff565b6102456104a0366004612040565b610ff2565b6060600380546104b4906121ba565b80601f01602080910402602001604051908101604052809291908181526020018280546104e0906121ba565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b600061054433848461133f565b5060015b92915050565b6002600a54036105a55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600a55600b5443116105fb5760405162461bcd60e51b815260206004820152601d60248201527f48616c76696e6720686173206e6f7420796574206f636375727265642e000000604482015260640161059c565b336000908152600d602052604090205460ff16156106545760405162461bcd60e51b815260206004820152601660248201527514995dd85c9908185b1c9958591e4818db185a5b595960521b604482015260640161059c565b600c546000036106a65760405162461bcd60e51b815260206004820152601760248201527f536e617073686f7420626c6f636b206e6f74207365742e000000000000000000604482015260640161059c565b600b5443116106f75760405162461bcd60e51b815260206004820152601960248201527f436c61696d20706572696f64206e6f7420737461727465642e00000000000000604482015260640161059c565b600061070233610f2c565b336000818152600d60205260409020805460ff191660011790559091506107299082611463565b506001600a55565b600c54156107815760405162461bcd60e51b815260206004820152601760248201527f43616e206f6e6c7920626520736574746564206f6e6365000000000000000000604482015260640161059c565b60006202a300600b546107949190612204565b9050600b5443116107fd5760405162461bcd60e51b815260206004820152602d60248201527f43616e206f6e6c792073657420736e617073686f74206265666f72652074686560448201526c1039ba30b93a103930b733b29760991b606482015260840161059c565b600042444160405160200161083793929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c9050600082600b546108629190612204565b90506000610870828461222d565b905061087c8185612241565b600c8190556040519081527f99216bfc0e59fe86e913f017838fed9073901eb86bc7637d20b8529fc43b4ec49060200160405180910390a150505050565b60006108c78484846114b3565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561094c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161059c565b610959853385840361133f565b506001949350505050565b600061096e611687565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105449185906109aa908690612241565b61133f565b6000438210610a005760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e656400604482015260640161059c565b6001600160a01b0383166000908152600760205260409020610a2290836117ae565b9392505050565b6001600160a01b039081166000908152600660205260409020541690565b610a51338261186b565b50565b6001600160a01b038116600090815260076020526040812054610548906112ba565b6009546001600160a01b03163314610ad05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059c565b610ada6000611901565b565b6001600160a01b038116600090815260056020526040812054610548565b6000438210610b4b5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e656400604482015260640161059c565b6105486008836117ae565b6060600480546104b4906121ba565b6001600160a01b0381166000908152600760205260408120548015610bd9576001600160a01b0383166000908152600760205260409020610ba7600183612204565b81548110610bb757610bb7612254565b60009182526020909120015464010000000090046001600160e01b0316610bdc565b60005b6001600160e01b03169392505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c6e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161059c565b610c7b338585840361133f565b5060019392505050565b60006105443384846114b3565b83421115610ce25760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e61747572652065787069726564000000604482015260640161059c565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610d5c90610d549060a00160405160208183030381529060405280519060200120611953565b8585856119a1565b9050610d67816119c9565b8614610db55760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e636500000000000000604482015260640161059c565b610dbf818861186b565b50505050505050565b83421115610e185760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161059c565b60007f0000000000000000000000000000000000000000000000000000000000000000888888610e478c6119c9565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610ea282611953565b90506000610eb2828787876119a1565b9050896001600160a01b0316816001600160a01b031614610f155760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161059c565b610f208a8a8a61133f565b50505050505050505050565b6001600160a01b0381166000908152600d602052604081205460ff1680610f535750600c54155b15610f6057506000919050565b6000610a2283600c546109af565b60408051808201909152600080825260208201526001600160a01b0383166000908152600760205260409020805463ffffffff8416908110610fb257610fb2612254565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6009546001600160a01b0316331461104c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059c565b6001600160a01b0381166110b15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059c565b610a5181611901565b6110c4828261114a565b6002546001600160e01b0310156111365760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b606482015260840161059c565b6111446008611235836119f1565b50505050565b6001600160a01b0382166111a05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161059c565b80600260008282546111b29190612241565b90915550506001600160a01b038216600090815260208190526040812080548392906111df908490612241565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361123160008383611b6a565b5050565b6000610a228284612241565b6000610a228284612204565b60006001600160e01b038211156112b65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161059c565b5090565b600063ffffffff8211156112b65760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161059c565b61133a61132b84610a29565b61133484610a29565b83611b75565b505050565b6001600160a01b0383166113a15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161059c565b6001600160a01b0382166114025760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161059c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821660009081526020819052604090205415801561149a5750600061148f83610a29565b6001600160a01b0316145b156114a9576114a9828361186b565b61123182826110ba565b6001600160a01b0383166115175760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161059c565b6001600160a01b0382166115795760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161059c565b6001600160a01b038316600090815260208190526040902054818110156115f15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161059c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611628908490612241565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161167491815260200190565b60405180910390a3611144848484611b6a565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156116e057507f000000000000000000000000000000000000000000000000000000000000000046145b1561170a57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b818110156118125760006117c98284611cb2565b9050848682815481106117de576117de612254565b60009182526020909120015463ffffffff1611156117fe5780925061180c565b611809816001612241565b91505b506117b5565b81156118565784611824600184612204565b8154811061183457611834612254565b60009182526020909120015464010000000090046001600160e01b0316611859565b60005b6001600160e01b031695945050505050565b600061187683610a29565b90506000611899846001600160a01b031660009081526020819052604090205490565b6001600160a01b0385811660008181526006602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611144828483611b75565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610548611960611687565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006119b287878787611ccd565b915091506119bf81611dba565b5095945050505050565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b825460009081908015611a3c5785611a0a600183612204565b81548110611a1a57611a1a612254565b60009182526020909120015464010000000090046001600160e01b0316611a3f565b60005b6001600160e01b03169250611a5883858763ffffffff16565b9150600081118015611a9657504386611a72600184612204565b81548110611a8257611a82612254565b60009182526020909120015463ffffffff16145b15611af657611aa48261124d565b86611ab0600184612204565b81548110611ac057611ac0612254565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611b61565b856040518060400160405280611b0b436112ba565b63ffffffff168152602001611b1f8561124d565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b61133a83838361131f565b816001600160a01b0316836001600160a01b031614158015611b975750600081115b1561133a576001600160a01b03831615611c25576001600160a01b03831660009081526007602052604081208190611bd290611241856119f1565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611c1a929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561133a576001600160a01b03821660009081526007602052604081208190611c5b90611235856119f1565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611ca3929190918252602082015260400190565b60405180910390a25050505050565b6000611cc1600284841861226a565b610a2290848416612241565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611d045750600090506003611db1565b8460ff16601b14158015611d1c57508460ff16601c14155b15611d2d5750600090506004611db1565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611d81573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611daa57600060019250925050611db1565b9150600090505b94509492505050565b6000816004811115611dce57611dce61227e565b03611dd65750565b6001816004811115611dea57611dea61227e565b03611e375760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161059c565b6002816004811115611e4b57611e4b61227e565b03611e985760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161059c565b6003816004811115611eac57611eac61227e565b03611f045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161059c565b6004816004811115611f1857611f1861227e565b03610a515760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161059c565b600060208083528351808285015260005b81811015611f9d57858101830151858201604001528201611f81565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611fd557600080fd5b919050565b60008060408385031215611fed57600080fd5b611ff683611fbe565b946020939093013593505050565b60008060006060848603121561201957600080fd5b61202284611fbe565b925061203060208501611fbe565b9150604084013590509250925092565b60006020828403121561205257600080fd5b610a2282611fbe565b60006020828403121561206d57600080fd5b5035919050565b803560ff81168114611fd557600080fd5b60008060008060008060c0878903121561209e57600080fd5b6120a787611fbe565b955060208701359450604087013593506120c360608801612074565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a0312156120f857600080fd5b61210188611fbe565b965061210f60208901611fbe565b9550604088013594506060880135935061212b60808901612074565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561215a57600080fd5b61216383611fbe565b915061217160208401611fbe565b90509250929050565b6000806040838503121561218d57600080fd5b61219683611fbe565b9150602083013563ffffffff811681146121af57600080fd5b809150509250929050565b600181811c908216806121ce57607f821691505b6020821081036119eb57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610548576105486121ee565b634e487b7160e01b600052601260045260246000fd5b60008261223c5761223c612217565b500690565b80820180821115610548576105486121ee565b634e487b7160e01b600052603260045260246000fd5b60008261227957612279612217565b500490565b634e487b7160e01b600052602160045260246000fdfea264697066735822122096b31a20a71b06dcd6bc396a57a33033f05fa9d3881ef4a3e204c632f5d096af64736f6c63430008110033dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724