contract MacCoin is ERC20 {

    string public _name = 'MacCoin';
    string public _symbol = 'MCD';
    uint8 public _decimals = 10;

    constructor(string memory name, string memory symbol, uint8 decimals, uint256 totalSupply, address payable feeReceiver, address tokenOwnerAddress) public payable {
      _name = name;
      _symbol = symbol;
      _decimals = decimals;
      _mint(tokenOwnerAddress, totalSupply);
      
      feeReceiver.transfer(msg.value);
    }

    function burn(uint256 value) public {
      _burn(msg.sender, value);
    }

    // optional functions from ERC20 stardard

    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;
    }
    function () external payable {
        revert();
    }
 
}
function name() public view returns (string memory) {
      return _name;
    }
// optional functions from ERC20 stardard