[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "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": "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": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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" } ]
60806040523480156200001157600080fd5b506040805180820182526004808252635553444360e01b60208084018290528451808601909552918452908301529060036200004e838262000386565b5060046200005d828262000386565b506200006f91506000905033620000b9565b506200009c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000b9565b50620000b33369d3c21bcecceda10000006200016c565b62000474565b60008281526005602090815260408083206001600160a01b038516845290915281205460ff16620001625760008381526005602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620001193390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000166565b5060005b92915050565b6001600160a01b0382166200019c5760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620001aa60008383620001ae565b5050565b6001600160a01b038316620001dd578060026000828254620001d1919062000452565b90915550620002519050565b6001600160a01b03831660009081526020819052604090205481811015620002325760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000193565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166200026f576002805482900390556200028e565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002d491815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200030c57607f821691505b6020821081036200032d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200038157600081815260208120601f850160051c810160208610156200035c5750805b601f850160051c820191505b818110156200037d5782815560010162000368565b5050505b505050565b81516001600160401b03811115620003a257620003a2620002e1565b620003ba81620003b38454620002f7565b8462000333565b602080601f831160018114620003f25760008415620003d95750858301515b600019600386901b1c1916600185901b1785556200037d565b600085815260208120601f198616915b82811015620004235788860151825594840194600190910190840162000402565b5085821015620004425787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200016657634e487b7160e01b600052601160045260246000fd5b610b7c80620004846000396000f3fe608060405234801561001057600080fd5b50600436106100f65760003560e01c806340c10f191161009257806340c10f19146101ca57806370a08231146101dd57806391d148541461020657806395d89b4114610219578063a217fddf14610221578063a9059cbb14610229578063d53913931461023c578063d547741f14610263578063dd62ed3e1461027657600080fd5b806301ffc9a7146100fb57806306fdde0314610123578063095ea7b31461013857806318160ddd1461014b57806323b872dd1461015d578063248a9ca3146101705780632f2ff15d14610193578063313ce567146101a857806336568abe146101b7575b600080fd5b61010e61010936600461092b565b610289565b60405190151581526020015b60405180910390f35b61012b6102c0565b60405161011a919061095c565b61010e6101463660046109c6565b610352565b6002545b60405190815260200161011a565b61010e61016b3660046109f0565b61036a565b61014f61017e366004610a2c565b60009081526005602052604090206001015490565b6101a66101a1366004610a45565b61038e565b005b6040516012815260200161011a565b6101a66101c5366004610a45565b6103b9565b6101a66101d83660046109c6565b6103f1565b61014f6101eb366004610a71565b6001600160a01b031660009081526020819052604090205490565b61010e610214366004610a45565b610471565b61012b61049c565b61014f600081565b61010e6102373660046109c6565b6104ab565b61014f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101a6610271366004610a45565b6104b9565b61014f610284366004610a8c565b6104de565b60006001600160e01b03198216637965db0b60e01b14806102ba57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600380546102cf90610ab6565b80601f01602080910402602001604051908101604052809291908181526020018280546102fb90610ab6565b80156103485780601f1061031d57610100808354040283529160200191610348565b820191906000526020600020905b81548152906001019060200180831161032b57829003601f168201915b5050505050905090565b600033610360818585610509565b5060019392505050565b600033610378858285610516565b610383858585610563565b506001949350505050565b6000828152600560205260409020600101546103a9816105c2565b6103b383836105cf565b50505050565b6001600160a01b03811633146103e25760405163334bd91960e11b815260040160405180910390fd5b6103ec8282610663565b505050565b61041b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610471565b6104635760405162461bcd60e51b815260206004820152601460248201527313db9b1e481b5a5b9d195c8818d85b881b5a5b9d60621b60448201526064015b60405180910390fd5b61046d82826106d0565b5050565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600480546102cf90610ab6565b600033610360818585610563565b6000828152600560205260409020600101546104d4816105c2565b6103b38383610663565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6103ec8383836001610706565b600061052284846104de565b905060001981146103b3578181101561055457828183604051637dc7a0d960e11b815260040161045a93929190610af0565b6103b384848484036000610706565b6001600160a01b03831661058d576000604051634b637e8f60e11b815260040161045a9190610b11565b6001600160a01b0382166105b757600060405163ec442f0560e01b815260040161045a9190610b11565b6103ec8383836107db565b6105cc81336108f2565b50565b60006105db8383610471565b61065b5760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556106133390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016102ba565b5060006102ba565b600061066f8383610471565b1561065b5760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016102ba565b6001600160a01b0382166106fa57600060405163ec442f0560e01b815260040161045a9190610b11565b61046d600083836107db565b6001600160a01b03841661073057600060405163e602df0560e01b815260040161045a9190610b11565b6001600160a01b03831661075a576000604051634a1406b160e11b815260040161045a9190610b11565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103b357826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107cd91815260200190565b60405180910390a350505050565b6001600160a01b0383166108065780600260008282546107fb9190610b25565b909155506108659050565b6001600160a01b038316600090815260208190526040902054818110156108465783818360405163391434e360e21b815260040161045a93929190610af0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610881576002805482900390556108a0565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108e591815260200190565b60405180910390a3505050565b6108fc8282610471565b61046d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161045a565b60006020828403121561093d57600080fd5b81356001600160e01b03198116811461095557600080fd5b9392505050565b600060208083528351808285015260005b818110156109895785810183015185820160400152820161096d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109c157600080fd5b919050565b600080604083850312156109d957600080fd5b6109e2836109aa565b946020939093013593505050565b600080600060608486031215610a0557600080fd5b610a0e846109aa565b9250610a1c602085016109aa565b9150604084013590509250925092565b600060208284031215610a3e57600080fd5b5035919050565b60008060408385031215610a5857600080fd5b82359150610a68602084016109aa565b90509250929050565b600060208284031215610a8357600080fd5b610955826109aa565b60008060408385031215610a9f57600080fd5b610aa8836109aa565b9150610a68602084016109aa565b600181811c90821680610aca57607f821691505b602082108103610aea57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b808201808211156102ba57634e487b7160e01b600052601160045260246000fdfea26469706673582212202b8fccbd96022e3c589a17db82af47d4fa6f44280915c9e2af704e38ff6a535d64736f6c63430008140033