[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "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" }, { "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": 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": [], "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": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "supplyAdjustment", "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": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "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": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "state", "type": "bool" } ], "name": "updateTransactionState", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801562000010575f80fd5b5060405162002120380380620021208339818101604052810190620000369190620005cf565b806040518060400160405280601381526020017f42756c6c697368204f4e20457468657265756d000000000000000000000000008152506040518060400160405280600781526020017f42756c6c455448000000000000000000000000000000000000000000000000008152508160039081620000b4919062000863565b508060049081620000c6919062000863565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013c575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000133919062000958565b60405180910390fd5b6200014d816200019960201b60201c565b506200019281620001636200025c60201b60201c565b60ff16600a62000174919062000af0565b6461c9f3680062000186919062000b40565b6200026460201b60201c565b5062000c2b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b6200027682826200027a60201b60201c565b5050565b6200028c82826200029060201b60201c565b5050565b620002a28282620002a660201b60201c565b5050565b620002b88282620002bc60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200032f575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000326919062000958565b60405180910390fd5b620003425f83836200034660201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200039a578060025f8282546200038d919062000b8a565b925050819055506200046b565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000426578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200041d9392919062000bd5565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004b4578060025f8282540392505081905550620004fe565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200055d919062000c10565b60405180910390a3505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000599826200056e565b9050919050565b620005ab816200058d565b8114620005b6575f80fd5b50565b5f81519050620005c981620005a0565b92915050565b5f60208284031215620005e757620005e66200056a565b5b5f620005f684828501620005b9565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200067b57607f821691505b60208210810362000691576200069062000636565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006b8565b620007018683620006b8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200074b620007456200073f8462000719565b62000722565b62000719565b9050919050565b5f819050919050565b62000766836200072b565b6200077e620007758262000752565b848454620006c4565b825550505050565b5f90565b6200079462000786565b620007a18184846200075b565b505050565b5b81811015620007c857620007bc5f826200078a565b600181019050620007a7565b5050565b601f8211156200081757620007e18162000697565b620007ec84620006a9565b81016020851015620007fc578190505b620008146200080b85620006a9565b830182620007a6565b50505b505050565b5f82821c905092915050565b5f620008395f19846008026200081c565b1980831691505092915050565b5f62000853838362000828565b9150826002028217905092915050565b6200086e82620005ff565b67ffffffffffffffff8111156200088a576200088962000609565b5b62000896825462000663565b620008a3828285620007cc565b5f60209050601f831160018114620008d9575f8415620008c4578287015190505b620008d0858262000846565b8655506200093f565b601f198416620008e98662000697565b5f5b828110156200091257848901518255600182019150602085019450602081019050620008eb565b868310156200093257848901516200092e601f89168262000828565b8355505b6001600288020188555050505b505050505050565b62000952816200058d565b82525050565b5f6020820190506200096d5f83018462000947565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620009fd57808604811115620009d557620009d462000973565b5b6001851615620009e55780820291505b8081029050620009f585620009a0565b9450620009b5565b94509492505050565b5f8262000a17576001905062000ae9565b8162000a26575f905062000ae9565b816001811462000a3f576002811462000a4a5762000a80565b600191505062000ae9565b60ff84111562000a5f5762000a5e62000973565b5b8360020a91508482111562000a795762000a7862000973565b5b5062000ae9565b5060208310610133831016604e8410600b841016171562000aba5782820a90508381111562000ab45762000ab362000973565b5b62000ae9565b62000ac98484846001620009ac565b9250905081840481111562000ae35762000ae262000973565b5b81810290505b9392505050565b5f62000afc8262000719565b915062000b098362000719565b925062000b387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a06565b905092915050565b5f62000b4c8262000719565b915062000b598362000719565b925082820262000b698162000719565b9150828204841483151762000b835762000b8262000973565b5b5092915050565b5f62000b968262000719565b915062000ba38362000719565b925082820190508082111562000bbe5762000bbd62000973565b5b92915050565b62000bcf8162000719565b82525050565b5f60608201905062000bea5f83018662000947565b62000bf9602083018562000bc4565b62000c08604083018462000bc4565b949350505050565b5f60208201905062000c255f83018462000bc4565b92915050565b6114e78062000c395f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c8063715018a61161008a57806395d89b411161006457806395d89b4114610236578063a9059cbb14610254578063dd62ed3e14610284578063f2fde38b146102b4576100e8565b8063715018a6146101f25780638da5cb5b146101fc57806394b640e51461021a576100e8565b806323b872dd116100c657806323b872dd146101585780632bf6f62e14610188578063313ce567146101a457806370a08231146101c2576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f46102d0565b6040516101019190610fdc565b60405180910390f35b610124600480360381019061011f919061108d565b610360565b60405161013191906110e5565b60405180910390f35b610142610382565b60405161014f919061110d565b60405180910390f35b610172600480360381019061016d9190611126565b61038b565b60405161017f91906110e5565b60405180910390f35b6101a2600480360381019061019d91906111a0565b6103aa565b005b6101ac6103c0565b6040516101b991906111f9565b60405180910390f35b6101dc60048036038101906101d79190611212565b6103c8565b6040516101e9919061110d565b60405180910390f35b6101fa61040d565b005b610204610420565b604051610211919061124c565b60405180910390f35b610234600480360381019061022f919061108d565b610448565b005b61023e61045e565b60405161024b9190610fdc565b60405180910390f35b61026e6004803603810190610269919061108d565b6104ee565b60405161027b91906110e5565b60405180910390f35b61029e60048036038101906102999190611265565b610512565b6040516102ab919061110d565b60405180910390f35b6102ce60048036038101906102c99190611212565b610594565b005b6060600380546102df906112d0565b80601f016020809104026020016040519081016040528092919081815260200182805461030b906112d0565b80156103565780601f1061032d57610100808354040283529160200191610356565b820191905f5260205f20905b81548152906001019060200180831161033957829003601f168201915b5050505050905090565b5f8061036a610618565b905061037781858561061f565b600191505092915050565b5f600254905090565b5f6103968484610631565b6103a18484846106c7565b90509392505050565b6103b26106f5565b6103bc828261077c565b5050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104156106f5565b61041e5f610811565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104506106f5565b61045a82826108d4565b5050565b60606004805461046d906112d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610499906112d0565b80156104e45780601f106104bb576101008083540402835291602001916104e4565b820191905f5260205f20905b8154815290600101906020018083116104c757829003601f168201915b5050505050905090565b5f6105006104fa610618565b84610631565b61050a83836108e2565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61059c6106f5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361060c575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610603919061124c565b60405180910390fd5b61061581610811565b50565b5f33905090565b61062c8383836001610904565b505050565b61063a82610ad3565b1561067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067190611370565b60405180910390fd5b61068381610ad3565b156106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba906113fe565b60405180910390fd5b5050565b5f806106d1610618565b90506106de858285610b1c565b6106e9858585610bae565b60019150509392505050565b6106fd610618565b73ffffffffffffffffffffffffffffffffffffffff1661071b610420565b73ffffffffffffffffffffffffffffffffffffffff161461077a5761073e610618565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610771919061124c565b60405180910390fd5b565b80156107ca57600160065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061080d565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6108de8282610c9e565b5050565b5f806108ec610618565b90506108f9818585610bae565b600191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610974575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161096b919061124c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109e4575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109db919061124c565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610acd578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ac4919061110d565b60405180910390a35b50505050565b5f600160065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054149050919050565b5f610b278484610512565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ba85781811015610b99578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610b909392919061141c565b60405180910390fd5b610ba784848484035f610904565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c1e575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610c15919061124c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c8e575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610c85919061124c565b60405180910390fd5b610c99838383610cac565b505050565b610ca88282610ec5565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cfc578060025f828254610cf0919061147e565b92505081905550610dca565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610d85578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610d7c9392919061141c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e11578060025f8282540392505081905550610e5b565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610eb8919061110d565b60405180910390a3505050565b610ecf8282610ed3565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f43575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610f3a919061124c565b60405180910390fd5b610f4e5f8383610cac565b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610f89578082015181840152602081019050610f6e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610fae82610f52565b610fb88185610f5c565b9350610fc8818560208601610f6c565b610fd181610f94565b840191505092915050565b5f6020820190508181035f830152610ff48184610fa4565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61102982611000565b9050919050565b6110398161101f565b8114611043575f80fd5b50565b5f8135905061105481611030565b92915050565b5f819050919050565b61106c8161105a565b8114611076575f80fd5b50565b5f8135905061108781611063565b92915050565b5f80604083850312156110a3576110a2610ffc565b5b5f6110b085828601611046565b92505060206110c185828601611079565b9150509250929050565b5f8115159050919050565b6110df816110cb565b82525050565b5f6020820190506110f85f8301846110d6565b92915050565b6111078161105a565b82525050565b5f6020820190506111205f8301846110fe565b92915050565b5f805f6060848603121561113d5761113c610ffc565b5b5f61114a86828701611046565b935050602061115b86828701611046565b925050604061116c86828701611079565b9150509250925092565b61117f816110cb565b8114611189575f80fd5b50565b5f8135905061119a81611176565b92915050565b5f80604083850312156111b6576111b5610ffc565b5b5f6111c385828601611046565b92505060206111d48582860161118c565b9150509250929050565b5f60ff82169050919050565b6111f3816111de565b82525050565b5f60208201905061120c5f8301846111ea565b92915050565b5f6020828403121561122757611226610ffc565b5b5f61123484828501611046565b91505092915050565b6112468161101f565b82525050565b5f60208201905061125f5f83018461123d565b92915050565b5f806040838503121561127b5761127a610ffc565b5b5f61128885828601611046565b925050602061129985828601611046565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806112e757607f821691505b6020821081036112fa576112f96112a3565b5b50919050565b7f5472616e736665722066726f6d20666c61676765642061646472657373206e6f5f8201527f7420616c6c6f7765640000000000000000000000000000000000000000000000602082015250565b5f61135a602983610f5c565b915061136582611300565b604082019050919050565b5f6020820190508181035f8301526113878161134e565b9050919050565b7f5472616e7366657220746f20666c61676765642061646472657373206e6f74205f8201527f616c6c6f77656400000000000000000000000000000000000000000000000000602082015250565b5f6113e8602783610f5c565b91506113f38261138e565b604082019050919050565b5f6020820190508181035f830152611415816113dc565b9050919050565b5f60608201905061142f5f83018661123d565b61143c60208301856110fe565b61144960408301846110fe565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6114888261105a565b91506114938361105a565b92508282019050808211156114ab576114aa611451565b5b9291505056fea2646970667358221220c3d4716f070e098ee9e2f91193adfeea2f91c1799abf198e4f820a23c0bc904264736f6c63430008140033000000000000000000000000d64e2c3b98e125d95b50a66baf9da24f6e65743f