[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_totalSupply", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "CheckpointUnorderedInsertion", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "increasedSupply", "type": "uint256" }, { "internalType": "uint256", "name": "cap", "type": "uint256" } ], "name": "ERC20ExceededSafeSupply", "type": "error" }, { "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": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" }, { "internalType": "uint48", "name": "clock", "type": "uint48" } ], "name": "ERC5805FutureLookup", "type": "error" }, { "inputs": [], "name": "ERC6372InconsistentClock", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "VotesExpiredSignature", "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": 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": "previousVotes", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newVotes", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "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": "CLOCK_MODE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "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": "value", "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" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint48", "name": "_key", "type": "uint48" }, { "internalType": "uint208", "name": "_value", "type": "uint208" } ], "internalType": "struct Checkpoints.Checkpoint208", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clock", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "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": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timepoint", "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": "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": [ { "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": "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": "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" } ]
6101606040523480156200001257600080fd5b5060405162002a8338038062002a8383398101604081905262000035916200094e565b6040805180820190915260018152603160f81b6020820152849081908186600362000061838262000a71565b50600462000070828262000a71565b50620000829150839050600562000141565b610120526200009381600662000141565b61014052815160208084019190912060e052815190820120610100524660a0526200012160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506200013781836200017a565b5050505062000c26565b600060208351101562000161576200015983620001bc565b905062000174565b816200016e848262000a71565b5060ff90505b92915050565b6001600160a01b038216620001aa5760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620001b860008383620001ff565b5050565b600080829050601f81511115620001ea578260405163305a27a960e01b8152600401620001a1919062000b3d565b8051620001f78262000b72565b179392505050565b6200020c83838362000211565b505050565b6200021e83838362000280565b6001600160a01b038316620002735760006200023960025490565b90506001600160d01b03808211156200027057604051630e58ae9360e11b81526004810183905260248101829052604401620001a1565b50505b6200020c838383620003b3565b6001600160a01b038316620002af578060026000828254620002a3919062000bad565b90915550620003239050565b6001600160a01b03831660009081526020819052604090205481811015620003045760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620001a1565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620003415760028054829003905562000360565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003a691815260200190565b60405180910390a3505050565b6001600160a01b038316620003e857620003e5600a620008e56200044b60201b17620003df8462000460565b6200049a565b50505b6001600160a01b038216620004175762000414600a620008f1620004d760201b17620003df8462000460565b50505b6001600160a01b038381166000908152600860205260408082205485841683529120546200020c92918216911683620004e5565b600062000459828462000bc3565b9392505050565b60006001600160d01b0382111562000496576040516306dfcc6560e41b815260d0600482015260248101839052604401620001a1565b5090565b600080620004ca620004ab6200064c565b620004c1620004ba886200065d565b868860201c565b879190620006ac565b915091505b935093915050565b600062000459828462000bed565b816001600160a01b0316836001600160a01b031614158015620005085750600081115b156200020c576001600160a01b03831615620005ab576001600160a01b038316600090815260096020908152604082208291620005569190620004d7901b620008f117620003df8662000460565b6001600160d01b031691506001600160d01b03169150846001600160a01b031660008051602062002a638339815191528383604051620005a0929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156200020c576001600160a01b038216600090815260096020908152604082208291620005f391906200044b901b620008e517620003df8662000460565b6001600160d01b031691506001600160d01b03169150836001600160a01b031660008051602062002a6383398151915283836040516200063d929190918252602082015260400190565b60405180910390a25050505050565b600062000658620006bc565b905090565b80546000908015620006a35762000689836200067b60018462000c10565b600091825260209091200190565b54660100000000000090046001600160d01b031662000459565b60009392505050565b600080620004ca858585620006c9565b600062000658436200084c565b825460009081908015620007ed576000620006eb876200067b60018562000c10565b805490915065ffffffffffff80821691660100000000000090046001600160d01b03169088168211156200073257604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036200078a57866200075d8a6200067b60018862000c10565b80546001600160d01b039290921666010000000000000265ffffffffffff909216919091179055620007de565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f815291909120945191519092166601000000000000029216919091179101555b9450859350620004cf92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a8152918220955192519093166601000000000000029190931617920191909155905081620004cf565b600065ffffffffffff82111562000496576040516306dfcc6560e41b81526030600482015260248101839052604401620001a1565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620008b45781810151838201526020016200089a565b50506000910152565b600082601f830112620008cf57600080fd5b81516001600160401b0380821115620008ec57620008ec62000881565b604051601f8301601f19908116603f0116810190828211818310171562000917576200091762000881565b816040528381528660208588010111156200093157600080fd5b6200094484602083016020890162000897565b9695505050505050565b600080600080608085870312156200096557600080fd5b84516001600160401b03808211156200097d57600080fd5b6200098b88838901620008bd565b95506020870151915080821115620009a257600080fd5b50620009b187828801620008bd565b60408701516060880151919550935090506001600160a01b0381168114620009d857600080fd5b939692955090935050565b600181811c90821680620009f857607f821691505b60208210810362000a1957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020c57600081815260208120601f850160051c8101602086101562000a485750805b601f850160051c820191505b8181101562000a695782815560010162000a54565b505050505050565b81516001600160401b0381111562000a8d5762000a8d62000881565b62000aa58162000a9e8454620009e3565b8462000a1f565b602080601f83116001811462000add576000841562000ac45750858301515b600019600386901b1c1916600185901b17855562000a69565b600085815260208120601f198616915b8281101562000b0e5788860151825594840194600190910190840162000aed565b508582101562000b2d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000825180602084015262000b5e81604085016020870162000897565b601f01601f19169190910160400192915050565b8051602080830151919081101562000a195760001960209190910360031b1b16919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000174576200017462000b97565b6001600160d01b0381811683821601908082111562000be65762000be662000b97565b5092915050565b6001600160d01b0382811682821603908082111562000be65762000be662000b97565b8181038181111562000174576200017462000b97565b60805160a05160c05160e051610100516101205161014051611de262000c816000396000610cf501526000610cc801526000610ac601526000610a9e015260006109f901526000610a2301526000610a4d0152611de26000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c35780639ab24eb01161007c5780639ab24eb0146102fc578063a9059cbb1461030f578063c3cda52014610322578063d505accf14610335578063dd62ed3e14610348578063f1127ed81461038157600080fd5b806370a082311461026b5780637ecebe001461029457806384b0196e146102a75780638e539e8c146102c257806391ddadf4146102d557806395d89b41146102f457600080fd5b80633644e515116101155780633644e515146101c75780633a46b1a8146101cf5780634bf5d7e9146101e2578063587cde1e146101ea5780635c19a95c1461022e5780636fcfff451461024357600080fd5b806306fdde0314610152578063095ea7b31461017057806318160ddd1461019357806323b872dd146101a5578063313ce567146101b8575b600080fd5b61015a6103c0565b60405161016791906119e6565b60405180910390f35b61018361017e366004611a15565b610452565b6040519015158152602001610167565b6002545b604051908152602001610167565b6101836101b3366004611a3f565b61046c565b60405160128152602001610167565b610197610490565b6101976101dd366004611a15565b61049f565b61015a610525565b6102166101f8366004611a7b565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b039091168152602001610167565b61024161023c366004611a7b565b61059d565b005b610256610251366004611a7b565b6105ac565b60405163ffffffff9091168152602001610167565b610197610279366004611a7b565b6001600160a01b031660009081526020819052604090205490565b6101976102a2366004611a7b565b6105b7565b6102af6105c2565b6040516101679796959493929190611a96565b6101976102d0366004611b2c565b610608565b6102dd610672565b60405165ffffffffffff9091168152602001610167565b61015a61067c565b61019761030a366004611a7b565b61068b565b61018361031d366004611a15565b6106bb565b610241610330366004611b56565b6106c9565b610241610343366004611bae565b610786565b610197610356366004611c18565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61039461038f366004611c4b565b6108c0565b60408051825165ffffffffffff1681526020928301516001600160d01b03169281019290925201610167565b6060600380546103cf90611c8b565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90611c8b565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050905090565b6000336104608185856108fd565b60019150505b92915050565b60003361047a85828561090f565b61048585858561098d565b506001949350505050565b600061049a6109ec565b905090565b6000806104aa610672565b90508065ffffffffffff1683106104ea57604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b6105146104f684610b17565b6001600160a01b038616600090815260096020526040902090610b4e565b6001600160d01b0316949350505050565b606061052f610c04565b65ffffffffffff1661053f610672565b65ffffffffffff1614610565576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336105a88183610c0f565b5050565b600061046682610c81565b600061046682610ca3565b6000606080600080600060606105d6610cc1565b6105de610cee565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600080610613610672565b90508065ffffffffffff16831061064e57604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044016104e1565b61066261065a84610b17565b600a90610b4e565b6001600160d01b03169392505050565b600061049a610c04565b6060600480546103cf90611c8b565b6001600160a01b03811660009081526009602052604081206106ac90610d1b565b6001600160d01b031692915050565b60003361046081858561098d565b834211156106ed57604051632341d78760e11b8152600481018590526024016104e1565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906107679061075f9060a00160405160208183030381529060405280519060200120610d54565b858585610d81565b90506107738187610daf565b61077d8188610c0f565b50505050505050565b834211156107aa5760405163313c898160e11b8152600481018590526024016104e1565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107f78c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061085282610d54565b9050600061086282878787610d81565b9050896001600160a01b0316816001600160a01b0316146108a9576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016104e1565b6108b48a8a8a6108fd565b50505050505050505050565b60408051808201909152600080825260208201526108de8383610e02565b9392505050565b60006108de8284611cdb565b60006108de8284611d02565b61090a8383836001610e38565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610987578181101561097857604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104e1565b61098784848484036000610e38565b50505050565b6001600160a01b0383166109b757604051634b637e8f60e11b8152600060048201526024016104e1565b6001600160a01b0382166109e15760405163ec442f0560e01b8152600060048201526024016104e1565b61090a838383610f0d565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610a4557507f000000000000000000000000000000000000000000000000000000000000000046145b15610a6f57507f000000000000000000000000000000000000000000000000000000000000000090565b61049a604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610b4a576040516306dfcc6560e41b815260306004820152602481018390526044016104e1565b5090565b815460009081816005811115610bad576000610b6984610f18565b610b739085611d22565b60008881526020902090915081015465ffffffffffff9081169087161015610b9d57809150610bab565b610ba8816001611d35565b92505b505b6000610bbb87878585611071565b90508015610bf657610be087610bd2600184611d22565b600091825260209091200190565b54600160301b90046001600160d01b0316610bf9565b60005b979650505050505050565b600061049a43610b17565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461090a8183610c7c866110d3565b6110f1565b6001600160a01b0381166000908152600960205260408120546104669061125d565b6001600160a01b038116600090815260076020526040812054610466565b606061049a7f0000000000000000000000000000000000000000000000000000000000000000600561128e565b606061049a7f0000000000000000000000000000000000000000000000000000000000000000600661128e565b80546000908015610d4b57610d3583610bd2600184611d22565b54600160301b90046001600160d01b03166108de565b60009392505050565b6000610466610d616109ec565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d9388888888611339565b925092509250610da38282611408565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461090a576040516301d4b62360e61b81526001600160a01b0384166004820152602481018290526044016104e1565b60408051808201909152600080825260208201526001600160a01b03831660009081526009602052604090206108de90836114c1565b6001600160a01b038416610e625760405163e602df0560e01b8152600060048201526024016104e1565b6001600160a01b038316610e8c57604051634a1406b160e11b8152600060048201526024016104e1565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561098757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610eff91815260200190565b60405180910390a350505050565b61090a838383611531565b600060018211610f26575090565b816001600160801b8210610f3f5760809190911c9060401b5b680100000000000000008210610f5a5760409190911c9060201b5b6401000000008210610f715760209190911c9060101b5b620100008210610f865760109190911c9060081b5b6101008210610f9a5760089190911c9060041b5b60108210610fad5760049190911c9060021b5b60048210610fb95760011b5b600302600190811c90818581610fd157610fd1611d48565b048201901c90506001818581610fe957610fe9611d48565b048201901c9050600181858161100157611001611d48565b048201901c9050600181858161101957611019611d48565b048201901c9050600181858161103157611031611d48565b048201901c9050600181858161104957611049611d48565b048201901c905061106881858161106257611062611d48565b04821190565b90039392505050565b60005b818310156110cb5760006110888484611598565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156110b7578092506110c5565b6110c2816001611d35565b93505b50611074565b509392505050565b6001600160a01b038116600090815260208190526040812054610466565b816001600160a01b0316836001600160a01b0316141580156111135750600081115b1561090a576001600160a01b038316156111bb576001600160a01b03831660009081526009602052604081208190611156906108f1611151866115b3565b6115e7565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516111b0929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561090a576001600160a01b038216600090815260096020526040812081906111f4906108e5611151866115b3565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161124e929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610b4a576040516306dfcc6560e41b815260206004820152602481018390526044016104e1565b606060ff83146112a8576112a183611620565b9050610466565b8180546112b490611c8b565b80601f01602080910402602001604051908101604052809291908181526020018280546112e090611c8b565b801561132d5780601f106113025761010080835404028352916020019161132d565b820191906000526020600020905b81548152906001019060200180831161131057829003601f168201915b50505050509050610466565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561137457506000915060039050826113fe565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156113c8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113f4575060009250600191508290506113fe565b9250600091508190505b9450945094915050565b600082600381111561141c5761141c611d5e565b03611425575050565b600182600381111561143957611439611d5e565b036114575760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561146b5761146b611d5e565b0361148c5760405163fce698f760e01b8152600481018290526024016104e1565b60038260038111156114a0576114a0611d5e565b036105a8576040516335e2f38360e21b8152600481018290526024016104e1565b6040805180820190915260008082526020820152826000018263ffffffff16815481106114f0576114f0611d74565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b61153c83838361165f565b6001600160a01b03831661158d57600061155560025490565b90506001600160d01b038082111561158a57604051630e58ae9360e11b815260048101839052602481018290526044016104e1565b50505b61090a838383611789565b60006115a76002848418611d8a565b6108de90848416611d35565b60006001600160d01b03821115610b4a576040516306dfcc6560e41b815260d06004820152602481018390526044016104e1565b6000806116136115f5610672565b61160b61160188610d1b565b868863ffffffff16565b8791906117ff565b915091505b935093915050565b6060600061162d8361180d565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661168a57806002600082825461167f9190611d35565b909155506116fc9050565b6001600160a01b038316600090815260208190526040902054818110156116dd5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016104e1565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661171857600280548290039055611737565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161177c91815260200190565b60405180910390a3505050565b6001600160a01b0383166117ab576117a8600a6108e5611151846115b3565b50505b6001600160a01b0382166117cd576117ca600a6108f1611151846115b3565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461090a929182169116836110f1565b600080611613858585611835565b600060ff8216601f81111561046657604051632cd44ac360e21b815260040160405180910390fd5b82546000908190801561194557600061185387610bd2600185611d22565b805490915065ffffffffffff80821691600160301b90046001600160d01b031690881682111561189657604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036118e657866118bd8a610bd2600188611d22565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611937565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061161892505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081611618565b6000815180845260005b818110156119c6576020818501810151868301820152016119aa565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006108de60208301846119a0565b80356001600160a01b0381168114611a1057600080fd5b919050565b60008060408385031215611a2857600080fd5b611a31836119f9565b946020939093013593505050565b600080600060608486031215611a5457600080fd5b611a5d846119f9565b9250611a6b602085016119f9565b9150604084013590509250925092565b600060208284031215611a8d57600080fd5b6108de826119f9565b60ff60f81b881681526000602060e081840152611ab660e084018a6119a0565b8381036040850152611ac8818a6119a0565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015611b1a57835183529284019291840191600101611afe565b50909c9b505050505050505050505050565b600060208284031215611b3e57600080fd5b5035919050565b803560ff81168114611a1057600080fd5b60008060008060008060c08789031215611b6f57600080fd5b611b78876119f9565b95506020870135945060408701359350611b9460608801611b45565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611bc957600080fd5b611bd2886119f9565b9650611be0602089016119f9565b95506040880135945060608801359350611bfc60808901611b45565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611c2b57600080fd5b611c34836119f9565b9150611c42602084016119f9565b90509250929050565b60008060408385031215611c5e57600080fd5b611c67836119f9565b9150602083013563ffffffff81168114611c8057600080fd5b809150509250929050565b600181811c90821680611c9f57607f821691505b602082108103611cbf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160d01b03818116838216019080821115611cfb57611cfb611cc5565b5092915050565b6001600160d01b03828116828216039080821115611cfb57611cfb611cc5565b8181038181111561046657610466611cc5565b8082018082111561046657610466611cc5565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600082611da757634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212204b22b38b932b4771345eeaa8b9626b7d98a98c7c5c7956377eccf0be2cce344c64736f6c63430008140033dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000f050ae6b61c897877b51302f0c8e293807022a3e0000000000000000000000000000000000000000000000000000000000000003416365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034143450000000000000000000000000000000000000000000000000000000000