abstract contract LockedERC20 is ERC20Burnable {
    // @dev the transfer method burns the locked tokens and sends
    // an equivalent amount of GeoTokens to the desired address
    function transfer(address,uint) public override returns (bool) {
        revert("Disallowed method");
    }

    function approve(address , uint256 ) public virtual override returns (bool) {
        revert("Disallowed method");
    }

    function transferFrom(address,address,uint256 ) public override returns (bool) {
        revert("Disallowed method");
    }

    function increaseAllowance(address,uint256) public override returns (bool) {
        revert("Disallowed method");
    }

    function decreaseAllowance(address,uint256) public override returns (bool) {
        revert("Disallowed method");
    }

    function burn(uint256) public override {
        revert("Disallowed method");
    }

    function burnFrom(address,uint256) public override {
        revert("Disallowed method");
    }
}
function transfer(address,uint) public override returns (bool) {
    revert("Disallowed method");
}

// @dev the transfer method burns the locked tokens and sends
// an equivalent amount of GeoTokens to the desired address