<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-toutain-schc-toward-rfc9363bis-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Toward SCHC YANG Model bis">Toward RFC 9363bis: Changes to the SCHC YANG Data Model</title>
    <seriesInfo name="Internet-Draft" value="draft-toutain-schc-toward-rfc9363bis-00"/>
    <author initials="L." surname="Toutain" fullname="Laurent Toutain">
      <organization>Institut MINES TELECOM; IMT Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Chataigneraie CS 17607</street>
          <city>Cesson-Sevigne Cedex</city>
          <code>35576</code>
          <country>France</country>
        </postal>
        <email>Laurent.Toutain@imt-atlantique.fr</email>
      </address>
    </author>
    <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="A." surname="Minaburo" fullname="Ana Minaburo">
      <organization>Consultant</organization>
      <address>
        <email>ana@minaburo.com</email>
      </address>
    </author>
    <author initials="S." surname="Sirohi" fullname="Samar Sirohi">
      <organization>Institut MINES TELECOM; IMT Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Chataigneraie CS 17607</street>
          <city>Cesson-Sevigne Cedex</city>
          <code>35576</code>
          <country>France</country>
        </postal>
        <email>Samar.Sirohi@imt-atlantique.fr</email>
      </address>
    </author>
    <date year="2026" month="September" day="23"/>
    <area>Internet</area>
    <workgroup>SCHC</workgroup>
    <keyword>SCHC</keyword>
    <keyword>YANG</keyword>
    <keyword>header compression</keyword>
    <abstract>
      <?line 85?>

<t>This document is not a revision of RFC 9363, "A YANG Data Model for
Static Context Header Compression (SCHC)": it identifies changes --
additions to, and removals from, its YANG data model -- motivated by
discussions in the SCHC working group and by drafts published since
RFC 9363. These changes include more flexible compression Rule
entries through the use of Universal Options, which allow
identifiers to be added to or removed from a Rule Description
depending on the Universal Options in use; some new Field Length
functions, and new Matching Operators (MOs) and
Compression/Decompression Actions (CDAs); and a mechanism for the
manual allocation of YANG Schema Item iDentifiers (SIDs). Once the
working group agrees on the resulting wording, these changes are
intended to be incorporated into a future revision of RFC 9363.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target=""/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-toutain-schc-toward-rfc9363bis/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        SCHC Working Group mailing list (<eref target="mailto:schc@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/schc/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/schc/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/"/>.</t>
    </note>
  </front>
  <middle>
    <?line 101?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document is not itself a revision of RFC 9363 <xref target="RFC9363"/>, the
YANG data model for Static Context Header Compression (SCHC)
<xref target="RFC8724"/>. Instead, it identifies the items that should be added
to, or removed from, that data model, taking into account
discussions held in the SCHC working group and drafts published
since RFC 9363 (e.g. <xref target="I-D.ietf-schc-universal-option"/>,
<xref target="I-D.ietf-schc-8824-update"/>, and
<xref target="I-D.ietf-schc-icmpv6-compression"/>). Once the working group agrees
on the resulting wording, a new revision of RFC 9363 will be issued
to formally incorporate it.</t>
      <t>This document also introduces the framework for Rule management; the
details of Rule management are left to separate documents.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="universal-options">
      <name>Universal Options</name>
      <t>In RFC 9363 <xref target="RFC9363"/>, each field found in a header is referenced
by a globally unique identifier called a Field ID (FID). The SCHC
YANG module defines an identityref for each FID. This static
allocation approach breaks down when a protocol carries options,
such as CoAP <xref target="RFC7252"/>: new options appear regularly, and the
mapping between an option number and a FID is not trivial.</t>
      <t><xref target="I-D.ietf-schc-universal-option"/> augments the compression Rule
entry, in which the FID is replaced by a tuple made of a space ID
and the option number, so that any option of a given protocol can
be referenced without allocating a dedicated FID for it. In this
approach, the key used to access a regular field entry remains the
FID, the Direction Indicator, and the position, while the key used
to access an option entry becomes the space ID, the option number,
and the position.</t>
      <t>This key-based approach does not guarantee that entries appear in
the same order as the corresponding fields in the header (all the
options will appear at the end of the rule), whereas RFC 8724
<xref target="RFC8724"/> mandates that order and recent implementations have
shown it to be efficient. In addition, these three- or four-element
keys remain large, which may be a penalty when Rule management is
used (see <xref target="rule-management"/>).</t>
      <t>This document deprecates the whole compression Rule entry structure
in favor of a new one, providing a uniform way to reference a field
entry. A new
"entry-index" leaf is introduced as the key of the new
"entry-universal" list. The list is defined as "ordered-by user", and
"entry-index" values are assigned sequentially according to the order of
the entries in that list. The list order therefore continues to convey
the header field order (addressing the second
problem).</t>
      <t>"entry-index" is then followed by a choice between a field-id and a
space-id/option-number. The rest of the entry is unchanged, except
for the new "field-length-value" leaf, added to carry the
entry-index argument discussed later.</t>
      <t>RFC 7950 <xref target="RFC7950"/>, Section 11, does not allow the "entry" list's
key, nor the "field-id" leaf, to be changed in place in a published
module ("Otherwise, if the semantics of any previous definition are
changed [...] then this <bcp14>MUST</bcp14> be achieved by a new definition with a
new identifier"). This document therefore leaves the RFC 9363
"compression-rule-entry" grouping, its "compression-content"
grouping, and the "compression" case untouched, and marks them
"status deprecated;" (RFC 8407 recommends a "deprecated" status be
kept for at least one year before moving to "obsolete"). The new
structure is defined in a new "compression-rule-entry-universal" grouping,
used by a new "compression-content-universal" grouping and a new
"compression-universal" case, sitting alongside the deprecated ones in the
"nature" choice.</t>
      <t><xref target="fig-compression-rule-entry"/> shows the resulting YANG tree diagram
for both cases (deprecated "compression" and new "compression-universal").</t>
      <figure anchor="fig-compression-rule-entry">
        <name>Compression Rule Entry: deprecated (RFC 9363) and new (-universal) cases</name>
        <artwork type="ascii-art"><![CDATA[
x--:(compression) {compression}?
|  x--rw entry* [field-id field-position direction-indicator]
|     +--rw field-id                    fid-type
|     +--rw field-length                union
|     +--rw field-position              uint8
|     +--rw direction-indicator         di-type
|     +--rw target-value* [index]
|     |  +--rw index    uint16
|     |  +--rw value?   binary
|     +--rw matching-operator           mo-type
|     +--rw matching-operator-value* [index]
|     |  +--rw index    uint16
|     |  +--rw value?   binary
|     +--rw comp-decomp-action          cda-type
|     +--rw comp-decomp-action-value* [index]
|        +--rw index    uint16
|        +--rw value?   binary
+--:(compression-universal) {compression or management}?
   +--rw entry-universal* [entry-index]
   |  +--rw entry-index                 uint16
   |  +--rw (field-or-space)
   |  |  +--:(regular-field)
   |  |  |  +--rw field-id              fid-type
   |  |  +--:(universal-option)
   |  |     +--rw space-id              space-id-type
   |  |     +--rw universal-value       uint64
   |  +--rw field-length                union
   |  +--rw field-length-value?         uint16
   |  +--rw field-position              uint8
   |  +--rw direction-indicator         di-type
   |  +--rw target-value* [index]
   |  |  +--rw index    uint16
   |  |  +--rw value?   binary
   |  +--rw matching-operator           mo-type
   |  +--rw matching-operator-value* [index]
   |  |  +--rw index    uint16
   |  |  +--rw value?   binary
   |  +--rw comp-decomp-action          cda-type
   |  +--rw comp-decomp-action-value* [index]
   |     +--rw index    uint16
   |     +--rw value?   binary
   +--rw action?                          action-type
   +--rw action-value* [index]
      +--rw index    uint16
      +--rw value?   binary
]]></artwork>
      </figure>
      <t>Unlike the deprecated "entry" list, keyed by the compound
"field-id"/"field-position"/"direction-indicator", "entry-universal"
is keyed by the single-leaf "entry-index". This makes an entry
cheap and unambiguous to reference from elsewhere within the same
Rule, e.g. the "field-length-value" argument of "fl-length-bytes"
and "fl-length-bits" (<xref target="field-length-functions"/>), or a management
operation targeting it (<xref target="rule-management"/>).</t>
      <section anchor="space-id">
        <name>Space ID</name>
        <t>Several protocols define options: CoAP <xref target="RFC7252"/> is one example,
but other protocols define their own options too, each with its own
option numbering. A single "space-id" value is therefore not enough
by itself; it must be qualified by the protocol (option space) it
belongs to.</t>
        <t>To identify these option spaces, this document creates a
"space-id-base-type" identity and derives one identity per protocol
from it; a "space-id-type" typedef is then created from
"space-id-base-type", following the identityref pattern used
throughout RFC 9363 (e.g. for "rcs-algorithm-type"). At present, the
module only defines one such identity, "space-id-coap", for the CoAP
option space; other protocols that define options can add their own
"space-id-*" identity the same way. <xref target="fig-space-id"/> shows this
pattern, mirroring how RFC 9363 introduces its own
identityref-derived types.</t>
        <figure anchor="fig-space-id">
          <name>Space ID: base identity, one derived identity per protocol, and typedef</name>
          <sourcecode type="yang"><![CDATA[
identity space-id-base-type {
  base schc:space-field-id-base-type;
  description
    "Base identity for a Universal Option space. Several
     protocols define options (e.g. CoAP); each such protocol
     is identified by an identity derived from this base type.";
}

identity space-id-coap {
  base space-id-base-type;
  description
    "Space ID identifying the CoAP option space.";
  reference
    "RFC 7252 The Constrained Application Protocol (CoAP)";
}

typedef space-id-type {
  type identityref {
    base space-id-base-type;
  }
  description
    "Space ID type for universal option spaces (CoAP options,
     etc.). Used in the universal-option case of
     compression-rule-entry-universal.";
}
]]></sourcecode>
        </figure>
        <t>"space-id-type" is used, together with "space-id-base-type" and
"fid-base-type"'s common ancestor "space-field-id-base-type", by the
"field-or-space" choice (see <xref target="fig-compression-rule-entry"/>).</t>
      </section>
      <section anchor="deprecating-the-per-option-coap-fids">
        <name>Deprecating the Per-Option CoAP FIDs</name>
        <t>RFC 9363 defines twenty per-option Field IDs deriving from
"fid-coap-option", one for each CoAP option registered at the time
(see <xref target="tbl-coap-option-fids"/>). Now that Universal Options provide a
"space-id-coap"/"universal-value" pair to reference any CoAP option
by its option number, without needing a dedicated FID for it, each
of these twenty identities is superseded and marked deprecated.</t>
        <t>RFC 7950 <xref target="RFC7950"/>, Section 11, states that "Obsolete definitions
<bcp14>MUST NOT</bcp14> be removed from published modules, since their identifiers
may still be referenced by other modules": once RFC 9363 is
published, these twenty identities can only ever be marked
"deprecated" and then "obsolete"; they can never simply disappear
from a later revision of the module. RFC 8407 <xref target="RFC8407"/>, Section
4.7, further recommends that "an object <bcp14>SHOULD</bcp14> be available for at
least one year with a 'deprecated' status before it is changed to
'obsolete'", and that "the status <bcp14>SHOULD NOT</bcp14> be changed from
'current' directly to 'obsolete'": since these twenty identities are
"current" in RFC 9363, this document marks them "deprecated" rather
than "obsolete".</t>
        <t>These twenty identities <bcp14>MUST NOT</bcp14> be used in a new "entry-universal"
list (<xref target="fig-compression-rule-entry"/>): the "space-id"/
"universal-value" pair introduced in <xref target="universal-options"/>
supersedes them there. They remain usable only in the deprecated
"entry" list, for Rules that already reference them.</t>
        <t>IANA has allocated the SID range 2550-2949 to the "ietf-schc"
module. At the time of writing, no SID file for "ietf-schc" is
registered in the IETF YANG-SID Modules registry. None from the range 
registered for RFC 9363 <bcp14>MUST</bcp14> be allocated to these twenty deprecated 
identities: a SID "immutably maps to EXACTLY one YANG name", so 
allocating one to an identity already superseded by Universal Options 
would waste it permanently, with no way to reclaim it later.</t>
        <t>The working copy of the module has been corrected accordingly: the
twenty identities are present, each with "status deprecated;" (see
<xref target="fig-fid-coap-option-deprecated"/>).</t>
        <table anchor="tbl-coap-option-fids">
          <name>RFC 9363 per-option CoAP FIDs and their Universal Option replacement</name>
          <thead>
            <tr>
              <th align="left">RFC 9363 FID</th>
              <th align="left">CoAP Option</th>
              <th align="left">Replaced by (space-id-coap / universal-value)</th>
              <th align="left">Defined in</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">fid-coap-option-if-match</td>
              <td align="left">If-Match</td>
              <td align="left">1</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-uri-host</td>
              <td align="left">Uri-Host</td>
              <td align="left">3</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-etag</td>
              <td align="left">ETag</td>
              <td align="left">4</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-if-none-match</td>
              <td align="left">If-None-Match</td>
              <td align="left">5</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-observe</td>
              <td align="left">Observe</td>
              <td align="left">6</td>
              <td align="left">
                <xref target="RFC7641"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-uri-port</td>
              <td align="left">Uri-Port</td>
              <td align="left">7</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-location-path</td>
              <td align="left">Location-Path</td>
              <td align="left">8</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-uri-path</td>
              <td align="left">Uri-Path</td>
              <td align="left">11</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-content-format</td>
              <td align="left">Content-Format</td>
              <td align="left">12</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-max-age</td>
              <td align="left">Max-Age</td>
              <td align="left">14</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-uri-query</td>
              <td align="left">Uri-Query</td>
              <td align="left">15</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-accept</td>
              <td align="left">Accept</td>
              <td align="left">17</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-location-query</td>
              <td align="left">Location-Query</td>
              <td align="left">20</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-block2</td>
              <td align="left">Block2</td>
              <td align="left">23</td>
              <td align="left">
                <xref target="RFC7959"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-block1</td>
              <td align="left">Block1</td>
              <td align="left">27</td>
              <td align="left">
                <xref target="RFC7959"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-size2</td>
              <td align="left">Size2</td>
              <td align="left">28</td>
              <td align="left">
                <xref target="RFC7959"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-proxy-uri</td>
              <td align="left">Proxy-Uri</td>
              <td align="left">35</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-proxy-scheme</td>
              <td align="left">Proxy-Scheme</td>
              <td align="left">39</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-size1</td>
              <td align="left">Size1</td>
              <td align="left">60</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-no-response</td>
              <td align="left">No-Response</td>
              <td align="left">258</td>
              <td align="left">
                <xref target="RFC7967"/></td>
            </tr>
          </tbody>
        </table>
        <figure anchor="fig-fid-coap-option-deprecated">
          <name>Example: Deprecating a Per-Option CoAP FID (fid-coap-option-uri-path)</name>
          <sourcecode type="yang"><![CDATA[
identity fid-coap-option-uri-path {
  base fid-coap-option;
  status deprecated;
  description
    "CoAP option Uri-Path. Deprecated in favor of Universal
     Options (space-id-coap / universal-value).";
  reference
    "RFC 7252 The Constrained Application Protocol (CoAP)";
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="oscore-kudos-fids">
        <name>OSCORE and KUDOS Suboptions</name>
        <t>Universal Options allow any option to be compressed following the
SCHC principle, but compression can be more efficient when the
sub-fields of an option are taken into account individually. This is
why the module introduces specific fields for OSCORE <xref target="RFC8613"/> and
KUDOS <xref target="I-D.ietf-core-oscore-key-update"/>: each option is split into
sub-fields, each with its own identity ("fid-coap-option-oscore-piv",
"fid-coap-option-oscore-kid", "fid-coap-option-oscore-kidctx",
"fid-coap-option-kudos-nonce", etc.).</t>
        <t>Note that the Flags field, for both OSCORE and KUDOS, is also split
so that its length indicator becomes a specific field of its own:
"fid-coap-option-oscore-flags-flagbits"/"fid-coap-option-oscore-flags-n"
for OSCORE, and "fid-coap-option-kudos-x-flagbits"/
"fid-coap-option-kudos-x-m" for KUDOS. This will be exploited by the
new Field Length functions introduced in <xref target="field-length-functions"/>,
which can reference such a field, by its "entry-index", to determine
the length of another field (e.g. the Partial IV).</t>
        <t>KUDOS's "fid-coap-option-kudos-x-m" cannot be treated in the same
way as OSCORE's "fid-coap-option-oscore-flags-n" for this purpose.
The value "m" encodes the Nonce length in bytes minus one; equivalently,
the Nonce length is "m + 1". Since "fl-length-bytes" and
"fl-length-bits" directly use the value of the referenced entry as the
length, they cannot directly represent this relationship. KUDOS
therefore requires separate handling of this length transformation.</t>
        <t>"fid-coap-option" itself is kept "current": it is still used,
unchanged, as the base identity of these OSCORE and KUDOS suboption
FIDs. Unlike the twenty per-option FIDs deprecated in the previous
subsection, they use "fid-coap-option" as a typing hierarchy for
parts of a single CoAP option (OSCORE, KUDOS), not as a stand-in for
an arbitrary CoAP option, and are therefore unaffected: they remain
"current".</t>
      </section>
      <section anchor="field-length-functions">
        <name>Field Length Functions</name>
        <t>RFC 8824 <xref target="RFC8824"/> defines a specific length function for the
Token field: when this function is specified, the value of the
Token Length (TKL) is used to indicate the length of the field.
<xref target="I-D.ietf-schc-8824-update"/> extends this principle to the Partial IV field
for OSCORE.</t>
        <t>This approach is not scalable: a new function would have to be defined
for every new protocol field whose length needs to be carried this way.
This document instead introduces two new functions, "fl-length-bytes"
and "fl-length-bits". They both take an argument, carried in the new
Rule entry field "field-length-value", that points to the entry where
the length is specified, referenced by its "entry-index" (see
<xref target="fig-compression-rule-entry"/>). Having two separate functions, rather
than a single generic one, also conveys the unit of the length value:
bytes for "fl-length-bytes", bits for "fl-length-bits".</t>
        <ul spacing="normal">
          <li>
            <t>"fl-length-bytes" generalizes "fl-token-length": for example,
"fl-token-length" is now equivalent to "fl-length-bytes(index)",
where "index" is the "entry-index" of the CoAP TKL field.</t>
          </li>
          <li>
            <t>"fl-length-bits" is the bit-level equivalent of "fl-length-bytes".</t>
          </li>
        </ul>
        <t>This is what <xref target="oscore-kudos-fids"/> relies on: the OSCORE and KUDOS
Flags field is split so that its length indicator
("fid-coap-option-oscore-flags-n", "fid-coap-option-kudos-x-m") is
its own entry; "fl-length-bytes" or "fl-length-bits" can then use
that entry's "entry-index" to derive the length of the corresponding
Partial IV field. This works directly for OSCORE;
<xref target="oscore-kudos-fids"/> explains why the same does not hold for
KUDOS's Nonce.</t>
        <t>This document also introduces "fl-remaining", for an entry that is
always the last one in the Rule (see <xref target="icmpv6"/>'s "fid-payload").
Unlike "fl-variable", which prefixes its residue with an explicit
length (see <xref target="variable-length-in-bits"/>), "fl-remaining" accepts a
field of any length but does not add that prefix when serializing
the residue: being the last entry, its residue already runs to the
end of the compression residue and needs no delimiter.</t>
      </section>
      <section anchor="example-1-oscore-outer-header">
        <name>Example 1: OSCORE outer header</name>
        <t><xref target="fig-example-rule"/> shows an example SCHC Compression Rule (Rule ID
2, encoded on 5 bits, i.e. "00010") that compresses, in both
directions, the outer CoAP header of a CoAP/OSCORE message.</t>
        <t>The server is located on the Application side and the client on the
Device side. In OSCORE, the client's request carries an OSCORE
option with the security parameters, while the server's response
carries an empty OSCORE option; the Token links the response to its
request.</t>
        <t>The first column is new and not defined in RFC 8724 <xref target="RFC8724"/>: it
numbers the entries in the rule. The names in the other columns are
the ones defined in the YANG module, without their prefix ("fid-",
"fl-", "mo-", "cda-"), for better legibility.</t>
        <figure anchor="fig-example-rule">
          <name>Example Compression Rule for an Outer CoAP/OSCORE Header</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="560" viewBox="0 0 560 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,464" fill="none" stroke="black"/>
                <path d="M 48,32 L 48,464" fill="none" stroke="black"/>
                <path d="M 184,32 L 184,464" fill="none" stroke="black"/>
                <path d="M 272,32 L 272,464" fill="none" stroke="black"/>
                <path d="M 312,32 L 312,464" fill="none" stroke="black"/>
                <path d="M 352,32 L 352,464" fill="none" stroke="black"/>
                <path d="M 392,32 L 392,464" fill="none" stroke="black"/>
                <path d="M 464,32 L 464,464" fill="none" stroke="black"/>
                <path d="M 552,32 L 552,464" fill="none" stroke="black"/>
                <path d="M 8,32 L 552,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 552,64" fill="none" stroke="black"/>
                <path d="M 8,464 L 552,464" fill="none" stroke="black"/>
                <g class="text">
                  <text x="24" y="52">#</text>
                  <text x="80" y="52">Field</text>
                  <text x="204" y="52">FL</text>
                  <text x="292" y="52">FP</text>
                  <text x="332" y="52">DI</text>
                  <text x="372" y="52">TV</text>
                  <text x="412" y="52">MO</text>
                  <text x="488" y="52">CDA</text>
                  <text x="24" y="84">0</text>
                  <text x="108" y="84">coap-version</text>
                  <text x="200" y="84">2</text>
                  <text x="288" y="84">1</text>
                  <text x="332" y="84">Bi</text>
                  <text x="372" y="84">01</text>
                  <text x="424" y="84">equal</text>
                  <text x="508" y="84">not-sent</text>
                  <text x="24" y="100">1</text>
                  <text x="96" y="100">coap-type</text>
                  <text x="200" y="100">2</text>
                  <text x="288" y="100">1</text>
                  <text x="332" y="100">Bi</text>
                  <text x="368" y="100">-</text>
                  <text x="428" y="100">ignore</text>
                  <text x="500" y="100">value-</text>
                  <text x="492" y="116">sent</text>
                  <text x="24" y="132">2</text>
                  <text x="92" y="132">coap-tkl</text>
                  <text x="200" y="132">4</text>
                  <text x="288" y="132">1</text>
                  <text x="332" y="132">Bi</text>
                  <text x="368" y="132">-</text>
                  <text x="428" y="132">ignore</text>
                  <text x="500" y="132">value-</text>
                  <text x="492" y="148">sent</text>
                  <text x="24" y="164">3</text>
                  <text x="96" y="164">coap-code</text>
                  <text x="200" y="164">8</text>
                  <text x="288" y="164">1</text>
                  <text x="332" y="164">Up</text>
                  <text x="372" y="164">02</text>
                  <text x="424" y="164">equal</text>
                  <text x="508" y="164">not-sent</text>
                  <text x="24" y="180">4</text>
                  <text x="96" y="180">coap-code</text>
                  <text x="200" y="180">8</text>
                  <text x="288" y="180">1</text>
                  <text x="332" y="180">Dw</text>
                  <text x="372" y="180">44</text>
                  <text x="424" y="180">equal</text>
                  <text x="508" y="180">not-sent</text>
                  <text x="24" y="196">5</text>
                  <text x="92" y="196">coap-mid</text>
                  <text x="204" y="196">16</text>
                  <text x="288" y="196">1</text>
                  <text x="332" y="196">Bi</text>
                  <text x="372" y="196">00</text>
                  <text x="428" y="196">ignore</text>
                  <text x="500" y="196">value-</text>
                  <text x="492" y="212">sent</text>
                  <text x="24" y="228">6</text>
                  <text x="100" y="228">coap-token</text>
                  <text x="224" y="228">length-</text>
                  <text x="288" y="228">1</text>
                  <text x="332" y="228">Bi</text>
                  <text x="368" y="228">-</text>
                  <text x="428" y="228">ignore</text>
                  <text x="500" y="228">value-</text>
                  <text x="228" y="244">bytes(2)</text>
                  <text x="492" y="244">sent</text>
                  <text x="24" y="260">7</text>
                  <text x="108" y="260">coap-option-</text>
                  <text x="200" y="260">5</text>
                  <text x="288" y="260">1</text>
                  <text x="332" y="260">Up</text>
                  <text x="372" y="260">01</text>
                  <text x="424" y="260">equal</text>
                  <text x="508" y="260">not-sent</text>
                  <text x="112" y="276">oscore-flags-</text>
                  <text x="92" y="292">flagbits</text>
                  <text x="24" y="308">8</text>
                  <text x="108" y="308">coap-option-</text>
                  <text x="200" y="308">3</text>
                  <text x="288" y="308">1</text>
                  <text x="332" y="308">Up</text>
                  <text x="372" y="308">01</text>
                  <text x="424" y="308">equal</text>
                  <text x="508" y="308">not-sent</text>
                  <text x="116" y="324">oscore-flags-n</text>
                  <text x="24" y="340">9</text>
                  <text x="108" y="340">coap-option-</text>
                  <text x="224" y="340">length-</text>
                  <text x="288" y="340">1</text>
                  <text x="332" y="340">Up</text>
                  <text x="368" y="340">-</text>
                  <text x="428" y="340">ignore</text>
                  <text x="500" y="340">value-</text>
                  <text x="100" y="356">oscore-piv</text>
                  <text x="228" y="356">bytes(8)</text>
                  <text x="492" y="356">sent</text>
                  <text x="28" y="372">10</text>
                  <text x="108" y="372">coap-option-</text>
                  <text x="200" y="372">0</text>
                  <text x="288" y="372">1</text>
                  <text x="332" y="372">Up</text>
                  <text x="372" y="372">00</text>
                  <text x="424" y="372">equal</text>
                  <text x="508" y="372">not-sent</text>
                  <text x="112" y="388">oscore-kidctx</text>
                  <text x="28" y="404">11</text>
                  <text x="108" y="404">coap-option-</text>
                  <text x="208" y="404">var</text>
                  <text x="288" y="404">1</text>
                  <text x="332" y="404">Up</text>
                  <text x="368" y="404">-</text>
                  <text x="428" y="404">ignore</text>
                  <text x="500" y="404">value-</text>
                  <text x="100" y="420">oscore-kid</text>
                  <text x="492" y="420">sent</text>
                  <text x="28" y="436">12</text>
                  <text x="96" y="436">space-id-</text>
                  <text x="200" y="436">0</text>
                  <text x="288" y="436">1</text>
                  <text x="332" y="436">Dw</text>
                  <text x="368" y="436">-</text>
                  <text x="424" y="436">equal</text>
                  <text x="508" y="436">not-sent</text>
                  <text x="88" y="452">coap(9)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+----+----------------+----------+----+----+----+--------+----------+
| #  | Field          | FL       | FP | DI | TV | MO     | CDA      |
+----+----------------+----------+----+----+----+--------+----------+
| 0  | coap-version   | 2        | 1  | Bi | 01 | equal  | not-sent |
| 1  | coap-type      | 2        | 1  | Bi | -  | ignore | value-   |
|    |                |          |    |    |    |        | sent     |
| 2  | coap-tkl       | 4        | 1  | Bi | -  | ignore | value-   |
|    |                |          |    |    |    |        | sent     |
| 3  | coap-code      | 8        | 1  | Up | 02 | equal  | not-sent |
| 4  | coap-code      | 8        | 1  | Dw | 44 | equal  | not-sent |
| 5  | coap-mid       | 16       | 1  | Bi | 00 | ignore | value-   |
|    |                |          |    |    |    |        | sent     |
| 6  | coap-token     | length-  | 1  | Bi | -  | ignore | value-   |
|    |                | bytes(2) |    |    |    |        | sent     |
| 7  | coap-option-   | 5        | 1  | Up | 01 | equal  | not-sent |
|    | oscore-flags-  |          |    |    |    |        |          |
|    | flagbits       |          |    |    |    |        |          |
| 8  | coap-option-   | 3        | 1  | Up | 01 | equal  | not-sent |
|    | oscore-flags-n |          |    |    |    |        |          |
| 9  | coap-option-   | length-  | 1  | Up | -  | ignore | value-   |
|    | oscore-piv     | bytes(8) |    |    |    |        | sent     |
| 10 | coap-option-   | 0        | 1  | Up | 00 | equal  | not-sent |
|    | oscore-kidctx  |          |    |    |    |        |          |
| 11 | coap-option-   | var      | 1  | Up | -  | ignore | value-   |
|    | oscore-kid     |          |    |    |    |        | sent     |
| 12 | space-id-      | 0        | 1  | Dw | -  | equal  | not-sent |
|    | coap(9)        |          |    |    |    |        |          |
+----+----------------+----------+----+----+----+--------+----------+
]]></artwork>
          </artset>
        </figure>
        <t>This rule uses the new capabilities introduced above:</t>
        <ul spacing="normal">
          <li>
            <t>The Token field's length no longer uses the legacy
"fl-token-length" function; instead, "fl-length-bytes" is used,
with its parameter set to 2, referring to entry 2, "coap-tkl".</t>
          </li>
          <li>
            <t>The OSCORE option's content is split into sub-fields. Note that
the Flags field is itself split between "coap-option-oscore-flags-
flagbits" and "coap-option-oscore-flags-n", the latter carrying the
length of the Partial IV field.</t>
          </li>
          <li>
            <t>The Partial IV length is likewise given by "fl-length-bytes", this
time with its parameter set to 8, referring to entry 8,
"coap-option-oscore-flags-n".</t>
          </li>
          <li>
            <t>In the other direction, the OSCORE option is empty and is
compressed using a Universal Option, indicating option number 9.</t>
          </li>
        </ul>
        <t>TO BE DISCUSSED: the "h" flag is set to 0, meaning the KID Context
is normally absent; should entry 10, "coap-option-oscore-kidctx",
still appear in the rule in that case? When present, the KID
Context value is itself encoded as a length byte followed by the
context bytes. Should this document keep it as a single
"coap-option-oscore-kidctx" entry of variable length -- which would
send that length twice, once through SCHC's own variable-length
encoding and once through the length byte already embedded in the
OSCORE encoding -- or split it into two entries, a length indicator
and the context value, with the latter using "fl-length-bytes" to
point to the former?</t>
      </section>
    </section>
    <section anchor="variable-length-in-bits">
      <name>Variable Length in Bits</name>
      <t>"fl-variable-bits" generalizes RFC 8824's <xref target="RFC8824"/> "fl-variable"
to bit-level variable-length fields, the same way
<xref target="I-D.ietf-schc-8824-update"/>'s "var_bit" function does. RFC 8724
<xref target="RFC8724"/> requires the "MSB" matching operator's parameter to be a
multiple of 8 bits when applied to a byte-counted variable-length
field ("fl-variable"): the residue sent with the "LSB" action would
otherwise not be an integral number of bytes, and "fl-variable"'s
length prefix, itself byte-counted, could not express it.
"fl-variable-bits" removes that restriction by counting the
residue's length prefix in bits instead of bytes.</t>
      <t>The length prefix itself is encoded the same way as for
"fl-variable", following RFC 8724 <xref target="RFC8724"/>, Section 7.4.2: sizes
between 0 and 14 (in the unit defined by the FL -- bytes for
"fl-variable", bits for "fl-variable-bits") are encoded as a 4-bit
unsigned integer; sizes between 15 and 254 are encoded as 0b1111
followed by an 8-bit unsigned integer; larger sizes are encoded as
0xfff followed by a 16-bit unsigned integer. Only the counted unit
changes between the two functions, not the escape structure of the
length prefix.</t>
      <section anchor="example-non-byte-aligned-msb-residue">
        <name>Example, Non-Byte-Aligned MSB Residue</name>
        <t>The case "var_bit" and "fl-variable-bits" actually address is a
variable-length field, whose residue needs an explicit length
prefix. <xref target="I-D.ietf-schc-8824-update"/> itself has such an example, for
the OSCORE "kid" sub-field (entry "coap-option-oscore-kid" in
<xref target="fig-example-rule"/>, which instead sends it unmatched):
<xref target="fig-example-msb"/>. "msb(44)" matches the KID's most significant 44
bits against the 6-byte (48-bit) target value; only the remaining 4
bits  are sent with "lsb". "var_bit" (this
document's "fl-variable-bits") carries that 4-bit length in its
residue length prefix; RFC 8824's byte-counted "fl-variable" could
not.</t>
        <figure anchor="fig-example-msb">
          <name>Non-Byte-Aligned MSB Residue on a Variable-Length Field (adapted from I-D.ietf-schc-8824-update)</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="544" viewBox="0 0 544 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,112" fill="none" stroke="black"/>
                <path d="M 144,32 L 144,112" fill="none" stroke="black"/>
                <path d="M 240,32 L 240,112" fill="none" stroke="black"/>
                <path d="M 280,32 L 280,112" fill="none" stroke="black"/>
                <path d="M 320,32 L 320,112" fill="none" stroke="black"/>
                <path d="M 408,32 L 408,112" fill="none" stroke="black"/>
                <path d="M 488,32 L 488,112" fill="none" stroke="black"/>
                <path d="M 536,32 L 536,112" fill="none" stroke="black"/>
                <path d="M 8,32 L 536,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 536,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 536,112" fill="none" stroke="black"/>
                <g class="text">
                  <text x="40" y="52">Field</text>
                  <text x="164" y="52">FL</text>
                  <text x="260" y="52">FP</text>
                  <text x="300" y="52">DI</text>
                  <text x="340" y="52">TV</text>
                  <text x="428" y="52">MO</text>
                  <text x="512" y="52">CDA</text>
                  <text x="68" y="84">coap-option-</text>
                  <text x="192" y="84">variable-</text>
                  <text x="256" y="84">1</text>
                  <text x="300" y="84">Up</text>
                  <text x="364" y="84">0x636c69</text>
                  <text x="448" y="84">msb(44)</text>
                  <text x="512" y="84">lsb</text>
                  <text x="60" y="100">oscore-kid</text>
                  <text x="172" y="100">bits</text>
                  <text x="356" y="100">656e70</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+----------------+-----------+----+----+----------+---------+-----+
| Field          | FL        | FP | DI | TV       | MO      | CDA |
+----------------+-----------+----+----+----------+---------+-----+
| coap-option-   | variable- | 1  | Up | 0x636c69 | msb(44) | lsb |
| oscore-kid     | bits      |    |    | 656e70   |         |     |
+----------------+-----------+----+----+----------+---------+-----+
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="icmpv6">
      <name>ICMPv6</name>
      <t><xref target="I-D.ietf-schc-icmpv6-compression"/> defines how SCHC can interact
with ICMPv6 <xref target="RFC4443"/>, either to compress an ICMPv6 message or to
generate one. This document focuses only on the resulting impact on
the YANG Data Model. Since an ICMPv6 message may itself carry an
IPv6 header -- e.g. the offending packet embedded in an error
message -- the draft introduces new Matching Operators and
Compression/Decompression Actions to compress that payload; we open
the discussion on an alternative behavior for it below.</t>
      <section anchor="new-fid">
        <name>New FID</name>
        <t><xref target="I-D.ietf-schc-icmpv6-compression"/> introduces eight new Field IDs
for ICMPv6 <xref target="RFC4443"/>:</t>
        <ul spacing="normal">
          <li>
            <t>"fid-icmpv6-type", "fid-icmpv6-code", "fid-icmpv6-checksum":
present in every ICMPv6 message.</t>
          </li>
          <li>
            <t>"fid-icmpv6-mtu": present in the Packet Too Big message.</t>
          </li>
          <li>
            <t>"fid-icmpv6-pointer": present in the Parameter Problem message.</t>
          </li>
          <li>
            <t>"fid-icmpv6-identifier", "fid-icmpv6-sequence": present in the
Echo Request/Reply message.</t>
          </li>
          <li>
            <t>"fid-icmpv6-payload": the data following the ICMPv6 header.</t>
          </li>
        </ul>
        <t>Two more generic Field IDs, not specific to ICMPv6, are found in the
working copy of the module alongside them. Being generic, they can
be used as-is when compressing other protocols:</t>
        <ul spacing="normal">
          <li>
            <t>"fid-unused": as its name suggests, used to skip an unused part of
a header. This matters when parsing and compression happen on the
fly, and reinforces the constraint that fields appear in the same
order as in the header. Setting its Target Value to 0, its
Matching Operator to "ignore", and its Compression/Decompression
Action to "not-sent" is <bcp14>RECOMMENDED</bcp14>.</t>
          </li>
          <li>
            <t>"fid-payload": <bcp14>MUST</bcp14> be the last entry of the Rule, matching its
position as the packet's trailing payload, and uses the new
"fl-remaining" (<xref target="field-length-functions"/>), which accepts any
length without prefixing the residue with one, since the last entry's
residue already runs to the end of the SCHC packet. With Matching
Operator "ignore" and Compression/Decompression Action
"value-sent", it behaves exactly as the usual, implicit SCHC
behavior, where the payload simply follows the compression
residue. But it can also be used to intercept the payload:
Compression/Decompression Action "not-sent" then elides it, or
another CDA can apply a special treatment to compress it, instead
of sending it verbatim.</t>
          </li>
        </ul>
      </section>
      <section anchor="new-matching-operators-and-compressiondecompression-actions">
        <name>New Matching Operators and Compression/Decompression Actions</name>
        <t><xref target="I-D.ietf-schc-icmpv6-compression"/> is also the origin of the
"mo-rule-match"/"mo-rev-rule-match" Matching Operators and the
"cda-compress-sent"/"cda-rev-compress-sent" Compression/
Decompression Actions. "mo-rule-match" returns true if the Target
Value matches another Rule, keeping the Up/Down direction;
"mo-rev-rule-match" does the same but reversing that direction;
"cda-compress-sent" and "cda-rev-compress-sent" send a compressed
version of the Target Value, using respectively the matched Rule or
its direction-reversed counterpart.</t>
        <t>The reversed forms exist because, per RFC 4443 <xref target="RFC4443"/>, an
ICMPv6 error message carries back as much as possible of the IPv6
packet that triggered it -- a packet that was sent in the opposite
direction from the error message itself. Compressing that embedded
copy therefore means matching it against, and generating its
residue from, a Rule for the reverse direction.</t>
        <section anchor="example-icmpv6-error-with-reverse-compression">
          <name>Example, ICMPv6 Error with Reverse Compression</name>
          <t><xref target="fig-example-icmpv6"/> adapts the "Time Exceeded" Rule from
<xref target="I-D.ietf-schc-icmpv6-compression"/>, prefixed with the outer IPv6
header carrying the ICMPv6 message itself (as in <xref target="fig-alt-icmpv6"/>
below): the Type and Code identify the error, the Checksum is
recomputed on decompression, the 32-bit "Unused" field mandated by
RFC 4443 <xref target="RFC4443"/> for this message is elided with "fid-unused"
(<xref target="icmpv6"/>), and the Payload -- the offending IPv6 packet -- is
matched and compressed against its own (Up) Rule with
"rev-rule-match" and "rev-compress-sent", instead of being sent in
full.</t>
          <figure anchor="fig-example-icmpv6">
            <name>ICMPv6 Error Compressed Against a Reverse-Direction Rule (adapted from I-D.ietf-schc-icmpv6-compression)</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="576" width="568" viewBox="0 0 568 576" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,560" fill="none" stroke="black"/>
                  <path d="M 128,32 L 128,64" fill="none" stroke="black"/>
                  <path d="M 128,88 L 128,392" fill="none" stroke="black"/>
                  <path d="M 128,408 L 128,560" fill="none" stroke="black"/>
                  <path d="M 224,32 L 224,64" fill="none" stroke="black"/>
                  <path d="M 224,96 L 224,384" fill="none" stroke="black"/>
                  <path d="M 224,416 L 224,560" fill="none" stroke="black"/>
                  <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                  <path d="M 264,96 L 264,384" fill="none" stroke="black"/>
                  <path d="M 264,416 L 264,560" fill="none" stroke="black"/>
                  <path d="M 304,32 L 304,64" fill="none" stroke="black"/>
                  <path d="M 304,96 L 304,384" fill="none" stroke="black"/>
                  <path d="M 304,416 L 304,560" fill="none" stroke="black"/>
                  <path d="M 376,32 L 376,64" fill="none" stroke="black"/>
                  <path d="M 376,88 L 376,392" fill="none" stroke="black"/>
                  <path d="M 376,408 L 376,560" fill="none" stroke="black"/>
                  <path d="M 464,32 L 464,64" fill="none" stroke="black"/>
                  <path d="M 464,88 L 464,392" fill="none" stroke="black"/>
                  <path d="M 464,408 L 464,560" fill="none" stroke="black"/>
                  <path d="M 560,32 L 560,560" fill="none" stroke="black"/>
                  <path d="M 8,32 L 560,32" fill="none" stroke="black"/>
                  <path d="M 8,64 L 560,64" fill="none" stroke="black"/>
                  <path d="M 8,80 L 200,80" fill="none" stroke="black"/>
                  <path d="M 360,80 L 560,80" fill="none" stroke="black"/>
                  <path d="M 8,400 L 216,400" fill="none" stroke="black"/>
                  <path d="M 344,400 L 560,400" fill="none" stroke="black"/>
                  <path d="M 8,560 L 560,560" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="40" y="52">Field</text>
                    <text x="148" y="52">FL</text>
                    <text x="244" y="52">FP</text>
                    <text x="284" y="52">DI</text>
                    <text x="324" y="52">TV</text>
                    <text x="396" y="52">MO</text>
                    <text x="488" y="52">CDA</text>
                    <text x="232" y="84">Outer</text>
                    <text x="276" y="84">IPv6</text>
                    <text x="324" y="84">header</text>
                    <text x="68" y="100">ipv6-version</text>
                    <text x="144" y="100">4</text>
                    <text x="240" y="100">1</text>
                    <text x="284" y="100">Dw</text>
                    <text x="320" y="100">6</text>
                    <text x="408" y="100">equal</text>
                    <text x="508" y="100">not-sent</text>
                    <text x="40" y="116">ipv6-</text>
                    <text x="144" y="116">8</text>
                    <text x="240" y="116">1</text>
                    <text x="284" y="116">Dw</text>
                    <text x="320" y="116">0</text>
                    <text x="412" y="116">ignore</text>
                    <text x="508" y="116">not-sent</text>
                    <text x="68" y="132">trafficclass</text>
                    <text x="40" y="148">ipv6-</text>
                    <text x="148" y="148">20</text>
                    <text x="240" y="148">1</text>
                    <text x="284" y="148">Dw</text>
                    <text x="320" y="148">0</text>
                    <text x="412" y="148">ignore</text>
                    <text x="508" y="148">not-sent</text>
                    <text x="56" y="164">flowlabel</text>
                    <text x="40" y="180">ipv6-</text>
                    <text x="148" y="180">16</text>
                    <text x="240" y="180">1</text>
                    <text x="284" y="180">Dw</text>
                    <text x="320" y="180">-</text>
                    <text x="412" y="180">ignore</text>
                    <text x="504" y="180">compute</text>
                    <text x="52" y="196">payload-</text>
                    <text x="44" y="212">length</text>
                    <text x="40" y="228">ipv6-</text>
                    <text x="144" y="228">8</text>
                    <text x="240" y="228">1</text>
                    <text x="284" y="228">Dw</text>
                    <text x="324" y="228">58</text>
                    <text x="408" y="228">equal</text>
                    <text x="508" y="228">not-sent</text>
                    <text x="60" y="244">nextheader</text>
                    <text x="40" y="260">ipv6-</text>
                    <text x="144" y="260">8</text>
                    <text x="240" y="260">1</text>
                    <text x="284" y="260">Dw</text>
                    <text x="320" y="260">1</text>
                    <text x="408" y="260">equal</text>
                    <text x="508" y="260">not-sent</text>
                    <text x="52" y="276">hoplimit</text>
                    <text x="40" y="292">ipv6-</text>
                    <text x="148" y="292">64</text>
                    <text x="240" y="292">1</text>
                    <text x="284" y="292">Dw</text>
                    <text x="340" y="292">aaaa::</text>
                    <text x="408" y="292">equal</text>
                    <text x="508" y="292">not-sent</text>
                    <text x="56" y="308">devprefix</text>
                    <text x="64" y="324">ipv6-deviid</text>
                    <text x="148" y="324">64</text>
                    <text x="240" y="324">1</text>
                    <text x="284" y="324">Dw</text>
                    <text x="340" y="324">::zzzz</text>
                    <text x="408" y="324">equal</text>
                    <text x="508" y="324">not-sent</text>
                    <text x="40" y="340">ipv6-</text>
                    <text x="148" y="340">64</text>
                    <text x="240" y="340">1</text>
                    <text x="284" y="340">Dw</text>
                    <text x="320" y="340">-</text>
                    <text x="412" y="340">ignore</text>
                    <text x="500" y="340">value-</text>
                    <text x="56" y="356">appprefix</text>
                    <text x="492" y="356">sent</text>
                    <text x="64" y="372">ipv6-appiid</text>
                    <text x="148" y="372">64</text>
                    <text x="240" y="372">1</text>
                    <text x="284" y="372">Dw</text>
                    <text x="320" y="372">-</text>
                    <text x="412" y="372">ignore</text>
                    <text x="500" y="372">value-</text>
                    <text x="492" y="388">sent</text>
                    <text x="252" y="404">ICMPv6</text>
                    <text x="308" y="404">header</text>
                    <text x="64" y="420">icmpv6-type</text>
                    <text x="144" y="420">8</text>
                    <text x="240" y="420">1</text>
                    <text x="284" y="420">Dw</text>
                    <text x="320" y="420">3</text>
                    <text x="408" y="420">equal</text>
                    <text x="508" y="420">not-sent</text>
                    <text x="64" y="436">icmpv6-code</text>
                    <text x="144" y="436">8</text>
                    <text x="240" y="436">1</text>
                    <text x="284" y="436">Dw</text>
                    <text x="336" y="436">[0,1]</text>
                    <text x="412" y="436">match-</text>
                    <text x="508" y="436">mapping-</text>
                    <text x="416" y="452">mapping</text>
                    <text x="492" y="452">sent</text>
                    <text x="48" y="468">icmpv6-</text>
                    <text x="148" y="468">16</text>
                    <text x="240" y="468">1</text>
                    <text x="284" y="468">Dw</text>
                    <text x="320" y="468">-</text>
                    <text x="412" y="468">ignore</text>
                    <text x="504" y="468">compute</text>
                    <text x="52" y="484">checksum</text>
                    <text x="44" y="500">unused</text>
                    <text x="148" y="500">32</text>
                    <text x="240" y="500">1</text>
                    <text x="284" y="500">Dw</text>
                    <text x="320" y="500">0</text>
                    <text x="412" y="500">ignore</text>
                    <text x="508" y="500">not-sent</text>
                    <text x="48" y="516">icmpv6-</text>
                    <text x="176" y="516">variable-</text>
                    <text x="240" y="516">1</text>
                    <text x="284" y="516">Dw</text>
                    <text x="320" y="516">0</text>
                    <text x="404" y="516">rev-</text>
                    <text x="492" y="516">rev-</text>
                    <text x="48" y="532">payload</text>
                    <text x="156" y="532">bits</text>
                    <text x="408" y="532">rule-</text>
                    <text x="512" y="532">compress-</text>
                    <text x="408" y="548">match</text>
                    <text x="492" y="548">sent</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
+--------------+-----------+----+----+--------+----------+-----------+
| Field        | FL        | FP | DI | TV     | MO       | CDA       |
+--------------+-----------+----+----+--------+----------+-----------+
+------------------------ Outer IPv6 header -------------------------+
| ipv6-version | 4         | 1  | Dw | 6      | equal    | not-sent  |
| ipv6-        | 8         | 1  | Dw | 0      | ignore   | not-sent  |
| trafficclass |           |    |    |        |          |           |
| ipv6-        | 20        | 1  | Dw | 0      | ignore   | not-sent  |
| flowlabel    |           |    |    |        |          |           |
| ipv6-        | 16        | 1  | Dw | -      | ignore   | compute   |
| payload-     |           |    |    |        |          |           |
| length       |           |    |    |        |          |           |
| ipv6-        | 8         | 1  | Dw | 58     | equal    | not-sent  |
| nextheader   |           |    |    |        |          |           |
| ipv6-        | 8         | 1  | Dw | 1      | equal    | not-sent  |
| hoplimit     |           |    |    |        |          |           |
| ipv6-        | 64        | 1  | Dw | aaaa:: | equal    | not-sent  |
| devprefix    |           |    |    |        |          |           |
| ipv6-deviid  | 64        | 1  | Dw | ::zzzz | equal    | not-sent  |
| ipv6-        | 64        | 1  | Dw | -      | ignore   | value-    |
| appprefix    |           |    |    |        |          | sent      |
| ipv6-appiid  | 64        | 1  | Dw | -      | ignore   | value-    |
|              |           |    |    |        |          | sent      |
+-------------------------- ICMPv6 header ---------------------------+
| icmpv6-type  | 8         | 1  | Dw | 3      | equal    | not-sent  |
| icmpv6-code  | 8         | 1  | Dw | [0,1]  | match-   | mapping-  |
|              |           |    |    |        | mapping  | sent      |
| icmpv6-      | 16        | 1  | Dw | -      | ignore   | compute   |
| checksum     |           |    |    |        |          |           |
| unused       | 32        | 1  | Dw | 0      | ignore   | not-sent  |
| icmpv6-      | variable- | 1  | Dw | 0      | rev-     | rev-      |
| payload      | bits      |    |    |        | rule-    | compress- |
|              |           |    |    |        | match    | sent      |
+--------------+-----------+----+----+--------+----------+-----------+
]]></artwork>
            </artset>
          </figure>
          <t><xref target="fig-example-icmpv6"/> shows a Rule inspired by
<xref target="I-D.ietf-schc-icmpv6-compression"/>. One difference here is the
addition of the "unused" entry, skipping the 32 bits following the
Checksum. The remaining bytes are assigned to "icmpv6-payload" and
contain the original (invoking) header. If a Rule in the context
matches that payload, compression applies to it as well.</t>
          <t><xref target="fig-icmpv6-residue"/> shows the resulting residue: the RuleID of
the ICMPv6 message, followed by its own compression residue, then a
length for the variable-length structure, the RuleID of the Rule
that compresses the original header, that Rule's compression
residue, the remaining, uncompressed payload, and, since this
concludes the SCHC packet, the final padding bits (<xref target="RFC8724"/>) that
must bring it to a byte boundary, since "Length" here counts bytes,
not bits: spanning the inner RuleID, header residue, and payload
together, it is typically well above the 14-byte escape threshold
(<xref target="variable-length-in-bits"/>), so counting it in bytes keeps that
length prefix itself compact.</t>
          <figure anchor="fig-icmpv6-residue">
            <name>Residue Layout for an ICMPv6 Error Compressing an Embedded, Compressed Header</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="568" viewBox="0 0 568 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,48 L 8,112" fill="none" stroke="black"/>
                  <path d="M 88,48 L 88,112" fill="none" stroke="black"/>
                  <path d="M 168,48 L 168,112" fill="none" stroke="black"/>
                  <path d="M 240,32 L 240,112" fill="none" stroke="black"/>
                  <path d="M 320,48 L 320,112" fill="none" stroke="black"/>
                  <path d="M 400,48 L 400,112" fill="none" stroke="black"/>
                  <path d="M 480,48 L 480,112" fill="none" stroke="black"/>
                  <path d="M 560,32 L 560,112" fill="none" stroke="black"/>
                  <path d="M 248,32 L 368,32" fill="none" stroke="black"/>
                  <path d="M 424,32 L 552,32" fill="none" stroke="black"/>
                  <path d="M 8,48 L 560,48" fill="none" stroke="black"/>
                  <path d="M 8,112 L 560,112" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="396" y="36">Length</text>
                    <text x="44" y="68">RuleID</text>
                    <text x="120" y="68">IPv6/</text>
                    <text x="204" y="68">Length</text>
                    <text x="276" y="68">RuleID</text>
                    <text x="352" y="68">IPv6/</text>
                    <text x="440" y="68">Payload</text>
                    <text x="520" y="68">Padding</text>
                    <text x="48" y="84">(outer)</text>
                    <text x="124" y="84">ICMPv6</text>
                    <text x="280" y="84">(inner)</text>
                    <text x="344" y="84">UDP</text>
                    <text x="128" y="100">residue</text>
                    <text x="360" y="100">residue</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                             |----------------Length-----------------|
+---------+---------+--------+---------+---------+---------+---------+
| RuleID  | IPv6/   | Length | RuleID  | IPv6/   | Payload | Padding |
| (outer) | ICMPv6  |        | (inner) | UDP     |         |         |
|         | residue |        |         | residue |         |         |
+---------+---------+--------+---------+---------+---------+---------+
]]></artwork>
            </artset>
          </figure>
        </section>
      </section>
      <section anchor="alternative-include-ipv6-in-header-format">
        <name>Alternative: Include IPv6 in Header Format</name>
        <t>An alternative to <xref target="I-D.ietf-schc-icmpv6-compression"/> is to
continue the compression process inside the ICMPv6 payload, instead
of matching it against a separate Rule. <xref target="fig-alt-icmpv6"/> shows the
resulting Rule.</t>
        <t>The invoking header's Field Descriptors are distinct from the outer
header's, and are designed from the ICMPv6 message's point of view.</t>
        <t>Fields designed with an application or device role remain unchanged
(e.g. "ipv6-deviid" or "udp-app-port"), but the direction is
reversed. Field Position is also incremented if a field is repeated,
as for the IPv6 fields in the example.</t>
        <t>The compression mechanism <bcp14>MUST</bcp14> also include the port numbers: an
ICMPv6 error message exists to inform the source that a given flow
failed to reach its destination, and the port numbers are part of
that flow's identification. It is <bcp14>RECOMMENDED</bcp14> to be able to fully
reconstruct the Layer 4 header this way, not just the ports.</t>
        <figure anchor="fig-alt-icmpv6">
          <name>Alternative ICMPv6 Rule Embedding the Invoking IPv6/UDP Header In Place</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1024" width="544" viewBox="0 0 544 1024" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,1008" fill="none" stroke="black"/>
                <path d="M 128,32 L 128,64" fill="none" stroke="black"/>
                <path d="M 128,88 L 128,424" fill="none" stroke="black"/>
                <path d="M 128,440 L 128,520" fill="none" stroke="black"/>
                <path d="M 128,536 L 128,872" fill="none" stroke="black"/>
                <path d="M 128,888 L 128,1008" fill="none" stroke="black"/>
                <path d="M 224,32 L 224,64" fill="none" stroke="black"/>
                <path d="M 224,96 L 224,416" fill="none" stroke="black"/>
                <path d="M 224,448 L 224,520" fill="none" stroke="black"/>
                <path d="M 224,536 L 224,872" fill="none" stroke="black"/>
                <path d="M 224,888 L 224,1008" fill="none" stroke="black"/>
                <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                <path d="M 264,96 L 264,416" fill="none" stroke="black"/>
                <path d="M 264,448 L 264,512" fill="none" stroke="black"/>
                <path d="M 264,544 L 264,864" fill="none" stroke="black"/>
                <path d="M 264,896 L 264,1008" fill="none" stroke="black"/>
                <path d="M 304,32 L 304,64" fill="none" stroke="black"/>
                <path d="M 304,96 L 304,416" fill="none" stroke="black"/>
                <path d="M 304,448 L 304,512" fill="none" stroke="black"/>
                <path d="M 304,544 L 304,864" fill="none" stroke="black"/>
                <path d="M 304,896 L 304,1008" fill="none" stroke="black"/>
                <path d="M 376,32 L 376,64" fill="none" stroke="black"/>
                <path d="M 376,88 L 376,424" fill="none" stroke="black"/>
                <path d="M 376,440 L 376,512" fill="none" stroke="black"/>
                <path d="M 376,544 L 376,864" fill="none" stroke="black"/>
                <path d="M 376,896 L 376,1008" fill="none" stroke="black"/>
                <path d="M 448,32 L 448,64" fill="none" stroke="black"/>
                <path d="M 448,88 L 448,424" fill="none" stroke="black"/>
                <path d="M 448,440 L 448,520" fill="none" stroke="black"/>
                <path d="M 448,536 L 448,872" fill="none" stroke="black"/>
                <path d="M 448,888 L 448,1008" fill="none" stroke="black"/>
                <path d="M 536,32 L 536,1008" fill="none" stroke="black"/>
                <path d="M 8,32 L 536,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 536,64" fill="none" stroke="black"/>
                <path d="M 8,80 L 192,80" fill="none" stroke="black"/>
                <path d="M 352,80 L 536,80" fill="none" stroke="black"/>
                <path d="M 8,432 L 208,432" fill="none" stroke="black"/>
                <path d="M 336,432 L 536,432" fill="none" stroke="black"/>
                <path d="M 8,528 L 136,528" fill="none" stroke="black"/>
                <path d="M 408,528 L 536,528" fill="none" stroke="black"/>
                <path d="M 8,880 L 136,880" fill="none" stroke="black"/>
                <path d="M 400,880 L 536,880" fill="none" stroke="black"/>
                <path d="M 8,976 L 536,976" fill="none" stroke="black"/>
                <path d="M 8,1008 L 536,1008" fill="none" stroke="black"/>
                <path class="jump" d="M 224,888 C 218,888 218,872 224,872" fill="none" stroke="black"/>
                <path class="jump" d="M 224,536 C 218,536 218,520 224,520" fill="none" stroke="black"/>
                <g class="text">
                  <text x="40" y="52">Field</text>
                  <text x="148" y="52">FL</text>
                  <text x="244" y="52">FP</text>
                  <text x="284" y="52">DI</text>
                  <text x="324" y="52">TV</text>
                  <text x="396" y="52">MO</text>
                  <text x="472" y="52">CDA</text>
                  <text x="224" y="84">Outer</text>
                  <text x="268" y="84">IPv6</text>
                  <text x="316" y="84">header</text>
                  <text x="68" y="100">ipv6-version</text>
                  <text x="144" y="100">4</text>
                  <text x="240" y="100">1</text>
                  <text x="284" y="100">Bi</text>
                  <text x="320" y="100">6</text>
                  <text x="408" y="100">equal</text>
                  <text x="492" y="100">not-sent</text>
                  <text x="40" y="116">ipv6-</text>
                  <text x="144" y="116">8</text>
                  <text x="240" y="116">1</text>
                  <text x="284" y="116">Bi</text>
                  <text x="320" y="116">0</text>
                  <text x="412" y="116">ignore</text>
                  <text x="492" y="116">not-sent</text>
                  <text x="68" y="132">trafficclass</text>
                  <text x="40" y="148">ipv6-</text>
                  <text x="148" y="148">20</text>
                  <text x="240" y="148">1</text>
                  <text x="284" y="148">Bi</text>
                  <text x="320" y="148">0</text>
                  <text x="412" y="148">ignore</text>
                  <text x="492" y="148">not-sent</text>
                  <text x="56" y="164">flowlabel</text>
                  <text x="40" y="180">ipv6-</text>
                  <text x="148" y="180">16</text>
                  <text x="240" y="180">1</text>
                  <text x="284" y="180">Bi</text>
                  <text x="320" y="180">-</text>
                  <text x="412" y="180">ignore</text>
                  <text x="488" y="180">compute</text>
                  <text x="52" y="196">payload-</text>
                  <text x="44" y="212">length</text>
                  <text x="40" y="228">ipv6-</text>
                  <text x="144" y="228">8</text>
                  <text x="240" y="228">1</text>
                  <text x="284" y="228">Bi</text>
                  <text x="324" y="228">58</text>
                  <text x="408" y="228">equal</text>
                  <text x="492" y="228">not-sent</text>
                  <text x="60" y="244">nextheader</text>
                  <text x="40" y="260">ipv6-</text>
                  <text x="144" y="260">8</text>
                  <text x="240" y="260">1</text>
                  <text x="284" y="260">Up</text>
                  <text x="320" y="260">-</text>
                  <text x="412" y="260">ignore</text>
                  <text x="484" y="260">value-</text>
                  <text x="52" y="276">hoplimit</text>
                  <text x="476" y="276">sent</text>
                  <text x="40" y="292">ipv6-</text>
                  <text x="144" y="292">8</text>
                  <text x="240" y="292">1</text>
                  <text x="284" y="292">Dw</text>
                  <text x="320" y="292">1</text>
                  <text x="408" y="292">equal</text>
                  <text x="492" y="292">not-sent</text>
                  <text x="52" y="308">hoplimit</text>
                  <text x="40" y="324">ipv6-</text>
                  <text x="148" y="324">64</text>
                  <text x="240" y="324">1</text>
                  <text x="284" y="324">Bi</text>
                  <text x="340" y="324">aaaa::</text>
                  <text x="408" y="324">equal</text>
                  <text x="492" y="324">not-sent</text>
                  <text x="56" y="340">devprefix</text>
                  <text x="64" y="356">ipv6-deviid</text>
                  <text x="148" y="356">64</text>
                  <text x="240" y="356">1</text>
                  <text x="284" y="356">Bi</text>
                  <text x="340" y="356">::zzzz</text>
                  <text x="408" y="356">equal</text>
                  <text x="492" y="356">not-sent</text>
                  <text x="40" y="372">ipv6-</text>
                  <text x="148" y="372">64</text>
                  <text x="240" y="372">1</text>
                  <text x="284" y="372">Bi</text>
                  <text x="320" y="372">-</text>
                  <text x="412" y="372">ignore</text>
                  <text x="484" y="372">value-</text>
                  <text x="56" y="388">appprefix</text>
                  <text x="476" y="388">sent</text>
                  <text x="64" y="404">ipv6-appiid</text>
                  <text x="148" y="404">64</text>
                  <text x="240" y="404">1</text>
                  <text x="284" y="404">Bi</text>
                  <text x="320" y="404">-</text>
                  <text x="412" y="404">ignore</text>
                  <text x="484" y="404">value-</text>
                  <text x="476" y="420">sent</text>
                  <text x="244" y="436">ICMPv6</text>
                  <text x="300" y="436">header</text>
                  <text x="64" y="452">icmpv6-type</text>
                  <text x="144" y="452">8</text>
                  <text x="240" y="452">1</text>
                  <text x="284" y="452">Bi</text>
                  <text x="320" y="452">1</text>
                  <text x="408" y="452">equal</text>
                  <text x="492" y="452">not-sent</text>
                  <text x="64" y="468">icmpv6-code</text>
                  <text x="144" y="468">8</text>
                  <text x="240" y="468">1</text>
                  <text x="284" y="468">Bi</text>
                  <text x="320" y="468">4</text>
                  <text x="408" y="468">equal</text>
                  <text x="492" y="468">not-sent</text>
                  <text x="48" y="484">icmpv6-</text>
                  <text x="148" y="484">16</text>
                  <text x="240" y="484">1</text>
                  <text x="284" y="484">Bi</text>
                  <text x="320" y="484">0</text>
                  <text x="412" y="484">ignore</text>
                  <text x="488" y="484">compute</text>
                  <text x="52" y="500">checksum</text>
                  <text x="44" y="516">unused</text>
                  <text x="148" y="516">32</text>
                  <text x="240" y="516">1</text>
                  <text x="284" y="516">Bi</text>
                  <text x="320" y="516">0</text>
                  <text x="412" y="516">ignore</text>
                  <text x="492" y="516">not-sent</text>
                  <text x="180" y="532">Invoking</text>
                  <text x="264" y="532">embedded)</text>
                  <text x="324" y="532">IPv6</text>
                  <text x="372" y="532">header</text>
                  <text x="68" y="548">ipv6-version</text>
                  <text x="144" y="548">4</text>
                  <text x="240" y="548">2</text>
                  <text x="284" y="548">Bi</text>
                  <text x="320" y="548">6</text>
                  <text x="408" y="548">equal</text>
                  <text x="492" y="548">not-sent</text>
                  <text x="40" y="564">ipv6-</text>
                  <text x="144" y="564">8</text>
                  <text x="240" y="564">2</text>
                  <text x="284" y="564">Bi</text>
                  <text x="320" y="564">0</text>
                  <text x="412" y="564">ignore</text>
                  <text x="492" y="564">not-sent</text>
                  <text x="68" y="580">trafficclass</text>
                  <text x="40" y="596">ipv6-</text>
                  <text x="148" y="596">20</text>
                  <text x="240" y="596">2</text>
                  <text x="284" y="596">Bi</text>
                  <text x="320" y="596">0</text>
                  <text x="412" y="596">ignore</text>
                  <text x="492" y="596">not-sent</text>
                  <text x="56" y="612">flowlabel</text>
                  <text x="40" y="628">ipv6-</text>
                  <text x="148" y="628">16</text>
                  <text x="240" y="628">2</text>
                  <text x="284" y="628">Bi</text>
                  <text x="320" y="628">-</text>
                  <text x="412" y="628">ignore</text>
                  <text x="488" y="628">compute</text>
                  <text x="52" y="644">payload-</text>
                  <text x="44" y="660">length</text>
                  <text x="40" y="676">ipv6-</text>
                  <text x="144" y="676">8</text>
                  <text x="240" y="676">2</text>
                  <text x="284" y="676">Bi</text>
                  <text x="324" y="676">17</text>
                  <text x="408" y="676">equal</text>
                  <text x="492" y="676">not-sent</text>
                  <text x="60" y="692">nextheader</text>
                  <text x="40" y="708">ipv6-</text>
                  <text x="144" y="708">8</text>
                  <text x="240" y="708">2</text>
                  <text x="284" y="708">Dw</text>
                  <text x="320" y="708">1</text>
                  <text x="408" y="708">equal</text>
                  <text x="492" y="708">not-sent</text>
                  <text x="52" y="724">hoplimit</text>
                  <text x="40" y="740">ipv6-</text>
                  <text x="144" y="740">8</text>
                  <text x="240" y="740">2</text>
                  <text x="284" y="740">Up</text>
                  <text x="320" y="740">-</text>
                  <text x="412" y="740">ignore</text>
                  <text x="484" y="740">value-</text>
                  <text x="52" y="756">hoplimit</text>
                  <text x="476" y="756">sent</text>
                  <text x="40" y="772">ipv6-</text>
                  <text x="148" y="772">64</text>
                  <text x="240" y="772">2</text>
                  <text x="284" y="772">Bi</text>
                  <text x="340" y="772">aaaa::</text>
                  <text x="408" y="772">equal</text>
                  <text x="492" y="772">not-sent</text>
                  <text x="56" y="788">devprefix</text>
                  <text x="64" y="804">ipv6-deviid</text>
                  <text x="148" y="804">64</text>
                  <text x="240" y="804">2</text>
                  <text x="284" y="804">Bi</text>
                  <text x="340" y="804">::zzzz</text>
                  <text x="408" y="804">equal</text>
                  <text x="492" y="804">not-sent</text>
                  <text x="40" y="820">ipv6-</text>
                  <text x="148" y="820">64</text>
                  <text x="240" y="820">2</text>
                  <text x="284" y="820">Bi</text>
                  <text x="320" y="820">-</text>
                  <text x="412" y="820">ignore</text>
                  <text x="484" y="820">value-</text>
                  <text x="56" y="836">appprefix</text>
                  <text x="476" y="836">sent</text>
                  <text x="64" y="852">ipv6-appiid</text>
                  <text x="148" y="852">64</text>
                  <text x="240" y="852">2</text>
                  <text x="284" y="852">Bi</text>
                  <text x="320" y="852">-</text>
                  <text x="412" y="852">ignore</text>
                  <text x="484" y="852">value-</text>
                  <text x="476" y="868">sent</text>
                  <text x="180" y="884">Invoking</text>
                  <text x="264" y="884">embedded)</text>
                  <text x="320" y="884">UDP</text>
                  <text x="364" y="884">header</text>
                  <text x="68" y="900">udp-dev-port</text>
                  <text x="148" y="900">16</text>
                  <text x="240" y="900">1</text>
                  <text x="284" y="900">Bi</text>
                  <text x="332" y="900">5683</text>
                  <text x="408" y="900">equal</text>
                  <text x="492" y="900">not-sent</text>
                  <text x="68" y="916">udp-app-port</text>
                  <text x="148" y="916">16</text>
                  <text x="240" y="916">1</text>
                  <text x="284" y="916">Bi</text>
                  <text x="320" y="916">-</text>
                  <text x="412" y="916">ignore</text>
                  <text x="484" y="916">value-</text>
                  <text x="476" y="932">sent</text>
                  <text x="60" y="948">udp-length</text>
                  <text x="148" y="948">16</text>
                  <text x="240" y="948">1</text>
                  <text x="284" y="948">Bi</text>
                  <text x="320" y="948">0</text>
                  <text x="412" y="948">ignore</text>
                  <text x="488" y="948">compute</text>
                  <text x="68" y="964">udp-checksum</text>
                  <text x="148" y="964">16</text>
                  <text x="240" y="964">1</text>
                  <text x="284" y="964">Bi</text>
                  <text x="320" y="964">0</text>
                  <text x="412" y="964">ignore</text>
                  <text x="488" y="964">compute</text>
                  <text x="48" y="996">payload</text>
                  <text x="176" y="996">remaining</text>
                  <text x="240" y="996">1</text>
                  <text x="284" y="996">Bi</text>
                  <text x="320" y="996">-</text>
                  <text x="412" y="996">ignore</text>
                  <text x="492" y="996">not-sent</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+--------------+-----------+----+----+--------+--------+----------+
| Field        | FL        | FP | DI | TV     | MO     | CDA      |
+--------------+-----------+----+----+--------+--------+----------+
+----------------------- Outer IPv6 header -----------------------+
| ipv6-version | 4         | 1  | Bi | 6      | equal  | not-sent |
| ipv6-        | 8         | 1  | Bi | 0      | ignore | not-sent |
| trafficclass |           |    |    |        |        |          |
| ipv6-        | 20        | 1  | Bi | 0      | ignore | not-sent |
| flowlabel    |           |    |    |        |        |          |
| ipv6-        | 16        | 1  | Bi | -      | ignore | compute  |
| payload-     |           |    |    |        |        |          |
| length       |           |    |    |        |        |          |
| ipv6-        | 8         | 1  | Bi | 58     | equal  | not-sent |
| nextheader   |           |    |    |        |        |          |
| ipv6-        | 8         | 1  | Up | -      | ignore | value-   |
| hoplimit     |           |    |    |        |        | sent     |
| ipv6-        | 8         | 1  | Dw | 1      | equal  | not-sent |
| hoplimit     |           |    |    |        |        |          |
| ipv6-        | 64        | 1  | Bi | aaaa:: | equal  | not-sent |
| devprefix    |           |    |    |        |        |          |
| ipv6-deviid  | 64        | 1  | Bi | ::zzzz | equal  | not-sent |
| ipv6-        | 64        | 1  | Bi | -      | ignore | value-   |
| appprefix    |           |    |    |        |        | sent     |
| ipv6-appiid  | 64        | 1  | Bi | -      | ignore | value-   |
|              |           |    |    |        |        | sent     |
+------------------------- ICMPv6 header -------------------------+
| icmpv6-type  | 8         | 1  | Bi | 1      | equal  | not-sent |
| icmpv6-code  | 8         | 1  | Bi | 4      | equal  | not-sent |
| icmpv6-      | 16        | 1  | Bi | 0      | ignore | compute  |
| checksum     |           |    |    |        |        |          |
| unused       | 32        | 1  | Bi | 0      | ignore | not-sent |
+---------------- Invoking (embedded) IPv6 header ----------------+
| ipv6-version | 4         | 2  | Bi | 6      | equal  | not-sent |
| ipv6-        | 8         | 2  | Bi | 0      | ignore | not-sent |
| trafficclass |           |    |    |        |        |          |
| ipv6-        | 20        | 2  | Bi | 0      | ignore | not-sent |
| flowlabel    |           |    |    |        |        |          |
| ipv6-        | 16        | 2  | Bi | -      | ignore | compute  |
| payload-     |           |    |    |        |        |          |
| length       |           |    |    |        |        |          |
| ipv6-        | 8         | 2  | Bi | 17     | equal  | not-sent |
| nextheader   |           |    |    |        |        |          |
| ipv6-        | 8         | 2  | Dw | 1      | equal  | not-sent |
| hoplimit     |           |    |    |        |        |          |
| ipv6-        | 8         | 2  | Up | -      | ignore | value-   |
| hoplimit     |           |    |    |        |        | sent     |
| ipv6-        | 64        | 2  | Bi | aaaa:: | equal  | not-sent |
| devprefix    |           |    |    |        |        |          |
| ipv6-deviid  | 64        | 2  | Bi | ::zzzz | equal  | not-sent |
| ipv6-        | 64        | 2  | Bi | -      | ignore | value-   |
| appprefix    |           |    |    |        |        | sent     |
| ipv6-appiid  | 64        | 2  | Bi | -      | ignore | value-   |
|              |           |    |    |        |        | sent     |
+---------------- Invoking (embedded) UDP header -----------------+
| udp-dev-port | 16        | 1  | Bi | 5683   | equal  | not-sent |
| udp-app-port | 16        | 1  | Bi | -      | ignore | value-   |
|              |           |    |    |        |        | sent     |
| udp-length   | 16        | 1  | Bi | 0      | ignore | compute  |
| udp-checksum | 16        | 1  | Bi | 0      | ignore | compute  |
+--------------+-----------+----+----+--------+--------+----------+
| payload      | remaining | 1  | Bi | -      | ignore | not-sent |
+--------------+-----------+----+----+--------+--------+----------+
]]></artwork>
          </artset>
        </figure>
        <t>The compression result should be better, since there is no need to
send a variable-length residue and a second RuleID, at the cost of
a more complex Rule definition.</t>
        <figure anchor="fig-alt-icmpv6-residue">
          <name>Residue Layout for the Alternative ICMPv6 Rule</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="80" width="448" viewBox="0 0 448 80" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
                <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
                <path d="M 440,32 L 440,64" fill="none" stroke="black"/>
                <path d="M 8,32 L 440,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 440,64" fill="none" stroke="black"/>
                <g class="text">
                  <text x="52" y="52">RuleID</text>
                  <text x="236" y="52">IPv6/ICMPv6/IPv6/UDP</text>
                  <text x="352" y="52">residue</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+----------+------------------------------------------+
|  RuleID  |       IPv6/ICMPv6/IPv6/UDP residue       |
+----------+------------------------------------------+
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="action">
      <name>Action</name>
      <t>Selecting a compression Rule triggers compression and sends the
resulting SCHC Packet to the other end.
<xref target="I-D.barthel-lpwan-oam-schc"/> introduced an Action to change that
behavior: the Rule is still selected through its entries, but the
packet description is handed over to the process the Action names,
instead of being sent to the lower layer. Since the Rule is then
used only for the selection, the Compression/Decompression Actions
of its entries do not matter and are set to "not-sent".</t>
      <t>The motivating example is an ICMPv6 <xref target="RFC4443"/> Echo Request sent to
a Device. The Device receives the compressed message and answers
with an Echo Reply, but propagating the Echo Request over the LPWAN
costs two messages on a constrained link, and the Identifier and
Sequence Number fields compress poorly when the sender is unaware of
the compression scheme. The Action "action-proxy-ping" avoids that
traffic: the core SCHC C/D answers the Echo Request on behalf of the
Device.</t>
      <t>The Action takes a parameter, in seconds, giving the interval during
which the Device is considered active. During this interval, the
proxy echoes the ping requests; after it, they are discarded. The
parameter is carried in "action-value", a list reusing the Target
Value structure, so an Action may take several arguments.</t>
      <t><xref target="fig-action-rule"/> shows a compression Rule for pinging a Device,
with the entry-index column and the identity short names used in
<xref target="fig-example-rule"/>. The Action applies to the Rule as a whole, and
is therefore shown above its entries.</t>
      <figure anchor="fig-action-rule">
        <name>Example Compression Rule for a Ping to a Device</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="520" viewBox="0 0 520 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,240" fill="none" stroke="black"/>
              <path d="M 48,64 L 48,96" fill="none" stroke="black"/>
              <path d="M 48,128 L 48,240" fill="none" stroke="black"/>
              <path d="M 184,64 L 184,96" fill="none" stroke="black"/>
              <path d="M 184,128 L 184,240" fill="none" stroke="black"/>
              <path d="M 224,32 L 224,104" fill="none" stroke="black"/>
              <path d="M 224,120 L 224,240" fill="none" stroke="black"/>
              <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
              <path d="M 264,128 L 264,240" fill="none" stroke="black"/>
              <path d="M 304,64 L 304,96" fill="none" stroke="black"/>
              <path d="M 304,128 L 304,240" fill="none" stroke="black"/>
              <path d="M 344,64 L 344,96" fill="none" stroke="black"/>
              <path d="M 344,128 L 344,240" fill="none" stroke="black"/>
              <path d="M 424,64 L 424,96" fill="none" stroke="black"/>
              <path d="M 424,128 L 424,240" fill="none" stroke="black"/>
              <path d="M 512,64 L 512,240" fill="none" stroke="black"/>
              <path d="M 8,32 L 224,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 512,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 512,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 512,128" fill="none" stroke="black"/>
              <path d="M 8,240 L 512,240" fill="none" stroke="black"/>
              <path class="jump" d="M 224,120 C 218,120 218,104 224,104" fill="none" stroke="black"/>
              <g class="text">
                <text x="48" y="52">Action:</text>
                <text x="144" y="52">proxy-ping(300)</text>
                <text x="24" y="84">#</text>
                <text x="80" y="84">Field</text>
                <text x="204" y="84">FL</text>
                <text x="244" y="84">FP</text>
                <text x="284" y="84">DI</text>
                <text x="324" y="84">TV</text>
                <text x="364" y="84">MO</text>
                <text x="448" y="84">CDA</text>
                <text x="36" y="116">IPv6</text>
                <text x="88" y="116">Headers</text>
                <text x="168" y="116">description</text>
                <text x="260" y="116">omitted)</text>
                <text x="28" y="148">10</text>
                <text x="104" y="148">icmpv6-type</text>
                <text x="200" y="148">8</text>
                <text x="240" y="148">1</text>
                <text x="284" y="148">Dw</text>
                <text x="324" y="148">80</text>
                <text x="376" y="148">equal</text>
                <text x="468" y="148">not-sent</text>
                <text x="28" y="164">11</text>
                <text x="104" y="164">icmpv6-code</text>
                <text x="200" y="164">8</text>
                <text x="240" y="164">1</text>
                <text x="284" y="164">Bi</text>
                <text x="324" y="164">00</text>
                <text x="376" y="164">equal</text>
                <text x="468" y="164">not-sent</text>
                <text x="28" y="180">12</text>
                <text x="88" y="180">icmpv6-</text>
                <text x="204" y="180">16</text>
                <text x="240" y="180">1</text>
                <text x="284" y="180">Bi</text>
                <text x="320" y="180">-</text>
                <text x="380" y="180">ignore</text>
                <text x="468" y="180">not-sent</text>
                <text x="100" y="196">identifier</text>
                <text x="28" y="212">13</text>
                <text x="88" y="212">icmpv6-</text>
                <text x="204" y="212">16</text>
                <text x="240" y="212">1</text>
                <text x="284" y="212">Bi</text>
                <text x="324" y="212">00</text>
                <text x="384" y="212">MSB(24)</text>
                <text x="448" y="212">lsb</text>
                <text x="92" y="228">sequence</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------------------------+
| Action: proxy-ping(300)  |
+----+----------------+----+----+----+----+---------+----------+
| #  | Field          | FL | FP | DI | TV | MO      | CDA      |
+----+----------------+----+----+----+----+---------+----------+
| IPv6 Headers description (omitted)                           |
+----+----------------+----+----+----+----+---------+----------+
| 10 | icmpv6-type    | 8  | 1  | Dw | 80 | equal   | not-sent |
| 11 | icmpv6-code    | 8  | 1  | Bi | 00 | equal   | not-sent |
| 12 | icmpv6-        | 16 | 1  | Bi | -  | ignore  | not-sent |
|    | identifier     |    |    |    |    |         |          |
| 13 | icmpv6-        | 16 | 1  | Bi | 00 | MSB(24) | lsb      |
|    | sequence       |    |    |    |    |         |          |
+----+----------------+----+----+----+----+---------+----------+
]]></artwork>
        </artset>
      </figure>
      <t>In the data model, the Action is added to the compression Rule
itself, as a sibling of its entries, and not to a single entry:</t>
      <ul spacing="normal">
        <li>
          <t>"action": an identityref to "action-type", defaulting to
"action-forward". Being optional and defaulted, a Rule that does
not carry it behaves exactly as in RFC 8724 <xref target="RFC8724"/>.</t>
        </li>
        <li>
          <t>"action-value": the Action's arguments, a list based on the Target
Value structure, as for Matching Operator and
Compression/Decompression Action arguments.</t>
        </li>
      </ul>
      <t>The corresponding new identities are:</t>
      <ul spacing="normal">
        <li>
          <t>"action-base-type": base identity for the Action applied to a
packet matching a compression Rule.</t>
        </li>
        <li>
          <t>"action-forward": the default, where the packet is handed over to
the lower layer, as specified in RFC 8724 <xref target="RFC8724"/>.</t>
        </li>
        <li>
          <t>"action-proxy-ping": the packet is processed locally by a ping
proxy, which answers the Echo Request on behalf of the Device.</t>
        </li>
      </ul>
    </section>
    <section anchor="compound-ack">
      <name>Compound ACK</name>
      <t>RFC 9441 <xref target="RFC9441"/>, "Static Context Header Compression (SCHC)
Compound Acknowledgement (ACK)", includes its own YANG module,
"ietf-schc-compound-ack", which augments the "ack-on-error"
fragmentation mode
("/schc/rule/nature/fragmentation/mode/ack-on-error") with two new
leaves. This document's module revision incorporates them:</t>
      <ul spacing="normal">
        <li>
          <t>"bitmap-format": how bitmaps are carried in a SCHC ACK message: an
identityref to "bitmap-format-type", defaulting to
"bitmap-RFC8724".</t>
        </li>
        <li>
          <t>"last-bitmap-compression": a boolean, true by default, indicating
whether the last bitmap in a SCHC ACK message can be compressed.</t>
        </li>
      </ul>
      <t>The corresponding new identities are:</t>
      <ul spacing="normal">
        <li>
          <t>"bitmap-format-base-type": base identity for how a bitmap is
formed in ACK messages.</t>
        </li>
        <li>
          <t>"bitmap-RFC8724": the default bitmap format, as already defined in
RFC 8724 <xref target="RFC8724"/>.</t>
        </li>
        <li>
          <t>"bitmap-compound-ack": allows several bitmaps within a single ACK
message.</t>
        </li>
      </ul>
    </section>
    <section anchor="rule-management">
      <name>Rule Management</name>
      <t>The SCHC YANG data model provides support for Rule management
through the "management" feature and the "nature-management" Rule
nature. A management Rule uses the compression Rule structure, 
but is kept separate from regular compression Rules through the
"nature-management" Rule nature: IPv6 addresses and port
numbers are specially dedicated to identifying it, and <bcp14>MAY</bcp14> overlap
with values used by regular compression Rules; the nature of the
Rule is what allows distinguishing them. Management Rules are
the only ones allowed to access the Static Context, to read, create,
update, or delete Rules. Only the "entry-universal" structure
supports management Rules; the deprecated "entry" list does not.</t>
      <t>"guard-period", the management timer, is not really a property of
any single Rule: it applies to the SCHC context as a whole. Nesting
it inside "list rule" (whether inside one case or as a sibling of
"choice nature") would raise the same reachability problem "case
management" would have had, since it would need repeating, and
re-keying under SIDs, in every case that might need it. The revision
instead moves "guard-period" out of "list rule" entirely, into a new
top-level "context" container, a sibling of "schc", present only
"if-feature management". Being outside any Rule, it no longer needs
a "rule-nature"-based "must" at all.</t>
      <figure anchor="fig-management-in-compression-universal">
        <name>Widening compression-universal to Also Serve Management Rules (module revision 2026-09-22)</name>
        <sourcecode type="yang"><![CDATA[
grouping compression-content-universal {
  list entry-universal {
    must "derived-from-or-self(../rule-nature,
                                'nature-compression') or
          derived-from-or-self(../rule-nature,
                                'nature-management')" {
      error-message
        "Rule nature must be compression or management";
    }
    /* ... unchanged: key, ordered-by, uses, description ... */
  }
  /* ... action, action-value (Action section) ... */
}

container context {
  if-feature "management";
  uses management-content;
  description
    "Management-related parameters that apply to the whole SCHC
     context rather than to a single Rule.";
}

list rule {
  /* ... unchanged: key, rule-id-type, rule-nature ... */
  choice nature {
    case fragmentation {
      if-feature "fragmentation";
      uses fragmentation-content;
    }
    case compression {
      /* ... unchanged, still deprecated ... */
    }
    case compression-universal {
      if-feature "compression or management";
      uses compression-content-universal;
    }
  }
}
]]></sourcecode>
      </figure>
      <t>For management, a management context is added: its values are
common to all SCHC Rules in that management instance, rather than
specific to any one Rule. Currently, the context contains a guard
period, defining the time before a RuleID can be reused by
management when a new Rule is created.</t>
      <t>Different management operations can be defined to act on Rules or on
individual elements of a Rule. For example, the "duplicate-rule" RPC
can be used to create a new Rule from an existing one under a
different RuleID, with selected elements of the new Rule modified as
part of the operation.</t>
      <t>This document defines the YANG structures needed to support Rule
management. The complete set of management operations -- their
semantics, encoding, exchange, and the procedures used to apply them
to a SCHC Context -- is specified separately.</t>
    </section>
    <section anchor="manual-sid-allocation">
      <name>Manual SID Allocation</name>
      <t>The mapping between YANG identifiers and SID <xref target="RFC9595"/> values can
be generated automatically with the "pyang" tool (e.g. via "pyang
--sid-generate-file"). This automatic allocation, however, is not
optimized.</t>
      <t>The first goal of a manual allocation is to minimize the delta
between SIDs used together as CBOR/CORECONF keys, so that delta
encodes on a single byte (i.e., a value between -24 and +23).
<xref target="I-D.toutain-schc-sid-allocation"/> shows that pyang's automatic,
alphabetical assignment defeats this: for example, "rule-id-value",
"rule-id-length", and "rule-nature", present in every Rule, end
up with a delta higher than 23 from their base, so every single Rule
pays for a 2-byte delta where a 1-byte one would do.</t>
      <t><xref target="I-D.toutain-schc-sid-allocation"/> makes two recommendations to
keep this delta small. First, keep data-carrying and
identity-carrying nodes in separate SID ranges, since they are
rarely encoded together; the distance between the two can then be as
large as 255, allowing a 2-byte delta only where it does not matter.
Second, leave some SIDs unused around the SCHC Rule identifiers, so
the module can be augmented later (i.e. new leaves added) without
pushing any of these frequently co-occurring identifiers' deltas
past the single-byte threshold.</t>
      <t>TODO: describe the resulting manual SID allocation mechanism: SIDs
are first generated automatically, then remapped to a stable,
manually curated allocation table (module, namespace, identifier) so
that previously published SIDs do not shift when the module evolves
(fields added, removed, or deprecated). Reference <xref target="RFC9595"/> for
the SID file format and describe the augmentation used to carry type
information per SID item.</t>
      <t>The delta encoding above optimizes SIDs used as CBOR map keys, but
does nothing for a SID used as a value, for instance an identityref
leaf's value, such as a Rule entry's "matching-operator" or
"comp-decomp-action". <xref target="I-D.toutain-core-private-sid-translation"/>
addresses this with a new Compression/Decompression Action,
"cda-sid-translation": it replaces such a SID value with a "private
SID", a small negative number, computed from the real SID, an
"entry-point", and an offset. It reports a worked IPv6/UDP/CoAP
compression Rule example where this reduces a 3994-byte file to
3057 bytes, a 23% reduction.</t>
      <t>With this technique, an identity's first 24 possible values (private
SIDs -1 to -24) each encode on a single byte -- valuable for the
identityref values used most intensively across a Rule, such as
"mo-equal", "mo-ignore", "cda-value-sent", and "cda-not-sent". The
next 232 values (private SIDs -25 to -256) still encode on 2 bytes,
an improvement over an untranslated SID from the RFC SID range,
which always takes 3 bytes in the "ietf-schc" data model. Beyond
that, translation has no effect: the private SID also takes 3 bytes,
same as the original. <xref target="fig-sid-translation"/> summarizes this.</t>
      <figure anchor="fig-sid-translation">
        <name>Private SID Encoding Size vs. Plain SID (RFC SID Range)</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="480" viewBox="0 0 480 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,144" fill="none" stroke="black"/>
              <path d="M 160,32 L 160,144" fill="none" stroke="black"/>
              <path d="M 264,32 L 264,144" fill="none" stroke="black"/>
              <path d="M 376,32 L 376,144" fill="none" stroke="black"/>
              <path d="M 472,32 L 472,144" fill="none" stroke="black"/>
              <path d="M 8,32 L 472,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 472,80" fill="none" stroke="black"/>
              <path d="M 8,144 L 472,144" fill="none" stroke="black"/>
              <g class="text">
                <text x="64" y="52">Private</text>
                <text x="112" y="52">SID</text>
                <text x="212" y="52">Identities</text>
                <text x="304" y="52">Private</text>
                <text x="352" y="52">SID</text>
                <text x="408" y="52">Plain</text>
                <text x="448" y="52">SID</text>
                <text x="80" y="68">range</text>
                <text x="208" y="68">covered</text>
                <text x="320" y="68">bytes</text>
                <text x="424" y="68">bytes</text>
                <text x="52" y="100">-1</text>
                <text x="76" y="100">to</text>
                <text x="104" y="100">-24</text>
                <text x="212" y="100">24</text>
                <text x="320" y="100">1</text>
                <text x="424" y="100">3</text>
                <text x="48" y="116">-25</text>
                <text x="76" y="116">to</text>
                <text x="108" y="116">-256</text>
                <text x="208" y="116">232</text>
                <text x="320" y="116">2</text>
                <text x="424" y="116">3</text>
                <text x="60" y="132">beyond</text>
                <text x="108" y="132">-256</text>
                <text x="212" y="132">--</text>
                <text x="320" y="132">3</text>
                <text x="424" y="132">3</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+------------------+------------+-------------+-----------+
|   Private SID    | Identities | Private SID | Plain SID |
|      range       |  covered   |    bytes    |   bytes   |
+------------------+------------+-------------+-----------+
|    -1 to -24     |     24     |      1      |     3     |
|   -25 to -256    |    232     |      2      |     3     |
|   beyond -256    |     --     |      3      |     3     |
+------------------+------------+-------------+-----------+
]]></artwork>
        </artset>
      </figure>
      <t>Beyond "entry_point + 256", a private SID can instead specify a
Rule's entry-index; beyond that, the remaining space is shared
between identity and data values, with no further reserved
distinction.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO: register the (possibly updated) YANG module and namespace URI
with IANA, referencing this document instead of RFC 9363.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC9595">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="A. Pelov" initials="A." role="editor" surname="Pelov"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>YANG Schema Item iDentifiers (YANG SIDs) are globally unique 63-bit unsigned integers used to identify YANG items. SIDs provide a more compact method for identifying those YANG items that can be used efficiently, notably in constrained environments (RFC 7228). This document defines the semantics, registration processes, and assignment processes for YANG SIDs for IETF-managed YANG modules. To enable the implementation of these processes, this document also defines a file format used to persist and publish assigned YANG SIDs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9595"/>
          <seriesInfo name="DOI" value="10.17487/RFC9595"/>
        </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 anchor="sec-informative-references">
        <name>Informative References</name>
        <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="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="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="RFC9441">
          <front>
            <title>Static Context Header Compression (SCHC) Compound Acknowledgement (ACK)</title>
            <author fullname="J. Zúñiga" initials="J." surname="Zúñiga"/>
            <author fullname="C. Gomez" initials="C." surname="Gomez"/>
            <author fullname="S. Aguilar" initials="S." surname="Aguilar"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="S. Céspedes" initials="S." surname="Céspedes"/>
            <author fullname="D. Wistuba" initials="D." surname="Wistuba"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document updates the Static Context Header Compression (SCHC) and fragmentation protocol (RFC 8724) and the corresponding YANG module (RFC 9363). It defines a SCHC Compound Acknowledgement (ACK) message format and procedure, which are intended to reduce the number of response transmissions (i.e., SCHC ACKs) in the ACK-on-Error Mode, by accumulating bitmaps of several windows in a single SCHC message (i.e., the SCHC Compound ACK).</t>
              <t>Both the message format and procedure are generic, so they can be used, for instance, by any of the four Low-Power Wide Area Network (LPWAN) technologies defined in RFC 8376, which are Sigfox, Long Range Wide Area Network (LoRaWAN), Narrowband Internet of Things (NB-IoT), and IEEE 802.15.4w.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9441"/>
          <seriesInfo name="DOI" value="10.17487/RFC9441"/>
        </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="RFC4443">
          <front>
            <title>Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification</title>
            <author fullname="A. Conta" initials="A." surname="Conta"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="M. Gupta" initials="M." role="editor" surname="Gupta"/>
            <date month="March" year="2006"/>
            <abstract>
              <t>This document describes the format of a set of control messages used in ICMPv6 (Internet Control Message Protocol). ICMPv6 is the Internet Control Message Protocol for Internet Protocol version 6 (IPv6). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="89"/>
          <seriesInfo name="RFC" value="4443"/>
          <seriesInfo name="DOI" value="10.17487/RFC4443"/>
        </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="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="RFC" value="8407"/>
          <seriesInfo name="DOI" value="10.17487/RFC8407"/>
        </reference>
        <reference anchor="I-D.ietf-schc-universal-option">
          <front>
            <title>Options representation in SCHC YANG Data Models</title>
            <author fullname="Quentin Lampin" initials="Q." surname="Lampin">
              <organization>Orange</organization>
            </author>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Consultant</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>IMT Atlantique</organization>
            </author>
            <date day="17" month="October" year="2025"/>
            <abstract>
              <t>   The idea of keeping option identifiers in SCHC Rules simplifies the
   interoperability and the evolution of SCHC compression, when the
   protocol introduces new options, that can be unknown from the current
   SCHC implementation.  This document discuss the augmentation of the
   current YANG Data Model, in order to add in the Rule options
   identifiers used by the protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-schc-universal-option-01"/>
        </reference>
        <reference anchor="I-D.ietf-schc-8824-update">
          <front>
            <title>Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>IMT Atlantique</organization>
            </author>
            <author fullname="Iván Martínez" initials="I." surname="Martínez">
              <organization>IRISA</organization>
            </author>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Consultant</organization>
            </author>
            <date day="26" month="July" year="2026"/>
            <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, and it 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 and UDP headers,
   this document applies SCHC to CoAP headers.  The CoAP header
   structure differs from that of IPv6 and UDP headers, since CoAP uses
   a flexible header with a variable number of options that are in turn
   of variable length.  The CoAP message format is asymmetric, i.e.,
   request messages have a header format different from that of response
   messages.  This specification gives guidance on applying SCHC to
   flexible headers and on leveraging the message format asymmetry for
   defining more efficient compression Rules.  This document replaces
   and obsoletes RFC 8824.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-schc-8824-update-10"/>
        </reference>
        <reference anchor="I-D.ietf-schc-icmpv6-compression">
          <front>
            <title>Static Context Header Compression (SCHC) for the Internet Control Message Protocol (ICMPv6)</title>
            <author fullname="Dominique Barthel" initials="D." surname="Barthel">
         </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>IMT Atlantique</organization>
            </author>
            <date day="13" month="June" year="2025"/>
            <abstract>
              <t>   This document describes how the ICMPv6 protocol can be integrated
   into the SCHC architecture.  It extends the YANG Data Model with new
   field IDs specific to ICMPv6 headers.

   To enhance the compression of ICMPv6 error messages, the document
   also introduces two new Matching Operators and two new Compression
   Decompression Actions to manipulate the ICMPv6 payload.

   Finally, for constrained networks such as LPWAN, it introduces a
   proxy behavior, where a SCHC Core end-point may anticipate the device
   reaction to incorrect messages.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-schc-icmpv6-compression-02"/>
        </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="6" month="July" year="2026"/>
            <abstract>
              <t>   Communications with the Constrained Application Protocol (CoAP) can
   be protected end-to-end at the application-layer by using the
   security protocol Object Security for Constrained RESTful
   Environments (OSCORE).  Under some circumstances, two CoAP endpoints
   need to update their OSCORE keying material before communications can
   securely continue, e.g., due to approaching key usage limits.  This
   document defines Key Update for OSCORE (KUDOS), a lightweight key
   update procedure that two CoAP endpoints can use to update their
   OSCORE keying material by establishing a new OSCORE Security Context.
   Accordingly, this document updates the use of the OSCORE flag bits in
   the CoAP OSCORE Option as well as the protection of CoAP response
   messages with OSCORE.  Also, it deprecates the key update procedure
   specified in Appendix B.2 of RFC 8613.  Therefore, this document
   updates RFC 8613.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-key-update-14"/>
        </reference>
        <reference anchor="I-D.toutain-schc-sid-allocation">
          <front>
            <title>SCHC Sid Allocation</title>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Consultant</organization>
            </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>Institut MINES TELECOM; IMT Atlantique</organization>
            </author>
            <date day="7" month="July" year="2023"/>
            <abstract>
              <t>   YANG SID (Schema Item iDentifier) is a method to identify YANG items
   in constrained environments.  The YANG Data Model for SCHC needs to
   use smaller values and reduce the distance between two sections to
   minimize deltas' size and assure header compression performance.
   Keeping compact values for SCHC can be done when data and identity
   are differentiated.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-toutain-schc-sid-allocation-01"/>
        </reference>
        <reference anchor="I-D.toutain-core-private-sid-translation">
          <front>
            <title>Private SID Translation for CORECONF</title>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>IMT Atlantique</organization>
            </author>
            <date day="31" month="May" year="2026"/>
            <abstract>
              <t>   This document describes a mechanism for translating privately
   assigned YANG SID values to globally allocated SIDs, enabling
   constrained devices to use compact local identifiers while remaining
   interoperable with standard CORECONF implementations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-toutain-core-private-sid-translation-00"/>
        </reference>
        <reference anchor="I-D.barthel-lpwan-oam-schc">
          <front>
            <title>OAM for LPWAN using Static Context Header Compression (SCHC)</title>
            <author fullname="Dominique Barthel" initials="D." surname="Barthel">
              <organization>Orange SA</organization>
            </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>IMT Atlantique</organization>
            </author>
            <author fullname="Arunprabhu Kandasamy" initials="A." surname="Kandasamy">
              <organization>Acklio</organization>
            </author>
            <author fullname="Diego Roberto Dujovne" initials="D. R." surname="Dujovne">
              <organization>Universidad Diego Portales</organization>
            </author>
            <author fullname="Juan-Carlos Zúñiga" initials="J. C." surname="Zúñiga">
              <organization>Cisco</organization>
            </author>
            <date day="27" month="June" year="2023"/>
            <abstract>
              <t>   This document describes ICMPv6 compression with SCHC and how basic
   OAM is performed on Low Power Wide Area Networks (LPWANs) by
   compressing ICMPv6/IPv6 headers and by protecting the LPWAN network
   and the Device from undesirable ICMPv6 traffic.

   With IP protocols now generalizing to constrained networks, users
   expect to be able to Operate, Administer and Maintain them with the
   familiar tools and protocols they already use on less constrained
   networks.

   OAM uses specific messages sent into the data plane to measure some
   parameters of a network.  Most of the time, no explicit values are
   sent is these messages.  Network parameters are obtained from the
   analysis of these specific messages.

   This can be used:

   *  To detect if a host is up or down.

   *  To measure the RTT and its variation over time.

   *  To learn the path used by packets to reach a destination.

   OAM in LPWAN is a little bit trickier since the bandwidth is limited
   and extra traffic added by OAM can introduce perturbation on regular
   transmission.

   Three main scenarios are investigated:

   *  OAM reachability messages coming from internet.  In that case, the
      SCHC core should act as a proxy and handle specifically the OAM
      traffic.

   *  OAM messages initiated by LPWAN devices: They can be anticipated
      by the core SCHC.

   *  OAM error messages coming from internet.  In that case, the SCHC
      core may forward a compressed version to the device.

   The primitive functionalities of OAM are achieved with the ICMPv6
   protocol.

   ICMPv6 defines messages that inform the source of IPv6 packets of
   errors during packet delivery.  It also defines the Echo Request/
   Reply messages that are used for basic network troubleshooting (ping
   command).  ICMPv6 messages are transported on IPv6.

   This document also introduces the notion of actions in a SCHC rule,
   to perform locally some operations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-barthel-lpwan-oam-schc-05"/>
        </reference>
      </references>
    </references>
    <?line 1095?>

<section anchor="full-yang-module">
      <name>Full YANG Module</name>
      <t><xref target="fig-full-module"/> shows the working copy of the "ietf-schc"
module, kept up to date with every change discussed in this
document, taken from the project's working file
("ietf-schc@2026-09-22.yang"), validated with "pyang" (no
errors; see the pre-existing RFC 8407 style findings noted in its
own revision history for remaining gaps).</t>
      <figure anchor="fig-full-module">
        <name>Working Copy of the ietf-schc YANG Module</name>
        <sourcecode type="yang"><![CDATA[
<CODE BEGINS> file "ietf-schc@2026-09-22.yang"
module ietf-schc {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-schc";
  prefix schc;

  organization
    "IETF IPv6 over Low Power Wide-Area Networks (lpwan) Working
     Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/lpwan/about/>
     WG List:  <mailto:lp-wan@ietf.org>
     Editor:   Laurent Toutain
       <mailto:laurent.toutain@imt-atlantique.fr>
     Editor:   Ana Minaburo
       <mailto:ana@ackl.io>";
  description
    "Copyright (c) 2023 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 Revised 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 9363
     (https://www.rfc-editor.org/info/rfc9363); 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.
     ***************************************************************
     Generic data model for the Static Context Header Compression
     Rule for SCHC, based on RFCs 8724 and 8824.  Including
     compression, no-compression, and fragmentation Rules.

     This module is a YANG data model for SCHC Rules (RFCs 8724 and
     8824).  RFC 8724 describes compression Rules in an abstract
     way through a table.
 |-----------------------------------------------------------------|
 |  (FID)            Rule 1                                        |
 |+-------+--+--+--+------------+-----------------+---------------+|
 ||Field 1|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||
 |+-------+--+--+--+------------+-----------------+---------------+|
 ||Field 2|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||
 |+-------+--+--+--+------------+-----------------+---------------+|
 ||...    |..|..|..|   ...      | ...             | ...           ||
 |+-------+--+--+--+------------+-----------------+---------------+|
 ||Field N|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||
 |+-------+--+--+--+------------+-----------------+---------------+|
 |-----------------------------------------------------------------|
     This module specifies a global data model that can be used for
     Rule exchanges or modification.  It specifies both the data
     model format and the global identifiers used to describe some
     operations in fields.
     This data model applies to both compression and fragmentation.";

  revision 2026-09-22 {
    description
      "Wire the 'nature-management' Rule nature into the data
       model: widen 'compression-content-universal''s
       'entry-universal' must to accept 'nature-compression' or
       'nature-management', instead of adding a separate, SID-
       duplicating 'case management' for an identical structure;
       widen 'case compression-universal''s if-feature to
       'compression or management' accordingly; and move
       'management-content' (the 'guard-period' timer) out of
       'list rule' into a new top-level 'context' container, gated
       by 'if-feature management', since it applies to the whole
       SCHC context rather than to a single Rule.";
  }

  revision 2026-08-20 {
    description
      "Add kudos FID defined in draft-ietf-core-oscore-key-update.
       Restore the twenty per-CoAP-option FIDs (fid-coap-option-*)
       that had been removed in an earlier revision, marking them
       'status deprecated' instead of deleting them, per RFC 7950
       Section 11 ('Obsolete definitions MUST NOT be removed from
       published modules') and RFC 8407 Section 4.7 (an object
       SHOULD stay 'deprecated' for at least one year before moving
       to 'obsolete'). They are superseded by Universal Options
       (space-id-coap / universal-value). Rename the '-v2'
       compression-rule-entry/compression-content/case suffix to
       '-universal'. Fix the space-id-coap identity description and
       reference, mistakenly copy-pasted from fid-ipv6-*. Remove the
       unused fid-oscore-base-type identity: it was never used as a
       base by any other identity (the OSCORE suboption FIDs derive
       directly from fid-coap-option) and was never part of a
       published RFC, so it can simply be dropped rather than
       deprecated.";
  }

  revision 2026-05-07 {
    description
      "add two generic fid unused and payload to be used in any
      protocol and for padding and payload definition.";
  }

  revision 2026-04-05 {
    description
      "Alternative: use choice/case to structurally distinguish regular
       fields (field-id only) from universal options (space-id + mandatory
       universal-value).";
  }

  revision 2026-02-24 {
    description
      "
      - Add Management feature to support management of SCHC rules.
      - Introduce RPCs to manage rules.";
  }

  revision 2026-01-12 {
    description 
    "test module to unify universal option and regular entries:
    - all options are identified with a space-id and an option-id.
      For regular fields like fid-ipv6-version the space-id is set 
      to 0.
    - the entries are identified by an index, reducing the keys to
      a single element.
    - introduction of a new function to define the length. This option
      takes an entry-index as parameter to refer to a field indicating
      length.
      for instance fl-token-length is now equivalent to:
      fl-length_byte(index) where index refers to an entry-index for 
      TKL field.";
  }

  revision 2025-11-24 {
    description
      "This version includes new developments in the SCHC architecture
       and RFCs published since the initial version of this module.
       It includes:
       * Data model for Compound Ack as described in RFC9441
       * new Field IDs defined for CoAP OSCORE support as described
       in draft-ietf-schc-8824-update.
       * ICMPv6 FIDs defined in draft-ietf-schc-icmpv6.
       * Universal options for CoAP and other protocols options parsing
         as described in draft-ietf-schc-universal-options.
       * the coap-option FIDs are deprecated in favor of the more generic
         universal-option Field IDs.
      ";
    reference
      "RFC 9363 A YANG Data Model for Static Context Header
                Compression (SCHC)
       RFC 9441  Static Context Header Compression (SCHC) 
                Compound Acknowledgement (ACK)";
  }

  revision 2023-03-01 {
    description
      "Initial version from RFC 9363.";
    reference
      "RFC 9363 A YANG Data Model for Static Context Header
                Compression (SCHC)";
  }


  feature compression {
    description
      "SCHC compression capabilities are taken into account.";
  }

  feature fragmentation {
    description
      "SCHC fragmentation capabilities are taken into account.";
  }

  feature management {
    description
      "SCHC compression capabilities for rule management.";
  }

  // -------------------------
  //  Field ID type definition
  //--------------------------
  // generic value TV definition

  identity space-field-id-base-type {
    description
      "Field ID base type for all fields.";
  }

  identity fid-base-type {
    base space-field-id-base-type;
    description
      "Field ID base type for all fields.";
  }

 identity fid-unused {
    base fid-base-type;
    description
      "Padding field in any protocol.";
  }

  identity fid-payload {
    base fid-base-type;
    description
      "Payload field in any protocol. This field contains the remaining 
       bytes after the header fields.";
  }

  identity fid-ipv6-base-type {
    base fid-base-type;
    description
      "Field ID base type for IPv6 headers described in RFC 8200.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-ipv6-version {
    base fid-ipv6-base-type;
    description
      "IPv6 version field.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-ipv6-trafficclass {
    base fid-ipv6-base-type;
    description
      "IPv6 Traffic Class field.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-ipv6-trafficclass-ds {
    base fid-ipv6-trafficclass;
    description
      "IPv6 Traffic Class field: Diffserv field.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification,
       RFC 3168 The Addition of Explicit Congestion Notification
                (ECN) to IP";
  }

  identity fid-ipv6-trafficclass-ecn {
    base fid-ipv6-trafficclass;
    description
      "IPv6 Traffic Class field: ECN field.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification,
       RFC 3168 The Addition of Explicit Congestion Notification
                (ECN) to IP";
  }

  identity fid-ipv6-flowlabel {
    base fid-ipv6-base-type;
    description
      "IPv6 Flow Label field.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-ipv6-payload-length {
    base fid-ipv6-base-type;
    description
      "IPv6 Payload Length field.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-ipv6-nextheader {
    base fid-ipv6-base-type;
    description
      "IPv6 Next Header field.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-ipv6-hoplimit {
    base fid-ipv6-base-type;
    description
      "IPv6 Next Header field.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-ipv6-devprefix {
    base fid-ipv6-base-type;
    description
      "Corresponds to either the source address or the destination
       address prefix of RFC 8200 depending on whether it is an
       uplink or a downlink message.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-ipv6-deviid {
    base fid-ipv6-base-type;
    description
      "Corresponds to either the source address or the destination
       address IID of RFC 8200 depending on whether it is an uplink
       or a downlink message.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-ipv6-appprefix {
    base fid-ipv6-base-type;
    description
      "Corresponds to either the source address or the destination
       address prefix of RFC 8200 depending on whether it is an
       uplink or a downlink message.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-ipv6-appiid {
    base fid-ipv6-base-type;
    description
      "Corresponds to either the source address or the destination
       address IID of RFC 8200 depending on whether it is an uplink
       or a downlink message.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-udp-base-type {
    base fid-base-type;
    description
      "Field ID base type for UDP headers described in RFC 768.";
    reference
      "RFC 768 User Datagram Protocol";
  }

  identity fid-udp-dev-port {
    base fid-udp-base-type;
    description
      "UDP source or destination port, if uplink or downlink
       communication, respectively.";
    reference
      "RFC 768 User Datagram Protocol";
  }

  identity fid-udp-app-port {
    base fid-udp-base-type;
    description
      "UDP destination or source port, if uplink or downlink
       communication, respectively.";
    reference
      "RFC 768 User Datagram Protocol";
  }

  identity fid-udp-length {
    base fid-udp-base-type;
    description
      "UDP length.";
    reference
      "RFC 768 User Datagram Protocol";
  }

  identity fid-udp-checksum {
    base fid-udp-base-type;
    description
      "UDP length.";
    reference
      "RFC 768 User Datagram Protocol";
  }

  identity fid-coap-base-type {
    base fid-base-type;
    description
      "Field ID base type for UDP headers described.";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-version {
    base fid-coap-base-type;
    description
      "CoAP version.";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-type {
    base fid-coap-base-type;
    description
      "CoAP type.";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-tkl {
    base fid-coap-base-type;
    description
      "CoAP token length.";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-code {
    base fid-coap-base-type;
    description
      "CoAP code.";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-code-class {
    base fid-coap-code;
    description
      "CoAP code class.";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-code-detail {
    base fid-coap-code;
    description
      "CoAP code detail.";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-mid {
    base fid-coap-base-type;
    description
      "CoAP message ID.";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-token {
    base fid-coap-base-type;
    description
      "CoAP token.";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option {
    base fid-coap-base-type;
    description
      "Generic CoAP option.";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-if-match {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option If-Match. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 1).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-uri-host {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Uri-Host. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 3).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-etag {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option ETag. Deprecated in favor of Universal Options
       (space-id-coap / universal-value = 4).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-if-none-match {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option if-none-match. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 5).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-observe {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Observe. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 6).";
    reference
      "RFC 7641 Observing Resources in the Constrained Application
                Protocol (CoAP)";
  }

  identity fid-coap-option-uri-port {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Uri-Port. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 7).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-location-path {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Location-Path. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 8).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-uri-path {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Uri-Path. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 11).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-content-format {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Content Format. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 12).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-max-age {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Max-Age. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 14).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-uri-query {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Uri-Query. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 15).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-accept {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Accept. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 17).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-location-query {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Location-Query. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 20).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-block2 {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Block2. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 23).";
    reference
      "RFC 7959 Block-Wise Transfers in the Constrained Application
                Protocol (CoAP)";
  }

  identity fid-coap-option-block1 {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Block1. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 27).";
    reference
      "RFC 7959 Block-Wise Transfers in the Constrained Application
                Protocol (CoAP)";
  }

  identity fid-coap-option-size2 {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Size2. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 28).";
    reference
      "RFC 7959 Block-Wise Transfers in the Constrained Application
                Protocol (CoAP)";
  }

  identity fid-coap-option-proxy-uri {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Proxy-Uri. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 35).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-proxy-scheme {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Proxy-Scheme. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 39).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-size1 {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option Size1. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 60).";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-no-response {
    base fid-coap-option;
    status deprecated;
    description
      "CoAP option No response. Deprecated in favor of Universal
       Options (space-id-coap / universal-value = 258).";
    reference
      "RFC 7967 Constrained Application Protocol (CoAP) Option for
                No Server Response";
  }

  identity fid-coap-option-oscore-flags {
    base fid-coap-option;
    description
      "CoAP option OSCORE flags.";
    reference
      "RFC 8824 Static Context Header Compression (SCHC) for the
                Constrained Application Protocol (CoAP) (see
                Section 6.4)";
  }

   identity fid-coap-option-oscore-flags-flagbits {
    base fid-coap-option-oscore-flags;
    description
      "First 5 bits of the OSCORE flags field forming flags subfield.";
    reference
      "RFC 8824 Static Context Header Compression (SCHC) for the
                Constrained Application Protocol (CoAP) (see
                Section 6.4)";
  }

  identity fid-coap-option-oscore-flags-n {
    base fid-coap-option-oscore-flags;
    description
      "last 3 bits of the OSCORE flags field giving the length 
      of Partial IV.";
    reference
      "RFC 8824 Static Context Header Compression (SCHC) for the
                Constrained Application Protocol (CoAP) (see
                Section 6.4)";
  }


  identity fid-coap-option-oscore-piv {
    base fid-coap-option;
    description
      "CoAP option OSCORE Partial IV.";
    reference
      "RFC 8824 Static Context Header Compression (SCHC) for the
                Constrained Application Protocol (CoAP) (see
                Section 6.4)";
  }

  identity fid-coap-option-oscore-kid {
    base fid-coap-option;
    description
      "CoAP option OSCORE Key ID.";
    reference
      "RFC 8824 Static Context Header Compression (SCHC) for the
                Constrained Application Protocol (CoAP) (see
                Section 6.4)";
  }

  identity fid-coap-option-oscore-kidctx {
    base fid-coap-option;
    description
      "CoAP option OSCORE Key ID Context.";
    reference
      "RFC 8824 Static Context Header Compression (SCHC) for the
                Constrained Application Protocol (CoAP)(see
                Section 6.4)";
  }

  identity fid-coap-option-kudos-x {
    base fid-coap-option;
    description
      "x field contained in the kudos option defined in 
      draft-ietf-core-oscore-key-update.";
    reference
      "draft-ietf-core-oscore-key-update";
  }

  identity fid-coap-option-kudos-x-flagbits {
    base fid-coap-option-kudos-x;
    description
      "4 first bits of the x field in the kudos option defined in 
      draft-ietf-core-oscore-key-update.";
    reference
      "draft-ietf-core-oscore-key-update";
  }

  identity fid-coap-option-kudos-x-m {
    base fid-coap-option-kudos-x;
    description
      "4 last bits of the x field in the kudos option defined in 
      draft-ietf-core-oscore-key-update.";
    reference
      "draft-ietf-core-oscore-key-update";
  }

  identity fid-coap-option-kudos-nonce {
    base fid-coap-option;
    description
      "CoAP option kudos carrying the nonce.";
    reference
      "draft-ietf-core-oscore-key-update";
  }


 identity fid-icmpv6-base-type {
   base schc:fid-base-type;
   description
     "Field IP base type for ICMPv6 headers described in RFC 4443";
   reference
     "RFC 4443   Internet Control Message Protocol (ICMPv6)
                 for the Internet Protocol Version 6 (IPv6)
                 Specification";
 }
 
  identity fid-icmpv6-type {
    base fid-icmpv6-base-type;
    description
      "ICMPv6 code field present in all ICMPv6 messages.";
 }

 identity fid-icmpv6-code {
   base fid-icmpv6-base-type;
   description
     "ICMPv6 code field present in all ICMPv6 messages.";
 }

 identity fid-icmpv6-checksum {
   base fid-icmpv6-base-type;
   description
     "ICMPv6 checksum field present in all ICMPv6 messages.";
 }

 identity fid-icmpv6-mtu {
   base fid-icmpv6-base-type;
   description
     "ICMPv6 MTU, present in Packet Too Big message.";
 }

 identity fid-icmpv6-pointer {
   base fid-icmpv6-base-type;
   description
     "ICMPv6 Pointer, present in Parameter Problem message.";
 }

 identity fid-icmpv6-identifier {
   base fid-icmpv6-base-type;
   description
     "ICMPv6 identifier field, present in Echo Request/Reply
     message.";
 }

 identity fid-icmpv6-sequence {
   base fid-icmpv6-base-type;
   description
     "ICMPv6 sequence number field, present in Echo Request/Reply
      message.";
 }

 identity fid-icmpv6-payload {
   base fid-icmpv6-base-type;
   description
     "ICMPv6 payload following ICMPv6 header.
      If payload is empty, this field exists with a length of 0.";
 }

  //----------------------------------
  // Universal Option space IDs
  //----------------------------------

  identity space-id-base-type {
    base schc:space-field-id-base-type;
    description
      "Base identity for a Universal Option space. Several
       protocols define options (e.g. CoAP); each such protocol
       is identified by an identity derived from this base type.";
  }

  identity space-id-coap {
    base space-id-base-type;
    description
      "Space ID identifying the CoAP option space.";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  //----------------------------------
  // Field Length type definition
  //----------------------------------

  identity fl-base-type {
    description
      "Used to extend Field Length functions.";
  }

  identity fl-variable {
    base fl-base-type;
    description
      "Residue length in bytes is sent as defined for CoAP.";
    reference
      "RFC 8824 Static Context Header Compression (SCHC) for the
                Constrained Application Protocol (CoAP) (see
                Section 5.3)";
  }

 identity fl-variable-bits {
    base fl-base-type;
    description
      "Residue length in bits is sent as defined for CoAP.";
    reference
      "NOT YET DEFINED IN RFCs. This function is a generalization of fl-variable to support bit-level length definition.";
  }


  identity fl-token-length {
    base fl-base-type;
    description
      "Residue length in bytes is sent as defined for CoAP.";
    reference
      "RFC 8824 Static Context Header Compression (SCHC) for the
                Constrained Application Protocol (CoAP) (see
                Section 4.5)";
  }

  identity fl-length-bytes {
    base fl-base-type;

    description "This function return the length a field 
    by its index in bytes. This is a generalation of fl-token-length.";
  }

  identity fl-length-bits {
    base fl-base-type;

    description "This function return the length in bits of a field 
    by its index in bits. ";
  }

  identity fl-remaining {
    base fl-base-type;
    
    description
      "Field length is not explicitly carried in the Compression Residue.
      This function is used for a field that extends to the end of the
      SCHC packet, such as a trailing payload.";
}

  //---------------------------------
  // Direction Indicator type
  //---------------------------------

  identity di-base-type {
    description
      "Used to extend Direction Indicators.";
  }

  identity di-bidirectional {
    base di-base-type;
    description
      "Direction Indicator of bidirectionality.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.1)";
  }

  identity di-up {
    base di-base-type;
    description
      "Direction Indicator of uplink.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.1)";
  }

  identity di-down {
    base di-base-type;
    description
      "Direction Indicator of downlink.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.1)";
  }

  //----------------------------------
  // Matching Operator type definition
  //----------------------------------

  identity mo-base-type {
    description
      "Matching Operator: used in the Rule selection process
       to check if a Target Value matches the field's value.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.2)";
  }

  identity mo-equal {
    base mo-base-type;
    description
      "equal MO.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.3)";
  }
  

  identity mo-ignore {
    base mo-base-type;
    description
      "ignore MO.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.3)";
  }

  identity mo-msb {
    base mo-base-type;
    description
      "MSB MO.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.3)";
  }

  identity mo-match-mapping {
    base mo-base-type;
    description
      "match-mapping MO.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.3)";
  }

  identity mo-rule-match {
    base schc:mo-base-type;
    description
      "Macthing operator return true, if the TV matches a rule
        keeping UP and DOWN direction.";
 }

 identity mo-rev-rule-match {
   base schc:mo-base-type;
   description
     "Macthing operator return true, if the TV matches a rule
      reversing UP and DOWN direction.";
 }
  //------------------------------
  // CDA type definition
  //------------------------------

  identity cda-base-type {
    description
      "Compression Decompression Actions. Specify the action to
       be applied to the field's value in a specific Rule.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.2)";
  }

  identity cda-not-sent {
    base cda-base-type;
    description
      "not-sent CDA.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.4)";
  }

  identity cda-value-sent {
    base cda-base-type;
    description
      "value-sent CDA.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.4)";
  }

  identity cda-lsb {
    base cda-base-type;
    description
      "Least Significant Bit (LSB) CDA.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.4)";
  }

  identity cda-mapping-sent {
    base cda-base-type;
    description
      "mapping-sent CDA.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.4)";
  }

  identity cda-compute {
    base cda-base-type;
    description
      "compute-* CDA.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.4)";
  }

  identity cda-deviid {
    base cda-base-type;
    description
      "DevIID CDA.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.4)";
  }

  identity cda-appiid {
    base cda-base-type;
    description
      "Application Interface Identifier (AppIID) CDA.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context
                Header Compression and Fragmentation (see
                Section 7.4)";
  }

 identity cda-compress-sent {
   base schc:cda-base-type;
   description
     "Send a compressed version of TV keeping UP and
      DOWN direction.";
 }

 identity cda-rev-compress-sent {
   base schc:cda-base-type;
   description
     "Send a compressed version of TV reversing UP and
      DOWN direction.";
 }

  // -- type definition

  typedef space-field-id-type {
    type identityref {
      base space-field-id-base-type;
    }
    description
      "Field ID generic type.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  typedef fid-type {
    type identityref {
      base fid-base-type;
    }
    description
      "Field ID type for regular protocol fields (IPv6, UDP, CoAP, etc.).
       Used in the regular-field case of compression-rule-entry.";
  }

  typedef space-id-type {
    type identityref {
      base space-id-base-type;
    }
    description
      "Space ID type for universal option spaces (CoAP options, etc.).
       Used in the universal-option case of compression-rule-entry.";
  }

  typedef fl-type {
    type identityref {
      base fl-base-type;
    }
    description
      "Function used to indicate Field Length.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  typedef di-type {
    type identityref {
      base di-base-type;
    }
    description
      "Direction in LPWAN network: up when emitted by the device,
       down when received by the device, or bi when emitted or
       received by the device.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  typedef mo-type {
    type identityref {
      base mo-base-type;
    }
    description
      "Matching Operator (MO) to compare field values with
       Target Values.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  typedef cda-type {
    type identityref {
      base cda-base-type;
    }
    description
      "Compression Decompression Action to compress or
       decompress a field.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  // -- FRAGMENTATION TYPE
  // -- fragmentation modes

  identity fragmentation-mode-base-type {
    description
      "Define the fragmentation mode.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity fragmentation-mode-no-ack {
    base fragmentation-mode-base-type;
    description
      "No-ACK mode.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity fragmentation-mode-ack-always {
    base fragmentation-mode-base-type;
    description
      "ACK-Always mode.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity fragmentation-mode-ack-on-error {
    base fragmentation-mode-base-type;
    description
      "ACK-on-Error mode.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  typedef fragmentation-mode-type {
    type identityref {
      base fragmentation-mode-base-type;
    }
    description
      "Define the type used for fragmentation mode in Rules.";
  }

  // -- Ack behavior

  identity ack-behavior-base-type {
    description
      "Define when to send an Acknowledgment.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity ack-behavior-after-all-0 {
    base ack-behavior-base-type;
    description
      "Fragmentation expects ACK after sending All-0 fragment.";
  }

  identity ack-behavior-after-all-1 {
    base ack-behavior-base-type;
    description
      "Fragmentation expects ACK after sending All-1 fragment.";
  }

  identity ack-behavior-by-layer2 {
    base ack-behavior-base-type;
    description
      "Layer 2 defines when to send an ACK.";
  }

  typedef ack-behavior-type {
    type identityref {
      base ack-behavior-base-type;
    }
    description
      "Define the type used for ACK behavior in Rules.";
  }

  // -- All-1 with data types

  identity all-1-data-base-type {
    description
      "Type to define when to send an Acknowledgment message.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity all-1-data-no {
    base all-1-data-base-type;
    description
      "All-1 contains no tiles.";
  }

  identity all-1-data-yes {
    base all-1-data-base-type;
    description
      "All-1 MUST contain a tile.";
  }

  identity all-1-data-sender-choice {
    base all-1-data-base-type;
    description
      "Fragmentation process chooses to send tiles or not in All-1.";
  }

  typedef all-1-data-type {
    type identityref {
      base all-1-data-base-type;
    }
    description
      "Define the type used for All-1 format in Rules.";
  }

  // -- RCS algorithm types

  identity rcs-algorithm-base-type {
    description
      "Identify which algorithm is used to compute RCS.
       The algorithm also defines the size of the RCS field.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity rcs-crc32 {
    base rcs-algorithm-base-type;
    description
      "CRC32 defined as default RCS in RFC 8724.  This RCS is
       4 bytes long.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  typedef rcs-algorithm-type {
    type identityref {
      base rcs-algorithm-base-type;
    }
    description
      "Define the type for RCS algorithm in Rules.";
  }

  // --------- COMPOUND ACK TYPE DEFINITION ---------

  identity bitmap-format-base-type {
    description
      "Define how the bitmap is formed in ACK messages. ";
    reference
       "RFC9441 Static Context Header Compression (SCHC)
                 Compound Acknowledgement (ACK)";
  }

  identity bitmap-RFC8724 {
    base bitmap-format-base-type;
    description
      "Bitmap by default as defined in RFC 8724.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation.
       RFC9441 Static Context Header Compression (SCHC)
                 Compound Acknowledgement (ACK)";
  }

  identity bitmap-compound-ack {
    base bitmap-format-base-type;
    description
      "Compound ACK allows several bitmaps in an ACK message.";
    reference
       "RFC9441 Static Context Header Compression (SCHC)
                 Compound Acknowledgement (ACK)";  }

  typedef bitmap-format-type {
    type identityref {
      base bitmap-format-base-type;
    }
    description
      "Type of bitmap used in Rules.";
    reference
       "RFC9441 Static Context Header Compression (SCHC)
                 Compound Acknowledgement (ACK)";
  }

  // --------  RULE ENTRY DEFINITION ------------

  grouping tv-struct {
    description
      "Defines the Target Value element.  If the header field
       contains a text, the binary sequence uses the same encoding.
       field-id allows the conversion to the appropriate type.";
    leaf index {
      type uint16;
      description
        "Index gives the position in the matching list.  If only one
         element is present, index is 0.  Otherwise, index is the
         order in the matching list, starting at 0.";
    }
    leaf value {
      type binary;
      description
        "Target Value content as an untyped binary value.";
    }
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  grouping compression-rule-entry {
    status deprecated;
    description
      "These entries define a compression entry (i.e., a line),
       as defined in RFC 8724.
 +-------+--+--+--+------------+-----------------+---------------+
 |Field 1|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act|
 +-------+--+--+--+------------+-----------------+---------------+
       An entry in a compression Rule is composed of 7 elements:
       - Field ID: the header field to be compressed
       - Field Length : either a positive integer or a function
       - Field Position: a positive (and possibly equal to 0)
         integer
       - Direction Indicator: an indication in which direction the
         compression and decompression process is effective
       - Target Value: a value against which the header field is
         compared
       - Matching Operator: the comparison operation and optional
         associate parameters
       - Comp./Decomp. Action: the compression or decompression
         action and optional parameters

       Deprecated in favor of 'compression-rule-entry-universal', which
       adds support for Universal Options.";
    reference
      "RFC 9363 A YANG Data Model for Static Context Header
                Compression (SCHC)";
    leaf field-id {
      type schc:fid-type;
      mandatory true;
      description
        "Field ID, identify a field in the header with a YANG
         identity reference.";
    }
    leaf field-length {
      type union {
      type uint8;
      type schc:fl-type;
        }
      mandatory true;
      description
        "Field Length, expressed in number of bits if the length is
         known when the Rule is created or through a specific
         function if the length is variable.";
    }
    leaf field-position {
      type uint8;
      mandatory true;
      description
        "Field Position in the header is an integer.  Position 1
         matches the first occurrence of a field in the header,
         while incremented position values match subsequent
         occurrences.
         Position 0 means that this entry matches a field
         irrespective of its position of occurrence in the
         header.
         Be aware that the decompressed header may have
         position-0 fields ordered differently than they
         appeared in the original packet.";
    }
    leaf direction-indicator {
      type schc:di-type;
      mandatory true;
      description
        "Direction Indicator, indicate if this field must be
         considered for Rule selection or ignored based on the
         direction (bidirectional, only uplink, or only
         downlink).";
    }
    list target-value {
      key "index";
      uses tv-struct;
      description
        "A list of values to compare with the header field value.
         If Target Value is a singleton, position must be 0.
         For use as a matching list for the mo-match-mapping Matching
         Operator, index should take consecutive values starting
         from 0.";
    }
    leaf matching-operator {
      type schc:mo-type;
      must "../target-value or derived-from-or-self(.,
                                                   'mo-ignore')" {
        error-message
          "mo-equal, mo-msb, and mo-match-mapping need target-value";
        description
          "target-value is not required for mo-ignore.";
      }
      must "not (derived-from-or-self(., 'mo-msb')) or
            ../matching-operator-value" {
        error-message "mo-msb requires length value";
      }
      mandatory true;
      description
        "MO: Matching Operator.";
      reference
        "RFC 8724 SCHC: Generic Framework for Static Context Header
                  Compression and Fragmentation (see Section 7.3)";
    }
    list matching-operator-value {
      key "index";
      uses tv-struct;
      description
        "Matching Operator Arguments, based on TV structure to allow
         several arguments.
         In RFC 8724, only the MSB Matching Operator needs arguments
         (a single argument, which is the number of most significant
         bits to be matched).";
    }
    leaf comp-decomp-action {
      type schc:cda-type;
      must "../target-value or
                derived-from-or-self(., 'cda-value-sent') or
                derived-from-or-self(., 'cda-compute') or
                derived-from-or-self(., 'cda-appiid') or
                derived-from-or-self(., 'cda-deviid')" {
        error-message
          "cda-not-sent, cda-lsb, and cda-mapping-sent need
           target-value";
        description
          "target-value is not required for some CDA.";
      }
      mandatory true;
      description
        "CDA: Compression Decompression Action.";
      reference
        "RFC 8724 SCHC: Generic Framework for Static Context Header
                  Compression and Fragmentation (see Section 7.4)";
    }
    list comp-decomp-action-value {
      key "index";
      uses tv-struct;
      description
        "CDA arguments, based on a TV structure, in order to allow
         for several arguments.  The CDAs specified in RFC 8724
         require no argument.";
    }
  }

  grouping compression-rule-entry-universal {
    description
      "These entries define a compression entry (i.e., a line),
       as defined in RFC 8724. The format has been generalized
       to include universal options.

       An entry in a compression Rule is composed of 7 elements:
       - entry-index: position in the rule.
       - space field ID: the identityref of a specific field or 
         space ID followed by an universal value.
       - universal-value: the value associated to the space field ID to identify
         a specific field in the space. For regular fields, this
         value is 0 and the space field ID is the field ID. For
         universal options, the space field ID identifies the type
         of option and the universal value identifies the specific
         option.
       - Field Length : either a positive integer or a function
       - Field Position: a positive (and possibly equal to 0)
         integer
       - Direction Indicator: an indication in which direction the
         compression and decompression process is effective
       - Target Value: a value against which the header field is
         compared
       - Matching Operator: the comparison operation and optional
         associate parameters
       - Comp./Decomp. Action: the compression or decompression
         action and optional parameters
      ";

    leaf entry-index {
      type uint16;

      description 
        "Sequential position of the entry in the user-ordered Rule list.";
    }

    choice field-or-space {
      mandatory true;
      description
        "Distinguishes a regular protocol field from a universal option.
         Exactly one case must be present:
         - regular-field: a standard protocol field identified by a field ID
           (e.g., fid-ipv6-version, fid-udp-dev-port).
         - universal-option: a generic option identified by a space ID
           (e.g., space-id-coap) plus a numeric option value (e.g., the
           CoAP option number).";

      case regular-field {
        description
          "The entry refers to a regular protocol field.
           No universal-value is needed.";
        leaf field-id {
          type schc:fid-type;
          mandatory true;
          description
            "Field ID of a regular protocol field.";
        }
      }

      case universal-option {
        description
          "The entry refers to a universal option within a given space.
           Both space-id and universal-value are required.";
        leaf space-id {
          type schc:space-id-type;
          mandatory true;
          description
            "Space ID identifying the protocol option space
             (e.g., space-id-coap for CoAP options).";
        }
        leaf universal-value {
          type uint64;
          mandatory true;
          description
            "Numeric value identifying the specific option within the space
             (e.g., the CoAP option number).";
        }
      } // case universal-option
    } // choice field-or-space

    leaf field-length {
      type union {
      type uint8;
      type schc:fl-type;
        }
      mandatory true;
      description
        "Field Length, expressed in number of bits if the length is
         known when the Rule is created or through a specific
         function if the length is variable.";
    }
    leaf field-length-value {
      type uint16;

      description 
      "Argument used by Field Length functions. For
      fl-length-bytes and fl-length-bits, this value is the
      entry-index of the Rule entry whose numerical field value
      specifies the length.";    
      }
    leaf field-position {
      type uint8;
      mandatory true;
      description
        "Field Position in the header is an integer.  Position 1
         matches the first occurrence of a field in the header,
         while incremented position values match subsequent
         occurrences.
         Position 0 means that this entry matches a field
         irrespective of its position of occurrence in the
         header.
         Be aware that the decompressed header may have
         position-0 fields ordered differently than they
         appeared in the original packet.";
    }
    leaf direction-indicator {
      type schc:di-type;
      mandatory true;
      description
        "Direction Indicator, indicate if this field must be
         considered for Rule selection or ignored based on the
         direction (bidirectional, only uplink, or only
         downlink).";
    }
    list target-value {
      key "index";
      uses tv-struct;
      description
        "A list of values to compare with the header field value.
         If Target Value is a singleton, position must be 0.
         For use as a matching list for the mo-match-mapping Matching
         Operator, index should take consecutive values starting
         from 0.";
    }
    leaf matching-operator {
      type schc:mo-type;
      must "../target-value or derived-from-or-self(.,
                                                   'mo-ignore')" {
        error-message
          "mo-equal, mo-msb, and mo-match-mapping need target-value";
        description
          "target-value is not required for mo-ignore.";
      }
      must "not (derived-from-or-self(., 'mo-msb')) or
            ../matching-operator-value" {
        error-message "mo-msb requires length value";
      }
      mandatory true;
      description
        "MO: Matching Operator.";
      reference
        "RFC 8724 SCHC: Generic Framework for Static Context Header
                  Compression and Fragmentation (see Section 7.3)";
    }
    list matching-operator-value {
      key "index";
      uses tv-struct;
      description
        "Matching Operator Arguments, based on TV structure to allow
         several arguments.
         In RFC 8724, only the MSB Matching Operator needs arguments
         (a single argument, which is the number of most significant
         bits to be matched).";
    }
    leaf comp-decomp-action {
      type schc:cda-type;
      must "../target-value or
                derived-from-or-self(., 'cda-value-sent') or
                derived-from-or-self(., 'cda-compute') or
                derived-from-or-self(., 'cda-appiid') or
                derived-from-or-self(., 'cda-deviid')" {
        error-message
          "cda-not-sent, cda-lsb, and cda-mapping-sent need
           target-value";
        description
          "target-value is not required for some CDA.";
      }
      mandatory true;
      description
        "CDA: Compression Decompression Action.";
      reference
        "RFC 8724 SCHC: Generic Framework for Static Context Header
                  Compression and Fragmentation (see Section 7.4)";
    }
    list comp-decomp-action-value {
      key "index";
      uses tv-struct;
      description
        "CDA arguments, based on a TV structure, in order to allow
         for several arguments.  The CDAs specified in RFC 8724
         require no argument.";
    }
  }


  // --Rule nature

  identity nature-base-type {
    description
      "A Rule, identified by its RuleID, is used for a single
       purpose.  RFC 8724 defines 3 natures:
       compression, no-compression, and fragmentation.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation (see Section 6)";
  }

  identity nature-compression {
    base nature-base-type;
    description
      "Identify a compression Rule.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation (see Section 6)";
  }

  identity nature-no-compression {
    base nature-base-type;
    description
      "Identify a no-compression Rule.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation (see Section 6)";
  }

  identity nature-fragmentation {
    base nature-base-type;
    description
      "Identify a fragmentation Rule.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation (see Section 6)";
  }

  typedef nature-type {
    type identityref {
      base nature-base-type;
    }
    description
      "Defines the type to indicate the nature of the Rule.";
  }

  identity nature-management {
    base nature-base-type;
    description
      "Identify a management Rule. Management Rules use the
     compression Rule structure to operate on the SCHC Context.";
  /* Reference to be added when the Rule Management specification
     is available. */
  }

  identity action-base-type {
    description
      "Action applied to a packet matching a compression Rule, once
       compression has been performed (or before decompression is
       performed in the other direction). The default behavior of
       RFC 8724 is to hand the SCHC Packet over to the lower layer;
       other actions allow an intermediate entity, typically the
       SCHC gateway, to process the packet locally instead.";
    reference
      "draft-barthel-lpwan-oam-schc-05 OAM for LPWAN using Static
                Context Header Compression (SCHC) (see Section 5)";
  }

  identity action-forward {
    base action-base-type;
    description
      "The packet is handed over to the lower layer. This is the
       default behavior specified in RFC 8724.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity action-proxy-ping {
    base action-base-type;
    description
      "The packet is not handed over to the lower layer but
       processed locally by a ping proxy, which answers the ICMPv6
       Echo Request on behalf of the Device.";
    reference
      "draft-barthel-lpwan-oam-schc-05 OAM for LPWAN using Static
                Context Header Compression (SCHC) (see Section 5)";
  }

  typedef action-type {
    type identityref {
      base action-base-type;
    }
    description
      "Defines the type to indicate the action associated with a
       compression Rule.";
  }

  grouping compression-content {
    status deprecated;
    list entry {
      status deprecated;
      must "derived-from-or-self(../rule-nature,
                                        'nature-compression')" {
        error-message "Rule nature must be compression";
      }
      key "field-id field-position direction-indicator";

      uses compression-rule-entry {
        status deprecated;
      }
      description
        "A compression Rule is a list of Rule entries, each
         describing a header field.  An entry is identified
         through a field-id, its position in the packet, and
         its direction.";
    }

    description
      "Define a compression Rule composed of a list of entries.
       Deprecated in favor of 'compression-content-universal', which
       adds support for Universal Options.";
    reference
      "RFC 9363 A YANG Data Model for Static Context Header
                Compression (SCHC)";
  }

  grouping compression-content-universal {
    list entry-universal {
      must "derived-from-or-self(../rule-nature,
                                  'nature-compression') or
            derived-from-or-self(../rule-nature,
                                  'nature-management')" {
        error-message
          "Rule nature must be compression or management";
      }
      key "entry-index";
      ordered-by user;

      uses compression-rule-entry-universal;
      description
        "A compression Rule is a list of Rule entries, each
         describing a header field or Universal Option. An entry
         is identified by its entry-index.";
    }

    leaf action {
      type action-type;
      default "schc:action-forward";
      description
        "Action to be applied to a packet matching this Rule, after
         compression or before decompression. When absent, the
         packet is sent to the lower layer as specified in
         RFC 8724.";
    }

    list action-value {
      key "index";
      uses tv-struct;
      description
        "Parameters associated with the action, based on a TV
         structure, in order to allow for several arguments.
         'action-forward' requires no argument.";
    }

    description
      "Define a compression Rule composed of a list of entries,
       using the Universal-Option-aware 'compression-rule-entry-universal'.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  grouping fragmentation-content {
    description
      "This grouping defines the fragmentation parameters for
       all the modes (No ACK, ACK Always, and ACK on Error) specified
       in RFC 8724.";
    leaf fragmentation-mode {
      type schc:fragmentation-mode-type;
      must "derived-from-or-self(../rule-nature,
                                        'nature-fragmentation')" {
        error-message "Rule nature must be fragmentation";
      }
      mandatory true;
      description
        "Which fragmentation mode is used (No ACK, ACK Always, or
         ACK on Error).";
    }
    leaf l2-word-size {
      type uint8;
      default "8";
      description
        "Size, in bits, of the Layer 2 Word.";
    }
    leaf direction {
      type schc:di-type;
      must "derived-from-or-self(., 'di-up') or
            derived-from-or-self(., 'di-down')" {
        error-message
          "Direction for fragmentation Rules are up or down.";
      }
      mandatory true;
      description
        "MUST be up or down, bidirectional MUST NOT be used.";
    }
    // SCHC Frag header format
    leaf dtag-size {
      type uint8;
      default "0";
      description
        "Size, in bits, of the DTag field (T variable from
         RFC 8724).";
    }
    leaf w-size {
      when "derived-from-or-self(../fragmentation-mode,
                                'fragmentation-mode-ack-on-error')
            or
            derived-from-or-self(../fragmentation-mode,
                                'fragmentation-mode-ack-always') ";
      type uint8;
      description
        "Size, in bits, of the window field (M variable from
         RFC 8724).";
    }
    leaf fcn-size {
      type uint8;
      mandatory true;
      description
        "Size, in bits, of the FCN field (N variable from
         RFC 8724).";
    }
    leaf rcs-algorithm {
      type rcs-algorithm-type;
      default "schc:rcs-crc32";
      description
        "Algorithm used for RCS.  The algorithm specifies the RCS
         size.";
    }
    // SCHC fragmentation protocol parameters
    leaf maximum-packet-size {
      type uint16;
      default "1280";
      description
        "When decompression is done, packet size must not
         strictly exceed this limit, expressed in bytes.";
    }
    leaf window-size {
      type uint16;
      description
        "By default, if not specified, the FCN value is 2^w-size - 1.
         This value should not be exceeded.  Possible FCN values
         are between 0 and window-size - 1.";
    }
    leaf max-interleaved-frames {
      type uint8;
      default "1";
      description
        "Maximum of simultaneously fragmented frames.  Maximum value
         is 2^dtag-size.  All DTag values can be used, but more than
         max-interleaved-frames MUST NOT be active at any time.";
    }
    container inactivity-timer {
      leaf ticks-duration {
        type uint8;
        default "20";
        description
          "Duration of one tick in microseconds:
              2^ticks-duration/10^6 = 1.048s.";
      }
      leaf ticks-numbers {
        type uint16 {
          range "0..max";
        }
        description
          "Timer duration = ticks-numbers*2^ticks-duration / 10^6.";
      }

      description
        "Duration in seconds of the Inactivity Timer; 0 indicates
         that the timer is disabled.

         Allows a precision from microsecond to year by sending the
         tick-duration value. For instance:

        tick-duration: smallest value   <-> highest value

        20: 00y 000d 00h 00m 01s.048575<->00y 000d 19h 05m 18s.428159
        21: 00y 000d 00h 00m 02s.097151<->00y 001d 14h 10m 36s.856319
        22: 00y 000d 00h 00m 04s.194303<->00y 003d 04h 21m 13s.712639
        23: 00y 000d 00h 00m 08s.388607<->00y 006d 08h 42m 27s.425279
        24: 00y 000d 00h 00m 16s.777215<->00y 012d 17h 24m 54s.850559
        25: 00y 000d 00h 00m 33s.554431<->00y 025d 10h 49m 49s.701119

         Note that the smallest value is also the incrementation
         step.";
    }
    container retransmission-timer {
      leaf ticks-duration {
        type uint8;
        default "20";
        description
          "Duration of one tick in microseconds:
              2^ticks-duration/10^6 = 1.048s.";
      }
      leaf ticks-numbers {
        type uint16 {
          range "1..max";
        }
        description
          "Timer duration = ticks-numbers*2^ticks-duration / 10^6.";
      }
      when "derived-from-or-self(../fragmentation-mode,
                                'fragmentation-mode-ack-on-error')
            or
            derived-from-or-self(../fragmentation-mode,
                                'fragmentation-mode-ack-always') ";
      description
        "Duration in seconds of the Retransmission Timer.
         See the Inactivity Timer.";
    }
    leaf max-ack-requests {
      when "derived-from-or-self(../fragmentation-mode,
                                'fragmentation-mode-ack-on-error')
            or
            derived-from-or-self(../fragmentation-mode,
                                'fragmentation-mode-ack-always') ";
      type uint8 {
        range "1..max";
      }
      description
        "The maximum number of retries for a specific SCHC ACK.";
    }
    choice mode {
      case no-ack;
      case ack-always;
      case ack-on-error {
        leaf tile-size {
          when "derived-from-or-self(../fragmentation-mode,
                             'fragmentation-mode-ack-on-error')";
          type uint8;
          description
            "Size, in bits, of tiles.  If not specified or set to 0,
             tiles fill the fragment.";
        }
        leaf tile-in-all-1 {
          when "derived-from-or-self(../fragmentation-mode,
                             'fragmentation-mode-ack-on-error')";
          type schc:all-1-data-type;
          description
            "Defines whether the sender and receiver expect a tile in
             All-1 fragments or not, or if it is left to the sender's
             choice.";
        }
        leaf ack-behavior {
          when "derived-from-or-self(../fragmentation-mode,
                             'fragmentation-mode-ack-on-error')";
          type schc:ack-behavior-type;
          description
            "Sender behavior to acknowledge, after All-0 or All-1 or
             when the LPWAN allows it.";
        }

        leaf bitmap-format {
          when "derived-from-or-self(../fragmentation-mode,
                            'fragmentation-mode-ack-on-error')";
          type bitmap-format-type;
          default "bitmap-RFC8724";
          description
            "How the bitmaps are included in the SCHC ACK message.
             Defined in RFC 9441.";
          reference
            "RFC 9441 Static Context Header Compression (SCHC)
                      Compound Acknowledgement (ACK)";
        }

        leaf last-bitmap-compression {
          when "derived-from-or-self(../fragmentation-mode,
                            'fragmentation-mode-ack-on-error')";
          type boolean;
          default "true";
          description
            "When true, the ultimate bitmap in the SCHC ACK message
            can be compressed.  Default behavior from RFC 8724. 
            Defined in RFC 9441.";
          reference
            "RFC 8724 SCHC: Generic Framework for Static Context Header
                      Compression and Fragmentation.
             RFC 9441 Static Context Header Compression (SCHC)
                       Compound Acknowledgement (ACK)";
        }
      }
      description
        "RFC 8724 defines 3 fragmentation modes.";
    }
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }


  grouping management-content {
    description
      "This group contains parameters to control management procedure.";

    container guard-period {
      leaf ticks-duration {
        type uint8;
        default "20";
        description
          "Duration of one tick in microseconds:
              2^ticks-duration/10^6 = 1.048s.";
      }
      leaf ticks-numbers {
        type uint16 {
          range "0..max";
        }
        description
          "Timer duration = ticks-numbers*2^ticks-duration / 10^6.";
      }
    }
  }


  // Define RuleID.  RuleID is composed of a RuleID value and a
  // RuleID length

  grouping rule-id-type {
    leaf rule-id-value {
      type uint32;
      description
        "RuleID value.  This value must be unique, considering its
         length.";
    }
    leaf rule-id-length {
      type uint8 {
        range "0..32";
      }
      description
        "RuleID length, in bits.  The value 0 is for implicit
         Rules.";
    }
    description
      "A RuleID is composed of a value and a length, expressed in
       bits.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  // SCHC table for a specific device.

  container context {
    if-feature "management";
    uses management-content;
    description
      "Management-related parameters that apply to the whole SCHC
       context rather than to a single Rule.";
  }

  container schc {
    list rule {
      key "rule-id-value rule-id-length";
      uses rule-id-type;
      leaf rule-nature {
        type nature-type;
        mandatory true;
        description
          "Specify the Rule's nature.";
      }
      choice nature {
        case fragmentation {
          if-feature "fragmentation";
          uses fragmentation-content;
        }
        case compression {
          status deprecated;
          if-feature "compression";
          uses compression-content {
            status deprecated;
          }
        }
        case compression-universal {
          if-feature "compression or management";
          uses compression-content-universal;
        }
        description
          "A Rule is for compression, no-compression, fragmentation,
          or management.";
      }
      description
        "Set of compression, no-compression, or fragmentation
         Rules identified by their rule-id.";
    }
    description
      "A SCHC set of Rules is composed of a list of Rules used for
   compression, no-compression, fragmentation, or management.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }



    rpc duplicate-rule {
        input {
          container from {
            uses schc:rule-id-type;
            description 
              "Source Rule ID";
          }
          container to {
            uses schc:rule-id-type;
            description
              "Destination Rule ID";
          }
          leaf ipatch-sequence {
            type binary;

            description 
              "CBOR sequence for an CORECONF iPatch used to modify the 
               newly created Rule.
               This parameter is optional, and set by default to 0xF6 (CBOR null)";
          }
        }
        output {
          leaf status {
            type enumeration {
              enum success-with-validation {
                value 0;
              }
              enum success-not-validated {
                value 1;
              }
              enum to-rule-already-exists {
                value -1;
              }
              enum from-rule-not-found {
                value -2;
              }
              enum invalid-ipatch {
                value -3;
              }
            }
            description 
              "Return the status of the RPC. TO BE DEFINED MORE PRECISELY";
          }
        }
        description 
          "This RPC duplicate a rule, from a existing one given in leaf 'from' to a new
          non existing rule defined by 'to'. The content of the new rule may be updated
          with a iPatch, where the CORECONF payload contained in 'ipatch-sequence'.";
      }
}
<CODE ENDS>
]]></sourcecode>
      </figure>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document reuses text and structure from RFC 9363. The authors
thank the contributors and reviewers of that document.</t>
      <t>This work was supported by the Sweden's Innovation Agency VINNOVA 
within the EUREKA CELTIC-NEXT project CYPRESS.</t>
      <t>This work has been supported by the SCHC Chair from IMT Atlantique and Afnic.</t>
      <t>The authors also thank Claude (Anthropic) for rewriting parts of
this document in more correct English and for checking its
consistency.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+2961YbSZYw+j+fIo5qnQVUKQXiZhv3dDcG3M1qG3sM7vp6
zTczKyWlIMeSUp2ZAjNlz7OcZzlPdvY1IvImZGx8+U6xussgZUbs2LFjx77v
MAyDIikm8YHpXKQ3UTYyb54fmSc7+zuDJD8wR1fR7DLOTZGa4io250d/PTL/
ODz7izmOisi8TEfxpBNEg0EWX7sR3FP0gIGROsEwKuLLNLs9MHkxCpJZEc9G
8SgvomIB85zOxmk2jYoknUWTIJlnB6bIFnmxvbX1ZGs7GKXDWTQFIEdZNC7C
Il0UUTIL8+HVEP7AScNsPBSow62tIF8Mpkmew3DF7RzeOz25eB7MFtNBnB0E
IwDlIBimszye5Tg7TBUHsICdIMriCBZyCuBls7joBDdp9u4ySxdz+BTX1Qne
xbfw4eggMCGtFP/FxeK/V3E0ijMzTKfzLKbpg+t4toDZjCmPYgwD1vkVJkhm
l+Yv+DV+Po2SCXyOa/tzEhfjXppd4udRNryCz6+KYp4fbG7iY/hRch339LFN
/GBzkKU3ebyJA2zii5dJcbUYwKv4xwTWnhf0RxAtiqs0w4XAF8YkM0DFi565
YOzSZ4z1F9Eii2dF6RuYDrctB+pZFObl6dnJubk4eXFy9OrlU3P68sIcFpNo
ViT/BNTi83mRxTFMvG0A2WYUAyRIXTDe5SzOoiQ2R+em/2h/6xE9PkwKIJUj
QGI6C8/ja3wK/hzF7/lrICzYr729R/vy92JWIHE9z6LZkGeMGZMCfE+A/3My
LcLIwtYbZ7p+i4OXgINkkg4j+zGj4SWgN61+RXh4c3p+Yg6f2Q91sad5NP4v
IJb8EhY6M9vb9gle398SOADuM1rU+UnY39/d3fI+lrWd38D6Z/ZzWd8UoeoV
BNWfs6SXx6UNPeyZl8ksGiyy1NvRw1lU/piWcQRHYjEBSAsfgdEs+vNUnu0B
aZeGP++Z8yRLrxJv8PMIYPI//mFohSDvMeQNhBLMmEld04EGRvnoyd6W/Ppk
78neQQCMbVx5BrmS/Pr40fau/vrY/vpkd7evn+739dnd3V399dH23rb+um+f
hbmf2F/3H+kIu1v062l4TGyBeeRiBvBkeTQJ0zny2PoTCE+4mDNrrH6ZDKfz
6/3QY2ulZ4ZpFodpTv8Ad6wMU2LWeTIKowmSqg+GPkIjzLPkGl6nRwvYoXxS
enYQZXATTcLJ/CaahWk0pYEB82EYmmgApBMNiyC4uEpyA9fGYoqMC36fpYWJ
DNxTCcJv0rG96Lqmc1i91AzsYnAOl1MyxFNRxO8L81dm7kcOC2YdmflG58Ak
MAeczSIZJ3BbDuXWhMs1Go0SBB+v0C4cpRGAME2vo0luxlk67cKbOU8+wsmn
NDmsZJoWhIaRGdwGoyQfLmjGHE6du4lv5O6gq4UGH9zyFZmb+WIwSfIrGCBP
kMp1tcDbruI8tjDCl5MFHLEp4N6MJ/H7ZDCJ/RvMvFlM4gDWluHSiiuY6/KK
YFjAMIDHt0pc5hURV941N1fJ8MrgRt8EFi8ZiRGD2ABOACz4Pc0YG/AXIgP2
B+cyx3E+zBIaKxjFcxAUcJEpL7w2G2IEIHlq8nQam1l8Y54n8WRkXsSzy+Iq
GC9mQ4EKEYTfv4wKuDdhyFdz4CZFCoCtv3yVb+ADgbe9m8exj4dDHsesHx0f
5htPaTjYsRgxmeRTJBmEMJhGswWA58gckURbfD68AkZjTot4apJjh5b189Pj
fKNnXsFG0RCVjb0EdpgrAgAc4NH4LYoh8G8XP/Z2FGQYK18JxmGT02yeZkRQ
8F0KgI8XBVyMjSeix6dpmoxGsPXBT8C7iywdLQgBLWcL6DiejFuOmPntN+GE
Hz8SuEGV5BF5q563gEZDZvrxY4/uFXiyWzmDiKoEEI2/RYXJr9IFEIVSX4Cn
sUJ+XX7SAQUfRLQNjLEhXRylw3iFhLb8RFaPY0DH0WFmPe5d9gA/yxk2oC2o
PuOxbMQqEm/1kTrj/vjRo7MquERnQTudRXR8Gjf4JplMiNLyfEHoNXQPTia3
PvHBjvSq9AOsMEUME4HJxo0zECQQOKILYgpwqqLLGN94SgQ0iuHKAC6KQJS/
xwNgJvG4QOLP43lEM+t8eQ8JGmjsGkkFNxF36TgeJzNm1AhfbOAeo3XnpvPy
7flFp8v/mrNX9Pubk399e/rm5Bh/P//r4YsX9pdAnjj/66u3L47db+5NkHpe
npwd88vwqSl9FHReHv6jw8yq8+r1xemrs8MXHSayEtpgkXq4QVmB/cWzHeWA
GOSeAzro5tnR6//3/+nvAn39X7BV2/3+k48f5Y/H/UdwfoBVxzOeLZ3BZvGf
gODbIJrPY5DjYBTYRjOM5kkBewXP5niabmZA/VkM2Pz53xAz/35g/jAYzvu7
f5QPcMGlDxVnpQ8JZ/VPai8zEhs+apjGYrP0eQXTZXgP/1H6W/HuffiHP00S
ECvD/uM//TFAEqpfRL/9VD22+ccgOJ21sME4gjtyTHfVGDgL7VekKiRsdRaP
AcFwVEcBXOuRuZykAzpQMAsIpI7ZgcIJn+Puy9V3emzWn58eb9Bdz0oq8Vvg
anhURkjseFHMZIziFuaio0Ywwav4JoCQE0cOvKsMiCJL8SFQ+aN3SI9ACEg0
MDl8U6TDFGklI2FBkNAFdRzFgRyO3eFrRgLKtB8/HhBDkceMEFwWXy5AtZ3c
MlnylTqfIycaxMVNjHPN5CXDOr3cxQC4XkcgrVwn0QTI827WaqLFJbEG4j2N
og/AksxErMGHZKYsnk+iIQlpMH2xmBMjGpFYFJl8Dt/BZgSyjDLMXRBY+MaJ
Zrf6Fb13CQDOfGzOgkHskQMwW1DcF4UVMQAzEezqKBnSBY/A4WYCs4XbkfhG
oPtGZ5u4G8hMJB7AvQarpYub8C4kSavG+xEEc0JMAMPy28dJFpMoAKPTnGlm
t8rM05z4KAmBk7g0XeBNZ3eQJxqgqCXcX/HWbUBaUJ1H7xNUPAYRrsmS6CiN
mRguF3AHAJeMGd8qy1oGF9CscOWASICHL1JKyIAQ5inLn4QWK3/LMV1H1ojI
URqme1AGhqnw0Rh565jvVKCnDcQM7CRMgnwBxRhfoMGLDK90kVsEINIbhiRu
TYHIkFojnvAquo4D5sdJITdCPB4nwwSNHrj/qoKonAgifByHKP0A28nCmIdD
u1Yu+w36dnYZqxg/jW5JbjIgiUeTgu+I2qULNEYUtZ4Dmn/7DVcauq9R7Khe
/CDaw5pkqSCLXKUNioeQB6h1IH0uSLI14+gagKejQuxjBqDCll8nIz4JcMJR
+DA3ADggxB4cFHpxE/lE98whvh506K8wAXH5fQfkhmiMJ9sKJCOlBiRi2Ubv
NctN4NUkL5jj4m84CDNaGqFDGxmPwgEdhYxv+MrkoBYuWICHV3I0Y4D2FgOv
Bx5NnB9lUJLF1CDL5JGOAyY0pmsiUaCdCkD8bIG0N0ZlbwhydjJbsHV3iALR
beCRNrMBfmkdaIh2BWfGswKnFaAHpIOyOMWtLS8kIZTBTqWoAip/HF6lCeyC
ZeI8RZiMmH0HdO7hz00+TCEfeV4BzF4o+pkkYA5Q7UjnAeE/fj+M50UgOhjR
RYeHn5AeGBJueX+7TgPFm+qWDrAHP2zApZAoy/rwLNpNM1gnHlm0+sgtBr/h
VX4u/LDf7zquQ+ovQcPIYQpZy/GkdeEJhrSjSFDY+AjLwnAv6Yph4cBpEXKV
r3de4YbeJDmcgWQsmzNFm9WQZGO8W+YosacLoceE73E4SjrH//63Xq/3v/+d
t4ykTJLf8MyDnhxf6/4hUr0h8BaCXcNPnSjS2RDRwR5zR3Cwvms57CoRBR3v
wIfENARXpJKQ1oEWktJjSLjwVCdwz+it4D/Xgd0Fdgc6WwriBxIJPjWNsncE
wzTosPfBMaLR045ZJ6a8u/UIGW46hSWM8HLsuIc6Rt4bxLCV84LuWjxuwNIL
5EbmFrn/gBcN+qWc1046yIHFFXFHBDNkI5ax+fyC9ppIuBk7PtexOGD2azeq
CWNN74noRCzNf8V7FNEI0kpSsKQxSWeXOew4IdyhBVeu12PQmUW4qI6ceRLD
xsll2LweuPXwBssreifJrGgKhnMIumk0peM9SIHsEKTcrHuzl3deTT0tS0KO
9T//8z/AZYdJEkZZEbwPw4N17+EN85uvNf8p+GAMPJPdMPf52fybZV78i8oj
AKtIR8hMWDr6d3wbfn6hAeyLDT9jNHrezuOGF5iPVV+ANaWzhqctOOWn4Vp7
XHq6AVr79Cipw1KgZFAwNwUkEL/U5X3Qh5iLynz9/erX9PKf4JNBMouy29L4
U7HNgXDOtjkP+mlah6f2/MOBhvQQjsgkGEbDMnKHo6gOW/2FZuDMcuBMG3C/
VGjWEXiZelHU80SxPwV2xAo3AcC8a/DfAx8z/v1YI0IG1398nckQ9oNu9Q35
kr8/WBddI6SnvC8/LD8k9niUR6uqdN6AdqkqXJQH1E8ro9q33MiEfG+9+7ul
9d59RtueDu22tiLz7iPtP73Kkfafbz7SprwfVdKsfF0lTX/8VY700ucfDrSV
jvTyF5qBM8uBM0uA4y94cEcVtR+ZXSH032oAaRk8rcDADRn8dmB+ar+4DcWO
/EvnqKq1nbCH1buf11Xk27CX87rPsOhG73wMgrezSfKuJlz4InQXdTGWddRg
g/azwInSm53ykYEPGk4F2l+r8lTApgQ3Ouo8sFzSC0tKjsi50+gdm9LoO5Cp
44gN/4tZNB0klwsUvEtaKLm64kkekxmAxGgxKqAJIkD8gT6DXgFPPyhrMVZB
AQm/M57ot4NbUKY7ZCLxPwUBGuRaFMC8kaxfDFRzcoVE3h0R8NHD7WTuQF6Q
AgdpVOx/+smcq7ErOAeNIYsm1oClcq3a+Q5qZkCUfVFujt9HaN3oBoMFLA0V
h/og8GkCGu/NzJoNizQVYyppJKguwNdByW4E8KO+z5tpOsr2ReUWfVXUFNTd
4hl6OdHuyn6tp7j66QLke9CK/rmIJqjsWBqxprp1mZTvPHgnGMQkLgOQaP9I
VVO6FVuM/3zerZj4h1lM1pEosACTiYsOfcfabtnNBGu8jhmN9ou5h8CAyC4p
nqIyU7r2OhSKBOi1ajtPzF6xxrm7otmrPcA3I8+jAoOnxODH7mI0VlY8XijK
d7JhHkaTyzSDjZvy0KAbHRaosuYwJPsKRdcl/4TarnGdZFXWqbveqoZpNCcY
WcVGcgt8TD+tERd7/kpkinZXNBQ4ivNQ8bOHfms8vIlu0ZOH7FIf9DSbJA8E
NV0zTbIsRaI08KXDjOcFUyr2MBvyHo9ou3LRYG5BhbcPmfpWmd+AxeNfhsIk
+AHlk+6xp/DUyHO746XQeYav2bFJy615PXjKnpFDz/dJ28mXrcf92HjKR5b2
0NIovY3WN7UnsELr/BRGcUDUTMeFFodr6HWeBnB/1JGB5ODhoYajxsUrP7Mn
VmmdmJdPTTivcfydXyc7ETA3UvQxrqrIItLtD+fzSSLOlNeWbxBKGH49jKUz
SuDTL/5R+43mWrKqj0tXRuPhttrrr8yPGCznxaHdiYthD87o2zy2nu+q+M12
l3TML9xlwuBt82UNK6qLdKEAH/BS3YlHJqAE0cj0xDDEGEXhosr50IiYo2mo
SOGWQ55Ad0gjv41YxPA/W8txeVO0p8HO5yjbdtqOGDAkvi5UTlHdSI0kajpf
ZieRy/ZYBCOlyddxFsp5pC17fnqcBzbkxzLN4gaGIQzpTqm/MGc8kp+DmP5Y
zo082GFkWxehfwhAlwOhDI3b6vEoEpBjZDXFYOIPBIgZ5RSEcEbGUXij7khl
Y35cuviIp292KgpZB64bYM5lK//s1odPLvGq8019aLM4HrU70FiwCNjwjHyG
MSjERsb2HHgYYBSoKB5ZC2M88oTXlczGaFNUp0/nlVgKPXNrHqhT3ZAz0Aub
cqFefFPmXY75kpvLC8AK0JeTFxKr4XkUAUd8JcoInQPYbz9MBW8vnabbigy8
MumaxtsAp2BcBCXrqdhqZ55BlEI6bun1Gb2ao5vrFu3v7EsLJD6MzPClCBSk
Nwa6Z6zplv1p8JuH5WC39whkgkVG6/SMu4xyhHzwX/CokbgCNH9fY5A1xsOx
iTeomHjZAm7W3OrWnG2YZMmE/EBqaC/SYE3XvNZRqzXOTjIEv+nCGnw/AJ3K
teEiw1jmNdHxJ+Tf8oY8cBvfuD9o9e/IIBRT4mIgy6Kns5KXLd+gFAD2QKyL
/O0j117zjD7RLvKSbbumepGXav0OBnjAWpGV4DeDFp7gefBgzt9+q8dmfAzs
yZW1khJAxnl1fQPQRABE1XLfOYQEZbVUg5WEpqIJyNGjW4814SSArNPDs0Nz
FeXqwI/ZeXEObCfD7Tbbe3tb4faT3Sfq5+vY+IVOoNR+6JgtHoQbEKLJFzJL
aaRxInTrvYvH2GPXsh5MjiBje4jvvWQOIGwd/aRnxPpZ4IoFQn8YWrYyCus6
cktLy/ToafWBo5QDIAucvpNMp4sCcH4LRDgn1fnkfx0eXbz4B5078glgmHmH
4icCLwQCv8YAA09a1B3wODRwuvqFE9xQdOANnG46s/A0qLgwCAah0CkHpFp3
8nASJahKWafghRdKN0znt2W+RDs9QI8nBRQMKU5LHbmTWyLooPGsOjXIqbfN
Tiu4a8XDUrm4Q/ccSw8f3FbhNfeBr0oRHuBLL6JlvSxBb1atoRvw/LFzWX0I
PoRhWPo/zFaFJxmHZOCDd0/H4Uv5tQ//9w0CTW8usiS8SoFFfDBv4de/8q87
K7wZF9ElPHZyQf/srvAGQDkDevJBxVNg4d1bYQxgj3F2HcOTr+xv+/a9/d3+
knXO00zX+Zp/fbTCjBqlFYKiiVC+0L9f89+PV8SyvE6z86/9VTZIvYycAUGk
xR881w/62ysMM43eh9ElYusl/HZIv/VX2TQE/Z+LOLsV2P9Vfu+vslsYlzRH
GA/1l/4noVwntjjX2be3VhhmAOO8Q+Q801+2HWE/2Xuy7LW+voa/bD9a4bU8
+e8Y5ziXf7cfr/ASCOXvbxHH8Oxr+v0t/b6zCnb55Rzj32P7/rn+ufNkhSEQ
6L4Ajf/ur4LXWRpyCFeO85yl4Rv31/aet+z9RzQCqqBNGouqopZ3ejqU1bhU
sgXho2YmkUhBFK5QD20y3rSeRGu6qDyBGn79NmhS+X11TU91z2qRzL5tVJWF
nfV3vSPvvA2+rB3ENwi032m6LydsOT4oacZRk16MnslmPG/wxoB6/er86NWb
E9rOv709fnVuzhcDNWH99pNmOi1Gac7qLDotqiIFR/94oZ0S1yNyLYlNngk1
oPSBeQbie4ImcIMmcN+Hi7rRQNJ0bHwfh+Lh6/liEEqEIkX96KwUJh69g6f8
JAZ0A4G2P1pgVJk4MkA0vLm69eUWzxyZz+MhqJBDjYJEkU+wxLrWfn8HA2ln
o4Ax5kXdNqeHYfAvSTUCKOrRQBEFwektp8G07+S79aqdQueZJ9cYSt/y7TvQ
G7pmybfD4n3T67zlM9SM4X22hAXBWVpIYClFBk+iy5zRxAoBxatUKaqL66XM
B1p0oKHAuEJxIjvnrcbGRpVtwJ0WlBy0rnWM8NB/yQ+0ufy5WSdwWytJCM1Y
eO+N2Yap9+G0QzigNQudaaZI/H4+SZPCelGCauqWsS6qmi7X5snqBhyyiofF
aV0cfa57Iuagki+Pou5GoMpmU2BOFAUpu0CHiU0jjPN165l7HWUYlmlO/45U
QEtcy9vRNcVAqhk6l2DxhXhYfMcf6hegKTDum0aq7JT4NxJMLsrmaR73SBFh
j1YHpoPFp6Laog43jB1pGXIVGljtgnwpT038z0UCr7LOE9RfAXim5hfT72DC
L35R8zuKgbTid7SWikXOTl2GTwOinQmKHcocbBvwEF1rFkK02ZGyWPQiXn0W
c4ZofpXMe0xqgfPmZbiwDFmYZgJdAZwTUhjHPIAskZJNbRkCjGmtGkE1yY18
xCAjWlPKgRh62LRGFuXAC06VCOKS9dpYm2Lttsn1tsGQ+7xnPI94gwWXjbf+
Tc4uSY75RE6aswFMsIn7UF8ZGiPQUE4+qSTOsJIA+XwCwFqRS0IDu099aWJd
WQWBvtHlyFfiVQWsKETBAgZBV1oGBAHjloyzzGLokrI7tphF4zGpyQcMMVti
nOGKbeAlVvHcsorffmphDmyExaQ5ubIeU7i9TYZxzHVSZj82sfMixXuUhj/Q
mxc23T6X2HtSbKQlWpfXBeD1i7+92FD3A3IfYfe8zY754F80Y295/h+w00Ks
mcgQVI5Q+5HjVRIC77i8xuXbtAnJoMmHEdk+D8ReZ5fJthLMOxCZRsJWaUy0
3t7S89YpznzzBlR3uzA0ums2MCcLjRhwdKFW80s5v7OUIniTlkDKuytGQYhp
j65klIoM0SXHUnQtJHKEMCTWS0HgZTSFY0ji6DxNKIco9YLUKcTDv0/KNFK2
wNeuJd+u0+4RMn+NOMT4xkt39FDj22ztGb6MZ3EGtE7JEySIcAZArh49G20v
gNNSDwK+N8isWMU4XK24gup3hPcg+LnhwiAgogkodDl9W+AJkWeApxI9aUiI
qT/BlHrjXV0UZl2ZZp1wudHBITjiplPKUqigXFZNPArOqB6+n+sRNfI6/AGf
X8cTH46muBw9aEjmSC+//VbXJD7ibUapczM2dFcvh8CTL53MvEx8DFqFZBUk
GkRhJ7QgkwpU8CZMPW3YyYY9JyGM/DzA4gKbeHW7ViVyEr3QidvA+kopWEGV
i6lEmaKzwooHjrU9DZpxjKInpbWpwkPhGzZx4yqllMzMynQkCd2ZuIwI4KsK
YJXwE40Lk+3Jg2gCLI4JZ6K+JOE3xGvEa8qJ2x8/qhg4j24naTTCwHWRBnC2
6yhLkEV3NFULOMQ4eS/hI4A40PBi8VLNaNWgNhYiXOlUOohuXjKj/aOwsPKS
DNvIMCDJ6h+o4Mp4qLG65JeRuLYYJL4uc9hmPO64lxLqjxAewDWgnmxCimZc
eouwvpTFTFls4CXW+ZqyfYXCDPGimSGFTZJpwuZ6EB7EXmD6B3rC0gV6Fjn3
SbMVhPkQv7WRPIRJfpt09lrs4zr99/Q42O6KCI65EWaP2COsqhf3TGdra6u/
BYeLcGSNAjmlmeL1FNh4xVzSIAk+YkuSoEUiGX6wKUsAHTGPLmNxSJDJmRKJ
1REjif2+5YXyODR5ZjghmwI/FhyDAInKEzxBaYQq6Lkn13KSrjEzSzN+I31O
462I+DgrCcQ3is+IMLkfFpP7KaIMLY3IBrrAGzKezuFF3Si2fdFbLFKBMP/O
5o6wdQ8FqgJ9XQSeYGScZAhqOllMSVhDEYKIJC381BvNyjReViYK+FI/LLfX
u82148ROSeqJpu5jVhx5Rva+0qcob3oT4mdefraLTWBbopwgZuNklpiEyLOn
Kf2DccqdDbE1xBhgBgfyMhkkcDHcap5LlF9fYr5AGNJ//J9fKr9W/lN9JPhg
fsIYZha/7Q988ML9+ho9Q6fwn4u/oxn/lXx+dHwoj3wxWLZwXLq50P7GAdwf
zLYDq4//eYaG6i20GscYvIkfwaaHpEOi2bhvR6GYKHm1cZQQf0suZ6ipfGCp
KKQVfTA2ttv7+VD5tfIf/oXgMDLKtoPl3cQ+svtNYNmxsCAb00ceV2B5O0fs
brdid3elUY5vcJm7raPs2VGmNosDXt1vwMvW1gPjZd/tEXEgfkQu0M/cIxZa
tzdWheWRhUVkN3pkr3GP2k8APVmSC1fEi3tER1G74KdgtzTK48YV7Xz2imb3
gOVJIyzVnSZY7tppZ5qWiXinH6+80/2tJli2GvGytRJe2NR9nz0ih3ANFpAl
67CsiJd3cqo//TSSV9l6p/SRKl6IvxAsS/CCK1p/stG06FXw8mVuNd/15Yug
FWdXXfIUjeOVFRVVMuRSWujfIhWGBlvkYhpGMWgYzSOSGFimcbUPBikWMgT1
98KKWyT7r1lFE4RrTHGAGe2IIH9Ew9tGlV3tEk/VrtNgurFRuaixq9/Hio2w
96Tnb4v5JJP0ataztlEiksuTzQ4XTotmUqWgXQpMKDudjHM6YcyTOHUw7rrs
1qEAdTYE88ta0KDTqmPDINZbwk6Vpeo4K0IkylGBAvURmop2XNOHdb3eF87u
hGojFgqQ+jKD2yYTDuUpGA4qa8f940bcPyYrzZKVEXynvmhstZyub+1wLkGW
/BFjBJbnPV3k7OKtel67avkgC3+pSNAT1ANemWcnIJueH709Pz85lmhCJEyA
keiBV7jVBXUqmqla+rfTY61LF5DVSWqbRQPkH0+1vBzjob/VbUSDdSyym8DV
11INwlbuwAD6P5lfr6gMkMuEQTACLY9nM5eEFlXVJOO7quS3aAr0inAgFQ1l
ANrynjln0Mvxn+/ieI4+Dbbkk8kwWLIkWTiQpVoTFIIwFNMEWY2DPNaQV3W6
3ICS2eVgY60tiWr1GhucKsaJgBapVQtKL3m2I1q1Ggxi2Hqq9iGVCYTE7EAh
VcIRLiCMAC2pouB1HTKdRc0qzP5WdJ2uK2eXSbTO3oo0IFuxmorR5xRnf8Ki
Yn9X9L2wnrpneAJ/+6nNTBMEviVITG++YVW9HoBR3+9Rsh9hYSZnx6xMZdQR
by1lN9Htcm8Emq1glP+EMR3LJ+NQr7nokfXS0XF8ef6sY9OAjaYBr/mMSCqJ
BlOsFYGXIdDeYzZAczUyNHJIgSsiiJACH+CTKkmJW7eED4kyVksSyQh2dzsv
ELzIc4YExMyIt4p/N6J4i/gS8yCF+wCAtP/qVfemW8vVJse6flfPtA94FwsX
T9haEb8nNkjlFBu2n7MDJAoZK+dkCUMLHIBG0wtFFuguc7E1oBEKUam+F4Vd
DCmVh61TVFmQTyjIQtCWWrFXuuCXJnOLS4141NvtbWNYO5ByoBftFqGwv2vW
XQaSM+FIUubzF3i2rb+iCkDJV1HG3wY5JEv8dBe/CRYzKcpEextnTxkuKwD0
9wiw7b3d6ghbgz78BKV6SDPzGEc19VGp/FYmg5dHCrbej8fjSmGl/n7jQFjo
c6I50kz8iKhAC8Uq2OxYTn2fEZXQQzNXDpJh7MpvqS+zRAElk2oXreXhMyTc
wwmDA8fZvGFKY/qh/DDHIKrnQagYTtiCL1kuPkUhM0Ejc+qKe1EPLJt9PZu3
kGwgANfqrZZ9qULRGLfNsSPW5EtmtsATVToYS+QkR7PON2HLXYk5F422ZTXg
64HLyZdLe0p8MB5tHFRenOYDLH/bgX/Xd3c3hGEKCwVBAQ71FEOkkSbQrR0B
D9vdDYjuo0t0f/AW79O1ZNZ3iRo3JOGb77SnnPfAvFDcAEbGIMJ0nLEzyQed
nrer6yRKqkSxljceNDXyEqeiQ+bFqLAFl3e0RHBP/UutxNxLh5wZZgC0XDeD
tuhnTbqZ/+sv1vDYbv80FQOofihmUMN20A9fCI4mHZxRXDYIvN/f2R/uY6Ct
EAyaMfIBqb41DdyZb3yNd39vP360VdJ5P/iK72eupUntBVhV613GVtBnEVnh
KdSgED6R0SiaazZ7e9V7iv78yZwevXx9vQ/ylnjg6vVDm2oq2ygSTOcmr9BQ
JACqRk8HREf+TYr7UwnYhLQgqr/HwyGvkSfFnYPiKUiMLNIV5D2ollgbwy85
OY3hsNbKNyfTOQABnwfW0eAK3Ws0V31aTBUURshV8qJZcIoPiPsJLlcbCpeO
x1KlHaZ6B9zDl7qRe2K6e6Ajw5uURoWVsX0Haktt9tWqsvs4ZMcju0yfmhvM
P4959a54N5EMljbGjHzq1wD34VV0nVBdTMz9NFi74YYvtzOMTcTiFitRg7em
OLm8Kryq9JiYi8PXqeGAYySSkY4pScP+RygFVD+6iofv8sW0gw0SNC4OsM6B
OOU97VVmmBaLzoH/EhsVaAcv0hRUj8u2V0mBibOm11VEf83VIdtG8GoGllfE
FS+HcW1sWODJ8CqFQ09evU3MVbptBVA85izJU1H3cs0KQQ1TMwq2IAFRdLWG
xtgNY3HIhocBpfG7XboCbe3mwivc35AFVqqbN+2ZZ+TzlslcpGOgiZJRHiai
zFjqQm2oKFWucFSzmOFrsN6I3f/oiATB5BIkPXQ7a5xZ/i7B+jSGH0eNquBU
fS09bevaoA4rAMBTuWrd/uG7QhvGTD3GaOS61SYX1AhF67kPNfC/4LMpUeRl
CwgFwRpXgrdUaRcrTBRShiY3Fyyj/J1MIGytQWHB1NkHRQSx8VkSbvH9VnYC
QzBDoffUPkwWSa92uKU1R2Sa9liOYVAS4Jo+VqNlWG09LwkPZdYJEg1iasLM
lIZnuH17rZhWvdCM5eV9pB+Hhm/Mbp0pUX3NLFnp4SjFjlCMmE0s9pa3llPC
R2uEhl/6mPMbaIk98ysOq3sVGLdbulW04ruYPmKB3Qm0SV3m2VdUZBQECAoG
EtwuclAlulQ8mdQBbtxlOb6UZJZtIKRrCjozjVppcLdwOMkLMh1RvRiMCdIT
TFGdcIgon8wbGjn1XWvziY+CqOJJMqLAHizWhMdVotJRlqSZ5witRLFGE44w
n0pMnL0Z8XXRMfCojUnRkOJOcGEM4CKcuhuv+TK+E/Z81WtSUiBIgsiSy0QT
+gOMbZBCUwBBZ5P+jq/9z9qAo9cxJkLnYiRu0mc4Rvnz0mKCxtX0TAUc2HnQ
hZHKsT2VVN1llhQwS1JVTDeJzz8aVfWAvZ1vHqOB0xrAnwZNi6R4KmtOwQir
LKZABxomKkrv11ctvobmlZMtNvJs6oGGUKT+kpjLdsWaiRE2OOF1LHqhqKfs
gALKRPbqaq0xtPFIDBAZXjdiRLJfofkTD2xC1bWG0QKrzWIVF1TyUDYqy8wo
hvLVTVKllVdVlRwAj8FjP5WeA8Bmc+ppJKtCGTYQMZWzdoD0LjkfvkDZNDL+
tzdoBPDkm3ROfDt2AVouNb4MEAvPPUdhumcqHAckJRQ28B0dDrl/S6iezheA
aAB6gSjf5dY1kfMAFg65bifoUHtGGkHhCUFMXP6NvOIdiGocnEYlGlKpxFh7
ga6ik/fDGNPrOwIGVqtYhQd0NWRx5OyrHOlG26T9FD0nWFVNERVlnQUGhheE
egsrVWC7EYPuBUb3MAsbxaVabLx3bOM+EpGaqyUgvAsJnxv5/IEf3tkmq0Xn
LYtf4iKUIv7UvauJjF3ujl1HzixeEOGLdMG6CwjdcLWuX8tFJeqU08FISxMa
hi8TLPvCh9SX3/BPMQNpeO/62/kGbyDCEHSq3Ii4SZ2TdEt2YhJr5cQE48Vk
ssz4coeZoNFe0GB/ucP64mwvxgtCq5st7gtNzfqhP+KKL6vNLT+4qAQPiHJh
L+irFMOwrx9JHEMpkoHsOTSMe/Vx4zBb+pGEZtSHATkUE02HIPDlfpzDXWEQ
/pN1aLYbAzPuhmYMx3gSwWmuzfE50Nj4sWqYSA0a4QMyjIhyYX2OT4KmVDD4
iy2qecP3HstHrXQzi98XQqYPDk1fP2qF5iqdU8z2l8XNfjWSkqCJ4OfgYBk0
o/ha/F2fDw2MlaCttQ2ag4P/hp9POOHNwzRRsQ2/omFAabjfomz8lYMGWzQt
W9Td0JR+7gtNKy8Gblwy+bRzYuHFzgrXTsU7+lH7TjnLXfsw/7bV7f87/kUX
LdvxpedVeB/caL+s+k4xNBaCe3I/NTp+8k55v8MwYoPSL3eqAdcr3gyVRdUc
IOVhUH6p/uqzdH2u2QdiASS5yFjckDR0r53CgkLmDiq+r2DS5FJhbKlXpaQH
HDnR8FBEw0j1gtB1/eIslyVulbqkT96VFmVC0mp4WJh0nmQsOK+iQKCPG9Wc
sSb7kx2HU/Ns811V/ToiUGuCEdpCrUYO1CcxAX5ZDtUFtAuROkE5rqDUqYks
jWXjM/kuMEooUu2RzBzAKdaT2XWKpuINa+A8HTsk+OFFgXPsOrdGt2SH5WiX
nNNeUOm9iScT23RFgBKFsaXZis3FUnvl6bH2lSprXN1S8IGqDg0JWF02XEUa
LKC6adWDb4MLuuW57V9BJUmqjElGn+Tg4uNclNXqsD40bgO72DzKkbtvaXW2
TtCcYA+oP3JeNWLyeGMCYY6EhkSB2Fj34lg4vyvgwuGZKPU2JMkM0HUQESVy
SYUXEiVLREwmk1yChgIKLILxDzDSeWYDE5PZTOxL2C9Pbja7ZFTYZGmBVrjt
Sq0CTPYfUnwFEgtH+tKQ/V2OCJDYD2wXl2NKJKqhy5IFKYdYgosokk4OCZq9
mHiDxsAh3IZoWPbRm2U/H6rXNaOtdov7bLTht6Vf+r9hzTwmSuDSqMttEr8W
L3Pzl6qc429MHHg3rJNtA13vcqb8q2Cd9hK/fHv8unJ7eL8F/qdqBGq4bRu+
LA3zhXDjXzFlRmNrZsmfL6JbdDRIkHrjxcM+JnMiBrKufyO5GPaffjKHzm17
YE6lhTmp2UB20jiaq84FwWHZywvHb1XrdJEG2iSvav9HDxw1soQLS3thyZIs
L1FDO7CyBqMe2uo1W/8NpQ/WjVeOUweOU/PDbETVW0ROPrA+totoC3Wyimfk
94Z3h4WzVRIlBvqaq8MBrI6vM/tkmf1jFCYFr2KwbxKjf/w5e/Psm5pwHHmJ
prDJI04ozbDNoxZX1RopAZfV6XjqESeVL0Zz1CyoICJmOQ44LdIZNtlIx6bk
nqz+tXrW1MMAS8+o9hoaecdaC0g6uFIlnm7AcYrWRFzp9ylSi9iufUJwDeDJ
B6jzEUWS0wfrN0rq6EGr9ZrM33yBz6h5JRn900U2lNpS2hYWzSDBOEomLHFk
VB2LjO4xbnHkqqpUJ+eKouLvZTcsjLXmqu3zVoEgUlT8nRptO+CCImjUuyXL
6IzvbpoKjjccul29g7ScBzvP/2sh0WYIUP4lLIKVPNB7mQPrGamfCUeb8rm6
HXAVKyDlFVatgJVsprtsMJwnqR/Z7KzSGPey/1XyxO4y/q0Cx70sf8vhqCm+
mqtZgcOqvfe2+VXguJfBb/lamve2au2r4PRepr5PhEOz//ij5gzAexn5Kvl/
97I3VvBxTziW4aNmBqN9qVoaK3Dcy8zYBMcSGyPBUbUxLucfzWPcsbf3si42
7e0S0+IqcJR+7gVHu1FxVZviKhZFWssddHqXOZHG2F1pDPteIy+s8+QSL7yX
BbBCp3eZ/+6+G2r7ArqACMTr6mXfWHrt3nHfbls47n/fbq+2lge/b1eG44Hv
WwfHj3/furX0H8lH3+S+JTi+0T1Xg+Mb3fv+3eD25dvetw6O+9+3y87L17xv
V4aj9PNl7ttGvo5msrZ7F/k62g5gW7SZQvM9t7f/eMe0nxff/tA6xoPjg+Gw
vOyedzaOYe/te43xZXT1iqPNOVWW47T93r8XHL7h0tnc1GjpGRhVxOPGtkR9
NhZNqZIMv0iPYns8nZnXWO+fSspXLUZsytOaAYNYynZ5MdbswpqllMiIZkiJ
1ay6TvxSd2hOHKazkXUGSEHyISYBpuMg4uwGBGQSv+fVuPZibSaZJe706g9u
rWcL5x9CDCNw0yJJwTb14/5J8zVv4Qr2Z8RLyw5zGpgEYf/2E6d5f8SuthM0
OFLNCX8zCY8SQpqXnXIzzeMs22/JiSRZNhInz1HC8KxW+R1E2KZsEk7mN9Es
TKMpGar91CIM5vNyFdiOyl4WjWp3vjxXmzqnZVCONtdNQNOhrXUg1lUNj/X6
SOAIWDgb4yCvOWWNzHliBSeEMjBUAK8bNIcEymvoPszMBC2GmoDmg4p+w4B0
A8po0x1j2G3k5d1h6FIfX2v1jVKyRXJmizV4S8EPF28vNt5pCqTB4bZa7zHx
0/P8aE4/LUkXCgeOSyiy61jKKWbxME6u43I+AXbuEzswQTXLb7BZn9rRZfQ5
JtcMKFUjnUeXrvtjaXbeHbTHvv718CzA088Fk2WGnHMlh14rDqyf6EzGpzYv
i7zX55KNZc64jIGYxW1GwTxNs8mtbURBFM9lJxez6CailPGg6jzhRjCMGM13
kN7l3ClmzvVGr9NEGvQFohwdCOIyrb65eaz4asDFjDI8JmPNK5AN4Q3Ww8MN
vF1tCarBybwUjsQld8VkXyt8Cze7GS3Qlyu9Bgq3uQlVFkJ/EDXDpDD5njle
cJkcqv0rQ3BjY1qriQFkIYg5e+IJ+vypicZIqEkh2WHiyBlG2Sim2rd4UDXb
Dud29as7fif4DhUxwfD6LF7kuppSwoLng89Tj7NgEigVys6lqbdWy85tdIHM
VK6RWmeReIhxecxBGWHdwAZ9exWBtUKnEqRr6HtF3gwqsCm9BBuT6Ut05YVG
WBZDJR1urtIJu8iDUvtvXMFM3OEe91ieQl6+BXlqTF9UWl7f2drasFddc7Z0
W22wlctvthXeNKtW3lwVAjKosKSTly6J9RRUugJl8/afLwIBlcIr2dNEE/VN
vo+9InhVuZ7q15WMaeUBXB3JtgG2TcWSJnJ5W/HH6gAs3Dpm26AQlFWDqtrZ
31kBAlrCy/Nn69s2498OYFjLEP7uzbEaBJ+9jSXxzXGR1crcmddSe0yZCQpu
UluMsn2nmN7e9SUTvL4pKV14QZVHBRyQ0tWqVwPtElKSkbRiME0t1fSJe3Eq
Li8E03BnpV7dKGLIIiWxG4TvSERCkBaM/RqWB/fmqKMpwlzcAXnvbKQvUVcR
kT0pDQxuEBgC4eJk/eZUyJbqxj0HuNwYBx7e1nLH9e1Ngr1MbEVpuUqMqV0m
4lSvp+Ui210hC9K/bliN8urBU1p9uWOmvwde6+1K53CnA/h3BBeLwsRcln5t
zEb9NvMRptsliea8P+WEUhquJkBLZUFPFiZ82fYQq+yWJy0dVCYT0Rzlu5Tj
vKhW0JwzbulFmxi8qgBlrACFShLuHiW/Hx79DVSlofwJZ/mddFt5srvbZ9Dx
N0z36pwXILgOtZie6sv+GV9HwW4jcKMP383Sm0k8uqQQDrMO021Q0pFE5mkM
ol9DO3Bdb0MfMFsqP1pcEmFxYCh8E2KjUIzJ6ATjLKIvOXQFGUmw3tnEsTaR
QW2C1gjUvVl6bBMf2yyNsyE5bdytBJtHX2MBtFLtDqrSQ/UBbFNrWFeazdNM
+oHHUybqQVJMo7k014TdxlIj/BlHdnjSX8SyMW6LSP0UeGJqDKk0ZitfkqeE
ADtEf5gEHsoX3ulAvmcGKUhWEWppmB87uHWHwpVm5GYcpPYWmlPOwzUvQPvf
OZXpkzhCeaHLGQMiNrLAIFulAn2EWQ+ivOcNrLgpMQEdg2fla0WS5F31dxi+
9ZB7+LX0e8CdBXMrkSsNIK0lXocXABXGdj0BfuLr4mU0i+Qg/faTJPfpJx8Z
pYR7OkzuIkWGcU0Z6PliTsZQbXZt3PuBX4yx4z7vmHFMR8bK9B0+QqH/DF3B
/HnPHHrD8jS2/kFNtfDumwD1Y23P5ZrhYChbFl8uJlFWez03HtRBG2CGPz9g
2VcqksWcco7oCPwgK8nBxwb2MXd14mIAkm/KcYAsSbw8/AfdB5NozsoQ3b+i
3wxu26HmBggMlaq3aj+54e7jRCYc+Xe5SPIr0fymPZ8IGAWuNQFVEIqlf6Xc
iUNr4ylz765EoGE0OjW06wZcTKnL8X7YHJ4n8ErR1fq+u/0LhLby6ubLar02
Z37jddt1BHu2XS7gMg5BzEjSkZTS9QbDurZZV1tcAcxUX44sKnFGTdkC7Ggi
RwinptZuFSWSKzzJDeaUyZ45oxi8y4DCnykutMN6NxoWzbpyPPkOe79QKbw0
q4qcQQeuYTQp8AbjVULG4ixKpI0eFQSg6D8u3HyLi6B6Ox0cM/AJ2OvYdRXZ
+HYAkr8gIzMHQlJkPMpm3KsTgVmQPeec6uDYukIENkmeUylwROnzmiXBN5m1
AXI1yvLWYAAqtUnyEITHI4vRzMXNSunaLNK51CXtCMo7RlIqSGLyBfUOdbnv
2rpBSM4gCYxD5T8eVqx4vSikC8qt1GkAxLii1lRKMIhMh3ilbEfI4m8HA/s7
hg9bz+vpewkMZc51gFzXLm2PbSmfGvvS8itHgr4A3o1Bkx3ujTQKkYmFaRai
irLe62168HSXx8vDz5qwNQ+etQ0uJKI/X3Qeh+e1jY4sx3DIayhXkh2r4/FX
XvOgzOQxTNbt21N68SP9d/Nn0+v1XBjxATD+2y6XEIKlDG6p7lHeLRkp8I2f
NwMeQ0aIxK7sK0EgaLJ6IP0TN/RNuCYtAVo2gGv0CK1TgZhuL/eZEkNjt2bH
nUPqbcllmqRpjkQDU7UXYUfEfLSkjTEWJG78Zqjxm6+tkgZDTZYDe/gI/hZ0
EgUkI5KY5C/ZLYvKEreS/SYeURallRB8RJWekN0VfJW+8lGm+09T+KSiE1RX
0hX3h3eDWNjbBqudxzLcd1GorGEpB3Br+Vhpee2RSjILm6ESO8mvKFdUmY33
VGoOMSb9HDss1W/+9ar6sb21vR9uPQm3tylp73lpbchvvetUKU0tKweki4kI
gzIFgDRlBxVwSL43eVqtdO4NhrdFNMNq4B7hBn7ZNeqmPdN0iSNuB4rXhZct
p3cD3qd04QR84XTF2SnWbypwP2CLb6ReS9Ex0ErOGYgedFxVmhQMFbNY5kFF
5FjyD0vr4brVVJxQBlapn2Qq0q4ZGdh3HW9L7cltQHJi5TTVnMAeprO4KrQk
SI0WnF/Bdm+QU18fBTKT1p9iEH24SRamgrYsGBJC+Y6PgpFdhzqRSSa1TkMf
roJLkYkOkI7YZhHlgaQYsGNTcVDrnqcVM/Ep0jWsFJjTnSvV6kTZIN3A4Zbl
DHZlF+zCoySbJtxzeZQkC/IYHgDpNe/a6u/w23vmEF7KBNpNRgSHYlG4LYjO
AfFR6fvG9EYVVjyrjWodk1tSuuDA4Y6C/ATHkDqxUWEd8jBKlrbWYSY0OIsw
Kxf4IltQ9p7sffyoh0sqBWpVUED8okixc7Gk9Nli5XMUSLDmfDqR3tXXSSQf
B2EIok+og4TjBGufi4XCDkiqwFASS0A5RglQRWhq8zZN/tuq49xj7TKFJRPt
Tnn5bgjOq8LO0/SeyPWTIrLVvVHUVNRzyiJKx0fPXr3ZxJLLR6/OnuO9lHdt
20t+X9tdp54SzKWNseVel8In8FrXeULQuBHDv2zvbKjfvQBpEJgH240QNw5w
LxsL03ARf2selrpBNJmDLB7TFkhWsFI6HELuzFtuaipCJUwjfrrAfiD9UqRY
vC97dutVPllsjUFsX8wl+4pxYq5AOlcRYHvH5nQlGdk9CIM8hCcawAG+zcXI
vs2poDwYmzQj0+cPkXGwAjFKe8FKCJySrxUNYlRXCdAzirR8a0A9J7gNBU2X
Y4sNTOnKsAIWfYv2iNBWgyLXnVhu3KczIgJy4Yr6j0coo5LnXogNuVODLEJ9
wxWuF4ITdTPhC6lWKN12NsWkqDygcu1Io9t7e11WnNlsXMIeqdaMwsRrlMnR
CL3gnBzOXUNWQtiXaSwHgYOko4xsoVb75DvI8QrcStLg5TqXe0CsnGgEjtBL
TEeB2DZbI/na3tAqkMF8wWYCumm1QfmYPNJ40wLLDdMh9uEmG4abfo0Xicxf
Er2YoBgBNoWYGrAcvzoQmVfqZbrQmKljlh7HsBl2B4SSgKquMp9pZn+SeY6B
ZfO5NoGAvRygYZjnwLUs5FU3Ez2iIlGXXc3YV6rrrXWDMc2tTanHOow1X4AO
mmOJLdo0iTQBXI4LFxohWxNfpxNAfbCuVVA51ZWbNozEdKJiKnDjN9okunQP
aB16xBXybbEyipPIw66QAC/QygXkJEKBPuB8Q/56zpo+EGg8FYbOxOv6rpBf
XLl+7jFr4dF4qwl7HgBBKZ0TVTFPwQn0jUh7p1DJZREAK64zNJyP13J9Mpe6
fuL+irWnsLprQu0XggmkAYnpIddtEydjR8v/K6/itmwZRvvExLMK4Bb5RJhW
4Ix9nNPI/BXP0F3uqy7XZKwM2SGTUhbPMUBQOwwQVvh+kgk6AlEA31AEB/FD
mPeSY9bY4NjV8EwvYRfNWjge1UoUcxvl7Mp1EmFBjHGOhVhPCRAyuUXURxnG
0TC9TewgFtSsrRoMpQ4uSqLlYteR2XnyRKoHEE0CV9/Z2ntkG5/AHfR/89Mi
E/7KcgrKBHDIZ8k/uWqB3f61XE463NW2kKOIQOsegkDM6yNdh+jmppRYZul1
YQDENXyfDrq4AQPfLeLbX6l/AobszHIueBkNszRX0rOkSJU7KUxA2rLaesO0
/aUStbYgpws3o0AezA8A7GxXF8cHLNze49Xt7W+IJuvWt60lIhBvU7TTiwx8
TSFccIMo8TF7coSCjgd7OXYlnkk7VNNVvSM1HCQL2jnVOp5vAC1pt3B5EVdE
r48ldWqhMQMZA9SKYSEeSrcwKf/qz9QNyLAZlYt8aG587XDCFkynUUasCMno
riidX1r/qBUYNOa1BylGPEhoHHmWPpS+/YDRvsmMf9eIb8Kq2Lg+oFXmmsLC
JIqC8Sp/6R+NmWafBLM7Bzov/JT+cBki+MMFrBhmj8rsA9uSlSXvbre9OyAK
KL+LZ817d6fp3c9Zr28vqVCG2kb8TTrRO+wc9Y7rvOdt2roehTe4aWT4YJoW
R8N/cs2DX0DE2ydm7FMx93qQxi2kBwKnCKQUjRfY9lSxJOekVFCI5AzSJK9A
vhlZbci6JulixzPHHEJU8xmm42ekJKFWkIEEEWixByn7ir2UuPX2kQQnRlKl
GWUx+y11vzg8O2x86gAdUTCsuGvXhRffGvb3gATpOd85REZlJ/P2zal0wIDR
pXEgcC8bE2lNAl7IMAUP7OzvAPwhdnGKhu8QvucL4Hw000uaSWMQsSJByJOX
yhs1leP3eFiggh65C0F3AurH5TBqxdPBgdXSOEL7yHmdbbrEwLwqwMCB/wu4
Hey9To93YbDuJv6zs7H1SD3f6OKuJlwyluu/it6+PksDMpvnT0GhkYASEFes
+Yacx7tbj+BauJ1QQSKkcZK5GFisFYzREdbAB8CDdMS+bkd/l9E83/B9GH84
enV8Yp6d/OX07PyPfJ0vWYGg0tgnyGaKX9nMyn6vj/ZORxidRTY7wBcOyLyd
H7yfTg5m+QG+deB26Sk3tsC8Jvz7aUBNAi5BI/jvyBnNT08unrNzlu69F+mN
eU2RNWgeDQ9BJjJncKRgR+BypbD6DfMr7w+ba/+CPhuajCyIw4LH/fUv5td4
cAC//uGqKOb5weYmnkLgNcN3oLchmD2AZvPmcpNG3QQJeVFs/pEHhbdfALrh
9T8AoidFejCZh/DUn/U9ee5klBQYsG/Mi2hBBrgLFk7VS2Jf569Vdv1zMi3C
qJigYQtkp944qw14OIvMS7hEB4ssrY4WzaI/wzomvST9Y6fRF3EEJycjF9/6
cANtwzuGMH2RoaPG2sxgi1GLt1oSGQJpKlDMrrAKjZw+FFp6Bk1hhobNLdvq
8fNvYmRfoL0sCk2iWORUEk2qoeAnA1gPU/BUGaH6srSfAVsk1WyF8VBxxsGp
oKxl+SKiIH0WyPLFAE8sh7sYCctKhiD2wYGLsTq5+nvwREmZMjxO8Pez82PY
Yn42j5loEDBuYaVt7HZ7Q1t/3KIPOMQLkOYn2CmFz2auOJhIdH/Kjx8Lr5Hv
15USCxwmjh0VCtQhKnUbglGy5pVKu8PfPrtOci0LY/luZZ6bm5teNh6GMVEV
zYQzbMJn+PSG4004AIdRWkxQvRjqCTxBrgQQ5hayGFVF5JOgB69h/Zy1Lv9r
zl7R729O/vXt6ZuTY/z9/K+HL17YX3gIeez8r6/evjh2v7nXbREb/BM+NaWP
eJC1l4f/WGNSWHv1+uL01dnhizVl9O5+QrsDV8KhMH7gSYVH6Kp0E9N9dvSa
+hMiOrb7/Scb/Ovj/iPQT9Ag0JUOppI60bWEd+t1RUF9bxjNkwLkZI4NpNh0
VLwEgz9/3o9wPml440X7aIDkndF6QrAalou2qa4LDoU15xzahKvFbltw9rlc
l+W7pYrqszQs/Y2vlV2IHE4SeKTtqDiqRS0pTOrsKgHEYyBUGz0vCks3Mm8I
FeJ2VtEAc2fkhqAmlxpCFLEJCXanVqTuk38+BCgrrz8/PS6F0xOu+2bFHxxE
peZfvP+1SdhNn/yCg3zgjIP+h+cvPjx//eH49IPfHuJDLcL3AxKJWEXQHPLh
S0Oy/R1Agj5kRHKvJ/+DP+QzVHTsr6b5ky+Ok7Nvj5PaU5/686F+tNW5Rj7d
STrAFCx3xqVjtvN7jlUWEHuV9jtFT7YnFSArKryxB6n4zHBsHsAyEbWs4tcC
ge+oU7OqNbyi/Z6H8DyRwDykvby3RG8hXpQZwVJNJi0xQgzgoCZENbe9RCtU
RTmUZRMJSW8I0/GjHKULdgkVgowDELBg4WZtaVzD2lqub61VYpvWOMRHwgpB
7WoKTfIikxpALfWbkOqarphiF3XyUF9XHzk+s0YRHv6apRYlbyW67awTWmM4
7HJbg0PWsIKeiwsprJC91hohsoZrB5kHzZK3T2lv0fZvX6zHCa1hO1XYNz+E
bo2jGTckks6+bWN61rwwOuPC6NYkUmLND6O7RNVThxjcmrXGoLk1L3awEhNJ
QUg6QClA8q4wJAx+qVPy43B7q52SD0cj824xSnPsyuhFU3NTyZCURzLra2vT
+Fb6fPYUxjcxqsGxOPVgcbeoIoRo9JZ+qjg2yAzYicXvsvrzhg5BnOcqwhx+
djehA0dbXkbZJCGrDC8L27+xNYDiCHSzcjjNi9xz+Kz5xE0htPqOa4r06Mne
lkW1aBj9vllfezXIU4qIcIn9uVFxmkNbGEZq0CMjON8Vs9t8bYNI0loWnBLz
yKyj84C0JQsAC9ywEKAafx10uLCfb0SZJLG5RbFWYm4ADCsBGiSLtVRgX6MA
BEl3zRdzquzJwdBvbVDTq3nh1CUQksigEMpGmU1jTydb38mLRg0R6RSF19tr
+qp/psnNTvxqs4G9bRIPyBdjtER4x9xjBeitfs/uzxJA1ojnxyFaCdRYmxg2
CUSn87t4Rs7W+W2IDlV17lB7S0z3+xnXM5WCzTqIeIrxIaF6m+dgASDXE7a0
mqF1y7nh7MnHJVJz8lspSmBBJwYkXa9BYfaPCIeOWpZLpVkxb19h9k4Pk5aD
QBXPqE6NQH8UoCCt9aQfH4ZRZSm5df0wMZ3b0l87Z9kLgaZbOQvcJ+Tj1y6g
AL/1wbtq2qIHShaydFQk8KUxJ1/YmPOsF5T3sld2oxXKXQB0Cf/z6x+jfYQD
MJlEMW5K7jFOQnApAJpPoPgSFzS7ooFcSSPd4J1zIYS8dbk7ZuYX6XCVZreO
/CpHrnVp2+idaF2a/Bsa5PFeuKK7YG1UmB/wNeZLJ2P1UMc41XIZGBzHgUf0
jjzXCmI/7DfIUYZtYgWmxoloCiPCwse3NWxJG1TO3pDk0YOAoUK9XnGKXM4z
m4nz1yJa/bV89SRqJaNoQB1dNnGSvIsdi1CDj8+MyL0ASkFgue5WT0DSHHzJ
mvJBInZgyIPRZeetBlGim99xQpcNy1GCOrSWLNFODCyPaINSFpvx/mazG8U9
SQha6hOG1GmYlUoFRLkLjeZklDH/Yks8+xln+CMTyF+lsIPxJCxSYL1aXYdC
3G4wATwBkuaqHgf64kSe+k/03a0TNBsa3kOgESg5h62WYMY5ZZSLv71gOFso
cS/s95celpJtzyZEIn5HKOulcw7XFPctnZAoA1WwiDnhRs6uXPe5x31dv1di
VUDXVRMinwArT2HVaAFAkWR+5k7jzhbjJ3Xi5pWMZpIm6l4utc22Uh6Pc/ja
XUbMDfzhdIyyRFjt+d5zU0lRl+f+RA0vc7q9997bGpO04JGBryh1a7YPSUNl
HcfUcFGd2HFXGcKDge3q9orlRXAtdxvtjrpndI2BxtqU2nW6dlBUZ3HY1+kk
uN0KLPqxGo7NYbXDPNvgmuyIbl75acgClm9sMvHdFkl50zSOviShuPEA7oRb
8L9++wE8rRwOujmt9/IrY0vXAP/V27KeHNGwCFHX3JPDaM5ZZXodsIuT1ckh
dfnwOJbO1ZTr0TZb+dn7zedd//dcGrlAyzms3jybm+31fPlrez4olM6T6+jr
dhsXv60iJod9Xfzdfz8wXt0bur5VRPOk+tZVW7BInqdnSRsDuUMsUG6VLve5
YWx6v23+p19g+tLsImd7U49Xmk9brOiVT+qLMt22paowfo/Z+MXm2Vhy4e9s
Kko51MOZWaiH1FijKqSW5fIdIuGucZtWg75lb7wayfVb2Tze3tpayszwARS2
QSkB+fK1IKNr/i5scd+s4wwb5lzSeVy2V8sSlaFWFlhefusqaTmWJzsJ66uB
X6rl/BlruOBxzBEN9K1XEo6aF+M/88nrOTCYPoVBAA+2Ppu4ikPs9Pcfc4Uw
rz3cyXu0EycFXrqXmMUNH5+lritK7fZdPzk62yAH/euVsRcPm+n5M9EHkPwf
iDlXhfwzjs9zGMS8oFG+xdnRCuaiUH7GQvTSkaZj32IxXgnzz1jImSe1f4tV
2MLjP/AaXNHy+y3iyNbMIftEnNg6PBpjxSkPRqJAvNZSepr1CYFDQodoqaB1
SiN6WJwtecFJwvZ9dMvN3lHlCzNKb2b0lxar+erYxGrn3xyVp9z1cjU8CgJ1
jO8Bj678/DdH5f8BVCk1+L85Kn9gqsR6919eU3JdBxoUpUf7j5euD743b0HU
JYvPZRZN7RqXrMH2MKgsobS+1mUgvLLrlFlod5rqVnWxH6Ije90s3UFM0l3M
bBgtElVMZY0nt19+nbbPwr3X6a8OViPL/t7W2SwNrr5KcWF8cbhsb4jvCjKy
bH+lY7wc8u29bdJ+jrza6Ydej1NdiFlH+//GsvW0WDfKa13C3g9fq3Xjq4Hc
hP1PgRef+HrAvqupjZ8EK7oBV6LmLwgz5XN+BtCUWvE1gQ0brVv267uhNTTA
14V5FBdR0kwcKwLNI3w1qKd1KfBTqELrp54ef73DR6fnc4/fVwNXXJ33g1dz
JwhuHukrAx4m45BqHzSugJ9hgGqxhst3QfByOg4pfLxnjpvdydYFrsLUq2q4
UEtUnvkX09/42thaZEl4hXn9D4OttzD8X2H4B8HWzlfHFrC6ywfC1MlFdHk3
lj410hOwtPvVsQQncJbO4gc9hqU5HoS69r463tIBpX4+EMZe8egPgqv9O3C1
v9uX+SlHO2ZN1AZitaBQAbE/92NvTTr0F2Rvr2H4B0Hqo69OgFr4KZxHdYX8
C6Hshc7xOioe5uA+/iaX6AOijKjsobDV//oyh+ZHSSLZwyDtiCfByGCY5GFQ
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
JHJ+mSrn4kE8cI+G5TQ8pDdQoAHkbFSdt1J11vILX5SgGrZdLkOMRYjFycqf
LEYoHlxTQ+6Nng9DNSvuQIsgAqfUhu+V2ZWdN8xeqmq7YeaTBWIT5Ht/PD5V
8kal0qRfuZbVAhLz5RHCaDl50QmvLQLlhaUskuJIiWjb4J4Pylla63uF8ihI
t/Go5wmyzZZ7eyoarfft5Nm+Ej8blK7cljV4oKlk/LGEwFoi5D1xWMvIRLsW
iSToeNfKw/4KnqVwyyiNEM+pYhjNYyru15Bs32xGcikt9TMx3Vpa2SLbz0It
i/RNZ8EWatXrf6Npn2SdVaTUloucdn/3M5d4JqeyJDrYdVpxqby3VmZpXHK1
9rR3gqtL/YjRL43kGLivm9i7dxP97nXSn8/wOknt2oZwk7vv846amzi2Cm6H
lhLbnixcLfWLXKBcQleq21uW664IX/TQ6GJEFPOmmytQefSyiSa+WV3eVx0z
95DUwxg1oyv63Sn3u1Pud6fc7065351yvzvlfnfK/e6U+90p97tT7nen3O9O
ud+dcvdzygWS5UIC5SxCiErpUfzRKkl3hySUdivWSGRA+DlFt5aaijB3U1jn
iwwdYj1jV2HzVXcECOce86iuC2sLS3+TvlrKLvvW6W1lWtxvykITNPvHiRFN
2VXVTWjNpjh18cNVr+MPhIXyjn4uIiqj/WC4KBdL+UxUlAf7zjGhGYmy0JVT
EZsRc0dGs3Pnlur7kZxF4/nmrKbqCTIr3KaR5BJ+5l55I9GcIDuWPiBe6pT8
WpBBSXhlOToWswA3aSr1ON/82bxREhCBMRqNgFeXDZ4eDLnfgJdhQF37Okom
ZM40P2/WkCSX7CqXiXg9XeX4SAw3Ti+v8ziUtp244X9rYzoAEZIEvo4lBuMx
duAou6Cd1dc9rEYk8r5b+8kGx41odrWtsJKOdQR7jBKSw680MIB2QBrVptd8
95PJM72BP6hSjRX6eFLGXc4SgtohETbyPDOCu0jBaFpllUMHoMku4bGbCB9J
rZOd/CUMxCTl19CRHkftpSC4j/UgyuDdSTiZ30SzMI2mIeoI4daeeXX4klgD
l4VcUGVbZhMNfOGuTncl3tDYl04oCma8Qbesd+aqtNZ65i4cEmCTcIdQTGve
E9eJzkNvbfsbhbJvzmnbsQfk8P42rPYzuScCUfVYjkQzWFgVVSgRHlYCJA82
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
h+9UcSdFPi8QH73g/wOOyefmEd8BAA==

-->

</rfc>
