[ { "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": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "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": [ { "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": [ { "internalType": "uint256", "name": "_totalSupply", "type": "uint256" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "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": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052348015600f57600080fd5b506110ab8061001f6000396000f3fe6080604052600436106101025760003560e01c80636ebd362c1161009557806395d89b411161006457806395d89b41146102f9578063a0712d681461030e578063a9059cbb1461032e578063dd62ed3e1461034e578063f2fde38b1461036e57600080fd5b80636ebd362c1461023a57806370a082311461025a578063715018a61461029d5780638da5cb5b146102b257600080fd5b8063313ce567116100d1578063313ce567146101c75780633ccfd60b146101e357806342966c68146101fa578063449a52f81461021a57600080fd5b806306fdde031461010e578063095ea7b31461013957806318160ddd1461016957806323b872dd146101a757600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b5061012361038e565b6040516101309190610c6e565b60405180910390f35b34801561014557600080fd5b50610159610154366004610cd8565b610451565b6040519015158152602001610130565b34801561017557600080fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610130565b3480156101b357600080fd5b506101596101c2366004610d02565b61046b565b3480156101d357600080fd5b5060405160128152602001610130565b3480156101ef57600080fd5b506101f861048f565b005b34801561020657600080fd5b506101f8610215366004610d3f565b6104ca565b34801561022657600080fd5b506101f8610235366004610cd8565b6104d7565b34801561024657600080fd5b506101f8610255366004610dfd565b6104e9565b34801561026657600080fd5b50610199610275366004610e80565b6001600160a01b03166000908152600080516020611056833981519152602052604090205490565b3480156102a957600080fd5b506101f8610621565b3480156102be57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b039091168152602001610130565b34801561030557600080fd5b50610123610635565b34801561031a57600080fd5b506101f8610329366004610d3f565b610674565b34801561033a57600080fd5b50610159610349366004610cd8565b610686565b34801561035a57600080fd5b50610199610369366004610ea2565b610694565b34801561037a57600080fd5b506101f8610389366004610e80565b6106de565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace038054606091600080516020611056833981519152916103cd90610ed5565b80601f01602080910402602001604051908101604052809291908181526020018280546103f990610ed5565b80156104465780601f1061041b57610100808354040283529160200191610446565b820191906000526020600020905b81548152906001019060200180831161042957829003601f168201915b505050505091505090565b60003361045f81858561074a565b60019150505b92915050565b60003361047985828561075c565b6104848585856107c2565b506001949350505050565b610497610821565b6040514790339082156108fc029083906000818181858888f193505050501580156104c6573d6000803e3d6000fd5b5050565b6104d4338261087c565b50565b6104df610821565b6104c682826108b2565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff1660008115801561052f5750825b905060008267ffffffffffffffff16600114801561054c5750303b155b90508115801561055a575080155b156105785760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105a257845460ff60401b1916600160401b1785555b6105ac88886108e8565b6105b5866108fa565b6105d0866105cb8b670de0b6b3a7640000610f25565b6108b2565b831561061657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610629610821565b610633600061090b565b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020611056833981519152916103cd90610ed5565b61067c610821565b6104d433826108b2565b60003361045f8185856107c2565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6106e6610821565b6001600160a01b0381166107415760405162461bcd60e51b815260206004820152601d60248201527f4e6577206f776e657220697320746865207a65726f206164647265737300000060448201526064015b60405180910390fd5b6104d48161090b565b610757838383600161097c565b505050565b60006107688484610694565b905060001981146107bc57818110156107ad57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610738565b6107bc8484848403600061097c565b50505050565b6001600160a01b0383166107ec57604051634b637e8f60e11b815260006004820152602401610738565b6001600160a01b0382166108165760405163ec442f0560e01b815260006004820152602401610738565b610757838383610a64565b336108537f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146106335760405163118cdaa760e01b8152336004820152602401610738565b6001600160a01b0382166108a657604051634b637e8f60e11b815260006004820152602401610738565b6104c682600083610a64565b6001600160a01b0382166108dc5760405163ec442f0560e01b815260006004820152602401610738565b6104c660008383610a64565b6108f0610ba2565b6104c68282610beb565b610902610ba2565b6104d481610c3c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000805160206110568339815191526001600160a01b0385166109b55760405163e602df0560e01b815260006004820152602401610738565b6001600160a01b0384166109df57604051634a1406b160e11b815260006004820152602401610738565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115610a5d57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610a5491815260200190565b60405180910390a35b5050505050565b6000805160206110568339815191526001600160a01b038416610aa05781816002016000828254610a959190610f3c565b90915550610b129050565b6001600160a01b03841660009081526020829052604090205482811015610af35760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610738565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316610b30576002810180548390039055610b4f565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9491815260200190565b60405180910390a350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661063357604051631afcd79f60e31b815260040160405180910390fd5b610bf3610ba2565b6000805160206110568339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03610c2d8482610f96565b50600481016107bc8382610f96565b610c44610ba2565b6001600160a01b03811661074157604051631e4fbdf760e01b815260006004820152602401610738565b602081526000825180602084015260005b81811015610c9c5760208186018101516040868401015201610c7f565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610cd357600080fd5b919050565b60008060408385031215610ceb57600080fd5b610cf483610cbc565b946020939093013593505050565b600080600060608486031215610d1757600080fd5b610d2084610cbc565b9250610d2e60208501610cbc565b929592945050506040919091013590565b600060208284031215610d5157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610d7f57600080fd5b813567ffffffffffffffff811115610d9957610d99610d58565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610dc857610dc8610d58565b604052818152838201602001851015610de057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e1357600080fd5b84359350602085013567ffffffffffffffff811115610e3157600080fd5b610e3d87828801610d6e565b935050604085013567ffffffffffffffff811115610e5a57600080fd5b610e6687828801610d6e565b925050610e7560608601610cbc565b905092959194509250565b600060208284031215610e9257600080fd5b610e9b82610cbc565b9392505050565b60008060408385031215610eb557600080fd5b610ebe83610cbc565b9150610ecc60208401610cbc565b90509250929050565b600181811c90821680610ee957607f821691505b602082108103610f0957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761046557610465610f0f565b8082018082111561046557610465610f0f565b601f82111561075757806000526020600020601f840160051c81016020851015610f765750805b601f840160051c820191505b81811015610a5d5760008155600101610f82565b815167ffffffffffffffff811115610fb057610fb0610d58565b610fc481610fbe8454610ed5565b84610f4f565b6020601f821160018114610ff85760008315610fe05750848201515b600019600385901b1c1916600184901b178455610a5d565b600084815260208120601f198516915b828110156110285787850151825560209485019460019092019101611008565b50848210156110465786840151600019600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a2646970667358221220e59856c5c31a2b09abb61e1f08452f1bfda3169466f2ee54e05275c41a1b0a6064736f6c634300081a0033