def _canonical_type(name):
 if (name == 'int'):
  return 'int256'
 if (name == 'uint'):
  return 'uint256'
 if (name == 'fixed'):
  return 'fixed128x128'
 if (name == 'ufixed'):
  return 'ufixed128x128'
 if name.startswith('int['):
  return ('int256' + name[3:])
 if name.startswith('uint['):
  return ('uint256' + name[4:])
 if name.startswith('fixed['):
  return ('fixed128x128' + name[5:])
 if name.startswith('ufixed['):
  return ('ufixed128x128' + name[6:])
 return name

def _canonical_type ( name ) : if ( name == 'int' ) : return 'int256' if ( name == 'uint' ) : return 'uint256' if ( name == 'fixed' ) : return 'fixed128x128' if ( name == 'ufixed' ) : return 'ufixed128x128' if name . startswith ( 'int[' ) : return ( 'int256' + name [ 3 : ] ) if name . startswith ( 'uint[' ) : return ( 'uint256' + name [ 4 : ] ) if name . startswith ( 'fixed[' ) : return ( 'fixed128x128' + name [ 5 : ] ) if name . startswith ( 'ufixed[' ) : return ( 'ufixed128x128' + name [ 6 : ] ) return name
replace aliases to the corresponding type to compute the ids .