Address Contract Partially Verified
Address
0x3AeFF9536CED04e4443908Cb0ceBAC952a5550C3
Balance
0 ETH
Nonce
1
Code Size
11764 bytes
Creator
0xE2810016...091e at tx 0x53b8f5b7...12b2d1
Indexed Transactions
0
Contract Bytecode
11764 bytes
0x6080604052600436106101d0575f3560e01c8063739f08c8116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e14610693578063f25f4b56146106cf578063f887ea40146106f9578063fe575a8714610723576101d7565b8063a9059cbb146105db578063ad5c464814610617578063b107594314610641578063c02466681461066b576101d7565b806395d89b41116100d057806395d89b4114610521578063a14779c91461054b578063a457c2d714610575578063a8aa1b31146105b1576101d7565b8063739f08c8146104a55780637f5e65da146104cd5780638da5cb5b146104f7576101d7565b806333f3d6281161016e5780634fbee1931161013d5780634fbee193146103db578063571ac8b01461041757806370a0823114610453578063715018a61461048f576101d7565b806333f3d62814610323578063395093511461034b5780633dced2f0146103875780634ec39ba9146103b1576101d7565b8063095ea7b3116101aa578063095ea7b31461025757806318160ddd1461029357806323b872dd146102bd578063313ce567146102f9576101d7565b8063039d33cd146101db57806303fd2a451461020357806306fdde031461022d576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc919061241b565b61075f565b005b34801561020e575f80fd5b50610217610894565b6040516102249190612468565b60405180910390f35b348015610238575f80fd5b5061024161089a565b60405161024e919061250b565b60405180910390f35b348015610262575f80fd5b5061027d6004803603810190610278919061255e565b610929565b60405161028a91906125ab565b60405180910390f35b34801561029e575f80fd5b506102a7610a84565b6040516102b491906125d3565b60405180910390f35b3480156102c8575f80fd5b506102e360048036038101906102de91906125ec565b610ad7565b6040516102f091906125ab565b60405180910390f35b348015610304575f80fd5b5061030d610db2565b60405161031a9190612657565b60405180910390f35b34801561032e575f80fd5b506103496004803603810190610344919061255e565b610dba565b005b348015610356575f80fd5b50610371600480360381019061036c919061255e565b610eea565b60405161037e91906125ab565b60405180910390f35b348015610392575f80fd5b5061039b6110d1565b6040516103a89190612692565b60405180910390f35b3480156103bc575f80fd5b506103c56110eb565b6040516103d29190612468565b60405180910390f35b3480156103e6575f80fd5b5061040160048036038101906103fc91906126ab565b611103565b60405161040e91906125ab565b60405180910390f35b348015610422575f80fd5b5061043d600480360381019061043891906126ab565b611120565b60405161044a91906125ab565b60405180910390f35b34801561045e575f80fd5b50610479600480360381019061047491906126ab565b611152565b60405161048691906125d3565b60405180910390f35b34801561049a575f80fd5b506104a3611198565b005b3480156104b0575f80fd5b506104cb60048036038101906104c691906126d6565b611269565b005b3480156104d8575f80fd5b506104e1611389565b6040516104ee9190612692565b60405180910390f35b348015610502575f80fd5b5061050b6113a2565b6040516105189190612468565b60405180910390f35b34801561052c575f80fd5b506105356113c7565b604051610542919061250b565b60405180910390f35b348015610556575f80fd5b5061055f611457565b60405161056c9190612468565b60405180910390f35b348015610580575f80fd5b5061059b6004803603810190610596919061255e565b61146f565b6040516105a891906125ab565b60405180910390f35b3480156105bc575f80fd5b506105c56116a2565b6040516105d29190612468565b60405180910390f35b3480156105e6575f80fd5b5061060160048036038101906105fc919061255e565b6116c6565b60405161060e91906125ab565b60405180910390f35b348015610622575f80fd5b5061062b6116da565b6040516106389190612468565b60405180910390f35b34801561064c575f80fd5b506106556116fe565b6040516106629190612468565b60405180910390f35b348015610676575f80fd5b50610691600480360381019061068c919061241b565b611716565b005b34801561069e575f80fd5b506106b960048036038101906106b49190612701565b6117fd565b6040516106c691906125d3565b60405180910390f35b3480156106da575f80fd5b506106e361187f565b6040516106f09190612468565b60405180910390f35b348015610704575f80fd5b5061070d611897565b60405161071a9190612468565b60405180910390f35b34801561072e575f80fd5b50610749600480360381019061074491906126ab565b6118bb565b60405161075691906125ab565b60405180910390f35b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e590612789565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f904fb4ad9edf162f68c7d0180e19137b4c526f4665631e8226aec0f5af2dbfdd8260405161088891906125ab565b60405180910390a25050565b61dead81565b60605f80546108a8906127d4565b80601f01602080910402602001604051908101604052809291908181526020018280546108d4906127d4565b801561091f5780601f106108f65761010080835404028352916020019161091f565b820191905f5260205f20905b81548152906001019060200180831161090257829003601f168201915b5050505050905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098f9061284e565b60405180910390fd5b8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a7291906125d3565b60405180910390a36001905092915050565b5f60045f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600254610ad29190612899565b905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610d9e578160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2990612916565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610cb99190612899565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610d9591906125d3565b60405180910390a35b610da98484846118d8565b90509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4090612789565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ea5929190612934565b6020604051808303815f875af1158015610ec1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee5919061296f565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f509061284e565b60405180910390fd5b81610f6433856117fd565b610f6e919061299a565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516110bf91906125d3565b60405180910390a36001905092915050565b600760089054906101000a900467ffffffffffffffff1681565b7388eba82a850321fe5a0618aad874828afb6db77581565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f61114b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610929565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90612789565b60405180910390fd5b5f60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90612789565b60405180910390fd5b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161133e906129fa565b5f6040518083038185875af1925050503d805f8114611378576040519150601f19603f3d011682016040523d82523d5f602084013e61137d565b606091505b50509050600190505050565b60075f9054906101000a900467ffffffffffffffff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600180546113d6906127d4565b80601f0160208091040260200160405190810160405280929190818152602001828054611402906127d4565b801561144d5780601f106114245761010080835404028352916020019161144d565b820191905f5260205f20905b81548152906001019060200180831161143057829003601f168201915b5050505050905090565b73b803b0e5e7457b135085e896fd7a3398b266cd4381565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d59061284e565b60405180910390fd5b816114e933856117fd565b101561152a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152190612916565b60405180910390fd5b8161153533856117fd565b61153f9190612899565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405161169091906125d3565b60405180910390a36001905092915050565b7f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b881565b5f6116d23384846118d8565b905092915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b73ee2ff4932cec4fd5b3cffea7305c44fea579b31581565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90612789565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7370fc94190723bacc4bb80a11039d8c098ae6c35581565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a90612a58565b60405180910390fd5b7f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036119c0576119bf83611ac2565b5b6119ca8484611d45565b611a02576119e584306064856119e09190612aa3565b611eca565b5060646063836119f59190612ad3565b6119ff9190612aa3565b91505b600860149054906101000a900460ff16158015611a6b57507f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611aae576001600860146101000a81548160ff021916908315150217905550611a936120e0565b5f600860146101000a81548160ff0219169083151502179055505b611ab9848484611eca565b90509392505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611b6857507f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80611bbe57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d4257600760089054906101000a900467ffffffffffffffff1667ffffffffffffffff1660075f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16108015611c57575060065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d415760075f81819054906101000a900467ffffffffffffffff1680929190611c8190612b14565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f341ccdc565bc4eb81cc28363ae062ef3ef8b6c9ea0b55ed9e02bd8fd40fbede060405160405180910390a25b5b50565b5f600860149054906101000a900460ff1615611d645760019050611ec4565b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dff575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611e0d5760019050611ec4565b7f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611eb257507f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611ebf575f9050611ec4565b600190505b92915050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3090612b8d565b60405180910390fd5b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115611fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb090612bf5565b60405180910390fd5b5f8203611fc957600190506120d9565b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120159190612899565b925050819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612068919061299a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120cc91906125d3565b60405180910390a3600190505b9392505050565b5f600267ffffffffffffffff8111156120fc576120fb612c13565b5b60405190808252806020026020018201604052801561212a5781602001602082028036833780820191505090505b50905030815f8151811061214157612140612c40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106121b0576121af612c40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811115612384578060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122da919061299a565b925050819055507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947825f857370fc94190723bacc4bb80a11039d8c098ae6c355426040518663ffffffff1660e01b8152600401612356959493929190612d66565b5f604051808303815f87803b15801561236d575f80fd5b505af115801561237f573d5f803e3d5ffd5b505050505b5050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123b58261238c565b9050919050565b6123c5816123ab565b81146123cf575f80fd5b50565b5f813590506123e0816123bc565b92915050565b5f8115159050919050565b6123fa816123e6565b8114612404575f80fd5b50565b5f81359050612415816123f1565b92915050565b5f806040838503121561243157612430612388565b5b5f61243e858286016123d2565b925050602061244f85828601612407565b9150509250929050565b612462816123ab565b82525050565b5f60208201905061247b5f830184612459565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156124b857808201518184015260208101905061249d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6124dd82612481565b6124e7818561248b565b93506124f781856020860161249b565b612500816124c3565b840191505092915050565b5f6020820190508181035f83015261252381846124d3565b905092915050565b5f819050919050565b61253d8161252b565b8114612547575f80fd5b50565b5f8135905061255881612534565b92915050565b5f806040838503121561257457612573612388565b5b5f612581858286016123d2565b92505060206125928582860161254a565b9150509250929050565b6125a5816123e6565b82525050565b5f6020820190506125be5f83018461259c565b92915050565b6125cd8161252b565b82525050565b5f6020820190506125e65f8301846125c4565b92915050565b5f805f6060848603121561260357612602612388565b5b5f612610868287016123d2565b9350506020612621868287016123d2565b92505060406126328682870161254a565b9150509250925092565b5f60ff82169050919050565b6126518161263c565b82525050565b5f60208201905061266a5f830184612648565b92915050565b5f67ffffffffffffffff82169050919050565b61268c81612670565b82525050565b5f6020820190506126a55f830184612683565b92915050565b5f602082840312156126c0576126bf612388565b5b5f6126cd848285016123d2565b91505092915050565b5f602082840312156126eb576126ea612388565b5b5f6126f88482850161254a565b91505092915050565b5f806040838503121561271757612716612388565b5b5f612724858286016123d2565b9250506020612735858286016123d2565b9150509250929050565b7f4f6e6c7920746865206f776e65722063616e20646f20746861740000000000005f82015250565b5f612773601a8361248b565b915061277e8261273f565b602082019050919050565b5f6020820190508181035f8301526127a081612767565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806127eb57607f821691505b6020821081036127fe576127fd6127a7565b5b50919050565b7f4e4f5f5a45524f000000000000000000000000000000000000000000000000005f82015250565b5f61283860078361248b565b915061284382612804565b602082019050919050565b5f6020820190508181035f8301526128658161282c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128a38261252b565b91506128ae8361252b565b92508282039050818111156128c6576128c561286c565b5b92915050565b7f494e535546465f414c4c4f57414e4345000000000000000000000000000000005f82015250565b5f61290060108361248b565b915061290b826128cc565b602082019050919050565b5f6020820190508181035f83015261292d816128f4565b9050919050565b5f6040820190506129475f830185612459565b61295460208301846125c4565b9392505050565b5f81519050612969816123f1565b92915050565b5f6020828403121561298457612983612388565b5b5f6129918482850161295b565b91505092915050565b5f6129a48261252b565b91506129af8361252b565b92508282019050808211156129c7576129c661286c565b5b92915050565b5f81905092915050565b50565b5f6129e55f836129cd565b91506129f0826129d7565b5f82019050919050565b5f612a04826129da565b9150819050919050565b7f424c41434b4c49535445440000000000000000000000000000000000000000005f82015250565b5f612a42600b8361248b565b9150612a4d82612a0e565b602082019050919050565b5f6020820190508181035f830152612a6f81612a36565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612aad8261252b565b9150612ab88361252b565b925082612ac857612ac7612a76565b5b828204905092915050565b5f612add8261252b565b9150612ae88361252b565b9250828202612af68161252b565b91508282048414831517612b0d57612b0c61286c565b5b5092915050565b5f612b1e82612670565b915067ffffffffffffffff8203612b3857612b3761286c565b5b600182019050919050565b7f43616e277420757365207a65726f2061646472657373657320686572650000005f82015250565b5f612b77601d8361248b565b9150612b8282612b43565b602082019050919050565b5f6020820190508181035f830152612ba481612b6b565b9050919050565b7f43616e2774207472616e73666572206d6f7265207468616e20796f75206f776e5f82015250565b5f612bdf60208361248b565b9150612bea82612bab565b602082019050919050565b5f6020820190508181035f830152612c0c81612bd3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f612c99612c94612c8f84612c6d565b612c76565b61252b565b9050919050565b612ca981612c7f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612ce1816123ab565b82525050565b5f612cf28383612cd8565b60208301905092915050565b5f602082019050919050565b5f612d1482612caf565b612d1e8185612cb9565b9350612d2983612cc9565b805f5b83811015612d59578151612d408882612ce7565b9750612d4b83612cfe565b925050600181019050612d2c565b5085935050505092915050565b5f60a082019050612d795f8301886125c4565b612d866020830187612ca0565b8181036040830152612d988186612d0a565b9050612da76060830185612459565b612db460808301846125c4565b969550505050505056fea264697066735822122042428b268ea633a6298c32d7fd6350caa1909bacf7415633db7900306381b34464736f6c63430008150033
Verified Source Code Partial Match
Compiler: v0.8.21+commit.d9974bed
EVM: shanghai
Optimization: No
PengyX.sol 375 lines
/**
*Submitted for verification at Etherscan.io on 2023-07-24
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.21;
// |-----------------------------------------------------------------------------------------------------------|
// | %################. |
// | #####################@ |
// | | ###### @##### &#### |
// | | ###% , ###% |
// | | &###, /&@@ @(@@ #### |
// | | ###@ &..% *#### |
// | $$$$$$$\ $$$$$$$$\ $$\ $$\ $$$$$$\ $$\ $$\ | @#### .,,,,@ ##### |
// | $$ __$$\ $$ _____|$$$\ $$ |$$ __$$\\$$\ $$ | | %##( ,* @##(@ |
// | $$ | $$ |$$ | $$$$\ $$ |$$ / \__|\$$\ $$ / | /#&##@ ##&#& |
// | $$$$$$$ |$$$$$\ $$ $$\$$ |$$ |$$$$\ \$$$$ / | ###### #(### |
// | $$ ____/ $$ __| $$ \$$$$ |$$ |\_$$ | \$$ / | ####### ######. |
// | $$ | $$ | $$ |\$$$ |$$ | $$ | $$ | | &#######@ ##(##### |
// | $$ | $$$$$$$$\ $$ | \$$ |\$$$$$$ | $$ | | ### &## |
// | \__| \________|\__| \__| \______/ \__| | &##% ### |
// | | %### @##@ |
// | | %###@ &###& |
// | &,,,,,&################@,,,,,% |
// | ,.,,,.*%@ /(.,,,,/@ |
// |-----------------------------------------------------------------------------------------------------------|
// -----> Ken and the community makes penguins fly! 🚀 <----- */
interface IERC20 {
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
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 IDEXRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
interface IDEXFactory {
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
}
contract PengyX is IERC20 {
string private _name;
string private _symbol;
uint8 private constant _decimals = 18;
uint256 private _totalSupply;
mapping(address => bool) public isExcludedFromFees;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) public isBlacklisted;
uint64 public autoBlacklistAddressCounter = 0;
uint64 public autoBlacklistAddressLimit = 25;
address public owner;
address public constant feeWallet = 0x70fc94190723bACC4Bb80A11039D8c098aE6C355;
address public constant liqWallet = 0x88ebA82a850321fe5a0618aaD874828afB6DB775;
address public constant cexWallet = 0xEe2ff4932cEc4FD5B3Cffea7305C44feA579b315;
address public constant airdropWallet = 0xB803b0E5E7457B135085E896FD7A3398b266cd43;
address public immutable pair;
address public immutable router;
address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
address public immutable WETH;
bool private isSwapping;
modifier onlyDeployer() {
require(msg.sender == owner, "Only the owner can do that");
_;
}
event AddressAutoBlacklisted(address indexed buyer);
event BlacklistedAddressStatusChanged(
address indexed blacklistedAddress,
bool status
);
constructor() {
owner = msg.sender;
_name = "PENGYX";
_symbol = "PENGYX";
_totalSupply = 3_000_000_000 * (10 ** _decimals);
router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Uniswap V2 router
WETH = IDEXRouter(router).WETH();
pair = IDEXFactory(IDEXRouter(router).factory()).createPair(
address(this),
WETH
);
isExcludedFromFees[owner] = true;
isExcludedFromFees[liqWallet] = true;
isExcludedFromFees[cexWallet] = true;
isExcludedFromFees[airdropWallet] = true;
_balances[owner] = _totalSupply;
emit Transfer(address(0), owner, _totalSupply);
}
receive() external payable {}
function name() public view override returns (string memory) {
return _name;
}
function totalSupply() public view override returns (uint256) {
return _totalSupply - _balances[DEAD];
}
function decimals() public pure override returns (uint8) {
return _decimals;
}
function symbol() public view override returns (string memory) {
return _symbol;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function rescueEth(uint256 amount) external onlyDeployer {
(bool success, ) = address(owner).call{value: amount}("");
success = true;
}
// If the limit is not reached, automatically add this address to the blacklist
function autoBlacklistBuyerIfNeeded(address buyer) internal {
// Prevent these addresses from being blacklisted
if (buyer == owner || buyer == pair || buyer == router) return;
if (
autoBlacklistAddressCounter < autoBlacklistAddressLimit &&
!isBlacklisted[buyer]
) {
autoBlacklistAddressCounter++;
isBlacklisted[buyer] = true;
emit AddressAutoBlacklisted(buyer);
}
}
function changeBlacklistedAddressStatus(
address blacklistedAddress,
bool status
) external onlyDeployer {
isBlacklisted[blacklistedAddress] = status;
emit BlacklistedAddressStatusChanged(blacklistedAddress, status);
}
function swapAllContractTokensForEth() internal {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WETH;
uint256 tokenAmount = _balances[address(this)];
if (tokenAmount > 0) {
_allowances[address(this)][router] += tokenAmount;
// Swap all the PENGY balance to ETH
IDEXRouter(router)
.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
feeWallet,
block.timestamp
);
}
}
function rescueToken(address token, uint256 amount) external onlyDeployer {
IERC20(token).transfer(owner, amount);
}
function allowance(
address holder,
address spender
) public view override returns (uint256) {
return _allowances[holder][spender];
}
function transfer(
address recipient,
uint256 amount
) external override returns (bool) {
return _transferFrom(msg.sender, recipient, amount);
}
function approveMax(address spender) public returns (bool) {
return approve(spender, type(uint256).max);
}
function approve(
address spender,
uint256 amount
) public override returns (bool) {
require(spender != address(0), "NO_ZERO");
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function increaseAllowance(
address spender,
uint256 addedValue
) public returns (bool) {
require(spender != address(0), "NO_ZERO");
_allowances[msg.sender][spender] =
allowance(msg.sender, spender) +
addedValue;
emit Approval(msg.sender, spender, _allowances[msg.sender][spender]);
return true;
}
function decreaseAllowance(
address spender,
uint256 subtractedValue
) public returns (bool) {
require(spender != address(0), "NO_ZERO");
require(
allowance(msg.sender, spender) >= subtractedValue,
"INSUFF_ALLOWANCE"
);
_allowances[msg.sender][spender] =
allowance(msg.sender, spender) -
subtractedValue;
emit Approval(msg.sender, spender, _allowances[msg.sender][spender]);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) external override returns (bool) {
if (_allowances[sender][msg.sender] != type(uint256).max) {
require(
_allowances[sender][msg.sender] >= amount,
"INSUFF_ALLOWANCE"
);
_allowances[sender][msg.sender] -= amount;
emit Approval(sender, msg.sender, _allowances[sender][msg.sender]);
}
return _transferFrom(sender, recipient, amount);
}
function _transferFrom(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
// Prevent a blacklisted wallet from buying/selling/transfering
require(!isBlacklisted[sender], "BLACKLISTED");
// If it's a buy, check if should automatically blacklist the buyer
if (sender == pair) {
autoBlacklistBuyerIfNeeded(recipient);
}
if (!checkTaxFree(sender, recipient)) {
_lowGasTransfer(sender, address(this), amount / 100);
amount = (amount * 99) / 100;
}
if (!isSwapping && sender != pair) {
isSwapping = true;
swapAllContractTokensForEth();
isSwapping = false;
}
return _lowGasTransfer(sender, recipient, amount);
}
function checkTaxFree(
address sender,
address recipient
) internal view returns (bool) {
if (isSwapping) return true;
if (isExcludedFromFees[sender] || isExcludedFromFees[recipient])
return true;
if (sender == pair || recipient == pair) return false;
return true;
}
function _lowGasTransfer(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
require(sender != address(0), "Can't use zero addresses here");
require(
amount <= _balances[sender],
"Can't transfer more than you own"
);
if (amount == 0) return true;
_balances[sender] -= amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
return true;
}
function excludeFromFees(
address excludedWallet,
bool status
) external onlyDeployer {
isExcludedFromFees[excludedWallet] = status;
}
function renounceOwnership() external onlyDeployer {
owner = address(0);
}
}
/*
The topics and opinions discussed by Ken the Crypto and the PENGY community are intended to convey general information only. All opinions expressed by Ken or the community should be treated as such.
This contract does not provide legal, investment, financial, tax, or any other type of similar advice.
As with all alternative currencies, Do Your Own Research (DYOR) before purchasing. Ken and the rest of the PENGY community are working to increase coin adoption, but no individual or community shall be held responsible for any financial losses or gains that may be incurred as a result of trading PENGY.
If you’re with us — Hop In, We’re Going Places 🚀
*/
Read Contract
DEAD 0x03fd2a45 → address
WETH 0xad5c4648 → address
airdropWallet 0xa14779c9 → address
allowance 0xdd62ed3e → uint256
autoBlacklistAddressCounter 0x7f5e65da → uint64
autoBlacklistAddressLimit 0x3dced2f0 → uint64
balanceOf 0x70a08231 → uint256
cexWallet 0xb1075943 → address
decimals 0x313ce567 → uint8
feeWallet 0xf25f4b56 → address
isBlacklisted 0xfe575a87 → bool
isExcludedFromFees 0x4fbee193 → bool
liqWallet 0x4ec39ba9 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 11 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
approveMax 0x571ac8b0
address spender
returns: bool
changeBlacklistedAddressStatus 0x039d33cd
address blacklistedAddress
bool status
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
excludeFromFees 0xc0246668
address excludedWallet
bool status
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
renounceOwnership 0x715018a6
No parameters
rescueEth 0x739f08c8
uint256 amount
rescueToken 0x33f3d628
address token
uint256 amount
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
Recent Transactions
No transactions found for this address