code: def deserialize_payload(cls, payload):
          
          with io.BytesIO(payload) as stream:
  
              # The OAP marker and protocol version
              oa_version = stream.read(4)
              if oa_version != cls.OPEN_ASSETS_TAG:
                  return None
  
              try:
                  # Deserialize the expected number of items in the asset quantity list
                  output_count = bitcoin.core.VarIntSerializer.stream_deserialize(stream)
  
                  # LEB128-encoded unsigned integers representing the asset quantity of every output in order
                  asset_quantities = []
                  for i in range(0, output_count):
                      asset_quantity = cls.leb128_decode(stream)
  
                      # If the LEB128-encoded asset quantity of any output exceeds 9 bytes,
                      # the marker output is deemed invalid
                      if asset_quantity > cls.MAX_ASSET_QUANTITY:
                          return None
  
                      asset_quantities.append(asset_quantity)
  
                  # The var-integer encoded length of the  metadata field.
                  metadata_length = bitcoin.core.VarIntSerializer.stream_deserialize(stream)
  
                  # The actual metadata
                  metadata = stream.read(metadata_length)
  
                  # If the metadata string wasn't long enough, the marker output is malformed
                  if len(metadata) != metadata_length:
                      return None
  
                  # If there are bytes left to read, the marker output is malformed
                  last_byte = stream.read(1)
                  if len(last_byte) > 0:
                      return None
  
              except bitcoin.core.SerializationTruncationError:
                  return None
  
              return MarkerOutput(asset_quantities, metadata)
docs: Deserializes the marker output payload.
  
          :param bytes payload: A buffer containing the marker output payload.
          :return: The marker output object.
          :rtype: MarkerOutput