[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "TLC_AllowanceBelowZero", "type": "error" }, { "inputs": [], "name": "TLC_ApproveFromZeroAddress", "type": "error" }, { "inputs": [], "name": "TLC_ApproveToZeroAddress", "type": "error" }, { "inputs": [], "name": "TLC_BurnAmountExceedsBalance", "type": "error" }, { "inputs": [], "name": "TLC_BurnFromZeroAddress", "type": "error" }, { "inputs": [], "name": "TLC_InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "TLC_MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "TLC_NotMinter", "type": "error" }, { "inputs": [], "name": "TLC_TransferAmountExceedsBalance", "type": "error" }, { "inputs": [], "name": "TLC_TransferFromZeroAddress", "type": "error" }, { "inputs": [], "name": "TLC_TransferToZeroAddress", "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": "uint8", "name": "version", "type": "uint8" } ], "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": "minter", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "mintable", "type": "bool" } ], "name": "SetMinter", "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": "user", "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": "uint256", "name": "epochTimestamp", "type": "uint256" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "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": "epochLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCurrentEpochTimestamp", "outputs": [ { "internalType": "uint256", "name": "epochTimestamp", "type": "uint256" } ], "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": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_minter", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "minter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "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": "_minter", "type": "address" }, { "internalType": "bool", "name": "_mintable", "type": "bool" } ], "name": "setMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "totalSupplyByEpoch", "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" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610e96806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101285760003560e01c806306fdde031461012d578063095ea7b31461017057806318160ddd1461019357806323b872dd146101a55780632fe1c35b146101b8578063313ce567146101d85780633656eec2146101e7578063395093511461021d5780633dd08c381461023057806340c10f191461025357806357d775f81461026857806370a0823114610272578063715018a6146102855780638129fc1c1461028d57806383825ced146102955780638da5cb5b1461029d57806395d89b41146102bd5780639dc29fac146102dc578063a457c2d7146102ef578063a9059cbb14610302578063aa271e1a14610315578063cf456ae714610341578063dd62ed3e14610354578063f2fde38b14610367575b600080fd5b604080518082019091526015815274151c9859195c88131bde585b1d1e4810dc99591a5d605a1b60208201525b6040516101679190610bf6565b60405180910390f35b61018361017e366004610c60565b61037a565b6040519015158152602001610167565b6067545b604051908152602001610167565b6101836101b3366004610c8a565b610394565b6101976101c6366004610cc6565b60686020526000908152604090205481565b60405160128152602001610167565b6101976101f5366004610cdf565b60009182526065602090815260408084206001600160a01b0393909316845291905290205490565b61018361022b366004610c60565b6103c0565b61018361023e366004610d0b565b60696020526000908152604090205460ff1681565b610266610261366004610c60565b6103e2565b005b61019762093a8081565b610197610280366004610d0b565b6104e4565b61026661052b565b61026661053f565b610197610655565b6102a5610674565b6040516001600160a01b039091168152602001610167565b604080518082019091526003815262544c4360e81b602082015261015a565b6102666102ea366004610c60565b610683565b6101836102fd366004610c60565b6106c9565b610183610310366004610c60565b61070a565b610183610323366004610d0b565b6001600160a01b031660009081526069602052604090205460ff1690565b61026661034f366004610d2d565b610728565b610197610362366004610d69565b61078f565b610266610375366004610d0b565b6107ba565b600033610388818585610830565b60019150505b92915050565b6000336103a28582856108d7565b6103b56103ad610655565b868686610922565b506001949350505050565b6000336103888185856103d3838361078f565b6103dd9190610da9565b610830565b3360009081526069602052604090205460ff1661041257604051631de2571d60e01b815260040160405180910390fd5b6001600160a01b038216610439576040516379f435ab60e11b815260040160405180910390fd5b6000610443610655565b905081606760008282546104579190610da9565b90915550506000818152606860205260408120805484929061047a908490610da9565b909155508290506065600061048d610655565b8152602080820192909252604090810160009081206001600160a01b03881680835290845282822080549590950190945590518581529091600080516020610e4183398151915291015b60405180910390a3505050565b6000606560006104f2610655565b81526020019081526020016000206000836001600160a01b03166001600160a01b03168152602001908152602001600020549050919050565b610533610a14565b61053d6000610a73565b565b600054610100900460ff161580801561055f5750600054600160ff909116105b806105795750303b158015610579575060005460ff166001145b6105e15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610604576000805461ff0019166101001790555b61060c610ac5565b8015610652576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600062093a806106658142610dbc565b61066f9190610dde565b905090565b6033546001600160a01b031690565b3360009081526069602052604090205460ff166106b357604051631de2571d60e01b815260040160405180910390fd5b6106c56106be610655565b8383610af4565b5050565b600033816106d7828661078f565b9050838110156106fd57604051600162758c1560e11b0319815260040160405180910390fd5b6103b58286868403610830565b600061071f610717610655565b338585610922565b50600192915050565b610730610a14565b6001600160a01b038216600081815260696020908152604091829020805460ff191685151590811790915591519182527f1f96bc657d385fd83da973a43f2ad969e6d96b6779b779571a7306db7ca1cd00910160405180910390a25050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b6107c2610a14565b6001600160a01b0381166108275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d8565b61065281610a73565b6001600160a01b03831661085757604051635b6afcc960e11b815260040160405180910390fd5b6001600160a01b03821661087e576040516337e1973160e11b815260040160405180910390fd5b6001600160a01b0383811660008181526066602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016104d7565b60006108e3848461078f565b9050600019811461091c578181101561090f57604051633d0b8f2160e01b815260040160405180910390fd5b61091c8484848403610830565b50505050565b6001600160a01b03831661094957604051631211a29760e11b815260040160405180910390fd5b6001600160a01b03821661097057604051631efeee8760e21b815260040160405180910390fd5b60008481526065602090815260408083206001600160a01b0387168452909152902054818110156109b457604051637c7f4e4560e11b815260040160405180910390fd5b60008581526065602090815260408083206001600160a01b03888116808652918452828520878703905587168085529382902080548701905590518581529091600080516020610e41833981519152910160405180910390a35050505050565b33610a1d610674565b6001600160a01b03161461053d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d8565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610aec5760405162461bcd60e51b81526004016105d890610df5565b61053d610bc6565b6001600160a01b038216610b1b57604051630ee705d360e01b815260040160405180910390fd5b60008381526065602090815260408083206001600160a01b038616845290915290205481811015610b5e5760405162a37eff60e41b815260040160405180910390fd5b60008481526065602090815260408083206001600160a01b0387168085529083528184208686039055606780548790039055878452606883528184208054879003905590518581529091600080516020610e41833981519152910160405180910390a361091c565b600054610100900460ff16610bed5760405162461bcd60e51b81526004016105d890610df5565b61053d33610a73565b600060208083528351808285015260005b81811015610c2357858101830151858201604001528201610c07565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610c5b57600080fd5b919050565b60008060408385031215610c7357600080fd5b610c7c83610c44565b946020939093013593505050565b600080600060608486031215610c9f57600080fd5b610ca884610c44565b9250610cb660208501610c44565b9150604084013590509250925092565b600060208284031215610cd857600080fd5b5035919050565b60008060408385031215610cf257600080fd5b82359150610d0260208401610c44565b90509250929050565b600060208284031215610d1d57600080fd5b610d2682610c44565b9392505050565b60008060408385031215610d4057600080fd5b610d4983610c44565b915060208301358015158114610d5e57600080fd5b809150509250929050565b60008060408385031215610d7c57600080fd5b610d8583610c44565b9150610d0260208401610c44565b634e487b7160e01b600052601160045260246000fd5b8082018082111561038e5761038e610d93565b600082610dd957634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761038e5761038e610d93565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d87197c64a252974969e849c6b92cca5d9f706d3f95045bc24bf12de31f3ee3b64736f6c63430008120033