Address Contract Verified
Address
0x00c2bcd386109c9cDC6fF454f7b6DCC188A0a835
Balance
0 ETH
Nonce
1
Code Size
21141 bytes
Creator
0x0012aB88...08B1 at tx 0x4aa3c287...6a6ece
Indexed Transactions
0
Contract Bytecode
21141 bytes
0x6080604052600436106102815760003560e01c8063702509fd1161014f578063a6f14f6c116100c1578063bb85c6d11161007a578063bb85c6d1146109a9578063c0246668146109d2578063dd62ed3e146109fb578063e2f4560514610a38578063f2fde38b14610a63578063f9d0831a14610a8c57610288565b8063a6f14f6c14610889578063a8a69b9d146108b2578063a9059cbb146108ef578063aa4bde281461092c578063afa4f3b214610957578063b6f7f6811461098057610288565b80638b4cee08116101135780638b4cee081461077b5780638da5cb5b146107a4578063929f1360146107cf57806395d89b41146107f8578063988be11814610823578063a457c2d71461084c57610288565b8063702509fd146106ba57806370a08231146106e5578063715018a61461072257806375f0a874146107395780638a8c523c1461076457610288565b80632a6c7dba116101f3578063488eb37f116101ac578063488eb37f146105a857806349bd5a5e146105d35780634ada218b146105fe5780634fbee1931461062957806356a6cabf1461066657806359136fa51461068f57610288565b80632a6c7dba146104965780632b14ca56146104bf5780632ba86bf2146104ea578063313ce567146105155780633950935114610540578063470624021461057d57610288565b80631694505e116102455780631694505e1461037257806318160ddd1461039d57806318d9ceae146103c857806321a9d82a1461040557806323b872dd1461043057806327a14fc21461046d57610288565b80630105d0fd1461028d57806306fdde03146102b8578063095ea7b3146102e35780630cc835a314610320578063150c880c1461034957610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610ab5565b6040516102af9190613a68565b60405180910390f35b3480156102c457600080fd5b506102cd610abb565b6040516102da9190613b13565b60405180910390f35b3480156102ef57600080fd5b5061030a60048036038101906103059190613bc4565b610b4d565b6040516103179190613c1f565b60405180910390f35b34801561032c57600080fd5b5061034760048036038101906103429190613c3a565b610b6b565b005b34801561035557600080fd5b50610370600480360381019061036b9190613c93565b610c89565b005b34801561037e57600080fd5b50610387610e5b565b6040516103949190613d32565b60405180910390f35b3480156103a957600080fd5b506103b2610e81565b6040516103bf9190613a68565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190613d4d565b610e8b565b6040516103fc9190613c1f565b60405180910390f35b34801561041157600080fd5b5061041a610ee1565b6040516104279190613c1f565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190613d7a565b610ef4565b6040516104649190613c1f565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190613c3a565b611013565b005b3480156104a257600080fd5b506104bd60048036038101906104b89190613dcd565b61117f565b005b3480156104cb57600080fd5b506104d46112ce565b6040516104e19190613a68565b60405180910390f35b3480156104f657600080fd5b506104ff6112d4565b60405161050c9190613c1f565b60405180910390f35b34801561052157600080fd5b5061052a6112e7565b6040516105379190613e16565b60405180910390f35b34801561054c57600080fd5b5061056760048036038101906105629190613bc4565b6112f0565b6040516105749190613c1f565b60405180910390f35b34801561058957600080fd5b5061059261139c565b60405161059f9190613a68565b60405180910390f35b3480156105b457600080fd5b506105bd6113a2565b6040516105ca9190613c1f565b60405180910390f35b3480156105df57600080fd5b506105e86113b5565b6040516105f59190613e40565b60405180910390f35b34801561060a57600080fd5b506106136113db565b6040516106209190613c1f565b60405180910390f35b34801561063557600080fd5b50610650600480360381019061064b9190613d4d565b6113ee565b60405161065d9190613c1f565b60405180910390f35b34801561067257600080fd5b5061068d60048036038101906106889190613dcd565b611444565b005b34801561069b57600080fd5b506106a4611593565b6040516106b19190613a68565b60405180910390f35b3480156106c657600080fd5b506106cf611599565b6040516106dc9190613a68565b60405180910390f35b3480156106f157600080fd5b5061070c60048036038101906107079190613d4d565b61159f565b6040516107199190613a68565b60405180910390f35b34801561072e57600080fd5b506107376115e7565b005b34801561074557600080fd5b5061074e61173f565b60405161075b9190613e40565b60405180910390f35b34801561077057600080fd5b50610779611765565b005b34801561078757600080fd5b506107a2600480360381019061079d9190613c3a565b611869565b005b3480156107b057600080fd5b506107b9611987565b6040516107c69190613e40565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f19190613c93565b6119b1565b005b34801561080457600080fd5b5061080d611b83565b60405161081a9190613b13565b60405180910390f35b34801561082f57600080fd5b5061084a60048036038101906108459190613dcd565b611c15565b005b34801561085857600080fd5b50610873600480360381019061086e9190613bc4565b611d0f565b6040516108809190613c1f565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab9190613c3a565b611dfa565b005b3480156108be57600080fd5b506108d960048036038101906108d49190613d4d565b611f18565b6040516108e69190613c1f565b60405180910390f35b3480156108fb57600080fd5b5061091660048036038101906109119190613bc4565b611f6e565b6040516109239190613c1f565b60405180910390f35b34801561093857600080fd5b50610941611f8c565b60405161094e9190613a68565b60405180910390f35b34801561096357600080fd5b5061097e60048036038101906109799190613c3a565b611f92565b005b34801561098c57600080fd5b506109a760048036038101906109a29190613e5b565b6120c3565b005b3480156109b557600080fd5b506109d060048036038101906109cb9190613d4d565b612298565b005b3480156109de57600080fd5b506109f960048036038101906109f49190613c93565b6123e2565b005b348015610a0757600080fd5b50610a226004803603810190610a1d9190613e9b565b6125b4565b604051610a2f9190613a68565b60405180910390f35b348015610a4457600080fd5b50610a4d61263b565b604051610a5a9190613a68565b60405180910390f35b348015610a6f57600080fd5b50610a8a6004803603810190610a859190613d4d565b612641565b005b348015610a9857600080fd5b50610ab36004803603810190610aae9190613d4d565b612807565b005b60155481565b606060038054610aca90613f0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610af690613f0a565b8015610b435780601f10610b1857610100808354040283529160200191610b43565b820191906000526020600020905b815481529060010190602001808311610b2657829003601f168201915b5050505050905090565b6000610b61610b5a612a8c565b8484612a94565b6001905092915050565b610b73612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990613f87565b60405180910390fd5b6019811115610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d90613ff3565b60405180910390fd5b806009819055507f7c1445c98b278c9970d007fca6048704bcb25af7cc4a04eb56565d9a9f149ca3600954604051610c7e9190613a68565b60405180910390a150565b610c91612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1790613f87565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da990614085565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1082604051610e4f9190613c1f565b60405180910390a25050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f40612a8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ffc5782811015610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde90614117565b60405180910390fd5b610ffb85610ff3612a8c565b858403612a94565b5b611007858585612c5d565b60019150509392505050565b61101b612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a190613f87565b60405180910390fd5b60646110b46112e7565b600a6110c09190614299565b6110c8610e81565b6110d29190614313565b6110dc9190614313565b81101561111e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611115906143b6565b60405180910390fd5b6111266112e7565b600a6111329190614299565b8161113d91906143d6565b6012819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb59426012546040516111749190613a68565b60405180910390a150565b611187612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90613f87565b60405180910390fd5b601160009054906101000a900460ff1615158115150361126b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112629061448a565b60405180910390fd5b80601160006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601160009054906101000a900460ff166040516112c39190613c1f565b60405180910390a150565b600a5481565b601460009054906101000a900460ff1681565b60006012905090565b60006113926112fd612a8c565b84846001600061130b612a8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138d91906144aa565b612a94565b6001905092915050565b60095481565b600f60009054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60149054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61144c612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290613f87565b60405180910390fd5b601460009054906101000a900460ff16151581151503611530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152790614550565b60405180910390fd5b80601460006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601460009054906101000a900460ff166040516115889190613c1f565b60405180910390a150565b60165481565b600b5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115ef612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167590613f87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61176d612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f390613f87565b60405180910390fd5b600d60149054906101000a900460ff161561184c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611843906145bc565b60405180910390fd5b6001600d60146101000a81548160ff021916908315150217905550565b611871612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790613f87565b60405180910390fd5b6019811115611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b90614628565b60405180910390fd5b80600a819055507f495ee53ee22006979ebc689a00ed737d7c13b6419142f82dcaea4ed95ac1e780600a5460405161197c9190613a68565b60405180910390a150565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119b9612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3f90613f87565b60405180910390fd5b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad190614085565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c82604051611b779190613c1f565b60405180910390a25050565b606060048054611b9290613f0a565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbe90613f0a565b8015611c0b5780601f10611be057610100808354040283529160200191611c0b565b820191906000526020600020905b815481529060010190602001808311611bee57829003601f168201915b5050505050905090565b611c1d612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca390613f87565b60405180910390fd5b80600f60006101000a81548160ff0219169083151502179055507f94da5f18dc9529c37f2af4ffa1921f49d8bb14b6e5fe22b0d6ddc94f102f9232600f60009054906101000a900460ff16604051611d049190613c1f565b60405180910390a150565b60008060016000611d1e612a8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd2906146ba565b60405180910390fd5b611def611de6612a8c565b85858403612a94565b600191505092915050565b611e02612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8890613f87565b60405180910390fd5b600a811115611ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecc9061474c565b60405180910390fd5b80600b819055507f55a18e0066d4ca4f044c3c7bff35c003f6b02ad8a7c71b6d33ae71d262833251600b54604051611f0d9190613a68565b60405180910390a150565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611f82611f7b612a8c565b8484612c5d565b6001905092915050565b60125481565b611f9a612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202090613f87565b60405180910390fd5b620f4240612035610e81565b61203f9190614313565b8111612080576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612077906147de565b60405180910390fd5b80600e819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600e546040516120b89190613a68565b60405180910390a150565b6120cb612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215190613f87565b60405180910390fd5b6103e86121656112e7565b600a6121719190614299565b612179610e81565b6121839190614313565b61218d9190614313565b82101580156121ce57506103e86121a26112e7565b600a6121ae9190614299565b6121b6610e81565b6121c09190614313565b6121ca9190614313565b8110155b61220d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220490614870565b60405180910390fd5b6122156112e7565b600a6122219190614299565b8261222c91906143d6565b60158190555061223a6112e7565b600a6122469190614299565b8161225191906143d6565b6016819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb13160155460165460405161228c929190614890565b60405180910390a15050565b6122a0612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232690613f87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361239e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123959061492b565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123ea612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090613f87565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361250b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612502906149bd565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516125a89190613c1f565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b612649612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cf90613f87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273e90614a4f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61280f612a8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461289e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289590613f87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129845760003373ffffffffffffffffffffffffffffffffffffffff16476040516128f890614aa0565b60006040518083038185875af1925050503d8060008114612935576040519150601f19603f3d011682016040523d82523d6000602084013e61293a565b606091505b505090508061297e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297590614b01565b60405180910390fd5b50612a89565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129c49190613e40565b602060405180830381865afa1580156129e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a059190614b36565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612a42929190614b63565b6020604051808303816000875af1158015612a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a859190614ba1565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afa90614c40565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6990614cd2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c509190613a68565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc390614d64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3290614df6565b60405180910390fd5b600d60149054906101000a900460ff1680612d9f5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612df35750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2990614e62565b60405180910390fd5b60008103612e4b57612e46838360006134fd565b6134f8565b601460009054906101000a900460ff16156130ad57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612f095750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015612f65575060001515601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b8015612fc1575060001515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156130ac57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361306557601554811115613060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305790614ef4565b60405180910390fd5b6130ab565b6016548111156130aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a190614ef4565b60405180910390fd5b5b5b5b60006130b83061159f565b90506000600e5482101590508080156130de5750600f60019054906101000a900460ff16155b80156131375750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15613197576001600f60016101000a81548160ff021916908315150217905550600f60009054906101000a900460ff161561317257600e5491505b61317b8261377c565b6000600f60016101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061323a5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806132515750600f60019054906101000a900460ff165b1561325f5760009050613325565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036132be576009549050613324565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361331d57600a549050613323565b600b5490505b5b5b60008111156133655760006064828661333e91906143d6565b6133489190614313565b905080856133569190614f14565b94506133638730836134fd565b505b601160009054906101000a900460ff16156134e95760001515601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561342a575060001515601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80156134845750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156134e85760006134948661159f565b905060125485826134a591906144aa565b11156134e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134dd90614fba565b60405180910390fd5b505b5b6134f48686866134fd565b5050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361356c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356390614d64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d290614df6565b60405180910390fd5b6135e6838383613a45565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561366c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136639061504c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136ff91906144aa565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137639190613a68565b60405180910390a3613776848484613a4a565b50505050565b60004790506000600267ffffffffffffffff81111561379e5761379d61506c565b5b6040519080825280602002602001820160405280156137cc5781602001602082028036833780820191505090505b50905030816000815181106137e4576137e361509b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561388b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138af91906150df565b816001815181106138c3576138c261509b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401613961959493929190615205565b600060405180830381600087803b15801561397b57600080fd5b505af115801561398f573d6000803e3d6000fd5b50505050600082476139a19190614f14565b90506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505090508015613a3e577f1309193d68e1a43bd32da5f04e07935cc194c20b2bd1813be5c6898b99dac4be8583604051613a35929190614890565b60405180910390a15b5050505050565b505050565b505050565b6000819050919050565b613a6281613a4f565b82525050565b6000602082019050613a7d6000830184613a59565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613abd578082015181840152602081019050613aa2565b60008484015250505050565b6000601f19601f8301169050919050565b6000613ae582613a83565b613aef8185613a8e565b9350613aff818560208601613a9f565b613b0881613ac9565b840191505092915050565b60006020820190508181036000830152613b2d8184613ada565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b6582613b3a565b9050919050565b613b7581613b5a565b8114613b8057600080fd5b50565b600081359050613b9281613b6c565b92915050565b613ba181613a4f565b8114613bac57600080fd5b50565b600081359050613bbe81613b98565b92915050565b60008060408385031215613bdb57613bda613b35565b5b6000613be985828601613b83565b9250506020613bfa85828601613baf565b9150509250929050565b60008115159050919050565b613c1981613c04565b82525050565b6000602082019050613c346000830184613c10565b92915050565b600060208284031215613c5057613c4f613b35565b5b6000613c5e84828501613baf565b91505092915050565b613c7081613c04565b8114613c7b57600080fd5b50565b600081359050613c8d81613c67565b92915050565b60008060408385031215613caa57613ca9613b35565b5b6000613cb885828601613b83565b9250506020613cc985828601613c7e565b9150509250929050565b6000819050919050565b6000613cf8613cf3613cee84613b3a565b613cd3565b613b3a565b9050919050565b6000613d0a82613cdd565b9050919050565b6000613d1c82613cff565b9050919050565b613d2c81613d11565b82525050565b6000602082019050613d476000830184613d23565b92915050565b600060208284031215613d6357613d62613b35565b5b6000613d7184828501613b83565b91505092915050565b600080600060608486031215613d9357613d92613b35565b5b6000613da186828701613b83565b9350506020613db286828701613b83565b9250506040613dc386828701613baf565b9150509250925092565b600060208284031215613de357613de2613b35565b5b6000613df184828501613c7e565b91505092915050565b600060ff82169050919050565b613e1081613dfa565b82525050565b6000602082019050613e2b6000830184613e07565b92915050565b613e3a81613b5a565b82525050565b6000602082019050613e556000830184613e31565b92915050565b60008060408385031215613e7257613e71613b35565b5b6000613e8085828601613baf565b9250506020613e9185828601613baf565b9150509250929050565b60008060408385031215613eb257613eb1613b35565b5b6000613ec085828601613b83565b9250506020613ed185828601613b83565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f2257607f821691505b602082108103613f3557613f34613edb565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f71602083613a8e565b9150613f7c82613f3b565b602082019050919050565b60006020820190508181036000830152613fa081613f64565b9050919050565b7f427579204665652063616e6e6f74206265206d6f7265207468616e2032352500600082015250565b6000613fdd601f83613a8e565b9150613fe882613fa7565b602082019050919050565b6000602082019050818103600083015261400c81613fd0565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b600061406f602483613a8e565b915061407a82614013565b604082019050919050565b6000602082019050818103600083015261409e81614062565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614101602883613a8e565b915061410c826140a5565b604082019050919050565b60006020820190508181036000830152614130816140f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156141bd5780860481111561419957614198614137565b5b60018516156141a85780820291505b80810290506141b685614166565b945061417d565b94509492505050565b6000826141d65760019050614292565b816141e45760009050614292565b81600181146141fa576002811461420457614233565b6001915050614292565b60ff84111561421657614215614137565b5b8360020a91508482111561422d5761422c614137565b5b50614292565b5060208310610133831016604e8410600b84101617156142685782820a90508381111561426357614262614137565b5b614292565b6142758484846001614173565b9250905081840481111561428c5761428b614137565b5b81810290505b9392505050565b60006142a482613a4f565b91506142af83613dfa565b92506142dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846141c6565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061431e82613a4f565b915061432983613a4f565b925082614339576143386142e4565b5b828204905092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b60006143a0602d83613a8e565b91506143ab82614344565b604082019050919050565b600060208201905081810360008301526143cf81614393565b9050919050565b60006143e182613a4f565b91506143ec83613a4f565b92508282026143fa81613a4f565b9150828204841483151761441157614410614137565b5b5092915050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b6000614474602d83613a8e565b915061447f82614418565b604082019050919050565b600060208201905081810360008301526144a381614467565b9050919050565b60006144b582613a4f565b91506144c083613a4f565b92508282019050808211156144d8576144d7614137565b5b92915050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b600061453a603283613a8e565b9150614545826144de565b604082019050919050565b600060208201905081810360008301526145698161452d565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b60006145a6601a83613a8e565b91506145b182614570565b602082019050919050565b600060208201905081810360008301526145d581614599565b9050919050565b7f53656c6c204665652063616e6e6f74206265206d6f7265207468616e20323525600082015250565b6000614612602083613a8e565b915061461d826145dc565b602082019050919050565b6000602082019050818103600083015261464181614605565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006146a4602583613a8e565b91506146af82614648565b604082019050919050565b600060208201905081810360008301526146d381614697565b9050919050565b7f57616c6c657420746f2057616c6c6574205472616e736665722046656520636160008201527f6e6e6f74206265206d6f7265207468616e203130250000000000000000000000602082015250565b6000614736603583613a8e565b9150614741826146da565b604082019050919050565b6000602082019050818103600083015261476581614729565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b60006147c8603f83613a8e565b91506147d38261476c565b604082019050919050565b600060208201905081810360008301526147f7816147bb565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b600061485a603f83613a8e565b9150614865826147fe565b604082019050919050565b600060208201905081810360008301526148898161484d565b9050919050565b60006040820190506148a56000830185613a59565b6148b26020830184613a59565b9392505050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000614915602b83613a8e565b9150614920826148b9565b604082019050919050565b6000602082019050818103600083015261494481614908565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006149a7602a83613a8e565b91506149b28261494b565b604082019050919050565b600060208201905081810360008301526149d68161499a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a39602683613a8e565b9150614a44826149dd565b604082019050919050565b60006020820190508181036000830152614a6881614a2c565b9050919050565b600081905092915050565b50565b6000614a8a600083614a6f565b9150614a9582614a7a565b600082019050919050565b6000614aab82614a7d565b9150819050919050565b7f436c61696d206661696c65640000000000000000000000000000000000000000600082015250565b6000614aeb600c83613a8e565b9150614af682614ab5565b602082019050919050565b60006020820190508181036000830152614b1a81614ade565b9050919050565b600081519050614b3081613b98565b92915050565b600060208284031215614b4c57614b4b613b35565b5b6000614b5a84828501614b21565b91505092915050565b6000604082019050614b786000830185613e31565b614b856020830184613a59565b9392505050565b600081519050614b9b81613c67565b92915050565b600060208284031215614bb757614bb6613b35565b5b6000614bc584828501614b8c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c2a602483613a8e565b9150614c3582614bce565b604082019050919050565b60006020820190508181036000830152614c5981614c1d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cbc602283613a8e565b9150614cc782614c60565b604082019050919050565b60006020820190508181036000830152614ceb81614caf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d4e602583613a8e565b9150614d5982614cf2565b604082019050919050565b60006020820190508181036000830152614d7d81614d41565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614de0602383613a8e565b9150614deb82614d84565b604082019050919050565b60006020820190508181036000830152614e0f81614dd3565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b6000614e4c601a83613a8e565b9150614e5782614e16565b602082019050919050565b60006020820190508181036000830152614e7b81614e3f565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b6000614ede603b83613a8e565b9150614ee982614e82565b604082019050919050565b60006020820190508181036000830152614f0d81614ed1565b9050919050565b6000614f1f82613a4f565b9150614f2a83613a4f565b9250828203905081811115614f4257614f41614137565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000614fa4603083613a8e565b9150614faf82614f48565b604082019050919050565b60006020820190508181036000830152614fd381614f97565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615036602683613a8e565b915061504182614fda565b604082019050919050565b6000602082019050818103600083015261506581615029565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506150d981613b6c565b92915050565b6000602082840312156150f5576150f4613b35565b5b6000615103848285016150ca565b91505092915050565b6000819050919050565b600061513161512c6151278461510c565b613cd3565b613a4f565b9050919050565b61514181615116565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61517c81613b5a565b82525050565b600061518e8383615173565b60208301905092915050565b6000602082019050919050565b60006151b282615147565b6151bc8185615152565b93506151c783615163565b8060005b838110156151f85781516151df8882615182565b97506151ea8361519a565b9250506001810190506151cb565b5085935050505092915050565b600060a08201905061521a6000830188613a59565b6152276020830187615138565b818103604083015261523981866151a7565b90506152486060830185613e31565b6152556080830184613a59565b969550505050505056fea264697066735822122019108b8fc749b88c882f6e2b714b7c47331029e717536fd7652c84c26dece2b164736f6c63430008120033
Verified Source Code Full Match
Compiler: v0.8.18+commit.87f61d96
EVM: paris
Optimization: No
AITECH.sol 705 lines
/**
Website: https://www.aitech.io/
Telegram: https://t.me/AITECH_PORTAL
Twitter: https://twitter.com/AITECHio
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
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 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;
}
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);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
abstract 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 {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract ERC20 is Context, IERC20, IERC20Metadata {
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) {
uint256 currentAllowance = _allowances[sender][_msgSender()];
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
}
_transfer(sender, recipient, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
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);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
_afterTokenTransfer(sender, recipient, amount);
}
function _init(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(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);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
_afterTokenTransfer(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 {}
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
contract AITECH is ERC20, Ownable {
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
mapping (address => bool) private _isExcludedFromFees;
uint256 public buyFee;
uint256 public sellFee;
uint256 public walletToWalletTransferFee;
address public marketingWallet;
address private DEAD = 0x000000000000000000000000000000000000dEaD;
bool public tradingEnabled;
uint256 public swapTokensAtAmount;
bool public swapWithLimit;
bool private swapping;
event ExcludeFromFees(address indexed account, bool isExcluded);
event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded);
event ExcludedFromMaxWalletLimit(address indexed account, bool isExcluded);
event MaxWalletLimitAmountChanged(uint256 maxWalletLimitRate);
event MaxWalletLimitStateChanged(bool maxWalletLimit);
event MaxTransactionLimitAmountChanged(uint256 maxTransferRateBuy, uint256 maxTransferRateSell);
event MaxTransactionLimitStateChanged(bool maxTransactionLimit);
event BuyFeeUpdated(uint256 buyFee);
event SellFeeUpdated(uint256 sellFee);
event WalletToWalletTransferFeeUpdated(uint256 walletToWalletTransferFee);
event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);
event SwapAndSend(uint256 tokensSwapped, uint256 valueReceived);
event SwapWithLimitUpdated(bool swapWithLimit);
constructor () ERC20("Solidus Ai Tech", "AITECH")
{
address newOwner = 0x0012aB888B088F8bC5401787530B1AebF29808B1;
transferOwnership(newOwner);
address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH UniswapV2 Router
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = _uniswapV2Pair;
_approve(address(this), address(uniswapV2Router), type(uint256).max);
buyFee = 1;
sellFee = 1;
walletToWalletTransferFee = 1;
marketingWallet = 0x2Fa9397C69f1746c200588EA72B4235164797dab;
_isExcludedFromFees[owner()] = true;
_isExcludedFromFees[address(0xdead)] = true;
_isExcludedFromFees[address(this)] = true;
_isExcludedFromMaxTxLimit[owner()] = true;
_isExcludedFromMaxTxLimit[address(0)] = true;
_isExcludedFromMaxTxLimit[address(this)] = true;
_isExcludedFromMaxTxLimit[DEAD] = true;
_isExcludedFromMaxWalletLimit[owner()] = true;
_isExcludedFromMaxWalletLimit[address(0)] = true;
_isExcludedFromMaxWalletLimit[address(this)] = true;
_isExcludedFromMaxWalletLimit[DEAD] = true;
_init(owner(), 1e9 ether);
swapTokensAtAmount = totalSupply() / 5000;
maxTransactionAmountBuy = totalSupply() / 100;
maxTransactionAmountSell = totalSupply() / 100;
maxWalletAmount = totalSupply() / 100;
}
receive() external payable {
}
function enableTrading() public onlyOwner{
require(!tradingEnabled, "Trading is already enabled");
tradingEnabled = true;
}
function claimStuckTokens(address token) external onlyOwner {
if (token == address(0x0)) {
(bool success,) = msg.sender.call{value: address(this).balance}("");
require(success, "Claim failed");
return;
}
IERC20 ERC20token = IERC20(token);
uint256 balance = ERC20token.balanceOf(address(this));
ERC20token.transfer(msg.sender, balance);
}
function excludeFromFees(address account, bool excluded) external onlyOwner{
require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'");
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function isExcludedFromFees(address account) public view returns(bool) {
return _isExcludedFromFees[account];
}
function setBuyFee(uint256 _buyFee) external onlyOwner {
require(_buyFee <= 25, "Buy Fee cannot be more than 25%");
buyFee = _buyFee;
emit BuyFeeUpdated(buyFee);
}
function setSellFee(uint256 _sellFee) external onlyOwner {
require(_sellFee <= 25, "Sell Fee cannot be more than 25%");
sellFee = _sellFee;
emit SellFeeUpdated(sellFee);
}
function setWalletToWalletTransferFee(uint256 _walletToWalletTransferFee) external onlyOwner {
require(_walletToWalletTransferFee <= 10, "Wallet to Wallet Transfer Fee cannot be more than 10%");
walletToWalletTransferFee = _walletToWalletTransferFee;
emit WalletToWalletTransferFeeUpdated(walletToWalletTransferFee);
}
function changeMarketingWallet(address _marketingWallet) external onlyOwner {
require(_marketingWallet != address(0), "Marketing wallet cannot be the zero address");
marketingWallet = _marketingWallet;
}
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(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not enabled yet");
if (amount == 0) {
super._transfer(from, to, 0);
return;
}
if (maxTransactionLimitEnabled)
{
if ((from == uniswapV2Pair || to == uniswapV2Pair) &&
_isExcludedFromMaxTxLimit[from] == false &&
_isExcludedFromMaxTxLimit[to] == false)
{
if (from == uniswapV2Pair) {
require(
amount <= maxTransactionAmountBuy,
"AntiWhale: Transfer amount exceeds the maxTransactionAmount"
);
} else {
require(
amount <= maxTransactionAmountSell,
"AntiWhale: Transfer amount exceeds the maxTransactionAmount"
);
}
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if (canSwap &&
!swapping &&
to == uniswapV2Pair
) {
swapping = true;
if (swapWithLimit) {
contractTokenBalance = swapTokensAtAmount;
}
swap(contractTokenBalance);
swapping = false;
}
uint256 _totalFees;
if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
_totalFees = 0;
} else if (from == uniswapV2Pair) {
_totalFees = buyFee;
} else if (to == uniswapV2Pair) {
_totalFees = sellFee;
} else {
_totalFees = walletToWalletTransferFee;
}
if (_totalFees > 0) {
uint256 fees = (amount * _totalFees) / 100;
amount = amount - fees;
super._transfer(from, address(this), fees);
}
if (maxWalletLimitEnabled) {
if (_isExcludedFromMaxWalletLimit[from] == false &&
_isExcludedFromMaxWalletLimit[to] == false &&
to != uniswapV2Pair
) {
uint balance = balanceOf(to);
require(
balance + amount <= maxWalletAmount,
"MaxWallet: Recipient exceeds the maxWalletAmount"
);
}
}
super._transfer(from, to, amount);
}
function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
require(newAmount > totalSupply() / 1000000, "SwapTokensAtAmount must be greater than 0.0001% of total supply");
swapTokensAtAmount = newAmount;
emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
}
function setSwapWithLimit(bool _swapWithLimit) external onlyOwner{
swapWithLimit = _swapWithLimit;
emit SwapWithLimitUpdated(swapWithLimit);
}
function swap(uint256 tokenAmount) private {
uint256 initialBalance = address(this).balance;
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp);
uint256 newBalance = address(this).balance - initialBalance;
bool success = payable(marketingWallet).send(newBalance);
if (success) {
emit SwapAndSend(tokenAmount, newBalance);
}
}
//=======MaxWallet=======//
mapping(address => bool) private _isExcludedFromMaxWalletLimit;
bool public maxWalletLimitEnabled = true;
uint256 public maxWalletAmount;
function setEnableMaxWalletLimit(bool enable) external onlyOwner {
require(
enable != maxWalletLimitEnabled,
"Max wallet limit is already set to that state"
);
maxWalletLimitEnabled = enable;
emit MaxWalletLimitStateChanged(maxWalletLimitEnabled);
}
function setMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner {
require(
_maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100,
"Max wallet percentage cannot be lower than 1%"
);
maxWalletAmount = _maxWalletAmount * (10 ** decimals());
emit MaxWalletLimitAmountChanged(maxWalletAmount);
}
function setExcludeFromMaxWallet(address account, bool exclude) external onlyOwner {
require(
_isExcludedFromMaxWalletLimit[account] != exclude,
"Account is already set to that state"
);
_isExcludedFromMaxWalletLimit[account] = exclude;
emit ExcludedFromMaxWalletLimit(account, exclude);
}
function isExcludedFromMaxWalletLimit(address account) public view returns(bool) {
return _isExcludedFromMaxWalletLimit[account];
}
//=======MaxTransaction=======//
mapping(address => bool) private _isExcludedFromMaxTxLimit;
bool public maxTransactionLimitEnabled = true;
uint256 public maxTransactionAmountBuy;
uint256 public maxTransactionAmountSell;
function setEnableMaxTransactionLimit(bool enable) external onlyOwner {
require(
enable != maxTransactionLimitEnabled,
"Max transaction limit is already set to that state"
);
maxTransactionLimitEnabled = enable;
emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled);
}
function setMaxTransactionAmounts(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell) external onlyOwner {
require(
_maxTransactionAmountBuy >= (totalSupply() / (10 ** decimals())) / 1000 &&
_maxTransactionAmountSell >= (totalSupply() / (10 ** decimals()))/ 1000,
"Max Transaction limis cannot be lower than 0.1% of total supply"
);
maxTransactionAmountBuy = _maxTransactionAmountBuy * (10 ** decimals());
maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals());
emit MaxTransactionLimitAmountChanged(maxTransactionAmountBuy, maxTransactionAmountSell);
}
function setExcludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner {
require(
_isExcludedFromMaxTxLimit[account] != exclude,
"Account is already set to that state"
);
_isExcludedFromMaxTxLimit[account] = exclude;
emit ExcludedFromMaxTransactionLimit(account, exclude);
}
function isExcludedFromMaxTransaction(address account) public view returns(bool) {
return _isExcludedFromMaxTxLimit[account];
}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyFee 0x47062402 → uint256
decimals 0x313ce567 → uint8
isExcludedFromFees 0x4fbee193 → bool
isExcludedFromMaxTransaction 0x18d9ceae → bool
isExcludedFromMaxWalletLimit 0xa8a69b9d → bool
marketingWallet 0x75f0a874 → address
maxTransactionAmountBuy 0x0105d0fd → uint256
maxTransactionAmountSell 0x59136fa5 → uint256
maxTransactionLimitEnabled 0x2ba86bf2 → bool
maxWalletAmount 0xaa4bde28 → uint256
maxWalletLimitEnabled 0x21a9d82a → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
sellFee 0x2b14ca56 → uint256
swapTokensAtAmount 0xe2f45605 → uint256
swapWithLimit 0x488eb37f → bool
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
tradingEnabled 0x4ada218b → bool
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address
walletToWalletTransferFee 0x702509fd → uint256
Write Contract 22 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
changeMarketingWallet 0xbb85c6d1
address _marketingWallet
claimStuckTokens 0xf9d0831a
address token
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
enableTrading 0x8a8c523c
No parameters
excludeFromFees 0xc0246668
address account
bool excluded
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
renounceOwnership 0x715018a6
No parameters
setBuyFee 0x0cc835a3
uint256 _buyFee
setEnableMaxTransactionLimit 0x56a6cabf
bool enable
setEnableMaxWalletLimit 0x2a6c7dba
bool enable
setExcludeFromMaxTransactionLimit 0x150c880c
address account
bool exclude
setExcludeFromMaxWallet 0x929f1360
address account
bool exclude
setMaxTransactionAmounts 0xb6f7f681
uint256 _maxTransactionAmountBuy
uint256 _maxTransactionAmountSell
setMaxWalletAmount 0x27a14fc2
uint256 _maxWalletAmount
setSellFee 0x8b4cee08
uint256 _sellFee
setSwapTokensAtAmount 0xafa4f3b2
uint256 newAmount
setSwapWithLimit 0x988be118
bool _swapWithLimit
setWalletToWalletTransferFee 0xa6f14f6c
uint256 _walletToWalletTransferFee
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