[ { "inputs": [], "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "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": [], "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": [], "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" } ]
60806040523480156200001157600080fd5b506040518060400160405280600781526020017f53687566666c65000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5348464c0000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000616565b508060049081620000a1919062000616565b505050620000d1620000b8620000d760201b60201c565b6b033b2e3c9fd0803ce8000000620000df60201b60201c565b62000834565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620001545760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200014b919062000742565b60405180910390fd5b62000168600083836200016c60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001c2578060026000828254620001b591906200078e565b9250508190555062000298565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000251578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200024893929190620007da565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002e3578060026000828254039250508190555062000330565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200038f919062000817565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200041e57607f821691505b602082108103620004345762000433620003d6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200049e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200045f565b620004aa86836200045f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004f7620004f1620004eb84620004c2565b620004cc565b620004c2565b9050919050565b6000819050919050565b6200051383620004d6565b6200052b6200052282620004fe565b8484546200046c565b825550505050565b600090565b6200054262000533565b6200054f81848462000508565b505050565b5b8181101562000577576200056b60008262000538565b60018101905062000555565b5050565b601f821115620005c65762000590816200043a565b6200059b846200044f565b81016020851015620005ab578190505b620005c3620005ba856200044f565b83018262000554565b50505b505050565b600082821c905092915050565b6000620005eb60001984600802620005cb565b1980831691505092915050565b6000620006068383620005d8565b9150826002028217905092915050565b62000621826200039c565b67ffffffffffffffff8111156200063d576200063c620003a7565b5b62000649825462000405565b620006568282856200057b565b600060209050601f8311600181146200068e576000841562000679578287015190505b620006858582620005f8565b865550620006f5565b601f1984166200069e866200043a565b60005b82811015620006c857848901518255600182019150602085019450602081019050620006a1565b86831015620006e85784890151620006e4601f891682620005d8565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200072a82620006fd565b9050919050565b6200073c816200071d565b82525050565b600060208201905062000759600083018462000731565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200079b82620004c2565b9150620007a883620004c2565b9250828201905080821115620007c357620007c26200075f565b5b92915050565b620007d481620004c2565b82525050565b6000606082019050620007f1600083018662000731565b620008006020830185620007c9565b6200080f6040830184620007c9565b949350505050565b60006020820190506200082e6000830184620007c9565b92915050565b610ec080620008446000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806342966c681161006657806342966c681461015d57806370a082311461017957806395d89b41146101a9578063a9059cbb146101c7578063dd62ed3e146101f75761009e565b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100f157806323b872dd1461010f578063313ce5671461013f575b600080fd5b6100ab610227565b6040516100b89190610ae7565b60405180910390f35b6100db60048036038101906100d69190610ba2565b6102b9565b6040516100e89190610bfd565b60405180910390f35b6100f96102dc565b6040516101069190610c27565b60405180910390f35b61012960048036038101906101249190610c42565b6102e6565b6040516101369190610bfd565b60405180910390f35b610147610315565b6040516101549190610cb1565b60405180910390f35b61017760048036038101906101729190610ccc565b61031e565b005b610193600480360381019061018e9190610cf9565b610335565b6040516101a09190610c27565b60405180910390f35b6101b161037d565b6040516101be9190610ae7565b60405180910390f35b6101e160048036038101906101dc9190610ba2565b61040f565b6040516101ee9190610bfd565b60405180910390f35b610211600480360381019061020c9190610d26565b610432565b60405161021e9190610c27565b60405180910390f35b60606003805461023690610d95565b80601f016020809104026020016040519081016040528092919081815260200182805461026290610d95565b80156102af5780601f10610284576101008083540402835291602001916102af565b820191906000526020600020905b81548152906001019060200180831161029257829003601f168201915b5050505050905090565b6000806102c46104b9565b90506102d18185856104c1565b600191505092915050565b6000600254905090565b6000806102f16104b9565b90506102fe8582856104d3565b610309858585610567565b60019150509392505050565b60006012905090565b6103326103296104b9565b61dead8361065b565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461038c90610d95565b80601f01602080910402602001604051908101604052809291908181526020018280546103b890610d95565b80156104055780601f106103da57610100808354040283529160200191610405565b820191906000526020600020905b8154815290600101906020018083116103e857829003601f168201915b5050505050905090565b60008061041a6104b9565b9050610427818585610567565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6104ce8383836001610880565b505050565b60006104df8484610432565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105615781811015610551578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161054893929190610dd5565b60405180910390fd5b61056084848484036000610880565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105d95760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105d09190610e0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361064b5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016106429190610e0c565b60405180910390fd5b61065683838361065b565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106ad5780600260008282546106a19190610e56565b92505081905550610780565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610739578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161073093929190610dd5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107c95780600260008282540392505081905550610816565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108739190610c27565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036108f25760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016108e99190610e0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109645760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161095b9190610e0c565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610a51578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a489190610c27565b60405180910390a35b50505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a91578082015181840152602081019050610a76565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ab982610a57565b610ac38185610a62565b9350610ad3818560208601610a73565b610adc81610a9d565b840191505092915050565b60006020820190508181036000830152610b018184610aae565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b3982610b0e565b9050919050565b610b4981610b2e565b8114610b5457600080fd5b50565b600081359050610b6681610b40565b92915050565b6000819050919050565b610b7f81610b6c565b8114610b8a57600080fd5b50565b600081359050610b9c81610b76565b92915050565b60008060408385031215610bb957610bb8610b09565b5b6000610bc785828601610b57565b9250506020610bd885828601610b8d565b9150509250929050565b60008115159050919050565b610bf781610be2565b82525050565b6000602082019050610c126000830184610bee565b92915050565b610c2181610b6c565b82525050565b6000602082019050610c3c6000830184610c18565b92915050565b600080600060608486031215610c5b57610c5a610b09565b5b6000610c6986828701610b57565b9350506020610c7a86828701610b57565b9250506040610c8b86828701610b8d565b9150509250925092565b600060ff82169050919050565b610cab81610c95565b82525050565b6000602082019050610cc66000830184610ca2565b92915050565b600060208284031215610ce257610ce1610b09565b5b6000610cf084828501610b8d565b91505092915050565b600060208284031215610d0f57610d0e610b09565b5b6000610d1d84828501610b57565b91505092915050565b60008060408385031215610d3d57610d3c610b09565b5b6000610d4b85828601610b57565b9250506020610d5c85828601610b57565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610dad57607f821691505b602082108103610dc057610dbf610d66565b5b50919050565b610dcf81610b2e565b82525050565b6000606082019050610dea6000830186610dc6565b610df76020830185610c18565b610e046040830184610c18565b949350505050565b6000602082019050610e216000830184610dc6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e6182610b6c565b9150610e6c83610b6c565b9250828201905080821115610e8457610e83610e27565b5b9291505056fea264697066735822122093d7ebb47415b0ea5f5d0ebc4a3128eaba34a19575e4c92297de94a694c6ad0f64736f6c63430008140033