[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "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": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "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": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "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": "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": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "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": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_initialSupply", "type": "uint256" } ], "name": "initialize", "outputs": [], "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": "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" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ]
608060405234801561001057600080fd5b5061001961001e565b6100d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561006e5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100cd5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611544806100df6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a257806395d89b411161007157806395d89b4114610236578063a9059cbb1461023e578063b119490e14610251578063d505accf14610264578063dd62ed3e1461027757600080fd5b806370a08231146101e257806379cc6790146101f55780637ecebe001461020857806384b0196e1461021b57600080fd5b8063313ce567116100de578063313ce567146101955780633644e515146101a457806342966c68146101ac57806354fd4d50146101c157600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610182575b600080fd5b61011861028a565b6040516101259190611033565b60405180910390f35b61014161013c366004611069565b610333565b6040519015158152602001610125565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610125565b610141610190366004611093565b61034d565b60405160128152602001610125565b610174610371565b6101bf6101ba3660046110cf565b610380565b005b6040805180820190915260058152640312e302e360dc1b6020820152610118565b6101746101f03660046110e8565b61038d565b6101bf610203366004611069565b6103c0565b6101746102163660046110e8565b6103d9565b6102236103e4565b6040516101259796959493929190611103565b610118610495565b61014161024c366004611069565b6104d4565b6101bf61025f36600461123c565b6104e2565b6101bf6102723660046112a9565b610610565b61017461028536600461131c565b610769565b606060006000805160206114cf8339815191525b90508060030180546102af9061134f565b80601f01602080910402602001604051908101604052809291908181526020018280546102db9061134f565b80156103285780601f106102fd57610100808354040283529160200191610328565b820191906000526020600020905b81548152906001019060200180831161030b57829003601f168201915b505050505091505090565b6000336103418185856107b3565b60019150505b92915050565b60003361035b8582856107c5565b61036685858561082b565b506001949350505050565b600061037b61088a565b905090565b61038a3382610894565b50565b6000806000805160206114cf8339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b6103cb8233836107c5565b6103d58282610894565b5050565b6000610347826108ca565b600060608082808083816000805160206114ef833981519152805490915015801561041157506001810154155b61045a5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b6104626108f3565b61046a610932565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060916000805160206114cf833981519152916102af9061134f565b60003361034181858561082b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156105285750825b905060008267ffffffffffffffff1660011480156105455750303b155b905081158015610553575080155b156105715760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561059b57845460ff60401b1916600160401b1785555b6105a5888861094a565b6105ad61095c565b6105b688610966565b6105c03387610991565b831561060657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b834211156106345760405163313c898160e11b815260048101859052602401610451565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886106a08c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106fb826109c7565b9050600061070b828787876109f4565b9050896001600160a01b0316816001600160a01b031614610752576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610451565b61075d8a8a8a6107b3565b50505050505050505050565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6107c08383836001610a22565b505050565b60006107d18484610769565b90506000198114610825578181101561081657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610451565b61082584848484036000610a22565b50505050565b6001600160a01b03831661085557604051634b637e8f60e11b815260006004820152602401610451565b6001600160a01b03821661087f5760405163ec442f0560e01b815260006004820152602401610451565b6107c0838383610b0a565b600061037b610c48565b6001600160a01b0382166108be57604051634b637e8f60e11b815260006004820152602401610451565b6103d582600083610b0a565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006103a0565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060916000805160206114ef833981519152916102af9061134f565b606060006000805160206114ef83398151915261029e565b610952610cbc565b6103d58282610d05565b610964610cbc565b565b61096e610cbc565b61038a81604051806040016040528060018152602001603160f81b815250610d56565b6001600160a01b0382166109bb5760405163ec442f0560e01b815260006004820152602401610451565b6103d560008383610b0a565b60006103476109d461088a565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610a0688888888610db7565b925092509250610a168282610e86565b50909695505050505050565b6000805160206114cf8339815191526001600160a01b038516610a5b5760405163e602df0560e01b815260006004820152602401610451565b6001600160a01b038416610a8557604051634a1406b160e11b815260006004820152602401610451565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115610b0357836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610afa91815260200190565b60405180910390a35b5050505050565b6000805160206114cf8339815191526001600160a01b038416610b465781816002016000828254610b3b9190611389565b90915550610bb89050565b6001600160a01b03841660009081526020829052604090205482811015610b995760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610451565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316610bd6576002810180548390039055610bf5565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c3a91815260200190565b60405180910390a350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610c73610f3f565b610c7b610fa9565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661096457604051631afcd79f60e31b815260040160405180910390fd5b610d0d610cbc565b6000805160206114cf8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03610d4784826113f8565b506004810161082583826113f8565b610d5e610cbc565b6000805160206114ef8339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610d9884826113f8565b5060038101610da783826113f8565b5060008082556001909101555050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610df25750600091506003905082610e7c565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610e46573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e7257506000925060019150829050610e7c565b9250600091508190505b9450945094915050565b6000826003811115610e9a57610e9a6114b8565b03610ea3575050565b6001826003811115610eb757610eb76114b8565b03610ed55760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ee957610ee96114b8565b03610f0a5760405163fce698f760e01b815260048101829052602401610451565b6003826003811115610f1e57610f1e6114b8565b036103d5576040516335e2f38360e21b815260048101829052602401610451565b60006000805160206114ef83398151915281610f596108f3565b805190915015610f7157805160209091012092915050565b81548015610f80579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b60006000805160206114ef83398151915281610fc3610932565b805190915015610fdb57805160209091012092915050565b60018201548015610f80579392505050565b6000815180845260005b8181101561101357602081850181015186830182015201610ff7565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006110466020830184610fed565b9392505050565b80356001600160a01b038116811461106457600080fd5b919050565b6000806040838503121561107c57600080fd5b6110858361104d565b946020939093013593505050565b6000806000606084860312156110a857600080fd5b6110b18461104d565b92506110bf6020850161104d565b9150604084013590509250925092565b6000602082840312156110e157600080fd5b5035919050565b6000602082840312156110fa57600080fd5b6110468261104d565b60ff60f81b881681526000602060e08184015261112360e084018a610fed565b8381036040850152611135818a610fed565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156111875783518352928401929184019160010161116b565b50909c9b505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126111c057600080fd5b813567ffffffffffffffff808211156111db576111db611199565b604051601f8301601f19908116603f0116810190828211818310171561120357611203611199565b8160405283815286602085880101111561121c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561125157600080fd5b833567ffffffffffffffff8082111561126957600080fd5b611275878388016111af565b9450602086013591508082111561128b57600080fd5b50611298868287016111af565b925050604084013590509250925092565b600080600080600080600060e0888a0312156112c457600080fd5b6112cd8861104d565b96506112db6020890161104d565b95506040880135945060608801359350608088013560ff811681146112ff57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561132f57600080fd5b6113388361104d565b91506113466020840161104d565b90509250929050565b600181811c9082168061136357607f821691505b60208210810361138357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561034757634e487b7160e01b600052601160045260246000fd5b601f8211156107c057600081815260208120601f850160051c810160208610156113d15750805b601f850160051c820191505b818110156113f0578281556001016113dd565b505050505050565b815167ffffffffffffffff81111561141257611412611199565b61142681611420845461134f565b846113aa565b602080601f83116001811461145b57600084156114435750858301515b600019600386901b1c1916600185901b1785556113f0565b600085815260208120601f198616915b8281101561148a5788860151825594840194600190910190840161146b565b50858210156114a85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100a2646970667358221220c25f8c5eaaa99e4ff666ad303e03c6f352ab9303e31c1406a43186df5f0f7b8464736f6c63430008140033