[ { "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": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_destination", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "increaseSupply", "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": [ { "internalType": "address", "name": "_newSupplier", "type": "address" } ], "name": "setSupplier", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supplier", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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" } ]
608060405234801561000f575f80fd5b506040518060400160405280600381526020017f47505400000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4750540000000000000000000000000000000000000000000000000000000000815250816003908161008b919061063a565b50806004908161009b919061063a565b5050506100d5336100b061015a60201b60201c565b600a6100bc9190610871565b620f42406100ca91906108bb565b61016260201b60201c565b3360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109e4565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101d2575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016101c9919061093b565b60405180910390fd5b6101e35f83836101e760201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610237578060025f82825461022b9190610954565b92505081905550610305565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156102c0578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016102b793929190610996565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361034c578060025f8282540392505081905550610396565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103f391906109cb565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061047b57607f821691505b60208210810361048e5761048d610437565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104b5565b6104fa86836104b5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61053e61053961053484610512565b61051b565b610512565b9050919050565b5f819050919050565b61055783610524565b61056b61056382610545565b8484546104c1565b825550505050565b5f90565b61057f610573565b61058a81848461054e565b505050565b5b818110156105ad576105a25f82610577565b600181019050610590565b5050565b601f8211156105f2576105c381610494565b6105cc846104a6565b810160208510156105db578190505b6105ef6105e7856104a6565b83018261058f565b50505b505050565b5f82821c905092915050565b5f6106125f19846008026105f7565b1980831691505092915050565b5f61062a8383610603565b9150826002028217905092915050565b61064382610400565b67ffffffffffffffff81111561065c5761065b61040a565b5b6106668254610464565b6106718282856105b1565b5f60209050601f8311600181146106a2575f8415610690578287015190505b61069a858261061f565b865550610701565b601f1984166106b086610494565b5f5b828110156106d7578489015182556001820191506020850194506020810190506106b2565b868310156106f457848901516106f0601f891682610603565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561078b5780860481111561076757610766610709565b5b60018516156107765780820291505b808102905061078485610736565b945061074b565b94509492505050565b5f826107a3576001905061085e565b816107b0575f905061085e565b81600181146107c657600281146107d0576107ff565b600191505061085e565b60ff8411156107e2576107e1610709565b5b8360020a9150848211156107f9576107f8610709565b5b5061085e565b5060208310610133831016604e8410600b84101617156108345782820a90508381111561082f5761082e610709565b5b61085e565b6108418484846001610742565b9250905081840481111561085857610857610709565b5b81810290505b9392505050565b5f60ff82169050919050565b5f61087b82610512565b915061088683610865565b92506108b37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610794565b905092915050565b5f6108c582610512565b91506108d083610512565b92508282026108de81610512565b915082820484148315176108f5576108f4610709565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610925826108fc565b9050919050565b6109358161091b565b82525050565b5f60208201905061094e5f83018461092c565b92915050565b5f61095e82610512565b915061096983610512565b925082820190508082111561098157610980610709565b5b92915050565b61099081610512565b82525050565b5f6060820190506109a95f83018661092c565b6109b66020830185610987565b6109c36040830184610987565b949350505050565b5f6020820190506109de5f830184610987565b92915050565b61122d806109f15f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c806336da44681161008a5780638da5cb5b116100645780638da5cb5b1461021157806395d89b411461022f578063a9059cbb1461024d578063dd62ed3e1461027d576100cd565b806336da4468146101a757806370a08231146101c557806379fcd8ee146101f5576100cd565b806306fdde03146100d1578063095ea7b3146100ef578063168ae4831461011f57806318160ddd1461013b57806323b872dd14610159578063313ce56714610189575b5f80fd5b6100d96102ad565b6040516100e69190610db0565b60405180910390f35b61010960048036038101906101049190610e61565b61033d565b6040516101169190610eb9565b60405180910390f35b61013960048036038101906101349190610ed2565b61035f565b005b61014361049f565b6040516101509190610f0c565b60405180910390f35b610173600480360381019061016e9190610f25565b6104a8565b6040516101809190610eb9565b60405180910390f35b6101916104d6565b60405161019e9190610f90565b60405180910390f35b6101af6104de565b6040516101bc9190610fb8565b60405180910390f35b6101df60048036038101906101da9190610ed2565b610503565b6040516101ec9190610f0c565b60405180910390f35b61020f600480360381019061020a9190610e61565b610548565b005b6102196105e5565b6040516102269190610fb8565b60405180910390f35b61023761060a565b6040516102449190610db0565b60405180910390f35b61026760048036038101906102629190610e61565b61069a565b6040516102749190610eb9565b60405180910390f35b61029760048036038101906102929190610fd1565b6106bc565b6040516102a49190610f0c565b60405180910390f35b6060600380546102bc9061103c565b80601f01602080910402602001604051908101604052809291908181526020018280546102e89061103c565b80156103335780601f1061030a57610100808354040283529160200191610333565b820191905f5260205f20905b81548152906001019060200180831161031657829003601f168201915b5050505050905090565b5f8061034761073e565b9050610354818585610745565b600191505092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e5906110b6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361045c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045390611144565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f600254905090565b5f806104b261073e565b90506104bf858285610757565b6104ca8585856107e9565b60019150509392505050565b5f6012905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ce906110b6565b60405180910390fd5b6105e182826108d9565b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546106199061103c565b80601f01602080910402602001604051908101604052809291908181526020018280546106459061103c565b80156106905780601f1061066757610100808354040283529160200191610690565b820191905f5260205f20905b81548152906001019060200180831161067357829003601f168201915b5050505050905090565b5f806106a461073e565b90506106b18185856107e9565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6107528383836001610958565b505050565b5f61076284846106bc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e357818110156107d4578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016107cb93929190611162565b60405180910390fd5b6107e284848484035f610958565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610859575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016108509190610fb8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108c9575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016108c09190610fb8565b60405180910390fd5b6108d4838383610b27565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610949575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109409190610fb8565b60405180910390fd5b6109545f8383610b27565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109c8575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016109bf9190610fb8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a38575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a2f9190610fb8565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610b21578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b189190610f0c565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b77578060025f828254610b6b91906111c4565b92505081905550610c45565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610c00578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610bf793929190611162565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c8c578060025f8282540392505081905550610cd6565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d339190610f0c565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610d8282610d40565b610d8c8185610d4a565b9350610d9c818560208601610d5a565b610da581610d68565b840191505092915050565b5f6020820190508181035f830152610dc88184610d78565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610dfd82610dd4565b9050919050565b610e0d81610df3565b8114610e17575f80fd5b50565b5f81359050610e2881610e04565b92915050565b5f819050919050565b610e4081610e2e565b8114610e4a575f80fd5b50565b5f81359050610e5b81610e37565b92915050565b5f8060408385031215610e7757610e76610dd0565b5b5f610e8485828601610e1a565b9250506020610e9585828601610e4d565b9150509250929050565b5f8115159050919050565b610eb381610e9f565b82525050565b5f602082019050610ecc5f830184610eaa565b92915050565b5f60208284031215610ee757610ee6610dd0565b5b5f610ef484828501610e1a565b91505092915050565b610f0681610e2e565b82525050565b5f602082019050610f1f5f830184610efd565b92915050565b5f805f60608486031215610f3c57610f3b610dd0565b5b5f610f4986828701610e1a565b9350506020610f5a86828701610e1a565b9250506040610f6b86828701610e4d565b9150509250925092565b5f60ff82169050919050565b610f8a81610f75565b82525050565b5f602082019050610fa35f830184610f81565b92915050565b610fb281610df3565b82525050565b5f602082019050610fcb5f830184610fa9565b92915050565b5f8060408385031215610fe757610fe6610dd0565b5b5f610ff485828601610e1a565b925050602061100585828601610e1a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061105357607f821691505b6020821081036110665761106561100f565b5b50919050565b7f6f6e6c7920537570706c696572000000000000000000000000000000000000005f82015250565b5f6110a0600d83610d4a565b91506110ab8261106c565b602082019050919050565b5f6020820190508181035f8301526110cd81611094565b9050919050565b7f63616e6e6f742073657420737570706c69657220746f2061646472657373207a5f8201527f65726f0000000000000000000000000000000000000000000000000000000000602082015250565b5f61112e602383610d4a565b9150611139826110d4565b604082019050919050565b5f6020820190508181035f83015261115b81611122565b9050919050565b5f6060820190506111755f830186610fa9565b6111826020830185610efd565b61118f6040830184610efd565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6111ce82610e2e565b91506111d983610e2e565b92508282019050808211156111f1576111f0611197565b5b9291505056fea26469706673582212205ab8829e78d1f93482fa4ebc55d2d6902b7b753f81ed35363a90d971bf81403e64736f6c634300081a0033