<?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-05" category="info" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title>Everything over CoAP</title>
    <seriesInfo name="Internet-Draft" value="draft-amsuess-core-coap-kitchensink-05"/>
    <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="2024" month="March" day="04"/>
    <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>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>
        <t>There is a (currently long expired) document describing a lightweight authenticated time synchronization protocol
that is embedded into the ACE framework <xref target="RFC9200"/> in <xref target="I-D.navas-ace-secure-time-synchronization"/>
and typically used with CoAP.</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 can not be expressed in CoAP).</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 anchor="tunneling">
        <name>Tunneling</name>
        <t>Unlike HTTP,
CoAP does neither provide a dedicated method for encapsulating streaming or packet based network connections
(HTTP has a CONNECT method for streaming, <xref section="9.3.6" sectionFormat="of" target="RFC9110"/>)
nor has a means of encapsulating network traffic been specified
(HTTP has BOSH <xref target="XEP-0124"/> for streaming connections; VPNs such as OpenVPN can be operated over HTTP proxies <xref target="OpenVPNproxy"/>).
Early versions (up to -10) of <xref target="I-D.ietf-anima-constrained-join-proxy-10"/> sketched a means of transporting UDP in a CoAP-like way.</t>
        <t>However,
CoAP can aggregate exchanges with multiple peers
inside a single CoAP hop.
This can serve to protect the user's privacy
(by using (D)TLS or <xref target="I-D.tiloca-core-oscore-capable-proxies"/> on the hop to the proxy, hiding which servers a client is communicating with from its local network)
and for efficiency reasons
(by using a single outgoing TCP connection from a device in a cellular network,
or even a more power optimized hop such as <xref target="CoAP-over-NB-IoT"/>
to keep observations active on multiple unrelated services).
This bears similarity with the approach of <xref target="OHAI"/>,
but leverages CoAP's proxying mechanisms instead of using a gateway or relay resource.</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"/>
            <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>
      </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ć"/>
            <author fullname="J. Simon" initials="J." surname="Simon"/>
            <author fullname="K. Pister" initials="K." surname="Pister"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <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"/>
            <author fullname="M. Siodelski" initials="M." surname="Siodelski"/>
            <author fullname="B. Volz" initials="B." surname="Volz"/>
            <author fullname="A. Yourtchenko" initials="A." surname="Yourtchenko"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="S. Jiang" initials="S." surname="Jiang"/>
            <author fullname="T. Lemon" initials="T." surname="Lemon"/>
            <author fullname="T. Winters" initials="T." surname="Winters"/>
            <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"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="I. Kouvelas" initials="I." surname="Kouvelas"/>
            <author fullname="B. Fenner" initials="B." surname="Fenner"/>
            <author fullname="A. Thyagarajan" initials="A." surname="Thyagarajan"/>
            <date month="October" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3376"/>
          <seriesInfo name="DOI" value="10.17487/RFC3376"/>
        </reference>
        <reference anchor="OpenVPNproxy" target="https://openvpn.net/community-resources/connecting-to-an-openvpn-server-via-an-http-proxy/">
          <front>
            <title>Connecting to an OpenVPN server via an HTTP proxy</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="XEP-0124" target="https://xmpp.org/extensions/xep-0124.html">
          <front>
            <title>Bidirectional-streams Over Synchronous HTTP (BOSH)</title>
            <author initials="" surname="Ian Paterson">
              <organization/>
            </author>
            <author initials="" surname="Dave Smith">
              <organization/>
            </author>
            <author initials="" surname="Peter Saint-Andre">
              <organization/>
            </author>
            <author initials="" surname="Jack Moffitt">
              <organization/>
            </author>
            <author initials="" surname="Lance Stout">
              <organization/>
            </author>
            <author initials="" surname="Winfried Tilanus">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CoAP-over-NB-IoT" target="http://openmobilealliance.org/RELEASE/LightweightM2M/V1_1-20180612-C/OMA-TS-LightweightM2M_Transport-V1_1-20180612-C.pdf">
          <front>
            <title>Lightweight Machine to Machine Technical Specification: Transport Layer</title>
            <author initials="" surname="Open Mobile Alliance">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OHAI">
          <front>
            <title>Oblivious HTTP</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="January" year="2024"/>
            <abstract>
              <t>This document describes Oblivious HTTP, a protocol for forwarding encrypted HTTP messages. Oblivious HTTP allows a client to make multiple requests to an origin server without that server being able to link those requests to the client or to identify the requests as having come from the same client, while placing only limited trust in the nodes used to forward the messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9458"/>
          <seriesInfo name="DOI" value="10.17487/RFC9458"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Dogtiger Labs</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="20" month="October" year="2023"/>
            <abstract>
              <t>   This document describes a publish-subscribe architecture for the
   Constrained Application Protocol (CoAP), extending the capabilities
   of CoAP communications for supporting endpoints with long breaks in
   connectivity and/or up-time.  CoAP clients publish on and subscribe
   to a topic via a corresponding topic resource at a CoAP server acting
   as broker.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-13"/>
        </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="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="4" month="September" year="2023"/>
            <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-16"/>
        </reference>
        <reference anchor="RFC132">
          <front>
            <title>Typographical Error in RFC 107</title>
            <author fullname="J.E. White" initials="J.E." surname="White"/>
            <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">
         </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="5" month="February" year="2024"/>
            <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 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-25"/>
        </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="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="I-D.navas-ace-secure-time-synchronization">
          <front>
            <title>Lightweight Authenticated Time (LATe) Synchronization Protocol</title>
            <author fullname="Renzo Navas" initials="R." surname="Navas">
              <organization>Telecom Bretagne</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Ludwig Seitz" initials="L." surname="Seitz">
              <organization>SICS Swedish ICT</organization>
            </author>
            <date day="31" month="October" year="2016"/>
            <abstract>
              <t>   This documents defines the Lightweight Authenticated Time (LATe)
   Synchronization Protocol, a secure time synchronization protocol for
   constrained environments.  The messages are encoded using Concise
   Binary Object Representation (CBOR) and basic security services are
   provided by CBOR Object Signing and Encryption (COSE).  A secure
   source of time is a base assumption for many other services,
   including security services.  LATe Synchronization protocol enables
   these time-dependent services to run in the context of a constrained
   environment.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-navas-ace-secure-time-synchronization-00"/>
        </reference>
        <reference anchor="RFC15">
          <front>
            <title>Network subsystem for time sharing hosts</title>
            <author fullname="C.S. Carr" initials="C.S." surname="Carr"/>
            <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="13" month="March" year="2023"/>
            <abstract>
              <t>   This document specifies an alternative retransmission timeout (RTO)
   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 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 RTO 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-02"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <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>
        <reference anchor="I-D.ietf-anima-constrained-join-proxy-10">
          <front>
            <title>Constrained Join Proxy for Bootstrapping Protocols</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>vanderstok consultancy</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <date day="14" month="April" year="2022"/>
            <abstract>
              <t>   This document extends the work of Bootstrapping Remote Secure Key
   Infrastructures (BRSKI) by replacing the Circuit-proxy between Pledge
   and Registrar by a stateless/stateful constrained Join Proxy.  The
   constrained Join Proxy is a mesh neighbor of the Pledge and can relay
   a DTLS session originating from a Pledge with only link-local
   addresses to a Registrar which is not a mesh neighbor of the Pledge.

   This document defines a protocol to securely assign a Pledge to a
   domain, represented by a Registrar, using an intermediary node
   between Pledge and Registrar.  This intermediary node is known as a
   "constrained Join Proxy".  An enrolled Pledge can act as a
   constrained Join Proxy.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-join-proxy-10"/>
        </reference>
        <reference anchor="I-D.tiloca-core-oscore-capable-proxies">
          <front>
            <title>OSCORE-capable Proxies</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <abstract>
              <t>   Object Security for Constrained RESTful Environments (OSCORE) can be
   used to protect CoAP messages end-to-end between two endpoints at the
   application layer, also in the presence of intermediaries such as
   proxies.  This document defines how to use OSCORE for protecting CoAP
   messages also between an origin application endpoint and an
   intermediary, or between two intermediaries.  Also, it defines how to
   secure a CoAP message by applying multiple, nested OSCORE
   protections, e.g., both end-to-end between origin application
   endpoints, as well as between an application endpoint and an
   intermediary or between two intermediaries.  Thus, this document
   updates RFC 8613.  The same approach can be seamlessly used with
   Group OSCORE, for protecting CoAP messages when group communication
   with intermediaries is used.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-capable-proxies-07"/>
        </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>
              <t>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.      </t>
              <t>
Note that ETags are always "strong" in CoAP:
They indicate that a precise representation of a resource has not changed.
If a resource has different representations (eg. a directory listing may be available in different media types),
they may have different ETags.
They may also have identical ETags,
but that means that if one format carries less information,
its ETag needs to change when any representation changes,
not just the selected one.      </t>
              <t>
Consequently,
if a client learns of a resource's ETag
and revalidates that that ETag is still valid,
it can not know which properties of the resource have stayed constant.
(In the extreme case, the representation might merely express that the resource exists).
Only when knowing the representation,
or at least relevant metadata of the tagged representation,
can the client be sure that an ETag's validity has any meaning
beyond that the resource still exists.      </t>
              <t>
For file services backed by content based naming systems (such as git),
it is tempting to use content identifiers for ETags --
consequently, a directory will be flagged as changed when any file below it changes.
To allow monitoring directories for additions and removal of files,
it is RECOMMENDED that a representation is provided that does not contain the contained files' and directories' ETags,
and has a stable ETag that is distinct from any representation that does include them.
There is no recommendation as to whether the default representation
should contain ETags or not.</t>
            </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?
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 -03 to -04:</t>
      <ul spacing="normal">
        <li>Add section about tunneling</li>
        <li>Extend notes on theuse of ETags on file servers</li>
      </ul>
      <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:
H4sIAAAAAAAAA71c23LjyJF951cgemJjRAehW8+MPZpdz6ol9bQc3ZIssWe8
sXa4i0SRhAUCMAqQmu7oiP2H/Z192z/ZL9lzMqsKIKVe+2n94JFEsCorKy8n
TyY6TdNRm7eFPUleXDzYZtOu8nKZVPgxOatOb16MsmpemjU+zxqzaFOzdp11
Lp1XjcX/mTq9z9v5ypYuL+/Tw29Hed2cJG3Tufb48PD7w+ORa02Z/dkUVWnl
Azuam/YkyctFNXpcnmCb24vR/eOJ7DdJrqY3I9O1q6o5GaV4yuGD/eR07f77
v5wbJYkKc7Zqctfmphx8Mq+6sm02J8kpNm9ygz/ZtcmLk2Qenv5XL/7+vFqP
yqpZmzZ/sCd48vb12a+Pvz0+GVGuwd+Xdp2XOX9KEq+om6b6i523yU/y0SRx
tZ13hXxDfs4XOU6YV+UkeTjcP/pu/0i+HQ6VyP9S/99Ej+iqIrNN3ZX38vfM
tNjo+PD4OD08Sl8eyh9VrrDAm+m7tyfJqm1rd3JwoGLuz/Nm3q2LrjTNvqvN
3B7g+tzBllT7q3ZdYJGz6nc3Jzz394cvKSGeTu/tJl02VVdDP+u0crzlk+Qy
Pd/PbbtIv/QIvn1d23K6aqzJkndd0WIv125pzX/4qmpw0OS26lr853/+4z/D
B0f7x/03/77C7vJ1VSZv8/KJvl6mR9/+XX1VELeVjffz6mBeZbYwMzf4czoT
QdNGBE3z+uG7dB3E+4oXcv7mTPX3m29kw8uf3unvL1/++juvkZ9vruqm+rjZ
0sRZVZawH/pZWyUwYf9k4mxDv3vIDf/6Zjq9SeTb/9BpHupyv7TtAa+lK/N2
kzbWVV0ztw5/CzumbZWaMvVfSHXHFDvyr1wulR0PsM0fLm5gfMffbMn+Ks/y
hktVpSlSuJmFRyXXFPtuU8LPqrLqnMq+9+r67s3471/lJQ57gwtsXFU+/8S5
gWvdrfN29fznN5bGdGfysk1Py0wM8pnHfmfm98m7arHI2/b5J96aco6dWlz6
8w/8gvDQ5DZLpnlhys793av5uK7r/apZHtiPLYNkVbqDj7YWzfaeeHqTMuSm
V6/Sy2q6pfEXb/Plqn20/P/knZkjPlvaTfhxauerElZZJHdDL4fDNaZ0ddW0
ONXGNi9kUWzi5NMXR/tHL56R/ub8tQrvzWpdzfLCmqLIqRo5ye3F24vTu4uD
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
EoBfmV9OAAA=

-->

</rfc>
