```\nfunction _transfer(\n    address from,\n    address to,\n    uint256 amount\n) internal override {\n    require(from != address(0), "ERC20: transfer from the zero address");\n    require(to != address(0), "ERC20: transfer to the zero address");\n    require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens");\n     if(amount == 0) {\n        super._transfer(from, to, 0);\n        return;\n    }\n\n    if(limitsInEffect){\n        if (\n            from != owner() &&\n            to != owner() &&\n            to != address(0) &&\n            to != address(0xdead) &&\n            !swapping\n        ){\n            if(!tradingActive){\n                require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");\n            }\n\n            // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  \n            if (transferDelayEnabled){\n                if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){\n                    require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");\n                    _holderLastTransferTimestamp[tx.origin] = block.number;\n                }\n            }\n\n            //when buy\n            if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {\n                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");\n                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");\n            }\n\n            //when sell\n            else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {\n                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");\n            }\n            else if(!_isExcludedMaxTransactionAmount[to]){\n                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");\n            }\n        }\n    }\n\n    // anti bot logic\n    if (block.number <= (launchedAt + 0) && \n            to != uniswapV2Pair && \n            to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)\n        ) { \n        _blacklist[to] = false;\n    }\n\nnt256 contractTokenBalance = balanceOf(address(this));\n\n    bool canSwap = contractTokenBalance >= swapTokensAtAmount;\n\n    if( \n        canSwap &&\n        swapEnabled &&\n        !swapping &&\n        !automatedMarketMakerPairs[from] &&\n        !_isExcludedFromFees[from] &&\n        !_isExcludedFromFees[to]\n    ) {\n        swapping = true;\n\n        swapBack();\n\n        swapping = false;\n    }\n\n    if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency && !_isExcludedFromFees[from]){\n        autoBurnLiquidityPairTokens();\n    }\n\n    bool takeFee = !swapping;\n\n    // if any account belongs to _isExcludedFromFee account then remove the fee\n    if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {\n        takeFee = false;\n    }\n\n    uint256 fees = 0;\n    // only take fees on buys/sells, do not take on wallet transfers\n    if(takeFee){\n        // on sell\n        if (automatedMarketMakerPairs[to] && sellTotalFees > 0){\n            fees = amount.mul(sellTotalFees).div(100);\n            tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;\n            tokensForDev += fees * sellDevFee / sellTotalFees;\n            tokensForMarketing += fees * sellMarketingFee / sellTotalFees;\n        }\n        // on buy\n        else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {\n    	    fees = amount.mul(buyTotalFees).div(100);\n    	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;\n            tokensForDev += fees * buyDevFee / buyTotalFees;\n            tokensForMarketing += fees * buyMarketingFee / buyTotalFees;\n        }\n\n        if(fees > 0){    \n            super._transfer(from, address(this), fees);\n        }\n\n    	amount -= fees;\n    }\n\n    super._transfer(from, to, amount);\n}\n```\n