contract ERC20 {
	// these functions aren't abstract since the compiler emits automatically generated getter functions as external

	function totalSupply() public view returns (uint256);
	function balanceOf(address who) public view returns (uint256);
	function transfer(address to, uint256 value) public returns (bool);
	event Transfer(address indexed from, address indexed to, uint256 value);

	function allowance(address owner, address spender) public view returns (uint256);
	function transferFrom(address from, address to, uint256 value) public returns (bool);
	function approve(address spender, uint256 value) public returns (bool);
	event Approval(address indexed owner, address indexed spender, uint256 value);

}
/**
 *Standard ERC20 Token interface
 */
function totalSupply() public view returns (uint256);

// these functions aren't abstract since the compiler emits automatically generated getter functions as external