<?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  (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-schc-8824-update-02" category="std" consensus="true" submissionType="IETF" obsoletes="8824" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="SCHC for CoAP">Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-schc-8824-update-02"/>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="L." surname="Toutain" fullname="Laurent Toutain">
      <organization>IMT Atlantique</organization>
      <address>
        <postal>
          <street>CS 17607, 2 rue de la Chataigneraie</street>
          <city>Cesson-Sevigne Cedex</city>
          <code>35576</code>
          <country>France</country>
        </postal>
        <email>Laurent.Toutain@imt-atlantique.fr</email>
      </address>
    </author>
    <author initials="I." surname="Martinez" fullname="Ivan Martinez">
      <organization>Nokia Bell Labs</organization>
      <address>
        <postal>
          <street>12 Rue Jean Bart</street>
          <city>Massy</city>
          <code>91300</code>
          <country>France</country>
        </postal>
        <email>ivan.martinez_bolivar@nokia-bell-labs.com</email>
      </address>
    </author>
    <author initials="A." surname="Minaburo" fullname="Ana Minaburo">
      <organization>Consultant</organization>
      <address>
        <postal>
          <street>Rue de Rennes</street>
          <city>Cesson-Sevigne</city>
          <code>35510</code>
          <country>France</country>
        </postal>
        <email>anaminaburo@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="08"/>
    <area>Internet</area>
    <workgroup>SCHC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines how to compress Constrained Application Protocol (CoAP) headers using the Static Context Header Compression and fragmentation (SCHC) framework. SCHC defines a header compression mechanism adapted for Constrained Devices. SCHC uses a static description of the header to reduce the header's redundancy and size. While RFC 8724 describes the SCHC compression and fragmentation framework, and its application for IPv6/UDP headers, this document applies SCHC to CoAP headers. The CoAP header structure differs from IPv6 and UDP, since CoAP uses a flexible header with a variable number of options, themselves of variable length. The CoAP message format is asymmetric: the request messages have a header format different from the format in the response messages. This specification gives guidance on applying SCHC to flexible headers and how to leverage the asymmetry for more efficient compression Rules. This document replaces and obsoletes RFC 8824.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Static Context Header Compression Working Group mailing list (schc@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/schc/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/marco-tiloca-sics/draft-ietf-schc-8824-update"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) <xref target="RFC7252"/> is a command/response protocol designed for microcontrollers with small RAM and ROM, and optimized for services based on REST (Representational State Transfer). Although the Constrained Devices are a leading factor in the design of CoAP, a CoAP header's size is still too large for LPWANs (Low-Power Wide-Area Networks). Static Context Header Compression and fragmentation (SCHC) over CoAP headers is required to increase performance or to use CoAP over LPWAN technologies.</t>
      <t><xref target="RFC8724"/> defines the SCHC framework, which includes a header compression mechanism for LPWANs that is based on a static context. <xref section="5" sectionFormat="of" target="RFC8724"/> explains where compression and decompression occur in the architecture. The SCHC compression scheme assumes as a prerequisite that both endpoints know the static context before transmission. The way the context is configured, provisioned, or exchanged is out of this document's scope.</t>
      <t>CoAP is an application protocol, so CoAP compression requires installing common Rules between the two SCHC instances. SCHC compression may apply at two different levels: at the IP and UDP level in the LPWAN, as well as at the application level for CoAP. These two compression techniques may be independent. Both follow the same principle as that described in <xref target="RFC8724"/>. As different entities manage the CoAP compression process at different levels, the SCHC Rules driving the compression/decompression are also different. <xref target="RFC8724"/> describes how to use SCHC for IP and UDP headers. This document specifies how to apply SCHC compression to CoAP headers.</t>
      <t>SCHC compresses and decompresses headers based on common contexts between Devices. The SCHC context includes multiple Rules. Each Rule can match the header fields to specific values or ranges of values. If a Rule matches, the matched header fields are replaced by the RuleID and the Compression Residue that contains the residual bits of the compression. Thus, different Rules may correspond to different protocol headers in the packet that a Device expects to send or receive.</t>
      <t>A Rule describes the packets' entire header with an ordered list of Field Descriptors (see <xref section="7" sectionFormat="of" target="RFC8724"/>). Thereby, each description contains the Field ID (FID), Field Length (FL), and Field Position (FP), as well as a Direction Indicator (DI) (upstream, downstream, and bidirectional) and some associated Target Values (TVs). The DI is used for compression to give the best TV to the FID when these values differ in their transmission direction. Therefore, a field may be described several times in the same Rule.</t>
      <t>A Matching Operator (MO) is associated with each header Field Descriptor. The Rule is selected if all the MOs fit the TVs for all the fields of the header. A Rule cannot be selected if the message contains a field that is unknown to the SCHC compressor.</t>
      <t>In that case, a Compression/Decompression Action (CDA) associated with each field specifies the method to compress and decompress that field. Compression mainly results in one of four actions:</t>
      <ul spacing="normal">
        <li>
          <t>send the field value (value-sent),</t>
        </li>
        <li>
          <t>send nothing (not-sent),</t>
        </li>
        <li>
          <t>send some Least Significant Bits (LSBs) of the field, or</t>
        </li>
        <li>
          <t>send an index (mapping-sent).</t>
        </li>
      </ul>
      <t>After applying the compression, there may be some bits to be sent. These values are called "Compression Residue".</t>
      <t>SCHC is a general mechanism applied to different protocols, with the exact Rules to be used depending on the protocol and the application. <xref section="10" sectionFormat="of" target="RFC8724"/> describes the compression scheme for IPv6 and UDP headers. This document targets CoAP header compression using SCHC.</t>
      <t>The use of SCHC compression applied to CoAP headers was originally defined in <xref target="RFC8824"/>. While this document does not alter the core approach, design choices, and features specified therein, this document clarifies, updates, and extends the SCHC compression of CoAP headers defined in <xref target="RFC8824"/>.</t>
      <t>In particular, this documents replaces and obsoletes <xref target="RFC8824"/> as follows.</t>
      <ul spacing="normal">
        <li>
          <t>It provides clarifications and amendments to the original specification text, based on collected feedback and reported errata.</t>
        </li>
        <li>
          <t>It clarifies how the SCHC compression handles CoAP options in general (see <xref target="sec-coap-options"/>).</t>
        </li>
        <li>
          <t>It clarifies the SCHC compression for the CoAP options: Size1, Size2, Proxy-Uri, and Proxy-Scheme (see <xref target="ssec-size1-size2-proxy-uri-proxy-scheme-option"/>); ETag and If-Match (see <xref target="ssec-etag-if-match-option"/>); and If-None-Match (see <xref target="ssec-if-none-match"/>).</t>
        </li>
        <li>
          <t>It defines the SCHC compression for the recently defined CoAP options Proxy-CRI and Proxy-Scheme-Number (see <xref target="ssec-proxy-cri-proxy-scheme-number-option"/>).</t>
        </li>
        <li>
          <t>It defines the SCHC compression for the CoAP option Hop-Limit (see <xref target="coap-options-hop-limit"/>).</t>
        </li>
        <li>
          <t>It defines the SCHC compression for the recently defined CoAP options Echo (see <xref target="coap-options-echo"/>), Request-Tag (see <xref target="coap-options-request-tag"/>), EDHOC (see <xref target="coap-options-edhoc"/>), as well as Q-Block1 and Q-Block2 (see <xref target="ssec-coap-extensions-block"/>).</t>
        </li>
        <li>
          <t>It updates the SCHC compression processing for the CoAP option OSCORE (see <xref target="ssec-coap-extensions-oscore"/>), in the light of recent developments related to the security protocol OSCORE as defined in <xref target="I-D.ietf-core-oscore-key-update"/> and <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
        </li>
        <li>
          <t>It clarifies how the SCHC compression handles the CoAP payload marker (see <xref target="payload-marker"/>).</t>
        </li>
        <li>
          <t>It defines the SCHC compression of CoAP headers in the presence of CoAP proxies (see <xref target="compression-with-proxies"/>), for which examples are provided (see <xref target="examples"/>).</t>
        </li>
      </ul>
      <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>
        <t>Readers are expected to be familiar with the terms and concepts related to the SCHC framework <xref target="RFC8724"/>, the web-transfer protocol CoAP <xref target="RFC7252"/>, and the security protocols OSCORE <xref target="RFC8613"/> and Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
      </section>
    </section>
    <section anchor="sec-applicability-to-coap">
      <name>SCHC Applicability to CoAP</name>
      <t>SCHC compression for CoAP headers <bcp14>MAY</bcp14> be done in conjunction with the lower layers (IPv6/UDP) or independently. The SCHC adaptation layers, described in <xref section="5" sectionFormat="of" target="RFC8724"/>, may be used as shown in <xref target="fig-applicability-to-coap-1"/>, <xref target="fig-applicability-to-coap-2"/>, and <xref target="fig-applicability-to-coap-3"/>.</t>
      <t>In the first example depicted in <xref target="fig-applicability-to-coap-1"/>, a Rule compresses the complete header stack from IPv6 to CoAP. In this case, the Device and the Network Gateway (NGW) perform SCHC C/D (SCHC Compression/Decompression, see <xref target="RFC8724"/>). The application communicating with the Device does not implement SCHC C/D.</t>
      <figure anchor="fig-applicability-to-coap-1">
        <name>Compression/Decompression at the LPWAN Boundary</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="512" viewBox="0 0 512 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,64 L 8,224" fill="none" stroke="black"/>
              <path d="M 80,64 L 80,232" fill="none" stroke="black"/>
              <path d="M 128,128 L 128,232" fill="none" stroke="black"/>
              <path d="M 200,160 L 200,224" fill="none" stroke="black"/>
              <path d="M 264,128 L 264,224" fill="none" stroke="black"/>
              <path d="M 432,64 L 432,224" fill="none" stroke="black"/>
              <path d="M 504,64 L 504,224" fill="none" stroke="black"/>
              <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
              <path d="M 432,64 L 504,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 80,96" fill="none" stroke="black"/>
              <path d="M 432,96 L 504,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 80,128" fill="none" stroke="black"/>
              <path d="M 128,128 L 264,128" fill="none" stroke="black"/>
              <path d="M 432,128 L 504,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 80,160" fill="none" stroke="black"/>
              <path d="M 128,160 L 264,160" fill="none" stroke="black"/>
              <path d="M 432,160 L 504,160" fill="none" stroke="black"/>
              <path d="M 8,192 L 80,192" fill="none" stroke="black"/>
              <path d="M 128,192 L 200,192" fill="none" stroke="black"/>
              <path d="M 8,224 L 80,224" fill="none" stroke="black"/>
              <path d="M 128,224 L 264,224" fill="none" stroke="black"/>
              <path d="M 432,224 L 504,224" fill="none" stroke="black"/>
              <path d="M 56,240 L 80,240" fill="none" stroke="black"/>
              <path d="M 128,240 L 152,240" fill="none" stroke="black"/>
              <path d="M 248,240 L 288,240" fill="none" stroke="black"/>
              <path d="M 400,240 L 448,240" fill="none" stroke="black"/>
              <g class="text">
                <text x="44" y="36">(Device)</text>
                <text x="200" y="36">(NGW)</text>
                <text x="464" y="36">(App)</text>
                <text x="44" y="84">CoAP</text>
                <text x="468" y="84">CoAP</text>
                <text x="40" y="116">UDP</text>
                <text x="464" y="116">UDP</text>
                <text x="44" y="148">IPv6</text>
                <text x="196" y="148">IPv6</text>
                <text x="468" y="148">IPv6</text>
                <text x="44" y="180">SCHC</text>
                <text x="164" y="180">SCHC</text>
                <text x="48" y="212">LPWAN</text>
                <text x="160" y="212">LPWAN</text>
                <text x="104" y="244">LPWAN</text>
                <text x="348" y="244">Internet</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
 (Device)             (NGW)                            (App)

+--------+                                           +--------+
|  CoAP  |                                           |  CoAP  |
+--------+                                           +--------+
|  UDP   |                                           |  UDP   |
+--------+     +----------------+                    +--------+
|  IPv6  |     |      IPv6      |                    |  IPv6  |
+--------+     +--------+-------+                    +--------+
|  SCHC  |     |  SCHC  |       |                    |        |
+--------+     +--------+       +                    +        +
|  LPWAN |     | LPWAN  |       |                    |        |
+--------+     +--------+-------+                    +--------+
      ((((LPWAN))))           ------   Internet  -------
]]></artwork>
        </artset>
      </figure>
      <t><xref target="fig-applicability-to-coap-1"/> shows the use of SCHC header compression above Layer 2 in the Device and the NGW. The SCHC layer receives non-encrypted packets and can apply compression Rules to all the headers in the stack. On the other end, the NGW receives the SCHC packet and reconstructs the headers using the Rule and the Compression Residue. After the decompression, the NGW forwards the IPv6 packet toward the destination. The same process applies in the other direction when a non-encrypted packet arrives at the NGW. Thanks to the IP forwarding based on the IPv6 prefix, the NGW identifies the Device and compresses headers using the Device's Rules.</t>
      <t>In the second example depicted in <xref target="fig-applicability-to-coap-2"/>, SCHC compression is applied in the CoAP layer, compressing the CoAP header independently of the other layers. The RuleID, Compression Residue, and CoAP payload are encrypted using a mechanism such as DTLS <xref target="RFC9147"/>. Only the other end (App) can decipher the information. If needed, layers below use SCHC to compress the header as defined in <xref target="RFC8724"/> (represented by dotted lines in the figure).</t>
      <t>This use case needs an end-to-end context initialization between the Device and the application. The context initialization is out of scope for this document.</t>
      <figure anchor="fig-applicability-to-coap-2">
        <name>Standalone CoAP End-to-End Compression/Decompression</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="512" viewBox="0 0 512 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
              <path d="M 80,64 L 80,160" fill="none" stroke="black"/>
              <path d="M 432,64 L 432,160" fill="none" stroke="black"/>
              <path d="M 504,64 L 504,160" fill="none" stroke="black"/>
              <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
              <path d="M 432,64 L 504,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 80,96" fill="none" stroke="black"/>
              <path d="M 432,96 L 504,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 80,128" fill="none" stroke="black"/>
              <path d="M 432,128 L 504,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 80,160" fill="none" stroke="black"/>
              <path d="M 432,160 L 504,160" fill="none" stroke="black"/>
              <path d="M 56,304 L 80,304" fill="none" stroke="black"/>
              <path d="M 128,304 L 152,304" fill="none" stroke="black"/>
              <path d="M 248,304 L 288,304" fill="none" stroke="black"/>
              <path d="M 400,304 L 448,304" fill="none" stroke="black"/>
              <g class="text">
                <text x="44" y="36">(Device)</text>
                <text x="200" y="36">(NGW)</text>
                <text x="464" y="36">(App)</text>
                <text x="44" y="84">CoAP</text>
                <text x="468" y="84">CoAP</text>
                <text x="44" y="116">SCHC</text>
                <text x="468" y="116">SCHC</text>
                <text x="44" y="148">DTLS</text>
                <text x="468" y="148">DTLS</text>
                <text x="8" y="180">.</text>
                <text x="40" y="180">udp</text>
                <text x="80" y="180">.</text>
                <text x="432" y="180">.</text>
                <text x="464" y="180">udp</text>
                <text x="504" y="180">.</text>
                <text x="44" y="196">..........</text>
                <text x="196" y="196">..................</text>
                <text x="468" y="196">..........</text>
                <text x="8" y="212">.</text>
                <text x="44" y="212">ipv6</text>
                <text x="80" y="212">.</text>
                <text x="128" y="212">.</text>
                <text x="196" y="212">ipv6</text>
                <text x="264" y="212">.</text>
                <text x="432" y="212">.</text>
                <text x="468" y="212">ipv6</text>
                <text x="504" y="212">.</text>
                <text x="44" y="228">..........</text>
                <text x="196" y="228">..................</text>
                <text x="468" y="228">..........</text>
                <text x="8" y="244">.</text>
                <text x="44" y="244">schc</text>
                <text x="80" y="244">.</text>
                <text x="128" y="244">.</text>
                <text x="164" y="244">schc</text>
                <text x="200" y="244">.</text>
                <text x="264" y="244">.</text>
                <text x="432" y="244">.</text>
                <text x="504" y="244">.</text>
                <text x="44" y="260">..........</text>
                <text x="164" y="260">..........</text>
                <text x="264" y="260">.</text>
                <text x="432" y="260">.</text>
                <text x="504" y="260">.</text>
                <text x="8" y="276">.</text>
                <text x="48" y="276">lpwan</text>
                <text x="80" y="276">.</text>
                <text x="128" y="276">.</text>
                <text x="160" y="276">lpwan</text>
                <text x="200" y="276">.</text>
                <text x="264" y="276">.</text>
                <text x="432" y="276">.</text>
                <text x="504" y="276">.</text>
                <text x="44" y="292">..........</text>
                <text x="196" y="292">..................</text>
                <text x="468" y="292">..........</text>
                <text x="104" y="308">LPWAN</text>
                <text x="348" y="308">Internet</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
 (Device)             (NGW)                            (App)

+--------+                                           +--------+
|  CoAP  |                                           |  CoAP  |
+--------+                                           +--------+
|  SCHC  |                                           |  SCHC  |
+--------+                                           +--------+
|  DTLS  |                                           |  DTLS  |
+--------+                                           +--------+
.  udp   .                                           .  udp   .
..........     ..................                    ..........
.  ipv6  .     .      ipv6      .                    .  ipv6  .
..........     ..................                    ..........
.  schc  .     .  schc  .       .                    .        .
..........     ..........       .                    .        .
.  lpwan .     . lpwan  .       .                    .        .
..........     ..................                    ..........
      ((((LPWAN))))           ------   Internet  -------
]]></artwork>
        </artset>
      </figure>
      <t>The third example depicted in <xref target="fig-applicability-to-coap-3"/> shows the use of Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/>. In this case, SCHC needs two Rules to compress the CoAP header. A first Rule focuses on the Inner header. The result of this first compression is encrypted using the OSCORE mechanism. Then, a second Rule compresses the Outer header, including the CoAP Option OSCORE.</t>
      <figure anchor="fig-applicability-to-coap-3">
        <name>OSCORE Compression/Decompression</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="416" width="512" viewBox="0 0 512 416" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,64 L 8,256" fill="none" stroke="black"/>
              <path d="M 80,64 L 80,256" fill="none" stroke="black"/>
              <path d="M 432,64 L 432,256" fill="none" stroke="black"/>
              <path d="M 504,64 L 504,256" fill="none" stroke="black"/>
              <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
              <path d="M 432,64 L 504,64" fill="none" stroke="black"/>
              <path d="M 8,112 L 80,112" fill="none" stroke="black"/>
              <path d="M 432,112 L 504,112" fill="none" stroke="black"/>
              <path d="M 8,160 L 80,160" fill="none" stroke="black"/>
              <path d="M 432,160 L 504,160" fill="none" stroke="black"/>
              <path d="M 8,208 L 80,208" fill="none" stroke="black"/>
              <path d="M 432,208 L 504,208" fill="none" stroke="black"/>
              <path d="M 8,256 L 80,256" fill="none" stroke="black"/>
              <path d="M 432,256 L 504,256" fill="none" stroke="black"/>
              <path d="M 56,400 L 80,400" fill="none" stroke="black"/>
              <path d="M 128,400 L 152,400" fill="none" stroke="black"/>
              <path d="M 248,400 L 288,400" fill="none" stroke="black"/>
              <path d="M 400,400 L 448,400" fill="none" stroke="black"/>
              <g class="text">
                <text x="44" y="36">(Device)</text>
                <text x="200" y="36">(NGW)</text>
                <text x="464" y="36">(App)</text>
                <text x="44" y="84">CoAP</text>
                <text x="468" y="84">CoAP</text>
                <text x="48" y="100">Inner</text>
                <text x="472" y="100">Inner</text>
                <text x="44" y="132">SCHC</text>
                <text x="468" y="132">SCHC</text>
                <text x="48" y="148">Inner</text>
                <text x="472" y="148">Inner</text>
                <text x="44" y="180">CoAP</text>
                <text x="468" y="180">CoAP</text>
                <text x="48" y="196">Outer</text>
                <text x="472" y="196">Outer</text>
                <text x="44" y="228">SCHC</text>
                <text x="468" y="228">SCHC</text>
                <text x="48" y="244">Outer</text>
                <text x="472" y="244">Outer</text>
                <text x="8" y="276">.</text>
                <text x="40" y="276">udp</text>
                <text x="80" y="276">.</text>
                <text x="432" y="276">.</text>
                <text x="464" y="276">udp</text>
                <text x="504" y="276">.</text>
                <text x="44" y="292">..........</text>
                <text x="196" y="292">..................</text>
                <text x="468" y="292">..........</text>
                <text x="8" y="308">.</text>
                <text x="44" y="308">ipv6</text>
                <text x="80" y="308">.</text>
                <text x="128" y="308">.</text>
                <text x="196" y="308">ipv6</text>
                <text x="264" y="308">.</text>
                <text x="432" y="308">.</text>
                <text x="468" y="308">ipv6</text>
                <text x="504" y="308">.</text>
                <text x="44" y="324">..........</text>
                <text x="196" y="324">..................</text>
                <text x="468" y="324">..........</text>
                <text x="8" y="340">.</text>
                <text x="44" y="340">schc</text>
                <text x="80" y="340">.</text>
                <text x="128" y="340">.</text>
                <text x="164" y="340">schc</text>
                <text x="200" y="340">.</text>
                <text x="264" y="340">.</text>
                <text x="432" y="340">.</text>
                <text x="504" y="340">.</text>
                <text x="44" y="356">..........</text>
                <text x="164" y="356">..........</text>
                <text x="264" y="356">.</text>
                <text x="432" y="356">.</text>
                <text x="504" y="356">.</text>
                <text x="8" y="372">.</text>
                <text x="48" y="372">lpwan</text>
                <text x="80" y="372">.</text>
                <text x="128" y="372">.</text>
                <text x="160" y="372">lpwan</text>
                <text x="200" y="372">.</text>
                <text x="264" y="372">.</text>
                <text x="432" y="372">.</text>
                <text x="504" y="372">.</text>
                <text x="44" y="388">..........</text>
                <text x="196" y="388">..................</text>
                <text x="468" y="388">..........</text>
                <text x="104" y="404">LPWAN</text>
                <text x="348" y="404">Internet</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
 (Device)             (NGW)                            (App)

+--------+                                           +--------+
|  CoAP  |                                           |  CoAP  |
|  Inner |                                           |  Inner |
+--------+                                           +--------+
|  SCHC  |                                           |  SCHC  |
|  Inner |                                           |  Inner |
+--------+                                           +--------+
|  CoAP  |                                           |  CoAP  |
|  Outer |                                           |  Outer |
+--------+                                           +--------+
|  SCHC  |                                           |  SCHC  |
|  Outer |                                           |  Outer |
+--------+                                           +--------+
.  udp   .                                           .  udp   .
..........     ..................                    ..........
.  ipv6  .     .      ipv6      .                    .  ipv6  .
..........     ..................                    ..........
.  schc  .     .  schc  .       .                    .        .
..........     ..........       .                    .        .
.  lpwan .     . lpwan  .       .                    .        .
..........     ..................                    ..........
      ((((LPWAN))))           ------   Internet  -------
]]></artwork>
        </artset>
      </figure>
      <t>In the case of several SCHC instances, as shown in <xref target="fig-applicability-to-coap-2"/> and <xref target="fig-applicability-to-coap-3"/>, the Rules may come from different provisioning domains.</t>
      <t>This document focuses on CoAP compression, as represented by the dashed boxes in the previous figures.</t>
    </section>
    <section anchor="sec-coap-header-compression">
      <name>CoAP Headers Compressed with SCHC</name>
      <t>The use of SCHC over the CoAP header applies the same description and compression/decompression techniques as the technique used for IP and UDP, as explained in <xref target="RFC8724"/>. For CoAP, the SCHC Rules description uses the direction information to optimize the compression by reducing the number of Rules needed to compress headers. The Field Descriptor <bcp14>MAY</bcp14> define both request/response headers and TVs in the same Rule, using the DI to indicate the header type.</t>
      <t>As for other header compression protocols, when the compressor does not find a correct Rule to compress the header, the packet <bcp14>MUST</bcp14> be sent uncompressed using the RuleID dedicated to this purpose, and where the Compression Residue is the complete header of the packet (see <xref section="6" sectionFormat="of" target="RFC8724"/>).</t>
      <section anchor="ssec-differences-with-udp-ip">
        <name>Differences between CoAP and UDP/IP Compression</name>
        <t>CoAP compression differs from IPv6 and UDP compression in the following aspects:</t>
        <ul spacing="normal">
          <li>
            <t>The CoAP message format is asymmetric, i.e., the headers are different for a request or a response. For example, the Uri-Path Option can be used in a request, while it is not used in a response. A request might contain an Accept Option, and a response might include a Content-Format Option. In comparison, the IPv6 and UDP returning path swaps the value of some fields in the header. However, all the directions have the same fields (e.g., source and destination address fields).  </t>
            <t><xref target="RFC8724"/> defines the use of a DI in the Field Descriptor, which allows a single Rule to process a message header differently, depending on the direction.</t>
          </li>
          <li>
            <t>Even when a field is "symmetric" (i.e., found in both directions), the values carried in each direction are different. The compression may use a "match-mapping" MO to limit the range of expected values in a particular direction and reduce the Compression Residue's size. Through the DI, a Field Descriptor in the Rules splits the possible field value into two parts, one for each direction. For instance, if a client sends only Confirmable (CON) requests <xref target="RFC7252"/>, the Type can be elided by compression, and the reply from the server may use one single bit to carry either the Acknowledgement (ACK) or Reset (RST) type. The field Code has the same behavior: the 0.0X code format value in a request and the Y.ZZ code format in a response.</t>
          </li>
          <li>
            <t>In SCHC, the Rule defines the different header fields' length, so SCHC does not need to send it. In IPv6 and UDP headers, the fields have a fixed size, known by definition. On the other hand, some CoAP header fields have variable lengths, and the Rule description specifies it. For example, the size of the Token field may vary from 0 to 8 bytes, and the CoAP options rely on the Type-Length-Value encoding format to specify the size of the actual option value in bytes.  </t>
            <t>
When doing SCHC compression of a variable-length field, <xref section="7.4.2" sectionFormat="of" target="RFC8724"/> makes it possible to define a function for the Field Length in the Field Descriptor, in order to determine the length before compression. If the Field Length is unknown, the Rule will set it as a variable, and SCHC will send the compressed field's length in the Compression Residue.</t>
          </li>
          <li>
            <t>A field can appear several times in the CoAP headers. This is typically the case for elements of a URI (path or queries). The SCHC specification <xref target="RFC8724"/> allows a FID to appear several times in the Rule and uses the Field Position (FP) to identify the correct instance, thereby removing the MO's ambiguity.</t>
          </li>
          <li>
            <t>Field Lengths defined in CoAP can be too large when it comes to LPWAN traffic constraints. For instance, this is particularly true for the Message ID field and the Token field. SCHC uses different MOs to perform the compression (see <xref section="7.4" sectionFormat="of" target="RFC8724"/>). In this case, SCHC can apply the Most Significant Bits (MSBs) MO to reduce the information carried on LPWANs.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-coap-fields-compression">
      <name>Compression of CoAP Header Fields</name>
      <t>This section discusses the SCHC compression of the CoAP header fields, building on what is specified in <xref section="7.1" sectionFormat="of" target="RFC8724"/>.</t>
      <section anchor="ssec-coap-version-field">
        <name>CoAP Version Field</name>
        <t>The CoAP version is bidirectional and <bcp14>MUST</bcp14> be elided during SCHC compression, since it always contains the same value. In the future, or if a new version of CoAP is defined, new Rules will be needed to avoid ambiguities between versions.</t>
      </section>
      <section anchor="ssec-coap-type-field">
        <name>CoAP Type Field</name>
        <t>CoAP <xref target="RFC7252"/> has four types of messages: Confirmable (CON), Non-confirmable (NON), Acknowledgement (ACK), and Reset (RST).</t>
        <t>The SCHC compression scheme <bcp14>SHOULD</bcp14> elide this field if, for instance, a client is sending only NON messages or only CON messages. For RST messages, SCHC may use a dedicated Rule. For other usages, SCHC can use a "match-mapping" MO.</t>
      </section>
      <section anchor="ssec-coap-code-field">
        <name>CoAP Code Field</name>
        <t>The Code field takes value from the "Code" column of the "CoAP Codes" IANA registry, encoded as specified in <xref section="3" sectionFormat="of" target="RFC7252"/>. This field indicates the Method Code of a CoAP request or the Response Code of a CoAP Response, while the value 0.00 indicates an Empty message. The compression of the CoAP Code field follows the same principle as that of the CoAP Type field.</t>
        <t>If the Device plays a specific role, SCHC may split the code values into two Field Descriptors: (1) the Method Codes with the 0 class and (2) the Response Codes. SCHC will use the DI to identify the correct value in the packet. If the Device only implements a CoAP client, SCHC compression may focus only on the Method Codes that the client uses in its outgoing requests.</t>
        <t>For known values, SCHC can use a "match-mapping" MO. If SCHC cannot compress the Code field, it will send the values in the Compression Residue.</t>
      </section>
      <section anchor="ssec-coap-message-id-field">
        <name>CoAP Message ID Field</name>
        <t>SCHC can compress the Message ID field with the MSB MO and the LSB CDA (see <xref section="7.4" sectionFormat="of" target="RFC8724"/>).</t>
      </section>
      <section anchor="ssec-coap-token-field">
        <name>CoAP Token Field</name>
        <t>CoAP defines the Token using two CoAP fields: Token Length in the mandatory header and Token Value directly following the mandatory CoAP header.</t>
        <t>SCHC processes the Token Length as it would process any header field. If the value does not change, the size can be stored in the TV and elided during the transmission. Otherwise, SCHC will send the Token Length in the Compression Residue.</t>
        <t>For the Token Value, SCHC <bcp14>MUST NOT</bcp14> send it as variable-size data in the Compression Residue, to avoid ambiguity with the Token Length. Therefore, SCHC <bcp14>MUST</bcp14> use the Token Length value to define the size of the Compression Residue. SCHC designates a specific function, "tkl", that the Rule <bcp14>MUST</bcp14> use to complete the Field Descriptor. During the decompression, this function returns the value contained in the Token Length field.</t>
      </section>
    </section>
    <section anchor="sec-coap-options">
      <name>Compression of CoAP Options</name>
      <t>CoAP defines options placed after the mandatory header and the Token field, ordered by option number (see <xref section="3" sectionFormat="of" target="RFC7252"/>). As per <xref section="3.1" sectionFormat="of" target="RFC7252"/>, each option instance in a message uses the format Option Delta (D), Option Length (L), Option Value (V).</t>
      <t>In particular, the Option Delta is used to express the option number of a CoAP option within a CoAP message, as the difference between the Option Number of that option and the Option Number of the previous option in that message (or zero for the first option). Also, the Option Length specifies the length of the Option Value, in bytes.</t>
      <t>In a SCHC Rule, the Field Descriptor related to a CoAP option is as follows:</t>
      <ul spacing="normal">
        <li>
          <t>the FID is set to an unambiguous identifier of the CoAP option associated with the corresponding option number;</t>
        </li>
        <li>
          <t>the FL is set to the Option Length L of the CoAP option, encoded as per <xref section="7.1" sectionFormat="of" target="RFC8724"/>; and</t>
        </li>
        <li>
          <t>the TV is set to the Option Value V of the CoAP option.</t>
        </li>
      </ul>
      <t>Note that the MO and the CDA specified in the Field Descriptor operates only on the Option Value V. That is, SCHC compression produces a residue from the Option Value V, while ignoring the option number, the Option Delta, and the Option Length. Therefore, the residue of a SCHC packet conveying a compressed CoAP header does not include the option number, the Option Delta, and the Option Length, which the recipient will be able to reconstruct by performing SCHC Decompression.</t>
      <t>When the Option Length has a well-known value, the Rule may specify the Option Length value in the FL of the Field Descriptor (see above). In such a case, SCHC compression treats the Option Value as a fixed-length field (see <xref section="7.4.1" sectionFormat="of" target="RFC8724"/>).</t>
      <t>Otherwise, the Rule specifies the FL of the Field Descriptor as indicating a variable length, and SCHC compression treats the Option Value as a variable-length field (see <xref section="7.4.2" sectionFormat="of" target="RFC8724"/>). That is, SCHC compression additionally carries the length of the Compression Residue, as prepended to the Compression Residue value. Note that the length coding differs between CoAP options and the Compression Residue of SCHC variable-length fields.</t>
      <t>CoAP requests and responses do not include the same options. Compression Rules may reflect this asymmetry by using the DI.</t>
      <t>The following sections present how SCHC compresses some specific CoAP options. Unless otherwise indicated, the referred CoAP options are specified in <xref target="RFC7252"/>.</t>
      <t>If the use of an additional CoAP option is later introduced, the SCHC Rules <bcp14>MAY</bcp14> be updated, in which case a new FID description <bcp14>MUST</bcp14> be assigned to perform the compression of the CoAP option. Otherwise, if no Rule describes that CoAP option, SCHC compression is not achieved, and SCHC sends the CoAP header without compression.</t>
      <section anchor="ssec-content-format-accept-option">
        <name>CoAP Option Content-Format and Accept Fields</name>
        <t>If the client expects a single specific value, SCHC can elide these fields, by specifying the value in the TV of a Rule description with an "equal" MO and a "not-sent" CDA. Otherwise, if the client expects several possible values, a "match-mapping" MO <bcp14>SHOULD</bcp14> be used to limit the Compression Residue's size. If not, SCHC has to send the option value in the Compression Residue (with fixed or variable length).</t>
      </section>
      <section anchor="ssec-max-age-uri-host-uri-port-option">
        <name>CoAP Option Max-Age, Uri-Host, and Uri-Port Fields</name>
        <t>SCHC compresses these three fields in the same way. When the values of these options are known, SCHC can elide these fields. If the option uses well-known values, SCHC can use a "match-mapping" MO. Otherwise, these options' values will be sent in the Compression Residue, i.e., the SCHC Rule description does not set the TV, while setting the MO to "ignore" and the CDA to "value-sent".</t>
      </section>
      <section anchor="ssec-uri-path-uri-query-option">
        <name>CoAP Option Uri-Path and Uri-Query Fields</name>
        <t>The Uri-Path and Uri-Query fields are repeatable options, i.e., the CoAP header may include them several times and with different values. The SCHC Rule description uses the FP to distinguish the different instances of such options.</t>
        <t>To compress these repeatable field values, SCHC can use a "match-mapping" MO to reduce the size of variable paths or queries. When doing so, several elements can be regrouped into a single entry in order to optimize the compression. The numbering of elements does not change, and the first matching element sets the MO comparison.</t>
        <t>For example, as per the Rule descriptions shown in <xref target="_table-complex-path"/>, SCHC can use a single bit in the Compression Residue to code the path segments "/a/b" or the path segments "/c/d". If regrouping were not allowed, then 2 bits in the Compression Residue would be needed. At the same time, SCHC sends the third path element following "/a/b" or "/c/d" as a variable-size field in the Compression Residue.</t>
        <table align="center" anchor="_table-complex-path">
          <name>Complex Path Example</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Uri-Path</td>
              <td align="left"> </td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">
                <tt>["/a/b",</tt> <br/> <tt>"/c/d"]</tt></td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">mapping-sent</td>
            </tr>
            <tr>
              <td align="left">Uri-Path</td>
              <td align="left">var</td>
              <td align="left">3</td>
              <td align="left">Up</td>
              <td align="left"> </td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
            </tr>
          </tbody>
        </table>
        <t>The length of the Uri-Path and Uri-Query Options may be known when the Rule is defined. In any other case, SCHC <bcp14>MUST</bcp14> set the Field Length (FL) to a variable value. The unit of the variable length is bytes, hence the Compression Residue size is expressed in bytes, encoded as defined in <xref section="7.4.2" sectionFormat="of" target="RFC8724"/>.</t>
        <t>SCHC compression can use the MSB MO for a Uri-Path or Uri-Query element. In such a case, care must be taken when specifying the MSB parameter value in bits, which <bcp14>MUST</bcp14> be a multiple of 8. The length sent at the beginning of the variable-size field Compression Residue indicates the LSB's size in bytes, consistent with the unit of the variable length in the Rule description.</t>
        <t>For instance, for a CORECONF path /c/X6?k=eth0, the Rule description can be as shown in <xref target="_table-CoMicompress"/>. That is, SCHC compresses the first part of the Uri-Path with a "not-sent" CDA. Also, SCHC will send the second element of the Uri-Path with the length (i.e., 0x2 "X6") followed by the query option with the length (i.e., 0x4 "eth0").</t>
        <table align="center" anchor="_table-CoMicompress">
          <name>CORECONF URI compression</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Uri-Path</td>
              <td align="left"> </td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">"c"</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">Uri-Path</td>
              <td align="left">var</td>
              <td align="left">2</td>
              <td align="left">Up</td>
              <td align="left"> </td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
            </tr>
            <tr>
              <td align="left">Uri-Query</td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">"k="</td>
              <td align="left">MSB(16)</td>
              <td align="left">LSB</td>
            </tr>
          </tbody>
        </table>
        <section anchor="variable-number-of-path-or-query-elements">
          <name>Variable Number of Path or Query Elements</name>
          <t>SCHC fixes the number of Uri-Path or Uri-Query elements in a Rule at Rule creation time. If the number of such elements varies, SCHC <bcp14>SHOULD</bcp14> either:</t>
          <ul spacing="normal">
            <li>
              <t>create several Rules to cover all possibilities; or</t>
            </li>
            <li>
              <t>create a Rule that defines several entries for Uri-Path to cover the longest path, and send a Compression Residue with a length of 0 to indicate that a Uri-Path entry is empty.  </t>
              <t>
However, this adds 4 bits to the variable Compression Residue size (see <xref section="7.4.2" sectionFormat="of" target="RFC8724"/>).</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="ssec-size1-size2-proxy-uri-proxy-scheme-option">
        <name>CoAP Option Size1, Size2, Proxy-Uri, and Proxy-Scheme Fields</name>
        <t>The Size2 field is an option defined in <xref target="RFC7959"/>.</t>
        <t>The SCHC Rule description <bcp14>MAY</bcp14> define sending some field values by not setting the TV, while setting the MO to "ignore" and the CDA to "value-sent". A Rule <bcp14>MAY</bcp14> also use a "match-mapping" MO when there are different alternatives for the same FID. Otherwise, the Rule sets the TV to a specific value, the MO to "equal", and the CDA to "not-sent".</t>
      </section>
      <section anchor="ssec-proxy-cri-proxy-scheme-number-option">
        <name>CoAP Option Proxy-CRI and Proxy-Scheme-Number Fields</name>
        <t>The Proxy-CRI field is an option defined in <xref target="I-D.ietf-core-href"/>. The option carries an encoded CBOR data item <xref target="RFC8949"/> that represents an absolute CRI reference (see <xref section="5" sectionFormat="of" target="I-D.ietf-core-href"/>). The option is used analogously to the Proxy-Uri option as defined in <xref section="5.10.2" sectionFormat="of" target="RFC7252"/>.</t>
        <t>The Proxy-Scheme-Number field is an option defined in <xref target="I-D.ietf-core-href"/>. The option carries a CRI Scheme Number represented as a CoAP unsigned integer (see Sections <xref target="I-D.ietf-core-href" section="5.1.1" sectionFormat="bare"/> and <xref target="I-D.ietf-core-href" section="8.1" sectionFormat="bare"/> of <xref target="I-D.ietf-core-href"/>). The option is used analogously to the Proxy-Scheme option as defined in <xref section="5.10.2" sectionFormat="of" target="RFC7252"/>.</t>
        <t>The SCHC Rule description <bcp14>MAY</bcp14> define sending some field values by not setting the TV, while setting the MO to "ignore" and the CDA to "value-sent". A Rule <bcp14>MAY</bcp14> also use a "match-mapping" MO when there are different alternatives for the same FID. Otherwise, the Rule sets the TV to a specific value, the MO to "equal", and the CDA to "not-sent".</t>
      </section>
      <section anchor="ssec-location-path-location-query-option">
        <name>CoAP Location-Path and Location-Query Fields</name>
        <t>A Rule entry cannot store these fields' values. Therefore, SCHC compression <bcp14>MUST</bcp14> always send these values in the Compression Residue. That is, in the SCHC Rule, the TV is not set, while the MO is set to "ignore" and the CDA is set to "value-sent".</t>
      </section>
      <section anchor="ssec-etag-if-match-option">
        <name>CoAP Option ETag and If-Match Fields</name>
        <t>When a CoAP message uses the ETag Option or the If-Match Option, SCHC compression <bcp14>MAY</bcp14> send its content in the Compression Residue. That is, in the SCHC Rule, the TV is not set, while the MO is set to "ignore" and the CDA is set to "value-sent". Alternatively, if a pre-defined set of values determined by the server is known and is used by the client as ETag values or If-Match values, then a Rule <bcp14>MAY</bcp14> use a "match-mapping" MO when there are different alternatives for the same FID.</t>
      </section>
      <section anchor="ssec-if-none-match">
        <name>CoAP Option If-None-Match</name>
        <t>The If-None-Match Option occurs at most once and is always empty. The SCHC Rule <bcp14>MUST</bcp14> describe an empty TV, with the MO set to "equal" and the CDA set to "not-sent".</t>
      </section>
      <section anchor="coap-options-hop-limit">
        <name>CoAP Option Hop-Limit Field</name>
        <t>The Hop-Limit field is an option defined in <xref target="RFC8768"/> that can be used to detect forwarding loops through a chain of CoAP proxies. The first proxy in the chain that understands the option includes it in a received request with a proper value set, before forwarding the request. Any following proxy that understands the option decrements the option value and forwards the request if the new value is different than zero, or returns a 5.08 (Hop Limit Reached) error response otherwise.</t>
        <t>When a CoAP message uses the Hop-Limit Option, SCHC compression <bcp14>SHOULD</bcp14> send its content in the Compression Residue. That is, in the SCHC Rule, the TV is not set, while the MO is set to "ignore" and the CDA is set to "value-sent". As an exception, and consistently with the default value 16 defined for the Hop-Limit Option in <xref section="3" sectionFormat="of" target="RFC8768"/>, a Rule <bcp14>MAY</bcp14> describe a TV with value 16, with the MO set to "equal" and the CDA set to "not-sent".</t>
      </section>
      <section anchor="coap-options-echo">
        <name>CoAP Option Echo Field</name>
        <t>The Echo field is an option defined in <xref target="RFC9175"/> that a server can include in a CoAP response as a challenge to the client, and that the client echoes back to the server in one or more CoAP requests. This enables the server to verify the freshness of a request and to cryptographically verify the aliveness of the client. Also, it forces the client to demonstrate reachability at its claimed network address.</t>
        <t>When a CoAP message uses the Echo Option, SCHC compression <bcp14>SHOULD</bcp14> send its content in the Compression Residue. That is, in the SCHC Rule, the TV is not set, while the MO is set to "ignore" and the CDA is set to "value-sent". An exception applies in case the server generates the values to use for the Echo Option by means of a persistent counter (see <xref section="A" sectionFormat="of" target="RFC9175"/>). In such a case, a Rule <bcp14>MAY</bcp14> use the MSB MO and the LSB CDA. This would be effectively applicable until the persistent counter at the server becomes greater than the maximum threshold value that produces an MSB-matching.</t>
      </section>
      <section anchor="coap-options-request-tag">
        <name>CoAP Option Request-Tag Field</name>
        <t>The Request-Tag field is an option defined in <xref target="RFC9175"/> that the client can set in CoAP requests throughout block-wise operations, with value an ephemeral short-lived identifier of the specific block-wise operation in question. This allows the server to match message fragments belonging to the same request operation and, if the server supports it, to reliably process simultaneous block-wise request operations on a single resource. If requests are integrity protected, this also protects against interchange of fragments between different block-wise request operations.</t>
        <t>When a CoAP message uses the Request-Tag Option, SCHC compression <bcp14>MAY</bcp14> send its content in the Compression Residue. That is, in the SCHC Rule, the TV is not set, while the MO is set to "ignore" and the CDA is set to "value-sent". Alternatively, if a pre-defined set of Request-Tag values used by the client is known, a Rule <bcp14>MAY</bcp14> use a "match-mapping" MO when there are different alternatives for the same FID.</t>
      </section>
      <section anchor="coap-options-edhoc">
        <name>CoAP Option EDHOC Field</name>
        <t>The EDHOC field is an option defined in <xref target="I-D.ietf-core-oscore-edhoc"/> that a client can include in a CoAP request, in order to perform an optimized, shortened execution of the authenticated key exchange protocol EDHOC <xref target="RFC9528"/>. Such a request conveys both the final EDHOC message and actual application data, where the latter is protected with OSCORE <xref target="RFC8613"/> using a Security Context derived from the result of the current EDHOC execution.</t>
        <t>The EDHOC Option occurs at most once and is always empty. The SCHC Rule <bcp14>MUST</bcp14> describe an empty TV, with the MO set to "equal" and the CDA set to "not-sent".</t>
      </section>
    </section>
    <section anchor="sec-coap-extensions">
      <name>Compression of CoAP Extensions</name>
      <section anchor="ssec-coap-extensions-block">
        <name>Block</name>
        <t>When a CoAP message uses a Block1 or Block2 Option <xref target="RFC7959"/> or a Q-Block1 or Q-Block2 Option <xref target="RFC9177"/>, SCHC compression <bcp14>MUST</bcp14> send its content in the Compression Residue. In the SCHC Rule, the TV is not set, while the MO is set to "ignore" and the CDA is set to "value-sent". The Block1, Block2, Q-Block1, and Q-Block2 options allow fragmentation at the CoAP level that is compatible with SCHC fragmentation. Both fragmentation mechanisms are complementary, and the node may use them for the same packet as needed.</t>
      </section>
      <section anchor="ssec-coap-extensions-observe">
        <name>Observe</name>
        <t><xref target="RFC7641"/> defines the Observe Option. The SCHC Rule description does not set the TV, while setting the MO to "ignore" and the CDA to "value-sent". SCHC does not limit the maximum size for this option (3 bytes). To reduce the transmission size, either the Device implementation <bcp14>MAY</bcp14> limit the delta between two consecutive values or a proxy can modify the increment.</t>
        <t>Since the client <bcp14>MAY</bcp14> use a RST message to inform a server that the Observe response is not required, a specific SCHC Rule <bcp14>SHOULD</bcp14> exist to allow the compression of a RST message.</t>
      </section>
      <section anchor="ssec-coap-extensions-no-response">
        <name>No-Response</name>
        <t><xref target="RFC7967"/> defines a No-Response Option limiting the CoAP responses made by a server to a CoAP request. Different behaviors exist while using this option to limit the responses made by a server to a request. If both ends know the specific value, then the SCHC Rule describes the TV set to that value, the MO set to "equal", and the CDA set to "not-sent".</t>
        <t>Otherwise, if the value changes over time, the SCHC Rule does not set the TV, while setting the MO to "ignore" and the CDA to "value-sent". The Rule may also use a "match-mapping" MO to compress the value.</t>
      </section>
      <section anchor="ssec-coap-extensions-oscore">
        <name>OSCORE</name>
        <t>The security protocol OSCORE <xref target="RFC8613"/> provides end-to-end protection for CoAP messages. Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> builds on OSCORE and defines end-to-end protection of CoAP messages in group communication <xref target="I-D.ietf-core-groupcomm-bis"/>. This section describes how SCHC Rules can be applied to compress messages protected with OSCORE or Group OSCORE.</t>
        <t><xref target="fig-oscore-option"/> shows the OSCORE Option value encoding, as it was originally defined in <xref section="6.1" sectionFormat="of" target="RFC8613"/>. As explained later in this section, this has been extended in <xref target="I-D.ietf-core-oscore-key-update"/> and <xref target="I-D.ietf-core-oscore-groupcomm"/>. The first byte of the OSCORE Option value specifies information to parse the rest of the value by using flags, as described below.</t>
        <ul spacing="normal">
          <li>
            <t>As defined in <xref section="4.1" sectionFormat="of" target="I-D.ietf-core-oscore-key-update"/>, the eight least significant bit, when set, indicates that the OSCORE Option includes a second byte of flags. The seventh least significant bit is currently unassigned.</t>
          </li>
          <li>
            <t>As defined in <xref section="5" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, the sixth least significant bit, when set, indicates that the message including the OSCORE option is protected with the group mode of Group OSCORE (see <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>). When not set, the bit indicates that the message is protected either with OSCORE, or with the pairwise mode of Group OSCORE (see <xref section="9" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), while the specific OSCORE Security Context used to protect the message determines which of the two cases applies.</t>
          </li>
          <li>
            <t>As defined in <xref section="6.1" sectionFormat="of" target="RFC8613"/>, bit h, when set, indicates the presence of the kid context field in the option. Also, bit k, when set, indicates the presence of the kid field. Finally, the three least significant bits form the n field, which indicates the length of the piv (Partial Initialization Vector) field in bytes. When n = 0, no piv is present.</t>
          </li>
        </ul>
        <t>Assuming the presence of a single flag byte, this is followed by the piv field. After that, if the h bit is set, the kid context field is present, preceded by one byte "s" indicating its length in bytes. After that, if the k bit is set, the kid field is present, and it ends where the OSCORE Option value ends.</t>
        <figure anchor="fig-oscore-option">
          <name>OSCORE Option</name>
          <artwork align="center"><![CDATA[
 0 1 2 3 4 5 6 7 <--------- n bytes ------------->
+-+-+-+-+-+-+-+-+---------------------------------+
|0 0 0|h|k|  n  |        Partial IV (if any)      |
+-+-+-+-+-+-+-+-+---------------------------------+
|               |                                 |
|<--   CoAP  -->|<------- CoAP OSCORE_piv ------> |
   OSCORE_flags

 <-- 1 byte --> <------ s bytes ----->
+--------------+----------------------+-----------------------+
|  s (if any)  | kid context (if any) | kid (if any)      ... |
+--------------+----------------------+-----------------------+
|                                     |                       |
|<-------- CoAP OSCORE_kidctx ------->|<-- CoAP OSCORE_kid -->|
]]></artwork>
        </figure>
        <t><xref target="fig-oscore-option-kudos"/> shows the extended OSCORE Option value encoding, with the second byte of flags also present. As defined in <xref section="4.1" sectionFormat="of" target="I-D.ietf-core-oscore-key-update"/>, the least significant bit d of this byte, when set, indicates that two additional fields are included in the option, following the kid context field (if any).</t>
        <t>These two fields, namely x and nonce, are used when running the key update protocol KUDOS defined in <xref target="I-D.ietf-core-oscore-key-update"/>, with x specifying the length of the nonce field in bytes as well as the specific behavior to adopt during the KUDOS execution.</t>
        <t>If the seventh least significant bit z of the x field is set, it indicates that two additional fields are included in the option, following the x and nonce fields. These two fields, namely y and old_nonce, are also used when running the key update protocol KUDOS, with y specifying the length of the old_nonce field in bytes.</t>
        <t><xref target="fig-oscore-option-kudos"/> provides the breakdown of the x field, where its four least significant bits form the sub-field m, which specifies the size of nonce in bytes, minus 1. Also, the figure provides the breakdown of the y field, where its four least significant bits form the sub-field w, which specifies the size of old_nonce in bytes, minus 1.</t>
        <figure anchor="fig-oscore-option-kudos">
          <name>OSCORE Option extended to support a KUDOS execution</name>
          <artwork align="center"><![CDATA[
 0 1 2 3 4 5 6 7  8   9   10  11  12  13  14  15 <----- n bytes ----->
+-+-+-+-+-+-+-+-+---+---+---+---+---+---+---+---+---------------------+
|1|0|0|h|k|  n  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | d | Partial IV (if any) |
+-+-+-+-+-+-+-+-+---+---+---+---+---+---+---+---+---------------------+
|                                               |                     |
|<------------------- CoAP -------------------->|<- CoAP OSCORE_piv ->|
                   OSCORE_flags

 <- 1 byte -> <----------- s bytes ------------>
+------------+----------------------------------+
| s (if any) |       kid context (if any)       |
+------------+----------------------------------+
|                                               |
|<------------- CoAP OSCORE_kidctx ------------>|


 <------ 1 byte -----> <----- m + 1 bytes ----->
+---------------------+-------------------------+
|     x (if any)      |      nonce (if any)     |
+---------------------+-------------------------+
|<-- CoAP OSCORE_x -->|<-- CoAP OSCORE_nonce -->|
|                     |
|   0 1 2 3 4 5 6 7   |
|  +-+-+-+-+-+-+-+-+  |
|  |0|z|b|p|   m   |  |
|  +-+-+-+-+-+-+-+-+  |


 <------ 1 byte ----->  <------ w + 1 bytes ------>
+---------------------+----------------------------+
|     y (if any)      |     old_nonce (if any)     |
+---------------------+----------------------------+
|<-- CoAP OSCORE_y -->|<-- CoAP OSCORE_oldnonce -->|
|                     |
|   0 1 2 3 4 5 6 7   |
|  +-+-+-+-+-+-+-+-+  |
|  |0|0|0|0|   w   |  |
|  +-+-+-+-+-+-+-+-+  |


+-----------------------+
|    kid (if any) ...   |
+-----------------------+
|                       |
|<-- CoAP OSCORE_kid -->|
]]></artwork>
        </figure>
        <t>To better perform OSCORE SCHC compression, the Rule description needs to identify the OSCORE Option and the fields it contains.</t>
        <t>Conceptually, it discerns up to eight distinct pieces of information within the OSCORE Option: the flag bits, the piv, the kid context prepended by its size, the x byte, the nonce, the y byte, the old_nonce, and the kid. The SCHC Rule splits the OSCORE Option into eight corresponding Field Descriptors in order to compress those pieces of information:</t>
        <ul spacing="normal">
          <li>
            <t>CoAP OSCORE_flags</t>
          </li>
          <li>
            <t>CoAP OSCORE_piv</t>
          </li>
          <li>
            <t>CoAP OSCORE_kidctx</t>
          </li>
          <li>
            <t>CoAP OSCORE_x</t>
          </li>
          <li>
            <t>CoAP OSCORE_nonce</t>
          </li>
          <li>
            <t>CoAP OSCORE_y</t>
          </li>
          <li>
            <t>CoAP OSCORE_oldnonce</t>
          </li>
          <li>
            <t>CoAP OSCORE_kid</t>
          </li>
        </ul>
        <t><xref target="fig-oscore-option"/> shows the original format of the OSCORE Option with the four fields OSCORE_flags, OSCORE_piv, OSCORE_kidctx, and OSCORE_kid superimposed on it. Also, <xref target="fig-oscore-option-kudos"/> shows the extended format of the OSCORE option with all the eight fields superimposed on it.</t>
        <t>If a field is not present, then the corresponding Field Descriptor in the SCHC Rule describes the TV set to b'', with the MO set to "equal" and the CDA set to "not-sent". Note that, if the field kid context is present, it directly includes the size octet, s.</t>
        <t>In addition, the following applies.</t>
        <ul spacing="normal">
          <li>
            <t>For the x field, if both endpoints know the value, then the corresponding Field Descriptor in the SCHC Rule describes the TV set to that value, with the MO set to "equal" and the CDA set to "not-sent". This models: the case where the x field is not present, and thus TV is set to b''; and the case where the two endpoints run KUDOS with a pre-agreed size of the nonce field as per the m sub-field of the x field, as well as with a pre-agreed combination of its modes of operation, as per the bits b and p of the x field.  </t>
            <t>
Otherwise, if the value changes over time, then the corresponding Field Descriptor in the SCHC Rule does not set the TV, while it sets the MO to "ignore" and the CDA to "value-sent". The Rule may also use a "match-mapping" MO to compress this field, in case the two endpoints pre-agree on a set of alternative ways to run KUDOS, with respect to the size of the nonce field and the combination of the KUDOS modes of operation to use.</t>
          </li>
          <li>
            <t>For the y field, if both endpoints know the value, then the corresponding Field Descriptor in the SCHC Rule describes the TV set to that value, with the MO set to "equal" and the CDA set to "not-sent". This models: the case where the y field is not present, and thus TV is set to b''; and the case where the two endpoints run KUDOS with a pre-agreed size of the old_nonce field as per the w sub-field of the y field.  </t>
            <t>
Otherwise, if the value changes over time, then the corresponding Field Descriptor in the SCHC Rule does not set the TV, while it sets the MO to "ignore" and the CDA to "value-sent". The Rule may also use a "match-mapping" MO to compress this field, in case the two endpoints pre-agree on a set of sizes of the old_nonce field.</t>
          </li>
          <li>
            <t>For the nonce field, if it is not present (i.e., the x field is not present in the first place), then the corresponding Field Descriptor in the SCHC Rule describes the TV set to b'', with the MO set to "equal" and the CDA set to "not-sent".  </t>
            <t>
Otherwise, if the nonce field is present, then the corresponding Field Descriptor in the SCHC Rule has the TV not set, while the MO is set to "ignore" and the CDA is set to "value-sent". In such a case, for the value of the nonce field, SCHC <bcp14>MUST NOT</bcp14> send it as variable-length data in the Compression Residue, to avoid ambiguity with the length of the nonce field encoded in the x field. Therefore, SCHC <bcp14>MUST</bcp14> use the m sub-field of the x field to define the size of the Compression Residue. SCHC designates a specific function, "osc.x.m", that the Rule <bcp14>MUST</bcp14> use to complete the Field Descriptor. During the decompression, this function returns the length of the nonce field in bytes, as the value of the m sub-field of the x field, plus 1.</t>
          </li>
          <li>
            <t>For the old_nonce field, if it is not present (i.e., the y field is not present in the first place), then the corresponding Field Descriptor in the SCHC Rule describes the TV set to b'', with the MO set to "equal" and the CDA set to "not-sent".  </t>
            <t>
Otherwise, if the old_nonce field is present, then the corresponding Field Descriptor in the SCHC Rule has the TV not set, while the MO is set to "ignore" and the CDA is set to "value-sent". In such a case, for the value of the old_nonce field, SCHC <bcp14>MUST NOT</bcp14> send it as variable-length data in the Compression Residue, to avoid ambiguity with the length of the old_nonce field encoded in the y field. Therefore, SCHC <bcp14>MUST</bcp14> use the w sub-field of the y field to define the size of the Compression Residue. SCHC designates a specific function, "osc.y.w", that the Rule <bcp14>MUST</bcp14> use to complete the Field Descriptor. During the decompression, this function returns the length of the old_nonce field in bytes, as the value of the w sub-field of the y field, plus 1.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="payload-marker">
      <name>Compression of the CoAP Payload Marker</name>
      <t>The following applies with respect to the 0xFF payload marker. A SCHC compression Rule for CoAP includes all the expected CoAP options, therefore the payload marker does not have to be specified in a SCHC Rule description.</t>
      <t>If the CoAP message to compress with SCHC is not going to be protected with OSCORE <xref target="RFC8613"/> and includes a payload, then the 0xFF payload marker <bcp14>MUST NOT</bcp14> be included in the compressed message, which is composed of the Compression RuleID, the Compression Residue (if any), and the CoAP payload.</t>
      <t>After having decompressed an incoming message, the recipient endpoint <bcp14>MUST</bcp14> prepend the 0xFF payload marker to the CoAP payload, if any was present after the consumed Compression Residue.</t>
      <t>If the CoAP message to compress with SCHC is going to be protected with OSCORE, the 0xFF payload marker is compressed as specified later in <xref target="ssec-examples-oscore"/>.</t>
    </section>
    <section anchor="sec-examples">
      <name>Examples of CoAP Header Compression</name>
      <section anchor="ssec-examples-con-message">
        <name>Mandatory Header with CON Message</name>
        <t>In this first scenario, the SCHC compressor on the NGW side receives a POST message from an Internet client, which is immediately acknowledged by the Device. <xref target="_table-CoAP-header-1"/> describes the SCHC Rule descriptions for this scenario.</t>
        <artwork><![CDATA[
+----------+
| RuleID 1 |
+----------+
]]></artwork>
        <table align="center" anchor="_table-CoAP-header-1">
          <name>CoAP Context to compress header without Token</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent  [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Version</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">01</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">CoAP Type</td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">CON</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">CoAP Type</td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">
                <tt>[ACK,</tt> <br/> <tt>RST]</tt></td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">T</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>TKL</tt></td>
              <td align="left">4</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">CoAP Code</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">
                <tt>[0.00,</tt> <br/> <tt>...</tt> <br/> <tt>5.05]</tt></td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">CC CCC</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>MID</tt></td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0000</td>
              <td align="left">MSB(7)</td>
              <td align="left">LSB</td>
              <td align="left">MID</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Uri-Path</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">
                <tt>1st element</tt> <br/> <tt>of the path</tt></td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>In this example, SCHC compression elides the version and Token Length fields. The 25 Method and Response Codes defined in <xref target="RFC7252"/> have been shrunk to 5 bits using a "match-mapping" MO. The Uri-Path contains a single element indicated in the TV and elided with the CDA "not-sent".</t>
        <t>SCHC compression reduces the header, sending only a mapped Type (and only for uplink messages), a mapped code, and the least significant bits of the Message ID (9 bits in the example above).</t>
        <t>Note that, if a client is located in an Application Server and sends a request to a server located in the Device, then the request may not be compressed through this Rule, since the MID might not start with 7 bits equal to 0. A CoAP proxy placed before SCHC C/D can rewrite the Message ID to fit the value and match the Rule.</t>
      </section>
      <section anchor="ssec-examples-oscore">
        <name>OSCORE Compression</name>
        <t>OSCORE aims to solve the problem of end-to-end protection for CoAP messages. Therefore, the goal is to hide as much as possible of the CoAP message, while still enabling proxy operations.</t>
        <t>Conceptually, this is achieved by splitting the CoAP message into an Inner Plaintext and an Outer OSCORE message. The Inner Plaintext contains (sensitive) information that is not necessary for performing proxy operations. Therefore, that information can be encrypted end-to-end, until it reaches the other origin endpoint as its final destination. The Outer Message acts as a shell matching the regular CoAP message format, and includes all the CoAP options and information needed for performing proxy operations and caching. This is summarized in <xref target="fig-inner-outer"/>.</t>
        <t>In particular, the CoAP options are arranged into three classes, each of which is granted a specific type of protection by the OSCORE protocol:</t>
        <ul spacing="normal">
          <li>
            <t>Class E: Encrypted options moved to the Inner Plaintext.</t>
          </li>
          <li>
            <t>Class I: Integrity-protected options, included in the Additional Authenticated Data (AAD) when protecting the Plaintext, but otherwise left untouched in the Outer Message.</t>
          </li>
          <li>
            <t>Class U: Unprotected options, left untouched in the Outer Message.</t>
          </li>
        </ul>
        <t>As per these classes, the Outer options comprise the OSCORE Option, which indicates that the message is protected with OSCORE and carries the information necessary for the recipient endpoint to retrieve the Security Context for decrypting the message.</t>
        <figure anchor="fig-inner-outer">
          <name>CoAP Message Split into OSCORE Outer Header and Plaintext</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="560" width="528" viewBox="0 0 528 560" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,368 L 8,456" fill="none" stroke="black"/>
                <path d="M 8,480 L 8,528" fill="none" stroke="black"/>
                <path d="M 24,368 L 24,400" fill="none" stroke="black"/>
                <path d="M 40,368 L 40,400" fill="none" stroke="black"/>
                <path d="M 64,496 L 64,528" fill="none" stroke="black"/>
                <path d="M 72,368 L 72,400" fill="none" stroke="black"/>
                <path d="M 144,48 L 144,136" fill="none" stroke="black"/>
                <path d="M 144,160 L 144,272" fill="none" stroke="black"/>
                <path d="M 144,368 L 144,400" fill="none" stroke="black"/>
                <path d="M 160,48 L 160,80" fill="none" stroke="black"/>
                <path d="M 176,48 L 176,80" fill="none" stroke="black"/>
                <path d="M 200,176 L 200,208" fill="none" stroke="black"/>
                <path d="M 208,48 L 208,80" fill="none" stroke="black"/>
                <path d="M 224,480 L 224,496" fill="none" stroke="black"/>
                <path d="M 272,48 L 272,80" fill="none" stroke="black"/>
                <path d="M 272,368 L 272,400" fill="none" stroke="black"/>
                <path d="M 312,400 L 312,432" fill="none" stroke="black"/>
                <path d="M 360,160 L 360,176" fill="none" stroke="black"/>
                <path d="M 360,368 L 360,528" fill="none" stroke="black"/>
                <path d="M 400,48 L 400,80" fill="none" stroke="black"/>
                <path d="M 400,208 L 400,272" fill="none" stroke="black"/>
                <path d="M 424,368 L 424,400" fill="none" stroke="black"/>
                <path d="M 424,432 L 424,464" fill="none" stroke="black"/>
                <path d="M 440,80 L 440,112" fill="none" stroke="black"/>
                <path d="M 520,400 L 520,432" fill="none" stroke="black"/>
                <path d="M 520,464 L 520,528" fill="none" stroke="black"/>
                <path d="M 144,48 L 400,48" fill="none" stroke="black"/>
                <path d="M 144,80 L 408,80" fill="none" stroke="black"/>
                <path d="M 144,112 L 400,112" fill="none" stroke="black"/>
                <path d="M 144,176 L 360,176" fill="none" stroke="black"/>
                <path d="M 144,208 L 400,208" fill="none" stroke="black"/>
                <path d="M 144,272 L 400,272" fill="none" stroke="black"/>
                <path d="M 8,368 L 272,368" fill="none" stroke="black"/>
                <path d="M 360,368 L 424,368" fill="none" stroke="black"/>
                <path d="M 8,400 L 280,400" fill="none" stroke="black"/>
                <path d="M 360,400 L 472,400" fill="none" stroke="black"/>
                <path d="M 8,432 L 272,432" fill="none" stroke="black"/>
                <path d="M 360,432 L 480,432" fill="none" stroke="black"/>
                <path d="M 360,464 L 520,464" fill="none" stroke="black"/>
                <path d="M 8,496 L 224,496" fill="none" stroke="black"/>
                <path d="M 8,528 L 64,528" fill="none" stroke="black"/>
                <path d="M 360,528 L 520,528" fill="none" stroke="black"/>
                <path d="M 332,280 L 372,360" fill="none" stroke="black"/>
                <path d="M 164,360 L 204,280" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="380,360 368,354.4 368,365.6" fill="black" transform="rotate(63.43494882292201,372,360)"/>
                <polygon class="arrowhead" points="172,360 160,354.4 160,365.6" fill="black" transform="rotate(116.56505117707799,164,360)"/>
                <g class="text">
                  <text x="196" y="36">Original</text>
                  <text x="252" y="36">CoAP</text>
                  <text x="304" y="36">Message</text>
                  <text x="152" y="68">v</text>
                  <text x="168" y="68">t</text>
                  <text x="192" y="68">TKL</text>
                  <text x="236" y="68">code</text>
                  <text x="312" y="68">Message</text>
                  <text x="356" y="68">ID</text>
                  <text x="424" y="84">...</text>
                  <text x="176" y="100">Token</text>
                  <text x="420" y="116">....</text>
                  <text x="184" y="132">Options</text>
                  <text x="240" y="132">(IEU)</text>
                  <text x="360" y="132">|</text>
                  <text x="144" y="148">.</text>
                  <text x="360" y="148">.</text>
                  <text x="172" y="196">0xFF</text>
                  <text x="216" y="244">Payload</text>
                  <text x="48" y="356">Outer</text>
                  <text x="100" y="356">Header</text>
                  <text x="424" y="356">Plaintext</text>
                  <text x="16" y="388">v</text>
                  <text x="32" y="388">t</text>
                  <text x="56" y="388">TKL</text>
                  <text x="88" y="388">new</text>
                  <text x="124" y="388">code</text>
                  <text x="184" y="388">Message</text>
                  <text x="228" y="388">ID</text>
                  <text x="388" y="388">code</text>
                  <text x="296" y="404">...</text>
                  <text x="496" y="404">.....</text>
                  <text x="40" y="420">Token</text>
                  <text x="400" y="420">Options</text>
                  <text x="448" y="420">(E)</text>
                  <text x="292" y="436">....</text>
                  <text x="500" y="436">....</text>
                  <text x="48" y="452">Options</text>
                  <text x="100" y="452">(IU)</text>
                  <text x="224" y="452">|</text>
                  <text x="388" y="452">0xFF</text>
                  <text x="8" y="468">.</text>
                  <text x="224" y="468">.</text>
                  <text x="44" y="484">OSCORE</text>
                  <text x="100" y="484">Option</text>
                  <text x="400" y="500">Payload</text>
                  <text x="36" y="516">0xFF</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
                    Original CoAP Message
                 +-+-+---+-------+---------------+
                 |v|t|TKL| code  | Message ID    |
                 +-+-+---+-------+---------------+....+
                 | Token                              |
                 +-------------------------------.....+
                 | Options (IEU)            |
                 .                          .
                 .                          .
                 +------+-------------------+
                 | 0xFF |
                 +------+------------------------+
                 |                               |
                 |     Payload                   |
                 |                               |
                 +-------------------------------+
                        /                \
                       /                  \
                      /                    \
                     /                      \
   Outer Header     v                        v  Plaintext
+-+-+---+--------+---------------+          +-------+
|v|t|TKL|new code| Message ID    |          | code  |
+-+-+---+--------+---------------+....+     +-------+-----......+
| Token                               |     | Options (E)       |
+--------------------------------.....+     +-------+------.....+
| Options (IU)             |                | 0xFF  |
.                          .                +-------+-----------+
. OSCORE Option            .                |                   |
+------+-------------------+                | Payload           |
| 0xFF |                                    |                   |
+------+                                    +-------------------+

]]></artwork>
          </artset>
        </figure>
        <t><xref target="fig-inner-outer"/> shows the packet format for the OSCORE Outer header and Plaintext.</t>
        <t>In the Outer header, the original header code is hidden and replaced by a well-known value. As specified in Sections <xref target="RFC8613" section="4.1.3.5" sectionFormat="bare"/> and <xref target="RFC8613" section="4.2" sectionFormat="bare"/> of <xref target="RFC8613"/>, the original header code is replaced with POST for requests and Changed for responses, when the message does not include the Observe Option. Otherwise, the original header code is replaced with FETCH for requests and Content for responses.</t>
        <t>The first byte of the Plaintext contains the original header code, the class E options, and, if present, the original message payload preceded by the payload marker.</t>
        <t>After that, an Authenticated Encryption with Associated Data (AEAD) algorithm encrypts the Plaintext. This also integrity-protects the Security Context parameters and, if present, any class I options from the Outer header. The resulting ciphertext becomes the new payload of the OSCORE message, as illustrated in <xref target="fig-full-oscore"/>.</t>
        <t>As defined in <xref target="RFC5116"/>, this ciphertext is the encrypted Plaintext's concatenation with the Authentication Tag. Note that Inner Compression only affects the Plaintext before encryption. The Authentication Tag, fixed in length and uncompressed, is considered part of the cost of protection.</t>
        <figure anchor="fig-full-oscore">
          <name>OSCORE Message</name>
          <artwork align="center"><![CDATA[
   Outer Header
+-+-+---+--------+---------------+
|v|t|TKL|new code| Message ID    |
+-+-+---+--------+---------------+....+
| Token                               |
+--------------------------------.....+
| Options (IU)             |
.                          .
. OSCORE Option            .
+------+-------------------+
| 0xFF |
+------+---------------------------+
|                                  |
| Ciphertext: Encrypted Inner      |
|             Header and Payload   |
|             + Authentication Tag |
|                                  |
+----------------------------------+
]]></artwork>
        </figure>
        <t>The SCHC compression scheme consists of compressing both the Plaintext before encryption and the resulting OSCORE message after encryption, as shown in <xref target="fig-OSCORE-Compression"/>. Note that, since the recipient endpoint can only decrypt the Inner part of the message, that endpoint will also have to implement Inner SCHC Compression/Decompression.</t>
        <figure anchor="fig-OSCORE-Compression">
          <name>OSCORE Compression Diagram</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="592" width="576" viewBox="0 0 576 592" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,48 L 8,136" fill="none" stroke="black"/>
                <path d="M 8,160 L 8,272" fill="none" stroke="black"/>
                <path d="M 24,48 L 24,80" fill="none" stroke="black"/>
                <path d="M 24,336 L 24,384" fill="none" stroke="black"/>
                <path d="M 24,448 L 24,576" fill="none" stroke="black"/>
                <path d="M 40,48 L 40,80" fill="none" stroke="black"/>
                <path d="M 64,176 L 64,208" fill="none" stroke="black"/>
                <path d="M 72,48 L 72,80" fill="none" stroke="black"/>
                <path d="M 72,280 L 72,328" fill="none" stroke="black"/>
                <path d="M 72,392 L 72,440" fill="none" stroke="black"/>
                <path d="M 104,448 L 104,480" fill="none" stroke="black"/>
                <path d="M 144,48 L 144,80" fill="none" stroke="black"/>
                <path d="M 168,208 L 168,272" fill="none" stroke="black"/>
                <path d="M 168,336 L 168,384" fill="none" stroke="black"/>
                <path d="M 208,480 L 208,576" fill="none" stroke="black"/>
                <path d="M 224,160 L 224,176" fill="none" stroke="black"/>
                <path d="M 232,448 L 232,480" fill="none" stroke="black"/>
                <path d="M 256,240 L 256,440" fill="none" stroke="black"/>
                <path d="M 272,48 L 272,80" fill="none" stroke="black"/>
                <path d="M 312,80 L 312,112" fill="none" stroke="black"/>
                <path d="M 336,448 L 336,480" fill="none" stroke="black"/>
                <path d="M 376,48 L 376,208" fill="none" stroke="black"/>
                <path d="M 376,272 L 376,320" fill="none" stroke="black"/>
                <path d="M 392,384 L 392,512" fill="none" stroke="black"/>
                <path d="M 440,48 L 440,80" fill="none" stroke="black"/>
                <path d="M 440,112 L 440,144" fill="none" stroke="black"/>
                <path d="M 440,216 L 440,264" fill="none" stroke="black"/>
                <path d="M 440,328 L 440,376" fill="none" stroke="black"/>
                <path d="M 480,384 L 480,416" fill="none" stroke="black"/>
                <path d="M 520,272 L 520,320" fill="none" stroke="black"/>
                <path d="M 552,80 L 552,112" fill="none" stroke="black"/>
                <path d="M 552,144 L 552,208" fill="none" stroke="black"/>
                <path d="M 568,416 L 568,512" fill="none" stroke="black"/>
                <path d="M 8,48 L 272,48" fill="none" stroke="black"/>
                <path d="M 376,48 L 440,48" fill="none" stroke="black"/>
                <path d="M 8,80 L 280,80" fill="none" stroke="black"/>
                <path d="M 376,80 L 504,80" fill="none" stroke="black"/>
                <path d="M 8,112 L 272,112" fill="none" stroke="black"/>
                <path d="M 376,112 L 512,112" fill="none" stroke="black"/>
                <path d="M 376,144 L 552,144" fill="none" stroke="black"/>
                <path d="M 8,176 L 224,176" fill="none" stroke="black"/>
                <path d="M 8,208 L 168,208" fill="none" stroke="black"/>
                <path d="M 376,208 L 552,208" fill="none" stroke="black"/>
                <path d="M 176,240 L 256,240" fill="none" stroke="black"/>
                <path d="M 8,272 L 168,272" fill="none" stroke="black"/>
                <path d="M 376,272 L 520,272" fill="none" stroke="black"/>
                <path d="M 376,320 L 520,320" fill="none" stroke="black"/>
                <path d="M 24,336 L 168,336" fill="none" stroke="black"/>
                <path d="M 24,384 L 168,384" fill="none" stroke="black"/>
                <path d="M 392,384 L 480,384" fill="none" stroke="black"/>
                <path d="M 392,416 L 568,416" fill="none" stroke="black"/>
                <path d="M 24,448 L 104,448" fill="none" stroke="black"/>
                <path d="M 232,448 L 336,448" fill="none" stroke="black"/>
                <path d="M 392,448 L 568,448" fill="none" stroke="black"/>
                <path d="M 344,464 L 384,464" fill="none" stroke="black"/>
                <path d="M 24,480 L 208,480" fill="none" stroke="black"/>
                <path d="M 232,480 L 336,480" fill="none" stroke="black"/>
                <path d="M 24,512 L 208,512" fill="none" stroke="black"/>
                <path d="M 392,512 L 568,512" fill="none" stroke="black"/>
                <path d="M 24,576 L 208,576" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="448,376 436,370.4 436,381.6" fill="black" transform="rotate(90,440,376)"/>
                <polygon class="arrowhead" points="448,264 436,258.4 436,269.6" fill="black" transform="rotate(90,440,264)"/>
                <polygon class="arrowhead" points="352,464 340,458.4 340,469.6" fill="black" transform="rotate(180,344,464)"/>
                <polygon class="arrowhead" points="184,240 172,234.4 172,245.6" fill="black" transform="rotate(180,176,240)"/>
                <polygon class="arrowhead" points="80,440 68,434.4 68,445.6" fill="black" transform="rotate(90,72,440)"/>
                <polygon class="arrowhead" points="80,328 68,322.4 68,333.6" fill="black" transform="rotate(90,72,328)"/>
                <g class="text">
                  <text x="48" y="36">Outer</text>
                  <text x="104" y="36">Message</text>
                  <text x="404" y="36">OSCORE</text>
                  <text x="472" y="36">Plaintext</text>
                  <text x="16" y="68">v</text>
                  <text x="32" y="68">t</text>
                  <text x="56" y="68">TKL</text>
                  <text x="88" y="68">new</text>
                  <text x="124" y="68">code</text>
                  <text x="184" y="68">Message</text>
                  <text x="228" y="68">ID</text>
                  <text x="404" y="68">code</text>
                  <text x="296" y="84">...</text>
                  <text x="528" y="84">.....</text>
                  <text x="40" y="100">Token</text>
                  <text x="416" y="100">Options</text>
                  <text x="464" y="100">(E)</text>
                  <text x="292" y="116">....</text>
                  <text x="532" y="116">....</text>
                  <text x="48" y="132">Options</text>
                  <text x="100" y="132">(IU)</text>
                  <text x="224" y="132">|</text>
                  <text x="404" y="132">OxFF</text>
                  <text x="8" y="148">.</text>
                  <text x="224" y="148">.</text>
                  <text x="44" y="164">OSCORE</text>
                  <text x="100" y="164">Option</text>
                  <text x="416" y="180">Payload</text>
                  <text x="36" y="196">0xFF</text>
                  <text x="60" y="244">Ciphertext</text>
                  <text x="424" y="292">Inner</text>
                  <text x="468" y="292">SCHC</text>
                  <text x="448" y="308">Compression</text>
                  <text x="72" y="356">Outer</text>
                  <text x="116" y="356">SCHC</text>
                  <text x="96" y="372">Compression</text>
                  <text x="428" y="404">RuleID</text>
                  <text x="448" y="436">Compression</text>
                  <text x="528" y="436">Residue</text>
                  <text x="64" y="468">RuleID'</text>
                  <text x="284" y="468">Encryption</text>
                  <text x="432" y="484">Payload</text>
                  <text x="80" y="500">Compression</text>
                  <text x="164" y="500">Residue'</text>
                  <text x="76" y="548">Ciphertext</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
   Outer Message                               OSCORE Plaintext
+-+-+---+--------+---------------+            +-------+
|v|t|TKL|new code| Message ID    |            | code  |
+-+-+---+--------+---------------+....+       +-------+-------......+
| Token                               |       | Options (E)         |
+--------------------------------.....+       +-------+--------.....+
| Options (IU)             |                  | OxFF  |
.                          .                  +-------+-------------+
. OSCORE Option            .                  |                     |
+------+-------------------+                  | Payload             |
| 0xFF |                                      |                     |
+------+------------+                         +---------------------+
|                   |                                 |
| Ciphertext        |<---------+                      |
|                   |          |                      v
+-------------------+          |              +-----------------+
        |                      |              |   Inner SCHC    |
        |                      |              |   Compression   |
        v                      |              +-----------------+
  +-----------------+          |                      |
  |   Outer SCHC    |          |                      |
  |   Compression   |          |                      v
  +-----------------+          |                +----------+
        |                      |                | RuleID   |
        |                      |                +----------+----------+
        v                      |                | Compression Residue |
  +---------+               +------------+      +---------------------+
  | RuleID' |               | Encryption |<-----|                     |
  +---------+------------+  +------------+      | Payload             |
  | Compression Residue' |                      |                     |
  +----------------------+                      +---------------------+
  |                      |
  | Ciphertext           |
  |                      |
  +----------------------+
]]></artwork>
          </artset>
        </figure>
        <t>The OSCORE message translates into a segmented process where SCHC compression is applied independently in two stages, each with its corresponding set of Rules, i.e., the Inner SCHC Rules and the Outer SCHC Rules. By doing so, compression is applied to all the fields of the original CoAP message.</t>
        <t>As to the compression of the 0xFF payload marker, the same rationale described in <xref target="payload-marker"/> applies to both the Inner SCHC Compression and the Outer SCHC Compression. That is:</t>
        <ul spacing="normal">
          <li>
            <t>After the Inner SCHC Compression of a CoAP message including a payload, the payload marker <bcp14>MUST NOT</bcp14> be included in the input to the AEAD Encryption, which is composed of the Inner Compression RuleID, the Inner Compression Residue (if any), and the CoAP payload.</t>
          </li>
          <li>
            <t>The Outer SCHC Compression takes as input the OSCORE-protected message, which always includes a payload (i.e., the OSCORE Ciphertext) preceded by the payload marker.</t>
          </li>
          <li>
            <t>After the Outer SCHC Compression, the payload marker <bcp14>MUST NOT</bcp14> be included in the final compressed message, which is composed of the Outer Compression RuleID, the Outer Compression Residue (if any), and the OSCORE Ciphertext.</t>
          </li>
        </ul>
        <t>After having completed the Outer SCHC Decompression of an incoming message, the recipient endpoint <bcp14>MUST</bcp14> prepend the 0xFF payload marker to the OSCORE Ciphertext.</t>
        <t>After having completed the Inner SCHC Decompression of an incoming message, the recipient endpoint <bcp14>MUST</bcp14> prepend the 0xFF payload marker to the CoAP payload, if any was present after the consumed Compression Residue.</t>
      </section>
      <section anchor="example-oscore-compression">
        <name>Example OSCORE Compression</name>
        <t>This section provides an example with a GET request and a corresponding Content response, exchanged between a Device-based CoAP client and a cloud-based CoAP server. The example also describes a possible set of Rules for Inner SCHC Compression and Outer SCHC Compression. A dump of the results and a contrast between SCHC + OSCORE performance and SCHC + CoAP performance are also listed. This example shows an estimate of the cost of security with SCHC-OSCORE.</t>
        <t>Our first CoAP message is the GET request in <xref target="fig-GET-temp"/>.</t>
        <figure anchor="fig-GET-temp">
          <name>CoAP GET Request</name>
          <artwork><![CDATA[
Original message:
=================
0x4101000182bb74656d7065726174757265

Header:
0x4101
01   Ver
  00   CON
    0001   TKL
        00000001   Request Code 1 "GET"

0x0001 = mid
0x82 = token

Options:

0xbb74656d7065726174757265
Option 11: Uri-Path
Value = temperature

Original message length: 17 bytes
]]></artwork>
        </figure>
        <t>Its corresponding response is the Content response in <xref target="fig-CONTENT-temp"/>.</t>
        <figure anchor="fig-CONTENT-temp">
          <name>CoAP Content Response</name>
          <artwork><![CDATA[
Original message:
=================
0x6145000182ff32332043

Header:
0x6145
01   Ver
  10   ACK
    0001   TKL
        01000101 Successful Response Code 69 "2.05 Content"

0x0001 = mid
0x82 = token

0xFF  Payload marker

Payload:
0x32332043

Original message length: 10 bytes
]]></artwork>
        </figure>
        <t>The SCHC Rules for the Inner Compression include all the fields present in a regular CoAP message. The methods described in <xref target="sec-coap-fields-compression"/> apply to these fields. Table 4 provides an example.</t>
        <artwork><![CDATA[
 +----------+
 | RuleID 0 |
 +----------+
]]></artwork>
        <table align="center" anchor="_table-Inner-Rules">
          <name>Inner SCHC Rule</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent  [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CoAP Code</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">1</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">CoAP Code</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">[69,132]</td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">C</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Uri-Path</tt></td>
              <td align="left"> </td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">"temperature"</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t><xref target="fig-Inner-Compression-GET"/> shows the Plaintext obtained for the example GET request. The packet follows the process of Inner Compression and encryption until the payload. The Outer OSCORE message adds the result of the Inner process.</t>
        <figure anchor="fig-Inner-Compression-GET">
          <name>Plaintext Compression and Encryption for GET Request</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="656" width="432" viewBox="0 0 432 656" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,208" fill="none" stroke="black"/>
                <path d="M 48,528 L 48,640" fill="none" stroke="black"/>
                <path d="M 120,288 L 120,432" fill="none" stroke="black"/>
                <path d="M 232,216 L 232,280" fill="none" stroke="black"/>
                <path d="M 232,440 L 232,520" fill="none" stroke="black"/>
                <path d="M 336,288 L 336,432" fill="none" stroke="black"/>
                <path d="M 424,32 L 424,208" fill="none" stroke="black"/>
                <path d="M 424,528 L 424,640" fill="none" stroke="black"/>
                <path d="M 8,32 L 424,32" fill="none" stroke="black"/>
                <path d="M 8,208 L 424,208" fill="none" stroke="black"/>
                <path d="M 120,288 L 336,288" fill="none" stroke="black"/>
                <path d="M 120,432 L 336,432" fill="none" stroke="black"/>
                <path d="M 48,528 L 424,528" fill="none" stroke="black"/>
                <path d="M 48,640 L 424,640" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="240,520 228,514.4 228,525.6" fill="black" transform="rotate(90,232,520)"/>
                <polygon class="arrowhead" points="240,280 228,274.4 228,285.6" fill="black" transform="rotate(90,232,280)"/>
                <g class="text">
                  <text x="44" y="68">OSCORE</text>
                  <text x="112" y="68">Plaintext</text>
                  <text x="132" y="100">0x01bb74656d7065726174757265</text>
                  <text x="272" y="100">(13</text>
                  <text x="316" y="100">bytes)</text>
                  <text x="36" y="132">0x01</text>
                  <text x="88" y="132">Request</text>
                  <text x="140" y="132">Code</text>
                  <text x="176" y="132">GET</text>
                  <text x="156" y="164">bb74656d7065726174757265</text>
                  <text x="284" y="164">Option</text>
                  <text x="328" y="164">11:</text>
                  <text x="380" y="164">Uri-Path</text>
                  <text x="280" y="180">Value</text>
                  <text x="312" y="180">=</text>
                  <text x="368" y="180">temperature</text>
                  <text x="264" y="244">Inner</text>
                  <text x="308" y="244">SCHC</text>
                  <text x="376" y="244">Compression</text>
                  <text x="172" y="324">Compressed</text>
                  <text x="256" y="324">Plaintext</text>
                  <text x="148" y="356">0x00</text>
                  <text x="156" y="388">RuleID</text>
                  <text x="192" y="388">=</text>
                  <text x="220" y="388">0x00</text>
                  <text x="252" y="388">(1</text>
                  <text x="288" y="388">byte)</text>
                  <text x="144" y="404">(No</text>
                  <text x="208" y="404">Compression</text>
                  <text x="292" y="404">Residue)</text>
                  <text x="260" y="468">AEAD</text>
                  <text x="324" y="468">Encryption</text>
                  <text x="268" y="484">(piv</text>
                  <text x="296" y="484">=</text>
                  <text x="328" y="484">0x04)</text>
                  <text x="144" y="564">encrypted_plaintext</text>
                  <text x="232" y="564">=</text>
                  <text x="260" y="564">0xa2</text>
                  <text x="292" y="564">(1</text>
                  <text x="328" y="564">byte)</text>
                  <text x="80" y="580">tag</text>
                  <text x="104" y="580">=</text>
                  <text x="188" y="580">0xc54fe1b434297b62</text>
                  <text x="276" y="580">(8</text>
                  <text x="316" y="580">bytes)</text>
                  <text x="108" y="612">ciphertext</text>
                  <text x="160" y="612">=</text>
                  <text x="252" y="612">0xa2c54fe1b434297b62</text>
                  <text x="348" y="612">(9</text>
                  <text x="388" y="612">bytes)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
+---------------------------------------------------+
|                                                   |
| OSCORE Plaintext                                  |
|                                                   |
| 0x01bb74656d7065726174757265  (13 bytes)          |
|                                                   |
| 0x01 Request Code GET                             |
|                                                   |
|      bb74656d7065726174757265 Option 11: Uri-Path |
|                               Value = temperature |
|                                                   |
+---------------------------------------------------+
                            |
                            | Inner SCHC Compression
                            |
                            v
              +--------------------------+
              |                          |
              | Compressed Plaintext     |
              |                          |
              | 0x00                     |
              |                          |
              | RuleID = 0x00 (1 byte)   |
              | (No Compression Residue) |
              |                          |
              +--------------------------+
                            |
                            | AEAD Encryption
                            |  (piv = 0x04)
                            |
                            v
     +----------------------------------------------+
     |                                              |
     |  encrypted_plaintext = 0xa2 (1 byte)         |
     |  tag = 0xc54fe1b434297b62 (8 bytes)          |
     |                                              |
     |  ciphertext = 0xa2c54fe1b434297b62 (9 bytes) |
     |                                              |
     +----------------------------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>In this case, the original message has no payload, and its resulting Plaintext is compressed up to only 1 byte (the size of the RuleID). The AEAD algorithm preserves this length in its first output and yields a fixed-size tag. SCHC cannot compress the tag, and the OSCORE message must include it without compression. The use of integrity protection translates into an overhead on the total message length, thus limiting the amount of compression that can be achieved and contributing to the cost of adding security to the exchange.</t>
        <t><xref target="fig-Inner-Compression-CONTENT"/> shows the process for the example Content response. The Compression Residue is 1 bit long. Note that since SCHC adds padding after the payload, this misalignment causes the hexadecimal code from the payload to differ from the original, even if SCHC cannot compress the tag. The overhead for the tag bytes limits SCHC's performance but adds security to the exchange.</t>
        <figure anchor="fig-Inner-Compression-CONTENT">
          <name>Plaintext Compression and Encryption for Content Response</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="720" width="488" viewBox="0 0 488 720" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,224" fill="none" stroke="black"/>
                <path d="M 16,304 L 16,496" fill="none" stroke="black"/>
                <path d="M 16,592 L 16,704" fill="none" stroke="black"/>
                <path d="M 232,232 L 232,296" fill="none" stroke="black"/>
                <path d="M 232,504 L 232,584" fill="none" stroke="black"/>
                <path d="M 408,32 L 408,224" fill="none" stroke="black"/>
                <path d="M 408,304 L 408,496" fill="none" stroke="black"/>
                <path d="M 480,592 L 480,704" fill="none" stroke="black"/>
                <path d="M 8,32 L 408,32" fill="none" stroke="black"/>
                <path d="M 8,224 L 408,224" fill="none" stroke="black"/>
                <path d="M 16,304 L 408,304" fill="none" stroke="black"/>
                <path d="M 16,496 L 408,496" fill="none" stroke="black"/>
                <path d="M 16,592 L 480,592" fill="none" stroke="black"/>
                <path d="M 16,704 L 480,704" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="240,584 228,578.4 228,589.6" fill="black" transform="rotate(90,232,584)"/>
                <polygon class="arrowhead" points="240,296 228,290.4 228,301.6" fill="black" transform="rotate(90,232,296)"/>
                <g class="text">
                  <text x="44" y="68">OSCORE</text>
                  <text x="112" y="68">Plaintext</text>
                  <text x="76" y="100">0x45ff32332043</text>
                  <text x="156" y="100">(6</text>
                  <text x="196" y="100">bytes)</text>
                  <text x="36" y="132">0x45</text>
                  <text x="100" y="132">Successful</text>
                  <text x="180" y="132">Response</text>
                  <text x="236" y="132">Code</text>
                  <text x="268" y="132">69</text>
                  <text x="304" y="132">"2.05</text>
                  <text x="364" y="132">Content"</text>
                  <text x="60" y="164">ff</text>
                  <text x="104" y="164">Payload</text>
                  <text x="164" y="164">marker</text>
                  <text x="100" y="196">32332043</text>
                  <text x="168" y="196">Payload</text>
                  <text x="264" y="260">Inner</text>
                  <text x="308" y="260">SCHC</text>
                  <text x="376" y="260">Compression</text>
                  <text x="68" y="340">Compressed</text>
                  <text x="152" y="340">Plaintext</text>
                  <text x="84" y="372">0x001919902180</text>
                  <text x="156" y="372">(6</text>
                  <text x="196" y="372">bytes)</text>
                  <text x="52" y="404">00</text>
                  <text x="92" y="404">RuleID</text>
                  <text x="48" y="436">0b0</text>
                  <text x="76" y="436">(1</text>
                  <text x="104" y="436">bit</text>
                  <text x="176" y="436">match-mapping</text>
                  <text x="280" y="436">Compression</text>
                  <text x="364" y="436">Residue)</text>
                  <text x="116" y="452">0x32332043</text>
                  <text x="172" y="452">&gt;&gt;</text>
                  <text x="192" y="452">1</text>
                  <text x="236" y="452">(shifted</text>
                  <text x="308" y="452">payload)</text>
                  <text x="248" y="468">0b0000000</text>
                  <text x="320" y="468">Padding</text>
                  <text x="260" y="532">AEAD</text>
                  <text x="324" y="532">Encryption</text>
                  <text x="268" y="548">(piv</text>
                  <text x="296" y="548">=</text>
                  <text x="328" y="548">0x04)</text>
                  <text x="112" y="628">encrypted_plaintext</text>
                  <text x="200" y="628">=</text>
                  <text x="268" y="628">0x10c6d7c26cc1</text>
                  <text x="340" y="628">(6</text>
                  <text x="380" y="628">bytes)</text>
                  <text x="48" y="644">tag</text>
                  <text x="72" y="644">=</text>
                  <text x="156" y="644">0xe9aef3f2461e0c29</text>
                  <text x="244" y="644">(8</text>
                  <text x="284" y="644">bytes)</text>
                  <text x="76" y="676">ciphertext</text>
                  <text x="128" y="676">=</text>
                  <text x="260" y="676">0x10c6d7c26cc1e9aef3f2461e0c29</text>
                  <text x="400" y="676">(14</text>
                  <text x="444" y="676">bytes)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
+-------------------------------------------------+
|                                                 |
| OSCORE Plaintext                                |
|                                                 |
| 0x45ff32332043  (6 bytes)                       |
|                                                 |
| 0x45 Successful Response Code 69 "2.05 Content" |
|                                                 |
|     ff Payload marker                           |
|                                                 |
|       32332043 Payload                          |
|                                                 |
+-------------------------------------------------+
                            |
                            | Inner SCHC Compression
                            |
                            v
 +------------------------------------------------+
 |                                                |
 | Compressed Plaintext                           |
 |                                                |
 | 0x001919902180 (6 bytes)                       |
 |                                                |
 |   00 RuleID                                    |
 |                                                |
 |  0b0 (1 bit match-mapping Compression Residue) |
 |       0x32332043 >> 1 (shifted payload)        |
 |                        0b0000000 Padding       |
 |                                                |
 +------------------------------------------------+
                            |
                            | AEAD Encryption
                            |  (piv = 0x04)
                            |
                            v
 +---------------------------------------------------------+
 |                                                         |
 |  encrypted_plaintext = 0x10c6d7c26cc1 (6 bytes)         |
 |  tag = 0xe9aef3f2461e0c29 (8 bytes)                     |
 |                                                         |
 |  ciphertext = 0x10c6d7c26cc1e9aef3f2461e0c29 (14 bytes) |
 |                                                         |
 +---------------------------------------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>The Outer SCHC Rule shown in <xref target="_table-Outer-Rules"/> is used, also to process the OSCORE Option fields. <xref target="fig-Protected-Compressed-GET"/> and <xref target="fig-Protected-Compressed-CONTENT"/> show a dump of the OSCORE messages generated from the example messages, also including the Inner Compressed ciphertext in the payload. These are the messages that have to be compressed via the Outer SCHC Compression scheme.</t>
        <t><xref target="_table-Outer-Rules"/> shows a possible set of Outer Rule items to compress the Outer header.</t>
        <artwork><![CDATA[
+----------+
| RuleID 1 |
+----------+
]]></artwork>
        <table align="center" anchor="_table-Outer-Rules">
          <name>Outer SCHC Rule</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent  [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Version</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">01</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Type</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Type</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">2</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>TKL</tt></td>
              <td align="left">4</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">1</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">2</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">68</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>MID</tt></td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0000</td>
              <td align="left">MSB(12)</td>
              <td align="left">LSB</td>
              <td align="left">MMMM</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Token</tt></td>
              <td align="left">tkl</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0x80</td>
              <td align="left">MSB(5)</td>
              <td align="left">LSB</td>
              <td align="left">TTT</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_flags</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0x09</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_piv</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0x00</td>
              <td align="left">MSB(4)</td>
              <td align="left">LSB</td>
              <td align="left">PPPP</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_kid</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0x636c69656e70</td>
              <td align="left">MSB(44)</td>
              <td align="left">LSB</td>
              <td align="left">KKKK</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_kidctx</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_x</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_nonce</tt></td>
              <td align="left">osc.x.m</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_y</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_oldnonce</tt></td>
              <td align="left">osc.y.w</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_flags</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_piv</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_kid</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <figure anchor="fig-Protected-Compressed-GET">
          <name>Protected and Inner SCHC Compressed GET Request</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="496" width="408" viewBox="0 0 408 496" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,46 L 144,46" fill="none" stroke="black"/>
                <path d="M 8,50 L 144,50" fill="none" stroke="black"/>
                <g class="text">
                  <text x="40" y="36">Protected</text>
                  <text x="116" y="36">message:</text>
                  <text x="204" y="68">0x4102000182980904636c69656e74ffa2c54fe1b434297b62</text>
                  <text x="16" y="84">(24</text>
                  <text x="60" y="84">bytes)</text>
                  <text x="32" y="116">Header:</text>
                  <text x="28" y="132">0x4102</text>
                  <text x="12" y="148">01</text>
                  <text x="56" y="148">Ver</text>
                  <text x="28" y="164">00</text>
                  <text x="72" y="164">CON</text>
                  <text x="52" y="180">0001</text>
                  <text x="104" y="180">TKL</text>
                  <text x="100" y="196">00000010</text>
                  <text x="184" y="196">Request</text>
                  <text x="236" y="196">Code</text>
                  <text x="264" y="196">2</text>
                  <text x="300" y="196">"POST"</text>
                  <text x="28" y="228">0x0001</text>
                  <text x="64" y="228">=</text>
                  <text x="88" y="228">mid</text>
                  <text x="20" y="244">0x82</text>
                  <text x="48" y="244">=</text>
                  <text x="80" y="244">token</text>
                  <text x="36" y="276">Options:</text>
                  <text x="20" y="308">0x98</text>
                  <text x="108" y="308">0904636c69656e74</text>
                  <text x="188" y="308">(9</text>
                  <text x="228" y="308">bytes)</text>
                  <text x="28" y="324">Option</text>
                  <text x="68" y="324">9:</text>
                  <text x="108" y="324">OSCORE</text>
                  <text x="24" y="340">Value</text>
                  <text x="56" y="340">=</text>
                  <text x="140" y="340">0x0904636c69656e74</text>
                  <text x="92" y="356">09</text>
                  <text x="112" y="356">=</text>
                  <text x="136" y="356">000</text>
                  <text x="160" y="356">0</text>
                  <text x="176" y="356">1</text>
                  <text x="200" y="356">001</text>
                  <text x="236" y="356">flag</text>
                  <text x="276" y="356">byte</text>
                  <text x="160" y="372">h</text>
                  <text x="176" y="372">k</text>
                  <text x="200" y="372">n</text>
                  <text x="108" y="388">04</text>
                  <text x="136" y="388">piv</text>
                  <text x="164" y="404">636c69656e74</text>
                  <text x="232" y="404">kid</text>
                  <text x="20" y="436">0xFF</text>
                  <text x="80" y="436">Payload</text>
                  <text x="140" y="436">marker</text>
                  <text x="36" y="468">Payload:</text>
                  <text x="84" y="484">0xa2c54fe1b434297b62</text>
                  <text x="180" y="484">(9</text>
                  <text x="220" y="484">bytes)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Protected message:
==================
0x4102000182980904636c69656e74ffa2c54fe1b434297b62
(24 bytes)

Header:
0x4102
01   Ver
  00   CON
    0001   TKL
        00000010   Request Code 2 "POST"

0x0001 = mid
0x82 = token

Options:

0x98 0904636c69656e74 (9 bytes)
Option 9: OSCORE
Value = 0x0904636c69656e74
          09 = 000 0 1 001 flag byte
                   h k  n
            04 piv
              636c69656e74 kid

0xFF  Payload marker

Payload:
0xa2c54fe1b434297b62 (9 bytes)
]]></artwork>
          </artset>
        </figure>
        <figure anchor="fig-Protected-Compressed-CONTENT">
          <name>Protected and Inner SCHC Compressed Content Response</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="432" width="496" viewBox="0 0 496 432" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,46 L 144,46" fill="none" stroke="black"/>
                <path d="M 8,50 L 144,50" fill="none" stroke="black"/>
                <g class="text">
                  <text x="40" y="36">Protected</text>
                  <text x="116" y="36">message:</text>
                  <text x="180" y="68">0x614400018290ff10c6d7c26cc1e9aef3f2461e0c29</text>
                  <text x="16" y="84">(21</text>
                  <text x="60" y="84">bytes)</text>
                  <text x="32" y="116">Header:</text>
                  <text x="28" y="132">0x6144</text>
                  <text x="12" y="148">01</text>
                  <text x="56" y="148">Ver</text>
                  <text x="28" y="164">10</text>
                  <text x="72" y="164">ACK</text>
                  <text x="52" y="180">0001</text>
                  <text x="104" y="180">TKL</text>
                  <text x="100" y="196">01000100</text>
                  <text x="196" y="196">Successful</text>
                  <text x="276" y="196">Response</text>
                  <text x="332" y="196">Code</text>
                  <text x="364" y="196">68</text>
                  <text x="400" y="196">"2.04</text>
                  <text x="460" y="196">Changed"</text>
                  <text x="28" y="228">0x0001</text>
                  <text x="64" y="228">=</text>
                  <text x="88" y="228">mid</text>
                  <text x="20" y="244">0x82</text>
                  <text x="48" y="244">=</text>
                  <text x="80" y="244">token</text>
                  <text x="36" y="276">Options:</text>
                  <text x="20" y="308">0x90</text>
                  <text x="52" y="308">(1</text>
                  <text x="88" y="308">byte)</text>
                  <text x="28" y="324">Option</text>
                  <text x="68" y="324">9:</text>
                  <text x="108" y="324">OSCORE</text>
                  <text x="24" y="340">Value</text>
                  <text x="56" y="340">=</text>
                  <text x="80" y="340">b''</text>
                  <text x="20" y="372">0xFF</text>
                  <text x="80" y="372">Payload</text>
                  <text x="140" y="372">marker</text>
                  <text x="36" y="404">Payload:</text>
                  <text x="124" y="420">0x10c6d7c26cc1e9aef3f2461e0c29</text>
                  <text x="264" y="420">(14</text>
                  <text x="308" y="420">bytes)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Protected message:
==================
0x614400018290ff10c6d7c26cc1e9aef3f2461e0c29
(21 bytes)

Header:
0x6144
01   Ver
  10   ACK
    0001   TKL
        01000100   Successful Response Code 68 "2.04 Changed"

0x0001 = mid
0x82 = token

Options:

0x90 (1 byte)
Option 9: OSCORE
Value = b''

0xFF  Payload marker

Payload:
0x10c6d7c26cc1e9aef3f2461e0c29 (14 bytes)
]]></artwork>
          </artset>
        </figure>
        <t>For the flag bits, some SCHC compression methods are useful, depending on the application. The most straightforward alternative is to provide a fixed value for the flags, combining an "equal" MO and a "not-sent" CDA. This SCHC description saves most bits but could prevent flexibility. Otherwise, SCHC could use a "match-mapping" MO to choose from several configurations for the exchange. If not, the SCHC description may use an MSB MO to mask off the three hard-coded most significant bits.</t>
        <t>Note that fixing a flag bit will limit the possible OSCORE options that can be used in the exchange, since the value of the flag bits plays a role in determining a specific OSCORE option.</t>
        <t>The piv field lends itself to having some bits masked off with an MSB MO and an LSB CDA. This SCHC description could be useful in applications where the message transmission frequency is low, such as with LPWAN technologies. Note that compressing the piv field may reduce the maximum number of sequence numbers that can be used in an exchange. Once the sequence number exceeds the maximum value, the OSCORE keys need to be re-established.</t>
        <t>The size, s, that is included in the OSCORE_kidctx field <bcp14>MAY</bcp14> be masked off with an LSB CDA. The rest of the OSCORE_kidctx field could have additional bits masked off, or the whole field could be fixed in accordance with an "equal" MO and a "not-sent" CDA. The same holds for the OSCORE_kid field.</t>
        <t>The Outer Rule of <xref target="_table-Outer-Rules"/> is applied to the example GET request and Content response. <xref target="fig-Compressed-GET"/> and <xref target="fig-Compressed-CONTENT"/> show the resulting messages.</t>
        <figure anchor="fig-Compressed-GET">
          <name>SCHC-OSCORE Compressed GET Request</name>
          <artwork><![CDATA[
Compressed message:
==================
0x011489458a9fc3686852f6c4 (12 bytes)
0x01 RuleID
    1489 Compression Residue
        458a9fc3686852f6c4 Padded payload

Compression Residue:
0b 0001 010 0100 0100 (15 bits -> 2 bytes with padding)
    mid tkn piv  kid

Payload
0xa2c54fe1b434297b62 (9 bytes)

Compressed message length: 12 bytes
]]></artwork>
        </figure>
        <figure anchor="fig-Compressed-CONTENT">
          <name>SCHC-OSCORE Compressed Content Response</name>
          <artwork><![CDATA[
Compressed message:
==================
0x0114218daf84d983d35de7e48c3c1852 (16 bytes)
0x01 RuleID
    14 Compression Residue
      218daf84d983d35de7e48c3c1852 Padded payload
Compression Residue:
0b0001 010 (7 bits -> 1 byte with padding)
  mid  tkn

Payload
0x10c6d7c26cc1e9aef3f2461e0c29 (14 bytes)
]]></artwork>
        </figure>
        <t>In contrast, the following compares these results with what would be obtained by SCHC compressing the original CoAP messages without protecting them with OSCORE, according to the SCHC Rule in <xref target="_table-NoOsc-Rules"/>.</t>
        <artwork><![CDATA[
+----------+
| RuleID 2 |
+----------+
]]></artwork>
        <table align="center" anchor="_table-NoOsc-Rules">
          <name>SCHC-CoAP Rule (No OSCORE)</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent  [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Version</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">01</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">CoAP Type</td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">CoAP Type</td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">2</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>TKL</tt></td>
              <td align="left">4</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">1</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">CoAP Code</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">2</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">CoAP Code</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">[69,132]</td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">C</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>MID</tt></td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0000</td>
              <td align="left">MSB(12)</td>
              <td align="left">LSB</td>
              <td align="left">MMMM</td>
            </tr>
            <tr>
              <td align="left">CoAP Token</td>
              <td align="left">tkl</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0x80</td>
              <td align="left">MSB(5)</td>
              <td align="left">LSB</td>
              <td align="left">TTT</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Uri-Path</tt></td>
              <td align="left"> </td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">"temperature"</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>The Rule in <xref target="_table-NoOsc-Rules"/> yields the SCHC compression results shown in <xref target="fig-GET-temp-no-oscore"/> for the request and in <xref target="fig-CONTENT-temp-no-oscore"/> for the response.</t>
        <figure anchor="fig-GET-temp-no-oscore">
          <name>CoAP GET Compressed without OSCORE</name>
          <artwork><![CDATA[
Compressed message:
==================
0x0214
0x02 = RuleID

Compression Residue:
0b00010100 (1 byte)

Compressed message length: 2 bytes
]]></artwork>
        </figure>
        <figure anchor="fig-CONTENT-temp-no-oscore">
          <name>CoAP Content Compressed without OSCORE</name>
          <artwork><![CDATA[
Compressed message:
==================
0x020a32332043
0x02 = RuleID

Compression Residue:
0b00001010 (1 byte)

Payload
0x32332043

Compressed message length: 6 bytes
]]></artwork>
        </figure>
        <t>As can be seen, the difference between applying SCHC + OSCORE as compared to regular SCHC + CoAP is about 10 bytes.</t>
      </section>
    </section>
    <section anchor="compression-with-proxies">
      <name>CoAP Header Compression with Proxies</name>
      <t>This section defines how SCHC Compression/Decompression is performed when CoAP proxies are deployed. The following refers to the origin client and origin server as application endpoints.</t>
      <t>Note that SCHC Compression/Decompression of CoAP headers is not necessarily used between each pair of hops in the communication chain. For example, if a proxy is deployed between an origin client and an origin server, SCHC might be used on the communication leg between the origin client and the proxy, but not on the communication leg between the proxy and the origin server.</t>
      <section anchor="compression-with-proxies-without-oscore">
        <name>Without End-to-End Security</name>
        <t>In case OSCORE is not used end-to-end between client and server, the SCHC processing occurs hop-by-hop, by relying on SCHC Rules that are consistently shared between two adjacent hops.</t>
        <t>In particular, SCHC is used as defined below.</t>
        <ul spacing="normal">
          <li>
            <t>The sender application endpoint compresses the CoAP message, by using the SCHC Rules that it shares with the next hop towards the recipient application endpoint. The resulting, compressed message is sent to the next hop towards the recipient application endpoint.</t>
          </li>
          <li>
            <t>Each proxy decompresses the incoming compressed message, by using the SCHC Rules that it shares with the (previous hop towards the) sender application endpoint.  </t>
            <t>
Then, the proxy compresses the CoAP message to be forwarded, by using the SCHC Rules that it shares with the (next hop towards the) recipient application endpoint.  </t>
            <t>
The resulting, compressed message is sent to the (next hop towards the) recipient application endpoint.</t>
          </li>
          <li>
            <t>The recipient application endpoint decompresses the incoming compressed message, by using the SCHC Rules that it shares with the previous hop towards the sender application endpoint.</t>
          </li>
        </ul>
      </section>
      <section anchor="compression-with-proxies-with-oscore">
        <name>With End-to-End Security</name>
        <t>In case OSCORE is used end-to-end between client and server (see <xref target="ssec-examples-oscore"/>), the following applies.</t>
        <t>The SCHC processing occurs end-to-end as to the Inner SCHC Compression/Decompression, by relying on Inner SCHC Rules that are consistently shared between the two application endpoints acting as OSCORE endpoints and sharing the used OSCORE Security Context.</t>
        <t>Instead, the SCHC processing occurs hop-by-hop as to the Outer SCHC Compression/Decompression, by relying on Outer SCHC Rules that are consistently shared between two adjacent hops.</t>
        <t>In particular, SCHC is used as defined below.</t>
        <ul spacing="normal">
          <li>
            <t>The sender application endpoint performs the Inner SCHC Compression on the original CoAP message, by using the Inner SCHC Rules that it shares with the recipient application endpoint.  </t>
            <t>
Following the AEAD Encryption of the compressed input obtained from the previous step, the sender application endpoint performs the Outer SCHC Compression on the resulting OSCORE-protected message, by using the Outer SCHC Rules that it shares with the next hop towards the recipient application endpoint.  </t>
            <t>
The resulting, compressed message is sent to the next hop towards the recipient application endpoint.</t>
          </li>
          <li>
            <t>Each proxy performs the Outer SCHC Decompression on the incoming compressed message, by using the SCHC Rules that it shares with the (previous hop towards the) sender application endpoint.  </t>
            <t>
Then, the proxy performs the Outer SCHC Compression of the OSCORE-protected message to be forwarded, by using the SCHC Rules that it shares with the (next hop towards the) recipient application endpoint.  </t>
            <t>
The resulting, compressed message is sent to the (next hop towards the) recipient application endpoint.</t>
          </li>
          <li>
            <t>The recipient application endpoint performs the Outer SCHC Decompression on the incoming compressed message, by using the Outer SCHC Rules that it shares with the previous hop towards the sender application endpoint.  </t>
            <t>
Then, the recipient application endpoint performs the AEAD Decryption of the OSCORE-protected message obtained from the previous step.  </t>
            <t>
Finally, the recipient application endpoint performs the Inner SCHC Decompression on the compressed input obtained from the previous step, by using the Inner SCHC Rules that it shares with the sender application endpoint. The result is the original CoAP message produced by the sender application endpoint.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples of CoAP Header Compression with Proxies</name>
      <t>This section provides examples of SCHC Compression/Decompression in the presence of a CoAP proxy.</t>
      <t>The presented examples refer to the same deployment considered in <xref target="sec-applicability-to-coap"/>, including a Device communicating over LPWAN with a Network Gateway (NGW), which in turn communicates with an Application Server over the Internet. The Application Server and the Device exchange CoAP messages through the NGW.</t>
      <t>The following also applies in the presented examples.</t>
      <ul spacing="normal">
        <li>
          <t>CoAP request messages are sent only by the Device as targeting the Application Server (uplink traffic), which replies to the Device with corresponding CoAP response messages (downlink traffic). That is, the Device acts as CoAP client, while the Application Server acts as CoAP server.</t>
        </li>
        <li>
          <t>A CoAP proxy is co-located on the Network Gateway (NGW) deployed between the Application Server and the Device.</t>
        </li>
        <li>
          <t>SCHC is used also on the communication leg between the Application Server and the proxy.</t>
        </li>
      </ul>
      <t>Like in <xref target="sec-applicability-to-coap"/>, the presented examples focus on SCHC Compression/Decompression of CoAP headers, i.e., irrespective of possible SCHC Compression/Decompression applied to further protocol headers.</t>
      <t>The example in <xref target="examples-without-oscore"/> considers an exchange of two unprotected messages, while the example in <xref target="examples-with-oscore"/> considers an exchange of two messages protected end-to-end with OSCORE. In the examples, the character | denotes bit concatenation.</t>
      <t><xref target="fig-example-req"/> and <xref target="fig-example-resp"/> show the two CoAP messages exchanged between the Device and the Application Server, via the proxy. The figures show the two messages as originally generated by the application at the two origin endpoints, i.e., before they are possibly protected end-to-end with OSCORE as considered by the example in <xref target="examples-with-oscore"/>.</t>
      <t>In particular, note that:</t>
      <ul spacing="normal">
        <li>
          <t>On the communication leg between the Device and the proxy, the CoAP Message ID has value 0x0001 and the CoAP Token has value 0x82.</t>
        </li>
        <li>
          <t>On the communication leg between the proxy and the Application Server, the CoAP Message ID has value 0x0004 and the CoAP Token has value 0x75.</t>
        </li>
      </ul>
      <figure anchor="fig-example-req">
        <name>CoAP GET Request</name>
        <artwork align="left"><![CDATA[
Original message:
=================
0x41010001823b6578616d706c652e636f6d
  8b74656d7065726174757265d40f636f6170

Header:
0x4101
01   Ver
  00   CON
    0001   TKL
        00000001   Request Code 1 "GET"

0x0001 = mid
0x82 = token

Options:

0x3b6578616d706c652e636f6d
Option 3: Uri-Host
Value = example.com

0x8b74656d7065726174757265
Option 11: Uri-Path
Value = temperature

0xd40f636f6170
Option 39: Proxy-Scheme
Value = coap

Original message length: 35 bytes

]]></artwork>
      </figure>
      <figure anchor="fig-example-resp">
        <name>CoAP Content Response</name>
        <artwork align="left"><![CDATA[
Original message:
=================
0x6145000475ff32332043

Header:
0x6145
01   Ver
  10   ACK
    0001   TKL
        01000101 Successful Response Code 69 "2.05 Content"

0x0004 = mid
0x75 = token


0xFF Payload marker

Payload:
0x32332043

Original message length: 10 bytes

]]></artwork>
      </figure>
      <section anchor="examples-without-oscore">
        <name>Without End-to-End Security</name>
        <t>In case OSCORE is not used end-to-end between the Device and the Application Server, the following SCHC Rules are shared between the different entities. Based on those Rules, the SCHC Compression/Decompression is performed as per <xref target="compression-with-proxies-without-oscore"/>.</t>
        <t>The Device and the proxy share the SCHC Rule shown in <xref target="fig-rules-device-proxy"/>, with RuleID 0.</t>
        <artwork><![CDATA[
+----------+
| RuleID 0 |
+----------+
]]></artwork>
        <table align="center" anchor="fig-rules-device-proxy">
          <name>SCHC Rule between the Device and the Proxy</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent  [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Version</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">01</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Type</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Type</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">[0,2]</td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">T</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>TKL</tt></td>
              <td align="left">4</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">1</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">
                <tt>[1, 2,</tt> <br/> <tt>3, 4]</tt></td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">CC</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">
                <tt>[65, 68,</tt> <br/> <tt>69, 132]</tt></td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">CC</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>MID</tt></td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0x00</td>
              <td align="left">MSB(12)</td>
              <td align="left">LSB</td>
              <td align="left">MMMM</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Token</tt></td>
              <td align="left">tkl</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0x80</td>
              <td align="left">MSB(5)</td>
              <td align="left">LSB</td>
              <td align="left">TTT</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Uri-Host</tt></td>
              <td align="left">
                <tt>var</tt> <br/> <tt>(B)</tt></td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left"> </td>
              <td align="left">ignore</td>
              <td align="left">
                <tt>value-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Uri-Path</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">"temperature"</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Proxy-Scheme</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">"coap"</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>Instead, the proxy and the Application Server share the SCHC Rule shown in <xref target="fig-rules-proxy-server"/>, with RuleID 1.</t>
        <artwork><![CDATA[
+----------+
| RuleID 1 |
+----------+
]]></artwork>
        <table align="center" anchor="fig-rules-proxy-server">
          <name>SCHC Rule between the Proxy and the Application Server</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent  [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Version</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">01</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Type</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Type</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">[0,2]</td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">T</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>TKL</tt></td>
              <td align="left">4</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">1</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">
                <tt>[1, 2,</tt> <br/> <tt>3, 4]</tt></td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">CC</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">
                <tt>[65, 68,</tt> <br/> <tt>69, 132]</tt></td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">CC</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>MID</tt></td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0x00</td>
              <td align="left">MSB(12)</td>
              <td align="left">LSB</td>
              <td align="left">MMMM</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Token</tt></td>
              <td align="left">tkl</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0x70</td>
              <td align="left">MSB(5)</td>
              <td align="left">LSB</td>
              <td align="left">TTT</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Uri-Host</tt></td>
              <td align="left">
                <tt>var</tt> <br/> <tt>(B)</tt></td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left"> </td>
              <td align="left">ignore</td>
              <td align="left">
                <tt>value-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Uri-Path</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">"temperature"</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>First, the Device applies the Rule in <xref target="fig-rules-device-proxy"/> shared with the proxy to the CoAP request in <xref target="fig-example-req"/>. The result is the compressed CoAP request in <xref target="fig-example-req-to-proxy"/>, which the Device sends to the proxy.</t>
        <figure anchor="fig-example-req-to-proxy">
          <name>CoAP GET Request Compressed for the Proxy</name>
          <artwork align="left"><![CDATA[
Compressed message:
=================
0x00055b2bc30b6b836329731b7b68 (14 bytes)
0x00 RuleID
    055b2bc30b6b836329731b7b68 compression residue
                                and padded payload

Compression Residue (101 bits -> 13 bytes with padding)
0b   00 0001 010    1011  |  0x6578616d706c652e636f6d
   code  mid tkn  Uri-Host (residue size and residue)

Compressed message length: 14 bytes

]]></artwork>
        </figure>
        <t>Upon receiving the message in <xref target="fig-example-req-to-proxy"/>, the proxy decompresses it with the Rule in <xref target="fig-rules-device-proxy"/> shared with the Device, and obtains the same CoAP request in <xref target="fig-example-req"/>.</t>
        <t>After that, the proxy removes the Proxy-Scheme Option from the decompressed CoAP request. Also, the proxy replaces the values of the CoAP Message ID and of the CoAP Token to 0x0004 and 0x75, respectively. The result is the CoAP request shown in <xref target="fig-example-req-from-proxy"/>.</t>
        <figure anchor="fig-example-req-from-proxy">
          <name>CoAP GET Request to be Compressed by the Proxy</name>
          <artwork align="left"><![CDATA[
Message to forward:
=================
0x41010004753b6578616d706c652e636f6d
  8b74656d7065726174757265

Header:
0x4101
01   Ver
  00   CON
    0001   TKL
        00000001   Request Code 1 "GET"

0x0004 = mid
0x75 = token

Options:

0x3b6578616d706c652e636f6d
Option 3: Uri-Host
Value = example.com

0x8b74656d7065726174757265
Option 11: Uri-Path
Value = temperature

Original message length: 29 bytes

]]></artwork>
        </figure>
        <t>Then, the proxy applies the Rule in <xref target="fig-rules-proxy-server"/> shared with the Application Server to the CoAP request in <xref target="fig-example-req-from-proxy"/>.</t>
        <t>The result is the compressed CoAP request in <xref target="fig-example-req-from-proxy-compressed"/>, which the proxy forwards to the Application Server.</t>
        <figure anchor="fig-example-req-from-proxy-compressed">
          <name>CoAP GET Request Forwarded by the Proxy</name>
          <artwork align="left"><![CDATA[
Compressed message to forward:
=================
0x0112db2bc30b6b836329731b7b68 (14 bytes)
0x01 RuleID
    12db2bc30b6b836329731b7b68 compression residue
                                and padded payload


Compression Residue (101 bits -> 13 bytes with padding)
0b   00 0100 101    1011  |  0x6578616d706c652e636f6d
   code  mid tkn  Uri-Host (residue size and residue)

Compressed message length: 14 bytes

]]></artwork>
        </figure>
        <t>Upon receiving the message in <xref target="fig-example-req-from-proxy-compressed"/>, the Application Server decompresses it using the Rule in <xref target="fig-rules-proxy-server"/> shared with the proxy. The result is the same CoAP request in <xref target="fig-example-req-from-proxy"/>, which the Application Server delivers to the application.</t>
        <t>After that, the Application Server produces the CoAP response in <xref target="fig-example-resp"/>, and compresses it using the Rule in <xref target="fig-rules-proxy-server"/> shared with the proxy. The result is the compressed CoAP response shown in <xref target="fig-example-resp-to-proxy"/>, which the Application Server sends to the proxy.</t>
        <figure anchor="fig-example-resp-to-proxy">
          <name>CoAP Content Response Compressed for the Proxy</name>
          <artwork align="left"><![CDATA[
Compressed message:
=================
0x01c94c8cc810c0 (7 bytes)
0x01 RuleID
    c94c8cc810c0 compression residue
                 and padded payload


Compression Residue (10 bits -> 2 bytes with padding)
0b    1   10 0100 101
   type code  mid tkn

Payload
0x32332043 (4 bytes)

Compressed message length: 7 bytes

]]></artwork>
        </figure>
        <t>Upon receiving the message in <xref target="fig-example-resp-to-proxy"/>, the proxy decompresses it using the Rule in <xref target="fig-rules-proxy-server"/> shared with the Application Server. The result is the same CoAP response in <xref target="fig-example-resp"/>.</t>
        <t>Then, the proxy replaces the values of the CoAP Message ID and of the CoAP Token to 0x0001 and 0x82, respectively. The result is the CoAP response shown in <xref target="fig-example-resp-from-proxy"/>.</t>
        <figure anchor="fig-example-resp-from-proxy">
          <name>CoAP Content Response to be Compressed by the Proxy</name>
          <artwork align="left"><![CDATA[
Message to forward:
=================
0x6145000182ff32332043

Header:
0x6145
01   Ver
  10   ACK
    0001   TKL
        01000101 Successful Response Code 69 "2.05 Content"

0x0001 = mid
0x82 = token


0xFF Payload marker

Payload:
0x32332043

Original message length: 10 bytes

]]></artwork>
        </figure>
        <t>Then, the proxy compresses the CoAP response in <xref target="fig-example-resp-from-proxy"/> with the Rule in <xref target="fig-rules-device-proxy"/> shared with the Device. The result is the compressed CoAP response shown in <xref target="fig-example-resp-from-proxy-compressed"/>, which the proxy forwards to the Device.</t>
        <figure anchor="fig-example-resp-from-proxy-compressed">
          <name>CoAP Content Response Forwarded by the Proxy</name>
          <artwork align="left"><![CDATA[
Compressed message:
=================
0x00c28c8cc810c0 (7 bytes)
0x00 RuleID
    c28c8cc810c0 compression residue
                 and padded payload


Compression Residue (10 bits -> 2 bytes with padding)
0b    1   10 0001 010
   type code  mid tkn

Payload
0x32332043 (4 bytes)

Compressed message length: 7 bytes

]]></artwork>
        </figure>
        <t>Upon receiving the message in <xref target="fig-example-resp-from-proxy-compressed"/>, the Device decompresses it using the Rule in <xref target="fig-rules-device-proxy"/> shared with the proxy. The result is the same CoAP request in <xref target="fig-example-resp-from-proxy"/>, which the Device delivers to the application.</t>
      </section>
      <section anchor="examples-with-oscore">
        <name>With End-to-End Security</name>
        <t>In case OSCORE is used end-to-end between the Device and the Application Server, the following SCHC Rules are shared between the different entities. Based on those Rules, the SCHC Compression/Decompression is performed as per <xref target="compression-with-proxies-with-oscore"/>.</t>
        <t>The Device and the Application Server share the SCHC Rule shown in <xref target="fig-rules-oscore-device-server"/>, with RuleID 2. The Device and the Application Server use this Rule to perform the Inner SCHC Compression/Decompression end-to-end.</t>
        <artwork><![CDATA[
+----------+
| RuleID 2 |
+----------+
]]></artwork>
        <table align="center" anchor="fig-rules-oscore-device-server">
          <name>Inner SCHC Rule between the Device and the Application Server</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent  [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">
                <tt>[1, 2,</tt> <br/> <tt>3, 4]</tt></td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">CC</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">
                <tt>[65, 68,</tt> <br/> <tt>69, 132]</tt></td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">CC</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Uri-Path</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">"temperature"</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>The Device and the proxy share the SCHC Rule shown in <xref target="fig-rules-oscore-device-proxy"/>, with RuleID 3. The Device and the proxy use this Rule to perform the Outer SCHC Compression/Decompression hop-by-hop on their communication leg.</t>
        <artwork><![CDATA[
+----------+
| RuleID 3 |
+----------+
]]></artwork>
        <table align="center" anchor="fig-rules-oscore-device-proxy">
          <name>Outer SCHC Rule between the Device and the Proxy</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent  [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Version</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">01</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Type</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Type</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">[0,2]</td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">T</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>TKL</tt></td>
              <td align="left">4</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">1</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">2</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">68</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>MID</tt></td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0x00</td>
              <td align="left">MSB(12)</td>
              <td align="left">LSB</td>
              <td align="left">MMMM</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Token</tt></td>
              <td align="left">tkl</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0x80</td>
              <td align="left">MSB(5)</td>
              <td align="left">LSB</td>
              <td align="left">TTT</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Uri-Host</tt></td>
              <td align="left">
                <tt>var</tt> <br/> <tt>(B)</tt></td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left"> </td>
              <td align="left">ignore</td>
              <td align="left">
                <tt>value-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_flags</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0x09</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_piv</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0x00</td>
              <td align="left">MSB(4)</td>
              <td align="left">LSB</td>
              <td align="left">PPPP</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_kid</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0x0000</td>
              <td align="left">MSB(12)</td>
              <td align="left">LSB</td>
              <td align="left">KKKK</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_kidctx</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_x</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_nonce</tt></td>
              <td align="left">osc.x.m</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_y</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_oldnonce</tt></td>
              <td align="left">osc.y.w</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_flags</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_piv</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_kid</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Proxy-Scheme</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">"coap"</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>The proxy and the Application Server share the SCHC Rule shown in <xref target="fig-rules-oscore-proxy-server"/>, with RuleID 4. The proxy and the Application Server use this Rule to perform the Outer SCHC Compression/Decompression hop-by-hop on their communication leg.</t>
        <artwork><![CDATA[
 +----------+
 | RuleID 4 |
 +----------+
]]></artwork>
        <table align="center" anchor="fig-rules-oscore-proxy-server">
          <name>Outer SCHC Rule between the Proxy and the Application Server</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent  [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Version</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">01</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Type</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Type</tt></td>
              <td align="left">2</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">[0,2]</td>
              <td align="left">
                <tt>match-</tt> <br/> <tt>mapping</tt></td>
              <td align="left">
                <tt>mapping-</tt> <br/> <tt>sent</tt></td>
              <td align="left">T</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>TKL</tt></td>
              <td align="left">4</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">1</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">2</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Code</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">68</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>MID</tt></td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0x00</td>
              <td align="left">MSB(12)</td>
              <td align="left">LSB</td>
              <td align="left">MMMM</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Token</tt></td>
              <td align="left">tkl</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0x70</td>
              <td align="left">MSB(5)</td>
              <td align="left">LSB</td>
              <td align="left">TTT</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>Uri-Host</tt></td>
              <td align="left">
                <tt>var</tt> <br/> <tt>(B)</tt></td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left"> </td>
              <td align="left">ignore</td>
              <td align="left">
                <tt>value-</tt> <br/> <tt>sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_flags</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0x09</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_piv</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0x00</td>
              <td align="left">MSB(4)</td>
              <td align="left">LSB</td>
              <td align="left">PPPP</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_kid</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">0x0000</td>
              <td align="left">MSB(12)</td>
              <td align="left">LSB</td>
              <td align="left">KKKK</td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_kidctx</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_x</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_nonce</tt></td>
              <td align="left">osc.x.m</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_y</tt></td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_oldnonce</tt></td>
              <td align="left">osc.y.w</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">
                <tt>not-sent</tt></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_flags</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_piv</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>CoAP</tt> <br/> <tt>OSCORE_kid</tt></td>
              <td align="left">var</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">b''</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>When the Device applies the Rule in <xref target="fig-rules-oscore-device-server"/> shared with the Application Server to the CoAP request in <xref target="fig-example-req"/>, this results in the Compressed Plaintext shown in <xref target="fig-plaintext-req"/>.</t>
        <t>As per <xref target="ssec-examples-oscore"/>, the message follows the process of SCHC Inner Compression and encryption until the payload (if any). The ciphertext resulting from the overall Inner process is used as payload of the Outer OSCORE message.</t>
        <figure anchor="fig-plaintext-req">
          <name>Plaintext Compression and Encryption for the GET Request</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="784" width="448" viewBox="0 0 448 784" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,208" fill="none" stroke="black"/>
                <path d="M 8,288 L 8,544" fill="none" stroke="black"/>
                <path d="M 8,640 L 8,752" fill="none" stroke="black"/>
                <path d="M 200,216 L 200,280" fill="none" stroke="black"/>
                <path d="M 200,552 L 200,632" fill="none" stroke="black"/>
                <path d="M 400,640 L 400,752" fill="none" stroke="black"/>
                <path d="M 408,288 L 408,544" fill="none" stroke="black"/>
                <path d="M 440,32 L 440,208" fill="none" stroke="black"/>
                <path d="M 8,32 L 440,32" fill="none" stroke="black"/>
                <path d="M 8,208 L 440,208" fill="none" stroke="black"/>
                <path d="M 8,288 L 408,288" fill="none" stroke="black"/>
                <path d="M 8,544 L 408,544" fill="none" stroke="black"/>
                <path d="M 8,640 L 400,640" fill="none" stroke="black"/>
                <path d="M 8,752 L 400,752" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="208,632 196,626.4 196,637.6" fill="black" transform="rotate(90,200,632)"/>
                <polygon class="arrowhead" points="208,280 196,274.4 196,285.6" fill="black" transform="rotate(90,200,280)"/>
                <g class="text">
                  <text x="44" y="68">OSCORE</text>
                  <text x="112" y="68">Plaintext</text>
                  <text x="132" y="100">0x01bb74656d7065726174757265</text>
                  <text x="272" y="100">(13</text>
                  <text x="316" y="100">bytes)</text>
                  <text x="36" y="132">0x01</text>
                  <text x="88" y="132">Request</text>
                  <text x="140" y="132">Code</text>
                  <text x="176" y="132">GET</text>
                  <text x="164" y="164">0xbb74656d7065726174757265</text>
                  <text x="300" y="164">Option</text>
                  <text x="344" y="164">11:</text>
                  <text x="396" y="164">Uri-Path</text>
                  <text x="296" y="180">Value</text>
                  <text x="328" y="180">=</text>
                  <text x="384" y="180">temperature</text>
                  <text x="232" y="244">Inner</text>
                  <text x="276" y="244">SCHC</text>
                  <text x="344" y="244">Compression</text>
                  <text x="60" y="324">Compressed</text>
                  <text x="144" y="324">Plaintext</text>
                  <text x="44" y="356">0x0200</text>
                  <text x="84" y="356">(2</text>
                  <text x="124" y="356">bytes)</text>
                  <text x="44" y="404">RuleID</text>
                  <text x="80" y="404">=</text>
                  <text x="108" y="404">0x02</text>
                  <text x="140" y="404">(1</text>
                  <text x="176" y="404">byte)</text>
                  <text x="64" y="452">Compression</text>
                  <text x="144" y="452">residue</text>
                  <text x="32" y="468">and</text>
                  <text x="76" y="468">padded</text>
                  <text x="136" y="468">payload</text>
                  <text x="176" y="468">=</text>
                  <text x="204" y="468">0x00</text>
                  <text x="236" y="468">(1</text>
                  <text x="272" y="468">byte)</text>
                  <text x="36" y="500">0b00</text>
                  <text x="68" y="500">(2</text>
                  <text x="100" y="500">bits</text>
                  <text x="176" y="500">match-mapping</text>
                  <text x="280" y="500">Compression</text>
                  <text x="364" y="500">Residue)</text>
                  <text x="52" y="516">0b000000</text>
                  <text x="100" y="516">(6</text>
                  <text x="128" y="516">bit</text>
                  <text x="180" y="516">padding)</text>
                  <text x="228" y="580">AEAD</text>
                  <text x="292" y="580">Encryption</text>
                  <text x="236" y="596">(piv</text>
                  <text x="264" y="596">=</text>
                  <text x="296" y="596">0x04)</text>
                  <text x="96" y="676">encrypted_plaintext</text>
                  <text x="184" y="676">=</text>
                  <text x="220" y="676">0xa2cf</text>
                  <text x="260" y="676">(2</text>
                  <text x="300" y="676">bytes)</text>
                  <text x="32" y="692">tag</text>
                  <text x="56" y="692">=</text>
                  <text x="140" y="692">0xc54fe1b434297b62</text>
                  <text x="228" y="692">(8</text>
                  <text x="268" y="692">bytes)</text>
                  <text x="60" y="724">ciphertext</text>
                  <text x="112" y="724">=</text>
                  <text x="212" y="724">0xa2cfc54fe1b434297b62</text>
                  <text x="320" y="724">(10</text>
                  <text x="364" y="724">bytes)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
+-----------------------------------------------------+
|                                                     |
| OSCORE Plaintext                                    |
|                                                     |
| 0x01bb74656d7065726174757265  (13 bytes)            |
|                                                     |
| 0x01 Request Code GET                               |
|                                                     |
|      0xbb74656d7065726174757265 Option 11: Uri-Path |
|                                 Value = temperature |
|                                                     |
+-----------------------------------------------------+
                        |
                        | Inner SCHC Compression
                        |
                        v
+-------------------------------------------------+
|                                                 |
| Compressed Plaintext                            |
|                                                 |
| 0x0200 (2 bytes)                                |
|                                                 |
|                                                 |
| RuleID = 0x02 (1 byte)                          |
|                                                 |
|                                                 |
| Compression residue                             |
| and padded payload = 0x00 (1 byte)              |
|                                                 |
| 0b00 (2 bits match-mapping Compression Residue) |
| 0b000000 (6 bit padding)                        |
|                                                 |
+-------------------------------------------------+
                        |
                        | AEAD Encryption
                        |  (piv = 0x04)
                        |
                        v
+------------------------------------------------+
|                                                |
| encrypted_plaintext = 0xa2cf (2 bytes)         |
| tag = 0xc54fe1b434297b62 (8 bytes)             |
|                                                |
| ciphertext = 0xa2cfc54fe1b434297b62 (10 bytes) |
|                                                |
+------------------------------------------------+

]]></artwork>
          </artset>
        </figure>
        <t>When the Application Server applies the Rule in <xref target="fig-rules-oscore-device-server"/> shared with the Device to the CoAP response in <xref target="fig-example-resp"/>, this results in the Compressed Plaintext shown in <xref target="fig-plaintext-resp"/>.</t>
        <t>As per <xref target="ssec-examples-oscore"/>, the message follows the process of SCHC Inner Compression and encryption until the payload (if any). The ciphertext resulting from the overall Inner process is used as payload of the Outer OSCORE message.</t>
        <figure anchor="fig-plaintext-resp">
          <name>Plaintext Compression and Encryption for the Content Response</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="816" width="480" viewBox="0 0 480 816" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,224" fill="none" stroke="black"/>
                <path d="M 8,304 L 8,576" fill="none" stroke="black"/>
                <path d="M 8,672 L 8,784" fill="none" stroke="black"/>
                <path d="M 168,232 L 168,296" fill="none" stroke="black"/>
                <path d="M 168,584 L 168,664" fill="none" stroke="black"/>
                <path d="M 408,32 L 408,224" fill="none" stroke="black"/>
                <path d="M 408,304 L 408,576" fill="none" stroke="black"/>
                <path d="M 472,672 L 472,784" fill="none" stroke="black"/>
                <path d="M 8,32 L 408,32" fill="none" stroke="black"/>
                <path d="M 8,224 L 408,224" fill="none" stroke="black"/>
                <path d="M 8,304 L 408,304" fill="none" stroke="black"/>
                <path d="M 8,576 L 408,576" fill="none" stroke="black"/>
                <path d="M 8,672 L 472,672" fill="none" stroke="black"/>
                <path d="M 8,784 L 472,784" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="176,664 164,658.4 164,669.6" fill="black" transform="rotate(90,168,664)"/>
                <polygon class="arrowhead" points="176,296 164,290.4 164,301.6" fill="black" transform="rotate(90,168,296)"/>
                <g class="text">
                  <text x="44" y="68">OSCORE</text>
                  <text x="112" y="68">Plaintext</text>
                  <text x="76" y="100">0x45ff32332043</text>
                  <text x="156" y="100">(6</text>
                  <text x="196" y="100">bytes)</text>
                  <text x="36" y="132">0x45</text>
                  <text x="100" y="132">Successful</text>
                  <text x="180" y="132">Response</text>
                  <text x="236" y="132">Code</text>
                  <text x="268" y="132">69</text>
                  <text x="304" y="132">"2.05</text>
                  <text x="364" y="132">Content"</text>
                  <text x="68" y="164">0xff</text>
                  <text x="120" y="164">Payload</text>
                  <text x="180" y="164">marker</text>
                  <text x="124" y="196">0x32332043</text>
                  <text x="200" y="196">Payload</text>
                  <text x="200" y="260">Inner</text>
                  <text x="244" y="260">SCHC</text>
                  <text x="312" y="260">Compression</text>
                  <text x="60" y="340">Compressed</text>
                  <text x="144" y="340">Plaintext</text>
                  <text x="76" y="372">0x028c8cc810c0</text>
                  <text x="148" y="372">(6</text>
                  <text x="188" y="372">bytes)</text>
                  <text x="44" y="420">RuleID</text>
                  <text x="80" y="420">=</text>
                  <text x="108" y="420">0x02</text>
                  <text x="64" y="468">Compression</text>
                  <text x="144" y="468">residue</text>
                  <text x="32" y="484">and</text>
                  <text x="76" y="484">padded</text>
                  <text x="136" y="484">payload</text>
                  <text x="176" y="484">=</text>
                  <text x="236" y="484">0x8c8cc810c0</text>
                  <text x="300" y="484">(5</text>
                  <text x="340" y="484">bytes)</text>
                  <text x="36" y="516">0b10</text>
                  <text x="68" y="516">(2</text>
                  <text x="100" y="516">bits</text>
                  <text x="176" y="516">match-mapping</text>
                  <text x="280" y="516">Compression</text>
                  <text x="364" y="516">Residue)</text>
                  <text x="108" y="532">0x32332043</text>
                  <text x="164" y="532">&gt;&gt;</text>
                  <text x="184" y="532">2</text>
                  <text x="228" y="532">(shifted</text>
                  <text x="300" y="532">payload)</text>
                  <text x="236" y="548">0b000000</text>
                  <text x="304" y="548">Padding</text>
                  <text x="196" y="612">AEAD</text>
                  <text x="260" y="612">Encryption</text>
                  <text x="204" y="628">(piv</text>
                  <text x="232" y="628">=</text>
                  <text x="264" y="628">0x04)</text>
                  <text x="104" y="708">encrypted_plaintext</text>
                  <text x="192" y="708">=</text>
                  <text x="260" y="708">0x10c6d7c26cc1</text>
                  <text x="332" y="708">(6</text>
                  <text x="372" y="708">bytes)</text>
                  <text x="40" y="724">tag</text>
                  <text x="64" y="724">=</text>
                  <text x="148" y="724">0xe9aef3f2461e0c29</text>
                  <text x="236" y="724">(8</text>
                  <text x="276" y="724">bytes)</text>
                  <text x="68" y="756">ciphertext</text>
                  <text x="120" y="756">=</text>
                  <text x="252" y="756">0x10c6d7c26cc1e9aef3f2461e0c29</text>
                  <text x="392" y="756">(14</text>
                  <text x="436" y="756">bytes)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
+-------------------------------------------------+
|                                                 |
| OSCORE Plaintext                                |
|                                                 |
| 0x45ff32332043  (6 bytes)                       |
|                                                 |
| 0x45 Successful Response Code 69 "2.05 Content" |
|                                                 |
|     0xff Payload marker                         |
|                                                 |
|         0x32332043 Payload                      |
|                                                 |
+-------------------------------------------------+
                    |
                    | Inner SCHC Compression
                    |
                    v
+-------------------------------------------------+
|                                                 |
| Compressed Plaintext                            |
|                                                 |
| 0x028c8cc810c0 (6 bytes)                        |
|                                                 |
|                                                 |
| RuleID = 0x02                                   |
|                                                 |
|                                                 |
| Compression residue                             |
| and padded payload = 0x8c8cc810c0 (5 bytes)     |
|                                                 |
| 0b10 (2 bits match-mapping Compression Residue) |
|       0x32332043 >> 2 (shifted payload)         |
|                        0b000000 Padding         |
|                                                 |
+-------------------------------------------------+
                    |
                    | AEAD Encryption
                    |  (piv = 0x04)
                    |
                    v
+---------------------------------------------------------+
|                                                         |
|  encrypted_plaintext = 0x10c6d7c26cc1 (6 bytes)         |
|  tag = 0xe9aef3f2461e0c29 (8 bytes)                     |
|                                                         |
|  ciphertext = 0x10c6d7c26cc1e9aef3f2461e0c29 (14 bytes) |
|                                                         |
+---------------------------------------------------------+

]]></artwork>
          </artset>
        </figure>
        <t>After having performed the SCHC Inner Compression of the CoAP request in <xref target="fig-example-req"/>, the Device protects it with OSCORE by considering the Compressed Plaintext in <xref target="fig-plaintext-req"/>. The result is the OSCORE-protected CoAP request shown in <xref target="fig-example-oscore-req"/>.</t>
        <figure anchor="fig-example-oscore-req">
          <name>Protected and Inner SCHC Compressed CoAP GET Request</name>
          <artwork align="left"><![CDATA[
Protected message:
==================
0x41020001823b6578616d706c652e636f6d
  6409040005d411636f6170ffa2cfc54fe1b434297b62
(39 bytes)

Header:
0x4102
01   Ver
  00   CON
    0001   TKL
        00000010   Request Code 2 "POST"

0x0001 = mid
0x82 = token

Options:

0x3b6578616d706c652e636f6d
Option 3: Uri-Host
Value = example.com

0x6409040005
Option 9: OSCORE
Value = 0x09040005
          09 = 000 0 1 001 flag byte
                   h k  n
            04 piv
              0005 kid

0xd411636f6170
Option 39: Proxy-Scheme
Value = coap


0xFF Payload marker

Payload:
0xa2cfc54fe1b434297b62 (10 bytes)

]]></artwork>
        </figure>
        <t>Then, the Device applies the Rule in <xref target="fig-rules-oscore-device-proxy"/> shared with the proxy to the OSCORE-protected CoAP request in <xref target="fig-example-oscore-req"/>, thus performing the SCHC Outer Compression of such request. The result is the OSCORE-protected and Outer Compressed CoAP request shown in <xref target="fig-example-oscore-req-to-proxy"/>, which the Device sends to the proxy.</t>
        <figure anchor="fig-example-oscore-req-to-proxy">
          <name>SCHC-OSCORE CoAP GET Request Compressed for the Proxy</name>
          <artwork align="left"><![CDATA[
Compressed message:
=================
0x03156caf0c2dae0d8ca5cc6deda8b459f8a9fc3686852f6c40 (25 bytes)
0x03 RuleID
    156caf0c2dae0d8ca5cc6deda8b459f8a9fc3686852f6c40 compression
                                                     residue and
                                                     padded payload


Compression Residue (107 bits -> 14 bytes with padding)
0b 0001 010    1011  |  0x6578616d706c652e636f6d  |  0b 0100 0101
    mid tkn  Uri-Host  (residue size and residue)        piv  kid

Payload
0xa2cfc54fe1b434297b62 (10 bytes)

Compressed message length: 25 bytes

]]></artwork>
        </figure>
        <t>Upon receiving the message in <xref target="fig-example-oscore-req-to-proxy"/>, the proxy decompresses it with the Rule in <xref target="fig-rules-oscore-device-proxy"/> shared with the Device, thus performing the SCHC Outer Decompression. The result is the same OSCORE-protected CoAP request in <xref target="fig-example-oscore-req"/>.</t>
        <t>After that, the proxy removes the Proxy-Scheme Option from the decompressed OSCORE-protected CoAP request. Also, the proxy replaces the values of the CoAP Message ID and of the CoAP Token to 0x0004 and 0x75, respectively. The result is the OSCORE-protected CoAP request shown in <xref target="fig-example-oscore-req-from-proxy"/>.</t>
        <figure anchor="fig-example-oscore-req-from-proxy">
          <name>SCHC-OSCORE CoAP GET Request to be Compressed by the Proxy</name>
          <artwork align="left"><![CDATA[
Protected message:
==================
0x41020004753b6578616d706c652e636f6d
  6409040005ffa2cfc54fe1b434297b62
(33 bytes)

Header:
0x4102
01   Ver
  00   CON
    0001   TKL
        00000010   Request Code 2 "POST"

0x0004 = mid
0x75 = token

Options:

0x3b6578616d706c652e636f6d
Option 3: Uri-Host
Value = example.com

0x6409040005
Option 9: OSCORE
Value = 0x09040005
          09 = 000 0 1 001 flag byte
                   h k  n
            04 piv
              0005 kid


0xFF Payload marker

Payload:
0xa2cfc54fe1b434297b62 (10 bytes)

]]></artwork>
        </figure>
        <t>Then, the proxy applies the Rule in <xref target="fig-rules-oscore-proxy-server"/> shared with the Application Server to the OSCORE-protected CoAP request in <xref target="fig-example-oscore-req-from-proxy"/>, thus performing the SCHC Outer Compression of such request. The result is the OSCORE-protected and Outer Compressed CoAP request shown in <xref target="fig-example-oscore-req-from-proxy-compressed"/>, which the proxy forwards to the Application Server.</t>
        <figure anchor="fig-example-oscore-req-from-proxy-compressed">
          <name>SCHC-OSCORE CoAP GET Request Forwarded by the Proxy</name>
          <artwork align="left"><![CDATA[
Compressed message:
=================
0x044b6caf0c2dae0d8ca5cc6deda8b459f8a9fc3686852f6c40 (25 bytes)
0x04 RuleID
    4b6caf0c2dae0d8ca5cc6deda8b459f8a9fc3686852f6c40 compression
                                                     residue and
                                                     padded payload


Compression Residue (107 bits -> 14 bytes with padding)
0b 0100 101    1011  |  0x6578616d706c652e636f6d  |  0b 0100 0101
    mid tkn  Uri-Host  (residue size and residue)        piv  kid

Payload
0xa2cfc54fe1b434297b62 (10 bytes)

Compressed message length: 25 bytes

]]></artwork>
        </figure>
        <t>Upon receiving the message in <xref target="fig-example-oscore-req-from-proxy-compressed"/>, the Application Server decompresses it using the Rule in <xref target="fig-rules-oscore-proxy-server"/> shared with the proxy, thus performing the SCHC Outer Decompression. The result is the same OSCORE-protected CoAP request in <xref target="fig-example-oscore-req-from-proxy"/>.</t>
        <t>The Application Server decrypts and verifies such a request, which results in the same Compressed Plaintext in <xref target="fig-plaintext-req"/>. Then, the Application Server applies the Rule in <xref target="fig-rules-oscore-device-server"/> shared with the Device to such a Compressed Plaintext, thus performing the SCHC Inner Decompression. The result is used to rebuild the same CoAP request in <xref target="fig-example-req"/>, which the Application Server delivers to the application.</t>
        <t>After having performed the SCHC Inner Compression of the CoAP response in <xref target="fig-example-resp"/>, the Application Server protects it with OSCORE by considering the Compressed Plaintext in <xref target="fig-plaintext-resp"/>. The result is the OSCORE-protected CoAP response shown in <xref target="fig-example-oscore-resp"/>.</t>
        <figure anchor="fig-example-oscore-resp">
          <name>Protected and Inner SCHC Compressed CoAP Content Response</name>
          <artwork align="left"><![CDATA[
Protected message:
==================
0x614400047590ff10c6d7c26cc1e9aef3f2461e0c29
(21 bytes)

Header:
0x6144
01   Ver
  10   ACK
    0001   TKL
        01000100   Successful Response Code 68 "2.04 Changed"

0x0004 = mid
0x75 = token

Options:

0x90
Option 9: OSCORE
Value = b''


0xFF Payload marker

Payload:
0x10c6d7c26cc1e9aef3f2461e0c29 (14 bytes)

]]></artwork>
        </figure>
        <t>Then, the Application Server applies the Rule in <xref target="fig-rules-oscore-proxy-server"/> shared with the proxy to the OSCORE-protected CoAP response in <xref target="fig-example-oscore-resp"/>, thus performing the SCHC Outer Compression of such response. The result is the OSCORE-protected and Outer Compressed CoAP response shown in <xref target="fig-example-oscore-resp-to-proxy"/>, which the Application Server sends to the proxy.</t>
        <figure anchor="fig-example-oscore-resp-to-proxy">
          <name>SCHC-OSCORE CoAP Content Response Compressed for the Proxy</name>
          <artwork align="left"><![CDATA[
Compressed message:
=================
0x04a510c6d7c26cc1e9aef3f2461e0c29  (16 bytes)
0x04 RuleID
    a510c6d7c26cc1e9aef3f2461e0c29 compression residue
                                   and padded payload


Compression Residue (8 bits -> 1 byte with padding)
0b    1 0100 101
   type  mid tkn

Payload
0x10c6d7c26cc1e9aef3f2461e0c29 (14 bytes)

Compressed message length: 16 bytes

]]></artwork>
        </figure>
        <t>Upon receiving the message in <xref target="fig-example-oscore-resp-to-proxy"/>, the proxy decompresses it with the Rule in <xref target="fig-rules-oscore-proxy-server"/> shared with the Application Server, thus performing the SCHC Outer Decompression. The result is the same OSCORE-protected CoAP response in <xref target="fig-example-oscore-resp"/>.</t>
        <t>After that, the proxy replaces the values of the CoAP Message ID and of the CoAP Token to 0x0001 and 0x82, respectively. The result is the OSCORE-protected CoAP response shown in <xref target="fig-example-oscore-resp-from-proxy"/>.</t>
        <figure anchor="fig-example-oscore-resp-from-proxy">
          <name>SCHC-OSCORE CoAP Content Response to be Compressed by the Proxy</name>
          <artwork align="left"><![CDATA[
Protected message:
==================
0x614400018290ff10c6d7c26cc1e9aef3f2461e0c29
(21 bytes)

Header:
0x6144
01   Ver
  10   ACK
    0001   TKL
        01000100   Successful Response Code 68 "2.04 Changed"

0x0001 = mid
0x82 = token

Options:

0x90
Option 9: OSCORE
Value = b''


0xFF Payload marker

Payload:
0x10c6d7c26cc1e9aef3f2461e0c29 (14 bytes)

]]></artwork>
        </figure>
        <t>Then, the proxy applies the Rule in <xref target="fig-rules-oscore-device-proxy"/> shared with the Device to the OSCORE-protected CoAP response in <xref target="fig-example-oscore-resp-from-proxy"/>, thus performing the SCHC Outer Compression of such response. The result is the OSCORE-protected and Outer Compressed CoAP response shown in <xref target="fig-example-oscore-resp-from-proxy-compressed"/>, which the proxy forwards to the Device.</t>
        <figure anchor="fig-example-oscore-resp-from-proxy-compressed">
          <name>SCHC-OSCORE CoAP Content Response Forwarded by the Proxy</name>
          <artwork align="left"><![CDATA[
Compressed message:
=================
0x038a10c6d7c26cc1e9aef3f2461e0c29 (16 bytes)
0x03 RuleID
    8a10c6d7c26cc1e9aef3f2461e0c29 compression residue
                                   and padded payload


Compression Residue (8 bits -> 1 byte with padding)
0b    1 0001 010
   type  mid tkn

Payload
0x10c6d7c26cc1e9aef3f2461e0c29 (14 bytes)

Compressed message length: 16 bytes

]]></artwork>
        </figure>
        <t>Upon receiving the message in <xref target="fig-example-oscore-resp-from-proxy-compressed"/>, the Device decompresses it using the Rule in <xref target="fig-rules-oscore-device-proxy"/> shared with the proxy, thus performing the SCHC Outer Decompression. The result is the same OSCORE-protected CoAP response in <xref target="fig-example-oscore-resp-from-proxy"/>.</t>
        <t>The Device decrypts and verifies such a response, which results in the same Compressed Plaintext in <xref target="fig-plaintext-resp"/>. Then, the Device applies the Rule in <xref target="fig-rules-oscore-device-server"/> shared with the Application Server to such a Compressed Plaintext, thus performing the SCHC Inner Decompression. The result is used to rebuild the same CoAP response in <xref target="fig-example-resp"/>, which the Device delivers to the application.</t>
      </section>
    </section>
    <section anchor="sec-coap-fields">
      <name>CoAP Fields</name>
      <t><xref target="_table-coap-fields"/> lists the CoAP fields and subfields for which SCHC Compression has been defined or revised in this document.</t>
      <table align="center" anchor="_table-coap-fields">
        <name>CoAP Fields</name>
        <thead>
          <tr>
            <th align="left">Field</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">CoAP Version</td>
            <td align="left">CoAP header field Version <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Type</td>
            <td align="left">CoAP header field Type <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP TKL</td>
            <td align="left">CoAP header field TKL <xref target="RFC7252"/><xref target="RFC8974"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Code</td>
            <td align="left">CoAP header field Code <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Code Class</td>
            <td align="left">CoAP header field Code (subfield Class) <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Code Detail</td>
            <td align="left">CoAP header field Code (subfield Detail) <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP MID</td>
            <td align="left">CoAP header field Message ID <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Token</td>
            <td align="left">CoAP field Token <xref target="RFC7252"/><xref target="RFC8974"/></td>
          </tr>
          <tr>
            <td align="left">CoAP If-Match</td>
            <td align="left">CoAP option If-Match <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Uri-Host</td>
            <td align="left">CoAP option Uri-Host <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP ETag</td>
            <td align="left">CoAP option ETag <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP If-None-Match</td>
            <td align="left">CoAP option If-None-Match <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Observe</td>
            <td align="left">CoAP option Observe <xref target="RFC7641"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Uri-Port</td>
            <td align="left">CoAP option Uri-Port <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Location-Path</td>
            <td align="left">CoAP option Location-Path <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP OSCORE</td>
            <td align="left">CoAP option OSCORE <xref target="RFC8613"/><xref target="I-D.ietf-core-oscore-key-update"/></td>
          </tr>
          <tr>
            <td align="left">CoAP OSCORE Flags</td>
            <td align="left">CoAP option OSCORE (subfield Flags) <xref target="RFC8613"/><xref target="I-D.ietf-core-oscore-key-update"/></td>
          </tr>
          <tr>
            <td align="left">CoAP OSCORE PIV</td>
            <td align="left">CoAP option OSCORE (subfield PIV) <xref target="RFC8613"/></td>
          </tr>
          <tr>
            <td align="left">CoAP OSCORE kid</td>
            <td align="left">CoAP option OSCORE (subfield kid) <xref target="RFC8613"/></td>
          </tr>
          <tr>
            <td align="left">CoAP OSCORE kidctx</td>
            <td align="left">CoAP option OSCORE (subfield kid context) <xref target="RFC8613"/></td>
          </tr>
          <tr>
            <td align="left">CoAP OSCORE x</td>
            <td align="left">CoAP option OSCORE (subfield x) <xref target="I-D.ietf-core-oscore-key-update"/></td>
          </tr>
          <tr>
            <td align="left">CoAP OSCORE nonce</td>
            <td align="left">CoAP option OSCORE (subfield nonce) <xref target="I-D.ietf-core-oscore-key-update"/></td>
          </tr>
          <tr>
            <td align="left">CoAP OSCORE y</td>
            <td align="left">CoAP option OSCORE (subfield y) <xref target="I-D.ietf-core-oscore-key-update"/></td>
          </tr>
          <tr>
            <td align="left">CoAP OSCORE old_nonce</td>
            <td align="left">CoAP option OSCORE (subfield old_nonce) <xref target="I-D.ietf-core-oscore-key-update"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Uri-Path</td>
            <td align="left">CoAP option Uri-Path <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Content-Format</td>
            <td align="left">CoAP option Content-Format <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Max-Age</td>
            <td align="left">CoAP option Max-Age <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Uri-Query</td>
            <td align="left">CoAP option Uri-Query <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Accept</td>
            <td align="left">CoAP option Accept <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Location-Query</td>
            <td align="left">CoAP option Location-Query <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Block2</td>
            <td align="left">CoAP option Block2 <xref target="RFC7959"/><xref target="RFC8323"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Block1</td>
            <td align="left">CoAP option Block1 <xref target="RFC7959"/><xref target="RFC8323"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Size2</td>
            <td align="left">CoAP option Size2 <xref target="RFC7959"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Proxy-Uri</td>
            <td align="left">CoAP option Proxy-Uri <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Proxy-Scheme</td>
            <td align="left">CoAP option Proxy-Scheme <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Size1</td>
            <td align="left">CoAP option Size1 <xref target="RFC7252"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Proxy-CRI</td>
            <td align="left">CoAP option Proxy-CRI <xref target="I-D.ietf-core-href"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Proxy-Scheme-Number</td>
            <td align="left">CoAP option Proxy-Scheme-Number <xref target="I-D.ietf-core-href"/></td>
          </tr>
          <tr>
            <td align="left">CoAP No-Response</td>
            <td align="left">CoAP option No-Response <xref target="RFC7967"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Hop-Limit</td>
            <td align="left">CoAP option Hop-Limit <xref target="RFC8768"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Echo</td>
            <td align="left">CoAP option Echo <xref target="RFC9175"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Request-Tag</td>
            <td align="left">CoAP option Request-Tag <xref target="RFC9175"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Q-Block1</td>
            <td align="left">CoAP option Q-Block1 <xref target="RFC9177"/></td>
          </tr>
          <tr>
            <td align="left">CoAP Q-Block2</td>
            <td align="left">CoAP option Q-Block2 <xref target="RFC9177"/></td>
          </tr>
          <tr>
            <td align="left">CoAP EDHOC</td>
            <td align="left">CoAP option EDHOC <xref target="I-D.ietf-core-oscore-edhoc"/></td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The use of SCHC header compression for CoAP header fields only affects the representation of the header information. SCHC header compression itself does not increase or decrease the overall level of security of the communication. When the connection does not use a security protocol (OSCORE, DTLS, etc.), it is necessary to use a Layer 2 security mechanism to protect the SCHC messages.</t>
      <t>If an LPWAN is the Layer 2 technology being used, the SCHC security considerations discussed in <xref target="RFC8724"/> continue to apply. When using another Layer 2 protocol, the use of a cryptographic integrity-protection mechanism to protect the SCHC headers is <bcp14>REQUIRED</bcp14>. Such cryptographic integrity protection is necessary in order to continue to provide the properties that <xref target="RFC8724"/> relies upon.</t>
      <t>When SCHC is used with OSCORE, the security considerations discussed in <xref target="RFC8613"/> continue to apply. When SCHC is used with Group OSCORE, the security considerations discussed in <xref target="I-D.ietf-core-oscore-groupcomm"/> apply. When SCHC is used in the presence of CoAP proxies, the security considerations discussed in <xref section="11.2" sectionFormat="of" target="RFC7252"/> continue to apply.</t>
      <t>When SCHC is used with the OSCORE Outer headers, the Initialization Vector (IV) size in the Compression Residue must be carefully selected. There is a trade-off between compression efficiency (with a longer MSB MO prefix) and the frequency at which the Device must renew its key material (in order to prevent the IV from expanding to an uncompressible value). The key-renewal operation itself may require several message exchanges and result in energy-intensive computation, but the optimal trade-off will depend on the specifics of the Device and expected usage patterns. In order to renew its key material with another OSCORE endpoint, the Device can rely on the lightweight key update protocol KUDOS defined in <xref target="I-D.ietf-core-oscore-key-update"/>.</t>
      <t>If an attacker can introduce a corrupted SCHC-compressed packet onto a link, DoS attacks can be mounted by causing excessive resource consumption at the decompressor. However, an attacker able to inject packets at the link layer is also capable of other, potentially more damaging, attacks.</t>
      <t>SCHC compression emits variable-length Compression Residues for some CoAP fields. In the representation of the compressed header, the length field that is sent is not the length of the original header field but rather the length of the Compression Residue that is being transmitted. If a corrupted packet arrives at the decompressor with a longer or shorter length than that of the original compressed representation, the SCHC decompression procedures will detect an error and drop the packet.</t>
      <t>SCHC header compression Rules <bcp14>MUST</bcp14> remain tightly coupled between the compressor and the decompressor. If the compression Rules get out of sync, a Compression Residue might be decompressed differently at the receiver, thus yielding a result different than the initial message submitted to compression procedures. Accordingly, any time the context Rules are updated on an OSCORE endpoint, that endpoint <bcp14>MUST</bcp14> trigger OSCORE key re-establishment, e.g., by running the lightweight key update protocol KUDOS <xref target="I-D.ietf-core-oscore-key-update"/>. Similar procedures may be appropriate to signal Rule updates when other message-protection mechanisms are in use.</t>
      <section anchor="sec-security-considerations-yang-module">
        <name>YANG Module</name>
        <t>TBD</t>
        <t>Editor's note: The considerations in this section have to follow the guidelines provided at https://wiki.ietf.org/group/ops/yang-security-guidelines</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <section anchor="ietf-xml">
        <name>IETF XML</name>
        <t>IANA is asked to register the following entry in the "IETF XML" registry <xref target="RFC3688"/>.</t>
        <ul spacing="normal">
          <li>
            <t>URI: urn:ietf:params:xml:ns:yang:ietf-schc-coap</t>
          </li>
          <li>
            <t>Registrant Contact: The IESG.</t>
          </li>
          <li>
            <t>XML: N/A; the requested URI is an XML namespace.</t>
          </li>
        </ul>
      </section>
      <section anchor="yang-module-names">
        <name>YANG Module Names</name>
        <t>IANA is asked to register the following entry in the "YANG Module Names" registry <xref target="RFC6020"/><xref target="RFC8407"/> within the "YANG Parameters" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Name: ietf-schc-coap</t>
          </li>
          <li>
            <t>Namespace: urn:ietf:params:xml:ns:yang:ietf-schc-coap</t>
          </li>
          <li>
            <t>Prefix: schc-coap</t>
          </li>
          <li>
            <t>Reference: RFC YYYY</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-iana-coap-fields">
        <name>SCHC Compression of CoAP Fields</name>
        <t>IANA is asked to establish the "SCHC Compression of CoAP Fields" IANA registry.</t>
        <t>As registration policy, the registry uses "Specification Required" per <xref section="4.6" sectionFormat="of" target="RFC8126"/>. Expert Review guidelines are provided in <xref target="sec-iana-expert-review"/>.</t>
        <section anchor="intended-use">
          <name>Intended Use</name>
          <t>The objective of this registry is to collect a list of CoAP fields and subfields, for which it has been defined how to perform SCHC compression.</t>
          <t>Such a definition does not necessarily have to be in the same documentation that defines the CoAP fields and subfields in question. While that can be the case, it is also possible to provide that definition in a separate specification.</t>
          <t>Each entry of the registry is intended to include references to the documentation that defines the associated CoAP field or subfield, as well as references to the specifications that define the SCHC compression of that CoAP field or subfield.</t>
          <t>When a specification defines how to perform SCHC compression of a CoAP field, the following applies.</t>
          <ul spacing="normal">
            <li>
              <t>If a registry entry for the CoAP field does not already exist, it is strongly encouraged to register an associated new entry.</t>
            </li>
            <li>
              <t>If a registry entry for the CoAP field already exists, it is strongly encouraged to update its list of references. The update is intended to add references to the specification that provides the new or updated SCHC compression of the CoAP field, as well as to any documentation that updates the definition of the CoAP field itself.</t>
            </li>
          </ul>
          <t>If the defined SCHC compression considers the CoAP field as composed of subfields, it is strongly encouraged that the same as above is also performed for each subfield and the associated registry entry.</t>
        </section>
        <section anchor="structure-of-entries">
          <name>Structure of Entries</name>
          <t>The columns of this registry are:</t>
          <ul spacing="normal">
            <li>
              <t>Field: a unique identifier of the CoAP field or subfield associated with this entry. This identifier can be used as value of the "Field" column in a SCHC compression Rule. This identifier must have a corresponding item or set of items in the YANG data model for the CoAP field or subfield associated with this entry, as specified in <xref section="6" sectionFormat="of" target="RFC9363"/> or in <xref target="sec-yang-module"/> of [RFC-XXXX].</t>
            </li>
            <li>
              <t>Description: a short description of the CoAP field or subfield associated with this entry, together with public references to the resources that define it.</t>
            </li>
            <li>
              <t>Reference: public references to the resources that define how a SCHC compression Rule works for the CoAP field or subfield associated with this entry.</t>
            </li>
          </ul>
          <t>This registry has been initially populated with the values in <xref target="_table-coap-fields"/>. The "Reference" column for all of these entries refers to this document.</t>
        </section>
      </section>
      <section anchor="sec-iana-expert-review">
        <name>Expert Review Instructions</name>
        <t>The IANA registry established in this document is defined as "Specification Required". This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason so they should be given substantial latitude.</t>
        <t>Expert reviewers should take into consideration the following points:</t>
        <ul spacing="normal">
          <li>
            <t>Point squatting should be discouraged. Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered and that the point is likely to be used in deployments.  </t>
            <t>
Specifically, for every CoAP field, only one corresponding registry entry is allowed. Also, for a every CoAP subfield, only one corresponding registry entry is allowed.</t>
          </li>
          <li>
            <t>Consistent with the "Specification Required" registration policy, specifications should exist, but early assignment before a specification is available is considered to be permissible. When specifications are not provided, the description provided needs to have sufficient information to identify what the point is being used for.</t>
          </li>
        </ul>
        <t>If the expert becomes aware of a definition for SCHC compression of CoAP fields and subfields that is deployed and in use, the expert may also initiate a registration or update an existing one on their own, if they deem important that the definition in question gains visibility through the registry entry.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms. The interface and registry can be used as an application-independent set of cryptoalgorithm suites. This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks. Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates. In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS). These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs. In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers. Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations. Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC7967">
          <front>
            <title>Constrained Application Protocol (CoAP) Option for No Server Response</title>
            <author fullname="A. Bhattacharyya" initials="A." surname="Bhattacharyya"/>
            <author fullname="S. Bandyopadhyay" initials="S." surname="Bandyopadhyay"/>
            <author fullname="A. Pal" initials="A." surname="Pal"/>
            <author fullname="T. Bose" initials="T." surname="Bose"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>There can be machine-to-machine (M2M) scenarios where server responses to client requests are redundant. This kind of open-loop exchange (with no response path from the server to the client) may be desired to minimize resource consumption in constrained systems while updating many resources simultaneously or performing high-frequency updates. CoAP already provides Non-confirmable (NON) messages that are not acknowledged by the recipient. However, the request/response semantics still require the server to respond with a status code indicating "the result of the attempt to understand and satisfy the request", per RFC 7252.</t>
              <t>This specification introduces a CoAP option called 'No-Response'. Using this option, the client can explicitly express to the server its disinterest in all responses against the particular request. This option also provides granular control to enable expression of disinterest to a particular response class or a combination of response classes. The server MAY decide to suppress the response by not transmitting it back to the client according to the value of the No-Response option in the request. This option may be effective for both unicast and multicast requests. This document also discusses a few examples of applications that benefit from this option.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7967"/>
          <seriesInfo name="DOI" value="10.17487/RFC7967"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8323">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="S. Lemay" initials="S." surname="Lemay"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="B. Silverajan" initials="B." surname="Silverajan"/>
            <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor"/>
            <date month="February" year="2018"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP. The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
              <t>Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports. It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8323"/>
          <seriesInfo name="DOI" value="10.17487/RFC8323"/>
        </reference>
        <reference anchor="RFC8407">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>This memo provides guidelines for authors and reviewers of specifications containing YANG modules. Recommendations and procedures are defined, which are intended to increase interoperability and usability of Network Configuration Protocol (NETCONF) and RESTCONF protocol implementations that utilize YANG modules. This document obsoletes RFC 6087.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="216"/>
          <seriesInfo name="RFC" value="8407"/>
          <seriesInfo name="DOI" value="10.17487/RFC8407"/>
        </reference>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC8724">
          <front>
            <title>SCHC: Generic Framework for Static Context Header Compression and Fragmentation</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="C. Gomez" initials="C." surname="Gomez"/>
            <author fullname="D. Barthel" initials="D." surname="Barthel"/>
            <author fullname="JC. Zuniga" initials="JC." surname="Zuniga"/>
            <date month="April" year="2020"/>
            <abstract>
              <t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide Area Networks (LPWANs) in mind.</t>
              <t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t>
              <t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed the Layer 2 maximum payload size.</t>
              <t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8724"/>
          <seriesInfo name="DOI" value="10.17487/RFC8724"/>
        </reference>
        <reference anchor="RFC8768">
          <front>
            <title>Constrained Application Protocol (CoAP) Hop-Limit Option</title>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="T. Reddy.K" initials="T." surname="Reddy.K"/>
            <author fullname="J. Shallow" initials="J." surname="Shallow"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>The presence of Constrained Application Protocol (CoAP) proxies may lead to infinite forwarding loops, which is undesirable. To prevent and detect such loops, this document specifies the Hop-Limit CoAP option.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8768"/>
          <seriesInfo name="DOI" value="10.17487/RFC8768"/>
        </reference>
        <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="RFC8974">
          <front>
            <title>Extended Tokens and Stateless Clients in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document provides considerations for alleviating Constrained Application Protocol (CoAP) clients and intermediaries of keeping per-request state. To facilitate this, this document additionally introduces a new, optional CoAP protocol extension for extended token lengths.</t>
              <t>This document updates RFCs 7252 and 8323 with an extended definition of the "TKL" field in the CoAP message header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8974"/>
          <seriesInfo name="DOI" value="10.17487/RFC8974"/>
        </reference>
        <reference anchor="RFC9175">
          <front>
            <title>Constrained Application Protocol (CoAP): Echo, Request-Tag, and Token Processing</title>
            <author fullname="C. Amsüss" initials="C." surname="Amsüss"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document specifies enhancements to the Constrained Application Protocol (CoAP) that mitigate security issues in particular use cases. The Echo option enables a CoAP server to verify the freshness of a request or to force a client to demonstrate reachability at its claimed network address. The Request-Tag option allows the CoAP server to match block-wise message fragments belonging to the same request. This document updates RFC 7252 with respect to the following: processing requirements for client Tokens, forbidding non-secure reuse of Tokens to ensure response-to-request binding when CoAP is used with a security protocol, and amplification mitigation (where the use of the Echo option is now recommended).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9175"/>
          <seriesInfo name="DOI" value="10.17487/RFC9175"/>
        </reference>
        <reference anchor="RFC9177">
          <front>
            <title>Constrained Application Protocol (CoAP) Block-Wise Transfer Options Supporting Robust Transmission</title>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="J. Shallow" initials="J." surname="Shallow"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document specifies alternative Constrained Application Protocol (CoAP) block-wise transfer options: Q-Block1 and Q-Block2.</t>
              <t>These options are similar to, but distinct from, the CoAP Block1 and Block2 options defined in RFC 7959. The Q-Block1 and Q-Block2 options are not intended to replace the Block1 and Block2 options but rather have the goal of supporting Non-confirmable (NON) messages for large amounts of data with fewer packet interchanges. Also, the Q-Block1 and Q-Block2 options support faster recovery should any of the blocks get lost in transmission.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9177"/>
          <seriesInfo name="DOI" value="10.17487/RFC9177"/>
        </reference>
        <reference anchor="RFC9363">
          <front>
            <title>A YANG Data Model for Static Context Header Compression (SCHC)</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <date month="March" year="2023"/>
            <abstract>
              <t>This document describes a YANG data model for the Static Context Header Compression (SCHC) compression and fragmentation Rules.</t>
              <t>This document formalizes the description of the Rules for better interoperability between SCHC instances either to exchange a set of Rules or to modify the parameters of some Rules.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9363"/>
          <seriesInfo name="DOI" value="10.17487/RFC9363"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-edhoc">
          <front>
            <title>Using Ephemeral Diffie-Hellman Over COSE (EDHOC) with the Constrained Application Protocol (CoAP) and Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Stefan Hristozov" initials="S." surname="Hristozov">
              <organization>Fraunhofer AISEC</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <date day="9" month="April" year="2024"/>
            <abstract>
              <t>   The lightweight authenticated key exchange protocol Ephemeral Diffie-
   Hellman Over COSE (EDHOC) can be run over the Constrained Application
   Protocol (CoAP) and used by two peers to establish a Security Context
   for the security protocol Object Security for Constrained RESTful
   Environments (OSCORE).  This document details this use of the EDHOC
   protocol, by specifying a number of additional and optional
   mechanisms.  These especially include an optimization approach for
   combining the execution of EDHOC with the first OSCORE transaction.
   This combination reduces the number of round trips required to set up
   an OSCORE Security Context and to complete an OSCORE transaction
   using that Security Context.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-edhoc-11"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm">
          <front>
            <title>Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document defines the security protocol Group Object Security for
   Constrained RESTful Environments (Group OSCORE), providing end-to-end
   security of CoAP messages exchanged between members of a group, e.g.,
   sent over IP multicast.  In particular, the described protocol
   defines how OSCORE is used in a group communication setting to
   provide source authentication for CoAP group requests, sent by a
   client to multiple servers, and for protection of the corresponding
   CoAP responses.  Group OSCORE also defines a pairwise mode where each
   member of the group can efficiently derive a symmetric pairwise key
   with any other member of the group for pairwise OSCORE communication.
   Group OSCORE can be used between endpoints communicating with CoAP or
   CoAP-mappable HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-21"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-key-update">
          <front>
            <title>Key Update for OSCORE (KUDOS)</title>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document defines Key Update for OSCORE (KUDOS), a lightweight
   procedure that two CoAP endpoints can use to update their keying
   material by establishing a new OSCORE Security Context.  Accordingly,
   it updates the use of the OSCORE flag bits in the CoAP OSCORE Option
   as well as the protection of CoAP response messages with OSCORE, and
   it deprecates the key update procedure specified in Appendix B.2 of
   RFC 8613.  Thus, this document updates RFC 8613.  Also, this document
   defines a procedure that two endpoints can use to update their OSCORE
   identifiers, run either stand-alone or during a KUDOS execution.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-key-update-07"/>
        </reference>
        <reference anchor="I-D.ietf-core-href">
          <front>
            <title>Constrained Resource Identifiers</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="21" month="April" year="2024"/>
            <abstract>
              <t>   The Constrained Resource Identifier (CRI) is a complement to the
   Uniform Resource Identifier (URI) that represents the URI components
   in Concise Binary Object Representation (CBOR) instead of in a
   sequence of characters.  This simplifies parsing, comparison, and
   reference resolution in environments with severe limitations on
   processing power, code size, and memory size.


   // (This "cref" paragraph will be removed by the RFC editor:) The
   // present revision –15 of this draft continues -14 by picking up
   // more comments, such as moving to a CRI scheme number registration
   // system based on unsigned numbers.  This revision still contains
   // open issues and is intended to serve as a snapshot.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-15"/>
        </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="RFC8824">
          <front>
            <title>Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="R. Andreasen" initials="R." surname="Andreasen"/>
            <date month="June" year="2021"/>
            <abstract>
              <t>This document defines how to compress Constrained Application Protocol (CoAP) headers using the Static Context Header Compression and fragmentation (SCHC) framework. SCHC defines a header compression mechanism adapted for Constrained Devices. SCHC uses a static description of the header to reduce the header's redundancy and size. While RFC 8724 describes the SCHC compression and fragmentation framework, and its application for IPv6/UDP headers, this document applies SCHC to CoAP headers. The CoAP header structure differs from IPv6 and UDP, since CoAP uses a flexible header with a variable number of options, themselves of variable length. The CoAP message format is asymmetric: the request messages have a header format different from the format in the response messages. This specification gives guidance on applying SCHC to flexible headers and how to leverage the asymmetry for more efficient compression Rules.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8824"/>
          <seriesInfo name="DOI" value="10.17487/RFC8824"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9528">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </reference>
        <reference anchor="I-D.ietf-core-groupcomm-bis">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Chonggang Wang" initials="C." surname="Wang">
              <organization>InterDigital</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="24" month="April" year="2024"/>
            <abstract>
              <t>   This document specifies the use of the Constrained Application
   Protocol (CoAP) for group communication, including the use of UDP/IP
   multicast as the default underlying data transport.  Both unsecured
   and secured CoAP group communication are specified.  Security is
   achieved by use of the Group Object Security for Constrained RESTful
   Environments (Group OSCORE) protocol.  The target application area of
   this specification is any group communication use cases that involve
   resource-constrained devices or networks that support CoAP.  This
   document replaces and obsoletes RFC 7390, while it updates RFC 7252
   and RFC 7641.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-bis-11"/>
        </reference>
      </references>
    </references>
    <section anchor="sec-yang-module">
      <name>YANG Data Model</name>
      <t>This appendix defines the ietf-schc-coap module, which extends the ietf-schc module defined in <xref target="RFC9363"/> to include the new CoAP options as defined in the present document.</t>
      <figure anchor="fig-yang-data-model">
        <name>SCHC CoAP Extension YANG Data Model</name>
        <sourcecode markers="true" name="ietf-schc-coap@2024-07-08.yang"><![CDATA[

module ietf-schc-coap {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-schc-coap";
  prefix schc-coap;

  import ietf-schc {
      prefix schc;
  }

  organization
    "IETF Static Context Header Compression (schc) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/schc/about/>
     WG List:  <mailto:schc@ietf.org>
     Editor:   Marco Tiloca
       <mailto:marco.tiloca@ri.se>";
  description
    "Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.
     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).
     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.
     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.
     ****************************************************************

     This module extends the ietf-schc module defined in RFC 9363 to
     include the new CoAP options as defined in RFC YYYY.";

  revision 2024-07-08 {
    description
      "New CoAP extensions and extended OSCORE fields.";
    reference
      "RFC YYYY Static Context Header Compression (SCHC) for the
                Constrained Application Protocol (CoAP) (see
                Sections 5 and 6)";
  }

  // Field ID

  identity fid-coap-option-proxy-cri {
    base "schc:fid-coap-option";
    description
      "Proxy-CRI option.";
    reference
      "RFC XXXX Constrained Resource Identifiers";
  }

  identity fid-coap-option-proxy-scheme-number {
    base "schc:fid-coap-option";
    description
      "Proxy-Scheme-Number option.";
    reference
      "RFC XXXX Constrained Resource Identifiers";
  }

  identity fid-coap-option-hop-limit {
    base "schc:fid-coap-option";
    description
      "Hop Limit option to avoid infinite forwarding loops.";
    reference
      "RFC 8768 Constrained Application Protocol (CoAP)
                Hop-Limit Option";
  }

  identity fid-coap-option-echo {
    base "schc:fid-coap-option";
    description
      "Echo option.";
    reference
      "RFC 9175 Constrained Application Protocol (CoAP):
                Echo, Request-Tag, and Token Processing";
  }

  identity fid-coap-option-request-tag {
    base "schc:fid-coap-option";
    description
      "Request-Tag option.";
    reference
      "RFC 9175 Constrained Application Protocol (CoAP):
                Echo, Request-Tag, and Token Processing";
  }

  identity fid-coap-option-q-block1 {
    base "schc:fid-coap-option";
    description
      "Q-Block1 option.";
    reference
      "RFC 9177 Constrained Application Protocol (CoAP)
                Block-Wise Transfer Options Supporting
                Robust Transmission";
  }

  identity fid-coap-option-q-block2 {
    base "schc:fid-coap-option";
    description
      "Q-Block2 option.";
    reference
      "RFC 9177 Constrained Application Protocol (CoAP)
                Block-Wise Transfer Options Supporting
                Robust Transmission";
  }

  identity fid-coap-option-edhoc {
    base "schc:fid-coap-option";
    description
      "EDHOC option.";
    reference
      "RFC XXXX Using Ephemeral Diffie-Hellman Over COSE (EDHOC)
                with the Constrained Application Protocol (CoAP)
                and Object Security for Constrained RESTful
                Environments (OSCORE)";
  }

  identity fid-coap-option-oscore-x {
       base "schc:fid-coap-option";
       description
         "CoAP option OSCORE x field.";
       reference
         "RFC YYYY Static Context Header Compression (SCHC) for the
                   Constrained Application Protocol (CoAP) (see
                   Section 6.4)
          RFC XXXX Key Update for OSCORE (KUDOS)";
  }

  identity fid-coap-option-oscore-nonce {
       base "schc:fid-coap-option";
       description
         "CoAP option OSCORE nonce field.";
       reference
         "RFC YYYY Static Context Header Compression (SCHC) for the
                   Constrained Application Protocol (CoAP) (see
                   Section 6.4)
          RFC XXXX Key Update for OSCORE (KUDOS)";
  }

  identity fid-coap-option-oscore-y {
       base "schc:fid-coap-option";
       description
         "CoAP option OSCORE y field.";
       reference
         "RFC YYYY Static Context Header Compression (SCHC) for the
                   Constrained Application Protocol (CoAP) (see
                   Section 6.4)
          RFC XXXX Key Update for OSCORE (KUDOS)";
  }

  identity fid-coap-option-oscore-oldnonce {
       base "schc:fid-coap-option";
       description
         "CoAP option OSCORE old_nonce field.";
       reference
         "RFC YYYY Static Context Header Compression (SCHC) for the
                   Constrained Application Protocol (CoAP) (see
                   Section 6.4)
          RFC XXXX Key Update for OSCORE (KUDOS)";
  }

  // Function Length

  identity fl-oscore-oscore-nonce-length {
       base "schc:fl-base-type";
       description
         "Size in bytes of the OSCORE nonce corresponding to m+1.";
       reference
         "RFC YYYY Static Context Header Compression (SCHC) for the
                   Constrained Application Protocol (CoAP) (see
                   Section 6.4)
          RFC XXXX Key Update for OSCORE (KUDOS)";
  }

  identity fl-oscore-oscore-oldnonce-length {
       base "schc:fl-base-type";
       description
         "Size in bytes of the OSCORE old_nonce corresponding to w+1.
         ";
       reference
         "RFC YYYY Static Context Header Compression (SCHC) for the
                   Constrained Application Protocol (CoAP) (see
                   Section 6.4)
          RFC XXXX Key Update for OSCORE (KUDOS)";
  }
}

]]></sourcecode>
      </figure>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-01-02">
        <name>Version -01 to -02</name>
        <ul spacing="normal">
          <li>
            <t>Added compression for the CoAP options Proxy-CRI and Proxy-Scheme-Number.</t>
          </li>
          <li>
            <t>Defined new IANA registry "SCHC Compression of CoAP Fields".</t>
          </li>
          <li>
            <t>Updated the YANG data model.</t>
          </li>
          <li>
            <t>Fixes and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>
            <t>Fixed an example, as per the erratum with Errata ID 7623.</t>
          </li>
          <li>
            <t>Clarified building of Field Descriptor for CoAP options.</t>
          </li>
          <li>
            <t>Clarified what SCHC compression considers for CoAP options.</t>
          </li>
          <li>
            <t>Revised SCHC Compression of the ETag and If-Match CoAP option.</t>
          </li>
          <li>
            <t>Revised SCHC Compression of the If-None-Match CoAP option.</t>
          </li>
          <li>
            <t>Added YANG data model for the YANG module.</t>
          </li>
          <li>
            <t>Added IANA considerations.</t>
          </li>
          <li>
            <t>Fixes and editorial improvements.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Christian Amsüss"/>, <contact fullname="Quentin Lampin"/>, <contact fullname="John Preuß Mattsson"/>, <contact fullname="Carles Gomez Montenegro"/>, <contact fullname="Göran Selander"/>, <contact fullname="Pascal Thubert"/>, and <contact fullname="Éric Vyncke"/> for their comments and feedback.</t>
      <t>This work was supported by the Sweden's Innovation Agency VINNOVA within the EUREKA CELTIC-NEXT project CYPRESS; and by the H2020 projects SIFIS-Home (Grant agreement 952652) and ARCADIAN-IoT (Grant agreement 101020259).</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y923rjxrUweK+nwMjfN5ZikhapsxJ7IktqW7+7W52WbCd/
dr40SIIi0iTADYCSGHf/9/MUM08xV3M1+8VmneoEFHiS+pBsa++0JRKoWrVq
1ap1Xs1mc+PuJNjd2CjiYhSdBNdFWMS94CxNiuihCH6Iwn6UwZ/jSRbleZwm
wdb12Q9n28EgzYJiGOGTeZGFcRL1g9PJZBT3YAB47FWWFmkvHQVbZ+npq+2N
sNvNIpgK36aX8eONftpLwjHM28/CQdGMo2LQzHvDXvPoqLPXnE76YRE1R/BP
XmxsxJPsJCiyaV50dnaOdzobYRaFJ8ElgJolUbFxfyvD/5Jmb+PkNvg+S6eT
jbf35pnmOc6zATCeBHnR38in3XFM6ypmEwDj8uLm2UbazdNRBHOeBAjGxkYv
7cNwJ8EUoDva2AinxTDNTjYC+mnKf4MgTuCNF63gJh6lvVB/zAt8EWa9tPxV
msGory+vL4LT7/SHgM4oAvgu83DwjzTr57dhESZBp6Of6MXF7CT4Mc4LMxTA
iNt30Wwf7O3tWB9PkyKDp6/vo36U6M+jcRiPToIxQtUqCKo/ZnErj/yreg6r
SqcFbHNpWc/DaRYlReVbWtnli5vgtBiFSRH/5zSqLPDsOmgfHuwcNoJOkE2j
oB8FozA4G8Jy49skAqKKSks+AxpMk+Z1dIcPwJ/96KGEgd39/cOD6vKfZWHS
i8rLF+hbAv0f43HRDDXArUHmx8ZlC7ezAJr/Zwkdl3ewU5XvCBkv07dxGHwX
jUYwbTevYKPdCV4DEv5HBCN8ByOUlv4izPNZaa3H7d0dz1b71xoDaK2xgPb3
bjqCD7I/JghVswtQwTHr5q1eOvav+RTWHCdhd5qlpTWfJmH1K1oy8obpCIi3
qKz2Ne/36yhJonzuLlf3t730mkOAUCD74y1+ROvbSNJsDFzqLsIz/PrZ2e7B
0ZH8ut9uH8ivBzudHfn1sLPfUb8e7LXVr8f7x/rXg0P59ajdUSMc7XZ21a97
O/qBg7b+9LCzp389UDAcHe8d618P1QPH7cN986sa7Hj3gAa7bJ63iHv20ixq
pjn9J+oP017tt7fIHQEf49on3kYz4cHVR4ZZNDgBnpwMSshElqnh3NNw7neO
qoNoEJrdOIfR4CwiBcBz1xfPn50Em3+FV5t/hp+/bW5sNJvNAGgUbpse3AY3
wzgP4P6YjpH/9KMB0HUeDNP7oEiBLvjCWvZ6CoZ00eXBNMeLAy+2xTdhmPSD
QRbeIgA8qrobMzgY93AJtfg+UsCFMo0GD98ZR71hmMT5OAj74aQAOPl2NHCf
w0HoRbkMNs1ppJzB60d5L4snNHs6IMBlDsBCFvWnvcj68MucPkv6cFhmBH8e
/zNqBb8M41GE2xQgRcqgXZiHEIGz9uauWy+4QV/GBUBoIRsXdPnq7uDrn85f
KUw3YGx7A+l5mJFmA9hxW9SzcPmQpKE/QTYy7RXAvIN+PBjgxg2ydEyTEAQw
UQPWBiyBXxOkDUbRQ9wdaRzdx8UQPgZGGIf4cTIdd+FjQGRKKCUoo3Eeje7g
ffhYPzmKkttiaAE2BuSEt1HAxyGApYX5bDyOiizunRAeswjulLxQTwKthneR
oQl5kdeDGKEV4YtqyESGyScAWaTHQSBgunwS9eKBQvltjBDfTmPc6ijAXQME
z5C4FYZLyMgJcXJ+RtEd3L+3TDtqITPayDEc3CAawEwxQmkTxuvpSIOjNzaL
JqOwF/HwWrRiYgNW0eJzPY77/VG0sfEFimpZCnRLy/gi+PWLGD94jwd+aWkz
+PVX4drv39NWIJhjAOBrjb2JegOIHa8ZPnbjuJfBpzjjaIQ4IQrJxyHc2q9P
X9AaXl+9YDJHGhnD+eFX8yijYxp0wxw+QnRcXN8EW68jxI86KuGIGEsU3MCF
lcNOb7eC0xHIk9PbYUWeloMfgJwLSxjBNuH+DYD9wXxCDgw+0iauHACzzwmc
dzzgiIIchLwRbC3sbZgxnQbPX/1y+jIPtp6n981X6T0Q4S9xP2qeglgdvIwK
PNA5wPcITpjeRZlzlBEUPAgx8CEkNDiiMBvuR5QRnRO1EveCM8uv0iAEa1AA
s0zSUXoLrAIoh7YZWRZss2KymmVZTOl+GPeGONdo2l/Mhy3UFEM+y3pPNePt
MTZaQGrXERPrPu6CASh6AMIH2QlmhwNd4aD9yP4k7fWmek9BKB/GsFRkcMxi
KjwYlKRojEczh1OGvAYggy8JtTm8y5B3U6DeKOlPUjhEefA2wdMNw7lrCLrR
AA91gSQp6hBPex/O6Hn1IGACfh3EtwBYv4Fn6C7Gp/EPQFr0gCi8BUzBgyBS
841kMQOkx146iWDraGfxaCbOVaGOJXBvuQPsVQvl5CiSFnAm8TjgyVa8B1ZS
3EcRYxHol/FGDyfmBnV2HVZInDEAdOEbhv8iDxyB5ItfwHCXr9TNwt+ozSJK
aeAO3KNsjzvBL9jL4jeU2kvIzRlCGxiibtQ8coKrCwc36UcT2EBUUoLvcDcH
wJjULgJ9A8KArOPJCGmBN13d3n2E0DohwGhya3kka8U0VaI4fQXhsB09FKOc
i4kR0zAnjXHfz+I7JTxZY3ztEjrxslFuIboVuMdYyR5yFSEb0EYDaxMs2cC+
buQaNO/z7lY2vixibGw4j8h9ZWDHAYWFaWYgpCenw1CfFtisoysHSLGgMehF
tGtyZ16EwKDw96AXIlUWvaEtzMGCRv0cgVbXPIgiIyQUQEqGZ07EE/ysFVwO
gB3QaDRSJJvFf/RLg+KOyCXdD7p84PHdy3NCAdOFdcnDhdOfCoPBdRGPE8kE
voEbrosCoEijFs4RH1MAxVASEw7SOqgDfDXTrWCe0Ne0vj/41E3C3tuoYCBC
QThyXGCajKYIL2jATdSLQBSC7T1lhLiyLQ+Tf0mnISvJhcCVM/gLsDKKc2Jm
zxBjMBvL3CmAs5VHkXUFHDpXwDZRQBZ1Z40gwg22pXUHdTwwYHzr2eX5dkP+
fk5CJnz2fJslDv74VQocni7ZZ6+2Xc4TnMMqGJTLpI/cB3CwdX65HWxNJ6h7
h2PAf3qfqN9x1G7cV2+Fo21WC1K+XNJeHKJKcoMyQxH8zDS3dfNzzmsLzi+R
iU9zEYJKJwylUFpfFwXfm5/xM1ourBRuRdpKON5CyrzrssNx5txHgQZRcIo3
Fko7RMSKXRrWl5MACwJPPI400RDDRCogcniBpwEZ1hXIHoyoF1fbLLnrhRMl
0N4JaZRJgNFApIVSVjQCKJH1wglEeQu+e3EF2knMdwIgjvCkvpMj6GhuwKc1
J0hSvJ2dYekgi7KhaUjhQckr0wTv+kTh22FtAPPGxmUiBxh4GQuNhmGfOwz7
lMlp6+z8dNuPGZ7aMF6GEGTavqOKu/yUp6dXWw5/GcOCgGHDn8AiaetAvkAM
DVKQkEKCBm0Fv+MzrrHIVBRs0X+aKHBvN/RTgEfa6i34pfwd0fpzEEKL4BpE
adKhgPN8h0xs6/n1d/m22h+aByUd/S7wCLyiH4KtMdwzMAMPjvQ1KIBatNJV
YoXEj7NI0S2BQFwTEEb7jdfijX04kEv3gGwA85sedrypLjDSdm6jhKjfsi2Q
el3DXIEn024ikNEDoFgYMwNDh5vFEFxJKgxYMWZ1R1jiji0Ut3dcqdjlvx6R
VhkLFl30BbGk3DEL2MOxJQdx0mLdEQUJAKVqzjCocTSV+xBv1/g2Bq4IBMn6
hSVUHbFQxbYT15jRT2F9eHbDEVIBrzQjHGUpHJmGUtt6wxQlBebDgyhEiV+r
8lGfqSROysaSHuhwdNYaAdvnZAQQMWCXasw2oiLq9dUsiHjDBO3EvSlMU5o6
r9PnrSHwJmIxFcWq3wWXBWsKKPcI5EwnPAYw5aTPYwu7Ulgv2TRQgmrY0tdI
uOIgivpduMlpOIAvzfDTKAOuHioINMpYLvQhCI5KH8melU42ACF21GmSuz6P
es1eGk6a8gje85VJvBMYn5mZ4ASYzj+jdoP+02mgJeNh1vwpi3lH+c9rPhoK
AIQA9fo2/dtpTuihaRbLb3ySBD4A7/fBxU14S+NdDpp07zljRUV424wHTZIP
7dfkjZfAgT2vwRsJfkOvWVioaOI+HKBglhTWuXKwzss+e31ZQULzJdvobEB4
1b3y+tmaZ9azEnwWOMEP6aT5PB7DHS6z2tvfHMK3I/z2aVFwAbzBOx/w9BSm
agDrJ4NiE/fW96AYHJuwu/T8xfkPV2f+IdFRQM9YwuSfmt+N0t7bNm2B/NFx
8E5jEM/JaZguPmJhQXiTHwuiWpJFy4Pzq+uzq9cXc6djLwWBLQLeKL4dkqDO
qAXEgqaaThTjGpHgIkwGRoQTU8zMTSZThiXWuMA1gvwOEFTznPZwEGddlRNp
pEzC2SgNUc7N3hril0+b/Omy5Fe+B5RGRVbKXqS/x7OEUGqC0UM0UVpoyveE
f9xBNrKB/DCejERgEbbfV2OoLxnUL74IbqJsHJNBbxZ8gcbewnwgJl/AdHCP
bvBg88VP1zebDf5v8PKKfn998aefLl9fnOPv1z+cPn+uf9mQJ65/uPrp+bn5
zbx5dvXixcXLc34ZPg2cjzY2X5z+ZZPZ8ObVq5vLq5enzzcZXY7nAk1nKVtr
AHxAElJZmG84hpjvzl79f/93ew+Q8L/BRdlpt4+BcPiPo/Yh3pqoEIlhGQVg
/hN2ZrYBYkMUkmKEekMvnMRFiEIbUGo+RDEfpQTc+78iZv52Evyh25u0976V
D3DBzocKZ86HhLPqJ5WXGYmejzzTaGw6n5cw7cJ7+hfnb4V368ONjdfKYZEp
nZ+PNWzBIBzHozjMjECLFMWCBmhLvWhS5QSutdi2RrHZ5D7qNgsx1xtuQWfE
8jM0tCRc4Sy5Yi089EF7V5gGBaiYL5fgIF8wtOL76MJaYR4lueIBQkYZ2t82
i5Q45/uShUvdRA4vAPSTHo0qV0w2in9MExbkNUJH5CkYhTN8YUv59bYD8klo
c+VoZpm/yLMpllB6r1G2Uvpt6A2lIJEOosmd3hjEt/6FNtv44rwH9G7Ne2hX
ycKs+WWgHgr7QmUoZnV8CUDEEGfZEZXig4KzcWii/GqcmLKlreBS2A0r6viq
GLsUtYmjJvgeSBrt9Vsvv/9lW7lTGP1nX5+zQ6ZezW8EzKFLtivHiI1EOE3o
L7i0NT0IPFrniXFlxBnV5IDH/2V+gjDM7243gi1+cTuwfxj6OT9bQPrbGxtf
NeXnq3kPl37MSxvvAib84N0K75uXnmJ+1G1Xnl9eKs+v/5wLljs/0ZnML1Dw
R9YHlfnlpdr5v1p+fqIOM7/9Z/388kv9/Goq7/z6F5yfPYpqfv7r8fMvuX7+
YAt+aOJt+LEe5KfgFxW3qD5q2gdp49eT4Is53CegmM5vNutte+Kp4rV/l2Jg
SDbbhHuVWEozBHk6+WYTReko23yP/ta5zI7YM/M329jiMc6E3fQO5sW7IOgo
CbTM2L7/xbpC6N5Q5nxkNEkTpNVsRhEzYsbnW148irNqaAK5g8TyWpJ+if+2
giv+K0W7CzpOGwoSM7OWGMQFwTaHHrntp+R9sEY34UR0Cczxp7QCthiyT79s
KiQQgKHfh5mYd+ggKi9Iip+rcADgzqE2lCsnobjxJMgmtpepLetskg+9uAWa
yGj5QjKyOWHyVlttLl8pCHHN2kxjgM1AK3kwy4lRTDDWEmv3PT43g0h+7stc
PGf6is5xD/or39EkC1QEozjXZkHBFTF+IsKGeVJAsk2QjgikDMeMaBZ9jMPg
8rzhowQWTRy1jwRdvSOMi9Cy7uZT0LxAPDq/eX7NlziG3qF18gpVCYek+Qal
YwJ0Fk+GQnQ6kg8p53IQJFHUR7++CHrdCN3O2hlrG/YtP2VZdzZ2361MxcGw
l7GfFgV51hJDjxxYsN2S4D6cDMUeAoUiBQB83LiIhXnxqMZFDIzqnyyj2AEA
JX7iGKhv7KgGdwgTu0CxCmKdsDS+38QZ3/zu/b3k/PLSU8xPtL/q/PLSo+dv
BcG0P4HPWiu8b17aaOkf/qby431f/+D88QQls5YaGX/4I+uDyvzy0lPMj2kb
1vz2n/Xzyy/18y/7fhCMJvfAIdT8/Nfj519y/fzBBxXnOkqcuy6Ao4UjVNHp
+F4wU7ygS6NG0psj0yEnBPaWrX517vokvqvuP0CaCK6VDaQczIxBkYPpCKC+
i7M0YdPsFptAtm0DSVn1JVbBNwHGTWmBzrmGrJsY3eistpPoNQDmjQKFkkiS
BK4r9eQNR69MRyZkjV8tyQTlOxhHEuuNvoxpNDTkKYnEp/5fTQs9fUOighxp
4sq2gv8bXjioStIWrPi+vPTJL6zPAP7H4p9pcMX35aXPAf+fFP7fLvzfLvwP
fOHvqgtfbph1LnfRjUmLQoVGouLcsOjG0pb1jnZ2zpUKGtrioYI7Ma4HbdtO
7BHHjuO1108x6itvlbO6rEu7HJpMQJd0SjKAhDmGuHbTh8h2bd7F6TQXBTMn
PwoN+IOYFxRuVVwbIUi5U2hZfFc3LQjeV8OKKFOhbBFQRhcdgWhHgdrmjmqw
tBUQHubizZJPTMyliYkmnEjagSf8+5l4e6qR2xZAUyWiGLOQZRlAgUulvVQC
uLozzjhTgozJpuJp2KLgyGxOglc5tJK8UWxO4EwGCWgwSTx25hKGVpbjPBu2
3eiS800oKtZOigsw9Rsj9jg0kw0lHpulHS0nsatWTKXxfwC8fco4yhCBLP75
zSUNO5SZPLUS+xdMk56hSNeIeHkOOOFFiAcTTsxkmk3SXExHnG9SY2dEMdbn
gBJLlQBTCms+KIU1k+/+XM5yz8q7ILoXavwaCNMGgM8THqi+eZNDCeBWbMbo
oawkINSm97miudiPKOiMjGM5RYJTmOjNcIkUPRDCW1Gr4RhvQ51eyLwIjrJO
4pM/mA75aIn6xGP8lMXNVyHQrAjyaG5Tfkz046uBKDcJY4cJHiQf+xE1/KlJ
HqQIF4n7RZPYaQ992jIN739o5QjS45J1QGG+wCuTovmMUcBvkaaF6AyzOFcG
ZwfXWVRMM+LUE1xTfh9OmIo45hZvFmLxHM0su6GUqx/Se7x2Gtr0rjmLpEDq
Iyvvb0Wt2xYmAE0zMd9ZVu0g7PfpGPHDSItwz9YlgglzDilOncEqcxmVHRZS
wCKqbbBOSczA86Vt55p+5MRo0hjNGtX4WBOvjjR4cRdp8zpHK8Nub2rq2wy2
mPwG6INBSInfGURtNwy6USHOMjFNc1qBZtUOySorp5vthCgJg02O9ZOo5c3g
xRWlfVKQG8WmYU4Jok7HV8jcRJkmPNSemxwhOuPYw3skHRHhynTC4/kl6soV
3i+7xTdHDjeoeFaAzeWUtWoHfccJMsL7lAAD/oy2ETyvLnb4mCqxp0Ex+kFv
RGmsOcXNUuDNGWa4wfHASbbOrl5uq8OXu+EeCM0NXB3qbEcjCnXqzkpiipif
MW52ZpJ6MV0UiEjtCEIshNfFLUhpk2dBFBfKQH/aw5j+UdS/Ze/61unZjxR1
AdhFlv36+mab7zLad8bPWQrnfhha0kc3gkMXpxknJe+0dv5MlRUUV1QItXid
WsFfWv/zfzrPulyKYs8SkiuMAOicRsNMnQykLyWbmnL+OGFe3aUoMuh0nrgg
TuULDm+I/4D4h+RVD+KHiBPcGwFnQ3Ql1DJmanCcfRhy12A2Zgtv9pCl5O/c
7K2VWcTs3iRDINCV24GScuXGvUnfAlswaSwwi5DJDq78CKDW8d1atFRBolmE
TqZE02KTU4aalKiD5qq0LwGWuF86fWxWgSLsFZi5JcGXmghobmaxvyD36qc6
g7wUUmiy6JuMHpUtYSVHtfZaHTcbYBy+JRyZY40JCizywQ6q2CMVIOqkRdXy
81gSt3gsjihkniSQSb6rk5p2OfDMoBNpLIK+xzxqPHAANaVcqXXzFhFu5BnZ
MUuUI5wAGxw5S/C5g/E0nQpZiEsbYwC9eU3lWgkxpVkDK4h7lLqgVUDiiRyc
k/Om/fT6MtiiSx2+guMO94pK7aKVuBH49jWr70tM5uI8y1oAtfNbaxeeTDYS
z9knrLKOWYI2HLvgbDog+3Gqc01fXAFCw3EXdDvQQwlx9i46HkmWL5lfm1x4
uphjsvayTVmSzbMQyxwEPWW+LvLyFVIIrs2FiOjGYkaKZF+I0ABI4s1U59g6
93ZlD8MjMW8M5Q+J5CprW+XMw9ZeOffQYz83wREEW+rNeXpBOU8sEVgXuq0G
KgkEfuVMeVGpq1HGP1hpc7mrUjNvrajUlEbHi+rHeW+qjeY+tlNWtnnMRtCd
xiMljt1LUpxJq3FCDg9bbQdzrN3QoD/DgcJHmJ60/kLQ3/F3vApdngJeki+o
bICdWUk7r7Q8ERb608zHUFXtEmQxo/twlrvZonSPE4+WTQZym2LqEGXhk1iT
RPcaELUVsT4KDfqeZSviVd3I0s7DuzTu6xMVW+qdjJhbKCIJyIcflEQ0csrB
siSSUEIfPka8SJUzOakKYI3gJSC6Z3/8kj72ikTMhy2hSPK/6mooSPQy7Yjy
/ZCEPuC4dnPatbRIJKrEfThMAI0p64I2BJIjrQ+ZbwAw+hM5kEYiN0o9ZajS
CyyaTO0X8ATXifDWtpDc59sWlN9KNNtXwmJBtzFf/lpQ3cQHNjHbajrWR25T
T5JvBpenL1FBvY2BS2KmM0odEq7rP3G7ct6YFuTGEqSLfSYX5klZpAQiXVc0
raWD0+WilN3SY+pzpWIbfRWE3h1rJsDoxXhSzNTeVPUmm9FY+JIkN3Mmq8UY
7DfpqDDD39gQeUNiVCYjPOShye7P0lFkkQgpQHIF9COji4naU8lLPwm22ttl
FOYmZncHs1AkJ3ers13Fo6qVQdwB6c0yofnuaC0xGiOSlqlkjXQodHBwrraJ
j5QnBgvXTQZgflOkXGc9hGICg88l3aBxQgWo0mlxS9Kq0t4A6XimWBVgDC5z
pnAV6ilUSUr+5r5OC4YNcuU+ozHXC3nqvFpigu/UCmU2474+uxpyB6CKuKG3
HG51vNOV+PEc/jw7P10sRlisniQWL6/Hb1xmb+t9/KKYMe8lWYFv6hP50pXp
sVQTZuTPtA0dDbz0IGs2fK2iPq1Nfu57diCA4EoMOQ5MMm1IOsh9OoWVaXtP
MnOECk3OTOpaReWSN5ZeJ+JlDnCY8MGbnzlB17n2yaDvFN25QoZ/H2t5zSUo
H6r8ZPVMeKOFMxlRJQQplRrXrjU3gh8wGM4ZvVEVEWaGymwQnUoNZnLFTZzV
MFKN8lfWT70Rs1JcDzOpmZEb/qlUx0awWbwdbTYMqyBdxACSGku4T5tsBedm
rypxuXhtKR2VbaS2WVRkNosI7BWri8AvNl+Jgu8IzCrhuHTElDFASriEOo7Y
e4xKukdDFzkBvUrU/8RJsfXf2ttUTgiUE/sJLUkrGxkZ4GRUJUex2UgZU7VG
OLBN0rADI6DCLayFIp+oYijPzUfMC7Z+3vYlrUfuUKpKCWx49GD4pbtiIzzI
50jXBK7tQGgoZ5zxYzhxpzLvSz0mSwLG4VfzkOWo1CjjdxWytuBY/zPKUq1d
cpQSP02V5PLUWbsgza3NIcYHmdPGZcO2+VziurWXsOE9HnYqnYs58q4oCYn8
MPQ+3EskPJMxCq/dhJkILloHhGeO2KQQVyo9oqUPqhpEori9l7/XUz63Zqyi
5rlnLkeGdUm8rCxSjryaCpi8dyqm0589MwGaX6aqWhsbM4yhD25nR4D2bkBK
xWsiV0hy56VAfVRaPELWhGotEu/MxEGoJX93FO2puk1SzREdlFdPXaNM7p6L
oRhGemo6f3ZyBbDQu2jG4e6WGc3W+E3emXi51odLuYIYJBDkSahUCnIo5kkr
2QN5pthntBrvhGbA/v4ydNmC0N2QbIeYa9+0JFLLzshiv7HWuq878vYzTcQV
8iAeTtk2bBDiTAHHJGTHG2RRKH4WZ/PDXNnTHeOuR3gsHQ/kzJZMoxfnMqQ5
8KNkxooaE0HJBm/ZXJdeh9dO7VtKp2xQqz9GYb8fs5UH847IOObjtf5sjxz5
PuWM6JRkn+NeDD4uv5Dxxc6vvOWOO16JB/OKuakAFi9uclWuUfvB2NXH6iKG
61TOH2nDMrFb3slEBQEDwPotLEaZGrPdmRO0IcYbI+fnyncsoT9URaFcu4/8
OFoYtNHQCn5KRnj7p4ostSWgr5gR4DArl+NAz2rJnGEsGFqdV/5mmyLK1yJe
mGhV4jK3alYrHEeSsLm8RJ/uZOZLZMNn294zCgMxDidlV4RbkqvZzrEce64h
W/GIB7Cd1WJ5QHDOFenLmaKSR71hHN0h3Ppo5rookc248RbHRBuXXSplU85t
KWABh5SIB9uizBIyP8lyZDOkp1TxF71BYihQlQK1t98tq2jZBZRZEEtxaeOy
5syKTh12fPMzX2QVr6AqK7gJ5ygcbarLPgw2VVmyTbz1y7vhgVt5WbTbTNkz
vJ59sXCq+BPH0T/PTY9ZYKkyzZATOTXKaNlVWMdatmjV7IwFhl5i4NvVLX8R
PjRPUcrGGJofUoyRIW8vRtSkWXXjx/A82kaw/tEQHudCSPCk2fwye+DtLIZZ
VA5aIcZ1H85agb63VaHNgbxmcwRxDs6hFm02SK34uvK1v5whyr1IDSRfKhCV
pEJscZ4Gb2KdNNtxCFXLVCTLEkkr8Q8+KYznDSlikyTCaNMRXPFzU4lvs7rL
OkBK7e2fphFw//Lm0l6GGCIGv6B/cmZ2Fe+FmmHc0qYgDBDJ6aLuZv02Q8JL
ybrExiVfJoXWxRSWo1x0qt7qTS0mjcPzFdfew0Cm22mcDx0N0jg5idBISlMX
FizUjR7MnUVZcTDLkFHJqadsLPpYIrJzyxncsh3/qF0qpGg/sti7sogqldDl
SNqgcNYIG3Q4Pvm6AFLGI8vspM8NzCQVc5siNtaAx6qWp7yAZJorGjWhbWIZ
07EYot5psdTaOScimjDdZEPRA9GjyRrWuLbCd+awQzI4iZTEwXTRLS9x8+vw
6+6m8mqUv+t93d8kXiJ4phIcGOfJZQaxKAtLEknQ4VKSc4BgS6d2+rWC08Jw
P6T2Rvni5gwxAkqh2IhkBnKGsyRnE40p984co+U7Ef8DzNQAnQD/fQX/nF/C
P3Cp1vy8wz2u+QZZkflz411T/7wz/5p/an7qvyt9g3kpmiOpyhJt/OenCfzz
5q+Mqcab4A/d7NvgDaPrb2/wOz6p6hs5sfiNXVk0KM0AOIZ/d/UM9T/vWHGP
fN8YRk1YwrSEKsXb1STgs4AguOCTBDvuSyt0lZ8aVq0snVLph29FHWCtCuuK
45p0WLTMs2fUUmNJAFbXVaV8MtunNJMTVQphnCax9tKVZBPy4HPw1ZCMfHXH
SfVYEMMi6wfypmVJcjLj6xXNcinyWMKHld1cHDkcj6yRCn8ZnMoRrWr8PbwR
x9Ocqgqju1dQXRJncQpgmcANUFUx0WBxkSsbiVY4TClzWMQRI1XwRxQlimo3
uo2TRNi6jWybPXjj1R2P8PPr73RTC41jtMfAxcrGGjENzt3XxMvy5XYw/n5G
MSbfnF29fMbcD07snw/+j7ffRMVwp+EdRl2IoecKOUtfxGpf2fPtsygoizhd
bWjVrhwhaVxT1hvY/uvxHKniGMK6vcNZ5gSJRt556ASbfz7Y3BZeb7JsSBKz
jeTet/dA0wE0baKQb3P3evZueLnDux3OXc+63zWrv5W5soctb/Y2+SNSy+g3
hVee23mbWW6nzHINf3X4qXqbz6V625r77TebvO7r77baB9tYiQgOn1634cU2
6WherEgTw/jcjLAyP/4C5O+f1TkwXgfFOxi+CxG3hAOh0sakaPwjcxmOhIdz
uJ+kvmB/F04dArlCa0NmQOJP+n08qlqOVZE5FANNPgQaLNIyqJUEjsHUmGDA
GjGmpME4v5da3fKaQCZdMth5psVZEFPRaDeQddEa9chE3Sm2WSiIDbD8ySXA
/RIWH1BzA+6Uso+ob4GeSIRkuEIwEIUDbnXeBBvI+iCJ7eki4Q5bq72TljBq
VhSz5csRl3W15UsSS0AWPmnSIbDfgqifpRIy2GiP7sV6PctKFVORWSYlRenH
wLxEqdUq7KMVW1WsHwGgvia1ipeSabAOuJNZREXCE+qhl2vPHonizy7Py2q/
2M+VesM9FcKK/cpaBRubGpVV6LujSgOLyy+X936pEsy8gWbwRVtf7TjId6Y2
pihLO5UGYjnr7Lur1xLCUIAKzxHLx3tYbZUOnU4Z5dZDWL98CgcSwSHDLwl6
pXNDRSl9wGw70CgXc5iEo/Q2neajmTqq+hgZb6ZfHNxvtXf0GdXWZYM2dxee
DoGEADnXMridXBvqcK1pIgZmLHZ7W4kSyHEFLa4ZfcTOoCdAnAC2Nu5+4xkf
kGc8Tzk7wCh3+hO/TW+kvibDnv6rZN0THPHNKLF3FFPlmFe/tG1wTqyRrT6R
siKR1EomzpcJ0DMCujxUiodgj78QiB1oCng0oQBeorC+nmsorZbuL+PTW75f
HM9u5IoxR9KoMoNQjx5f5ZJW0Qj0KmFjHJE+3878CbCHvRTVucC0TIqFB7ia
imHgS7pRlskO0oqNpOXFuRgiqJ2psCd5RFwxwIUIiaYPl0agMsYWvAP6rD/1
Ma/QiturQROI26iBWaL7qKIE7EJINR7HmBqC9bIVBuT0sHxaMnjT8VK+QrqM
KZya+KQOP73SGybeLyfORb6aI5OYJgwSgYrLq2nEwEs0bywhY2L/ZSUj2Mna
kkPWK+zilqM0pQRozmIN0Sgdm9g9KYyv0jBJicdrTJ0CfppmmiaYs4UFvZxw
NN0mLtZJllR9tK9j30W/gHEn2kJDh0hy2yxgi6HuPQvnI7FjZhmseZD0I9Cd
pDlL2elHPWvsmqQKOPFZUg4K247svCaYLqEotgY3aOOwyRCu752jYAs2LeBN
e43Bg1F/Gxu50IMSnq4d960FPM7sfy1HEw3zc2dqLOE+oEc7VjnFxug1suJv
gaxDLGPGeG8faDpXzKOMFH9mBp+Ghs28zPnGJdKEapKnPObU9qTuhFPrEz7c
9NwS5xrbpqtzHSr23gv1GQtMeKemMJJ24ZSOUH2PlCiqEhV4QW7iAQKGwiIW
cdf9Rfgmkf5l0jjZiaORzJcoQS0+t9+CMeA/KvRrAJANEwpaGZTzstOAStKl
t1k4GUq+p/VqOAK2oV41ACtTYUxsraeK0vNiiOWNOemxwFMN51C1GkDSL6iN
UzwGLCdSfF6KMiw6kbRp/+qH0TqJdkFlCs6xtpC7Rim7tUgJ0s9UHUYLHyhd
jKMwkT2eYKYdm7R76RSNeGWl9FSOKhO4J7qvJHhYroNSDoiQoXYKRsCpeyxB
qaK5aGUCKGIu4OEBTo6DrL0bcSrtLdndMmb5+P04fIjHUwxJQpJOdQEHOk8m
FjVBSJvKqVtlEnbnozpeYXc/YpZhv7Ui57BOB/IOSv9O3MOsxAEMaaJGSE0K
LuP4XA47sJgm8vMJKrVoewRMZEVzRBd8NQhaq2m+UREMml/85ySpmaQ0zU24
o6yugCO9urmsc3JLYkJqhEudYaenoeoIcq/LqPl0glE2KKQ0OKpghObImc6g
yWN0DYVJhMHdFvCV0XPprM0OdKAMqvwi3m4Vcphxf51b3VmFypIo6yhq0fIh
/HWLqbIFPZ9xwAA1kLRWzfGRRiiZC94itmYT1n8D5clervA1j36kVKgKI/qg
GhD3OKuVH6jPmQgQ9ORqFjRpySPt0pRQYTEGn1AhdZ7sCBgVmSmTYjAMFh9B
NhDh1NFD1JsWVqxmOEVdspAEYWyJpXqtm4ZEvCBmXfudI7T0XfN9oCiao+lz
Li7EHkaMT+UXFVVTRCJXA7Gbv6BJtWGVFhuFRcGKsj6LzN88rY5UwXpdFPhM
Kq8DOojp6ZSDzCrCC5Q0zYgGGECNlJa9gZ+l5upN6brQnevcrC7T0Y7cdAE1
2islWFaa7M3hSGEgffvgsEjTPkGS5UzhAma6xR96AJueh+EOPPQ2SJBwixXY
2eXH4mK4w7yshqy/oRfacJsZ6lBOvDL1/SA3noqPxb4P2EcwUM2VKZ6soLBb
UyzSebkVfIdHzB1QV4iWZr6pSoUOMWterSzB4DBVFaDAKESH6aluHKqaInPA
qy7dyfVEk/ID1MIFaeBgr12qlKaGUCXh6s3mTx8cWir6ZIKTlbjIISKqD4Pw
6a1djv9AX4IT0+j0Def6T1YZLclG14noofYFmHn7lDKoc/ruU9K2if3cRZbF
LxQLCrL+cdpXShfcAmw0wVCeWEUOyTVhrkGrHAQ7h/lO0FKbEjzV1mj9VE4M
svU4o0h7IySaPVPe8wdsXs+db6TfZKV0kwUJE9TLtKnLAdQSVZI2FUiasI4P
Di3CCp2BhLEQmp1i5yaVZBwC9YMcEVqiq3uRtnTdyUKXMstlkUyEKnvEUIpb
2W7BZHoekD7poqQYSBRlXGncOE1KjK3U4ho4nM4IVPXVtK/FvVgaC2+WamKA
pBqTLJBLAVoK4CzB9PSH9mZoZarNd2OVy59y/B2zLhYX6jkXN3nlK7+2Z6st
behe01a3GJFRkBh0z0NTm2XFNoxcXIiUFtUylmpUMs37Z1VCgK4Sg32laVqr
q15alTj1tM1unOtaKbo+kqY0nQTFITEqBM20Ntf41xD45TbAjo2Olmr6JWhQ
zZStxg/y4pVtGlaV5xqqtMKcXuq6yKzJHZQGEKd2NWOVNsUnWzAg6h/mpnSR
VXMD9Cfv3GtZ8vHK0anTnpVblf/cssmTMBMrTEbapX18dc7bYBTecj1u0x+T
Oi9xPbgax/eez9HuWS4zhYhqwo6iEKDIreJf3biQysYkitlxl+oictarnRS6
04XCDa1C2o+B5JQAdXmnI2GKZXwgimmiktfmLtYTjFHdMVWO46Fu6gUrVdey
25lDHREdtVA6QvgMH+qxlCJyOEvJgHe0zEK2Jf9CS8g4B6cY1ANtAyaSj3XE
ye2i4Z2EMWdBLgPy8VIg22K8vi5lwIoKqJxsArGzEO2ezSXoWA4NCWQh6Tps
f51LMGW+0iD8DesowO2EjX+/jU27MSeNQSVPsi0dR3272qhSWOYZs0XeXM5K
8xItGUBYUdbVOxgx7lRu3P0kvgu2XmFtDFDpL91eZz8DjtJs2yyLiz8IzQXf
BDsNTAbFIWKdcUu10vPpWB0Le2Xaioc8gEYzRRLLQcQ4qmBA9T4MCy3YDBWH
0GTv2QcNUwN/6UVSgBc9LsSMNvNNO38cUWhiwGWtnrnfeueuzhlyCR2SEI1p
xH8hUhq13f0h2AnaQSfYDfaApx0Eh8EfdMRyIMAFdhhz89uNr5rl/1v089XG
ux2YaOfd8N3bdwGMayKWNUn8HGyhqS+Zbauo47XmqaSVLPp5t/HuD9Qlg5vS
wALfKRSITY8Q+XekE8EAvAPPy+d0zWxsIN4Ak7Tf+IiMEeQ2Dr/dKK2hZkl1
K6X15Rai3jnkqD/nj118YjeRd08x/xI/dU8xrj3IBXB7xYMiNNqB8ve0M97G
JY5QWGpXwuS/sJmsM0Tz7bSf5o50qSW6+WKmvs98oohyDzD3eiIxyi/R9HUD
MeZ99VIG3GFWjQArYVXkqtIt0yiVOqsyQ0V0bB7N+ZpUKetJOEZ33gOxrCTl
cpaZxLgQkNmU03No8Ggm5QeMpvXjT+dX10sYx11M0b48lPOL3AuKwCldQSgC
Y5a0KrVknGCi85Oy3gfc2MXUGEbbUHypXFbzxNB/KkgeDI/nPavKWY/cNmsD
dIJ47W7N6OF01P+7tWNK015l22QfKmUL3H3QE5XFgflnVevbJJpmUfi2j5Fz
LkqV64CFmGm2UMDJp92mFEVXQo5bNEZlLjPEJhkMxJJpHrTtYljc9mcBoLNH
A3o/H1CD3iqwCyQD0BUCEL6DoL0D/2vD/zrwv1343x78b1+uPFdq8EsLi/7n
vXna73beORLEzpz/9eF/PtHCL1WsBc9SN+GiO9G+Ea0fvvx8E+PdWJVLvn23
4Rm8IqFoAeXbwJ7VFVLURK6ssFj4IpzkthDCP14JRa1+nTlWxHsZw3MED8Hw
Botz9LAW6ZpGqgvGwVfyRZ1gt3BFaiEPZbGX/8NH1PmqIrwtM0dZkHoIfOIV
z0ZLryVT+LfCEPjzyomSz+G0/vNd990EXx3z0uqfr0W5/vi+jPQ1sG4hfuZF
vGGPj8S9H/0zL/ph0g+2A/x/8OD94h1YIPY7OgU3J6zDy7yD+q6KluXFe77v
vUK+EdKxQBCHBQVhWRqb14M4RWcbquEqMkKZiyqF8YuhJ+Na2gKXalO7MJqC
IVzvR3fR4vJmCYb0TdkMg3J8nPcijEueTqhkKNlMuXpLrwgmcSSVWmwjrxQL
rUzNnXbYIEIZ9GL8qFo1TB247owkEPZeshyljCmRkt9ZajEf24KiLBYGL7ty
rV5KZXuuXqhbV7NSXdyJZbEcO2ke+VFDubs22fHF+LvydVr6hK+I0oflv2nF
pc9mpb/VMa+Ov9i9odwWqkCt1/av1U8SGYXE7LU2rFU23PXxblnnEU5QlMVj
bOhHHTZiHa67osrshdhO2lcd2XjXBWzP9KRHWZ3L0BqtjWCFaYY4j2oqYWy1
ftLul18+IvzGFEjU5jyG2z5othGPTruUE9c+DSO49wrUBFVBXFH9RK8w/QYt
O7Sqva01n9g4kicpdpEx3uSyE/mpUGi7mtfHJPka0S8wypmHUYyzMXQ+1FAE
DwuKjVMQF7b193rG0kio/Br0gE4rl4dOc4ma4W0WST8vn+HAKuU0tnSyshZq
mRWqYwMr66o2g8jACl49cTMdDepUjSJVsEurmpTm4iT+1Rz2axJBvW8/dith
fXjfvmrk0XBC4t3t1RiXsF+OKrUCPQMK2MOQYkUIQsWIFnISpY5mXaEF03jL
3k9jIaruqkTmOwd49m9/gGef+ACXLU7WybqvHuLZbwdrnYOFCM9rMO7Qu/U5
IdX0pFWldrdM4UQ/71c4lKxHbEiw/dlJCDX045g+8yeQb1TbTYD7SQNcy4k+
KkBUN+OtbObizh9iCX5U7496q74qziEjqxtyfn+Q+mv8w/QJAbG69dAaf+xe
IYt9IbrfhLPB86ScyUisyuZwlw7+4gPuvxv+lQ94xb/xL3/IK5v6KQ56Ga2l
wz5b6rDXX/cf7rDPWvef9rDXOdz8B74eRdaBr6SeMJ5OXwWvwtkoDfvBizB7
iy1NvpjwByBz4Afvy3X2VWqrT/DeeXiG5RB5QH4fi9pUskQIpTrg1gQMKrOD
6i1uV9qXLq8DqfRSmsbIZNw6PqV613Zd/tCftmB8wU7GjC1kmWQO4XncP47n
WJzlRMFAJiZS4LZYiwdr5qx2qx5kq+GJ7jwk4V6chMIWGs9ZgLVfnjfqzog2
JZeaSgtoGN5FIVHoaMemEpEFCOe4pRT7pYHCEUy/FCWP8trEpFmLAN3wwgDA
mYfJjKKG1b1julphKsZ0HHmrha66ywt3uFELuOyBwovd7FKHKv/6Kxfo4Sq5
OpidWsyq2rm5jg2XVrn2slSimBqBM8Re6L5eP5hWCtRvVLX/M7WB1NSANdVF
8D2ZskSlwGs870UJ3A+plTSglkbNTOnjl9//Asy3H6laJEjjr66sFBZK4gP6
uESrfoLNe6RggqbZeAzbhi2cMLHctG7VAYGcmtOyqqWevmpycfYm5yvZ0oL3
mOcmTUitSpzrtr8EXSR8SIK260n5ip91qpWWnCgrlKY27yxZotr+4s01YE/V
g/4rWpqwUPTGomLUy5W0dt9Z6ZuaL9C99QZ3TIEszZPf0GI6ga65+l2MkQLt
xThT5Vir31jlWd0v/CMBZKYBa/kVC7Lze9wPOEafHWRSPvz07EddO/z19Q3Q
Q/md+jLi6nf9XU7kBeRbB5mzmzc/Pn+jZ9kLSrs5B1vqnSfHGfVeLb9yVILs
zV+x2a9GWqvVUr/ut3b2EYFr4ezsDP7/bBHOXlyeG5y1D0o4g59FOMOiwIfb
vm+sIsGlV4CneXHmQKYKz74xFY3NCXjThjtBKvKqF1QsuXrn6XbTrnBssXtT
bp62mt029j1e6iJELS09dY/VTad7PlSEVOrZIvK2dEw37WafO32wyHzX2VdN
iKXPuNU1uVq6VrU7v4s4QykfZtOEigTts/dAJcf7Or7gdLpGsG4Bb1prSDlv
3cDK6kBkdZvVehteNY6aXMEFZ9EyMhjBDV0bkxoMhtSOAAYljrVF8YkJ9eHN
gikoDLA0lWCG4qV6GjVCI23WhNQJjVktjLeOnVYWsoeqn53VO1GKVZjSE1RV
UhSCJDi1Chlcc66nqt+cW/URuComf28NYEQTS5hX76AdF3WFriOvq9JwRHqc
7Z7rRGA8omPyuHJNSyzwTnt0yKvlswXA7KBSpUvKzVSDVynxRpt39vU5Jftl
0X0Wi6pqIbDAmNLC0iVx2VwLRqm8ThpmRfb0ia8bGyrtMR5zT6h0dCfKWpbC
SR5T65Zlsy8tuwAOcZvC4mMad4jiJkjWYzKE5KbbVVqV8XU2a4GF76mklqlw
55RycWM9VHKKalvGzb1GceGmKJuEsCJlITcBInmFuYnEmahqRhJcTVHyF/Q4
7eTLL+jTvJVjqiu6vbbdlEGpNoA0kmBMRR5mfM6sjpOV5bnYxBGsISUrNEqo
ZBgmh+k9akh5p7jgel/CA7jNBodAGMWOcjpzqR7Sx+JDSWiqBjAOFBGGVJCH
mNYQHa+6Uw8folts1+uimOFtlPRpMRlUOhra6+OSCItwxNXzQi4txS4y1Bam
Y1DssBAL824MtIhxz5oproeb/FV7DFd6BIZZhg4o6YLEyVy9UYhNHVQ75IHR
iG7hYaqvbIxUBTJWeMY6NF0nnkmFdnNQDQ4dXJwEF3pTFTTj9M40lCyRX8u8
e3lCGhvVVWoaHdj0yipZJU5N9PupU5XmHE2KW6en59scma4WIHut524EXbiv
TfvFUTTA8pNFOsVyj2oah4oscH86CX5KPGAuN8qpdjDm1raYJxXuiJXHuSef
y5dxNy//0rYWMeGZ5qAu7dpHvMaiQlW2sE+BsNtKNiW+iyU7gRIU3k1dByvE
LwjD/O7WF7kcXKl4JyJtQV31STuAu9msxmN+VX3l3d274h3oEe+4AxYKq+am
Illw9VlAoG/5phLxbe6Pd775P63a+VQbo63Li58cid0zS6septZjn/7Kj6i6
LWHTVj0mahHiHWz+j2cWfkWZpld4ZaVZFu2qZy3y83X5g/+oe7TyZP2znkdr
H/Y+K08zyxITIP7c1cCGX2j2u1E+U9VDZV7U525DH16s6ovnt3J6zVv6gC8x
Fx0ody76tyVHbamTrJv66FN4UZPo4Ptp1cHQ1DCY0+0e7io1yomCeeed2/IH
Pv72FYzgRpnOG8F3LPTavdygOkL1HKLhgDlE/WKWhWGZEfxsyxucbglnjq1A
UeU1CvEshSks2ueFGpuoM7EwS9WRBK1QWynHJYG26uZ25ht65muJXSJynpEo
bnX/yot0lLDGSdzvR4m03laa4MzTQ54SXEutqnV3jr1Wu7Xb2qdhrGZAUhhh
3vx6UpJoyPI/oLLcVk/wsyHLvgOrXnfeMN38dGEH5cSze4aXK5CVelgsB9ez
i5uzHzyASYE6BzDVWrxS18WjpdVBwLD1WAo30qgql2rHF5j3FRqUR8kuXVB1
eWp/HBs60JzhyN0i+eug7tM8T3uxLZJfoEwejm4BgGI4Vvpf7q5VV4/NU1No
talrqnrFTd0jMK+uGB14jJdLLVbrOo822bPWyJUfUWgFqRc2nsZXdYTxFbx3
FGLciHZtAUC9dDSact1qS48bTOGEWL63cgI4nID9dvuATwD69QwEsYTUa+1K
4+tLKnuIW5CY9A/WkMz24Oc34a0VlC6amOOlJ8MaFV0u7Yky9UR6ixlZ1Rka
0mEb1iMxBkj208TYpBrssUzQh4fd7e2+gr2UKxIZnVM5zQJXzFjiQl9CUlhW
LFj28l/2ip97kc+9r+dexXNvWX2BznvKfnrhDzlANIXamj+Tln7I/rFvPX3L
lx/6ykNYlYdqYFoqg9S5wK1TWcoqE3KZlzBW9lNTqUfuEiWNEcierL8GvqKr
3s45XtpEbdiRy2QkDsG80Sj1+cSV8StN64xjDTHLWG1swR4lH610xBJEkbfs
N/aZtaIvQutt6vtJTFwFyOhKlzII240NbF+f29FLdXYC16o3/0dQtp7Ksa7S
sa7aURW+11E9/MrHquqHRxFYQwUhWNZQQvxqyKqKSH2+/SrKiF8dWVUhWQ2W
eg1llUoES9U9shi4/vQPiwDxc+J33l/tnzsvDX5V+171aWMgqXPjVv+0mE1g
W2WWH8GWkewRaswcS63C82ntCPrjDf6KWaBe0dLvldax8L27leF0ApgWQVX9
QEKhVt8ld2YfEMvtFX7gC1R852CifCx8h7fupJplflmZ/J2tQskxrOMbDjyl
+X3w1HGxmhVXgatDmAeeOnKpxVkJP7VT+NhVYOh7RcC81pyqyFSSCe1vzuPw
FhTPBfJhSXCjquAj8tiwEzfII6rOHvV1xxLOZ6sIlnGuK+nGSZ9T9BNOF6YM
rLxAT7a490gN5KL4diaB6p2B5XlBFdNpFhab5NK9SgK1uA190Qq+A5Ew5S6l
jTr4uM43DSDp3CrW3HHrGKfQqW4nXaoKXhP3KpVVqUtMyH7AyCpWSzJwKbL8
vY4lx0BbJYX7hVHf8q2vdVcUcn6e6pjgmsGoIGXJf68KuroR2qvEZcfJZKpD
4dG4YvGPORHaVcXfjtP2fLtstPbvLLd7BQVF+JarqQnU+mBYvt5SdLk0zKjG
stvpQepYasawvdiMZe+YH9yV94JjEFaKlOeZ6/bB823tPlRwUA6dVxkkFZJ2
VC4i0w8UV78iiNY5+mggPl3o/xc6qN4Tz4SXglU6XReDo86K/JIkK39/ceP0
2AtLrFwZk5UhuaGb8fR1z4hQIsaa3TBXCS6qcSwPOUqnfftbjjtj+54OdEM9
3kS9hyYCyr5OyKo9h53WsdLToD8d67IFbPHI9YoTuDDRLi4Lote/0jEoHF4T
qjY78i1vpf2dKlg4wn5xfdXwUJbHfhTcgLyIx6ExwCt7pK73r5M2mros/RUV
WkHTvcvg2YRq76G2y8CHzSIaT8gIbEshVyXL/MnGN+WfjZ2HvfZOe2dnp33U
6XYP9w72D/qHOwf7h52D9uHeIf53f2OD7Wwn8vQGhbn/HGUgDlG079nVSxKN
cRj4z82Pz7WkvMM/+LE02OII53awCXBvbsCQ9PU3wTjuwx9HHfi1QAMF4IJt
Ayf4UC1soru32yc6pnTjZwoKhHEAKxgfNc2ijQo2xKJ8ErQPOT/NK8Ep5DrO
ONwGWQ0F41bEIrunCTMD92yZzQPU3Vy8fNQGHrT39nkDB4Pdzu5uZ2dv194y
/N7eMqy2GJye/Vi7ZUQO8PH1tIfy42A6cuOBg4PjYLPT2tlX65q/jew5fuVw
yY0N+RsBNEDX79HOnD2ycVgNsE4KDb1jYzVMxi+oKCdeSfC0MoZDb6Qf87ox
xVLnZRlS9wLh0ZrWZSQC5UwukNyqpEqNKvd8zF07NFw1VSu/O6izrJ4IVJ8H
9BFzfupTfp42vWdu2oWdqdIuff3Rcj/sNIb/+OvBcaO92/mPvwlu10jzqAOi
PpkicDGxaXHWzQ+UN0EnssmnVA51Sav05EUwU+VXrcOMbNyJcDDOkrRbhE4r
aXWNW3ctH2kdFWE6kSoNG+trVxgI5SoYE4zVaFZ0HEvBKbtj+rr3uN05UNwl
PKnXpbGEv6rys3oJVEUvZY/Icm+tNxdcMO06ISAIttqqbdpTzeWKK0gMi95a
by76qV2YR7pZYi6P/LM2hOtR1Pwx535bI/M/Ysi70rdzllSGfA7OynMay6cd
T1Hz6AqjomS15KMrjCrywTc8/BbXwd32Prr1MvVpptuPAWCFLZg/UBmCkuFq
wdPBFla7JiTsbT+ewlY8K7LSFc/lO/2WDt/5+0STG64l7NgbWn6rCG/pqd7+
3iBqd/d29zrHh90DeOfIw0IfB6EVcsSAVSc9VpM+aq6VMe/TI7xig5I9zIku
3/GWmwVlCFs5rDflqwROLoPjjaPDGjzYpUjZkEJpS2uCOAxMbtkGru5L0RZS
+3qLzNtWkRk+/9sSeIWHxkTSkYqT3UVSoM20FuL0KDROpNMC7a4I0kyaRXCo
VpMmKTA4jB0OYYIRkU6fxAIDu0rWRrXo8TQ38ZNxoRNhe661nFp8cDneUvN0
sg6XnSIJFc7DwDxV96FIi4qaifswzd1OnuE4BcHNCbpRWWyqG6FKsaM8GDQw
xd1pYfWeV2YfrLJKLhOx/sjXysrWqpdeRcF1Y3RF9CyLrWVTA2PLZ/mFrW1T
o5BRmjixfBzHQ9tHguhEIDcWS8vHgKUY45zoe8z9wnUD+SHA1I968Zhs2f3I
BEoqkykWQaK+p+YrdQwaATY3QcPpPDri1enNVcgopEuXbGZOY3yZO0Y8TNei
5c3ZkKcQsNcRr9cRrtcR8FjY3ds3hiO4Eg8q18CTzbOCSWntefBnMCjZm5Z4
Z515gkDjrT7b51HzrENv80ec++0HEb5XXgNZsFb8ebcxTwKf884686DQ3D5u
Hx/vdNpHO0scmTXnIfu6jmNZ9p015tnpshIQF4FTsKFW8FfzGOtt8O23cJ9s
5cN4QMEHfB623Xn8PzA7/8Ap4qvmUetZh97mjzjv20+ncqyjmq9/wGy45igf
7Z3eQf+w1zno9dqeg8EvKx0kOg6jwe6gs3fQjnZ6nWOfDlKZ+VFglzQSG9oq
MO09Szl51MyP2arlVBWREVdWVyo+kgXhR278jh0jzmZbeoDNtiCvxjk1dWuw
u5Qb4vaU/OZG3ypvBwvBr1QYR9PwdLHicnfr2odcYRn0Etsd7GobeXAbJRGn
1WgBVAnS6pmGSh6yeya71l4sBWMl1yQVK2/OPmMrwF0S7K1yj5b+dheHc6JJ
JCOA9AUfzsX/XPGq82i0a3ERcY0TR5520peetrycHAQqMie/1RWaMx4mr0dp
DW8S/7xzf/PXknvn+c37tfvxnCJxCuqO/q22XJzxo8Bw6DgpO25quEu5ptls
Er1xxy1NTj6cklHxo01OXqxOaZgnmtxUc1Pj7rmTE9pLRfqeaHJUY0orP3In
J7R/mJUvnpzQfnDkDvM0k1sF4fSUB87kvtJwXAeu3cHGfp66b/A1/CyenJJZ
3jgvFm9H1ckfjqqT71PHY+/kNzceh09lcrsX0ht+EcvOWZPzUXvYOXZGfxK0
m9ZLb9S4NZNXV75Xv/JX8LP05G/j/oLJD3YPegfHB/sH0eGOmnyvds9/hJ9V
Ju8VD298k9Oed7/80h39KdH+8MaMWzpqH35yKq/9hseVAv8fb/LZp1y56nn2
RlY+a91/vMnnnHNirx908jnn/MNPPuecP+XkJvrDEml1yoSreniiP6rm2lfl
aHBPCJ0EQXY4hu74aOd4Z8/iWnuDQdVvtbHVUbphKTqys3p0JAXkOeEGnWAT
S1EsHx55fBSUwTauNRUjeXwi+o8OkMSLyX3LsjnAnfUNQkhNQhEI7vUIQ/oM
E8PgbRC4xo+dPewHWXrYAZFaFS6MD5znNvRqx3XKo1aONVWgLukxecI3rhvv
6SjtoL23J5S2MxjMsz8AjbU9NIYDrBHOiU/VW9+PyPq+p0qdrEB4JnignsyA
OyyxzUvaYpbf8bJJZIld91hDyluvWs9YnU/zdOzJr1IhoKj5T/MIsN4IOM2K
686yf9HUcJXAUfQWYq0PLKU6SLP7MOs7XeS4iKjEgiq3q9RBHViw5Q3pFEeu
u0Q3mQHtmoPhTc1c1LMliF31GdFNaPMQHcEEFbcFJGfsdET1Xe6o+swoeoi7
8SguZk55G0EIPjq3G9gwxQ6rZH/JYcSMvIUJdbcP7eL3lmcuuBxgZKFV2d8G
GYvX0owJipsyzTjM3wbpgM1AXMByCKhtclcXxnqpdK9dihfRzPlVat+5JgH5
F9neo8wtTkfS3PEVoy3MlP3lxdh1E5zOKJrAsELujCr6piMKHe9jcZqx7Kyp
selMLGWA0NjMzVVGVBYYhotGAypDy5kyRLs0C2KI8okGkjKi0SdlYFFin0Mp
vNVdRewUIW2oO7fa6jnJi+OYj8uAgi2T3owLHd83pFOQ9LZ4/uqX05cBHOBh
ko7SW2xLarms7YoYhbNsJAau/8xThw/xeDoOkum4i5UxMRuDpo3kI/+GUcS1
Ir4rtV2lV/ERbtlsTWRaKar9eRvBZmJRVzH8ZVETLhms7JsPo77sG7dIzlW5
27ySIub2m+e1vjj9Cw7o2Uhr6yiotNQ+1x2GN5JMk6Epi1qikUYgh/J+iFRp
v9mNTNmesNdLsz453BUsSzAiScWEkft5qf4Y9RJWXf6MRZrMmrCmWjO0lUpa
E+XrlNQy4ROSp1Fvha63PbslV3RtaDfJw7p95ksOO+323tHx3v5ReDzo7R4c
HRztdwYHPRD02h11N3LkKhlpSQDAN3w+PC0deIZDH5xx4G1seF6H67rLsgYK
ryRd0D9bbSn/3vw2EJh42yWEhB1eIFEExduEDimLgCIFLJL1PLgyGSKdeRki
XjHQyryqk/zeP2KvOu2jfjg42usfH+32d/f70WG0d9Tb7bUB0YCpg/o9m7Nj
cwct7VzNxul92zrUmyVhYuW9wp3CrbJ36DFiWr1wVrMXvgyey0Tn8ZUbVuM1
AOJWLgk0KvmPlnWPjPReMSgd9t+dlSQ3uUG8meW5jkdzy0CP3eZKzPSsEDDj
L7M8ZS/Tq7ynWNR8f0tnRX/Lom4+HyWLZ1Hjno/SpGdRj555uStv1L30pvSF
H3P1XW+qTW92St9/bCA8TpinBaLGL1NtsrN8UtWamKgmVTn9dDxOmY8PxMfN
7DL+mkX9e4yPpoqJ+l49dX4bJsxK8TF22NQ7a4yvZgUglvPfmBw3VWp5nRy3
VWnCWDmtK8C5CAlTdF9g8gVfK9seW8SNRHLXXisqOltfQm5bHL4eS3X+VMpz
M0l1eVGrfL+Rlb1JzDVviTS9rjjVae/Rf4JvlKQ0T7oRWVTMUvOkxnlCYxUP
lSRwa2QlGPBmrS84dnZCnQ+99IppydaKjbRmcqvnYOFgyeTqGkwoIW0uNk5z
pVPnUSQVUTj2mzRoXWECU6BRcnIrM4S5ku363C6C867tAg2o43VxTpUrLn1j
/S0oudxzlj5gAZ8vsCmQdTKa+C1WksFv35dKbHCN3TxABW9+0UlqmcER54gS
LBet2x7htGgY7EeTUTqLJBnUSLJZNCBbRGoJo3apDflE2jqFuW1q0QVLXAvW
AmBVv06O/8nLTXri0YytIWqnqCzUJIzJiDJMJ7qfFQw6niYKlt4Q5OwWNezW
zcqoqxU3sIlzjQJDA4lnweZDXrPYF7njlLLUpD4IRtGtHtqPTMmneJhxExdc
9lIj8RLUCA54XLflFzkGF9yR6AJriqhsg7lE15QDZJpTodYT5tqIJLtDq7Z6
UinorMUpdOkrQELwyAjdA2CQlCfN7qwJ/2mgPpRFfATTxK6UQDSEJCuVaLlW
WD6kM6mxcp8GYf8fIV5RRBTV/kKqSe1UGsyqmtXdCEhf133CJmZI2B6qNpFy
qriG3S+rO5Pec47eJeDHBQOcm7LWCYbsAaRw1NDUrtKuVe0fHwCl0t4NO3TP
KthCae9ygNeZBVFxQYeMyMxqWKz67EjZIl+dqFXRsIXW/Did5mUot+dtBfek
B2yoElcE6Zz9EZOn+DUwMHRlQH2o3F6MS4ZztV1bd67fyVTzHvvA+1m3nQt2
U3jWmgxrHrdamlNh67iotsf0dtnkI0X4WlZllyqDs+YN9aW6TN3oMj+s1DVc
jiuiywk5o++Oxl5ytJBcYcv6CrECY6mNJyTKU+W2BcRpAQBV+m8hr7dQ4Q80
no+KciXHz+iCEKErn7PN6oL3mvlKx82/6Z5DtwwTeqYptxhW6iyaSmGaA3CB
Q1OlRKdQqgMOiJ40Fh1tFyU1ceWp6gHqFon3lVR08OOnhCe6a9fj3E9w39Zh
rCQ1J0/Pu5/yLl5q321XYHW3f7uzF56iR9LE0gdozVvdoYtVlkjs6Twqs6da
SlnApoQDIr/lJrWrQVNfxlMraytyzfXY/DxkWwSriv95rxg8nhiUoMvKLpDL
VAnQXOvpC40aIK0p8alsw9CV5CJr1EXGDKXzYv27XmRVISZOo+JN6GvqwquG
JlOGOp7k12eNn8sFmNY9ukCe4IBDilBuw4p52MbILnPMhUhtBR3FEpQfOVJE
qp6+jCiZLfg+LKL7cBZsvfz+l23T7TQoplliDaK22d9dm4ZnUsF4rEi2u6YP
Nz4oUKrYkZIz0fTTjgKAS3XuMrItJp6pKtMO/m0EcxtZHFh371YToDRGzJFq
gQilCUwo/YXZbaRLXXiWsSXNz4ssHAzinkYcdieTytfWiIS5clFZAktiDTVc
W/30PnFG1iWwGw6M0mbZKjSrOmLXQOy8oU0xv3M7jlO1lKbqhS7cw0spVeNU
3bzOhtOUrhyLW7mUUWnO4OqgPY/fRkscFz+5AH31gAEq487SBkFV3j2m/UVG
cscdnVXc24LhrACcwTQrhlzJjno+qynkAKjYHFqh1gBLFrH3mnXkdnQWXVGg
Y0yTyu2U26RTP8eSE2haNvNYWqYVDtAKLhN7SqFwGC0DYgUs/Mc7oLIkRd6D
YYVO+zVdFEZebsIRd4KPzOf5xA47QhBdZlOt5mwfNKGwKvE1dDYqUx/bqTE4
M8rd6QzXyfWdB1zHpNgK/7GvOOkxja+X2rFrepNuVvDYjPiZ0NtsIeLZaaCv
F5l9iY2vqqSJMqJTgf6rZY5xCbFiXtb2MKvhE9Z54sBPibl2CuKzv9R+5qjT
WhoK10Lt290lINpbBNHhfsmxt3Lp6d3uwf7h0UGbSiD2DvY70cHuweCgD/Li
UU1txP7ezoAeah/ufA4VqmuXIGHxu1zC8Yc0L3RgvKriC5uIQ9Qtdfki1zsP
DlrU1McnJBbOmteUOq7fxZtiTtXl3X1xDHo9gxZLqq2OXS4mgP3sy77R1cpc
A0o+dZnrPU0Lh/uGFjjB4YnKXC9AeL6gznUd2pdxSdVduKu6oJa8XVxrrt0x
BmXXqh1V+YyxLQPggOLAvwu18w9TCaQbjTZOLOmgDekPuBWWdcq9F3nFx+oZ
dNdAUg60yBDOZp87KtBbKLXRDabKd8MM8+ICd9aow2CKMNgf1VVjcB/7GLW/
/WF+c2o2LBEgOO+b9Wo6VBL55wUZlh57yrrhc4ov1IPoq//wmYEoEXE7DQmH
qz62Rnict4bzgioSpoREGURfLQn3sQ+GRbfcg0nDLoNIG/3mr+1G0Gmod3cb
wd7f3qjH1gky9EUZrg0ibfSbvx7sN4KDIw3kwXEjaO92/vbmQ4Lo1q0wRSvK
IEpMYk0Z5qeOkpxT3cKUtqgB8Wg+iB8shhKF2jfy1pu7MFPfbX23/cahxTk/
7wIQVVDT83zzhjSN0jYvf1ysVgb0lspgt2aoi/ssPfbBTrQtnr9ZCCLK7Zv+
gZ+4F4NfTrGDVVm0mSP10dI8wauOt3qRorq8PEUjNdn0V5an2k9f1uo3cWqp
L34Tp34Tp3ii38Sp38SpfxFx6vA3caoOxM9NnHJlFVsGmC+rvFogd/gKgGAH
BNdNqRoBD+10nDoTj7JqWVEdJFJZfUMrPR4d948vyMCKfVg4AlrqjLmJHLrW
YnKqEyHQKI+jY69dKpmFTaX7+91Ot7e70z3oHu0e7HaOD3fb3cPuwZGdKUy8
wEqAnvNWKX3JSWWv+8HNnSzOaQeIdtomIXrXm76+0w3Io6BzqAM0NLeJ3LHY
XZ0Tg/sf6Mx37QkItmQV3JwDQZUPFmS77y1pmdd7XWeit7N2VLqWktj9RuSf
JoT8XhTfqdAB04d6AbUZcnfCn6XRx7oHiCmXe4pwzE9ugk2WOVCqezC6+Gwg
s2ic3snBtjU0XbNYxRVZq3EPYCs4HWFjc3vMySjsyaDEiHU387IfjtZjfcWe
NziallsOnRCNwLjkRzMfe3CQUFKb7L3CBSk0l4+9Agwd+BwLONert3e4v4ZX
78N78vzem8/Ok1frI+ocL3v0zWbWHn4O7bRYgHjJ53OAcpDpovvPVckrx9ej
7S97GZYJ9pEXoxmtad5zb0lesRwAfU9Wl7D40lx4kOBe6fSXuz/dAiL1bz3V
/fn4CxRTdNus13/eF6iXJmoP1DMVJb3cSVr1Lq0l0JpzVL5lTbTrGufUCgBy
z9hy96xzVu0j5YV7BHeZSYC1y+RVL2vPABJe69x+5d7bbuxUQxp4fXh0VVmS
QFZ7MeeTGpndZyh9Ovm93Tve6x31ekftnR6XC/IzHOexpVjMKjxlQUUp4ihk
OGobtoIzFlgCxWEbvsT4YMsUcp3DLw6XDczwC9zlCI0PLXWXCKZe7H4UhXtu
vQXcYf4RbFVFiyeTltsiLR91lpaWlziVTyEvS2BT+6jzqQOb/EFuHzewqU5q
rZygpxFdfbnK88nU2fMnUFuf7IZYW3jVMetrWnl6naOaW8Ix6ziPfdpbQqw3
n/CWWCxVVgj+g4qW8+jHMg6udn0sY/dcW54snUSPJXO+ELkw1d0bHL5Kavu/
aQTkgvDHx/jueWRFN34ffocpZvGsWAKa+tPSfFgzmxdKzy+T/G/t6dOWZ8Sf
3+IGlvriN1/tBwHx83fh+ViBuh9LmbqrMdyaMnqPC+J2ofXGcu96+RbPM5dV
LVOcwy7rwVmGcVZNDZrPxXbXa+qndnUpdvbReNc8vuJjYh8t0sla11IhTx8t
eGgJwJxAp88JMCe86aPFMllQLBXU9NEimKzX516PpjPj5wOY06fwAwJWaVqo
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
/z9NPS4Ao7Lu2qMyAgA=

-->

</rfc>
