Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0xEeAa9A247C16D29D5ab4bCd9Ab2640920562790f
Balance 0 ETH
Nonce 1
Code Size 12400 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

12400 bytes
0x60806040526004361061010c575f3560e01c80638c0b5e2211610094578063a9059cbb11610063578063a9059cbb14610333578063aa4bde281461036f578063c4918b4e14610399578063c9567bf9146103c3578063dd62ed3e146103d957610113565b80638c0b5e221461029f5780638da5cb5b146102c957806395d89b41146102f3578063a2b174121461031d57610113565b806323b872dd116100db57806323b872dd146101d1578063313ce5671461020d57806370a0823114610237578063715018a614610273578063751039fc1461028957610113565b80630445b6671461011757806306fdde0314610141578063095ea7b31461016b57806318160ddd146101a757610113565b3661011357005b5f80fd5b348015610122575f80fd5b5061012b610415565b604051610138919061205c565b60405180910390f35b34801561014c575f80fd5b5061015561041b565b60405161016291906120ff565b60405180910390f35b348015610176575f80fd5b50610191600480360381019061018c91906121a7565b610458565b60405161019e91906121ff565b60405180910390f35b3480156101b2575f80fd5b506101bb610475565b6040516101c8919061205c565b60405180910390f35b3480156101dc575f80fd5b506101f760048036038101906101f29190612218565b610498565b60405161020491906121ff565b60405180910390f35b348015610218575f80fd5b5061022161056c565b60405161022e9190612283565b60405180910390f35b348015610242575f80fd5b5061025d6004803603810190610258919061229c565b610574565b60405161026a919061205c565b60405180910390f35b34801561027e575f80fd5b506102876105ba565b005b348015610294575f80fd5b5061029d610708565b005b3480156102aa575f80fd5b506102b3610837565b6040516102c0919061205c565b60405180910390f35b3480156102d4575f80fd5b506102dd61083d565b6040516102ea91906122d6565b60405180910390f35b3480156102fe575f80fd5b50610307610864565b60405161031491906120ff565b60405180910390f35b348015610328575f80fd5b506103316108a1565b005b34801561033e575f80fd5b50610359600480360381019061035491906121a7565b61096f565b60405161036691906121ff565b60405180910390f35b34801561037a575f80fd5b5061038361098c565b604051610390919061205c565b60405180910390f35b3480156103a4575f80fd5b506103ad610992565b6040516103ba919061205c565b60405180910390f35b3480156103ce575f80fd5b506103d7610998565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa91906122ef565b610f26565b60405161040c919061205c565b60405180910390f35b600d5481565b60606040518060400160405280600881526020017f4775617269644f53000000000000000000000000000000000000000000000000815250905090565b5f61046b610464610fa8565b8484610faf565b6001905092915050565b5f6012600a6104849190612489565b633b9aca0061049391906124d3565b905090565b5f6104a4848484611172565b610561846104b0610fa8565b61055c85604051806060016040528060298152602001612feb6029913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610513610fa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b059092919063ffffffff16565b610faf565b600190509392505050565b5f6012905090565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6105c2610fa8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461064e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064590612584565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7660405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610710610fa8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612584565b60405180910390fd5b6012600a6107aa9190612489565b633b9aca006107b991906124d3565b600b819055506012600a6107cd9190612489565b633b9aca006107dc91906124d3565b600c819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a6108119190612489565b633b9aca0061082091906124d3565b60405161082d919061205c565b60405180910390a1565b600b5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4755444f53000000000000000000000000000000000000000000000000000000815250905090565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108e1610fa8565b73ffffffffffffffffffffffffffffffffffffffff1614610937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092e906125ec565b60405180910390fd5b5f61094130610574565b90505f8111156109555761095481611b67565b5b5f4790505f81111561096b5761096a81611dd2565b5b5050565b5f61098261097b610fa8565b8484611172565b6001905092915050565b600c5481565b600e5481565b6109a0610fa8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2390612584565b60405180910390fd5b601160169054906101000a900460ff1615610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7390612654565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5f9190612686565b90505f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bcc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf09190612686565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530846040518363ffffffff1660e01b8152600401610c2a9291906126b1565b602060405180830381865afa158015610c45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c699190612686565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ca45780610dad565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d329190612686565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630846040518363ffffffff1660e01b8152600401610d6c9291906126b1565b6020604051808303815f875af1158015610d88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dac9190612686565b5b60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e343060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610e209190612489565b633b9aca00610e2f91906124d3565b610faf565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e7c30610574565b5f80610e8661083d565b426040518863ffffffff1660e01b8152600401610ea89695949392919061271a565b60606040518083038185885af1158015610ec4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ee9919061278d565b5050506001601160156101000a81548160ff0219169083151502179055506001601160166101000a81548160ff0219169083151502179055505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361101d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110149061284d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611082906128b5565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611165919061205c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790612943565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361124e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611245906129ab565b60405180910390fd5b5f8111611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790612a39565b60405180910390fd5b601160169054906101000a900460ff1661137f5760015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061133f575060015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137590612aa1565b60405180910390fd5b5b5f61138861083d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156113f657506113c661083d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118555760115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806114a2575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156118505760115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611550575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156115a3575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561169b57600b548211156115ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e490612b09565b60405180910390fd5b600c54826115fa85610574565b6116049190612b27565b1115611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c90612ba4565b60405180910390fd5b6116816064611673600854600a541161166057600454611664565b6006545b85611e9f90919063ffffffff16565b611f1690919063ffffffff16565b9050600a5f81548092919061169590612bc2565b91905055505b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561172357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611767576117646064611756600854600a541161174357600554611747565b6007545b85611e9f90919063ffffffff16565b611f1690919063ffffffff16565b90505b5f61177130610574565b9050601160149054906101000a900460ff161580156117dc575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156117f45750601160159054906101000a900460ff165b80156118015750600d5481115b80156118105750600954600a54115b1561184a5761183261182d8461182884600e54611f42565b611f42565b611b67565b5f4790505f8111156118485761184747611dd2565b5b505b50611854565b5f90505b5b6118a58260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f5a90919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506119486118fc8284611f5a90919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f8690919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f811115611a88576119e18160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f8690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a7f919061205c565b60405180910390a35b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611aea8486611f5a90919063ffffffff16565b604051611af7919061205c565b60405180910390a350505050565b5f838311158290611b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4391906120ff565b60405180910390fd5b505f8385611b5a9190612c09565b9050809150509392505050565b6001601160146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611b9e57611b9d612c3c565b5b604051908082528060200260200182016040528015611bcc5781602001602082028036833780820191505090505b50905030815f81518110611be357611be2612c69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cab9190612686565b81600181518110611cbf57611cbe612c69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d253060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610faf565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611d87959493929190612d4d565b5f604051808303815f87803b158015611d9e575f80fd5b505af1158015611db0573d5f803e3d5ffd5b50505050505f601160146101000a81548160ff02191690831515021790555050565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e1890612dd2565b5f6040518083038185875af1925050503d805f8114611e52576040519150601f19603f3d011682016040523d82523d5f602084013e611e57565b606091505b5050905080611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9290612e30565b60405180910390fd5b5050565b5f808303611eaf575f9050611f10565b5f8284611ebc91906124d3565b9050828482611ecb9190612e7b565b14611f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0290612f1b565b60405180910390fd5b809150505b92915050565b5f611f3a8383604051806060016040528060238152602001612fc860239139611fe3565b905092915050565b5f818311611f505782611f52565b815b905092915050565b5f611f7e838360405180606001604052806027815260200161301460279139611b05565b905092915050565b5f808284611f949190612b27565b905083811015611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd090612fa9565b60405180910390fd5b8091505092915050565b5f8083118290612029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202091906120ff565b60405180910390fd5b505f83856120379190612e7b565b9050809150509392505050565b5f819050919050565b61205681612044565b82525050565b5f60208201905061206f5f83018461204d565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156120ac578082015181840152602081019050612091565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6120d182612075565b6120db818561207f565b93506120eb81856020860161208f565b6120f4816120b7565b840191505092915050565b5f6020820190508181035f83015261211781846120c7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61214c82612123565b9050919050565b61215c81612142565b8114612166575f80fd5b50565b5f8135905061217781612153565b92915050565b61218681612044565b8114612190575f80fd5b50565b5f813590506121a18161217d565b92915050565b5f80604083850312156121bd576121bc61211f565b5b5f6121ca85828601612169565b92505060206121db85828601612193565b9150509250929050565b5f8115159050919050565b6121f9816121e5565b82525050565b5f6020820190506122125f8301846121f0565b92915050565b5f805f6060848603121561222f5761222e61211f565b5b5f61223c86828701612169565b935050602061224d86828701612169565b925050604061225e86828701612193565b9150509250925092565b5f60ff82169050919050565b61227d81612268565b82525050565b5f6020820190506122965f830184612274565b92915050565b5f602082840312156122b1576122b061211f565b5b5f6122be84828501612169565b91505092915050565b6122d081612142565b82525050565b5f6020820190506122e95f8301846122c7565b92915050565b5f80604083850312156123055761230461211f565b5b5f61231285828601612169565b925050602061232385828601612169565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156123af5780860481111561238b5761238a61232d565b5b600185161561239a5780820291505b80810290506123a88561235a565b945061236f565b94509492505050565b5f826123c75760019050612482565b816123d4575f9050612482565b81600181146123ea57600281146123f457612423565b6001915050612482565b60ff8411156124065761240561232d565b5b8360020a91508482111561241d5761241c61232d565b5b50612482565b5060208310610133831016604e8410600b84101617156124585782820a9050838111156124535761245261232d565b5b612482565b6124658484846001612366565b9250905081840481111561247c5761247b61232d565b5b81810290505b9392505050565b5f61249382612044565b915061249e83612268565b92506124cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846123b8565b905092915050565b5f6124dd82612044565b91506124e883612044565b92508282026124f681612044565b9150828204841483151761250d5761250c61232d565b5b5092915050565b7f4f776e6572736869703a2063616c6c6572206973206e6f7420746865206f776e5f8201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b5f61256e60228361207f565b915061257982612514565b604082019050919050565b5f6020820190508181035f83015261259b81612562565b9050919050565b7f43616c6c6572206973206e6f7420617574686f72697a656400000000000000005f82015250565b5f6125d660188361207f565b91506125e1826125a2565b602082019050919050565b5f6020820190508181035f830152612603816125ca565b9050919050565b7f54726164696e6720616c726561647920656e61626c65640000000000000000005f82015250565b5f61263e60178361207f565b91506126498261260a565b602082019050919050565b5f6020820190508181035f83015261266b81612632565b9050919050565b5f8151905061268081612153565b92915050565b5f6020828403121561269b5761269a61211f565b5b5f6126a884828501612672565b91505092915050565b5f6040820190506126c45f8301856122c7565b6126d160208301846122c7565b9392505050565b5f819050919050565b5f819050919050565b5f6127046126ff6126fa846126d8565b6126e1565b612044565b9050919050565b612714816126ea565b82525050565b5f60c08201905061272d5f8301896122c7565b61273a602083018861204d565b612747604083018761270b565b612754606083018661270b565b61276160808301856122c7565b61276e60a083018461204d565b979650505050505050565b5f815190506127878161217d565b92915050565b5f805f606084860312156127a4576127a361211f565b5b5f6127b186828701612779565b93505060206127c286828701612779565b92505060406127d386828701612779565b9150509250925092565b7f4945524332303a20617070726f76652066726f6d207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61283760218361207f565b9150612842826127dd565b604082019050919050565b5f6020820190508181035f8301526128648161282b565b9050919050565b7f4945524332303a20617070726f766520746f207a65726f2061646472657373005f82015250565b5f61289f601f8361207f565b91506128aa8261286b565b602082019050919050565b5f6020820190508181035f8301526128cc81612893565b9050919050565b7f4945524332303a207472616e736665722066726f6d207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61292d60228361207f565b9150612938826128d3565b604082019050919050565b5f6020820190508181035f83015261295a81612921565b9050919050565b7f4945524332303a207472616e7366657220746f207a65726f20616464726573735f82015250565b5f61299560208361207f565b91506129a082612961565b602082019050919050565b5f6020820190508181035f8301526129c281612989565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612a2360298361207f565b9150612a2e826129c9565b604082019050919050565b5f6020820190508181035f830152612a5081612a17565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65640000000000000000005f82015250565b5f612a8b60178361207f565b9150612a9682612a57565b602082019050919050565b5f6020820190508181035f830152612ab881612a7f565b9050919050565b7f45786365656473206d6178207472616e73616374696f6e206c696d69742e00005f82015250565b5f612af3601e8361207f565b9150612afe82612abf565b602082019050919050565b5f6020820190508181035f830152612b2081612ae7565b9050919050565b5f612b3182612044565b9150612b3c83612044565b9250828201905080821115612b5457612b5361232d565b5b92915050565b7f45786365656473206d61782077616c6c65742073697a652e00000000000000005f82015250565b5f612b8e60188361207f565b9150612b9982612b5a565b602082019050919050565b5f6020820190508181035f830152612bbb81612b82565b9050919050565b5f612bcc82612044565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bfe57612bfd61232d565b5b600182019050919050565b5f612c1382612044565b9150612c1e83612044565b9250828203905081811115612c3657612c3561232d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612cc881612142565b82525050565b5f612cd98383612cbf565b60208301905092915050565b5f602082019050919050565b5f612cfb82612c96565b612d058185612ca0565b9350612d1083612cb0565b805f5b83811015612d40578151612d278882612cce565b9750612d3283612ce5565b925050600181019050612d13565b5085935050505092915050565b5f60a082019050612d605f83018861204d565b612d6d602083018761270b565b8181036040830152612d7f8186612cf1565b9050612d8e60608301856122c7565b612d9b608083018461204d565b9695505050505050565b5f81905092915050565b50565b5f612dbd5f83612da5565b9150612dc882612daf565b5f82019050919050565b5f612ddc82612db2565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f612e1a60138361207f565b9150612e2582612de6565b602082019050919050565b5f6020820190508181035f830152612e4781612e0e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e8582612044565b9150612e9083612044565b925082612ea057612e9f612e4e565b5b828204905092915050565b7f5361666543616c633a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7720646574656374656400000000000000000000000000000000000000000000602082015250565b5f612f05602a8361207f565b9150612f1082612eab565b604082019050919050565b5f6020820190508181035f830152612f3281612ef9565b9050919050565b7f5361666543616c633a206164646974696f6e206f766572666c6f7720646574655f8201527f6374656400000000000000000000000000000000000000000000000000000000602082015250565b5f612f9360248361207f565b9150612f9e82612f39565b604082019050919050565b5f6020820190508181035f830152612fc081612f87565b905091905056fe5361666543616c633a206469766973696f6e206279207a65726f2064657465637465644945524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655361666543616c633a207375627472616374696f6e206f766572666c6f77206465746563746564a26469706673582212205535fb1ccb5fbc7e82e1bd1cda24e8b4b3fc1dc8fef08d6d1fb7c62ba6cfaf7864736f6c63430008140033

Verified Source Code Full Match

Compiler: v0.8.20+commit.a1b79de6 EVM: shanghai Optimization: No
GuaridOS.sol 411 lines
// SPDX-License-Identifier: MIT
/**
 Privacy-first Operating System for Web3
    Website: https://guaridos.me/
    Telegram: https://t.me/GuaridOS
    X/Twitter : https://x.com/guaridosme                                                                                                             
**/

pragma solidity >=0.8.20;

abstract contract BaseContext {
    function caller() 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 SafeCalc {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeCalc: addition overflow detected");
        return c;
    }

    function subtract(uint256 a, uint256 b) internal pure returns (uint256) {
        return subtract(a, b, "SafeCalc: subtraction overflow detected");
    }

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

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

    function divide(uint256 a, uint256 b) internal pure returns (uint256) {
        return divide(a, b, "SafeCalc: division by zero detected");
    }

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

contract Ownership is BaseContext {
    address private _owner;
    event OwnerUpdated(address indexed previousOwner, address indexed newOwner);

    constructor() {
        address msgSender = caller();
        _owner = msgSender;
        emit OwnerUpdated(address(0), msgSender);
    }

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

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

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

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IDEXRouter {
    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 GuaridOS is BaseContext, IERC20, Ownership {
    using SafeCalc for uint256;

    mapping(address => bool) private _excludedFromFees;
    mapping(address => uint256) private _accountBalances;
    mapping(address => mapping(address => uint256)) private _tokenAllowances;

    uint256 private _initialBuyFee = 20;
    uint256 private _initialSellFee = 20;
    uint256 private _finalBuyFee = 5;
    uint256 private _finalSellFee = 5;
    uint256 private _buyCountForFeeReduction = 20;
    uint256 private _buyCountForSwapActivation = 20;
    uint256 private _buyCount = 0;

    uint8 private constant DECIMALS = 18;
    uint256 private constant TOTAL_SUPPLY = 1000000000 * 10 ** DECIMALS;
    string private constant NAME = unicode"GuaridOS";
    string private constant SYMBOL = unicode"GUDOS";
    uint256 public maxTxAmount = 10000000 * 10 ** DECIMALS;
    uint256 public maxWalletAmount = 10000000 * 10 ** DECIMALS;
    uint256 public swapThreshold = 5000000 * 10 ** DECIMALS;
    uint256 public maxSwap = 20000000 * 10 ** DECIMALS;

    address payable private _feeWallet;

    IDEXRouter private dexRouter;
    address private dexPair;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private tradingOpen = false;

    event MaxTxAmountUpdated(uint _maxTransaction);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _feeWallet = payable(caller());
        _accountBalances[caller()] = TOTAL_SUPPLY;
        _excludedFromFees[owner()] = true;
        _excludedFromFees[address(this)] = true;
        _excludedFromFees[_feeWallet] = true;

        emit Transfer(address(0), caller(), TOTAL_SUPPLY);
    }

    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 TOTAL_SUPPLY;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 value
    ) public override returns (bool) {
        _transfer(sender, recipient, value);
        _approve(
            sender,
            caller(),
            _tokenAllowances[sender][caller()].subtract(
                value,
                "IERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function _approve(address owner, address spender, uint256 value) private {
        require(owner != address(0), "IERC20: approve from zero address");
        require(spender != address(0), "IERC20: approve to zero address");
        _tokenAllowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint256 value) private {
        require(from != address(0), "IERC20: transfer from zero address");
        require(to != address(0), "IERC20: transfer to zero address");
        require(value > 0, "Transfer amount must be greater than zero");

        if (!tradingOpen) {
            require(
                _excludedFromFees[from] || _excludedFromFees[to],
                "Trading not yet enabled"
            );
        }

        uint256 feeAmount = 0;

        if (from != owner() && to != owner()) {
            if (from == dexPair || to == dexPair) {
                if (
                    from == dexPair &&
                    to != address(dexRouter) &&
                    !_excludedFromFees[to]
                ) {
                    require(
                        value <= maxTxAmount,
                        "Exceeds max transaction limit."
                    );
                    require(
                        balanceOf(to) + value <= maxWalletAmount,
                        "Exceeds max wallet size."
                    );

                    feeAmount = value
                        .multiply(
                            (_buyCount > _buyCountForFeeReduction)
                                ? _finalBuyFee
                                : _initialBuyFee
                        )
                        .divide(100);
                    _buyCount++;
                }

                if (to == dexPair && from != address(this)) {
                    feeAmount = value
                        .multiply(
                            (_buyCount > _buyCountForFeeReduction)
                                ? _finalSellFee
                                : _initialSellFee
                        )
                        .divide(100);
                }

                uint256 contractBalance = balanceOf(address(this));
                if (
                    !inSwap &&
                    to == dexPair &&
                    swapEnabled &&
                    contractBalance > swapThreshold &&
                    _buyCount > _buyCountForSwapActivation
                ) {
                    swapTokensForEth(
                        min(value, min(contractBalance, maxSwap))
                    );
                    uint256 contractEthBalance = address(this).balance;
                    if (contractEthBalance > 0) {
                        sendEthToFee(address(this).balance);
                    }
                }
            } else {
                feeAmount = 0;
            }
        }

        _accountBalances[from] = _accountBalances[from].subtract(value);
        _accountBalances[to] = _accountBalances[to].add(
            value.subtract(feeAmount)
        );

        if (feeAmount > 0) {
            _accountBalances[address(this)] = _accountBalances[address(this)]
                .add(feeAmount);
            emit Transfer(from, address(this), feeAmount);
        }

        emit Transfer(from, to, value.subtract(feeAmount));
    }

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

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

    function sendEthToFee(uint256 amount) private {
        (bool success, ) = _feeWallet.call{value: amount}("");
        require(success, "ETH transfer failed");
    }

    function manualSwapTokensForEth() external {
        require(caller() == _feeWallet, "Caller is not authorized");
        uint256 tokenBalance = balanceOf(address(this));
    

        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }

        uint256 ethBalance = address(this).balance;

        if (ethBalance > 0) {
            sendEthToFee(ethBalance);
        }
    }

    function removeLimits() external onlyOwner {
        maxTxAmount = TOTAL_SUPPLY;
        maxWalletAmount = TOTAL_SUPPLY;
        emit MaxTxAmountUpdated(TOTAL_SUPPLY);
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "Trading already enabled");
        dexRouter = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        address weth = dexRouter.WETH();
        address existing = IDEXFactory(dexRouter.factory()).getPair(address(this), weth);
        dexPair = (existing == address(0))
            ? IDEXFactory(dexRouter.factory()).createPair(address(this), weth)
            : existing;

        _approve(address(this), address(dexRouter), TOTAL_SUPPLY);

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
maxSwap 0xc4918b4e → uint256
maxTxAmount 0x8c0b5e22 → uint256
maxWalletAmount 0xaa4bde28 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
swapThreshold 0x0445b667 → uint256
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 value
returns: bool
manualSwapTokensForEth 0xa2b17412
No parameters
openTrading 0xc9567bf9
No parameters
removeLimits 0x751039fc
No parameters
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address recipient
uint256 value
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 value
returns: bool

Recent Transactions

No transactions found for this address