[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "amount", "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": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "faucet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "flipEnabledFaucet", "outputs": [], "stateMutability": "nonpayable", "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": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isEnabledFaucet", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "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": "account", "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": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b50604080518082018252600b8082526a2330bab1b2ba2a37b5b2b760a91b602080840182905284518086019095529184529083015290600362000055838262000204565b50600462000064828262000204565b506200007691506000905033620000ba565b620000a27f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000ba565b600680546001600160a01b03191633179055620002d0565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff166200015b5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200011a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018a57607f821691505b602082108103620001ab57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001ff57600081815260208120601f850160051c81016020861015620001da5750805b601f850160051c820191505b81811015620001fb57828155600101620001e6565b5050505b505050565b81516001600160401b038111156200022057620002206200015f565b620002388162000231845462000175565b84620001b1565b602080601f831160018114620002705760008415620002575750858301515b600019600386901b1c1916600185901b178555620001fb565b600085815260208120601f198616915b82811015620002a15788860151825594840194600190910190840162000280565b5085821015620002c05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61163180620002e06000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806340c10f19116100de578063a217fddf11610097578063d539139311610071578063d539139314610325578063d547741f1461033a578063dd62ed3e1461034d578063de5f72fd1461036057600080fd5b8063a217fddf146102f7578063a457c2d7146102ff578063a9059cbb1461031257600080fd5b806340c10f191461027b57806342966c681461028e57806370a08231146102a15780637468e804146102ca57806391d14854146102dc57806395d89b41146102ef57600080fd5b806323b872dd1161013057806323b872dd146101f7578063248a9ca31461020a5780632f2ff15d1461022d578063313ce5671461024057806336568abe14610255578063395093511461026857600080fd5b806301ffc9a71461017857806306fdde03146101a0578063095ea7b3146101b55780631624f6c6146101c857806318160ddd146101dd5780631f88b817146101ef575b600080fd5b61018b610186366004611008565b610368565b60405190151581526020015b60405180910390f35b6101a861039f565b6040516101979190611056565b61018b6101c33660046110a5565b610431565b6101db6101d6366004611172565b610449565b005b6002545b604051908152602001610197565b6101db6104c4565b61018b6102053660046111f0565b6104fa565b6101e161021836600461122c565b60009081526005602052604090206001015490565b6101db61023b366004611245565b61051e565b60095460405160ff9091168152602001610197565b6101db610263366004611245565b610543565b61018b6102763660046110a5565b6105c6565b6101db6102893660046110a5565b6105e8565b6101db61029c36600461122c565b61060a565b6101e16102af366004611271565b6001600160a01b031660009081526020819052604090205490565b60095461018b90610100900460ff1681565b61018b6102ea366004611245565b61062c565b6101a8610657565b6101e1600081565b61018b61030d3660046110a5565b610666565b61018b6103203660046110a5565b6106e1565b6101e16000805160206115dc83398151915281565b6101db610348366004611245565b6106ef565b6101e161035b36600461128c565b610714565b6101db61073f565b60006001600160e01b03198216637965db0b60e01b148061039957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600780546103ae906112b6565b80601f01602080910402602001604051908101604052809291908181526020018280546103da906112b6565b80156104275780601f106103fc57610100808354040283529160200191610427565b820191906000526020600020905b81548152906001019060200180831161040a57829003601f168201915b5050505050905090565b60003361043f8185856107cd565b5060019392505050565b6006546001600160a01b0316331461046057600080fd5b600761046c848261133e565b506008610479838261133e565b506009805460ff191660ff8316908117909155600680546001600160a01b03191690556104bf9033906104ad90600a6114f8565b6104ba90620186a0611507565b6108f1565b505050565b6000805160206115dc8339815191526104dc816109b0565b506009805461ff001981166101009182900460ff1615909102179055565b6000336105088582856109bd565b610513858585610a37565b506001949350505050565b600082815260056020526040902060010154610539816109b0565b6104bf8383610bdb565b6001600160a01b03811633146105b85760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105c28282610c61565b5050565b60003361043f8185856105d98383610714565b6105e39190611526565b6107cd565b6000805160206115dc833981519152610600816109b0565b6104bf83836108f1565b6000805160206115dc833981519152610622816109b0565b6105c23383610cc8565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600880546103ae906112b6565b600033816106748286610714565b9050838110156106d45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105af565b61051382868684036107cd565b60003361043f818585610a37565b60008281526005602052604090206001015461070a816109b0565b6104bf8383610c61565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600954610100900460ff168061076857506107686000805160206115dc8339815191523361062c565b6107a55760405162461bcd60e51b815260206004820152600e60248201526d10d85b881b9bdd0819985d58d95d60921b60448201526064016105af565b6107cb336107b560095460ff1690565b6107c090600a6114f8565b6104ba9060c8611507565b565b6001600160a01b03831661082f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105af565b6001600160a01b0382166108905760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105af565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166109475760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105af565b80600260008282546109599190611526565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6109ba8133610dfa565b50565b60006109c98484610714565b90506000198114610a315781811015610a245760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105af565b610a3184848484036107cd565b50505050565b6001600160a01b038316610a9b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105af565b6001600160a01b038216610afd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105af565b6001600160a01b03831660009081526020819052604090205481811015610b755760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105af565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a31565b610be5828261062c565b6105c25760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610c1d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610c6b828261062c565b156105c25760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038216610d285760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105af565b6001600160a01b03821660009081526020819052604090205481811015610d9c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105af565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b610e04828261062c565b6105c257610e1181610e53565b610e1c836020610e65565b604051602001610e2d929190611539565b60408051601f198184030181529082905262461bcd60e51b82526105af91600401611056565b60606103996001600160a01b03831660145b60606000610e74836002611507565b610e7f906002611526565b67ffffffffffffffff811115610e9757610e976110cf565b6040519080825280601f01601f191660200182016040528015610ec1576020820181803683370190505b509050600360fc1b81600081518110610edc57610edc6115ae565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610f0b57610f0b6115ae565b60200101906001600160f81b031916908160001a9053506000610f2f846002611507565b610f3a906001611526565b90505b6001811115610fb2576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610f6e57610f6e6115ae565b1a60f81b828281518110610f8457610f846115ae565b60200101906001600160f81b031916908160001a90535060049490941c93610fab816115c4565b9050610f3d565b5083156110015760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105af565b9392505050565b60006020828403121561101a57600080fd5b81356001600160e01b03198116811461100157600080fd5b60005b8381101561104d578181015183820152602001611035565b50506000910152565b6020815260008251806020840152611075816040850160208701611032565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146110a057600080fd5b919050565b600080604083850312156110b857600080fd5b6110c183611089565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126110f657600080fd5b813567ffffffffffffffff80821115611111576111116110cf565b604051601f8301601f19908116603f01168101908282118183101715611139576111396110cf565b8160405283815286602085880101111561115257600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561118757600080fd5b833567ffffffffffffffff8082111561119f57600080fd5b6111ab878388016110e5565b945060208601359150808211156111c157600080fd5b506111ce868287016110e5565b925050604084013560ff811681146111e557600080fd5b809150509250925092565b60008060006060848603121561120557600080fd5b61120e84611089565b925061121c60208501611089565b9150604084013590509250925092565b60006020828403121561123e57600080fd5b5035919050565b6000806040838503121561125857600080fd5b8235915061126860208401611089565b90509250929050565b60006020828403121561128357600080fd5b61100182611089565b6000806040838503121561129f57600080fd5b6112a883611089565b915061126860208401611089565b600181811c908216806112ca57607f821691505b6020821081036112ea57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156104bf57600081815260208120601f850160051c810160208610156113175750805b601f850160051c820191505b8181101561133657828155600101611323565b505050505050565b815167ffffffffffffffff811115611358576113586110cf565b61136c8161136684546112b6565b846112f0565b602080601f8311600181146113a157600084156113895750858301515b600019600386901b1c1916600185901b178555611336565b600085815260208120601f198616915b828110156113d0578886015182559484019460019091019084016113b1565b50858210156113ee5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561144f578160001904821115611435576114356113fe565b8085161561144257918102915b93841c9390800290611419565b509250929050565b60008261146657506001610399565b8161147357506000610399565b81600181146114895760028114611493576114af565b6001915050610399565b60ff8411156114a4576114a46113fe565b50506001821b610399565b5060208310610133831016604e8410600b84101617156114d2575081810a610399565b6114dc8383611414565b80600019048211156114f0576114f06113fe565b029392505050565b600061100160ff841683611457565b6000816000190483118215151615611521576115216113fe565b500290565b80820180821115610399576103996113fe565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611571816017850160208801611032565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516115a2816028840160208801611032565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b6000816115d3576115d36113fe565b50600019019056fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220cf9b0a0b14e9ccf4db7cb3318a39563aa5200d4498095d0df5233f96f05e490c64736f6c63430008100033