<?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.6.39 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mcnally-envelope-03" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="Envelope">The Gordian Envelope Structured Data Format</title>
    <seriesInfo name="Internet-Draft" value="draft-mcnally-envelope-03"/>
    <author initials="W." surname="McNally" fullname="Wolf McNally">
      <organization>Blockchain Commons</organization>
      <address>
        <email>wolf@wolfmcnally.com</email>
      </address>
    </author>
    <author initials="C." surname="Allen" fullname="Christopher Allen">
      <organization>Blockchain Commons</organization>
      <address>
        <email>christophera@lifewithalacrity.com</email>
      </address>
    </author>
    <date year="2023" month="August" day="17"/>
    <area>Applications and Real-Time</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 57?>

<t>Gordian Envelope specifies a structured format for hierarchical binary data focused on the ability to transmit it in a privacy-focused way, offering support for privacy as described in RFC-6973 and human rights as described in RFC-8280. Envelopes are designed to facilitate "smart documents" and have a number of unique features including: easy representation of a variety of semantic structures, a built-in Merkle-like digest tree, deterministic representation using CBOR, and the ability for the holder of a document to selectively elide specific parts of a document without invalidating the digest tree structure. This document specifies the base Envelope format, which is designed to be extensible.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/BlockchainCommons/envelope-internet-draft"/>.</t>
    </note>
  </front>
  <middle>
    <?line 61?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Gordian Envelope was designed with two key goals in mind: to be <em>Structure-Ready</em>, allowing for the reliable and interoperable encoding and storage of information; and to be <em>Privacy-Ready</em>, ensuring that transmission of that data can occur in a privacy-protecting manner.</t>
      <ul spacing="normal">
        <li>
          <strong>Structure-Ready.</strong> Gordian Envelope is designed as a "smart document": a set of information about a subject. More than that, it's a meta-document that can contain or refer to other documents. It can support multiple data structures, from single data items, to simple hierarchies, to labeled property graphs, semantic triples, and other forms of structured graphs. Though its fundamental structure is a tree, it can be used to create Directed Acyclic Graphs (DAGs) through references within or between Envelopes.</li>
        <li>
          <strong>Privacy-Ready.</strong> Gordian Envelope protects privacy by affording progressive trust, allowing for holders (not just issuers) to minimally disclose information by using elision, and then to optionally increase that disclosure over time. Progressive trust in Gordian Envelopes is accomplished through the hashing of all elements, which also creates foundational support for signing and encryption. This directly addresses the data minimization suggested by "Privacy Considerations for Internet Protocols" <xref target="RFC6973"/> and also addresses topics such as Privacy, Accessibility, Censorship Resistance, Reliability, and Integrity, which are listed as guidelines in "Research into Human Rights Protocol Considerations" <xref target="RFC8280"/>.</li>
      </ul>
      <t>The following architectural decisions support these goals:</t>
      <ul spacing="normal">
        <li>
          <strong>Structured Merkle Tree.</strong> A variant of the Merkle Tree <xref target="MERKLE"/> structure is created by hashing the elements in the Envelope into a tree of digests. (In this "structured Merkle Tree", all nodes contain both semantic content and digests, rather than semantic content being limited to leaves.)</li>
        <li>
          <strong>Deterministic Representation.</strong> There is only one way to encode any semantic representation within a Gordian Envelope. This is accomplished through the use of Deterministic CBOR <xref target="DCBOR"/> and the sorting of the Envelope's assertions into a lexicographic order (not to be confused with sorting a CBOR encoding's map keys). Any Envelope that doesn't follow these strict rules will be rejected; as a result, separate actors assembling envelopes from the same information will converge on the same encoded structure.</li>
      </ul>
      <section anchor="elision-support">
        <name>Elision Support</name>
        <ul spacing="normal">
          <li>
            <strong>Holder-initiated Elision.</strong> Elision can be performed by the Holder of a Gordian Envelope, not just the Issuer.</li>
          <li>
            <strong>Granular Elision.</strong> Elision can be performed on any data within an Envelope including subjects, predicates and objects of assertions, assertions as a whole, and envelopes as a whole. This allows each entity to elide data as is appropriate for the management of their personal (or business) risk.</li>
          <li>
            <strong>Progressive Trust.</strong> The elision mechanics in Gordian Envelopes allow for progressive trust, where increasing amounts of data may be revealed over time.</li>
          <li>
            <strong>Consistent Hashing.</strong> Even when elided, digests for those parts of the Gordian Envelope remain the same. So constructs such as signatures remain verifiable even for elided documents.</li>
          <li>
            <strong>Reversible Elision.</strong> Elision can be reversed by the Holder of a Gordian Envelope, which means removed information can be selectively replaced without changing the digest tree.</li>
        </ul>
      </section>
      <section anchor="extensions">
        <name>Extensions</name>
        <t>This document is the base specification for Gordian Envelope, which is designed to support extension specifications to support constructs like encryption, compression, decorrelation, and inclusion proofs. These extensions will be specified in separate documents.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</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>This specification makes use of the following terminology:</t>
      <dl>
        <dt>byte</dt>
        <dd>
          <t>Used in its now-customary sense as a synonym for "octet".</t>
        </dd>
        <dt>element</dt>
        <dd>
          <t>An envelope is a tree of elements, each of which is itself an envelope.</t>
        </dd>
        <dt>image</dt>
        <dd>
          <t>The source data from which a cryptographic digest is calculated.</t>
        </dd>
      </dl>
    </section>
    <section anchor="envelope-format-specification">
      <name>Envelope Format Specification</name>
      <t>This section is normative and specifies the Gordian Envelope binary format in terms of its CBOR components and their sequencing. The formal language used is the Concise Data Definition Language (CDDL) <xref target="RFC8610"/>. To be considered a well-formed Envelope, a sequence of bytes <bcp14>MUST</bcp14> conform to the Gordian dCBOR deterministic CBOR profile <xref target="DCBOR"/> and <bcp14>MUST</bcp14> conform to the specifications in this section.</t>
      <t>An Envelope is a tagged enumerated type with five cases. Here is the entire CDDL specification for the base Envelope format. Each case is discussed in detail below:</t>
      <sourcecode type="cddl"><![CDATA[
envelope = #6.200(
    leaf /
    elided /
    node /
    assertion /
    wrapped
)

leaf = #6.24(bytes)  ; MUST be dCBOR

elided = sha256-digest
sha256-digest = bytes .size 32

node = [subject, + assertion-element]
subject = envelope
assertion-element = ( assertion / elided-assertion )
elided-assertion = elided           ; MUST represent an assertion.

assertion = { predicate-envelope: object-envelope }
predicate-envelope = envelope
object-envelope = envelope

wrapped = envelope
]]></sourcecode>
      <t>Some of these cases create a hierarchical, recursive structure by including children that are themselves Envelopes. Two of these cases (<tt>leaf</tt> and <tt>elided</tt>) have no children. The <tt>node</tt> case adds one or more assertions to the envelope, each of which is a child. The <tt>assertion</tt> case is a predicate/object pair, both of which are children. The <tt>wrapped</tt> case is used to wrap an entire Envelope including its assertions (its child), so that assertions can be made about the wrapped Envelope as a whole.</t>
      <section anchor="leaf-case-format">
        <name>Leaf Case Format</name>
        <t>A <tt>leaf</tt> case is used when the Envelope contains only user-defined CBOR content. It is tagged using <tt>#6.24</tt>, per <xref target="RFC8949"/> §3.4.5.1, "Encoded CBOR Data Item".</t>
        <sourcecode type="cddl"><![CDATA[
leaf = #6.24(bytes)  ; MUST be dCBOR
]]></sourcecode>
        <t>The <tt>leaf</tt> case can be discriminated from other Envelope case arms by the fact that it is the only one that is tagged using <tt>#6.24</tt>.</t>
        <t>To preserve deterministic encoding, authors of application-level data formats based on Envelope <bcp14>MUST</bcp14> only encode CBOR that conforms to dCBOR <xref target="DCBOR"/> in the <tt>leaf</tt> case. Care must be taken to ensure that leaf CBOR follows best practices for deterministic encoding, such as clearly specifying when tags for nested structures <bcp14>MUST</bcp14> or <bcp14>MUST NOT</bcp14> be used.</t>
      </section>
      <section anchor="elided-case-format">
        <name>Elided Case Format</name>
        <t>An <tt>elided</tt> case is used as a placeholder for an element that has been elided. It consists solely of the elided envelope's digest.</t>
        <sourcecode type="cddl"><![CDATA[
elided = sha256-digest
sha256-digest = bytes .size 32
]]></sourcecode>
        <t>The <tt>elided</tt> case can be discriminated from other Envelope case arms by the fact that it is the only one that is a CBOR byte string and always has a length of 32 bytes.</t>
      </section>
      <section anchor="node-case-format">
        <name>Node Case Format</name>
        <t>A <tt>node</tt> case is encoded as a CBOR array. A <tt>node</tt> case <bcp14>MUST</bcp14> be used when one or more assertions are present on the Envelope. A <tt>node</tt> case <bcp14>MUST NOT</bcp14> be present when there is not at least one assertion.</t>
        <t>The first element of the array is the Envelope's <tt>subject</tt>, followed by one or more <tt>assertion-element</tt>s, each of which <bcp14>MUST</bcp14> either be an <tt>assertion</tt> or an <tt>elided-assertion</tt>.</t>
        <t>The <tt>assertion-element</tt>s <bcp14>MUST</bcp14> appear in ascending lexicographic order by their digest (not to be confused with sorting a CBOR map's keys).</t>
        <t>The array <bcp14>MUST NOT</bcp14> contain any <tt>assertion-element</tt>s with identical digests.</t>
        <t>For an Envelope to be valid, any <tt>elided-assertion</tt> Envelopes in the <tt>node</tt> assertions <bcp14>MUST</bcp14>, if and when unelided, be found to be actual <tt>assertion</tt> case Envelopes having the same digest.</t>
        <sourcecode type="cddl"><![CDATA[
node = [subject, + assertion-element]
subject = envelope
assertion-element = ( assertion / elided-assertion )
elided-assertion = elided           ; MUST represent an assertion.
]]></sourcecode>
        <t>The <tt>node</tt> case can be discriminated from other Envelope case arms by the fact that it is the only one that is a CBOR array.</t>
      </section>
      <section anchor="assertion-case-format">
        <name>Assertion Case Format</name>
        <t>An <tt>assertion</tt> case is used for each of the assertions on the subject of an Envelope. It is encoded as a CBOR map with exactly one map element:</t>
        <ul spacing="normal">
          <li>The key of the map element is the Envelope representing the predicate of the assertion.</li>
          <li>The value of the map element is the Envelope representing the object of the assertion.</li>
        </ul>
        <sourcecode type="cddl"><![CDATA[
assertion = { predicate-envelope: object-envelope }
predicate-envelope = envelope
object-envelope = envelope
]]></sourcecode>
        <t>The <tt>assertion</tt> case can be discriminated from other Envelope case arms by the fact that it is the only one that is a CBOR map.</t>
      </section>
      <section anchor="wrapped-case-format">
        <name>Wrapped Case Format</name>
        <t>Assertions make semantic statements about an Envelope's subject. A <tt>wrapped</tt> case is used where an Envelope, including all its assertions, should be treated as a single element, e.g. for the purpose of adding assertions to an Envelope as a whole, including its assertions.</t>
        <sourcecode type="cddl"><![CDATA[
wrapped = envelope
]]></sourcecode>
        <t>The <tt>wrapped</tt> case can be discriminated from other Envelope case arms by the fact that it is the only one that is a CBOR envelope, and is always tagged with <tt>#6.200</tt>.</t>
      </section>
    </section>
    <section anchor="computing-the-digest-tree">
      <name>Computing the Digest Tree</name>
      <t>This section specifies how the digests for each of the Envelope cases are computed and is normative. The examples in this section may be used as test vectors.</t>
      <t>Each of the five enumerated Envelope cases produces an image which is used as input to a cryptographic hash function to produce the digest of its contents.</t>
      <t>The overall digest of an Envelope is the digest of its specific case.</t>
      <t>In this section:</t>
      <ul spacing="normal">
        <li>
          <tt>digest(image)</tt> is the 32-byte hash produced by running the SHA-256 hash function on the input image.</li>
        <li>The <tt>.digest</tt> attribute is the digest of the named element computed as specified herein.</li>
        <li>The <tt>||</tt> operator represents the concatenation of byte sequences.</li>
      </ul>
      <section anchor="leaf-digest-calculation">
        <name>Leaf Digest Calculation</name>
        <t>The <tt>leaf</tt> case consists of any CBOR object conforming to dCBOR <xref target="DCBOR"/>. The Envelope image is the CBOR serialization of that object:</t>
        <artwork><![CDATA[
digest(cbor)
]]></artwork>
        <t><strong>Example</strong></t>
        <t>The CBOR serialization of the plaintext string <tt>"Hello"</tt> (not including the quotes) is <tt>6548656C6C6F</tt>. The following command line calculates the SHA-256 sum of this sequence:</t>
        <artwork><![CDATA[
$ echo "6548656C6C6F" | xxd -r -p | shasum --binary --algorithm 256 | \
    awk '{ print $1 }'
4d303dac9eed63573f6190e9c4191be619e03a7b3c21e9bb3d27ac1a55971e6b
]]></artwork>
        <t>Using the <tt>envelope</tt> command line tool <xref target="ENVELOPE-CLI"/>, we create an Envelope with this string as the subject and display the Envelope's digest. The digest below matches the one above.</t>
        <artwork><![CDATA[
$ envelope subject "Hello" | envelope digest --hex
4d303dac9eed63573f6190e9c4191be619e03a7b3c21e9bb3d27ac1a55971e6b
]]></artwork>
      </section>
      <section anchor="elided-digest-calculation">
        <name>Elided Digest Calculation</name>
        <t>The <tt>elided</tt> case declares its digest to be the digest of the Envelope for which it is a placeholder.</t>
        <t><strong>Example</strong></t>
        <t>If we create the Envelope from the leaf example above, elide it, and then request its digest:</t>
        <artwork><![CDATA[
$ envelope subject "Hello" | envelope elide | envelope digest --hex
4d303dac9eed63573f6190e9c4191be619e03a7b3c21e9bb3d27ac1a55971e6b
]]></artwork>
        <t>...we see that its digest is the same as its unelided form:</t>
        <artwork><![CDATA[
$ envelope subject "Hello" | envelope digest --hex
4d303dac9eed63573f6190e9c4191be619e03a7b3c21e9bb3d27ac1a55971e6b
]]></artwork>
      </section>
      <section anchor="node-digest-calculation">
        <name>Node Digest Calculation</name>
        <t>The Envelope image of the <tt>node</tt> case is the concatenation of the digest of its <tt>subject</tt> and the digests of its assertions sorted in ascending lexicographic order.</t>
        <t>With a <tt>node</tt> case, there <bcp14>MUST</bcp14> always be at least one assertion.</t>
        <artwork><![CDATA[
digest(subject.digest || assertion-0.digest ||
    assertion-1.digest || ... || assertion-n.digest)
]]></artwork>
        <t><strong>Example</strong></t>
        <t>We create four separate Envelopes and display their digests:</t>
        <artwork><![CDATA[
$ SUBJECT=`envelope subject "Alice"`
$ envelope digest --hex $SUBJECT
13941b487c1ddebce827b6ec3f46d982938acdc7e3b6a140db36062d9519dd2f

$ ASSERTION_0=`envelope subject assertion "knows" "Bob"`
$ envelope digest --hex $ASSERTION_0
78d666eb8f4c0977a0425ab6aa21ea16934a6bc97c6f0c3abaefac951c1714a2

$ ASSERTION_1=`envelope subject assertion "knows" "Carol"`
$ envelope digest --hex $ASSERTION_1
4012caf2d96bf3962514bcfdcf8dd70c351735dec72c856ec5cdcf2ee35d6a91

$ ASSERTION_2=`envelope subject assertion "knows" "Edward"`
$ envelope digest --hex $ASSERTION_2
65c3ebc3f056151a6091e738563dab4af8da1778da5a02afcd104560b612ca17
]]></artwork>
        <t>We combine the Envelopes into a single Envelope with three assertions:</t>
        <artwork><![CDATA[
$ ENVELOPE=`envelope assertion add envelope $ASSERTION_0 $SUBJECT | \
    envelope assertion add envelope $ASSERTION_1 | \
    envelope assertion add envelope $ASSERTION_2`

$ envelope $ENVELOPE
"Alice" [
    "knows": "Bob"
    "knows": "Carol"
    "knows": "Edward"
]

$ envelope digest --hex $ENVELOPE
6255e3b67ad935caf07b5dce5105d913dcfb82f0392d4d302f6d406e85ab4769
]]></artwork>
        <t>Note that in the Envelope notation representation above, the assertions are sorted alphabetically, with <tt>"knows": "Edward"</tt> coming last. But internally, the three assertions are ordered by digest in ascending lexicographic order, with "Carol" coming first because its digest starting with <tt>4012caf2</tt> is the lowest, as in the tree formatted display below:</t>
        <artwork><![CDATA[
$ envelope --tree $ENVELOPE
6255e3b6 NODE
    13941b48 subj "Alice"
    4012caf2 ASSERTION
        db7dd21c pred "knows"
        afb8122e obj "Carol"
    65c3ebc3 ASSERTION
        db7dd21c pred "knows"
        e9af7883 obj "Edward"
    78d666eb ASSERTION
        db7dd21c pred "knows"
        13b74194 obj "Bob"
]]></artwork>
        <t>To replicate this, we make a list of digests, starting with the subject, and then sort each assertion's digest in ascending lexicographic order:</t>
        <artwork><![CDATA[
13941b487c1ddebce827b6ec3f46d982938acdc7e3b6a140db36062d9519dd2f
4012caf2d96bf3962514bcfdcf8dd70c351735dec72c856ec5cdcf2ee35d6a91
65c3ebc3f056151a6091e738563dab4af8da1778da5a02afcd104560b612ca17
78d666eb8f4c0977a0425ab6aa21ea16934a6bc97c6f0c3abaefac951c1714a2
]]></artwork>
        <t>We then calculate the SHA-256 digest of the concatenation of these four digests. Note that this is the same digest as the composite Envelope's digest:</t>
        <artwork><![CDATA[
echo "13941b487c1ddebce827b6ec3f46d982938acdc7e3b6a140db36062d9519dd2f\
4012caf2d96bf3962514bcfdcf8dd70c351735dec72c856ec5cdcf2ee35d6a91\
65c3ebc3f056151a6091e738563dab4af8da1778da5a02afcd104560b612ca17\
78d666eb8f4c0977a0425ab6aa21ea16934a6bc97c6f0c3abaefac951c1714a2" | \
    xxd -r -p | shasum --binary --algorithm 256 | awk '{ print $1 }'
6255e3b67ad935caf07b5dce5105d913dcfb82f0392d4d302f6d406e85ab4769

$ envelope digest --hex $ENVELOPE
6255e3b67ad935caf07b5dce5105d913dcfb82f0392d4d302f6d406e85ab4769
]]></artwork>
      </section>
      <section anchor="assertion-digest-calculation">
        <name>Assertion Digest Calculation</name>
        <t>The Envelope image of the <tt>assertion</tt> case is the concatenation of the digests of the assertion's predicate and object, in that order:</t>
        <artwork><![CDATA[
digest(predicate.digest || object.digest)
]]></artwork>
        <t><strong>Example</strong></t>
        <t>We create an assertion from two separate Envelopes and display their digests:</t>
        <artwork><![CDATA[
$ PREDICATE=`envelope subject "knows"`
$ envelope digest --hex $PREDICATE
db7dd21c5169b4848d2a1bcb0a651c9617cdd90bae29156baaefbb2a8abef5ba

$ OBJECT=`envelope subject "Bob"`
$ envelope digest --hex $OBJECT
13b741949c37b8e09cc3daa3194c58e4fd6b2f14d4b1d0f035a46d6d5a1d3f11

$ ASSERTION=`envelope subject assertion "knows" "Bob"`
$ envelope digest --hex $ASSERTION
78d666eb8f4c0977a0425ab6aa21ea16934a6bc97c6f0c3abaefac951c1714a2
]]></artwork>
        <t>To replicate this, we make a list of the predicate digest and the object digest, in that order:</t>
        <artwork><![CDATA[
db7dd21c5169b4848d2a1bcb0a651c9617cdd90bae29156baaefbb2a8abef5ba
13b741949c37b8e09cc3daa3194c58e4fd6b2f14d4b1d0f035a46d6d5a1d3f11
]]></artwork>
        <t>We then calculate the SHA-256 digest of the concatenation of these two digests. Note that this is the same digest as the composite Envelope's digest:</t>
        <artwork><![CDATA[
echo "db7dd21c5169b4848d2a1bcb0a651c9617cdd90bae29156baaefbb2a8abef5ba\
13b741949c37b8e09cc3daa3194c58e4fd6b2f14d4b1d0f035a46d6d5a1d3f11" | \
    xxd -r -p | shasum --binary --algorithm 256 | awk '{ print $1 }'
78d666eb8f4c0977a0425ab6aa21ea16934a6bc97c6f0c3abaefac951c1714a2

$ envelope digest --hex $ASSERTION
78d666eb8f4c0977a0425ab6aa21ea16934a6bc97c6f0c3abaefac951c1714a2
]]></artwork>
      </section>
      <section anchor="wrapped-digest-calculation">
        <name>Wrapped Digest Calculation</name>
        <t>The Envelope image of the <tt>wrapped</tt> case is the digest of the wrapped Envelope:</t>
        <artwork><![CDATA[
digest(envelope.digest)
]]></artwork>
        <t><strong>Example</strong></t>
        <t>As above, we note the digest of a leaf Envelope is the digest of its CBOR:</t>
        <artwork><![CDATA[
$ envelope subject "Hello" | envelope digest --hex
4d303dac9eed63573f6190e9c4191be619e03a7b3c21e9bb3d27ac1a55971e6b

$ echo "6548656C6C6F" | xxd -r -p | shasum --binary --algorithm 256 | \
    awk '{ print $1 }'
4d303dac9eed63573f6190e9c4191be619e03a7b3c21e9bb3d27ac1a55971e6b
]]></artwork>
        <t>Now we note that the digest of a wrapped Envelope is the digest of the wrapped Envelope's digest:</t>
        <artwork><![CDATA[
$ envelope subject "Hello" | \
    envelope subject --wrapped | \
    envelope digest --hex
743a86a9f411b1441215fbbd3ece3de5206810e8a3dd8239182e123802677bd7

$ echo "4d303dac9eed63573f6190e9c4191be619e03a7b3c21e9bb\
3d27ac1a55971e6b" \
    | xxd -r -p | shasum --binary --algorithm 256 | awk '{ print $1 }'
743a86a9f411b1441215fbbd3ece3de5206810e8a3dd8239182e123802677bd7
]]></artwork>
      </section>
    </section>
    <section anchor="envelope-hierarchy">
      <name>Envelope Hierarchy</name>
      <t>This section is informative, and describes Envelopes from the perspective of their hierarchical structure and the various ways they can be formatted.</t>
      <t>Notionally an Envelope can be thought of as a <tt>subject</tt> and one or more <tt>predicate-object</tt> pairs called <tt>assertions</tt>.</t>
      <t>Note that the following example is <em>not</em> CDDL or CBOR diagnostic notation, but "Envelope notation," which is a convenient way to describe the structure of an Envelope:</t>
      <artwork><![CDATA[
subject [
    predicate0: object0
    predicate1: object1
    ...
    predicateN: objectN
]
]]></artwork>
      <t>A concrete example of this might be:</t>
      <artwork><![CDATA[
"Alice" [
    "knows": "Bob"
    "knows": "Carol"
    "knows": "Edward"
]
]]></artwork>
      <t>The notional concept of Envelope is helpful, but not technically accurate because Envelope is implemented structurally as an enumerated type consisting of five cases. This allows actual Envelope instances to be more flexible, for example a "bare assertion" consisting of a predicate-object pair with no subject, which is useful in some situations:</t>
      <artwork><![CDATA[
"knows": "Bob"
]]></artwork>
      <t>More common is the opposite case: a subject with no assertions:</t>
      <artwork><![CDATA[
"Alice"
]]></artwork>
      <t>In Envelopes, there are five distinct "positions" of elements, each of which is itself an Envelope and which therefore produces its own digest:</t>
      <ol spacing="normal" type="1"><li>envelope</li>
        <li>subject</li>
        <li>assertion</li>
        <li>predicate</li>
        <li>object</li>
      </ol>
      <t>The examples above are printed in Envelope notation, which is designed to make the semantic content of Envelopes human-readable, but it doesn't show the actual digests associated with each of the positions. To see the structure more completely, we can display every element of the Envelope in "Tree Format":</t>
      <artwork><![CDATA[
6255e3b6 NODE
    13941b48 subj "Alice"
    4012caf2 ASSERTION
        db7dd21c pred "knows"
        afb8122e obj "Carol"
    65c3ebc3 ASSERTION
        db7dd21c pred "knows"
        e9af7883 obj "Edward"
    78d666eb ASSERTION
        db7dd21c pred "knows"
        13b74194 obj "Bob"
]]></artwork>
      <t>For easy recognition, Envelope trees only show the first four bytes of each digest, but internally all digests are 32 bytes.</t>
      <t>From the above Envelope and its tree, we make the following observations:</t>
      <ul spacing="normal">
        <li>The Envelope is a <tt>node</tt> case, which has the overall Envelope digest.</li>
        <li>The subject "Alice" has its own digest.</li>
        <li>Each of the three assertions have their own digests</li>
        <li>The predicate and object of each assertion each have their own digests.</li>
        <li>The assertions appear in the structure in ascending lexicographic order by digest, which is the actual order in which they are serialized, and which is distinct from Envelope notation, where they appear sorted alphabetically.</li>
      </ul>
      <t>The following subsections present each of the five enumerated Envelope cases in four different output formats:</t>
      <ul spacing="normal">
        <li>Envelope Notation</li>
        <li>Envelope Tree</li>
        <li>CBOR Diagnostic Notation</li>
        <li>CBOR hex</li>
      </ul>
      <t>These examples may be used as test vectors. In addition, each subsection starts with the <tt>envelope</tt> command line <xref target="ENVELOPE-CLI"/> needed to generate the Envelope being formatted.</t>
      <section anchor="leaf-case">
        <name>Leaf Case</name>
        <t><strong>Envelope CLI Command Line</strong></t>
        <artwork><![CDATA[
envelope subject "Alice"
]]></artwork>
        <t><strong>Envelope Notation</strong></t>
        <artwork><![CDATA[
"Alice"
]]></artwork>
        <t><strong>Tree</strong></t>
        <artwork><![CDATA[
13941b48 "Alice"
]]></artwork>
        <t><strong>CBOR Diagnostic Notation</strong></t>
        <artwork><![CDATA[
200(   ; envelope
   24("Alice")   ; leaf
)
]]></artwork>
        <t><strong>CBOR Hex</strong></t>
        <artwork><![CDATA[
d8c8d81865416c696365
]]></artwork>
      </section>
      <section anchor="elided-case">
        <name>Elided Case</name>
        <t><strong>Envelope CLI Command Line</strong></t>
        <artwork><![CDATA[
envelope subject "Alice" | envelope elide
]]></artwork>
        <t><strong>Envelope Notation</strong></t>
        <artwork><![CDATA[
ELIDED
]]></artwork>
        <t><strong>Tree</strong></t>
        <artwork><![CDATA[
13941b48 ELIDED
]]></artwork>
        <t><strong>CBOR Diagnostic Notation</strong></t>
        <artwork><![CDATA[
200(   ; envelope
   h'13941b487c1ddebce827b6ec3f46d982938acdc7e3b6a140db36062d9519dd2f'
)
]]></artwork>
        <t><strong>CBOR Hex</strong></t>
        <artwork><![CDATA[
d8c8582013941b487c1ddebce827b6ec3f46d982938acdc7e3b6a140db36062d9519dd2f
]]></artwork>
      </section>
      <section anchor="node-case">
        <name>Node Case</name>
        <t><strong>Envelope CLI Command Line</strong></t>
        <artwork><![CDATA[
envelope subject "Alice" | envelope assertion "knows" "Bob"
]]></artwork>
        <t><strong>Envelope Notation</strong></t>
        <artwork><![CDATA[
"Alice" [
    "knows": "Bob"
]
]]></artwork>
        <t><strong>Tree</strong></t>
        <artwork><![CDATA[
8955db5e NODE
    13941b48 subj "Alice"
    78d666eb ASSERTION
        db7dd21c pred "knows"
        13b74194 obj "Bob"
]]></artwork>
        <t><strong>CBOR Diagnostic Notation</strong></t>
        <artwork><![CDATA[
200(   ; envelope
   [
      200(   ; envelope
         24("Alice")   ; leaf
      ),
      200(   ; envelope
         {
            200(   ; envelope
               24("knows")   ; leaf
            ):
            200(   ; envelope
               24("Bob")   ; leaf
            )
         }
      )
   ]
)
]]></artwork>
        <t><strong>CBOR Hex</strong></t>
        <artwork><![CDATA[
d8c882d8c8d81865416c696365d8c8a1d8c8d818656b6e6f7773d8c8d81863426f62
]]></artwork>
      </section>
      <section anchor="assertion-case">
        <name>Assertion Case</name>
        <t><strong>Envelope CLI Command Line</strong></t>
        <artwork><![CDATA[
envelope subject assertion "knows" "Bob"
]]></artwork>
        <t><strong>Envelope Notation</strong></t>
        <artwork><![CDATA[
"knows": "Bob"
]]></artwork>
        <t><strong>Tree</strong></t>
        <artwork><![CDATA[
78d666eb ASSERTION
    db7dd21c pred "knows"
    13b74194 obj "Bob"
]]></artwork>
        <t><strong>CBOR Diagnostic Notation</strong></t>
        <artwork><![CDATA[
200(   ; envelope
   {
      200(   ; envelope
         24("knows")   ; leaf
      ):
      200(   ; envelope
         24("Bob")   ; leaf
      )
   }
)
]]></artwork>
        <t><strong>CBOR Hex</strong></t>
        <artwork><![CDATA[
d8c8a1d8c8d818656b6e6f7773d8c8d81863426f62
]]></artwork>
      </section>
      <section anchor="wrapped-case">
        <name>Wrapped Case</name>
        <t><strong>Envelope CLI Command Line</strong></t>
        <artwork><![CDATA[
envelope subject "Alice" | envelope subject --wrapped
]]></artwork>
        <t><strong>Envelope Notation</strong></t>
        <artwork><![CDATA[
{
    "Alice"
}
]]></artwork>
        <t><strong>Tree</strong></t>
        <artwork><![CDATA[
2bc17c65 WRAPPED
    13941b48 subj "Alice"
]]></artwork>
        <t><strong>CBOR Diagnostic Notation</strong></t>
        <artwork><![CDATA[
200(   ; envelope
   200(   ; envelope
      24("Alice")   ; leaf
   )
)
]]></artwork>
        <t><strong>CBOR Hex</strong></t>
        <artwork><![CDATA[
d8c8d8c8d81865416c696365
]]></artwork>
      </section>
    </section>
    <section anchor="reference-implementations">
      <name>Reference Implementations</name>
      <t>This section is informative.</t>
      <t>The current reference implementations of Envelope are written in Swift <xref target="ENVELOPE-SWIFT"/> and Rust <xref target="ENVELOPE-RUST"/>.</t>
      <t>The <tt>envelope</tt> command line tool <xref target="ENVELOPE-CLI"/> is also written in Swift.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section is informative unless noted otherwise.</t>
      <section anchor="cbor-considerations">
        <name>CBOR Considerations</name>
        <t>Generally, this document inherits the security considerations of CBOR <xref target="RFC8949"/>. Though CBOR has limited web usage, it has received strong usage in hardware, resulting in a mature specification. It also inherits the security considerations of Gordian dCBOR <xref target="DCBOR"/>.</t>
      </section>
      <section anchor="validation-requirements">
        <name>Validation Requirements</name>
        <t>Unlike HTML, Envelope is intended to be conservative in both what it encodes <em>and</em> what it accepts as valid. This means that receivers of Envelope-based documents should carefully validate them. Any deviation from the validation requirements of this specification <bcp14>MUST</bcp14> result in the rejection of the entire Envelope. Even after validation, Envelope contents should be treated with due skepticism at the application level.</t>
      </section>
      <section anchor="choice-of-sha-256-hash-primitive">
        <name>Choice of SHA-256 Hash Primitive</name>
        <t>Envelope uses the SHA-256 digest algorithm <xref target="RFC6234"/>, which is regarded as reliable and widely supported by many implementations in both software and hardware.</t>
      </section>
      <section anchor="correlated-digests">
        <name>Correlated Digests</name>
        <t>Elided Envelopes may in some cases inadvertently reveal information by transmitting digests that may be correlated to known information. In many cases this is of no consequence, but when necessary Envelopes can (when constructed) be "salted" by adding assertions that contain random data. This results in perturbing the digest tree, hence decorrelating it (after elision) from digests whose unelided contents are known.</t>
      </section>
      <section anchor="rfc-6973-considerations">
        <name>RFC-6973 Considerations</name>
        <t>"Privacy Considerations for Internet Protocols" <xref target="RFC6973"/> lists threats and guidelines related to privacy in internet protocols. Envelope is intended to help internet protocols easily adopt these considerations. It explicitly addresses the privacy-specific threats of correlation, secondary use, and disclosure by supporting the suggested guideline of Data Minimization.</t>
      </section>
      <section anchor="rfc-8280-considerations">
        <name>RFC-8280 Considerations</name>
        <t>"Research into Human Rights Protocol Considerations" <xref target="RFC8280"/> lists guidelines for human rights considerations in internet protocols. Envelope similarly adopts many of the guidelines there, improving privacy and censorship resistance through its hashed elision; and accessibility, heterogeneity support, reliability, and integrity through its fundamental data structures.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="cbor-tags">
        <name>CBOR Tags</name>
        <t>This document requests that IANA <xref target="IANA-CBOR-TAGS"/> reserve the following tag:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Tag</th>
              <th align="left">Data Item</th>
              <th align="left">Semantics</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">200</td>
              <td align="left">multiple</td>
              <td align="left">Gordian Envelope</td>
            </tr>
          </tbody>
        </table>
        <t>Points of contact:</t>
        <ul spacing="normal">
          <li>Christopher Allen <eref target="mailto:christophera@blockchaincommons.com">christophera@blockchaincommons.com</eref></li>
          <li>Wolf McNally <eref target="mailto:wolf@wolfmcnally.com">wolf@wolfmcnally.com</eref></li>
        </ul>
      </section>
      <section anchor="media-type">
        <name>Media Type</name>
        <t>The proposed media type <xref target="RFC6838"/> for Envelope is <tt>application/envelope+cbor</tt>. The authors understand that this will require this document to become an RFC before the media type can be registered.</t>
        <ul spacing="normal">
          <li>Type name: application</li>
          <li>Subtype name: envelope+cbor</li>
          <li>Required parameters: n/a</li>
          <li>Optional parameters: n/a</li>
          <li>Encoding considerations: binary</li>
          <li>Security considerations: See the previous section of this document</li>
          <li>Interoperability considerations: n/a</li>
          <li>Published specification: This document</li>
          <li>Applications that use this media type:  None yet, but it is expected that this format will be deployed in protocols and applications.</li>
          <li>
            <t>Additional information:
            </t>
            <ul spacing="normal">
              <li>Magic number(s): n/a</li>
              <li>File extension(s): .envelope</li>
              <li>Macintosh file type code(s): n/a</li>
            </ul>
          </li>
          <li>
            <t>Person &amp; email address to contact for further information:
            </t>
            <ul spacing="normal">
              <li>Christopher Allen <eref target="mailto:christophera@blockchaincommons.com">christophera@blockchaincommons.com</eref></li>
              <li>Wolf McNally <eref target="mailto:wolf@wolfmcnally.com">wolf@wolfmcnally.com</eref></li>
            </ul>
          </li>
          <li>Intended usage: COMMON</li>
          <li>Restrictions on usage: none</li>
          <li>
            <t>Author:
            </t>
            <ul spacing="normal">
              <li>Wolf McNally <eref target="mailto:wolf@wolfmcnally.com">wolf@wolfmcnally.com</eref></li>
            </ul>
          </li>
          <li>
            <t>Change controller:
            </t>
            <ul spacing="normal">
              <li>The IESG <eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref></li>
            </ul>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="DCBOR" target="https://datatracker.ietf.org/doc/draft-mcnally-deterministic-cbor/">
          <front>
            <title>Gordian dCBOR: A Deterministic CBOR Application Profile</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA-CBOR-TAGS" target="https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml">
          <front>
            <title>IANA, Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>
        <reference anchor="ENVELOPE-SWIFT" target="https://github.com/blockchaincommons/BCSwiftEnvelope">
          <front>
            <title>Blockchain Commons Gordian Envelope for Swift</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ENVELOPE-RUST" target="https://github.com/blockchaincommons/bc-envelope-rust">
          <front>
            <title>Blockchain Commons Gordian Envelope for Rust</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ENVELOPE-CLI" target="https://github.com/BlockchainCommons/envelope-cli-swift">
          <front>
            <title>Envelope Command Line Tool</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <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">
          <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="MERKLE" target="https://en.wikipedia.org/wiki/Merkle_tree">
          <front>
            <title>Merkle Tree</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC6973">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
        <reference anchor="RFC8280">
          <front>
            <title>Research into Human Rights Protocol Considerations</title>
            <author fullname="N. ten Oever" initials="N." surname="ten Oever"/>
            <author fullname="C. Cath" initials="C." surname="Cath"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This document aims to propose guidelines for human rights considerations, similar to the work done on the guidelines for privacy considerations (RFC 6973). The other parts of this document explain the background of the guidelines and how they were developed.</t>
              <t>This document is the first milestone in a longer-term research effort. It has been reviewed by the Human Rights Protocol Considerations (HRPC) Research Group and also by individuals from outside the research group.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8280"/>
          <seriesInfo name="DOI" value="10.17487/RFC8280"/>
        </reference>
      </references>
    </references>
    <?line 817?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
cnjBhtN1bJqOtXaIWPPK6uham9uwbvrh/WGBVwusoYVfvcFDPcwRvcOQ3Tuq
DPlUvTNDhJNgEk66ECkPuqNgNB31R8P6Sa1742bvlNNnkXX27Pz07PSTuKo2
+SpULR/cd+/lwacxO5z0Ovfeiascf/qmtLglKXxXVj4cgfx6iGqT6XAY+kN1
F7/km5v8r+SOn/XAB1/qV4dkjV8dNT/f/X3556cblrPxkvdm03POvnxARNNt
w5W/PnrOo18/zfST3iGlgs9kt3wzAhkYzcfjcd8+6w96o/mozJRWbyN9Hdd/
NYsfCNqqLH0Lm97Oot+YPd/fjT1vYRjLKp/pfpA9iAs+fpoLvpDW7vWgb6bf
9lKanyU7I9Voo4+H6N7zg+44GA3Fm4vjV6/AAjFtD2mze5nxW+hym8o5+pyN
v9XOiwtTjVWcm2wNRxmfzFhqXzXYZORY2pKuZcpHF21xc0noRW+zCJyvBJ1T
qtPuunFUM17Xg8Fi6+47rNxu62Z+0al7vq2Up3tT0z2lSyy/gZXsqjU7P7l4
sUnAxaVLzUoX191Gua4AQfivD/YTOaT6+FildlkCnSN9MyU3sASV7ohDfXek
Vd4doTKS7H7L3Na+3IJK2uRywWV68Q1Euiq64QRcCv4vvUUcLCHMhlBbNXVN
RrqRhqUsV1RXrloLhy5sEhbvCnG1DlB57YWQ9BddiRtQe6H+vokyzkR53uuE
Kqo9vXr+rFlNJWLeJrSltXE+jodvaDFUOWSr77LxrdJc/IYf3LBPZYDJTSpr
SBeadVaRa9ZRJlqjKqtwbYsLQ9iya+auYACom28w4tdlxbkuCxfLDNVNJJ1D
DktlWvG5xXLJ5T2YSukhfV0Y6WIiXC6k6ZzrqNU6aXPxQTkvIHwtZ3PQaK6R
HbjuSNFWuAGKvgUkRUGUr4TOzTt1MwTVzdB8vkwjrgVldraxDCIW4wVOBCx6
np13k9fu/5hta7shA5yt39EtGRNZZ2oBTMoRZKV++RZL8u5MQT4+c7nC61d1
9WOLy6bzYiv13ojhfL0QXaLP7soCG+rYp0wRYjhrcrwmupYh8AoilIoZYpXI
enVo8zUBki2TFCJW0+FxUM4NfI3WOnHHoEiZ1sVzmv1/QHrCVSH15SnOQtHN
+kRhEWTc8Sqhx8ziQ3prSxeq8AgBaOQyhr8bVDV7/xarrnVC1QRgLSHwMhZN
0aLD/ElIxirkm8w/UL2xKZZkGJxaiHT1VTxkTtW1PI9YUgyStlQp095BsZyL
JCQ0Me3stxXqCvdeJafjiOmEssFHkZwa0A69TMVxrIVnxlybMdu3qi/cTznQ
AROTEZXWTtem4HNVrZISVu9QHKP9ItymnL696mkWANxSKUMJSjtNQuSQTW62
HsuS5L4VK1tlwdbytmigusVYPee5U/S7JAl+xGKfJN+kcrYmjkMQKuPuflaj
Zos+R50cFhBT2RzCfM4Cp3WsMw9tezRRw2TpDdeW1x/8AAQGZa3xzNYaF6ba
M5pLvBhL91iJ3fl7CrJasHyJ5X1STF6hSdVUaGrN5xQsj0zB8soEbt3+2icG
yNPBrwbtEcU4LPSBoFpdVX2jTasB6v7+ffXTREAPU4Gpmq4u5GLmeR9wXPDJ
bb0p+PtSb8Xk4oP3YdaCf/jf9j/QC9xfaGk/mPBhv5riB897lUaJ4W5YdMCl
Ifa+RSW+q3xcau/jPPjBnB+go/vVLPHdoc9g/UDoeo4fuBFXu7ViXxRrHafo
IazoBW1kAtfiJ6cAO8icrh64dqyp/SjPv+EFXn2R1hSsAmKCI1LwVr45+kWV
YbX3UHMkyS0K0DxJ+pAM/JrzJy2UC5kt7rvA2sUZZUEf0Wr0t7wc+ODF5cYv
yncVeOGtdt1CrGgMDWA8/I7ZYwmvXuqPHxx4dWa+NlKV05mukImzHvYqZ/BC
mUOCN3SyIXc9IgcdMMh5+YkT/qxMfTCG5tXG16XZKw7YrPoZGGhY+SYckWST
ayKU+J0JiO9APe5UYbcRsczJuzV/GKMkpa4Damr9hmodpzve3SwtAukIZ17c
BTnWifOqt8EB/SPxXC7wbAR9/OdhfsSr5FdPsOimLTNML9uV8BJ7B6ib8QY/
Ntab8qGyIwG+qGi3+J/85TZjgugjICyFxPLzTYbq8hCEXymg3PkuQsqkJ2NL
sc5MYO3cly+IYblEfaQL1Oj3CZAMMWs+sPcFU51gzWr2rDNQfsp2R1k+P7v8
SXwXqXzxZ/MRuB/4Q0C+DN6iTj4O0JmJVbjg+Of9jEmnwu8bcwi3VOMjaJmX
py/BVJiW4Lb+FwvPlLtCcQAA

-->

</rfc>
