<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-vcon-mimi-messages-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="VCON for MIMI">VCON for MIMI Messages</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-vcon-mimi-messages-00"/>
    <author fullname="Rohan Mahy">
      <organization>Rohan Mahy Consulting Services</organization>
      <address>
        <email>rohan.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="19"/>
    <area>Applications and Real-Time</area>
    <workgroup>Virtualized Conversations</workgroup>
    <keyword>instant messaging</keyword>
    <keyword>message history</keyword>
    <abstract>
      <?line 36?>

<t>This document describes extensions to the Virtualized Conversation (VCON) syntax for instant messaging systems using the More Instant Messaging Interoperability (MIMI) content format.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://rohanmahy.github.io/vcon-mimi-messages/draft-ietf-vcon-mimi-messages.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-vcon-mimi-messages/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Virtualized Conversations Working Group mailing list (<eref target="mailto:vcon@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/vcon/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/vcon/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/rohanmahy/vcon-mimi-messages"/>.</t>
    </note>
  </front>
  <middle>
    <?line 41?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>VCON <xref target="I-D.ietf-vcon-vcon-core"/> is a format for recording and transmitting conversations. MIMI content <xref target="I-D.ietf-mimi-content"/> is a format for conveying Instant Messages in an interoperable way when end-to-end encrypted.
This document extends VCON, describing a way to translate a set of MIMI messages in a conversation or part of a conversation into a VCON.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The examples in this document may contain base64url encoded values that have extra whitespace added for readability, and to conform with Internet-Draft formatting conventions. That whitespace should be ignored.</t>
      <t>Some metadata about a MIMI content message is conveyed in the encryption protocol Messaging Layer Security (MLS) <xref target="RFC9420"/> or in the MIMI protocol <xref target="I-D.ietf-mimi-protocol"/>.</t>
      <t>For example, the sender, recipient, date, and message ID are not mandatory fields in a MIMI content message.
The recipient is the MIMI room ID associated with the corresponding MLS group.
The participants in the group are calculated from the MLS group state and MIMI participant list during the MLS "epoch" in which the message was sent.
The sender is conveyed in MLS.
The MIMI "Hub" received timestamp is conveyed in the MIMI protocol.
The MIMI content message ID is constructed by hashing fields from the MIMI content, and the sender and room URIs (see <xref section="3.3" sectionFormat="of" target="I-D.ietf-mimi-content"/>).</t>
      <t>The names of the parties comes from the participant list defined in <xref section="7.5" sectionFormat="of" target="I-D.ietf-mimi-protocol"/>, while the room metadata described in this document comes from {Section 7.6 of !I-D.ietf-mimi-protocol}}.</t>
      <t>When message franking is enabled, as defined in <xref section="5.4.1" sectionFormat="of" target="I-D.ietf-mimi-protocol"/>, the <tt>franking_tag</tt> is conveyed in the MLS message's Additional Authenticated Data (AAD) field, while the MIMI protocol conveys the <tt>Frank</tt> structure generated by the MIMI Hub.</t>
    </section>
    <section anchor="syntax">
      <name>Syntax</name>
      <t>A MIMI conversation (or portion thereof) is represented in VCON with
a mandatory list of parties and dialogs, a new top-level room object,
and optionally attachment objects.</t>
      <section anchor="room-obj">
        <name>Room information</name>
        <t>This document adds a mandatory, top-level <tt>room</tt> object. It contains metadata
known about the room at the start of the VCON period.</t>
        <ul spacing="normal">
          <li>
            <t><tt>id</tt> is the MIMI room ID URL. It is mandatory.</t>
          </li>
          <li>
            <t><tt>name</tt> is the textual name of the room. It is optional.</t>
          </li>
          <li>
            <t><tt>avatar</tt> is a URL referencing the room image. It is optional.</t>
          </li>
          <li>
            <t><tt>subject</tt> is the room subject. It is optional.</t>
          </li>
          <li>
            <t><tt>mood</tt> is the room mood. It is optional</t>
          </li>
          <li>
            <t><tt>description</tt> is an array of room_description objects. It is optional. Each object can contain:  </t>
            <ul spacing="normal">
              <li>
                <t>a <tt>type</tt>- a media type or an empty string. It is optional. It's default value is <tt>text/plain;charset=UTF-8</tt>.</t>
              </li>
              <li>
                <t>a <tt>lang</tt> - a <tt>Language-tag</tt> as defined by <xref target="RFC5646"/>. It is optional.</t>
              </li>
              <li>
                <t>a <tt>content</tt> - if the <tt>type</tt> begins with "text/" or is empty, the content the is UTF-8 text description of the room. Otherwise it is the base64url encoding of whatever type is described. The <tt>content</tt> field is mandatory in a room_description object.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="parties-obj">
        <name>Parties</name>
        <t>The <tt>parties</tt> array <bcp14>MUST</bcp14> contain all the participants that initiated any event in the dialog events array.
It <bcp14>SHOULD</bcp14> contain all the participants that were in the participant list at any point in time during the period represented by the VCON.
For example, in very large groups, it may not be necessary to include every participant that took no action.
The first party in the array is the MIMI room URI.</t>
        <t>This document adds a new party_object_type: <tt>im_uri</tt>. It is mandatory.
The <tt>name</tt> field is optional. The <tt>role</tt> indicates the MIMI role and is
optional. The document also adds a <tt>thumbprint</tt> party_object_type, which is
the JWK thumbprint of the public key of the party. If there are multiple
parties (clients) with the same <tt>im_uri</tt> then the thumbprint is required,
otherwise it is optional.</t>
      </section>
      <section anchor="the-dialog-object-text-type">
        <name>The dialog object (text type)</name>
        <t>The following section refers to changes and additions to the dialog object when the <tt>type</tt> field is "text".</t>
        <section anchor="text-type">
          <name>Semantics of the existing fields for text</name>
          <t>The dialog object consists of an array of instant messages of type "text".
The start time is set to the hub received timestamp when available.
The duration is zero.
The originator is set to the parties index of the sender of the message.
The message_id is the base64url encoding of the MIMI content message ID. It is mandatory.</t>
          <t>The first MIMI message represented in a MIMI VCON should contain the complete list of parties who were participants in the room at that time.
For subsequent messages, a parties array consisting of index zero, indicates the recipients of the message are the active participants of the room.
Changes to the roster can be tracked if <tt>party_history</tt> is present for those changes (see <xref target="party-history"/>).</t>
        </section>
        <section anchor="dialog-fields">
          <name>Extensions to the dialog object for text</name>
          <t>The parties array consists of the party indexes of those who were active participants when the message was sent, or zero to indicate the current membership of the room.</t>
          <ul spacing="normal">
            <li>
              <t><tt>salt</tt> is the base64url encoding of the MIMI content salt. It is mandatory.</t>
            </li>
            <li>
              <t><tt>replaces</tt> is the base64url encoding of the MIMI content message_id of the message this message replaces. It is optional if empty.</t>
            </li>
            <li>
              <t><tt>topic_id</tt> is the base64url encoding of the MIMI topic_id. It is optional if empty.</t>
            </li>
            <li>
              <t><tt>expires</tt> is present if not null in MIMI. It contains a non-extensible object with the following items:  </t>
              <ul spacing="normal">
                <li>
                  <t><tt>relative</tt> is a boolean that is true if the time is expressed relative to the recipient read time, and false if it is expressed as an absolute date/time. It is mandatory when <tt>expires</tt> is present.</t>
                </li>
                <li>
                  <t><tt>relative_time</tt> is an integer number of seconds. If <tt>relative</tt> is true, once the message has been read, the client is expected to delete the message after <tt>relative_time</tt> seconds. It is mandatory if <tt>relative</tt> is true and forbidden otherwise.</t>
                </li>
                <li>
                  <t><tt>absolute_time</tt> is the expiration date/time of the message expressed as a VCON (text) date_type. It is mandatory if <tt>relative</tt> is false and forbidden otherwise.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><tt>in_reply_to</tt> is the base64url encoding of the MIMI content message_id of the message to which this message is replying (or reacting). It is optional if empty.</t>
            </li>
            <li>
              <t><tt>mimi_extensions</tt> is a base64 encoding of the CBOR MIMI content extensions map or null. It is optional if not present in the MIMI content.</t>
            </li>
            <li>
              <t><tt>franking_tag</tt> is a base64url encoding of the MIMI <tt>franking_tag</tt>, or null.  It is optional if not present.</t>
            </li>
            <li>
              <t><tt>frank</tt> is a base64url encoding of the MIMI protocol <tt>Frank</tt> TLS struct, or null. It is optional if not present.</t>
            </li>
            <li>
              <t><tt>disposition</tt> - optional if set to the default value ("render"). Refers to the overall disposition of the entire message.</t>
            </li>
            <li>
              <t><tt>language</tt> - optional if absent. Refers to the language of the entire message.</t>
            </li>
          </ul>
          <t>VCON typically expresses message content using the <tt>body</tt>, <tt>encoding</tt>, and <tt>mediatype</tt> fields.
In order to preserve this convention we use these fields directly for a MIMI SinglePart structure, but use new <tt>multi_part</tt> and <tt>external_part</tt> objects for the MultiPart and ExternalPart MIMI structures, respectively.</t>
          <t>If the message contains a single MIMI ExternalPart, the dialog object contains an <tt>external_part</tt> object.
If the message contains multiple parts (a MIMI MultiPart), the dialog object contains a <tt>multi_part</tt> object.</t>
          <t>If there is only a single part in the message, there is no Part object.
The part has a virtual <tt>part_index</tt> of 0, which is not transmitted.</t>
          <t>A MIMI message with a NullPart has no <tt>body</tt>, <tt>encoding</tt>, or <tt>mediatype</tt> fields.</t>
        </section>
        <section anchor="externalpart-obj">
          <name>external_part objects</name>
          <t>The <tt>external_part</tt> object can contain the following fields with similar meanings to those in MIMI content, with exceptions noted below.</t>
          <ul spacing="normal">
            <li>
              <t><tt>mediatype</tt> is the value of the <tt>contentType</tt> in MIMI. It is mandatory if present in the MIMI message and recommended otherwise. No <tt>mediatype</tt> is present in the dialog object.</t>
            </li>
            <li>
              <t><tt>url</tt> is the URL of the content as a text string. It is mandatory</t>
            </li>
            <li>
              <t><tt>expires</tt> is a date_type (text) date. It is optional if not present.</t>
            </li>
            <li>
              <t><tt>size</tt> is an integer number of octets. It is optional if not present.</t>
            </li>
            <li>
              <t><tt>description</tt> is a text string. It is optional if not present.</t>
            </li>
            <li>
              <t><tt>filename</tt> is a text string. It is optional if not present.</t>
            </li>
            <li>
              <t><tt>content_hash</tt> is the base64url encoded string of the MIMI <tt>contentHash</tt> of the ExternalPart, prefixed with the name of the hash algorithm corresponding to <tt>hashAlg</tt> and a colon (for example "sha256:"). <tt>content_hash</tt> is  mandatory if it was included in the MIMI content ExternalPart, and omitted otherwise.</t>
            </li>
          </ul>
          <t>In addition, the following fields are unique to MIMI VCON.</t>
          <ul spacing="normal">
            <li>
              <t><tt>cached</tt> is a boolean. It is mandatory if it is true, which means that a
copy of the external content is available in a vcon attachment object
(see <xref target="attachments"/>). If <tt>cache</tt> is true and no <tt>content_hash</tt> is present, a new content hash is calculated for the attachment and placed the <tt>cache_ref</tt> field (which can only be present in this case).</t>
            </li>
          </ul>
          <t>external_part has several fields for the decryption of the
referenced content.
If it is not necessary to reconstruct the original MIMI content (for example to allow later verification of the message ID), these fields can be omitted once the content has been downloaded, decrypted, verified, and included in the VCON attachments array. Otherwise they are mandatory if present in the MIMI content.
All of these fields are base64url encoded strings.</t>
          <ul spacing="normal">
            <li>
              <t><tt>enc_alg</tt></t>
            </li>
            <li>
              <t><tt>key</tt></t>
            </li>
            <li>
              <t><tt>nonce</tt></t>
            </li>
            <li>
              <t><tt>aad</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="multipart-obj">
          <name>multi_part objects</name>
          <t>A <tt>multi_part</tt> object is designed to carry multiple items, as with the MultiPart structure in MIMI content or the top level multipart media types. It contains the following fields.</t>
          <ul spacing="normal">
            <li>
              <t><tt>part_semantics</tt> is one of "chooseOne", "singleUnit", or "processAll". It is mandatory.</t>
            </li>
            <li>
              <t><tt>parts</tt> is an array of <tt>Part</tt> objects. It is mandatory in a <tt>multi_part</tt> object.</t>
            </li>
          </ul>
        </section>
        <section anchor="part-obj">
          <name>Part objects</name>
          <t>The following fields can be in a Part object. They have the same meaning as their MIMI content counterparts.</t>
          <ul spacing="normal">
            <li>
              <t><tt>disposition</tt> optional if set to the default value ("render"). It refers to a specific part.</t>
            </li>
            <li>
              <t><tt>language</tt> - optional if absent. It refers to a specific part.</t>
            </li>
            <li>
              <t><tt>part_index</tt> is an unsigned integer. It is mandatory.</t>
            </li>
            <li>
              <t><tt>cardinality</tt> is one of "nullpart", "single", "external", or "multi". mandatory.</t>
            </li>
          </ul>
          <t>If cardinality is "single", then <tt>body</tt>, <tt>encoding</tt>, and <tt>mediatype</tt> fields are included directly in the Part object.
If cardinality is  "external" or "multi", an <tt>external_part</tt> or <tt>multi_part</tt> object is included, respectively.</t>
        </section>
      </section>
      <section anchor="party-history">
        <name>Changes to the parties</name>
        <t>The <tt>party_history</tt> object can be interleaved with text objects in the dialog objects array. It indicates when changes have been made to the participants represented by party index zero, as well as properties of individual parties (such as their role or name).</t>
        <t>The <tt>party_history</tt> object contains the following fields.</t>
        <ul spacing="normal">
          <li>
            <t><tt>party</tt> is the party index of the modified party. It is mandatory.</t>
          </li>
          <li>
            <t><tt>originator</tt> is the party that originated the change. It is optional.</t>
          </li>
          <li>
            <t><tt>time</tt> is the time that the change was effected</t>
          </li>
          <li>
            <t><tt>event</tt> is the type of change. It is mandatory and for MIMI VCONs can be one of the following new event types:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>add</tt>: user added by someone else</t>
              </li>
              <li>
                <t><tt>self_add</tt>: user added herself directly</t>
              </li>
              <li>
                <t><tt>leave</tt>: user leaves of their own accord</t>
              </li>
              <li>
                <t><tt>remove</tt>: user is removed by another user</t>
              </li>
              <li>
                <t><tt>ban</tt>: user is banned from the group</t>
              </li>
              <li>
                <t><tt>update</tt>: user or client is updated</t>
              </li>
              <li>
                <t><tt>room</tt>: room metadata was updated</t>
              </li>
            </ul>
          </li>
          <li>
            <t><tt>name</tt> is the new name of the user. It is only permitted for an update event.</t>
          </li>
          <li>
            <t><tt>role</tt> is the new role assigned to the user. It is only permitted for an update event.</t>
          </li>
          <li>
            <t><tt>room</tt> is a new room object containing the new room metadata. It is only permitted for an event of type <tt>room</tt>.</t>
          </li>
        </ul>
        <t>The updated room object can contain anything in the top-level <tt>room</tt> object except for the <tt>id</tt> field (which <bcp14>MUST NOT</bcp14> be present).
When the room metadata is changed, the <tt>party</tt> field is set to 0.</t>
      </section>
      <section anchor="attachments">
        <name>Attachments</name>
        <t>An attachment consists of the following fields:</t>
        <ul spacing="normal">
          <li>
            <t><tt>start</tt>: is the time when the attachment was downloaded. It is mandatory.</t>
          </li>
          <li>
            <t><tt>party</tt>: is the party that downloaded the attachment. It is mandatory.</t>
          </li>
          <li>
            <t><tt>content_hash</tt>: is the base64url encoded hash using the hash name prefixed with a colon before the hash (ex: "sha256:"). It is mandatory.</t>
          </li>
          <li>
            <t><tt>dialog_object_ref</tt> is a string consisting of: "mid:" (representing the message ID URI), the message_id of the message in the dialog object, a colon, the part_index of the Part (or "0" if the ExternalPart is at the top level), and the string "@anon.invalid"</t>
          </li>
        </ul>
        <t>The <tt>mediatype</tt>, <tt>filename</tt>, <tt>encoding</tt>, and <tt>body</tt> fields are as they are defined in VCON and are all mandatory.</t>
      </section>
      <section anchor="tombstone-type">
        <name>Message tombstones</name>
        <t>When a message has been deleted/retracted, or it expires, it can be valuable to present a record that such a message was previously present, by generating a dialog object with the following fields (which are all mandatory):</t>
        <ul spacing="normal">
          <li>
            <t><tt>type</tt> is "tombstone"</t>
          </li>
          <li>
            <t><tt>start</tt> is the time the tombstone was generated</t>
          </li>
          <li>
            <t><tt>message_id</tt> is the message ID of the message.</t>
          </li>
          <li>
            <t><tt>status</tt> is the status of the former message, either "retracted" or "expired".</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="mimi-examples-as-a-vcon">
        <name>MIMI examples as a VCON</name>
        <t>The example vcon consists of the example messages from Section 5 of the MIMI content specification plus a <tt>party_history</tt> object adding two new participants, and a single multipart message at the end.</t>
        <artwork><![CDATA[
{
  "vcon": "0.0.1",
  "room": {
    "id": "mimi://example.com/r/engineering_team",
    "name": "Engineering Team",
    "avatar": "https://example.com/images/tHMqLMAkmCzNmweL",
    "subject": None,
    "mood": None,
    "description": [
        {"type":"", "lang":"en", "content":"Engineering Team Internal Chat"},
        {  "type":"",
          "lang":"fr",
          "content":"Chat de l'équipe interne des ingénieurs"
        }
    ]
  }
  "parties": [
    {
      "im_uri": "mimi://example.com/r/engineering_team",
    },
    {
      "im_uri": "mimi://example.com/u/alice-smith",
      "name": "Alice Smith",
      "role": "moderator",
      "thumbprint": "TODOFIXDZXCog_FfQp-xLemZkD5GKB9H7Z-Y41O4jEw"
    },
    {
      "im_uri": "mimi://example.com/u/bob-jones",
      "name": "Bob Jones",
      "role": "member",
      "thumbprint": "TODOFIXYUFE7bV9pXAHZHi5bwSWzLJqjncevs9aLKDg"
    },
    {
      "im_uri": "mimi://example.com/u/cathy-washington",
      "name": "Cathy Washington",
      "role": "member",
      "thumbprint": "TODOFIXzH3EeOGbI0-oiDGTXlgKmkMzQyQ2W_Y-TB1U"
    },
    {
      "im_uri": "mimi://example.com/u/doug-king",
      "name": "Doug King",
      "role": "member",
      "thumbprint": "TODOFIX3fdpORnHwncbdOS5XieH-z1m5r61u14WyNkj"
    },
    {
      "im_uri": "mimi://example.com/u/liz-roberts",
      "name": "Elizabeth Roberts",
      "role": "member",
      "thumbprint": "TODOFIX7qR7oFriyKfKgIJ43ZdANoObICqH0kN9g82J"
    }
  ],
  "dialog": [
    {
      "type": "text",
      "start": "2022-02-08T22:13:45.019-00:00",
      "duration": 0,
      "parties": [
        1, 2, 3
      ],
      "franking_tag": null,
      "frank": null,
      "originator": 1,
      "salt": "PC16IkqDbGRiffzjeyPKIg"
      "message_id": "AbAIRGcnPMQ9bw6-rBPrhCKcT__o9sNZTJBfR3eeWnk",
      "mimi_extensions": "oQGiAXgrbWltaTovL2h1Yi5leGFtcGxlL3IvU
          mwzM0ZXTENZV093eEhyWW5wV0RRZwJ4GG1pbWk6Ly9iLmV4YW1wbG
          UvdS9hbGljZQ",
      "mimetype": "text/markdown;variant=GFM",
      "encoding": "none"
      "body":
        "Hi everyone, we just shipped release 2.0. __Good work__!",
    },

    {
      "type": "text",
      "start": "2022-02-08T22:13:57.492-00:00",
      "duration": 0,
      "parties": [
        0
      ],
      "originator": 2,
      "salt": "PVeWNQrjJej4AjhqkGlSkw"
      "message_id": "AaQZrvThbUPPwGwoI17Pvp-uvHQNAUjnyiCyIVCTCDY",
      "in_reply_to": "AbAIRGcnPMQ9bw6-rBPrhCKcT__o9sNZTJBfR3eeWnk",
      "mimetype": "text/markdown;variant=GFM",
      "encoding": "none"
      "body": "Right on! _Congratulations_ \'all!",
    },

    {
      "type": "text",
      "start": "2022-02-08T22:13:57.728-00:00",
      "duration": 0,
      "parties": [
        0
      ],
      "originator": 3,
      "salt": "lV7CoeiFmX4ALPSKOdrR0w"
      "message_id": "AbGhSoj0SA4TNr6GmHhU-Dij7IKUTUUz2NQIhXhVDtc",
      "in_reply_to": "AbAIRGcnPMQ9bw6-rBPrhCKcT__o9sNZTJBfR3eeWnk",
      "disposition": "reaction",
      "mimetype": "text/plain;charset=utf-8",
      "encoding": "none"
      "body": "❤",
    },

    {
      "type": "text",
      "start": "2022-02-08T22:14:03.008-00:00",
      "duration": 0,
      "parties": [
        0
      ],
      "originator": 3,
      "salt": "pkL5Tr0pLla5EiLUOfVDJw"
      "message_id": "rF4iS5BcJ-aFfisoFDCrnTE9pZZBGCxGCoXGJ9VXnck",
      "mimetype": "text/markdown;variant=GFM",
      "encoding": "none"
      "body":
        "Kudos to [@Alice Smith](mimi://example.com/alice-smith) for
making the release happen!",
    },

    {
      "type": "text",
      "start": "2022-02-08T22:14:08.621-00:00",
      "duration": 0,
      "parties": [
        0
      ],
      "originator": 2,
      "salt": "26QI8adeG9TDfPvh-j1Stg"
      "message_id": "-GqJXuoaJu1Xosu-N8nt6NWzA2RLmIRY0q9jf_kvWkM",
      "replaces": "AaQZrvThbUPPwGwoI17Pvp-uvHQNAUjnyiCyIVCTCDY",
      "in_reply_to": "AbAIRGcnPMQ9bw6-rBPrhCKcT__o9sNZTJBfR3eeWnk",
      "mimetype": "text/markdown;variant=GFM",
      "encoding": "none"
      "body": "Right on! _Congratulations_ y'all"
    },

    {
      "type": "text",
      "start": "2022-02-08T22:14:08.621-00:00",
      "duration": 0,
      "parties": [
        0
      ],
      "originator": 2,
      "salt": "HbkjCnTRrhn84LPT86VvYg"
      "message_id": "8cqo1B9IA6nnB63oPEnmWxIqr7uk7WvQTBgVVlD_Q2c",
      "replaces": "AaQZrvThbUPPwGwoI17Pvp-uvHQNAUjnyiCyIVCTCDY",
      "in_reply_to": "AbAIRGcnPMQ9bw6-rBPrhCKcT__o9sNZTJBfR3eeWnk"
    },
    {
      "party_history": [
        {
          "party": 4,
          "event": "add",
          "originator": 1,
          "time": "2022-02-08T22:14:09.277-00:00"
        },
        {
          "party": 5,
          "event": "add",
          "originator": 1,
          "time": "2022-02-08T22:14:09.277-00:00"
        }
      ]
    },
    {
      "type": "text",
      "start": "2022-02-08T22:14:10.389-00:00",
      "duration": 0,
      "parties": [
        0
      ],
      "originator": 3,
      "salt": "IrAeojgZcZGiQjjBbmqVhw"
      "message_id": "bYZ2NHaryq0WS2pq5IE9fMc4zltUyE6WrKJ7bNB5tMc",
      "replaces": "AaQZrvThbUPPwGwoI17Pvp-uvHQNAUjnyiCyIVCTCDY",
      "in_reply_to": "AbAIRGcnPMQ9bw6-rBPrhCKcT__o9sNZTJBfR3eeWnk",
      "disposition": "reaction"
    },

    {
      "type": "text",
      "start": "2022-02-08T22:49:06.227-00:00",
      "duration": 0,
      "parties": [
        0
      ],
      "originator": 1,
      "salt": "8xnQi9hjVw4N8cRGEm4X1A"
      "message_id": "GkblzkXJxyar0lTgkfcMQ0wo8qpbcU0MqtTg-gM1FiY",
      "expiring": {
        "relative": false,
        "expires": "2022-02-08T22:59:06.227-00:00"
      },
      "status": "expired"
    },

    {
      "type": "text",
      "start": "2022-02-08T22:53:41.134-00:00",
      "duration": 0,
      "parties": [
        0
      ],
      "originator": 2,
      "salt": "bqhJBqYaTyDmgTj-QtdZPA"
      "message_id": "Tdt8UCUl1ugSLRmuObvib_4bvu_Hz3NSwaYuy-TtET4",
      "disposition": "attachment",
      "language": "en",
      "external_part": {
        "mimetype": "video/mp4",
        "url": "https://example.com/storage/8ksB4bSrrRE.mp4",
        "size": 708234961,
        "description": "2 hours of key signing video",
        "filename": "bigfile.mp4",
        "content_hash":
            "sha256:OczZYpW_L0B1DsMSLJqL2jTRJKoj7fTUJ2jhnX70-00",
        "enc_alg": 1,
        "key": "aZISOs306M7n_3csR-J1cw",
        "nonce": "5VM0QcZI3PNmnquV6CUgxg",
        "aad": ""
      }
    },

    {
      "type": "text",
      "start": "2022-02-08T22:54:09.972-00:00",
      "duration": 0,
      "parties": [
        0
      ],
      "originator": 3,
      "salt": "dPEJAGOdZGeX6_OCp0RUzA"
      "message_id": "KgDTc29ZP4YyYmXtaYyxpZNrnigjvCjrCYuLTz19zWc",
      "disposition": "session",
      "external_part": {
        "url": "https://example.com/join/12345",
        "description": "Join the Foo 118 conference"
      }
    },
    {
      "type": "text",
      "start": "2022-02-08T22:57:14.084-00:00",
      "duration": 0,
      "parties": [
        0
      ],
      "originator": 1,
      "salt": "YSbs-8jeoXfI6Z4lQRUWQw"
      "message_id": "sD19bKRmu4mA9SHznfQOLQQzKnx1Q4mEtSNQhvzqCZw",
      "disposition": "render",
      "part_index": 0,
      "multi_part": {
        "part_semantics": "chooseOne",
        "parts": [
          {
            "disposition": "render",
            "language": "en",
            "part_index": 1,
            "mediatype": "text/markdown;variant=GFM",
            "encoding": "none"
            "body": "Hello!"
          },
          {
            "disposition": "render",
            "language": "fr",
            "part_index": 2,
            "mimetype": "text/markdown;variant=GFM",
            "encoding": "none"
            "body": "Bonjour!"
          }
        ]
      }
    },
  ]
}
]]></artwork>
      </section>
      <section anchor="mimi-vcon-with-an-attachment">
        <name>MIMI VCON with an Attachment</name>
        <t>This example vcon consists of a single message in a dialog which references
an attachment.</t>
        <artwork><![CDATA[
{
  "vcon": "0.0.1",
  "room": {
    "id": "mimi://example.com/r/engineering_team",
    "name": "Engineering Team",
  }
  "parties": [
    {
      "imUri": "mimi://example.com/r/engineering_team",
    },
    {
      "im_uri": "mimi://example.com/u/alice-smith",
      "name": "Alice Smith",
      "role": "moderator",
      "thumbprint": "TODOFIXDZXCog_FfQp-xLemZkD5GKB9H7Z-Y41O4jEw"
    },
    {
      "im_uri": "mimi://example.com/u/bob-jones",
      "name": "Bob Jones",
      "role": "member",
      "thumbprint": "TODOFIXYUFE7bV9pXAHZHi5bwSWzLJqjncevs9aLKDg"
    },
    {
      "im_uri": "mimi://example.com/u/cathy-washington",
      "name": "Cathy Washington",
      "role": "member",
      "thumbprint": "TODOFIXzH3EeOGbI0-oiDGTXlgKmkMzQyQ2W_Y-TB1U"
    }
  ],
  "dialog": [
    {
      "type": "text",
      "start": "2022-02-08T22:53:41.134-00:00",
      "duration": 0,
      "parties": [
        0, 1, 2, 3
      ],
      "originator": 1,
      "salt": "jaPfwAWReuvBdfayWkSvtQ"
      "message_id": "Tdt8UCUl1ugSLRmuObvib_4bvu_Hz3NSwaYuy-TtET4",
      "disposition": "attachment",
      "language": "en",
      "external_part": {
        "mediatype": "video/mp4",
        "url": "https://example.com/storage/8ksB4bSrrRE.mp4",
        "size": 708234961,
        "description": "2 hours of key signing video",
        "filename": "bigfile.mp4",
        "content_hash":
            "sha256:OczZYpW_L0B1DsMSLJqL2jTRJKoj7fTUJ2jhnX70-00",
        "cached": true
      }
    },
  ],
  "attachments": [
    {
      "start": "2022-02-08T22:53:41.134-00:00",
      "party": 1,
      "content_hash":
          "sha256:OczZYpW_L0B1DsMSLJqL2jTRJKoj7fTUJ2jhnX70-00",
      "dialog_object_ref":
  "mid:Tdt8UCUl1ugSLRmuObvib_4bvu_Hz3NSwaYuy-TtET4:0@anon.invalid",
      "mediatype": "video/mp4",
      "filename": "bigfile.mp4",
      "encoding": "base64url",
      "body": "Ma0hHSr0f_iUk_RSShTgtY...nSQbZEip5danJYQqsvwWQ"
    }
  ]
}
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests IANA to add following entries under the relevant registries in the vCon JSON Objects Group.</t>
      <t>IANA, please replace RFCXXXX with the number of this document.</t>
      <section anchor="vcon-object-parameter-names-registry">
        <name>vCon Object Parameter Names Registry</name>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">room</td>
              <td align="left">metadata about an instant messaging room or channel</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="room-obj"/> of RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="room-object-registry">
        <name>Room object registry</name>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">id</td>
              <td align="left">room ID</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="room-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">name</td>
              <td align="left">The human-readable name of the room</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="room-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">avatar</td>
              <td align="left">An image associated with the room</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="room-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">subject</td>
              <td align="left">The subject of the room</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="room-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">mood</td>
              <td align="left">The mood of the room</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="room-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">description</td>
              <td align="left">The description of the room</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="room-obj"/> RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="room-description-object-registry">
        <name>Room description object registry</name>
        <t>This documents creates a new Room description object registry under the vCon JSON Objects Group.
It has the following values.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">type</td>
              <td align="left">an optional media type of the description</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="room-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">lang</td>
              <td align="left">the language of the description</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="room-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">content</td>
              <td align="left">the content of the description</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="room-obj"/> RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="party-object">
        <name>Party object</name>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">im_uri</td>
              <td align="left">The URI of an instant messaging users or room</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="parties-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">role</td>
              <td align="left">The role of an instant messaging user</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="parties-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">thumbprint</td>
              <td align="left">The public key thumbprint of an instant messaging client</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="parties-obj"/> RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="dialog-type-name-registry">
        <name>Dialog Type Name Registry</name>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">tombstone</td>
              <td align="left">a placeholder for an no longer available message (ex: deleted, expired)</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="tombstone-type"/> RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="dialog-object-types">
        <name>Dialog object types</name>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">salt</td>
              <td align="left">The message salt</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="dialog-fields"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">replaces</td>
              <td align="left">The message_id of another message this message replaces</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="dialog-fields"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">expires</td>
              <td align="left">When this message expires</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="dialog-fields"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">in_reply_to</td>
              <td align="left">The message_id of another message to which this message replies or reacts</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="dialog-fields"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">mimi_extensions</td>
              <td align="left">A map of any mimi_extensions associated with this message</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="dialog-fields"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">franking_tag</td>
              <td align="left">The sender-asserted franking_tag</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="dialog-fields"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">frank</td>
              <td align="left">The frank data structure returned by the MIMI server with the message</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="dialog-fields"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">disposition</td>
              <td align="left">The disposition of the message content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="dialog-fields"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">language</td>
              <td align="left">The language of the message content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="dialog-fields"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">status</td>
              <td align="left">The status of a former message</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="tombstone-type"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">multi_part</td>
              <td align="left">A multi_part object containing the content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="multipart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">external_part</td>
              <td align="left">An external_part object referencing out-of-band content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="externalpart-object-type">
        <name>external_part object type</name>
        <t>This documents creates a new External_part object registry under the vCon JSON Objects Group.
It has the following values.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">mediatype</td>
              <td align="left">the media type of the externally referenced content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">url</td>
              <td align="left">the url of the externally referenced content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">size</td>
              <td align="left">the size in bytes of the externally referenced content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">description</td>
              <td align="left">the description of the externally referenced content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">filename</td>
              <td align="left">the filename of the externally referenced content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">content_hash</td>
              <td align="left">a representation of the MIMI contentHash and hashAlg of the externally referenced content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">cached</td>
              <td align="left">whether the referenced content is cached</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">enc_alg_</td>
              <td align="left">the encryption algorithm used to encrypt the externally referenced content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">key</td>
              <td align="left">the encryption key of the externally referenced content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">nonce</td>
              <td align="left">the encryption nonce of the externally referenced content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">aad</td>
              <td align="left">the media type of the externally referenced content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="multipart-object-type">
        <name>multi_part object type</name>
        <t>This documents creates a new Multi_part object registry under the vCon JSON Objects Group.
It has the following values.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">part_semantics</td>
              <td align="left">How multiple parts in the same multi_part object are handled</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="multipart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">parts</td>
              <td align="left">An array of part objects</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="multipart-obj"/> RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="part-object-type">
        <name>part object type</name>
        <t>This documents creates a new Part object registry under the vCon JSON Objects Group.
It has the following values.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">disposition</td>
              <td align="left">The disposition of the message part</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="part-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">language</td>
              <td align="left">The language of the message part</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="part-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">part_index</td>
              <td align="left">The relative index of the part within the message</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="part-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">cardinality</td>
              <td align="left">one of "nullpart", "single", "external", or "multi"</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="part-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">mediatype</td>
              <td align="left">The media type of the part</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="part-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">encoding</td>
              <td align="left">The encoding of the message part (as in Section 2.3.1 of <xref target="I-D.ietf-vcon-vcon-core"/>)</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="part-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">body</td>
              <td align="left">The content of the message part</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="part-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">multi_part</td>
              <td align="left">A multi_part object containing more parts of the content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="multipart-obj"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">external_part</td>
              <td align="left">An external_part object referencing out-of-band content</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="externalpart-obj"/> RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="partyhistory-object-type">
        <name>party_history object type</name>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">originator</td>
              <td align="left">which party index initiated this party_history event</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="party-history"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">name</td>
              <td align="left">the name of the party that initiated this party_history event</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="party-history"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">role</td>
              <td align="left">the role of the party that initiated this party_history event</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="party-history"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">room</td>
              <td align="left">a room object containing updated room metadata</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="party-history"/> RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="partyevent-object-type">
        <name>party_event object type</name>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">add</td>
              <td align="left">indicates the party was added by someone else</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="party-history"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">self_add_</td>
              <td align="left">indicates the party was added by itself</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="party-history"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">leave</td>
              <td align="left">indicates the party left of their own accord</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="party-history"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">remove</td>
              <td align="left">indicates the party was removed by someone else</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="party-history"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">ban</td>
              <td align="left">indicates the party was banned</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="party-history"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">update</td>
              <td align="left">indicates the party changed</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="party-history"/> RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">room</td>
              <td align="left">indicates room metadata changed</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="party-history"/> RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="attachment-object-type">
        <name>attachment object type</name>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Change Control</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">dialog_object_ref</td>
              <td align="left">the message_id of the dialog object referencing this attachment</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="attachments"/> RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="I-D.ietf-vcon-vcon-core">
        <front>
          <title>The JSON format for vCon - Conversation Data Container</title>
          <author fullname="Daniel Petrie" initials="D." surname="Petrie">
            <organization>SIPez LLC</organization>
          </author>
          <date day="15" month="October" year="2025"/>
          <abstract>
            <t>   vCon is a standardized framework for the exchange of conversational
   data.  Conversations, which may involve one or more participants,
   occur across a wide variety of modes and application platforms.  This
   document defines a JSON format for representing conversational data,
   encompassing metadata, conversation media, related documents, and
   analysis.  The goal of this standard is to provide an abstracted,
   platform-independent data format for conversations, regardless of the
   mode or application platform.  By doing so, it facilitates the
   integration and seamless exchange of conversational data across
   application platforms, enterprises, and trust boundaries.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-vcon-vcon-core-01"/>
      </reference>
      <reference anchor="I-D.ietf-mimi-content">
        <front>
          <title>More Instant Messaging Interoperability (MIMI) message content</title>
          <author fullname="Rohan Mahy" initials="R." surname="Mahy">
            <organization>Rohan Mahy Consulting Services</organization>
          </author>
          <date day="7" month="July" year="2025"/>
          <abstract>
            <t>   This document describes content semantics common in Instant Messaging
   (IM) systems and describes a profile suitable for instant messaging
   interoperability of messages end-to-end encrypted inside the MLS
   (Message Layer Security) Protocol.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-mimi-content-07"/>
      </reference>
      <reference anchor="RFC2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC9420" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9420.xml">
        <front>
          <title>The Messaging Layer Security (MLS) Protocol</title>
          <author fullname="R. Barnes" initials="R." surname="Barnes"/>
          <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
          <author fullname="R. Robert" initials="R." surname="Robert"/>
          <author fullname="J. Millican" initials="J." surname="Millican"/>
          <author fullname="E. Omara" initials="E." surname="Omara"/>
          <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
          <date month="July" year="2023"/>
          <abstract>
            <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9420"/>
        <seriesInfo name="DOI" value="10.17487/RFC9420"/>
      </reference>
      <reference anchor="I-D.ietf-mimi-protocol">
        <front>
          <title>More Instant Messaging Interoperability (MIMI) using HTTPS and MLS</title>
          <author fullname="Richard Barnes" initials="R." surname="Barnes">
            <organization>Cisco</organization>
          </author>
          <author fullname="Matthew Hodgson" initials="M." surname="Hodgson">
            <organization>The Matrix.org Foundation C.I.C.</organization>
          </author>
          <author fullname="Konrad Kohbrok" initials="K." surname="Kohbrok">
            <organization>Phoenix R&amp;D</organization>
          </author>
          <author fullname="Rohan Mahy" initials="R." surname="Mahy">
            <organization>Rohan Mahy Consulting Services</organization>
          </author>
          <author fullname="Travis Ralston" initials="T." surname="Ralston">
            <organization>The Matrix.org Foundation C.I.C.</organization>
          </author>
          <author fullname="Raphael Robert" initials="R." surname="Robert">
            <organization>Phoenix R&amp;D</organization>
          </author>
          <date day="7" month="July" year="2025"/>
          <abstract>
            <t>   This document specifies the More Instant Messaging Interoperability
   (MIMI) transport protocol, which allows users of different messaging
   providers to interoperate in group chats (rooms), including to send
   and receive messages, share room policy, and add participants to and
   remove participants from rooms.  MIMI describes messages between
   providers, leaving most aspects of the provider-internal client-
   server communication up to the provider.  MIMI integrates the
   Messaging Layer Security (MLS) protocol to provide end-to-end
   security assurances, including authentication of protocol
   participants, confidentiality of messages exchanged within a room,
   and agreement on the state of the room.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-mimi-protocol-04"/>
      </reference>
      <reference anchor="RFC5646" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5646.xml">
        <front>
          <title>Tags for Identifying Languages</title>
          <author fullname="A. Phillips" initials="A." role="editor" surname="Phillips"/>
          <author fullname="M. Davis" initials="M." role="editor" surname="Davis"/>
          <date month="September" year="2009"/>
          <abstract>
            <t>This document describes the structure, content, construction, and semantics of language tags for use in cases where it is desirable to indicate the language used in an information object. It also describes how to register values for use in language tags and the creation of user-defined extensions for private interchange. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="47"/>
        <seriesInfo name="RFC" value="5646"/>
        <seriesInfo name="DOI" value="10.17487/RFC5646"/>
      </reference>
    </references>
    <?line 778?>

<section anchor="json-schema">
      <name>JSON Schema</name>
      <t><strong>TODO</strong></t>
    </section>
    <section anchor="change-list">
      <name>Change list</name>
      <section anchor="changes-in-draft-ietf-vcon-mimi-messages-00">
        <name>Changes in draft-ietf-vcon-mimi-messages-00</name>
        <ul spacing="normal">
          <li>
            <t>adopted as a WG item</t>
          </li>
          <li>
            <t>added IANA registrations under the new framework</t>
          </li>
          <li>
            <t>fixed an inconsistency with disposition and language tags not consistent with MIMI content</t>
          </li>
          <li>
            <t>including all parties in the participant list is now a <bcp14>SHOULD</bcp14></t>
          </li>
          <li>
            <t>room metadata changes are now expressed as a party_history event</t>
          </li>
          <li>
            <t>expires is not not present unless it was present in MIMI. Only either <tt>absolute_time</tt> or <tt>relative_time</tt> is allowed.</t>
          </li>
          <li>
            <t>updated references</t>
          </li>
          <li>
            <t>refactor to use the new message_id field name from core</t>
          </li>
          <li>
            <t>more case adjustments</t>
          </li>
        </ul>
      </section>
      <section anchor="changes-in-draft-mahy-vcon-mimi-messages-02">
        <name>Changes in draft-mahy-vcon-mimi-messages-02</name>
        <ul spacing="normal">
          <li>
            <t>adjust to make consistent with new syntax of MIMI content (add salt, removed lastSeen, in_reply_to is just a message id, expires is an object to handle relative expiration, added mimi_extensions).</t>
          </li>
          <li>
            <t>use a different field from content_hash when attaching an ExternalPart that did not have a hash in the MIMI message.</t>
          </li>
          <li>
            <t>allow the parties list of 0 to indicate sending to every active participant in the room.</t>
          </li>
          <li>
            <t>added a description of using party_history to track changes to the participant list.</t>
          </li>
          <li>
            <t>added room metadata, and a way to modify it</t>
          </li>
          <li>
            <t>added support for message "tombstones"</t>
          </li>
          <li>
            <t>use mediatype instead of mimetype throughout</t>
          </li>
          <li>
            <t>make the case of field names more consistent</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Z1GVgqjC11M4K3ZTEdq4rmuTgr8o8NkiJkamqGLrsykXmVy0IWdqqLIEoiZz
chVMOxkoeO5LuOi5ToxgMU9jiPsbsDAdxsVKKNJ0Igg5pzpjnWw0DDrrmB10
/N81QXBmJXSElpHalCDySUCGY0+wipiAtYLdaWlI/g0mZPnXqbKnIVj3IKZU
UAAdujsC2IExB6AWX5GAk/Xcgoj2Y9xZWmbpWSJLb2MEX2FjkKRDewpifdD2
wH2arsBJAe1MScQpbSZwCHwFDIEKr6wmjIoDYYiOKvAgRBdcLtHhjiqiYHLQ
3w48ZwTahFGpRbIPyWHnepklnWKyKy0kINcTGAjuwSTme284HuDqPNcKyD3H
u4+dBS13OyymGn1gss2YS50SgNqR0S5giFFQBkRgMbKMMdPTRQuSZC1iIdFJ
O4slLkHPb9uWBVwor686LsUXdZy7VxAVd1NKrEmtjw8EN/qEEj5THcJAc3DJ
h3cmm7jedVs4qaat0PvAOeupoJ02eXkkwqE9mk88WtxB7/H59XmHUZtWtF8m
5wPxmGJwe+u0HudS22kbmEM0lThbs5rEmawmtpvqLzGTChaZb0krXmUhYuB1
DqLW5mtGBZdkQKl51BBBpYU5O01NWnYw9AKbr/wLsaIacIqvvD/lfcJMeRjJ
usKpWM6DFQ0uyTSqCmQC5PQ1fFXgK3NcjicbhmmE7CVoy9KzCPJdSpgo4A8x
LiWnVKSQUkWiXdO7tmdNYZDupIzvuJm8o/CEBqIDWHziFh4iReCHJOiPhbeK
9jLAmwN1sjwBk3DaAjY7IXCEEEKguga05TBcUkeRwAWjPQqpOi7U7mid0kJI
cMd5Qs32QUTimQjDCKADaoHliSKW3hWF6QE1qdoJcP8hQGsJZsNBQFqLT2fN
mwXEJyegk1zIQEhRNXcGs8WZLclFGUEggGpCTKpPn19vMC4tFbVQ6z6cBLiB
qDpEO7F2DF8tRGVh8U1yk4QkwCMPZBpjvnXP0WeLUN0damUpWqXSPFPb3rSB
VY2jfUIEpnEC8/RMkoZ2szQSBjhLITlujQlaKcXXn+RzfKxHajIHRg/XJWCK
UGJiNwDT7Jg+9MF04Z2YmohkBRiKdjyoPHvqsCFfr4I8MIjCgCrHoVqHhBvi
xkXMbhmsavISGtZKesAsE668Pm60gI8fDNBgWZovNE68JA8JQjFdI3sFxlgx
i/Fbwao0K6QbtESIRzEVt0lUaUa+XXf285jtwH5+BVl5AITSAdpM858M/GZ1
4FWXZTtMhcTfXVuIroW7aLPgCAwbJxh3s6LqAdUUb+IWChrq2k/6Zqcepscm
DdPpeT68HST2QUGv77BA1elx44snNhzcculGkT8jH/TNpZXVTfSD6a7EtRTw
Nq7fROjPygIcCfZpm4VbDx3DoR+SYaCF7LmKy+yRa8N6Hjuiogh83nXMTp9Z
8VVG5ryy1bpDmjWc9iK6auY63lCF2aRNUT1B4jJSw2MZeFgovVWUE2vy6EWA
K3JaERCjceyN9jElZ6FPctNKskDji85Z26UWnlJjA6nSEtMSVgcbBYTclcGz
T7zraB/Jg7RZ3E5QCwHDKELcEvdptU54KBZXIzSlDiNwAebkThCzIvRZk0NA
K049fowWTWxCc9TF411OXJtiqooHjFBL6HCej/FquyvONSbBfG2HO9sIwIi4
i1JGuS7TRM3XZZY3cR3PtHCfVnQSP/LWaPMWw8GJKUCwTVMAEezXNj7gw5SH
bt+y+0p4VQChvF9RN5DCLNsS8MkBD1tgE+7w8wOb0l8X+0ufTNO64043Qhua
x+UYJnK31SxUIvZl7J7Ll6od6O00gj8UFKBNbmW0IlwX7Rkn3K0hFCv0hgbf
NFW8aBttQTxUkWU6uBQI1gQySnzH0RMZznyn74G7P3UZHg/jWOrCtUNxuhYW
JaimIPx8driI0F1qh/HuTAe0GcbInYnwaDTO4uOQQDwp8yjUmajqMA8D9VN+
5kntAQikgwMCz2w/LvaON6LjbdgrLrrYcurdi6laqMX9AasCRsdpSthzrhXT
mwR0xMpHYeQKZRQwInvgQE0tNDF2OI3pAy4zkWakDnT4WlhCoRY0cqARegwc
rJtGk/YoVH3ab5l/aUYTW1kVtdoSdiEG5NOtasxqvC5krmH8WRNaNp5aWIFy
JkLZMk7M1TSKQ2v7qFo8W0Pn8iwl+OuxwjSItqTiZ8FWZUxxTFWQniJ4MipO
+k7WewCGO8amjEQntkG1YLaI/6O5YmBxTfTGeOSWusg3CeyxbeFiSe22BSPw
p2o+0S4hxitgtsmjTbOkMJ/lmiogqTMqnRyoEroitTOYoevR9lGCEiEf+VYg
Bi7GzOMXsSAgBf34rouqRYiQdbsUtyT3M6bteVmFDkd0E01EZlGE+SKAF3lq
V8HcSE4IjvgWOzkDvGBgoFOzrLtNjDr44mAnjHDgDRjSYE7ARLGAOd1Wqix4
aHyhJp0oTDoqS9IXuRMCI04ndTp4PFyU9tnAi4pT1BAfECemS9CXXonibdPV
ysI3Vz+ASNvvouRoiMspWRjPjKtoMX+lOMATRpuJw204OLJY8twPylJfTGAD
SgcQJsIcEGipy4+3cEp8APjOCd83j+jx/fIgggbfTRiPS9lyw187uiVnkIx+
qdeyz6+3xJVHbuXydsSMFXKKN6aFFEx3GtIxSWGkZpzuEgEDBZTpdFYMh8uz
2xoOB6txJbfK4iOI2JzmjtgskOZBbYsLp1zilrqqYdCvP+lLEsByscVLcnsv
aYw2+U4bbnCDWukWQG3qadRQ0SLkPBs4TSNamj2KaiboznDk+vJJ0UvDYlo+
RYFS+koaH19Vy3Vxm3U9sblLRT+xp83Y+jiLF+6q5DEPWnSR2orlfmy/GagN
bGszb3xS3kjypp3PvajXRKRw9mZFlp9ckB1ZUOJtxfwGoQjcxMiX8nIbLhZi
RcbDOAj/rJ375T3K/xHsmVu0XYB+tpUX3i4CNAtaPCUD+RAi0kEP96J8baQd
iuUrKoxaYBnwyzrwAkU/Vts2gza4WJfgiPoij3vQpDLTm298c81a9BndecLJ
hQctQkOEtujok3BECHEpBiBj5rjkFpeDuPpyNBDb44aCY9sbBWiD5NoeXIE4
J8uv4STOvaR3V4WUhNlICeIzn6Iq9pdX3c9HUzfhuzWBEZ/q4C4PZ0p9U9U0
vUweLuFNhKNo35x/jQyKP2B+FJlmNnnBvJI5B6tc4hYd7AF15Bc++BAjJlBX
QNSeYuxqCI/JJG2ZfKnO7pBrVaess88HiHUGjycMnRGF5LNRHMaucOJOPHUe
TQLNBRFqEzF6fQ0rwrmh2PnBePqf//zn3Fdw4HTFMQ/2oVQsFcv5BXyEfgAe
faWN2TxMNTIfA3tzcVH0D+/1LfqLzAUwx5hP+3XMHFB1qIJTECvtRu+Npvae
n+XNa5ccdbp0hjdYDA+OH4+Oqw+D7eeTwYQdycrizC7UPgFdEg/xaG78iRab
hRd/oof472se1Ta/mcelFq4I4SNz8YsYD/ie5FvcxAEcDuuRMP9tIaIGLSl6
6qmhKHf9+OOojW1yP8xwfv8/f3kc2UOxQHHRFuFypPc/f3FtNvLpUij/940+
/ZLjn/JiTaB691UUzPOTd+8dNdGr+aiMFsEGd1gBN2j6qotq4Kv40mjEXyJE
I3LgIn20I9Gr6GggFmie7pzu1a53bq+3wcHtdc+HhacjNrh92FnZ/7K1cbB2
W7iplE8r97uT/Pew3vbahXs03GnGt7y2cRh/pdimY0Fv8Hxzsbe71r7cGF5X
D24P7JX2pHH1fHT4eO922DjYMI++7PS+i2ewDv1pYcLvy4ARTbO+jSWMq4wS
7+rB88HyLjvdb9dKBc/e2W9eO70vg4fj5/Pp+dJV66bQ3CpffFcPLG/UK+DW
fpr1HXhlfIm9ehfPy11reFp3DyZup22dNlaubXZQeC4PVvzV8qhcuZqePNx/
F8+O/VzwPWAgzNCVXXhrthk4z3qyyLu4X3usr3l7vj390v3Sqx1Wlm+t6ol3
2q5tPx6UHk42eutLh4J7+P8vZKK5B09PfW6LxElR1Sw5ZHy8VFpaKpTgv/Xm
0tJmeXmzslIslTcKpdJmqRSVlwdDoUpJPUyaG/xXXjCWFoxl8f0XVVY/xQEV
MM4Vf5d8GEUN4E05Ytx0iO+z7fJq7eFxp71ft7vd53s2PftS60nLmI/gAxmf
drVW3++4Z8fnG+3JasHfOvP72186zVbL2whObpuHW936MmNXwIZqKXFuBul4
5/t29brnt6+c0Gx646OlfvnGXnHY/l7Y2X9yjpZr4wvNuA8mz8el2+vm7snt
ZWljme32p1dXK5PLUr1+Ozms7O+Xh+2rh9Wj6YZ9NLis3FyVJ+19rf7F2Gps
9Nv7zv3teYwxpo/q4sD0H3DZ8s9j07fB8f9hf+84Ki5RLxZ3CZCJFwh/85uq
ufyBzU/Qo8fEgxf3owCgSN8eDvmJOAaLGmMJQIHRau2Dd8Ur0w+t1u8ib/HX
ad7KWrGysfTdmldK6VxMhZbSKnTJrk7O/ftDdl+p3vcfH/adxsNklgqZ57f+
uNlvX5ydTfYnXq28djYeFkbjg/OT6sW9O7W3p7XL7eb2zk3Eu3Y47K9Rww8c
bSNft3v90PDc3xmtbc/tgXBxNw81vGX8++8B1H/keK4trf9a47mcGk/ncm3b
Y/be4LpSPTprfDm1/Hpp5ni29/sN777UqFaaJ/7q/uCgf1HYse/Xal8umhcX
z0sn57X+df9yJ+x87HhqOxpIgx/i031zasDj97FGYbew/o7x/t//+K+PGdDK
Zmm5WCr9wAEdPhytNP3S8MgxV3bto4vT7uXO4awB9fcqdmNlq3NYMPe6duDt
7Wz7bnN3Y3h7u7W//bS/7V3vH25cXrudX21yRab0y8jyaIviT3/UgO8vnzIg
hYaaP+M6NTcwH9QFRmF0+5idwf2giQnjuF5cXSr/OEO7tHpeWzcttr/R3Ome
jfuF+3IjnOWrC/uPh9cjzzwcla+9YFQ4WXfD1ZOr5+pS/WhQq9+UHjfuu62H
8dWDNjDyXPv/G0s9RUud/22qw0H74X7bbdb9vrteOTprrq9ejm9mqcN659Er
b23Uqquuu7W67J3tuoOrp9qjvzZ6WLsanze3epeXzk7rfKnz96EOmYuKWOgm
HnzQ4B4vBq8rsQgB7RMgG6ZlxWMH2RiZK4HNlyTp0d4oLq2tidFWNfQARhZH
Kz+eI6lWmQJ9r46XS8Xl9e9f1bzbddX8KvPue7ed2337/P5+qz14vOzPcl3t
m9ulkwPTnz6WrhpLw8eV2u5G97hTeXbCi+nu6pX/5XCtfbK1Eh7/nej4m2Dm
AwxTZWOztFpcWlr7tQYtvaZcf3LP7Y3+/eWkcrLeqe/vDirX5eqMQdt/aDvP
D9eHT1PTLznN3kO3c3xemnjrj8N256J0/Bg2e4XecXnP1mROAWZu86NplpdX
TuApXTiJpo2ISAdp8awkxCOqfNPFGo6oooxqf8CgrCxvVsrF8nLlx3mL9mP/
cOvxxmxOdwa95n3hPLRuz2YNStMK1y+2L5zyqNc4qg9Gp+2x3W5V2uNR6+B5
+aQxMW9G00Iz3G1WZipxtOMXFZHnhEicrj6e2omW+KDqaGBsW8xbHAwrmrHM
j3wnPyPejW4CWltcfwi2Ku2G79d3i4naeGAZqq+V1peWKxurmqlNxLnzS0bf
G/m0H4E3uXE/HPEl8aRTlDtlJHS7h1+TjeqbnRrc5QzxvcnTzvPtzfCqdVTa
Ku8Ex42jw8ejpftm/fCLd7/WbV4cLt333eu1UkHTHg6G8KBg3GnkgV8akdta
4zRYLq0er7mt5U5QLxyWOxO9Op0pxKIrl8el885tbfnsZOA+ji5Xty96Tz29
qGmSpqgJ8xGzgnzYxtqvFrtI+xfrbPewun9q3e6z69XW6fawVL94njUrvvR2
mp2ljduzys30ZnAdmjfTp+Htie/avfvx9r2/fTM6aj6XN56vOjNnRcAoVehc
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
AAA=

-->

</rfc>
