<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schinazi-connect-udp-listen-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.0 -->
  <front>
    <title abbrev="CONNECT-UDP Listen">Proxying Listener UDP in HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-schinazi-connect-udp-listen-01"/>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Singh" fullname="Abhi Singh">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>abhisinghietf@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="October" day="12"/>
    <area>Transport</area>
    <workgroup>MASQUE</workgroup>
    <keyword>quic</keyword>
    <keyword>http</keyword>
    <keyword>datagram</keyword>
    <keyword>udp</keyword>
    <keyword>proxy</keyword>
    <keyword>tunnels</keyword>
    <keyword>quic in quic</keyword>
    <keyword>turtles all the way down</keyword>
    <keyword>masque</keyword>
    <keyword>http-ng</keyword>
    <keyword>listen</keyword>
    <abstract>
      <t>The mechanism to proxy UDP in HTTP only allows each UDP Proxying request to
transmit to a specific host and port. This is well suited for UDP client-server
protocols such as HTTP/3, but is not sufficient for some UDP peer-to-peer
protocols like WebRTC. This document proposes an extension to UDP Proxying in
HTTP that enables such use-cases.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://DavidSchinazi.github.io/draft-schinazi-connect-udp-listen/draft-schinazi-connect-udp-listen.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-schinazi-connect-udp-listen/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        MASQUE Working Group mailing list (<eref target="mailto:masque@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/masque/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/DavidSchinazi/draft-schinazi-connect-udp-listen"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>The mechanism to proxy UDP in HTTP <xref target="CONNECT-UDP"/> allows creating
tunnels for communicating UDP payloads <xref target="UDP"/> to a fixed host and
port. Combined with the HTTP CONNECT method (see <xref section="9.3.6" sectionFormat="of" target="HTTP"/>), it allows proxying the majority of a Web Browser's HTTP
traffic. However WebRTC <xref target="WebRTC"/> relies on ICE <xref target="ICE"/> to provide
connectivity between two Web browsers, and ICE relies on the ability to send and
receive UDP packets to multiple hosts. While in theory it might be possible to
accomplish this using multiple UDP Proxying HTTP requests, HTTP semantics
<xref target="HTTP"/> do not guarantee that distinct requests will be handled by the same
server. This can lead to the UDP packets being sent from distinct IP addresses,
thereby preventing ICE from operating correctly. Consequently, UDP Proxying
requests cannot enable WebRTC connectivity between peers.</t>
      <t>This document describes an extension to UDP Proxying in HTTP that allows sending
and receiving UDP payloads to multiple hosts within the scope of a single UDP
Proxying HTTP request.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>This document uses terminology from <xref target="CONNECT-UDP"/> and notational conventions
from <xref target="QUIC"/>. This document uses the terms Integer and List from
<xref section="3" sectionFormat="of" target="STRUCTURED-FIELDS"/> to specify syntax and parsing.</t>
      </section>
    </section>
    <section anchor="mechanism">
      <name>Proxied UDP Listener Mechanism</name>
      <t>In unextended UDP Proxying requests, the target host is encoded in the HTTP
request path or query. For Listener UDP Proxying, it is instead conveyed in each
HTTP Datagram, see <xref target="format"/>.</t>
      <t>When performing URI Template Expansion of the UDP Proxying template (see
<xref section="3" sectionFormat="of" target="CONNECT-UDP"/>), the client sets both the target_host and the
target_port variables to the '*' character (ASCII character 0x2A).</t>
      <t>Before sending its UDP Proxying request to the proxy, the client allocates an
even-numbered context ID, see <xref section="4" sectionFormat="of" target="CONNECT-UDP"/>. The client then adds
the "connect-udp-listen" header field to its UDP Proxying request, with its
value set as the allocated context ID, see <xref target="hdr"/>.</t>
    </section>
    <section anchor="format">
      <name>HTTP Datagram Payload Format</name>
      <t>When HTTP Datagrams <xref target="HTTP-DGRAM"/> associated with this Listener UDP
Proxying request contain the context ID in the connect-udp-listen header field,
the format of their UDP Proxying Payload field (see <xref section="5" sectionFormat="of" target="CONNECT-UDP"/>) is defined by <xref target="dgram-format"/>:</t>
      <figure anchor="dgram-format">
        <name>Listener UDP Proxying HTTP Datagram Format</name>
        <artwork type="ascii-art"><![CDATA[
Listener UDP Proxying Payload {
  IP Version (8),
  IP Address (32..128),
  UDP Port (16),
  UDP Payload (..),
}
]]></artwork>
      </figure>
      <dl>
        <dt>IP Version:</dt>
        <dd>
          <t>The IP Version of the following IP Address field. <bcp14>MUST</bcp14> be 4 or 6.</t>
        </dd>
        <dt>IP Address:</dt>
        <dd>
          <t>The IP Address of this proxied UDP packet. When sent from client to proxy,
this is the target host to which the proxy will send this UDP payload. When sent
from proxy to client, this represents the source IP address of the UDP packet
received by the proxy. This field has a length of 32 bits when the corresponding
IP Version field value is 4, and 128 when the IP Version is 6.</t>
        </dd>
        <dt>UDP Port:</dt>
        <dd>
          <t>The UDP Port of this proxied UDP packet in network byte order. When sent from
client to proxy, this is the target port to which the proxy will send this UDP
payload. When sent from proxy to client, this represents the source UDP port of
the UDP packet received by the proxy.</t>
        </dd>
        <dt>UDP Payload:</dt>
        <dd>
          <t>The unmodified UDP Payload of this proxied UDP packet (referred to as "data
octets" in <xref target="UDP"/>).</t>
        </dd>
      </dl>
    </section>
    <section anchor="hdr">
      <name>The connect-udp-listen Header Field</name>
      <t>The "connect-udp-listen" header field's value is an Integer. It is set as the
Context ID allocated for Listener UDP Proxying; see <xref target="mechanism"/>. Any other
value type <bcp14>MUST</bcp14> be handled as if the field were not present by the recipients
(for example, if this field is defined multiple times, its type becomes a List
and therefore is to be ignored). This document does not define any parameters
for the connect-udp-listen header field value, but future documents might define
parameters. Receivers <bcp14>MUST</bcp14> ignore unknown parameters.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations described in <xref section="7" sectionFormat="of" target="CONNECT-UDP"/> also apply
here. Since TURN can be run over this mechanism, implementors should review the
security considerations in <xref section="21" sectionFormat="of" target="TURN"/>.</t>
      <t>Since unextended UDP Proxying requests carry the target as part of the request,
the proxy can protect unauthorized targets by rejecting requests before creating
the tunnel, and communicate the rejection reason in response header fields.
Listener UDP Proxying requests do not have this ability. Therefore, proxies <bcp14>MUST</bcp14>
validate the target on every datagram and <bcp14>MUST NOT</bcp14> forward individual datagrams
with unauthorized targets. Proxies can either silently discard such datagrams or
abort the corresponding request stream.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document will request IANA to register the following entry in the "HTTP
Field Name" registry maintained at
&lt;<eref target="https://www.iana.org/assignments/http-fields"/>&gt;:</t>
      <dl spacing="compact">
        <dt>Field Name:</dt>
        <dd>
          <t>connect-udp-listen</t>
        </dd>
        <dt>Template:</dt>
        <dd>
          <t>None</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>provisional (permanent if this document is approved)</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Comments:</dt>
        <dd>
          <t>None</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="CONNECT-UDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes how to proxy UDP in HTTP, similar to how the HTTP CONNECT method allows proxying TCP in HTTP. More specifically, this document defines a protocol that allows an HTTP client to create a tunnel for UDP communications through an HTTP server that acts as a proxy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9298"/>
          <seriesInfo name="DOI" value="10.17487/RFC9298"/>
        </reference>
        <reference anchor="UDP">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel">
              <organization/>
            </author>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <reference anchor="HTTP">
          <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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
              <organization/>
            </author>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="HTTP-DGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <author fullname="L. Pardue" initials="L." surname="Pardue">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="WebRTC" target="https://www.w3.org/TR/webrtc/">
          <front>
            <title>WebRTC</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="January" day="26"/>
          </front>
          <seriesInfo name="W3C" value="Recommendation"/>
        </reference>
        <reference anchor="ICE">
          <front>
            <title>Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal</title>
            <author fullname="A. Keranen" initials="A." surname="Keranen">
              <organization/>
            </author>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg">
              <organization/>
            </author>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg">
              <organization/>
            </author>
            <date month="July" year="2018"/>
            <abstract>
              <t>This document describes a protocol for Network Address Translator (NAT) traversal for UDP-based communication.  This protocol is called Interactive Connectivity Establishment (ICE).  ICE makes use of the Session Traversal Utilities for NAT (STUN) protocol and its extension, Traversal Using Relay NAT (TURN).</t>
              <t>This document obsoletes RFC 5245.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8445"/>
          <seriesInfo name="DOI" value="10.17487/RFC8445"/>
        </reference>
        <reference anchor="TURN">
          <front>
            <title>Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)</title>
            <author fullname="T. Reddy" initials="T." role="editor" surname="Reddy">
              <organization/>
            </author>
            <author fullname="A. Johnston" initials="A." role="editor" surname="Johnston">
              <organization/>
            </author>
            <author fullname="P. Matthews" initials="P." surname="Matthews">
              <organization/>
            </author>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg">
              <organization/>
            </author>
            <date month="February" year="2020"/>
            <abstract>
              <t>If a host is located behind a NAT, it can be impossible for that host to communicate directly with other hosts (peers) in certain situations. In these situations, it is necessary for the host to use the services of an intermediate node that acts as a communication relay. This specification defines a protocol, called "Traversal Using Relays around NAT" (TURN), that allows the host to control the operation of the relay and to exchange packets with its peers using the relay. TURN differs from other relay control protocols in that it allows a client to communicate with multiple peers using a single relay address.</t>
              <t>The TURN protocol was designed to be used as part of the Interactive Connectivity Establishment (ICE) approach to NAT traversal, though it can also be used without ICE.</t>
              <t>This document obsoletes RFCs 5766 and 6156.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8656"/>
          <seriesInfo name="DOI" value="10.17487/RFC8656"/>
        </reference>
        <reference anchor="CONNECT-IP">
          <front>
            <title>IP Proxying Support for HTTP</title>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Alex Chernyakhovsky" initials="A." surname="Chernyakhovsky">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Magnus Westerlund" initials="M." surname="Westerlund">
              <organization>Ericsson</organization>
            </author>
            <date day="27" month="September" year="2022"/>
            <abstract>
              <t>   This document describes a method of proxying IP packets over HTTP.
   This protocol is similar to CONNECT-UDP, but allows transmitting
   arbitrary IP packets, without being limited to just TCP like CONNECT
   or UDP like CONNECT-UDP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ip-03"/>
        </reference>
      </references>
    </references>
    <section anchor="example">
      <name>Example</name>
      <t>In the example below, the client is configured with URI Template
"https://example.org/.well-known/masque/udp/{target_host}/{target_port}/" and
wishes to use WebRTC with another browser over a listener UDP Proxying tunnel.
It contacts a STUN server at 192.0.2.42. The STUN server, in response, sends the
proxy's IP address to the other browser at 203.0.113.33. Using this information,
the other browser sends a UDP packet to the proxy, which is proxied over HTTP
back to the client.</t>
      <artwork type="ascii-art"><![CDATA[
 Client                                             Server

 STREAM(44): HEADERS            -------->
   :method = CONNECT
   :protocol = connect-udp
   :scheme = https
   :path = /.well-known/masque/udp/*/*/
   :authority = proxy.example.org
   connect-udp-listen = 2
   capsule-protocol = ?1

 DATAGRAM                       -------->
   Quarter Stream ID = 11
   Context ID = 2
   IP Version = 4
   IP Address = 192.0.2.42
   UDP Port = 1234
   UDP Payload = Encapsulated UDP Payload

            <--------  STREAM(44): HEADERS
                         :status = 200
                         capsule-protocol = ?1

/* Wait for STUN server to respond to UDP packet. */

            <--------  DATAGRAM
                         Quarter Stream ID = 11
                         Context ID = 2
                         IP Version = 4
                         IP Address = 192.0.2.42
                         UDP Port = 1234
                         UDP Payload = Encapsulated UDP Payload

/* Wait for the STUN server to send the proxy's IP and */
/* port to the other browser and for the other browser */
/* to send a UDP packet to the proxy. */

            <--------  DATAGRAM
                         Quarter Stream ID = 11
                         Context ID = 2
                         IP Version = 4
                         IP Address = 203.0.113.33
                         UDP Port = 4321
                         UDP Payload = Encapsulated UDP Payload
]]></artwork>
    </section>
    <section anchor="comparison-with-connect-ip">
      <name>Comparison with CONNECT-IP</name>
      <t>While the use-cases described in <xref target="intro"/> could be supported using IP Proxying
in HTTP <xref target="CONNECT-IP"/>, it would require that every
HTTP Datagram carries a complete IP header. This would lead to both
inefficiencies in the wire encoding and reduction in available Maximum
Transmission Unit (MTU). Furthermore, Web browsers would need to support IPv4
and IPv6 header generation, parsing, validation and error handling.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This proposal is the result of many conversations with MASQUE working group
participants.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA91a3XIbN5a+x1Mg9EXklEiJEqPE3CgZRpJjVlmyI1Hjmpqa
2gK7IRIx2c0A3aI1KqX2NfZun2UfZZ9kv3MOutktUbHnbmuZuMRGAwfn/3wH
YLfbVYUrFnaoO+99/unOZTP91oXCZtbr69P32mX6zWTyvqPMdOrtLeadvLu4
ODuZdOmtTO2oxBR2lvu7oQ5FqtI8ycwSNFNvbopuSOYuM/903STPMpsU3TJd
dRe8srvfV6GcLl0ILs+KuxUWjc8mr1VWLqfWD1UKwkOFhcFmoQxDXfjSKrBx
qIy3Zqgn3mRhlftCrWdDfT66+vX6TN3arMQyrWc+L1fgWcY7GJE9Oh9y/5Fk
/YUm0PjSuAXGlyb8Xtq/OFvc9HI/ozfGJ3O8mRfFKgz39mgiDblb26um7dHA
3tTn62D3hMQeLZ25Yl5OsfjU3Lr0Kuph77NqobULSB6KxsYtGj0h3XP556l9
fkZvXiwXHfXR3q1zn5Liuvr30iX8hfbnL7CFmXmz5Acs5r8r8hr+VpQguwj1
YnKdmkhRenhZ0Gax0MXc6rW502m+zvilaKzerJvN+LvwpkxZzHPPTOGfBlm4
wWlPV6rgQfE3VlH7Bawz1L/k+Wxh9du3JzwWCm8tVNs/2t/Xo+VqDl1ag0H9
3viPYI1nJa6AP5/nZVYYiPJXZ9c87u0MvjrUJyOZlqfY+dVgf3AYn7GAIuE6
c4UFNwUZUuc32Ml6lxieZcXf0soo7Ep/mdFoL8mXbWFHEBbOOm9IOprOXWPw
/7aUBswG4vWRkFnul6ZAIA2Vy242D1p/sNPLycmQiVT5ScY6PMZpQR/sH/SR
QboHRyIwNraBKMlCkDk8GepLi72WNsMaSCQkjZ/ZZmyt1+ve+pBDeXK5t7ZT
XySIYNXtdsE9NGmSQqkJHHdpk7nJXFjqIhfnb6ZJnWeLO3JyZAJtTTLnl3Vm
9RZ+HgosVQXlraWj79rosLKJu0HMzHO8NlmqKaX19ASK0/h/bRE3oWRVQ1FM
NVk4myGsrb+1XoGVIk/yRcA0bGsC87N3uKunZUEksrzAqxtsQsuYSsiXlkmt
rPXdIu/S3walhftooykiK8js5ZKWY9IqDxTQmbafEKaUv0mWlrwuU6yVYm4K
bTMzpRTA/JXBdhMDAj1R8tKl6cIq9UKP4Vd5WiZkLH3/wtHjwxfp/v7+q0Zt
Or58ffLq4NX3Dw+VPRIUjAJsqZipWAfkG2UGh6U3ogxzt8hNGohepLP/3RHR
YVPduE8wQmUnJXY6yZdTl2F8jSDjBMccRXbAOFJYqneCtaB6ZUW4V73D3hFC
Rn1Fk5nffn//4eHlroZfRKZXlS6J6NL8lnsELMWZIcvon7nm+K/F3ORVZOGe
fpOvLdwiWg+byhcI4S38BpGa6fHJGV78hD+09/eDwbciI7ZEGrUq1gl3SztO
bbG2FiZe57yxFDsfdtlbidSGMLFqpm5B60APpTtlXXmbWAR41HLy0RaB3i/L
ReFWyFyk1NDTH+YOD47pAFOQMpZuNi/AA8ICSAFuRCFkEhhvhSpBGodzlpRj
NtRansjmiOEHnvkxID1lhUuCur+nAUif5hwns9IgPAtYiz03RSFyWVLUBGBm
xCPYgTvCbVM9vWOhA3KzkoCMAZMgPhbWpCQnzWiKPrXEWeBo9Plys834vTZp
6m1AfOwqLPMWG6wAvzCX1pC6eUm+sl48N8k91Fss7sgZgZbAaIan3ZYaVC0A
+CJBJSYrL9lqcMoJFKXt+E9tSLybfj4B6E0CiB5N7kC8kN+IRzyJvCdOwXEl
HqFDAqklAsjgYmm11dJg+8UL0gcrDmphZz21Nw5Vi54lrwD3aAI+AUDx+mrS
2ZW/+uIdf788+/V6fHl2St+v3ozevq2/qDjj6s2767enm2+blSfvzs/PLk5l
MUZ1a0gBmP6tIyHUefd+Mn53MXrbEddvahtQl3QypagorIcnUCEwQVVmSGnN
zyfv//u/+gPKW4jng37/FTxaHr7vfzfAw3puM9mN65Q8Qqd3yqxW1niiQggt
MStXmAUFN+w1B07T5IRQ5zd/J838Y6h/mCar/uDHOEACtwYrnbUGWWdPR54s
FiVuGdqyTa3N1vgjTbf5Hf2t9VzpvTH42NtLqnRQ/NJl+SKf3Unw3d83yg2V
GegVQcUwwywomiq3U3H+V1DKCSf6/X0k+sdFVbaBQ9JWgSqhnSGHE11qtHhX
takfhxQEX11NLq9PJtfQdff1+Ozt6RUn81eDviRzQRZ3OtwB4H0SaGE8BQ6s
iXJLcePgP5tuDjue14X2/kVddFGEx5kuM472NC55DG3CrgjAAEuqJCS0GeHH
NOZ0KVUVFloZVEwUYjx5JK/X+NpqQKsduCgSGsrwEgmV1XsnRAlpCdI4jT3K
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

-->

</rfc>
