[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "treasury", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "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": "authorizer", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "AuthorizationCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "authorizer", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "AuthorizationUsed", "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": "CANCEL_AUTHORIZATION_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RECEIVE_WITH_AUTHORIZATION_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TRANSFER_WITH_AUTHORIZATION_TYPEHASH", "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": "authorizer", "type": "address" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "authorizationState", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": [ { "internalType": "address", "name": "authorizer", "type": "address" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "cancelAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "receiveWithAuthorization", "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": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "transferWithAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b506040516200192c3803806200192c833981016040819052620000349162000369565b8282600362000044838262000487565b50600462000053828262000487565b50504660805250604080518082019091526002815261763160f01b602082015262000080908490620000a4565b6005556200009b816b1cb8b7702ae75fb695e000006200012c565b50505062000575565b600046620001228484838251602093840120825192840192909220604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8187015280820194909452606084019190915260808301919091523060a0808401919091528151808403909101815260c09092019052805191012090565b9150505b92915050565b6001600160a01b0382166200015c5760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b6200016a600083836200016e565b5050565b6001600160a01b0383166200019d57806002600082825462000191919062000553565b90915550620002119050565b6001600160a01b03831660009081526020819052604090205481811015620001f25760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000153565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166200022f576002805482900390556200024e565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200029491815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002c957600080fd5b81516001600160401b0380821115620002e657620002e6620002a1565b604051601f8301601f19908116603f01168101908282118183101715620003115762000311620002a1565b81604052838152602092508660208588010111156200032f57600080fd5b600091505b8382101562000353578582018301518183018401529082019062000334565b6000602085830101528094505050505092915050565b6000806000606084860312156200037f57600080fd5b83516001600160401b03808211156200039757600080fd5b620003a587838801620002b7565b94506020860151915080821115620003bc57600080fd5b50620003cb86828701620002b7565b604086015190935090506001600160a01b0381168114620003eb57600080fd5b809150509250925092565b600181811c908216806200040b57607f821691505b6020821081036200042c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000482576000816000526020600020601f850160051c810160208610156200045d5750805b601f850160051c820191505b818110156200047e5782815560010162000469565b5050505b505050565b81516001600160401b03811115620004a357620004a3620002a1565b620004bb81620004b48454620003f6565b8462000432565b602080601f831160018114620004f35760008415620004da5750858301515b600019600386901b1c1916600185901b1785556200047e565b600085815260208120601f198616915b82811015620005245788860151825594840194600190910190840162000503565b5085821015620005435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200012657634e487b7160e01b600052601160045260246000fd5b60805161139b620005916000396000610555015261139b6000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80637f2eecc3116100a2578063d916948711610071578063d916948714610252578063dd62ed3e14610279578063e3ee160e146102b2578063e94a0102146102c5578063ef55bec6146102fe57600080fd5b80637f2eecc3146101e957806395d89b4114610210578063a0cc6a6814610218578063a9059cbb1461023f57600080fd5b8063313ce567116100e9578063313ce567146101815780633644e5151461019057806342966c68146101985780635a049a70146101ad57806370a08231146101c057600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c57806323b872dd1461016e575b600080fd5b610123610311565b6040516101309190611084565b60405180910390f35b61014c6101473660046110b3565b6103a3565b6040519015158152602001610130565b6002545b604051908152602001610130565b61014c61017c3660046110dd565b6103bd565b60405160128152602001610130565b6101606103e3565b6101ab6101a6366004611119565b6103f2565b005b6101ab6101bb366004611143565b6103ff565b6101606101ce366004611191565b6001600160a01b031660009081526020819052604090205490565b6101607fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b610123610413565b6101607f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b61014c61024d3660046110b3565b610422565b6101607f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b6101606102873660046111ac565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101ab6102c03660046111df565b610430565b61014c6102d33660046110b3565b6001600160a01b03919091166000908152600660209081526040808320938352929052205460ff1690565b6101ab61030c3660046111df565b61044c565b6060600380546103209061125d565b80601f016020809104026020016040519081016040528092919081815260200182805461034c9061125d565b80156103995780601f1061036e57610100808354040283529160200191610399565b820191906000526020600020905b81548152906001019060200180831161037c57829003601f168201915b5050505050905090565b6000336103b181858561045d565b60019150505b92915050565b6000336103cb85828561046f565b6103d68585856104f2565b60019150505b9392505050565b60006103ed610551565b905090565b6103fc33826105ac565b50565b61040c85858585856105e6565b5050505050565b6060600480546103209061125d565b6000336103b18185856104f2565b610441898989898989898989610614565b505050505050505050565b610441898989898989898989610646565b61046a8383836001610678565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146104ec57818110156104dd57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b6104ec84848484036000610678565b50505050565b6001600160a01b03831661051c57604051634b637e8f60e11b8152600060048201526024016104d4565b6001600160a01b0382166105465760405163ec442f0560e01b8152600060048201526024016104d4565b61046a83838361074d565b60007f000000000000000000000000000000000000000000000000000000000000000046146105a5576103ed610585610311565b60405180604001604052806002815260200161763160f01b815250610877565b5060055490565b6001600160a01b0382166105d657604051634b637e8f60e11b8152600060048201526024016104d4565b6105e28260008361074d565b5050565b61040c858584848760405160200161060093929190611297565b6040516020818303038152906040526108fc565b61044189898989898988888b60405160200161063293929190611297565b6040516020818303038152906040526109c9565b61044189898989898988888b60405160200161066493929190611297565b604051602081830303815290604052610a37565b6001600160a01b0384166106a25760405163e602df0560e01b8152600060048201526024016104d4565b6001600160a01b0383166106cc57604051634a1406b160e11b8152600060048201526024016104d4565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156104ec57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161073f91815260200190565b60405180910390a350505050565b6001600160a01b03831661077857806002600082825461076d91906112ba565b909155506107ea9050565b6001600160a01b038316600090815260208190526040902054818110156107cb5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016104d4565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661080657600280548290039055610825565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161086a91815260200190565b60405180910390a3505050565b6000466108f48484838251602093840120825192840192909220604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8187015280820194909452606084019190915260808301919091523060a0808401919091528151808403909101815260c09092019052805191012090565b949350505050565b6109068383610adf565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742960208201526001600160a01b038516918101919091526060810183905261096e9084906080015b6040516020818303038152906040528051906020012083610b5d565b6001600160a01b0383166000818152600660209081526040808320868452909152808220805460ff19166001179055518492917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a3505050565b6109d587838686610bd2565b610a19877f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226760001b89898989898960405160200161095297969594939291906112db565b610a238783610c7a565b610a2e8787876104f2565b50505050505050565b6001600160a01b0386163314610a8f5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206d75737420626520746865207061796565000000000000000060448201526064016104d4565b610a9b87838686610bd2565b610a19877fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de860001b89898989898960405160200161095297969594939291906112db565b6001600160a01b038216600090815260066020908152604080832084845290915290205460ff16156105e25760405162461bcd60e51b815260206004820152602160248201527f417574686f72697a6174696f6e2069732075736564206f722063616e63656c656044820152601960fa1b60648201526084016104d4565b610b9283610b8c610b6c610551565b8560405161190160f01b8152600281019290925260228201526042902090565b83610cd4565b61046a5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016104d4565b814211610c215760405162461bcd60e51b815260206004820152601e60248201527f417574686f72697a6174696f6e206973206e6f74207965742076616c6964000060448201526064016104d4565b804210610c705760405162461bcd60e51b815260206004820152601860248201527f417574686f72697a6174696f6e2069732065787069726564000000000000000060448201526064016104d4565b6104ec8484610adf565b6001600160a01b0382166000818152600660209081526040808320858452909152808220805460ff19166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a35050565b6000833b610d0157836001600160a01b0316610cf08484610d0c565b6001600160a01b03161490506103dc565b6108f4848484610d93565b60008151604114610d6b5760405162461bcd60e51b815260206004820152602360248201527f45435265636f7665723a20696e76616c6964207369676e6174757265206c656e6044820152620cee8d60eb1b60648201526084016104d4565b60208201516040830151606084015160001a610d8986828585610e7f565b9695505050505050565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401610dbd929190611317565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610dfb9190611330565b600060405180830381855afa9150503d8060008114610e36576040519150601f19603f3d011682016040523d82523d6000602084013e610e3b565b606091505b5091509150818015610e4f57506020815110155b8015610d8957508051630b135d3f60e11b90610e74908301602090810190840161134c565b149695505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610f005760405162461bcd60e51b815260206004820152602660248201527f45435265636f7665723a20696e76616c6964207369676e6174757265202773276044820152652076616c756560d01b60648201526084016104d4565b8360ff16601b14158015610f1857508360ff16601c14155b15610f745760405162461bcd60e51b815260206004820152602660248201527f45435265636f7665723a20696e76616c6964207369676e6174757265202776276044820152652076616c756560d01b60648201526084016104d4565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015610fc8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661102b5760405162461bcd60e51b815260206004820152601c60248201527f45435265636f7665723a20696e76616c6964207369676e61747572650000000060448201526064016104d4565b95945050505050565b60005b8381101561104f578181015183820152602001611037565b50506000910152565b60008151808452611070816020860160208601611034565b601f01601f19169290920160200192915050565b6020815260006103dc6020830184611058565b80356001600160a01b03811681146110ae57600080fd5b919050565b600080604083850312156110c657600080fd5b6110cf83611097565b946020939093013593505050565b6000806000606084860312156110f257600080fd5b6110fb84611097565b925061110960208501611097565b9150604084013590509250925092565b60006020828403121561112b57600080fd5b5035919050565b803560ff811681146110ae57600080fd5b600080600080600060a0868803121561115b57600080fd5b61116486611097565b94506020860135935061117960408701611132565b94979396509394606081013594506080013592915050565b6000602082840312156111a357600080fd5b6103dc82611097565b600080604083850312156111bf57600080fd5b6111c883611097565b91506111d660208401611097565b90509250929050565b60008060008060008060008060006101208a8c0312156111fe57600080fd5b6112078a611097565b985061121560208b01611097565b975060408a0135965060608a0135955060808a0135945060a08a0135935061123f60c08b01611132565b925060e08a013591506101008a013590509295985092959850929598565b600181811c9082168061127157607f821691505b60208210810361129157634e487b7160e01b600052602260045260246000fd5b50919050565b928352602083019190915260f81b6001600160f81b031916604082015260410190565b808201808211156103b757634e487b7160e01b600052601160045260246000fd5b9687526001600160a01b0395861660208801529390941660408601526060850191909152608084015260a083019190915260c082015260e00190565b8281526040602082015260006108f46040830184611058565b60008251611342818460208701611034565b9190910192915050565b60006020828403121561135e57600080fd5b505191905056fea2646970667358221220e7f0ae5091d485a50b43b1bff5c82b0c5081e87651b36a514cd65993e70a1a8264736f6c63430008160033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000c011768ed8b7e4685986e360397be107fe05819c00000000000000000000000000000000000000000000000000000000000000044d6f63610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044d4f434100000000000000000000000000000000000000000000000000000000