[ { "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": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "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": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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": "amount", "type": "uint256" } ], "name": "burn", "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": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "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": [], "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": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "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": [], "name": "useNonce", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101606040818152346200049b576200001882620004a0565b601b82526020918281017f546974616e204661726d7320496e63656e7469766520546f6b656e00000000008082528351906200005482620004a0565b601b8252858201528351946200006a86620004a0565b6004958681526354494e4360e01b828201528551906200008a82620004a0565b6001808352603160f81b84840190815285516001600160401b039691939187821162000486576003918254918583811c931680156200047b575b898410146200037d578190601f9384811162000425575b508990848311600114620003be57600092620003b2575b505060001982851b1c191690851b1782555b8251928884116200039d578c548581811c9116801562000392575b898210146200037d5782811162000332575b5087918411600114620002c757938394918492600095620002bb575b50501b92600019911b1c19161788555b6200016886620004d2565b946101209586526200017a83620006ac565b96610140978852519020918260e05251902096610100978089524660a0528751938401927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528885015260608401524660808401523060a084015260a0835260c083019383851090851117620002a65750828652815190206080523060c05233156200028f57505060088054336001600160a01b0319821681179092559351936001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3611481938462000865853960805184610f41015260a0518461100d015260c05184610f12015260e05184610f9001525183610fb60152518261052e015251816105580152f35b631e4fbdf760e01b8252600060c490910152602490fd5b604190634e487b7160e01b6000525260246000fd5b0151935038806200014d565b9190601f198416928d60005284896000209460005b8b898383106200031a5750505010620002ff575b50505050811b0188556200015d565b01519060f884600019921b161c1916905538808080620002f0565b868601518955909701969485019488935001620002dc565b8d600052886000208380870160051c8201928b881062000373575b0160051c019086905b8281106200036657505062000131565b6000815501869062000356565b925081926200034d565b60228e634e487b7160e01b6000525260246000fd5b90607f16906200011f565b60418d634e487b7160e01b6000525260246000fd5b015190503880620000f2565b90879350601f19831691866000528b6000209260005b8d8282106200040e5750508411620003f5575b505050811b01825562000104565b015160001983871b60f8161c19169055388080620003e7565b8385015186558b97909501949384019301620003d4565b90915084600052896000208480850160051c8201928c861062000471575b918991869594930160051c01915b82811062000461575050620000db565b6000815585945089910162000451565b9250819262000443565b92607f1692620000c4565b60418c634e487b7160e01b6000525260246000fd5b600080fd5b604081019081106001600160401b03821117620004bc57604052565b634e487b7160e01b600052604160045260246000fd5b8051602091908281101562000571575090601f8251116200051057808251920151908083106200050157501790565b82600019910360031b1b161790565b90604051809263305a27a960e01b82528060048301528251908160248401526000935b82851062000557575050604492506000838284010152601f80199101168101030190fd5b848101820151868601604401529381019385935062000533565b6001600160401b038111620004bc576005928354926001938481811c91168015620006a1575b838210146200068b57601f811162000654575b5081601f8411600114620005ea5750928293918392600094620005de575b50501b916000199060031b1c191617905560ff90565b015192503880620005c8565b919083601f1981168760005284600020946000905b888383106200063957505050106200061f575b505050811b01905560ff90565b015160001960f88460031b161c1916905538808062000612565b858701518855909601959485019487935090810190620005ff565b8560005284601f846000209201871c820191601f8601881c015b8281106200067e575050620005aa565b600081550185906200066e565b634e487b7160e01b600052602260045260246000fd5b90607f169062000597565b8051602090818110156200073a5750601f825111620006d957808251920151908083106200050157501790565b90604051809263305a27a960e01b82528060048301528251908160248401526000935b82851062000720575050604492506000838284010152601f80199101168101030190fd5b8481018201518686016044015293810193859350620006fc565b906001600160401b038211620004bc57600654926001938481811c9116801562000859575b838210146200068b57601f81116200081f575b5081601f8411600114620007b35750928293918392600094620007a7575b50501b916000199060031b1c19161760065560ff90565b01519250388062000790565b919083601f198116600660005284600020946000905b88838310620008045750505010620007ea575b505050811b0160065560ff90565b015160001960f88460031b161c19169055388080620007dc565b858701518855909601959485019487935090810190620007c9565b600660005284601f84600020920160051c820191601f860160051c015b8281106200084c57505062000772565b600081550185906200083c565b90607f16906200075f56fe6080604081815260048036101561001557600080fd5b600092833560e01c90816301ffc9a714610bb05750806306fdde0314610ad5578063095ea7b314610aab57806318160ddd14610a8c57806323b872dd1461094f578063313ce567146109335780633644e5151461090f57806340c10f191461084757806342966c681461075f57806369615a4c1461073557806370a08231146106ff578063715018a6146106895780637ecebe001461065257806384b0196e146105175780638da5cb5b146104ef57806395d89b4114610400578063a9059cbb146103cf578063d505accf14610208578063dd62ed3e146101bb5763f2fde38b146100ff57600080fd5b346101b75760203660031901126101b757610118610d22565b90610121611033565b6001600160a01b03809216928315610188575050600854827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600855167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b908460249251917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352820152fd5b8280fd5b505034610204578060031936011261020457806020926101d9610d22565b6101e1610d3d565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b5080fd5b508290346102045760e036600319011261020457610224610d22565b61022c610d3d565b90604435926064356084359060ff821682036103cb5780421161039c5761026f846001600160a01b03166000526007602052604060002080549060018201905590565b91885160208101907f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c982526001600160a01b039384881695868d840152858a1660608401528a608084015260a083015260c082015260c0815260e0810181811067ffffffffffffffff821117610389578b5251902061033e91610335916102f4610f08565b908c51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220611316565b909291926113a6565b168181036103555786610352878787611077565b80f35b604493508751927f4b800e460000000000000000000000000000000000000000000000000000000084528301526024820152fd5b60248b604189634e487b7160e01b835252fd5b826024918951917f62791302000000000000000000000000000000000000000000000000000000008352820152fd5b8680fd5b5050346102045780600319360112610204576020906103f96103ef610d22565b6024359033610de1565b5160018152f35b5090346101b757826003193601126101b757805183819490845461042381610d53565b91828552602096600192886001821691826000146104c557505060011461046a575b858861046689610457848a0385610dbf565b51928284938452830190610ce2565b0390f35b815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8284106104ad575050508201018161045761046638610445565b8054848a018601528895508794909301928101610493565b60ff19168882015294151560051b8701909401945085935061045792506104669150389050610445565b5050346102045781600319360112610204576020906001600160a01b03600854169051908152f35b5090346101b757826003193601126101b7576105527f000000000000000000000000000000000000000000000000000000000000000061113a565b9261057c7f0000000000000000000000000000000000000000000000000000000000000000611256565b90825192602092602085019585871067ffffffffffffffff88111761063f57509260206105f58388966105e8998b9996528686528151998a997f0f000000000000000000000000000000000000000000000000000000000000008b5260e0868c015260e08b0190610ce2565b91898303908a0152610ce2565b924660608801523060808801528460a088015286840360c088015251928381520193925b82811061062857505050500390f35b835185528695509381019392810192600101610619565b836041602492634e487b7160e01b835252fd5b50503461020457602036600319011261020457806020926001600160a01b03610679610d22565b1681526007845220549051908152f35b83346106fc57806003193601126106fc576106a2611033565b806001600160a01b036008547fffffffffffffffffffffffff00000000000000000000000000000000000000008116600855167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b50503461020457602036600319011261020457806020926001600160a01b03610726610d22565b16815280845220549051908152f35b83346106fc57806003193601126106fc573360009081526007602052604090208054600101905580f35b50919034610204576020366003190112610204578235903315610818573383528260205280832054938285106107d457508183943385528460205203818420558160025403600255519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a380f35b90517fe450d38c0000000000000000000000000000000000000000000000000000000081523391810191825260208201859052604082018390529081906060010390fd5b838360249251917f96c6fd1e000000000000000000000000000000000000000000000000000000008352820152fd5b5090346101b757806003193601126101b757610861610d22565b906001600160a01b0360243592610876611033565b169283156108e157600254908382018092116108ce575084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9260209260025585855284835280852082815401905551908152a380f35b856011602492634e487b7160e01b835252fd5b8460249251917fec442f05000000000000000000000000000000000000000000000000000000008352820152fd5b50503461020457816003193601126102045760209061092c610f08565b9051908152f35b5050346102045781600319360112610204576020905160128152f35b5082346106fc5760603660031901126106fc5761096a610d22565b610972610d3d565b91604435936001600160a01b0383168083526001602052868320338452602052868320549160001983036109af575b6020886103f9898989610de1565b868310610a47578115610a185733156109e9575082526001602090815286832033845281529186902090859003905582906103f9876109a1565b602490848951917f94280d62000000000000000000000000000000000000000000000000000000008352820152fd5b602490848951917fe602df05000000000000000000000000000000000000000000000000000000008352820152fd5b87517ffb8f41b2000000000000000000000000000000000000000000000000000000008152339181019182526020820193909352604081018790528291506060010390fd5b5050346102045781600319360112610204576020906002549051908152f35b5050346102045780600319360112610204576020906103f9610acb610d22565b6024359033611077565b8284346106fc57806003193601126106fc578151918282600354610af881610d53565b9081845260209560019187600182169182600014610b89575050600114610b2d575b5050506104669291610457910385610dbf565b9190869350600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410610b715750505082010181610457610466610b1a565b8054848a018601528895508794909301928101610b58565b60ff19168782015293151560051b8601909301935084925061045791506104669050610b1a565b925050346101b75760203660031901126101b757357fffffffff0000000000000000000000000000000000000000000000000000000081168091036101b757602092507f36372b07000000000000000000000000000000000000000000000000000000008114908115610cb8575b8115610c8e575b8115610c64575b8115610c3a575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438610c33565b7f42966c680000000000000000000000000000000000000000000000000000000081149150610c2c565b7fcd64c4420000000000000000000000000000000000000000000000000000000081149150610c25565b7f9d8ff7da0000000000000000000000000000000000000000000000000000000081149150610c1e565b919082519283825260005b848110610d0e575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610ced565b600435906001600160a01b0382168203610d3857565b600080fd5b602435906001600160a01b0382168203610d3857565b90600182811c92168015610d83575b6020831014610d6d57565b634e487b7160e01b600052602260045260246000fd5b91607f1691610d62565b6040810190811067ffffffffffffffff821117610da957604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610da957604052565b916001600160a01b03808416928315610ed75716928315610ea65760009083825281602052604082205490838210610e5b575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b6040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60246040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152fd5b60246040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630148061100a575b15610f63577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610da95760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614610f3a565b6001600160a01b0360085416330361104757565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b6001600160a01b0380911691821561110957169182156110d85760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260018252604060002085600052825280604060002055604051908152a3565b60246040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152fd5b60246040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152fd5b60ff81146111905760ff811690601f8211611166576040519161115c83610d8d565b8252602082015290565b60046040517fb3512b0c000000000000000000000000000000000000000000000000000000008152fd5b506040516005548160006111a383610d53565b8083529260209060019081811690811561123257506001146111d1575b50506111ce92500382610dbf565b90565b91509260056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0936000925b82841061121a57506111ce94505050810160200138806111c0565b855487850183015294850194869450928101926111ff565b915050602092506111ce94915060ff191682840152151560051b82010138806111c0565b60ff81146112785760ff811690601f8211611166576040519161115c83610d8d565b5060405160065481600061128b83610d53565b8083529260209060019081811690811561123257506001146112b55750506111ce92500382610dbf565b91509260066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f936000925b8284106112fe57506111ce94505050810160200138806111c0565b855487850183015294850194869450928101926112e3565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161139a57926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa1561138e5780516001600160a01b0381161561138557918190565b50809160019190565b604051903d90823e3d90fd5b50505060009160039190565b600481101561145e57806113b8575050565b600181036113ea5760046040517ff645eedf000000000000000000000000000000000000000000000000000000008152fd5b6002810361142357602482604051907ffce698f70000000000000000000000000000000000000000000000000000000082526004820152fd5b60031461142d5750565b602490604051907fd78bce0c0000000000000000000000000000000000000000000000000000000082526004820152fd5b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000818000a