Address Contract Partially Verified
Address
0x46855024DCA2dbAC1F42292EcB494d1A0Da6d9Ee
Balance
0 ETH
Nonce
1
Code Size
18373 bytes
Creator
0x2aF1ff38...3B0d at tx 0xb4c509d5...392fd8
Indexed Transactions
0
Contract Bytecode
18373 bytes
0x60806040526004361061026a575f3560e01c8063715018a611610143578063a9059cbb116100b5578063c3f70b5211610079578063c3f70b52146108e5578063dd62ed3e1461090f578063df6f93be1461094b578063f1cd531a14610975578063f2fde38b1461099d578063fe575a87146109c557610271565b8063a9059cbb146107f1578063b62496f51461082d578063b69ef8a814610869578063be85750414610893578063c0246668146108bd57610271565b8063945674fe11610107578063945674fe146106f957806395d89b41146107235780639a7a23d61461074d5780639ee2e924146107755780639fccce321461078b578063a457c2d7146107b557610271565b8063715018a614610653578063751039fc146106695780637571336a1461067f578063863cf2cc146106a75780638da5cb5b146106cf57610271565b806323b872dd116101dc57806348d79155116101a057806348d791551461053357806349bd5a5e1461055d5780634fbee193146105875780635de0f2a0146105c35780636c7e15c9146105ed57806370a082311461061757610271565b806323b872dd146104515780632c28f5791461048d578063313ce567146104a357806339509351146104cd57806346469afb1461050957610271565b80631694505e1161022e5780631694505e1461035757806318160ddd146103815780631816467f146103ab5780631a8145bb146103d35780631bff7898146103fd57806322eb66311461042757610271565b806306fdde0314610275578063095ea7b31461029f5780630e947809146102db5780630f299cf11461030557806310d5de531461031b57610271565b3661027157005b5f80fd5b348015610280575f80fd5b50610289610a01565b60405161029691906136ef565b60405180910390f35b3480156102aa575f80fd5b506102c560048036038101906102c091906137a0565b610a91565b6040516102d291906137f8565b60405180910390f35b3480156102e6575f80fd5b506102ef610aae565b6040516102fc91906137f8565b60405180910390f35b348015610310575f80fd5b50610319610ac0565b005b348015610326575f80fd5b50610341600480360381019061033c9190613811565b610c69565b60405161034e91906137f8565b60405180910390f35b348015610362575f80fd5b5061036b610c86565b6040516103789190613897565b60405180910390f35b34801561038c575f80fd5b50610395610cab565b6040516103a291906138bf565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc9190613811565b610cb4565b005b3480156103de575f80fd5b506103e7610e08565b6040516103f491906138bf565b60405180910390f35b348015610408575f80fd5b50610411610e0e565b60405161041e91906138bf565b60405180910390f35b348015610432575f80fd5b5061043b610e14565b60405161044891906138bf565b60405180910390f35b34801561045c575f80fd5b50610477600480360381019061047291906138d8565b610e1a565b60405161048491906137f8565b60405180910390f35b348015610498575f80fd5b506104a1610eee565b005b3480156104ae575f80fd5b506104b76112f4565b6040516104c49190613943565b60405180910390f35b3480156104d8575f80fd5b506104f360048036038101906104ee91906137a0565b6112fc565b60405161050091906137f8565b60405180910390f35b348015610514575f80fd5b5061051d6113aa565b60405161052a91906138bf565b60405180910390f35b34801561053e575f80fd5b506105476113b0565b60405161055491906138bf565b60405180910390f35b348015610568575f80fd5b506105716113b6565b60405161057e919061396b565b60405180910390f35b348015610592575f80fd5b506105ad60048036038101906105a89190613811565b6113db565b6040516105ba91906137f8565b60405180910390f35b3480156105ce575f80fd5b506105d761142d565b6040516105e491906138bf565b60405180910390f35b3480156105f8575f80fd5b50610601611433565b60405161060e91906138bf565b60405180910390f35b348015610622575f80fd5b5061063d60048036038101906106389190613811565b611439565b60405161064a91906138bf565b60405180910390f35b34801561065e575f80fd5b5061066761147e565b005b348015610674575f80fd5b5061067d6115d1565b005b34801561068a575f80fd5b506106a560048036038101906106a091906139ae565b611682565b005b3480156106b2575f80fd5b506106cd60048036038101906106c891906139ec565b611770565b005b3480156106da575f80fd5b506106e3611823565b6040516106f0919061396b565b60405180910390f35b348015610704575f80fd5b5061070d61184b565b60405161071a91906137f8565b60405180910390f35b34801561072e575f80fd5b5061073761185e565b60405161074491906136ef565b60405180910390f35b348015610758575f80fd5b50610773600480360381019061076e91906139ae565b6118ee565b005b348015610780575f80fd5b50610789611a21565b005b348015610796575f80fd5b5061079f611b34565b6040516107ac91906138bf565b60405180910390f35b3480156107c0575f80fd5b506107db60048036038101906107d691906137a0565b611b3a565b6040516107e891906137f8565b60405180910390f35b3480156107fc575f80fd5b50610817600480360381019061081291906137a0565b611c02565b60405161082491906137f8565b60405180910390f35b348015610838575f80fd5b50610853600480360381019061084e9190613811565b611c1f565b60405161086091906137f8565b60405180910390f35b348015610874575f80fd5b5061087d611c3c565b60405161088a91906138bf565b60405180910390f35b34801561089e575f80fd5b506108a7611c42565b6040516108b491906138bf565b60405180910390f35b3480156108c8575f80fd5b506108e360048036038101906108de91906139ae565b611c48565b005b3480156108f0575f80fd5b506108f9611d84565b60405161090691906138bf565b60405180910390f35b34801561091a575f80fd5b5061093560048036038101906109309190613a17565b611d8a565b60405161094291906138bf565b60405180910390f35b348015610956575f80fd5b5061095f611e0c565b60405161096c91906138bf565b60405180910390f35b348015610980575f80fd5b5061099b60048036038101906109969190613a55565b611e12565b005b3480156109a8575f80fd5b506109c360048036038101906109be9190613811565b611ef6565b005b3480156109d0575f80fd5b506109eb60048036038101906109e69190613811565b61204a565b6040516109f891906137f8565b60405180910390f35b606060038054610a1090613ae6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3c90613ae6565b8015610a875780601f10610a5e57610100808354040283529160200191610a87565b820191905f5260205f20905b815481529060010190602001808311610a6a57829003601f168201915b5050505050905090565b5f610aa4610a9d612067565b848461206e565b6001905092915050565b60115f9054906101000a900460ff1681565b610ac8612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d90613b60565b60405180910390fd5b5f4790505f8111610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9390613bee565b60405180910390fd5b5f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610be290613c39565b5f6040518083038185875af1925050503d805f8114610c1c576040519150601f19603f3d011682016040523d82523d5f602084013e610c21565b606091505b5050905080610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c90613c97565b60405180910390fd5b5050565b601c602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610cbc612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4190613b60565b60405180910390fd5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60155481565b60165481565b5f610e26848484612231565b610ee384610e32612067565b610ede856040518060600160405280602881526020016147436028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e95612067565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bdb9092919063ffffffff16565b61206e565b600190509392505050565b610ef6612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7b90613b60565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050610fa7816001611682565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611030573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110549190613cc9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110dd9190613cc9565b6040518363ffffffff1660e01b81526004016110fa929190613cf4565b6020604051808303815f875af1158015611116573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113a9190613cc9565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111a560095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611682565b6111d160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612c3d565b5f4790505f6064605a6111e330611439565b6111ed9190613d48565b6111f79190613db6565b90506112253060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361206e565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016112ab96959493929190613e1f565b60606040518083038185885af11580156112c7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112ec9190613e92565b505050505050565b5f6012905090565b5f6113a0611308612067565b8461139b8560015f611318612067565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cdb90919063ffffffff16565b61206e565b6001905092915050565b60125481565b60105481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600f5481565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611486612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b90613b60565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6115d9612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90613b60565b60405180910390fd5b5f60115f6101000a81548160ff021916908315150217905550565b61168a612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90613b60565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611778612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd90613b60565b60405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601160019054906101000a900460ff1681565b60606004805461186d90613ae6565b80601f016020809104026020016040519081016040528092919081815260200182805461189990613ae6565b80156118e45780601f106118bb576101008083540402835291602001916118e4565b820191905f5260205f20905b8154815290600101906020018083116118c757829003601f168201915b5050505050905090565b6118f6612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90613b60565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a90613f52565b60405180910390fd5b611a1d8282612c3d565b5050565b611a29612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90613b60565b60405180910390fd5b5f611ac130611439565b90505f8111611b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afc90613fe0565b60405180910390fd5b611b3130600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612231565b50565b60195481565b5f611bf8611b46612067565b84611bf38560405180606001604052806025815260200161476b6025913960015f611b6f612067565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bdb9092919063ffffffff16565b61206e565b6001905092915050565b5f611c15611c0e612067565b8484612231565b6001905092915050565b601d602052805f5260405f205f915054906101000a900460ff1681565b600c5481565b60175481565b611c50612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd590613b60565b60405180910390fd5b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d7891906137f8565b60405180910390a25050565b600e5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60145481565b611e1a612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90613b60565b60405180910390fd5b8360138190555081601481905550601454601354611ec69190613ffe565b6012819055508260168190555080601781905550601754601654611eea9190613ffe565b60158190555050505050565b611efe612067565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8390613b60565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d3906140a1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361214a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121419061412f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161222491906138bf565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361229f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612296906141bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361230d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123049061424b565b60405180910390fd5b600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e906142b3565b60405180910390fd5b5f81036123ae576123a983835f612d38565b612bd6565b60115f9054906101000a900460ff16156127a2576123ca611823565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124385750612408611823565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561247057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124aa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124c25750600b5f9054906101000a900460ff16155b156127a157601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125645750601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561260b57600e548111156125ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a590614341565b60405180910390fd5b6010546125ba83611439565b826125c59190613ffe565b1115612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd906143a9565b60405180910390fd5b6127a0565b601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126a85750601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156126f757600e548111156126f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e990614437565b60405180910390fd5b61279f565b601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661279e5760105461275183611439565b8261275c9190613ffe565b111561279d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612794906143a9565b60405180910390fd5b5b5b5b5b5b5f6127ac30611439565b90505f600f5482101590508080156127d05750600b5f9054906101000a900460ff16155b80156128235750601d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156128765750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156128c95750601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561290a576001600b5f6101000a81548160ff0219169083151502179055506128f0612fc1565b5f600b5f6101000a81548160ff0219169083151502179055505b5f600b5f9054906101000a900460ff16159050601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129b85750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156129c1575f90505b5f8115612bc657601d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a1f57505f601554115b15612ab757612a4c6064612a3e601554886131e790919063ffffffff16565b61325e90919063ffffffff16565b905060155460175482612a5f9190613d48565b612a699190613db6565b60185f828254612a799190613ffe565b9250508190555060155460165482612a919190613d48565b612a9b9190613db6565b60195f828254612aab9190613ffe565b92505081905550612ba3565b601d5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612b0e57505f601254115b15612ba257612b3b6064612b2d601254886131e790919063ffffffff16565b61325e90919063ffffffff16565b905060125460145482612b4e9190613d48565b612b589190613db6565b60185f828254612b689190613ffe565b9250508190555060125460135482612b809190613d48565b612b8a9190613db6565b60195f828254612b9a9190613ffe565b925050819055505b5b5f811115612bb757612bb6873083612d38565b5b8085612bc39190614455565b94505b612bd1878787612d38565b505050505b505050565b5f838311158290612c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1991906136ef565b60405180910390fd5b505f8385612c309190614455565b9050809150509392505050565b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f808284612ce99190613ffe565b905083811015612d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d25906144d2565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9d906141bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0b9061424b565b60405180910390fd5b612e1f8383836132a7565b612e888160405180606001604052806026815260200161471d602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bdb9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612f17815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cdb90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fb491906138bf565b60405180910390a3505050565b5f612fcb30611439565b90505f601954601854612fde9190613ffe565b90505f80831480612fee57505f82145b15612ffb575050506131e5565b5f1515601160019054906101000a900460ff16151503613042576014600f546130249190613d48565b83111561303d576014600f5461303a9190613d48565b92505b61304e565b61304b30611439565b92505b5f600383601854866130609190613d48565b61306a9190613db6565b6130749190613db6565b90505f61308a82866132ac90919063ffffffff16565b90505f479050613099826132f5565b5f6130ad82476132ac90919063ffffffff16565b90505f6130d7876130c9601954856131e790919063ffffffff16565b61325e90919063ffffffff16565b90505f81836130e69190614455565b90505f6018819055505f6019819055505f8611801561310457505f81115b1561315157613113868261352b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601854604051613148939291906144f0565b60405180910390a15b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161319690613c39565b5f6040518083038185875af1925050503d805f81146131d0576040519150601f19603f3d011682016040523d82523d5f602084013e6131d5565b606091505b5050809750505050505050505050505b565b5f8083036131f7575f9050613258565b5f82846132049190613d48565b90508284826132139190613db6565b14613253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324a90614595565b60405180910390fd5b809150505b92915050565b5f61329f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613604565b905092915050565b505050565b5f6132ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612bdb565b905092915050565b5f600267ffffffffffffffff811115613311576133106145b3565b5b60405190808252806020026020018201604052801561333f5781602001602082028036833780820191505090505b50905030815f81518110613356576133556145e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061341e9190613cc9565b81600181518110613432576134316145e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506134983060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461206e565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016134fa9594939291906146c4565b5f604051808303815f87803b158015613511575f80fd5b505af1158015613523573d5f803e3d5ffd5b505050505050565b6135573060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461206e565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016135bc96959493929190613e1f565b60606040518083038185885af11580156135d8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906135fd9190613e92565b5050505050565b5f808311829061364a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364191906136ef565b60405180910390fd5b505f83856136589190613db6565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561369c578082015181840152602081019050613681565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6136c182613665565b6136cb818561366f565b93506136db81856020860161367f565b6136e4816136a7565b840191505092915050565b5f6020820190508181035f83015261370781846136b7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61373c82613713565b9050919050565b61374c81613732565b8114613756575f80fd5b50565b5f8135905061376781613743565b92915050565b5f819050919050565b61377f8161376d565b8114613789575f80fd5b50565b5f8135905061379a81613776565b92915050565b5f80604083850312156137b6576137b561370f565b5b5f6137c385828601613759565b92505060206137d48582860161378c565b9150509250929050565b5f8115159050919050565b6137f2816137de565b82525050565b5f60208201905061380b5f8301846137e9565b92915050565b5f602082840312156138265761382561370f565b5b5f61383384828501613759565b91505092915050565b5f819050919050565b5f61385f61385a61385584613713565b61383c565b613713565b9050919050565b5f61387082613845565b9050919050565b5f61388182613866565b9050919050565b61389181613877565b82525050565b5f6020820190506138aa5f830184613888565b92915050565b6138b98161376d565b82525050565b5f6020820190506138d25f8301846138b0565b92915050565b5f805f606084860312156138ef576138ee61370f565b5b5f6138fc86828701613759565b935050602061390d86828701613759565b925050604061391e8682870161378c565b9150509250925092565b5f60ff82169050919050565b61393d81613928565b82525050565b5f6020820190506139565f830184613934565b92915050565b61396581613732565b82525050565b5f60208201905061397e5f83018461395c565b92915050565b61398d816137de565b8114613997575f80fd5b50565b5f813590506139a881613984565b92915050565b5f80604083850312156139c4576139c361370f565b5b5f6139d185828601613759565b92505060206139e28582860161399a565b9150509250929050565b5f60208284031215613a0157613a0061370f565b5b5f613a0e8482850161399a565b91505092915050565b5f8060408385031215613a2d57613a2c61370f565b5b5f613a3a85828601613759565b9250506020613a4b85828601613759565b9150509250929050565b5f805f8060808587031215613a6d57613a6c61370f565b5b5f613a7a8782880161378c565b9450506020613a8b8782880161378c565b9350506040613a9c8782880161378c565b9250506060613aad8782880161378c565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613afd57607f821691505b602082108103613b1057613b0f613ab9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613b4a60208361366f565b9150613b5582613b16565b602082019050919050565b5f6020820190508181035f830152613b7781613b3e565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613bd860228361366f565b9150613be382613b7e565b604082019050919050565b5f6020820190508181035f830152613c0581613bcc565b9050919050565b5f81905092915050565b50565b5f613c245f83613c0c565b9150613c2f82613c16565b5f82019050919050565b5f613c4382613c19565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613c81601b8361366f565b9150613c8c82613c4d565b602082019050919050565b5f6020820190508181035f830152613cae81613c75565b9050919050565b5f81519050613cc381613743565b92915050565b5f60208284031215613cde57613cdd61370f565b5b5f613ceb84828501613cb5565b91505092915050565b5f604082019050613d075f83018561395c565b613d14602083018461395c565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613d528261376d565b9150613d5d8361376d565b9250828202613d6b8161376d565b91508282048414831517613d8257613d81613d1b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613dc08261376d565b9150613dcb8361376d565b925082613ddb57613dda613d89565b5b828204905092915050565b5f819050919050565b5f613e09613e04613dff84613de6565b61383c565b61376d565b9050919050565b613e1981613def565b82525050565b5f60c082019050613e325f83018961395c565b613e3f60208301886138b0565b613e4c6040830187613e10565b613e596060830186613e10565b613e66608083018561395c565b613e7360a08301846138b0565b979650505050505050565b5f81519050613e8c81613776565b92915050565b5f805f60608486031215613ea957613ea861370f565b5b5f613eb686828701613e7e565b9350506020613ec786828701613e7e565b9250506040613ed886828701613e7e565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613f3c60398361366f565b9150613f4782613ee2565b604082019050919050565b5f6020820190508181035f830152613f6981613f30565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613fca60248361366f565b9150613fd582613f70565b604082019050919050565b5f6020820190508181035f830152613ff781613fbe565b9050919050565b5f6140088261376d565b91506140138361376d565b925082820190508082111561402b5761402a613d1b565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61408b60248361366f565b915061409682614031565b604082019050919050565b5f6020820190508181035f8301526140b88161407f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61411960228361366f565b9150614124826140bf565b604082019050919050565b5f6020820190508181035f8301526141468161410d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6141a760258361366f565b91506141b28261414d565b604082019050919050565b5f6020820190508181035f8301526141d48161419b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61423560238361366f565b9150614240826141db565b604082019050919050565b5f6020820190508181035f83015261426281614229565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f61429d60158361366f565b91506142a882614269565b602082019050919050565b5f6020820190508181035f8301526142ca81614291565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61432b60358361366f565b9150614336826142d1565b604082019050919050565b5f6020820190508181035f8301526143588161431f565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61439360138361366f565b915061439e8261435f565b602082019050919050565b5f6020820190508181035f8301526143c081614387565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61442160368361366f565b915061442c826143c7565b604082019050919050565b5f6020820190508181035f83015261444e81614415565b9050919050565b5f61445f8261376d565b915061446a8361376d565b925082820390508181111561448257614481613d1b565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6144bc601b8361366f565b91506144c782614488565b602082019050919050565b5f6020820190508181035f8301526144e9816144b0565b9050919050565b5f6060820190506145035f8301866138b0565b61451060208301856138b0565b61451d60408301846138b0565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61457f60218361366f565b915061458a82614525565b604082019050919050565b5f6020820190508181035f8301526145ac81614573565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61463f81613732565b82525050565b5f6146508383614636565b60208301905092915050565b5f602082019050919050565b5f6146728261460d565b61467c8185614617565b935061468783614627565b805f5b838110156146b757815161469e8882614645565b97506146a98361465c565b92505060018101905061468a565b5085935050505092915050565b5f60a0820190506146d75f8301886138b0565b6146e46020830187613e10565b81810360408301526146f68186614668565b9050614705606083018561395c565b61471260808301846138b0565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220692df689550442d343c3bbbf45ffa8b420c069b4455487ee336a8f2eeeb4eb6c64736f6c63430008150033
Verified Source Code Partial Match
Compiler: v0.8.21+commit.d9974bed
EVM: shanghai
Optimization: No
ZOGZDORKLORD.sol 930 lines
/*
https://twitter.com/RealDorkLord
https://t.me/RealDorkLord
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.21;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
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);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
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 _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
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;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
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);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library SafeMathInt {
int256 private constant MIN_INT256 = int256(1) << 255;
int256 private constant MAX_INT256 = ~(int256(1) << 255);
function mul(int256 a, int256 b) internal pure returns (int256) {
int256 c = a * b;
// Detect overflow when multiplying MIN_INT256 with -1
require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
require((b == 0) || (c / b == a));
return c;
}
function div(int256 a, int256 b) internal pure returns (int256) {
// Prevent overflow when dividing MIN_INT256 by -1
require(b != -1 || a != MIN_INT256);
// Solidity already throws when dividing by 0.
return a / b;
}
function sub(int256 a, int256 b) internal pure returns (int256) {
int256 c = a - b;
require((b >= 0 && c <= a) || (b < 0 && c > a));
return c;
}
function add(int256 a, int256 b) internal pure returns (int256) {
int256 c = a + b;
require((b >= 0 && c >= a) || (b < 0 && c < a));
return c;
}
function abs(int256 a) internal pure returns (int256) {
require(a != MIN_INT256);
return a < 0 ? -a : a;
}
function toUint256Safe(int256 a) internal pure returns (uint256) {
require(a >= 0);
return uint256(a);
}
}
library SafeMathUint {
function toInt256Safe(uint256 a) internal pure returns (int256) {
int256 b = int256(a);
require(b >= 0);
return b;
}
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract ZOGZDORKLORD is ERC20, Ownable {
string _name = unicode"|ZOGZ| Dork Lord";
string _symbol = unicode"DORK";
using SafeMath for uint256;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
mapping(address => bool) public isBlacklisted;
event Blacklisted(address indexed account);
event Unblacklisted(address indexed account);
bool private isSwppable;
uint256 public balance;
address private devWallet;
uint256 public maxTransaction;
uint256 public contractSellTreshold;
uint256 public maxWalletHolding;
bool public areLimitsOn = true;
bool public emptyContractFull = false;
uint256 public totalBuyTax;
uint256 public devBuyTax;
uint256 public liqBuyTax;
uint256 public totalSellTax;
uint256 public devSellTax;
uint256 public liqSellTax;
uint256 public tokensForLiquidity;
uint256 public tokensForDev;
// block number of opened trading
uint256 launchedAt;
/******************/
// exclude from fees and max transaction amount
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) public _isExcludedMaxTransactionAmount;
// store addresses that a automatic market maker pairs. Any transfer *to* these addresses
// could be subject to a maximum transfer amount
mapping (address => bool) public automatedMarketMakerPairs;
event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiquidity
);
event AutoNukeLP();
event ManualNukeLP();
constructor() ERC20(_name, _symbol) {
uint256 _devBuyTax = 17;
uint256 _liqBuyTax = 0;
uint256 _devSellTax = 20;
uint256 _liqSellTax = 0;
uint256 totalSupply = 100000000000 * 1e18;
maxTransaction = totalSupply * 10 / 1000; // 2%
maxWalletHolding = totalSupply * 10 / 1000; // 2%
contractSellTreshold = totalSupply * 1 / 1000; // 0.05%
devBuyTax = _devBuyTax;
liqBuyTax = _liqBuyTax;
totalBuyTax = devBuyTax + liqBuyTax;
devSellTax = _devSellTax;
liqSellTax = _liqSellTax;
totalSellTax = devSellTax + liqSellTax;
devWallet = address(msg.sender);
// exclude from paying fees or having max transaction amount
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromFees(address(devWallet), true);
excludeFromMaxTransaction(owner(), true);
excludeFromMaxTransaction(address(this), true);
excludeFromMaxTransaction(address(0xdead), true);
excludeFromMaxTransaction(address(devWallet), true);
/*
_mint is an internal function in ERC20.sol that is only called here,
and CANNOT be called ever again
*/
uint256 contractAmount = totalSupply * 97 / 100; // 94%
uint256 senderAmount = totalSupply * 3 / 100; // 6%
_mint(address(this), contractAmount);
_mint(msg.sender, senderAmount);
}
receive() external payable {
}
function goLive() external onlyOwner{
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
excludeFromMaxTransaction(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
excludeFromMaxTransaction(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
uint256 ethAmount = address(this).balance;
uint256 tokenAmount = balanceOf(address(this)) * 90 / 100;
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
devWallet,
block.timestamp
);
}
function removeStuckETH() external onlyOwner {
uint256 ethBalance = address(this).balance;
require(ethBalance > 0, "ETH balance must be greater than 0");
(bool success,) = address(devWallet).call{value: ethBalance}("");
require(success, "Failed to clear ETH balance");
}
function removeStuckTokenBalance() external onlyOwner {
uint256 tokenBalance = balanceOf(address(this));
require(tokenBalance > 0, "Token balance must be greater than 0");
_transfer(address(this), devWallet, tokenBalance);
}
function removeLimits() external onlyOwner {
areLimitsOn = false;
}
function EnableEmptyContract(bool enabled) external onlyOwner{
emptyContractFull = enabled;
}
function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
_isExcludedMaxTransactionAmount[updAds] = isEx;
}
function editTax(
uint256 _devBuy,
uint256 _devSell,
uint256 _liqBuy,
uint256 _liqSell
) external onlyOwner {
devBuyTax = _devBuy;
liqBuyTax = _liqBuy;
totalBuyTax = devBuyTax + liqBuyTax;
devSellTax = _devSell;
liqSellTax = _liqSell;
totalSellTax = devSellTax + liqSellTax;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function updateDevWallet(address newDevWallet) external onlyOwner{
emit devWalletUpdated(newDevWallet, devWallet);
devWallet = newDevWallet;
}
function isExcludedFromFees(address account) public view returns(bool) {
return _isExcludedFromFees[account];
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(!isBlacklisted[msg.sender], "Sender is blacklisted");
if(amount == 0) {
super._transfer(from, to, 0);
return;
}
if(areLimitsOn){
if (
from != owner() &&
to != owner() &&
to != address(0) &&
to != address(0xdead) &&
!isSwppable
){
//when buy
if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransactionAmount.");
require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded");
}
//when sell
else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransactionAmount.");
}
else if(!_isExcludedMaxTransactionAmount[to]){
require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded");
}
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= contractSellTreshold;
if(
canSwap &&
!isSwppable &&
!automatedMarketMakerPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]
) {
isSwppable = true;
swapBack();
isSwppable = false;
}
bool takeFee = !isSwppable;
// if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
// only take fees on buys/sells, do not take on wallet transfers
if(takeFee){
// on sell
if (automatedMarketMakerPairs[to] && totalSellTax > 0){
fees = amount.mul(totalSellTax).div(100);
tokensForLiquidity += fees * liqSellTax / totalSellTax;
tokensForDev += fees * devSellTax / totalSellTax;
}
// on buy
else if(automatedMarketMakerPairs[from] && totalBuyTax > 0) {
fees = amount.mul(totalBuyTax).div(100);
tokensForLiquidity += fees * liqBuyTax / totalBuyTax;
tokensForDev += fees * devBuyTax / totalBuyTax;
}
if(fees > 0){
super._transfer(from, address(this), fees);
}
amount -= fees;
}
super._transfer(from, to, amount);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
address(this),
block.timestamp
);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
uint256 totalTokensToSwap = tokensForLiquidity + tokensForDev;
bool success;
if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
if(emptyContractFull == false){
if(contractBalance > contractSellTreshold * 20){
contractBalance = contractSellTreshold * 20;
}
}else{
contractBalance = balanceOf(address(this));
}
// Halve the amount of liquidity tokens
uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 3;
uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
uint256 initialETHBalance = address(this).balance;
swapTokensForEth(amountToSwapForETH);
uint256 ethBalance = address(this).balance.sub(initialETHBalance);
uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
uint256 ethForLiquidity = ethBalance - ethForDev;
tokensForLiquidity = 0;
tokensForDev = 0;
if(liquidityTokens > 0 && ethForLiquidity > 0){
addLiquidity(liquidityTokens, ethForLiquidity);
emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
}
(success,) = address(devWallet).call{value: address(this).balance}("");
}
}
Read Contract
_isExcludedMaxTransactionAmount 0x10d5de53 → bool
allowance 0xdd62ed3e → uint256
areLimitsOn 0x0e947809 → bool
automatedMarketMakerPairs 0xb62496f5 → bool
balance 0xb69ef8a8 → uint256
balanceOf 0x70a08231 → uint256
contractSellTreshold 0x5de0f2a0 → uint256
decimals 0x313ce567 → uint8
devBuyTax 0x6c7e15c9 → uint256
devSellTax 0x22eb6631 → uint256
emptyContractFull 0x945674fe → bool
isBlacklisted 0xfe575a87 → bool
isExcludedFromFees 0x4fbee193 → bool
liqBuyTax 0xdf6f93be → uint256
liqSellTax 0xbe857504 → uint256
maxTransaction 0xc3f70b52 → uint256
maxWalletHolding 0x48d79155 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
tokensForDev 0x9fccce32 → uint256
tokensForLiquidity 0x1a8145bb → uint256
totalBuyTax 0x46469afb → uint256
totalSellTax 0x1bff7898 → uint256
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address
Write Contract 17 functions
These functions modify contract state and require a wallet transaction to execute.
EnableEmptyContract 0x863cf2cc
bool enabled
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
editTax 0xf1cd531a
uint256 _devBuy
uint256 _devSell
uint256 _liqBuy
uint256 _liqSell
excludeFromFees 0xc0246668
address account
bool excluded
excludeFromMaxTransaction 0x7571336a
address updAds
bool isEx
goLive 0x2c28f579
No parameters
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
removeLimits 0x751039fc
No parameters
removeStuckETH 0x0f299cf1
No parameters
removeStuckTokenBalance 0x9ee2e924
No parameters
renounceOwnership 0x715018a6
No parameters
setAutomatedMarketMakerPair 0x9a7a23d6
address pair
bool value
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateDevWallet 0x1816467f
address newDevWallet
Recent Transactions
No transactions found for this address