code: def get_input_location(location):
      
      try:
          if location.SUBCLASS_OF_ID == 0x1523d462:
              return None, location  # crc32(b'InputFileLocation'):
      except AttributeError:
          _raise_cast_fail(location, 'InputFileLocation')
  
      if isinstance(location, types.Message):
          location = location.media
  
      if isinstance(location, types.MessageMediaDocument):
          location = location.document
      elif isinstance(location, types.MessageMediaPhoto):
          location = location.photo
  
      if isinstance(location, types.Document):
          return (location.dc_id, types.InputDocumentFileLocation(
              id=location.id,
              access_hash=location.access_hash,
              file_reference=location.file_reference,
              thumb_size=''  # Presumably to download one of its thumbnails
          ))
      elif isinstance(location, types.Photo):
          return (location.dc_id, types.InputPhotoFileLocation(
              id=location.id,
              access_hash=location.access_hash,
              file_reference=location.file_reference,
              thumb_size=location.sizes[-1].type
          ))
  
      if isinstance(location, types.FileLocationToBeDeprecated):
          raise TypeError('Unavailable location cannot be used as input')
  
      _raise_cast_fail(location, 'InputFileLocation')
docs: Similar to :meth:`get_input_peer`, but for input messages.
  
      Note that this returns a tuple ``(dc_id, location)``, the
      ``dc_id`` being present if known.