code: def parse_path(nstr):
      
      if not nstr:
          return []
  
      n = nstr.split('/')
  
      # m/a/b/c => a/b/c
      if n[0] == 'm':
          n = n[1:]
  
      # coin_name/a/b/c => 44'/SLIP44_constant'/a/b/c
      #if n[0] in slip44:
      #    coin_id = slip44[n[0]]
      #    n[0:1] = ['44h', '{}h'.format(coin_id)]
  
      def str_to_harden(x):
          if x.startswith('-'):
              return H_(abs(int(x)))
          elif x.endswith(('h', "'")):
              return H_(int(x[:-1]))
          else:
              return int(x)
  
      try:
          return list(str_to_harden(x) for x in n)
      except Exception:
          raise ValueError('Invalid BIP32 path', nstr)
docs: Convert BIP32 path string to list of uint32 integers with hardened flags.
      Several conventions are supported to set the hardened flag: -1, 1', 1h
      e.g.: "0/1h/1" -> [0, 0x80000001, 1]
      :param nstr: path string
      :return: list of integers