Fees where are they going ? setFees _ecosystemFee _liquidityFee _buyBackFee

Good Evening , im stuck and going in circles because i dont know where the fees are going. Do i have to set up in bscscan at write contract the fees ?

Here`s my contract

pragma solidity ^0.7.4;

library SafeMath {

function add(uint256 a, uint256 b) internal pure returns (uint256) {

    uint256 c = a + b;

    require(c >= a, "SafeMath: addition overflow");

    return c;

}

function sub(uint256 a, uint256 b) internal pure returns (uint256) {

    return sub(a, b, "SafeMath: subtraction overflow");

}

function sub(

    uint256 a,

    uint256 b,

    string memory errorMessage

) internal pure returns (uint256) {

    require(b <= a, errorMessage);

    uint256 c = a - b;

    return c;

}

function mul(uint256 a, uint256 b) internal pure returns (uint256) {

    if (a == 0) {

        return 0;

    }

    uint256 c = a * b;

    require(c / a == b, "SafeMath: multiplication overflow");

    return c;

}

function div(uint256 a, uint256 b) internal pure returns (uint256) {

    return div(a, b, "SafeMath: division by zero");

}

function div(

    uint256 a,

    uint256 b,

    string memory errorMessage

) internal pure returns (uint256) {

    require(b > 0, errorMessage);

    uint256 c = a / b;

    return c;

}

function mod(uint256 a, uint256 b) internal pure returns (uint256) {

    require(b != 0);

    return a % b;

}

}

interface IERC20 {

function totalSupply() external view returns (uint256);

function balanceOf(address who) external view returns (uint256);

function allowance(address owner, address spender)

    external

    view

    returns (uint256);

function transfer(address to, uint256 value) external returns (bool);

function approve(address spender, uint256 value) external returns (bool);

function transferFrom(

    address from,

    address to,

    uint256 value

) external returns (bool);

event Transfer(address indexed from, address indexed to, uint256 value);

event Approval(

    address indexed owner,

    address indexed spender,

    uint256 value

);

}

interface InterfaceLP {

function sync() external;

}

abstract contract ERC20Detailed is IERC20 {

string private _name;

string private _symbol;

uint8 private _decimals;

constructor(

    string memory name,

    string memory symbol,

    uint8 decimals

) {

    _name = name;

    _symbol = symbol;

    _decimals = decimals;

}

function name() public view returns (string memory) {

    return _name;

}

function symbol() public view returns (string memory) {

    return _symbol;

}

function decimals() public view returns (uint8) {

    return _decimals;

}

}

library SafeMathInt {

int256 private constant MIN_INT256 = int256(1) << 255;

int256 private constant MAX_INT256 = ~(int256(1) << 255);

function mul(int256 a, int256 b) internal pure returns (int256) {

    int256 c = a * b;

    require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));

    require((b == 0) || (c / b == a));

    return c;

}

function div(int256 a, int256 b) internal pure returns (int256) {

    require(b != -1 || a != MIN_INT256);

    return a / b;

}

function sub(int256 a, int256 b) internal pure returns (int256) {

    int256 c = a - b;

    require((b >= 0 && c <= a) || (b < 0 && c > a));

    return c;

}

function add(int256 a, int256 b) internal pure returns (int256) {

    int256 c = a + b;

    require((b >= 0 && c >= a) || (b < 0 && c < a));

    return c;

}

function abs(int256 a) internal pure returns (int256) {

    require(a != MIN_INT256);

    return a < 0 ? -a : a;

}

}

contract Ownable {

address private _owner;

event OwnershipRenounced(address indexed previousOwner);

event OwnershipTransferred(

    address indexed previousOwner,

    address indexed newOwner

);

constructor() {

    _owner = msg.sender;

}

function owner() public view returns (address) {

    return _owner;

}

modifier onlyOwner() {

    require(isOwner());

    _;

}

function isOwner() public view returns (bool) {

    return msg.sender == _owner;

}

function renounceOwnership() public onlyOwner {

    emit OwnershipRenounced(_owner);

    _owner = address(0);

}

function transferOwnership(address newOwner) public onlyOwner {

    _transferOwnership(newOwner);

}

function _transferOwnership(address newOwner) internal {

    require(newOwner != address(0));

    emit OwnershipTransferred(_owner, newOwner);

    _owner = newOwner;

}

}

interface IDEXFactory {

function createPair(address tokenA, address tokenB)

    external

    returns (address pair);

}

interface IDEXRouter {

function factory() external pure returns (address);

function WETH() external pure returns (address);

function addLiquidity(

    address tokenA,

    address tokenB,

    uint256 amountADesired,

    uint256 amountBDesired,

    uint256 amountAMin,

    uint256 amountBMin,

    address to,

    uint256 deadline

)

    external

    returns (

        uint256 amountA,

        uint256 amountB,

        uint256 liquidity

    );

function addLiquidityETH(

    address token,

    uint256 amountTokenDesired,

    uint256 amountTokenMin,

    uint256 amountETHMin,

    address to,

    uint256 deadline

)

    external

    payable

    returns (

        uint256 amountToken,

        uint256 amountETH,

        uint256 liquidity

    );

function swapExactTokensForTokensSupportingFeeOnTransferTokens(

    uint256 amountIn,

    uint256 amountOutMin,

    address[] calldata path,

    address to,

    uint256 deadline

) external;

function swapExactETHForTokensSupportingFeeOnTransferTokens(

    uint256 amountOutMin,

    address[] calldata path,

    address to,

    uint256 deadline

) external payable;

function swapExactTokensForETHSupportingFeeOnTransferTokens(

    uint256 amountIn,

    uint256 amountOutMin,

    address[] calldata path,

    address to,

    uint256 deadline

) external;

}

contract MCC is ERC20Detailed, Ownable {

using SafeMath for uint256;

using SafeMathInt for int256;

event LogRebase(uint256 indexed epoch, uint256 totalSupply);

address public master;

InterfaceLP public pairContract;

modifier onlyMaster() {

    require(msg.sender == master);

    _;

}

bool public initialDistributionFinished;

mapping(address => bool) allowTransfer;

mapping(address => bool) _isFeeExempt;

mapping(address => bool) _isMaxWalletExempt;

modifier initialDistributionLock() {

    require(

        initialDistributionFinished ||

            isOwner() ||

            allowTransfer[msg.sender]

    );

    _;

}

modifier validRecipient(address to) {

    require(to != address(0x0));

    _;

}

uint256 private constant DECIMALS = 9;

uint256 private constant MAX_UINT256 = ~uint256(0);

uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 10**15 * 10**DECIMALS;

uint256 public gonMaxWallet = TOTAL_GONS.div(100).mul(5);

uint256 public ecosystemFee = 1;

uint256 public liquidityFee = 3;

uint256 public marketingFee = 4;

uint256 public buyBackFee = 2;

uint256 public totalFee =

    ecosystemFee.add(liquidityFee).add(marketingFee).add(buyBackFee);

uint256 public feeDenominator = 100;

address DEAD = 0x000000000000000000000000000000000000dEaD;

address ZERO = 0x0000000000000000000000000000000000000000;

address public autoLiquidityReceiver;

address public marketingFeeReceiver;

address public ecosystemFeeReceiver;

address public buyBackFeeReceiver;

uint256 targetLiquidity = 50;

uint256 targetLiquidityDenominator = 100;

IDEXRouter public router;

address public pair;

bool public swapEnabled = true;

uint256 private gonSwapThreshold = (TOTAL_GONS * 10) / 10000;

bool inSwap;

modifier swapping() {

    inSwap = true;

    _;

    inSwap = false;

}

uint256 private constant TOTAL_GONS =

    MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY);

uint256 private constant MAX_SUPPLY = ~uint128(0);

uint256 private _totalSupply;

uint256 private _gonsPerFragment;

mapping(address => uint256) private _gonBalances;

mapping(address => mapping(address => uint256)) private _allowedFragments;

function rebase(uint256 epoch, int256 supplyDelta)

    external

    onlyMaster

    returns (uint256)

{

    require(!inSwap, "Try again");

    if (supplyDelta == 0) {

        emit LogRebase(epoch, _totalSupply);

        return _totalSupply;

    }

    if (supplyDelta < 0) {

        _totalSupply = _totalSupply.sub(uint256(-supplyDelta));

    } else {

        _totalSupply = _totalSupply.add(uint256(supplyDelta));

    }

    if (_totalSupply > MAX_SUPPLY) {

        _totalSupply = MAX_SUPPLY;

    }

    _gonsPerFragment = TOTAL_GONS.div(_totalSupply);

    pairContract.sync();

    emit LogRebase(epoch, _totalSupply);

    return _totalSupply;

}

constructor() ERC20Detailed("MetaFluture", "MFE", uint8(DECIMALS)) {

    router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E); //Sushi 0xeC6F73267ab491dE521f54C0295AE5Bf372f2e1f // Cake 0x10ED43C718714eb63d5aA57B78B54704E256024E

    pair = IDEXFactory(router.factory()).createPair(

        router.WETH(),

        address(this)

    );

    _allowedFragments[address(this)][address(router)] = uint256(-1);

    pairContract = InterfaceLP(pair);

    _totalSupply = INITIAL_FRAGMENTS_SUPPLY;

    _gonBalances[msg.sender] = TOTAL_GONS;

    _gonsPerFragment = TOTAL_GONS.div(_totalSupply);

    initialDistributionFinished = false;

    _isFeeExempt[msg.sender] = true;

    _isFeeExempt[address(this)] = true;

    _isMaxWalletExempt[pair] = true;

    _isMaxWalletExempt[DEAD] = true;

    _isMaxWalletExempt[address(this)] = true;

    _isMaxWalletExempt[msg.sender] = true;

    autoLiquidityReceiver = Wallet1;

    marketingFeeReceiver = Wallet2;

    ecosystemFeeReceiver = Wallet3;

    buyBackFeeReceiver = Wallet4;

    emit Transfer(address(0x0), msg.sender, _totalSupply);

}

function setMaster(address _master) external onlyOwner {

    master = _master;

}

function setLP(address _address) external onlyOwner {

    pairContract = InterfaceLP(_address);

    _isFeeExempt[_address];

}

function totalSupply() external view override returns (uint256) {

    return _totalSupply;

}

function balanceOf(address who) external view override returns (uint256) {

    return _gonBalances[who].div(_gonsPerFragment);

}

function transfer(address to, uint256 value)

    external

    override

    validRecipient(to)

    initialDistributionLock

    returns (bool)

{

    _transferFrom(msg.sender, to, value);

    return true;

}

function allowance(address owner_, address spender)

    external

    view

    override

    returns (uint256)

{

    return _allowedFragments[owner_][spender];

}

function transferFrom(

    address from,

    address to,

    uint256 value

) external override validRecipient(to) returns (bool) {

    if (_allowedFragments[from][msg.sender] != uint256(-1)) {

        _allowedFragments[from][msg.sender] = _allowedFragments[from][

            msg.sender

        ].sub(value, "Insufficient Allowance");

    }

    _transferFrom(from, to, value);

    return true;

}

function _transferFrom(

    address sender,

    address recipient,

    uint256 amount

) internal returns (bool) {

    if (inSwap) {

        return _basicTransfer(sender, recipient, amount);

    }

    uint256 gonAmount = amount.mul(_gonsPerFragment);

    if (sender != owner() && !_isMaxWalletExempt[recipient]) {

        uint256 heldGonBalance = _gonBalances[recipient];

        require(

            (heldGonBalance + gonAmount) <= gonMaxWallet,

            "Total Holding is currently limited, you can not buy that much."

        );

    }

    if (shouldSwapBack()) {

        swapBack();

    }

    _gonBalances[sender] = _gonBalances[sender].sub(gonAmount);

    uint256 gonAmountReceived = shouldTakeFee(sender)

        ? takeFee(sender, gonAmount)

        : gonAmount;

    _gonBalances[recipient] = _gonBalances[recipient].add(

        gonAmountReceived

    );

    emit Transfer(

        sender,

        recipient,

        gonAmountReceived.div(_gonsPerFragment)

    );

    return true;

}

function _basicTransfer(

    address from,

    address to,

    uint256 amount

) internal returns (bool) {

    uint256 gonAmount = amount.mul(_gonsPerFragment);

    _gonBalances[from] = _gonBalances[from].sub(gonAmount);

    _gonBalances[to] = _gonBalances[to].add(gonAmount);

    return true;

}

function takeFee(address sender, uint256 gonAmount)

    internal

    returns (uint256)

{

    uint256 feeAmount = gonAmount.mul(totalFee).div(feeDenominator);

    _gonBalances[address(this)] = _gonBalances[address(this)].add(

        feeAmount

    );

    emit Transfer(sender, address(this), feeAmount.div(_gonsPerFragment));

    return gonAmount.sub(feeAmount);

}

function swapBack() internal swapping {

    uint256 dynamicLiquidityFee = isOverLiquified(

        targetLiquidity,

        targetLiquidityDenominator

    )

        ? 0

        : liquidityFee;

    uint256 contractTokenBalance = _gonBalances[address(this)].div(

        _gonsPerFragment

    );

    uint256 amountToLiquify = contractTokenBalance

        .mul(dynamicLiquidityFee)

        .div(totalFee)

        .div(2);

    uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

    address[] memory path = new address[](2);

    path[0] = address(this);

    path[1] = router.WETH();

    uint256 balanceBefore = address(this).balance;

    router.swapExactTokensForETHSupportingFeeOnTransferTokens(

        amountToSwap,

        0,

        path,

        address(this),

        block.timestamp

    );

    uint256 amountETH = address(this).balance.sub(balanceBefore);

    uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));

    uint256 amountETHLiquidity = amountETH

        .mul(dynamicLiquidityFee)

        .div(totalETHFee)

        .div(2);

    uint256 amountETHBuyBack = amountETH.mul(buyBackFee).div(totalETHFee);

    uint256 amountETHMarketing = amountETH.mul(marketingFee).div(

        totalETHFee

    );

    uint256 amountETHEco = amountETH.mul(ecosystemFee).div(totalETHFee);

    (bool success, ) = payable(marketingFeeReceiver).call{

        value: amountETHMarketing,

        gas: 30000

    }("");

    (success, ) = payable(buyBackFeeReceiver).call{

        value: amountETHBuyBack,

        gas: 30000

    }("");

    (success, ) = payable(ecosystemFeeReceiver).call{

        value: amountETHEco,

        gas: 30000

    }("");

    success = false;

    if (amountToLiquify > 0) {

        router.addLiquidityETH{value: amountETHLiquidity}(

            address(this),

            amountToLiquify,

            0,

            0,

            autoLiquidityReceiver,

            block.timestamp

        );

    }

}

function approve(address spender, uint256 value)

    external

    override

    initialDistributionLock

    returns (bool)

{

    _allowedFragments[msg.sender][spender] = value;

    emit Approval(msg.sender, spender, value);

    return true;

}

function increaseAllowance(address spender, uint256 addedValue)

    external

    initialDistributionLock

    returns (bool)

{

    _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][

        spender

    ].add(addedValue);

    emit Approval(

        msg.sender,

        spender,

        _allowedFragments[msg.sender][spender]

    );

    return true;

}

function decreaseAllowance(address spender, uint256 subtractedValue)

    external

    initialDistributionLock

    returns (bool)

{

    uint256 oldValue = _allowedFragments[msg.sender][spender];

    if (subtractedValue >= oldValue) {

        _allowedFragments[msg.sender][spender] = 0;

    } else {

        _allowedFragments[msg.sender][spender] = oldValue.sub(

            subtractedValue

        );

    }

    emit Approval(

        msg.sender,

        spender,

        _allowedFragments[msg.sender][spender]

    );

    return true;

}

function setInitialDistributionFinished() external onlyOwner {

    initialDistributionFinished = true;

}

function enableTransfer(address _addr) external onlyOwner {

    allowTransfer[_addr] = true;

}

function setFeeExempt(address _addr) external onlyOwner {

    _isFeeExempt[_addr] = true;

}

function checkFeeExempt(address _addr) external view returns (bool) {

    return _isFeeExempt[_addr];

}

function setMaxWalletExempt(address _addr) external onlyOwner {

    _isMaxWalletExempt[_addr] = true;

}

function checkMaxWalletExempt(address _addr) external view returns (bool) {

    return _isMaxWalletExempt[_addr];

}

function setMaxWalletToken(uint256 _num, uint256 _denom)

    external

    onlyOwner

{

    gonMaxWallet = TOTAL_GONS.div(_denom).mul(_num);

}

function checkMaxWalletToken() external view returns (uint256) {

    return gonMaxWallet.div(_gonsPerFragment);

}

function shouldTakeFee(address from) internal view returns (bool) {

    return !_isFeeExempt[from];

}

function shouldSwapBack() internal view returns (bool) {

    return

        msg.sender != pair &&

        !inSwap &&

        swapEnabled &&

        _gonBalances[address(this)] >= gonSwapThreshold;

}

function setSwapBackSettings(

    bool _enabled,

    uint256 _num,

    uint256 _denom

) external onlyOwner {

    swapEnabled = _enabled;

    gonSwapThreshold = TOTAL_GONS.div(_denom).mul(_num);

}

function setTargetLiquidity(uint256 target, uint256 accuracy) external onlyOwner {

    targetLiquidity = target;

    targetLiquidityDenominator = accuracy;

}

function isNotInSwap() external view returns (bool) {

    return !inSwap;

}

function checkSwapThreshold() external view returns (uint256) {

    return gonSwapThreshold.div(_gonsPerFragment);

}

function manualSync() external {

    InterfaceLP(pair).sync();

}

function setFees(

    uint256 _ecosystemFee,

    uint256 _liquidityFee,

    uint256 _buyBackFee,

    uint256 _marketingFee,

    uint256 _feeDenominator

) external onlyOwner {

    ecosystemFee = _ecosystemFee;

    liquidityFee = _liquidityFee;

    buyBackFee = _buyBackFee;

    marketingFee = _marketingFee;

    totalFee = ecosystemFee.add(liquidityFee).add(marketingFee).add(buyBackFee);

    feeDenominator = _feeDenominator;

    require(totalFee < feeDenominator / 4);

}

function setFeeReceivers(

    address _autoLiquidityReceiver,

    address _ecosystemFeeReceiver,

    address _marketingFeeReceiver,

    address _buyBackFeeReceiver

) external onlyOwner {

    autoLiquidityReceiver = _autoLiquidityReceiver;

    ecosystemFeeReceiver = _ecosystemFeeReceiver;

    marketingFeeReceiver = _marketingFeeReceiver;

    buyBackFeeReceiver = _buyBackFeeReceiver;

}

function rescueToken(address tokenAddress, uint256 tokens)

    public

    onlyOwner

    returns (bool success)

{

    return ERC20Detailed(tokenAddress).transfer(msg.sender, tokens);

}

function clearStuckBalance(uint256 amountPercentage, address adr) external onlyOwner {

    uint256 amountETH = address(this).balance;

    payable(adr).transfer(

        (amountETH * amountPercentage) / 100

    );

}

function transferToAddressETH(address payable recipient, uint256 amount)

    private

{

    recipient.transfer(amount);

}

function getCirculatingSupply() public view returns (uint256) {

    return

        (TOTAL_GONS.sub(_gonBalances[DEAD]).sub(_gonBalances[ZERO])).div(

            _gonsPerFragment

        );

}

function sendPresale(address[] calldata recipients, uint256[] calldata values)

    external

    onlyOwner

{

  for (uint256 i = 0; i < recipients.length; i++) {

    _transferFrom(msg.sender, recipients[i], values[i]);

  }

}

function getLiquidityBacking(uint256 accuracy)

    public

    view

    returns (uint256)

{

    uint256 liquidityBalance = _gonBalances[pair].div(_gonsPerFragment);

    return

        accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply());

}

function isOverLiquified(uint256 target, uint256 accuracy)

    public

    view

    returns (bool)

{

    return getLiquidityBacking(accuracy) > target;

}

receive() external payable {}

}