Forkchoice Ethereum Mainnet

Address Contract Verified

Address 0xBacdf475718D0026FE98fccc960435b6AAFe1CDa
Balance 0 ETH
Nonce 1
Code Size 7319 bytes
Indexed Transactions 0 (1 on-chain, 0.7% indexed)
External Etherscan · Sourcify

Contract Bytecode

7319 bytes
0x6080604052600436106101f25760003560e01c8063715018a61161010d578063a9059cbb116100a0578063bbb9f61f1161006f578063bbb9f61f146105ce578063c6618d60146105ee578063dafd18e914610604578063dd62ed3e14610624578063e11655451461066a57600080fd5b8063a9059cbb14610558578063b1cb158214610578578063b31470a41461058e578063b43665e2146105ae57600080fd5b8063805c0e0f116100dc578063805c0e0f146104d55780638da5cb5b146104eb57806395d89b4114610509578063a457c2d71461053857600080fd5b8063715018a614610462578063768dc7101461047957806378109e54146104a95780637d1db4a5146104bf57600080fd5b806339509351116101855780634a74bb02116101545780634a74bb02146103df578063603176251461040057806361c9a0dc1461041657806370a082311461042c57600080fd5b806339509351146103505780633bbac579146103705780633f70a495146103a957806349bd5a5e146103bf57600080fd5b806321dbd9eb116101c157806321dbd9eb146102dd578063220f6696146102f357806323b872dd14610314578063313ce5671461033457600080fd5b806306fdde03146101fe578063095ea7b3146102565780631694505e1461028657806318160ddd146102be57600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5060408051808201909152601e81527f54686174204d6f74686572204675636b6572204973204e6f74205265616c000060208201525b60405161024d91906117f2565b60405180910390f35b34801561026257600080fd5b50610276610271366004611868565b61068a565b604051901515815260200161024d565b34801561029257600080fd5b506013546102a6906001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b3480156102ca57600080fd5b506007545b60405190815260200161024d565b3480156102e957600080fd5b506102cf600d5481565b3480156102ff57600080fd5b5060145461027690600160a01b900460ff1681565b34801561032057600080fd5b5061027661032f366004611894565b6106a1565b34801561034057600080fd5b506040516012815260200161024d565b34801561035c57600080fd5b5061027661036b366004611868565b61070a565b34801561037c57600080fd5b5061027661038b3660046118d5565b6001600160a01b031660009081526001602052604090205460ff1690565b3480156103b557600080fd5b506102cf60095481565b3480156103cb57600080fd5b506014546102a6906001600160a01b031681565b3480156103eb57600080fd5b5060145461027690600160a81b900460ff1681565b34801561040c57600080fd5b506102cf600b5481565b34801561042257600080fd5b506102cf600e5481565b34801561043857600080fd5b506102cf6104473660046118d5565b6001600160a01b031660009081526002602052604090205490565b34801561046e57600080fd5b50610477610740565b005b34801561048557600080fd5b506102766104943660046118d5565b60046020526000908152604090205460ff1681565b3480156104b557600080fd5b506102cf600f5481565b3480156104cb57600080fd5b506102cf60115481565b3480156104e157600080fd5b506102a661dead81565b3480156104f757600080fd5b506000546001600160a01b03166102a6565b34801561051557600080fd5b506040805180820190915260068152652a26a324a72960d11b6020820152610240565b34801561054457600080fd5b50610276610553366004611868565b61078a565b34801561056457600080fd5b50610276610573366004611868565b6107d9565b34801561058457600080fd5b506102cf600a5481565b34801561059a57600080fd5b506104776105a9366004611921565b6107e6565b3480156105ba57600080fd5b506005546102a6906001600160a01b031681565b3480156105da57600080fd5b506006546102a6906001600160a01b031681565b3480156105fa57600080fd5b506102cf600c5481565b34801561061057600080fd5b5061027661061f366004611868565b6108b1565b34801561063057600080fd5b506102cf61063f3660046119f8565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561067657600080fd5b50610477610685366004611a31565b610a12565b6000610697338484610afb565b5060015b92915050565b60006106ae848484610bbc565b61070084336106fb85604051806060016040528060288152602001611c15602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610f7f565b610afb565b5060019392505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916106979185906106fb9086610fab565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061069733846106fb85604051806060016040528060258152602001611c3d602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190610f7f565b6000610697338484610bbc565b6000546001600160a01b031633146108455760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60005b82518110156108ac57816001600085848151811061086857610868611a5f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108a481611a8b565b915050610848565b505050565b6000306001600160a01b0384160361090b5760405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742072656d6f7665206e617469766520746f6b656e0000000000604482015260640161083c565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610952573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109769190611aa4565b9050600060646109868584611abd565b6109909190611ad4565b60065460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925086169063a9059cbb906044016020604051808303816000875af11580156109e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a099190611af6565b95945050505050565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083c565b6001600160a01b03821660009081526001602052604090205481151560ff909116151503610ad05760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b604482015260640161083c565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b6001600160a01b03831615801590610b1b57506001600160a01b03821615155b610b5b5760405162461bcd60e51b81526020600482015260116024820152704552523a207a65726f206164647265737360781b604482015260640161083c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b03838116911614801590610be557506001600160a01b03821661dead14155b8015610bfa57506001600160a01b0382163014155b8015610c1457506014546001600160a01b03838116911614155b8015610c2e57506000546001600160a01b03848116911614155b15610c9e576001600160a01b038216600090815260026020526040902054600f54610c598383611b13565b1115610c9c5760405162461bcd60e51b815260206004820152601260248201527127bb32b9103bb0b63632ba103634b6b4ba1760711b604482015260640161083c565b505b6000546001600160a01b03848116911614610d0557601154811115610d055760405162461bcd60e51b815260206004820152601760248201527f4f766572207472616e73616374696f6e206c696d69742e000000000000000000604482015260640161083c565b6001600160a01b03831615801590610d2557506001600160a01b03821615155b610d695760405162461bcd60e51b81526020600482015260156024820152744552523a205573696e67203020616464726573732160581b604482015260640161083c565b60008111610dc75760405162461bcd60e51b815260206004820152602560248201527f546f6b656e2076616c7565206d75737420626520686967686572207468616e206044820152643d32b9379760d91b606482015260840161083c565b6001600160a01b03831660009081526001602052604090205460ff16158015610e0957506001600160a01b03821660009081526001602052604090205460ff16155b610e455760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b604482015260640161083c565b60085460ff61010082048116911610801590610e6b5750601454600160a01b900460ff16155b8015610e8557506014546001600160a01b03848116911614155b8015610e9a5750601454600160a81b900460ff165b15610ed35730600090815260026020526040902054601154811115610ebe57506011545b6008805460ff19169055610ed181610fbe565b505b6001600160a01b0383166000908152600460205260408120546001919060ff1680610f1657506001600160a01b03841660009081526004602052604090205460ff165b15610f245760009150610f6b565b6014546001600160a01b0390811690861603610f3e575060015b6008805460ff16906000610f5183611b26565b91906101000a81548160ff021916908360ff160217905550505b610f788585858585611270565b5050505050565b60008184841115610fa35760405162461bcd60e51b815260040161083c91906117f2565b505050900390565b6000610fb78284611b13565b9392505050565b6014805460ff60a01b1916600160a01b179055600d54600090606490610fe49084611abd565b610fee9190611ad4565b905080600754610ffe9190611b45565b60075561dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54611039908290611b13565b60026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc553060009081526040902054611076908290611b45565b30600090815260026020526040812091909155600b546064906110999085611abd565b6110a39190611ad4565b905060006064600c54856110b79190611abd565b6110c19190611ad4565b9050600060c8600e54866110d59190611abd565b6110df9190611ad4565b9050476110ff836110f08685611b13565b6110fa9190611b13565b6115b7565b600061110b8247611b45565b90506000600c54600b54600e546111229190611b13565b61112c9190611b13565b600b5461113a906064611abd565b6111449190611ad4565b9050600060646111548385611abd565b61115e9190611ad4565b90506000600c54600b54600e546111759190611b13565b61117f9190611b13565b600c5461118d906064611abd565b6111979190611ad4565b9050600060646111a78387611abd565b6111b19190611ad4565b90506111d187826111c28689611b45565b6111cc9190611b45565b611711565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56187826111fe8689611b45565b6112089190611b45565b604080519283526020830191909152810189905260600160405180910390a160055461123d906001600160a01b0316846117bc565b600654479550611256906001600160a01b0316866117bc565b50506014805460ff60a01b19169055505050505050505050565b8161134f576001600160a01b038516600090815260026020526040902054611299908490611b45565b6001600160a01b0380871660009081526002602052604080822093909355908616815220546112c9908490611b13565b6001600160a01b0380861660008181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061131d9087815260200190565b60405180910390a361deac196001600160a01b0385160161134a57826007546113469190611b45565b6007555b610f78565b80156114855760006064600954856113679190611abd565b6113719190611ad4565b9050600061137f8286611b45565b6001600160a01b0388166000908152600260205260409020549091506113a6908690611b45565b6001600160a01b0380891660009081526002602052604080822093909355908816815220546113d6908290611b13565b6001600160a01b038716600090815260026020526040808220929092553081522054611403908390611b13565b3060009081526002602090815260409182902092909255518281526001600160a01b0388811692908a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361deac196001600160a01b0387160161147e578060075461147a9190611b45565b6007555b5050610f78565b60006064600a54856114979190611abd565b6114a19190611ad4565b905060006114af8286611b45565b6001600160a01b0388166000908152600260205260409020549091506114d6908690611b45565b6001600160a01b038089166000908152600260205260408082209390935590881681522054611506908290611b13565b6001600160a01b038716600090815260026020526040808220929092553081522054611533908390611b13565b3060009081526002602090815260409182902092909255518281526001600160a01b0388811692908a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361deac196001600160a01b038716016115ae57806007546115aa9190611b45565b6007555b50505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115ec576115ec611a5f565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611645573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116699190611b58565b8160018151811061167c5761167c611a5f565b6001600160a01b0392831660209182029290920101526013546116a29130911684610afb565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906116db908590600090869030904290600401611b75565b600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b505050505050565b6013546117299030906001600160a01b031684610afb565b60135460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611797573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f789190611be6565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156108ac573d6000803e3d6000fd5b600060208083528351808285015260005b8181101561181f57858101830151858201604001528201611803565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461185557600080fd5b50565b803561186381611840565b919050565b6000806040838503121561187b57600080fd5b823561188681611840565b946020939093013593505050565b6000806000606084860312156118a957600080fd5b83356118b481611840565b925060208401356118c481611840565b929592945050506040919091013590565b6000602082840312156118e757600080fd5b8135610fb781611840565b634e487b7160e01b600052604160045260246000fd5b801515811461185557600080fd5b803561186381611908565b6000806040838503121561193457600080fd5b823567ffffffffffffffff8082111561194c57600080fd5b818501915085601f83011261196057600080fd5b8135602082821115611974576119746118f2565b8160051b604051601f19603f83011681018181108682111715611999576119996118f2565b6040529283528183019350848101820192898411156119b757600080fd5b948201945b838610156119dc576119cd86611858565b855294820194938201936119bc565b96506119eb9050878201611916565b9450505050509250929050565b60008060408385031215611a0b57600080fd5b8235611a1681611840565b91506020830135611a2681611840565b809150509250929050565b60008060408385031215611a4457600080fd5b8235611a4f81611840565b91506020830135611a2681611908565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611a9d57611a9d611a75565b5060010190565b600060208284031215611ab657600080fd5b5051919050565b808202811582820484141761069b5761069b611a75565b600082611af157634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b0857600080fd5b8151610fb781611908565b8082018082111561069b5761069b611a75565b600060ff821660ff8103611b3c57611b3c611a75565b60010192915050565b8181038181111561069b5761069b611a75565b600060208284031215611b6a57600080fd5b8151610fb781611840565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bc55784516001600160a01b031683529383019391830191600101611ba0565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611bfb57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dac1837d788d93ce5b878800504d3af4f6aac9349a58e84d44e2144ff929bc1764736f6c63430008120033

Verified Source Code Full Match

Compiler: v0.8.18+commit.87f61d96 EVM: paris Optimization: Yes (200 runs)
ThatMotherFuckerIsNotReal.sol 551 lines
/**
 *Submitted for verification at Etherscan.io on 2023-
 *Telegram: https://t.co/tdZQZRNlYu
 *Website:  https://tmfinr.wtf
 *Twitter:  https://twitter.com/TMFINR_WTF
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;



interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        return msg.data;
    }
}
library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                 assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
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 IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
contract ThatMotherFuckerIsNotReal is Context, IERC20 { 
    using SafeMath for uint256;
    using Address for address;
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    mapping (address => bool) private _isBot;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee; 
    address payable public Wallet_Marketing = payable(0x43FB5DD30ABbeefc76Ac938dd03c658B46e7E12A); 
    address payable public Wallet_Dev = payable(0xE3E93Ce5e89a3D54235cAB878BfDa936BBC06DF1);
    address payable public constant Wallet_Burn = payable(0x000000000000000000000000000000000000dEaD); 
    uint256 private constant MAX = ~uint256(0);
    uint8 private constant _decimals = 18;
    uint256 private _tTotal =1000000000 * 10**_decimals;
    string private constant _name = "That Mother Fucker Is Not Real"; 
    string private constant _symbol = unicode"TMFINR"; 
    uint8 private txCount = 0;
    uint8 private swapTrigger = 10; 
    uint256 public _Tax_On_Buy = 1;
    uint256 public _Tax_On_Sell = 1;
    uint256 public Percent_Marketing = 70;
    uint256 public Percent_Dev = 0;
    uint256 public Percent_Burn = 10;
    uint256 public Percent_AutoLP = 20; 
    uint256 public _maxWalletToken = _tTotal * 1 / 100;
    uint256 private _previousMaxWalletToken = _maxWalletToken;
    uint256 public _maxTxAmount = _tTotal * 1 / 100; 
    uint256 private _previousMaxTxAmount = _maxTxAmount;
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    event SwapAndLiquifyEnabledUpdated(bool true_or_false);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor () {
        _owner =0xE3E93Ce5e89a3D54235cAB878BfDa936BBC06DF1;
        emit OwnershipTransferred(address(0), _owner);
        _tOwned[owner()] = _tTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[Wallet_Marketing] = true; 
        _isExcludedFromFee[Wallet_Burn] = true;
        emit Transfer(address(0), owner(), _tTotal);
    }

    function setAntibot(address account, bool state) external onlyOwner{
        require(_isBot[account] != state, 'Value already set');
        _isBot[account] = state;
    }
    
    function bulkAntiBot(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isBot[accounts[i]] = state;
         }   
     }

     function isBot(address account) public view returns(bool){
        return _isBot[account];
    }
    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address theOwner, address theSpender) public view override returns (uint256) {
        return _allowances[theOwner][theSpender];
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    receive() external payable {}
    function _getCurrentSupply() private view returns(uint256) {
        return (_tTotal);
    }
    function _approve(address theOwner, address theSpender, uint256 amount) private {
        require(theOwner != address(0) && theSpender != address(0), "ERR: zero address");
        _allowances[theOwner][theSpender] = amount;
        emit Approval(theOwner, theSpender, amount);
    }
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        if (to != owner() &&
            to != Wallet_Burn &&
            to != address(this) &&
            to != uniswapV2Pair &&
            from != owner()){
            uint256 heldTokens = balanceOf(to);
            require((heldTokens + amount) <= _maxWalletToken,"Over wallet limit.");}
        if (from != owner())
            require(amount <= _maxTxAmount, "Over transaction limit.");
        require(from != address(0) && to != address(0), "ERR: Using 0 address!");
        require(amount > 0, "Token value must be higher than zero."); 
        require(!_isBot[from] && !_isBot[to], "You are a bot"); 
        if(
            txCount >= swapTrigger && 
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
            )
        {  
            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance > _maxTxAmount) {contractTokenBalance = _maxTxAmount;}
            txCount = 0;
            swapAndLiquify(contractTokenBalance);
        }
        bool takeFee = true;
        bool isBuy;
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        } else {
            if(from == uniswapV2Pair){
                isBuy = true;
            }
            txCount++;
        }
        _tokenTransfer(from, to, amount, takeFee, isBuy);
    }
    function sendToWallet(address payable wallet, uint256 amount) private {
            wallet.transfer(amount);
        }
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
            uint256 tokens_to_Burn = contractTokenBalance * Percent_Burn / 100;
            _tTotal = _tTotal - tokens_to_Burn;
            _tOwned[Wallet_Burn] = _tOwned[Wallet_Burn] + tokens_to_Burn;
            _tOwned[address(this)] = _tOwned[address(this)] - tokens_to_Burn; 
            uint256 tokens_to_M = contractTokenBalance * Percent_Marketing / 100;
            uint256 tokens_to_D = contractTokenBalance * Percent_Dev / 100;
            uint256 tokens_to_LP_Half = contractTokenBalance * Percent_AutoLP / 200;
            uint256 balanceBeforeSwap = address(this).balance;
            swapTokensForETH(tokens_to_LP_Half + tokens_to_M + tokens_to_D);
            uint256 ETH_Total = address(this).balance - balanceBeforeSwap;
            uint256 split_M = Percent_Marketing * 100 / (Percent_AutoLP + Percent_Marketing + Percent_Dev);
            uint256 ETH_M = ETH_Total * split_M / 100;
            uint256 split_D = Percent_Dev * 100 / (Percent_AutoLP + Percent_Marketing + Percent_Dev);
            uint256 ETH_D = ETH_Total * split_D / 100;
            addLiquidity(tokens_to_LP_Half, (ETH_Total - ETH_M - ETH_D));
            emit SwapAndLiquify(tokens_to_LP_Half, (ETH_Total - ETH_M - ETH_D), tokens_to_LP_Half);
            sendToWallet(Wallet_Marketing, ETH_M);
            ETH_Total = address(this).balance;
            sendToWallet(Wallet_Dev, ETH_Total);
            }
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0, 
            0,
            Wallet_Burn, 
            block.timestamp
        );
    } 
    function remove_Random_Tokens(address random_Token_Address, uint256 percent_of_Tokens) public returns(bool _sent){
        require(random_Token_Address != address(this), "Can not remove native token");
        uint256 totalRandom = IERC20(random_Token_Address).balanceOf(address(this));
        uint256 removeRandom = totalRandom*percent_of_Tokens/100;
        _sent = IERC20(random_Token_Address).transfer(Wallet_Dev, removeRandom);
    }
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isBuy) private {
        if(!takeFee){
            _tOwned[sender] = _tOwned[sender]-tAmount;
            _tOwned[recipient] = _tOwned[recipient]+tAmount;
            emit Transfer(sender, recipient, tAmount);
            if(recipient == Wallet_Burn)
            _tTotal = _tTotal-tAmount;
            } else if (isBuy){
            uint256 buyFEE = tAmount*_Tax_On_Buy/100;
            uint256 tTransferAmount = tAmount-buyFEE;
            _tOwned[sender] = _tOwned[sender]-tAmount;
            _tOwned[recipient] = _tOwned[recipient]+tTransferAmount;
            _tOwned[address(this)] = _tOwned[address(this)]+buyFEE;  
            emit Transfer(sender, recipient, tTransferAmount);
            if(recipient == Wallet_Burn)
            _tTotal = _tTotal-tTransferAmount;
            } else {
            uint256 sellFEE = tAmount*_Tax_On_Sell/100;
            uint256 tTransferAmount = tAmount-sellFEE;
            _tOwned[sender] = _tOwned[sender]-tAmount;
            _tOwned[recipient] = _tOwned[recipient]+tTransferAmount;
            _tOwned[address(this)] = _tOwned[address(this)]+sellFEE;  
            emit Transfer(sender, recipient, tTransferAmount);
            if(recipient == Wallet_Burn)
            _tTotal = _tTotal-tTransferAmount;
            }
    }
}

Read Contract

Percent_AutoLP 0x61c9a0dc → uint256
Percent_Burn 0x21dbd9eb → uint256
Percent_Dev 0xc6618d60 → uint256
Percent_Marketing 0x60317625 → uint256
Wallet_Burn 0x805c0e0f → address
Wallet_Dev 0xbbb9f61f → address
Wallet_Marketing 0xb43665e2 → address
_Tax_On_Buy 0x3f70a495 → uint256
_Tax_On_Sell 0xb1cb1582 → uint256
_isExcludedFromFee 0x768dc710 → bool
_maxTxAmount 0x7d1db4a5 → uint256
_maxWalletToken 0x78109e54 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
inSwapAndLiquify 0x220f6696 → bool
isBot 0x3bbac579 → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
swapAndLiquifyEnabled 0x4a74bb02 → bool
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address

Write Contract 9 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
bulkAntiBot 0xb31470a4
address[] accounts
bool state
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
remove_Random_Tokens 0xdafd18e9
address random_Token_Address
uint256 percent_of_Tokens
returns: bool
renounceOwnership 0x715018a6
No parameters
setAntibot 0xe1165545
address account
bool state
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool

Recent Transactions

This address has 1 on-chain transactions, but only 0.7% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →