<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-amsuess-core-coap-kitchensink-03" category="info" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title>Everything over CoAP</title>
    <seriesInfo name="Internet-Draft" value="draft-amsuess-core-coap-kitchensink-03"/>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <date year="2023" month="March" day="13"/>
    <workgroup>CoRE</workgroup>
    <keyword>CoAP, NTP</keyword>
    <abstract>
      <t>The Constrained Application Protocol (CoAP) has become the base of applications
both inside of the constrained devices space it originally aimed for
and outside.
This document gives an overview of applications that
are, can, may,
and would better not be implemented on top of CoAP.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Constrained RESTful Environments Working Group mailing list (core@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://gitlab.com/chrysn/coap-kitchensink"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>[ See abstract for now ]</t>
    </section>
    <section anchor="applications">
      <name>Applications</name>
      <section anchor="publish-subscribe-services">
        <name>Publish-Subscribe services</name>
        <t>Publish-subscribe services (pubsub) are a widespread tool for the some of the fundamental use cases of Internet of Things (IoT) protocols:
acquiring sensor data and controlling actuators.</t>
        <t>A pubsub implementation has been in development since shorlty after the original CoAP publication
and is as of now still in draft status, as <xref target="I-D.ietf-core-coap-pubsub"/>.</t>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>MQTT</t>
          </dd>
          <dt>Strong points</dt>
          <dd>
            <t>Once a topic is set up, data can be sent and received
by CoAP clients that are not even aware of pubsub,
as long as they can PUT or GET (possibly with observation) data to and from configured URIs.</t>
          </dd>
          <dt>Weak points</dt>
          <dd>
            <t>To implement a pubsub broker that supports arbitrarily many topics,
some (potentially difficult-to-implement) compromises have to be made.</t>
          </dd>
        </dl>
      </section>
      <section anchor="remote-configuration">
        <name>Remote configuration</name>
        <t>The OMA LwM2M protocol
(which caters for several applications at the granularity of this document)
includes provisions for configuring and monitoring devices over the network,
setting properties such as a time server
and reading properties such as a network interface's packet count.</t>
        <t>In parallel, the NETCONF protocol and its YANG modelling language
have been ported to the constrained ecosystem as CORECONF <xref target="I-D.ietf-core-comi"/>.
By using numeric identifiers with good compression properties,
it can efficiently express data both from shared and from bespoke models in single requests.</t>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>SNMP [ ? ], Puppet [ ? ]</t>
          </dd>
        </dl>
        <section anchor="network-status-monitoring">
          <name>Network status monitoring</name>
          <t>Related to remote configuration,
CoAP is used as the signalling channel of DOTS (<xref target="RFC132"/>).</t>
          <dl>
            <dt>Strong points</dt>
            <dd>
              <t>CoAP over UDP/DTLS provides operational signalling on links under attack,
on which a TCP/TLS based connection would fail.</t>
            </dd>
            <dt/>
            <dd>
              <t>CoAP's consistency across transports
makes it easy to adjust to situations in which UDP is uanvailable,
sacrificing some properties but leaving the high-level protocol unmodified.</t>
            </dd>
            <dt>Weak points</dt>
            <dd>
              <t>CoAP's default parameters for flow control (such as <tt>PROBING_RATE</tt>) are unsuitable for this application
and need to be customized.</t>
            </dd>
          </dl>
        </section>
        <section anchor="runtime-configuration">
          <name>Runtime configuration</name>
          <t>Related to remote network configuration,
but used without human intervention,
CoAP is used negotiate cryptographic keys and other short-lived network configuration,
eg. in <xref target="CoJP"/>, <xref target="ace-key-groupcomm-oscore"/>, and <xref target="OpenThread_Multicast"/>.
This is comparable to how <xref target="DHCP"/> or <xref target="IGMP"/> exchanges configuration.</t>
          <dl>
            <dt>Strong points</dt>
            <dd>
              <t>When the exchanged communication is essential to joining the network in the first place,
CoAP traffic exchanged over a temporary link can easily be proxied into the actual network,
even when routing is not an option yet.</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="software-updates">
        <name>Software updates</name>
        <t>The SUIT manifest format <xref target="I-D.ietf-suit-manifest"/> can be used to describe firmware updates
that can be performed over CoAP or any other protocol that is expressible in terms of URIs.</t>
        <t>The OMA LwM2M protocol also contains provisions for firmware updates over CoAP.</t>
      </section>
      <section anchor="network-file-system">
        <name>Network file system</name>
        <t>Using CoAP as a backend for a no-frills file service
is a simple composition and is provided as a demo by the aiocoap library and a module in the RIOT operating system.</t>
        <t>It has never been specified and described;
that gap is closed in <xref target="coap-filesystem"/>.</t>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>WebDAV, NFS, FTP</t>
          </dd>
          <dt>Strong points</dt>
          <dd>
            <t>CoAP protocol already provides random read access (through the Block2 option),
optimistic locking and cache (through the ETag and If-Match options)
and change notification (through the Observe option).</t>
          </dd>
          <dt/>
          <dd>
            <t>Files can be used in other CoAP protocols without the client's awareness (e.g. for SUIT)</t>
          </dd>
          <dt>Weak points</dt>
          <dd>
            <t>Transfer of large files is inefficient due to the repetition of file names in block-wise requests
(mitigated when using CoAP-over-TCP and BERT).</t>
          </dd>
          <dt/>
          <dd>
            <t>Advanced file system functionality (file metadata, server-to-server copies, renaming, locking)
would need additional specifications.</t>
          </dd>
        </dl>
      </section>
      <section anchor="network-address-resolution">
        <name>Network address resolution</name>
        <t>The Domain Name System (DNS) can be utilized from CoAP using the mechanisms described in <xref target="I-D.draft-lenders-dns-over-coap"/>.</t>
        <dl>
          <dt>Strong points</dt>
          <dd>
            <t>Savings in firmware complexity by using infrastructure shared with other applications.</t>
          </dd>
          <dt/>
          <dd>
            <t>Potential for traffic (and thus energy) reduction by using request-response binding.</t>
          </dd>
          <dt>Weak points</dt>
          <dd>
            <t>Not deployed in existing networks.</t>
          </dd>
        </dl>
      </section>
      <section anchor="time-service">
        <name>Time service</name>
        <t>Whereas no attempt has been made yet to specify a time service over CoAP,
a primitive time service can be assembled by creating a CoAP resource that returns the server's current time,
e.g., in a UNIX time stamp represented in decimal ASCII, or in CBOR using any of timestamp tags (0, 1 or 1001).</t>
        <t>Such services have been in use since at least 2013,
and are easy to operate and scale.</t>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>SNTP, NTP</t>
          </dd>
          <dt>Strong points</dt>
          <dd>
            <t>Savings in firmware complexity by using infrastructure shared with other applications.</t>
          </dd>
          <dt/>
          <dd>
            <t>Compact messages.</t>
          </dd>
          <dt/>
          <dd>
            <t>Reuse of existing security associations.</t>
          </dd>
          <dt>Weak points</dt>
          <dd>
            <t>None of the advanced features of (S)NTP, such as distinction between receive and transmit timestamps.
Not even leap seconds are advertised
(but that can be mitigated by using a time scale that is not affected by them, such as TAI).</t>
          </dd>
          <dt/>
          <dd>
            <t>Generally only suitable for the last hop in time synchronization.</t>
          </dd>
        </dl>
      </section>
      <section anchor="terminal-access">
        <name>Terminal access</name>
        <t>Virtual terminal access was one of the first network applications described in an RFC (<xref target="RFC15"/>),
and popular to date.</t>
        <t>There is no full specification yet as to how to express the data streams
of character based user input
and character based text responses in CoAP.
Necessary components,
as well as optional future extensions,
have been sketched and implemented for the RIOT operating system at <eref target="https://forum.riot-os.org/t/coap-remote-shell/3340/5">https://forum.riot-os.org/t/coap-remote-shell/3340/5</eref>.
Unlike SSH,
that sketch assumes the presence of a single virtual terminal
(as opposed to one created per connection).
On platforms with dynamic resources and per-process output capture,
an SSH-like muliplexing can be created based on the resource collection pattern described in <xref target="I-D.ietf-core-interfaces"/>.</t>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>SSH</t>
          </dd>
          <dt>Strong points</dt>
          <dd>
            <t>The head-of-line blocking that occasionally plagues TCP based connections is eliminiated
in favor of on-demand recovery
(i.e., observing the last output will produce the latest chunk of output,
and the terminal may recover skipped data later if it is still in the device's back-scroll buffer).</t>
          </dd>
          <dt>Weak points</dt>
          <dd>
            <t>The default retransmission characteristics of CoAP make operations painfully slow when encountering packet loss.
Tuning of parameters or the implementation of advanced flow control as described in <xref target="I-D.ietf-core-fasor"/> are necessary for smooth operation.</t>
          </dd>
          <dt/>
          <dd>
            <t>On-demand recovery is incompatible with regular terminals,
and requires either fully managed terminals (where the full output is reprinted when lost fragments are recovered)
or accepting the loss of data where printed exceeding the network speed.
(Data is still lost gracefully, as the loss is detected and can be indicated visually).</t>
          </dd>
        </dl>
      </section>
      <section anchor="chat-services">
        <name>Chat services</name>
        <t>The CoMatrix project <eref target="https://comatrix.eu/">https://comatrix.eu/</eref> has demonstrated that the Matrix chat protocol
can be simplified to the point where it becomes usable transparently with constrained devices.</t>
      </section>
      <section anchor="web-browsing">
        <name>Web browsing</name>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>HTTP <xref target="RFC9110"/> over its various transports; Gemini (<xref target="gemini"/>).</t>
          </dd>
        </dl>
        <t>By virtue of cross proxying to HTTP,
CoAP is generally capable of transporting web pages the same way as HTTP,
albeit at a reduced feature set (in particular, most HTTP headers).</t>
        <t>CoAP offers only niche benefits over HTTP when combined with HTML,
the predominant markup language on the web:
Any benefits of a more compact transport or implementation are dwarved by the typical size of pages and the complexity of the HTML ecosystem.</t>
        <t>CoAP might be a suitable transport for Small Web environments such as Gemini <xref target="gemini"/>,
which can be rendered even by constrained devices.</t>
      </section>
      <section anchor="e-mail">
        <name>E-Mail</name>
        <t>While E-Mail was part of the considerations that led to the definition of the Proxy-Uri option
(which would technically allow a cross-proxy to accept POST requests to, say, <tt>mailto:office@example.com?subject=Sensor%20failure</tt>),
no attempts are known to send or receive E-Mail over CoAP.</t>
      </section>
      <section anchor="video-streaming">
        <name>Video streaming</name>
        <t>The use of CoAP for real time video streaming and telemetry from Unmanned Aerial Vehicles (UAVs)
has been explored in <xref target="I-D.bhattacharyya-core-a-realist"/>.</t>
        <t>It is unclear whether CoAP could actually outperform unconstrained streaming protocols such as WebRTC,
or whether devices that produce and consume video benefit from the constraints of CoAP.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="gemini" target="https://gemini.circumlunar.space/docs/specification.html">
          <front>
            <title>Project Gemini, speculative specification, v0.16.1</title>
            <author initials="" surname="solderpunk">
              <organization/>
            </author>
            <date year="2022" month="January" day="30"/>
          </front>
        </reference>
        <reference anchor="CoJP">
          <front>
            <title>Constrained Join Protocol (CoJP) for 6TiSCH</title>
            <author fullname="M. Vučinić" initials="M." role="editor" surname="Vučinić">
              <organization/>
            </author>
            <author fullname="J. Simon" initials="J." surname="Simon">
              <organization/>
            </author>
            <author fullname="K. Pister" initials="K." surname="Pister">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes the minimal framework required for a new device, called a "pledge", to securely join a 6TiSCH (IPv6 over the Time-Slotted Channel Hopping mode of IEEE 802.15.4) network. The framework requires that the pledge and the JRC (Join Registrar/Coordinator, a central entity), share a symmetric key. How this key is provisioned is out of scope of this document. Through a single CoAP (Constrained Application Protocol) request-response exchange secured by OSCORE (Object Security for Constrained RESTful Environments), the pledge requests admission into the network, and the JRC configures it with link-layer keying material and other parameters. The JRC may at any time update the parameters through another request-response exchange secured by OSCORE. This specification defines the Constrained Join Protocol and its CBOR (Concise Binary Object Representation) data structures, and it describes how to configure the rest of the 6TiSCH communication stack for this join process to occur in a secure manner. Additional security mechanisms may be added on top of this minimal framework.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9031"/>
          <seriesInfo name="DOI" value="10.17487/RFC9031"/>
        </reference>
        <reference anchor="ace-key-groupcomm-oscore">
          <front>
            <title>Key Management for OSCORE Groups in ACE</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Jiye Park" initials="J." surname="Park">
              <organization>Universitaet Duisburg-Essen</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="6" month="March" year="2023"/>
            <abstract>
              <t>   This document defines an application profile of the ACE framework for
   Authentication and Authorization, to request and provision keying
   material in group communication scenarios that are based on CoAP and
   are secured with Group Object Security for Constrained RESTful
   Environments (Group OSCORE).  This application profile delegates the
   authentication and authorization of Clients, that join an OSCORE
   group through a Resource Server acting as Group Manager for that
   group.  This application profile leverages protocol-specific
   transport profiles of ACE to achieve communication security, server
   authentication and proof-of-possession for a key owned by the Client
   and bound to an OAuth 2.0 Access Token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-key-groupcomm-oscore-16"/>
        </reference>
        <reference anchor="OpenThread_Multicast" target="https://openthread.io/codelabs/openthread-border-router-ipv6-multicast#0">
          <front>
            <title>Thread Border Router – Thread 1.2 Multicast</title>
            <author initials="" surname="Simon Lin">
              <organization/>
            </author>
            <date year="2022" month="March" day="15"/>
          </front>
        </reference>
        <reference anchor="DHCP">
          <front>
            <title>Dynamic Host Configuration Protocol for IPv6 (DHCPv6)</title>
            <author fullname="T. Mrugalski" initials="T." surname="Mrugalski">
              <organization/>
            </author>
            <author fullname="M. Siodelski" initials="M." surname="Siodelski">
              <organization/>
            </author>
            <author fullname="B. Volz" initials="B." surname="Volz">
              <organization/>
            </author>
            <author fullname="A. Yourtchenko" initials="A." surname="Yourtchenko">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="S. Jiang" initials="S." surname="Jiang">
              <organization/>
            </author>
            <author fullname="T. Lemon" initials="T." surname="Lemon">
              <organization/>
            </author>
            <author fullname="T. Winters" initials="T." surname="Winters">
              <organization/>
            </author>
            <date month="November" year="2018"/>
            <abstract>
              <t>This document describes the Dynamic Host Configuration Protocol for IPv6 (DHCPv6): an extensible mechanism for configuring nodes with network configuration parameters, IP addresses, and prefixes. Parameters can be provided statelessly, or in combination with stateful assignment of one or more IPv6 addresses and/or IPv6 prefixes.  DHCPv6 can operate either in place of or in addition to stateless address autoconfiguration (SLAAC).</t>
              <t>This document updates the text from RFC 3315 (the original DHCPv6 specification) and incorporates prefix delegation (RFC 3633), stateless DHCPv6 (RFC 3736), an option to specify an upper bound for how long a client should wait before refreshing information (RFC 4242), a mechanism for throttling DHCPv6 clients when DHCPv6 service is not available (RFC 7083), and relay agent handling of unknown messages (RFC 7283).  In addition, this document clarifies the interactions between models of operation (RFC 7550).  As such, this document obsoletes RFC 3315, RFC 3633, RFC 3736, RFC 4242, RFC 7083, RFC 7283, and RFC 7550.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8415"/>
          <seriesInfo name="DOI" value="10.17487/RFC8415"/>
        </reference>
        <reference anchor="IGMP">
          <front>
            <title>Internet Group Management Protocol, Version 3</title>
            <author fullname="B. Cain" initials="B." surname="Cain">
              <organization/>
            </author>
            <author fullname="S. Deering" initials="S." surname="Deering">
              <organization/>
            </author>
            <author fullname="I. Kouvelas" initials="I." surname="Kouvelas">
              <organization/>
            </author>
            <author fullname="B. Fenner" initials="B." surname="Fenner">
              <organization/>
            </author>
            <author fullname="A. Thyagarajan" initials="A." surname="Thyagarajan">
              <organization/>
            </author>
            <date month="October" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3376"/>
          <seriesInfo name="DOI" value="10.17487/RFC3376"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>Publish-Subscribe Broker for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>SmartThings</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <date day="7" month="November" year="2022"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP), and related extensions
   are intended to support machine-to-machine communication in systems
   where one or more nodes are resource constrained, in particular for
   low power wireless sensor networks.  This document defines a publish-
   subscribe Broker for CoAP that extends the capabilities of CoAP for
   supporting nodes with long breaks in connectivity and/or up-time.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-11"/>
        </reference>
        <reference anchor="I-D.ietf-core-comi">
          <front>
            <title>CoAP Management Interface (CORECONF)</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>consultant</organization>
            </author>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>Acklio</organization>
            </author>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Ivaylo Petrov" initials="I." surname="Petrov">
              <organization>Acklio</organization>
            </author>
            <date day="17" month="January" year="2021"/>
            <abstract>
              <t>   This document describes a network management interface for
   constrained devices and networks, called CoAP Management Interface
   (CORECONF).  The Constrained Application Protocol (CoAP) is used to
   access datastore and data node resources specified in YANG, or SMIv2
   converted to YANG.  CORECONF uses the YANG to CBOR mapping and
   converts YANG identifier strings to numeric identifiers for payload
   size reduction.  CORECONF extends the set of YANG based protocols,
   NETCONF and RESTCONF, with the capability to manage constrained
   devices and networks.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-comi-11"/>
        </reference>
        <reference anchor="RFC132">
          <front>
            <title>Typographical Error in RFC 107</title>
            <author fullname="J.E. White" initials="J.E." surname="White">
              <organization/>
            </author>
            <date month="April" year="1971"/>
          </front>
          <seriesInfo name="RFC" value="132"/>
          <seriesInfo name="DOI" value="10.17487/RFC0132"/>
        </reference>
        <reference anchor="I-D.ietf-suit-manifest">
          <front>
            <title>A Concise Binary Object Representation (CBOR)-based Serialization Format for the Software Updates for Internet of Things (SUIT) Manifest</title>
            <author fullname="Brendan Moran" initials="B." surname="Moran">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Koen Zandberg" initials="K." surname="Zandberg">
              <organization>Inria</organization>
            </author>
            <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
              <organization>Nordic Semiconductor</organization>
            </author>
            <date day="27" month="February" year="2023"/>
            <abstract>
              <t>   This specification describes the format of a manifest.  A manifest is
   a bundle of metadata about code/data obtained by a recipient (chiefly
   the firmware for an IoT device), where to find the that code/data,
   the devices to which it applies, and cryptographic information
   protecting the manifest.  Software updates and Trusted Invocation
   both tend to use sequences of common operations, so the manifest
   encodes those sequences of operations, rather than declaring the
   metadata.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-suit-manifest-22"/>
        </reference>
        <reference anchor="I-D.draft-lenders-dns-over-coap">
          <front>
            <title>DNS over CoAP (DoC)</title>
            <author fullname="Martine Sophie Lenders" initials="M. S." surname="Lenders">
              <organization>Freie Universität Berlin</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Cenk Gündoğan" initials="C." surname="Gündoğan">
              <organization>HAW Hamburg</organization>
            </author>
            <author fullname="Thomas C. Schmidt" initials="T. C." surname="Schmidt">
              <organization>HAW Hamburg</organization>
            </author>
            <author fullname="Matthias Wählisch" initials="M." surname="Wählisch">
              <organization>Freie Universität Berlin</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   This document defines a protocol for sending DNS messages over the
   Constrained Application Protocol (CoAP).  These CoAP messages are
   protected by DTLS-Secured CoAP (CoAPS) or Object Security for
   Constrained RESTful Environments (OSCORE) to provide encrypted DNS
   message exchange for constrained devices in the Internet of Things
   (IoT).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-lenders-dns-over-coap-04"/>
        </reference>
        <reference anchor="RFC15">
          <front>
            <title>Network subsystem for time sharing hosts</title>
            <author fullname="C.S. Carr" initials="C.S." surname="Carr">
              <organization/>
            </author>
            <date month="September" year="1969"/>
          </front>
          <seriesInfo name="RFC" value="15"/>
          <seriesInfo name="DOI" value="10.17487/RFC0015"/>
        </reference>
        <reference anchor="I-D.ietf-core-interfaces">
          <front>
            <title>Reusable Interface Definitions for Constrained RESTful Environments</title>
            <author fullname="Zach Shelby" initials="Z." surname="Shelby">
              <organization>ARM</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>SmartThings</organization>
            </author>
            <author fullname="Christian Groves" initials="C." surname="Groves">
         </author>
            <author fullname="Jintao Zhu" initials="J." surname="Zhu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Bill Silverajan" initials="B." surname="Silverajan">
              <organization>Tampere University</organization>
            </author>
            <date day="11" month="March" year="2019"/>
            <abstract>
              <t>   This document defines a set of Constrained RESTful Environments
   (CoRE) Link Format Interface Descriptions [RFC6690] applicable for
   use in constrained environments.  These include the: Actuator,
   Parameter, Read-only parameter, Sensor, Batch, Linked Batch and Link
   List interfaces.

   The Batch, Linked Batch and Link List interfaces make use of resource
   collections.  This document further describes how collections relate
   to interfaces.

   Many applications require a set of interface descriptions in order
   provide the required functionality.  This document defines an
   Interface Description attribute value to describe resources
   conforming to a particular interface.

   Editor's notes:

   o  The git repository for the draft is found at https://github.com/
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-interfaces-14"/>
        </reference>
        <reference anchor="I-D.ietf-core-fasor">
          <front>
            <title>Fast-Slow Retransmission Timeout and Congestion Control Algorithm for CoAP</title>
            <author fullname="Ilpo Järvinen" initials="I." surname="Järvinen">
              <organization>University of Helsinki</organization>
            </author>
            <author fullname="Markku Kojo" initials="M." surname="Kojo">
              <organization>University of Helsinki</organization>
            </author>
            <author fullname="Iivo Raitahila" initials="I." surname="Raitahila">
              <organization>University of Helsinki</organization>
            </author>
            <author fullname="Zhen Cao" initials="Z." surname="Cao">
              <organization>Huawei</organization>
            </author>
            <date day="19" month="October" year="2020"/>
            <abstract>
              <t>   This document specifies an alternative retransmission timeout and
   congestion control back off algorithm for the CoAP protocol, called
   Fast-Slow RTO (FASOR).

   The algorithm specified in this document employs an appropriate and
   large enough back off of Retransmission Timeout (RTO) as the major
   congestion control mechanism to allow acquiring unambiguous RTT
   samples with high probability and to prevent building a persistent
   queue when retransmitting.  The algorithm also aims to retransmit
   quickly using an accurately managed retransmission timeout when link-
   errors are occuring, basing RTO calculation on unambiguous round-trip
   time (RTT) samples.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-fasor-01"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes. </t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="I-D.bhattacharyya-core-a-realist">
          <front>
            <title>Adaptive RESTful Real-time Live Streaming for Things (A-REaLiST)</title>
            <author fullname="Abhijan Bhattacharyya" initials="A." surname="Bhattacharyya">
              <organization>TATA CONSULTANCY SERVICES LTD.</organization>
            </author>
            <author fullname="Suvrat Agrawal" initials="S." surname="Agrawal">
              <organization>TATA CONSULTANCY SERVICES LTD.</organization>
            </author>
            <author fullname="Hemant Kumar Rath" initials="H. K." surname="Rath">
              <organization>TATA CONSULTANCY SERVICES LTD.</organization>
            </author>
            <author fullname="Arpan Pal" initials="A." surname="Pal">
              <organization>TATA CONSULTANCY SERVICES LTD.</organization>
            </author>
            <author fullname="Balamurali Purushothaman" initials="B." surname="Purushothaman">
              <organization>TATA CONSULTANCY SERVICES LTD.</organization>
            </author>
            <date day="5" month="February" year="2019"/>
            <abstract>
              <t>   This draft presents extensions to Constrained Application Protocol
   (CoAP) to enable RESTful Real-time Live Streaming for improving the
   Quality of Experience (QoE) for delay-sensitive Internet of Things
   (IoT) applications. The overall architecture is termed "Adaptive
   RESTful Real-time Live Streaming for Things (A-REaLiST)". It is
   particularly designed for applications which rely on real-time
   augmented vision through live First Person View (FPV) feed from
   constrained remote agents like Unmanned Aerial Vehicle (UAV), etc.
   These extensions provide the necessary hooks to help solution
   designers ensure low-latency transfer of streams and, for contents
   like video, a quick recovery from freeze and corruption without
   incurring undue lag. A-REaLiST is an attempt to provide an
   integrated approach to maintain the balance amongst QoE, resource-
   efficiency and loss resilience. It provides the necessary hooks to
   optimize system performance by leveraging contextual intelligence
   inferred from instantaneous information segments in flight. These
   extensions equip CoAP with a standard for efficient RESTful
   streaming for Internet of Things (IoT) contrary to HTTP-streaming in
   conventional Internet.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bhattacharyya-core-a-realist-02"/>
        </reference>
      </references>
    </references>
    <section anchor="coap-filesystem">
      <name>CoAP File Service</name>
      <t>This sketches [ TBD: describes ] a file transfer protocol / remote file system built on top of CoAP.</t>
      <t>A file server works similar to a WebDAV server, and follows these rules
(which are sometimes expressed from the point of view of the server,
but apply when a client maps them back into a file system in such a way that operations can round-trip):</t>
      <ul spacing="normal">
        <li>
          <t>Directories are unconditionally represented by URIs with a trailing slash; files by those without one.  </t>
          <t>
The GET operation is used to list them (for there is no PROPFIND operation in CoAP).
Different media types migth be used depending on the capabilities of the parties,
with application/link-format as a base line.  </t>
          <t>
(Note that application/link-format is not particularly efficient for this purpose,
as the directory listing needs to repeat the requested resource's full path for each entry).  </t>
          <t>
Clients need to be prepared for links that do not follow the regular pattern of a directory advertising its children,
but (as with all unknown links) may ignore them.</t>
        </li>
        <li>Paths are constructed by placing directory names and either an empty string (for the trailing slash) or the unescaped file name in Uri-Path options.</li>
        <li>Clients may attempt to treat any URI composed of the file server entry URI and additional path segments as files on the file server.
Consequently, any additional services the file server may provide
(e.g., as resources specified in extensions)
are necessarily assigned URIs with a query,
for these can not be inadvertedly constructed in an attempt to access a file.</li>
        <li>
          <t>For lack of a HEAD option,
file metadata can only be obtained by performing a GET on the directory containing the file,
or a FETCH for efficiency if suitable media types are defined.  </t>
          <t>
All metadata is provided on a best-effort basis,
and the supported directory formats limit what can be expressed.
Typical supported metadata are the media type (expressed as <tt>ct</tt> in link format)
and the size (<tt>sz</tt>).</t>
        </li>
        <li>
          <t>If write support is available and permissions allow,
a client can create files by performing a PUT operation on a previously nonexistent resource.  </t>
          <t>
Files can be overwritten by PUTting a new representation.
Files sent with block-wise transfer should be processed atomically by the server
unless explicitly negotiated otherwise.
(On POSIX file systems,
this can be implemented without additional state by storing the blocks in a temporary file
whose name contains the original file name and the block key of the request,
and renaming it to the target name when receiving the last block).  </t>
          <t>
Directories can be created with PUT as well
(it is clear from their path that they are directories);
these would typically be empty and not have a content format,
but may use a content format that already describes directory metadata.
(It is up to the client to fall back to plain directory creation,
if that is a viable option for it -- it would be if it's just about unimportant metadata, but might not if the initial metadata indicates an ACL).</t>
        </li>
        <li>
          <t>Files and directories can be removed using the DELETE operation,
subject ot the same conditions as writing to resources.  </t>
          <t>
Deleting directories is recursive;
client that desire POSIX semantics need to check whether the directory is empty
and use the If-Match option with the empty directory's ETag to avoid race conditions.</t>
        </li>
        <li>
          <t>Regular CoAP extensions apply if the parties support them, for example:  </t>
          <ul spacing="normal">
            <li>Observation can be used to watch files or directories for changes.</li>
            <li>ETags (e.g. derived from the file's stats) can be used to ensure that large files are assembled correctly by the client,
and to perform file updates with optimistic locking by using the If-Match option.</li>
          </ul>
        </li>
        <li>
          <t>Additional features can be specified and advertised separately,
either per resoource or by a named specification that provides templates for further operations.  </t>
          <t>
For example,
a specification might say that when a file system is advertised with a given interface (<tt>if</tt> parameter of link format),
for each file and directory there is an associated resource at <tt>?acl</tt> that describes access control applicable to that file,
and can be used with GET and PUT as per the ACL's policies.  </t>
          <t>
Additional operations can use their custom media types and methods,
and possibly create more resources.
For example,
a server-to-server copy (again, advertised by a suitable interface parameter)
could provide a <tt>?copy</tt> resource under any directory,
to which a CBOR list containing two CRIs (source and destination) would be posted.
That specification might describe that if copies are not completed instantly,
the response might indicate a new location using Uri-Path and Uri-Query options
(the latter might be necessary to not conflict with existing files)
which tracks the status of the operation.</t>
        </li>
        <li>
          <t>File service is compatible with "index.html" style directory indices provided statically in the file system.
It is recommended to not serve index files of typical directory listing formats (such as application/link-format)
as these might mislead the client about the file system's content,
and prevent clients that access the server as a file server from even seeing the providing file's name.  </t>
          <t>
These files still need to be written to or deleted in their file version (e.g. as "index.html");
the file server may use yet to be specified link relations to point out which files are being served as the index files.</t>
        </li>
      </ul>
      <t>Some implementation guidance should be provided around the interaction between idempotent requests that have no actual effect and preconditions:
If a DELETE with If-Match is transmitted again on a new token (by a proxy relying on its idempotence),
should the server respond Deleted rather than Not Found?
(In this case, the client could at least know what to do with it, but)
If a PUT with If-Match is transmitted again after it has been acted on,
should the server respond Changed rather than Precondition Failed?
(Probably "No" to both, as the former is easily recognizable by the client,
and the latter would delay faulting by long,
but still needs further thought.)</t>
    </section>
    <section anchor="change-log">
      <name>Change log</name>
      <t>From -02 to -03:</t>
      <ul spacing="normal">
        <li>Added Runtime configuration section</li>
        <li>Terminal access now has an implementation</li>
      </ul>
      <t>From -01 to -02:</t>
      <ul spacing="normal">
        <li>Added "Web browsing" section</li>
      </ul>
      <t>From -00 to -01:</t>
      <ul spacing="normal">
        <li>Added details to file service</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA71b23LkyHF9x1cgZsMh9kY3b6OVLK6tFYec2aVjh0ORPSs5
LIWmGqjuLhENQCiAnN6JifA/+Hf85j/xl/iczCoA3eRYfvI+7JBsoCorLydP
ZlbPZrOkdW1hz9IXrx9ss23XrlylFX5ML6rzmxdJXmWl2eDzvDHLdmY2vrPe
z7KqsfifqWf3rs3WtvSuvJ8dv0xc3ZylbdP59vT4+DfHp4lvTZn/xRRVaeUD
m2SmPUtduaySx9UZtrl9ndw/nsl+0/R6fpOYrl1XzVkyw1MeHxym5xv/X//p
fZKmKszFunG+daYcfZJVXdk227P0HJs3zuBPdmNccZZm8enfBfEPs2qTlFWz
Ma17sGd48vbNxa9Pvzk9SyjX6O8ru3Gl409pGhR101R/tVmbfi8fTVNf26wr
5A352S0dTuiqcpo+HB+e/OrwRN6Oh0rlv1n4N9Uj+qrIbVN35b38PTctNjo9
Pj2dHZ/MXh7LH1WuuMAP87c/nqXrtq392dGRinmYuSbrNkVXmubQ1yazRzCf
P9qR6nDdbgosclH9y80Zz/2b45eUEE/P7u12tmqqroZ+NrPK08pn6dXs8tDZ
djn70iN4+11ty/m6sSZP33ZFi718u6O18OGrqsFB09uqa/HPf//7f8QPTg5P
hzf/vsLu3KYq0x9d+URfL2cn3/xdfVUQt5WND111lFW5LczCj/48W4igs0YE
nbn64VezTRTvKxrk8ocL1d8//lI2vPr+rf7+8uWvf5Xgv9lslmLRtjFZmyTz
tYXKS/7qSpun53VdBIvQo9oqq4r0gDEwSdfGpwsLBdu0xWsL421aLVMzvOKT
RdWuqQqXy2d8Lhstn9sHl1mfihekrk2rxq1caYpimxq3wRNQT4LITHFALnII
CZ1P4S/dBkpIV3BnnyLAiAUPzj7uS4AtTZuYxk7TzMDXN2Y7lQUfq67IIX9L
C5dVix9Tt6kLy3WxMQ7cVjWX42kPVVEbl+eFTZKv0isEcZV3mWjm01du9Ovn
JPnTv6V31vZ65Smwx2P6pz/z3fOxhpKvvkpvukXh/Hp21y181jhI4nkaaCZJ
4mf+yWfpQY2/dYtJiuOlJn2EfnwtbtpWMBM3pcI9LRSUv+zK3PCEpkg72At+
goXwIc5jm9K2/HlOdMXyV9V8ktbB6v4sMdnfOtcQeT2QFKvDoU1KZcKmOH9R
8DOctzNt1Xjo7DxVEQfNqiup69gSrkEfsEVVizkBz/ADj4AqWnjAkrah2NEt
xBZcM+pPTAmHMHIIqhgIWhSyLjMBfjVt56d84NOn73qMGBKDCvj5M6S9qDa1
bXmGR9euk+Qsffv7+TxJ7nA2/LGuYGXPP7+jlIb+4TLu7qG3rp6qPuBmqVgJ
56F0jc0svDRH8C22eoCscPhUfVOMR/+DGsrUPPJXHEXFmhLxfFpwe8Pn7VbW
v3k/h07S71/P4QSV926BgKHQabWge4huJipPW4kYy6ba0E5Lt+oa+Pf72yta
6A/W3I9ONq8GU+GEwXqLproXS0Bc39V11UB40ywcvLtx2Hpjyq2qw1Nk8TgI
1mIVJ8GcuyWQHcg0a6tZv8MEAm3gYBtHL1wbpCZIC+VtDEOdoXFrN1imF1yN
LjD17u15+uPj29O3vYsmB49rl62hIfiNF//30GoDv9mBBJyCTrVqTImM2Di4
moTHCFgmyLBZ0SGguPqD8/IiV4ySiKtDrwB4B2/nrxHNhJdwB8TTY9XcTxM4
iPgV1qpt0zpCXgdJYVMYCEAnQW0V6hjBX3w4LAkHxxmXQM1fQEKT3cMDhVlA
a1cl/oJDF7aYihjXr+cX767f9HoSuR1M+K/n19/jAEgrErmFKVedWdlELCHx
SVNb4skT6Abw+61v7YZyXby7fS1bPBNjG8fgerUF3nCTEvptGDY5nWPpaCnx
3FVV5eoPoD4EieH80wSpgX5v6UWMHbiU/ShPqpNLnhEX92tD9+5dfgFMhPfq
MT2BgWIUFmr+G0hW658N/LvrtzcpUPw7QPYU+Fzj8/g7/fKr9DoYQgFm5AZJ
cos0HbTWPOO+00RAAN4GBM5DXEOqFfMehcjWpixtQae8fDe/Sw+gVWTsk5en
nz9PDp/BI1lPvO795c3R5fzHO/Vaui91KNsiCkZ7QL/49x4ylGQ6pm3hRIxd
fKBRZNL5xc0R12JmF4wvreY7zZ1LsNbDuD3ckN4BAmvLDNCdNYAlEGlTeoEL
rLwx95AHlrTGbwWW8r+CA/Mn75gzJMZc3B9HER2Z8gEbmUVhBVqwMkmiZCHC
zChKFl2bFtY88DOqdO1W61nB9DK4flfCEeh2+VPwC+fI7dIAqSSINraHkmWB
7BISXXoQI/LDze27V1fX3//l9nz++oOm4q70nWspccjBTFADABHT4Z2lVRcB
3GVQA+LkZxGKznWLSCYq7MHeU8eKcLDnYNSEOBf9GdQpXXeAaAWNB8bdEy8s
7aoCVtNXm23dVgDHGmZIQaS9iIsAg58wNbezgvnsS3vb1SGN+OkTqfvnz1P8
9CVGzk+59qdPzxFzwoawPecFF2AOqhSHX8MSnz6R2n7+zDz46RNpLX62Hxk7
K+t3hXouZv6AalC8JL4j4LPpykh3sSvgRTMYN/0rXo2eNaCwsirXwI/rAuec
Ss0CxcL1CVaj5SVAAfd2g4gwzVYCUGHNeGbRhXjzR/gmLaWQK2yqGDJJqjzh
kdKT9VMiSEoCQRZci+hb22r2vKuWrTCKrmbx4TVz3r2/mjNluyXwLxQgO8hN
953FB6DWQGnEUSAXYEWZKM692VleGEJ4GlHJpePBFaOgADAF9aU+JuUtqlsR
3dHK1KxtNkLrAlV5PumnpvCVxCXy0pNsvS/hIIsqKKL40mFPzWdJ8l4SlQgs
OXfB/FpKLcIMXM2WID3IJfqSsvGEMQ4cI7URb62AabRFIKgBj3NdMUf0kg2K
hV1FIgpvWIhX8AXDdNUFNeCZ26t384jkBD4RlKm+FSpdkuVowg5FdMiA0VL5
t2qaFfZhNBWVFyeD1YUE8yS66BeI8B/s4vL8p2l6/eZumr6Z33wpCY2swmDe
DnkImSBHOpYQN1nGzH2AIrbqVms54quiyu5PgwdPJBPhxw07IlnKzyLhykyG
x3fefT03+tnVcvbWtEBmXcZPAtZqCDJK+gbD7grvhDbbuL2ktTdUyo7vQ2Hq
ujtn9T3KCkcSbo80IlS+lHPaQ2AivYeRN3lKupkll1gWvg4+urLiWYJ7oFqR
8qR5ZyMRayztI8fAO+KH7DhJ9lxQWbNHUOqe4kALBxs8vpLsIdjR9T4+Y0jM
kOtFU69e3871+Of5g0Gdk49jg/VjpmSCrPlAPkKONCRh00BiSfH1JwRCTfoG
QSAeNpxGS9IwyiIkDZo8d5GjjLtAfjdK8ZhQPvyvKrqhFLisNgj+9BoqSO9U
0IPL67tJbzzUhMyuygjFeHp+6nJj6R3Ob/wQLhoaAojaUCwsaZKf5aVXfTFs
JFaexMGdEBAxRY8+BITCfqTOFpEIu3LZIMs1HRC+sZG3ahEnTjauWcQiN7Gg
UloREswBzdauwUHhbc1qO4F6YmOi3yx4wqwhGy7hGgtXssh4SoKukUlyWxfV
VtUAqb1AQUhBwSTzWLQQ+xIkUwQ20xCZJBJcO5T4rOWYkYTniXG346IH7w+g
PE1QczaOvspacPxMMKVBSt4gQeQ8W4ZNRTajRqVfdE1mNaM0FootA7sWfyRJ
7ZqGwcS1wVUQmFOe0qTvr6/+GHZszaZmiGE57QVJlyJzG2j+/O7i6mrKRIY/
Xrx6dxsULGltKQvo+61hC+V4mp7w4ZPj4xOh7qSNfQNnqLNcKe0Y7X8YobFI
zafHJy+1W0UnirRZ84CVcPWZKewXKph56FP/f7oo5WDDC1rwqCT1j7e209Zg
70vewg7cCuasMtcv8MQXy75zZXo4gs0hjTCDg7uJHDOy8VzWD74Pf6VqQ/9F
1CX1CLxrsBN2TcXnhVZB7TWFq8rca1ctf2Bx4aV9c7AQjB8ozoCpvcqiZ9Mu
PbERdrZconrSR3GezSD0/PxKEfd7BrC0S6oS/9srIixyA3xiXdXCCmSXbZkh
iZXu50hzGZmgTdIr0yybJD+5Rjhku/tB+sim2aBgJbGR2e40THZwEUdHMdoX
pd+gJlUfraua7RRhiFCKMjboUBSAzFHsgbuAAqtfJfT4J5b0FEfKevieNRuf
QESANFup5DlSjsKlGIN11yYhw+983NqPRABFO/F0JX3XlmcnzxKSVrIPB/Gh
DQv5qJE6JKJlJ06PdTg2wjLTUV/E31vOk5RljdvG0VbPMjZG9j/F5j6e7DaH
jataVEOHVbM6ao+EjGlpN/NrSHT08uUvj4+++e1h8r4s3D3S290PU+VyKgIj
qGPm56aKWJm24WOf42HP/MmBnLKuApunCwiQ4tdacnas8+GV70qWNS2JfGjT
5Fum8qzHWq0O8eIMfEj8CkwIVkGM1FQgfYNSz0T8TVc4gRm2OTSI4t5qt6oM
BCcgOfhVEboONVNLUz6bpYeGU98Y81+gspDlGUgkjVhzolItISlUsoicU5Rd
ZahIxS8QmNDICtmU/ZEnvRFhbbZwHHTxWEkqKGseKqF3VTkD9w9tYaa9LXHF
HVqkIW3dRloiwR5U+ciWdi0DBhs+bFm6ZesOFSSXleemge3yiT7YN2Yb94LL
uLrm2IWxxTUQQUt2ZNjDjn1zCT7pZCJdsvSZQd2wQrroAGHN5JmmsbyhTRMk
XcVY7eH1YSk83sdxivSChtYUW5jINR2V69lmEYoKT2ZH00pvNfQ4UbgIYs87
qcXZKB+6NCH09mYNjIU+d4x7OOZ5wje40tL4qkH5Kx36Hjekrbyp2HDsD3Co
U4F92yqDl95FK1WtRFBjV4qTwUQ+2o0kzTGzWSfZVRWCFc1KEC08nh48Cq7q
PAeGCV7ivJAWV/YkH9pCfd+Y1UbGDTxHEM3mZOCsZ5EL6rZ3OjbtoDBxEN0l
Lmg/ZmDq+w0QADqbVvDhS77S+5HsvILprRxiGrucsgH77LCYZEOt6AQIyEgz
gQJU8B0jbaIZ7ULgrp+I6YwSdV7jPjIqZMzdwyq0LZ8c2u7ot8JCWWxL31pa
Z+vQ/Q/vZ/y9HyDE2Q1dSKvoUHCJsweNuDaMPdk605aUtDlZ7rVxDvPMlFMP
g0qa85RHL63ip/D0w3x+k2pu/c3JyTEbXAxdtusfDLJFN+6qfhvG+8zGOlzX
DvGrrcK+ZAJtxbKztBXzVbLH0P9b9bQDkC3nISOIe4hskLkmnVMuzTLr0ZC8
hZVMsYDLMrsZLT4GmiazsQMnI4mWEyDTTNMNvUMOSshF6E4EqdkgIsR45T+l
Y6G/gHRLnl7UIC+Jb8MAC9GuqJtzc+ZFyYF5xUCBvTamue/qfq4RkwuOc5ac
l9vR2ktpuQQaTALbn1+o/i6iMI5ykOaHns2l7baG77LD/rOO70RbEYxH3DqQ
Lco7jFDi6TdutZZBtBnI3yCINBBQgxTiQ7aEhatSIztSyeANgzNMkzgSE8du
pIxlNJPtsoJ61k3pp69nb40rWNqxxtffhDLSkONZvst7FJfgKoaoQVKAFBGF
+ZcbeuHsfeMCz4ojO+0FABPW7L/K+L8gVhv13pl4r8wMBK/Sm3d38769gb+D
TRugzAfepGmrs4qVsf2d/WioeN6j+c53CwLFP9/J6PofTo85voCDfgB7HcpW
Bcn7snospV5l2w9qjzVEUMNeE/EnqKAKXFWimggVSh6x61KWIAcja3/YfVy9
xNLBWqYXtijelxuOgPL0HNkP7/1koSW2hA7en//kJ0lfXIMxF1Wzk78Waxnm
IPFut0YTmZlxd6ctdTYN2fUvsSCyEIJpaGllYgbtObMMQWLRLi4fH7nKIPzQ
BIs+COe8nV9Mk2pYOw5G2wC2wmPCvQGy16CSEI6qgp15Y+v3LmKQl/AqhUjN
Rl16F/oEn77a72gmOkUIlN1zjDd/dXnWJ3/85c9wNOlltbEV1zcyj+KoZdwG
W3Rws6dXRM6HljCWkG4Jc4kLVZEJbdTwgM4+lhUdXZCVHbsOYsegoCtyxiXF
aiyOYhdryErYP958GVodOgNiFbdVvDShMwlQrGW3jShRJw1m53SckYoxBeWV
/w5UjVDSgJjlMyTQenKWJF+nl6AtGcef1ocJGEvo0NIrtjvNFKAOG/qK24Ya
dzKR9GC8629D61NgFRVK31pFlQIFp8I1ee2hF6ifYOEYdHE92kGow/ry8+b2
3c2bq+vL8YtaE05IXy4dE4+oByTHEM8hBfAYMsbub25rK02zmEckXUJ4GT4G
7Uuas0Lp9IBDHX3Eec8sjFvCYAEnZLUhRzu4ppvpnZAvvBV6CUMu5Ry8bxD3
w8a6a1jehdsjgsTBQFvRkbbzbO51kljbwIkCoNq8r79QAgjFBIFdy/oWyILc
A6SaiNAX4SrLaJoJU9fSKOLzOmSWQ+WVCK8OH/ZTJhwrO0nDg6ix+SKtKOyR
IRXlMBLPRe9mIatKLjjYVdSWDSdS9rhVWSlPZob9Or3BIdQ/FVi62I/h5E4u
cPRbazed8Rm4OKd0yA9bQh8fjQ6257+TWIR0JdDF1LF9zvXocMh8M4oRBxQi
V9QhZY7tU2ZQFsbSWES8hJkSK+TYrhmQRuwhT0mvcGimi9m8jfzfh+iqyv0l
DmVsWXo6AEnsVPYdt+Vjz3J/bwodhjz0Ye2oGj/qDwwjKWknx3aKzGZGlRUn
oMbzikK4nRQRAiI1W9o8qNxrMzje2SvVTWxebHfsqq2qkT5D20uxThT/hg5K
EBTH++H1+WWwi+w2nm3IjsJKsWW1aDUN0nU0P2rrT4Cp3Au4MJqMlROXnYba
K33zen7xg8ZViOJsy5K8Z39jNBLaSUYl1wTS9Bxe38s3HjGSovLeSzvDqmSO
wBnnx92BcImLoNbLqRDjU/YuWOoMbc4+80jlHZluv0QvgwlF6SA0/KHPWrws
kbUfaBcZfOt+k7FUJM8HH/zPHyZinqtl+ti4thdXLvrFyyCx7RQ6DV4Joxwy
ZjqKr92lIavs2Euu0fX5QNQGaR9YZLH+QM75KBda2t6bRfE7g0FyQUrZKqHG
kmEiUSIl93kvdAniu3I5UNx7NK3ruYdfh7upaWipUXu8IKLMOJQc4cZYCqgp
6NekgnAhVqD9ZY5wbYPLS5H+riRzvvrjON2LY0jaiHX4qJ0Z0+8YCVoqdEEk
1GtvcvmXx/A6SRkuOHAXJkLJ5AKB/Zx+51bnAJHRFWQ9Xj6JcBdS09Aq0YEi
i/FQbLScnLa6jF6PENK+00+TZTVxjSnLXidSDEPfCG1hadG1OjgnZY78yzUK
sLGnsNUQHRaefCuqJWKFAkeDR2FE84lcBapanQUZUVDI5YiOmOkIsiwo9j8P
bCHM2gdCO0R1DE4xf2D+dX+fT+MEvy2ZQoUP4hekQ068BgSTMZuiolv2Uw0D
2qntAr11QhiDmsDOiR/RhaXBCBohV73Mgs7UlY4e0kqJ3g+P5ZxSAFMdTs0u
5aMZ41xoEsml7/OLHxUpNKrkxsNTs5K/P8jEIPrC5esfX89fD6EvF8u0PkTA
DE2OnsRK7mSUhwZKn9zUlVC8tWP+4HR433DK5VE30g2iroUJWY8nQyh69gyl
ORo5FKoUGCIWT7vZhN1l+k2IAzoFH9i7+KAuLLebxMn692EIuSzBdPhQOQSS
ycbnFG3eBlomxdWQsEM14XaIbo/NOtOSVKZV9xlV83W4WaEIu3eP6FEkDpSk
2dGe3LTVq1yHug7FjlcpclTFD+NCiGv8wgs0+cn+NhC/awKxHl+vkPleP05G
ocztB3xVg031Sx6lrBSLYcGreKNIx6FP76r0I8Fn7CNqPh8wtZ9pxgbkzi2e
YQgJZ2G/u7WFEKLATTm1oUfqxASaW3DCTiDM9yZusQDXKzkEapkk6FWprpHV
hlJPk91gUU2uuytqxPpYJ4ZSc6ea9OMDBE7H722UwyVmZH23/DD08uUmzIgk
RPYn1YcsPo717VDpkfGFkfKoimFn8sN3Jis+9PEXgDJwwn4koHVXuGYoz0a+
NmpU9zcrhfDxg5As6hCuwCVey66Yj4MDj4y9V0uHEEYy0Wugu5yvFH61rvKe
v/X3/QO1kbblCJCeM9kz93K2KJ9WwPnp2DriOD35HMzTG2ai32ADtAcvwvMf
vuNyHwZthyvF5Qh3hGNU/c1iuTgh1fqYHT9W6QV5/0G0mt5gA7SG7zP0SQU6
aAMdldnAMy7ZX1LUdLUMd5H6r1toT1YLBX75r9WQCsNHvSSjK8WUEzgd4lv3
0ejuKzpKy19+z3Il1nfMumFgR7fuG7zDOKmtgjjlEu4SWGF/UUKQSi5Lieb4
baL70IXXe+eBHo0nUZoO+4sz8fbsaAL1AkeyH+Urdi+w0LbYyTA8rh2VE9wp
sBY3LhxD6zpNr8Lsifdn2WDO46H0Tp1sFmF+2bfKn7YkYgXSX67+Qhtk0vc1
ehsBewv54tPAapRr7Imr19TbAOwSTg174e3ed3IUFgaarf2acd0ruUfa6N7a
CPOqs2g4bEYQjn0rHxOPjshGHZNYP3Aaz25p9MuAC7It9pSJqmZAiDM2YiSa
Typzgku4e7WTVgRcG14n18Z9FXuJnDaLqw05cmH1yo7MO0I/aWRT3mriRfy9
Icmqc7kJ3+YaqplwB1b6h2EhxIXZvbGDZzb65aFRi59mEY7MZr1eirZypSZa
cSAxZ8kV6/nA8sTj+/zrfH8JSMaPhECt/BjbbXWP/Q8EBnXkAB1tQ8uPLahe
tMwiKYWjjdxEoSNXSsgMZAKHA9DzltEbHvy75OCqjCWXt9Ox14YOfLwBxp6W
1uK8VVPpYVwrbHmix2Tu+T+cUb9M50YX80ym33P8385xEe6uj89xM9J1+gbl
uOWJbppqYZiWXlxXL8TfUHr2c1+5Cd4Ie9W77lxjxYtLBKU9xhWLwACaivr8
7isqSl4yCOyK34rTNvcQUL6nMaxbgQyHExkT6P3fololyRsG7uz4lDLOjl+e
BSqGQz77rQteB5NJ1df7N6vk64bUJr9ZseP8/SYnusnpaJMX4wHwi371+Max
vnEyeiNH7eMKCdKdG+f/A8M32KoWPwAA

-->

</rfc>
