<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.0.39 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-quic-http-00" category="std">

  <front>
    <title abbrev="HTTP over QUIC">Hypertext Transfer Protocol (HTTP) over QUIC</title>

    <author initials="M." surname="Bishop" fullname="Mike Bishop" role="editor">
      <organization>Microsoft</organization>
      <address>
        <email>Mike.Bishop@microsoft.com</email>
      </address>
    </author>

    <date year="2016" month="November"/>

    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    

    <abstract>


<t>The QUIC transport protocol has several features that are desirable in a
transport for HTTP/2, such as stream multiplexing, per-stream flow control, and
low-latency connection establishment.  This document describes a mapping of
HTTP/2 semantics over QUIC.  Specifically, this document identifies HTTP/2
features that are subsumed by QUIC, and describes how the other features can be
implemented atop QUIC.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>The QUIC transport protocol has several features that are desirable in a
transport for HTTP/2, such as stream multiplexing, per-stream flow control, and
low-latency connection establishment.  This document describes a mapping of
HTTP/2 semantics over QUIC.  Specifically, this document identifies HTTP/2
features that are subsumed by QUIC, and describes how the other features can be
implemented atop QUIC.</t>

<t>QUIC is described in <xref target="QUIC-TRANSPORT"/>.  For a full description of HTTP/2, see
<xref target="RFC7540"/>.</t>

<section anchor="notational-conventions" title="Notational Conventions">

<t>The words “MUST”, “MUST NOT”, “SHOULD”, and “MAY” are used in this document.
It’s not shouting; when they are capitalized, they have the special meaning
defined in <xref target="RFC2119"/>.</t>

</section>
</section>
<section anchor="quic-advertisement" title="QUIC advertisement">

<t>A server advertises that it can speak HTTP/2-over-QUIC via the Alt- Svc HTTP
response header.  It does so by including the header in any response sent over a
non-QUIC (e.g.  HTTP/2 over TLS) connection:</t>

<t>Alt-Svc: quic=”:443”</t>

<t>In addition, the list of QUIC versions supported by the server can be specified
by the v= parameter.  For example, if a server supported both version 33 and 34
it would specify the following header:</t>

<t>Alt-Svc: quic=”:443”; v=”34,33”</t>

<t>On receipt of this header, a client may attempt to establish a QUIC connection
on port 443 and, if successful, send HTTP/2 requests using the mapping described
in this document.</t>

<t>Connectivity problems (e.g. firewall blocking UDP) may result in QUIC connection
establishment failure, in which case the client should gracefully fallback to
HTTP/2-over-TLS/TCP.</t>

</section>
<section anchor="connection-establishment" title="Connection establishment">

<t>HTTP/2-over-QUIC connections are established as described in <xref target="QUIC-TRANSPORT"/>.
The QUIC crypto handshake MUST use TLS <xref target="QUIC-TLS"/>.</t>

<t>While connection-level options pertaining to the core QUIC protocol are set in
the initial crypto handshake <xref target="QUIC-TLS"/>.  HTTP/2-specific settings are
conveyed in the HTTP/2 SETTINGS frame.  After the QUIC connection is
established, an HTTP/2 SETTINGS frame may be sent as the initial frame of the
QUIC headers stream (StreamID 3, See <xref target="stream-mapping"/>). As in HTTP/2,
additional SETTINGS frames may be sent mid-connection by either endpoint.</t>

<t><list style="hanging">
  <t hangText='TODO:'>
  Decide whether to acknowledge receipt of SETTINGS through empty SETTINGS
frames with ACK bit set, as in HTTP/2, or rely on transport- level
acknowledgment.</t>
</list></t>

<t>Some transport-level options that HTTP/2-over-TCP specifies via the SETTINGS
frame are superseded by QUIC transport parameters in HTTP/2- over-QUIC.  Below
is a listing of how each HTTP/2 SETTINGS parameter is mapped:</t>

<t><list style="hanging">
  <t hangText='SETTINGS_HEADER_TABLE_SIZE:'>
  Sent in HTTP/2 SETTINGS frame.</t>
  <t hangText='SETTINGS_ENABLE_PUSH:'>
  Sent in HTTP/2 SETTINGS frame (TBD, currently set using QUIC “SPSH” connection
option)</t>
  <t hangText='SETTINGS_MAX_CONCURRENT_STREAMS'>
  QUIC requires the maximum number of incoming streams per connection to be
specified in the initial crypto handshake, using the “MSPC” tag.  Specifying
SETTINGS_MAX_CONCURRENT_STREAMS in the HTTP/2 SETTINGS frame is an error.</t>
  <t hangText='SETTINGS_INITIAL_WINDOW_SIZE:'>
  QUIC requires both stream and connection flow control window sizes to be
specified in the initial crypto handshake, using the “SFCW” and “CFCW” tags,
respectively.  Specifying SETTINGS_INITIAL_WINDOW_SIZE in the HTTP/2 SETTINGS
frame is an error.</t>
  <t hangText='SETTINGS_MAX_FRAME_SIZE:'>
  This setting has no equivalent in QUIC.  Specifying it in the HTTP/2 SETTINGS
frame is an error.</t>
  <t hangText='SETTINGS_MAX_HEADER_LIST_SIZE'>
  Sent in HTTP/2 SETTINGS frame.</t>
</list></t>

<t>As with HTTP/2-over-TCP, unknown SETTINGS parameters are tolerated but ignored.
SETTINGS parameters are acknowledged by the receiving peer, by sending an empty
SETTINGS frame in response with the ACK bit set.</t>

</section>
<section anchor="sending-a-request-on-an-http2-over-quic-connection" title="Sending a request on an HTTP/2-over-QUIC connection">

<t>A high level overview of sending an HTTP/2 request on an established QUIC
connection is as follows, with further details in later sections of this
document.  A client should first encode any HTTP headers using HPACK
<xref target="RFC7541"/> and frame them as HTTP/2 HEADERS frames.  These are sent on
StreamID 3 (see <xref target="stream-mapping"/>).  The exact layout of the HEADERS frame is
described in Section 6.2 of <xref target="RFC7540"/>.  No HTTP/2 padding is required: QUIC
provides a PADDING frame for this purpose.</t>

<t>While HEADERS are sent on stream 3, the mandatory stream identifier in each
HEADERS frame indicates the QUIC StreamID on which a corresponding request body
may be sent.  If there is no non-header data, the specified QUIC data stream
will never be used.</t>

<section anchor="terminating-a-stream" title="Terminating a stream">

<t>A stream can be terminated in one of three ways:</t>

<t><list style="symbols">
  <t>the request/response is headers only, in which case a HEADERS frame with the
END_STREAM bit set ends the stream specified in the HEADERS frame</t>
  <t>the request/response has headers and body but no trailing headers, in which
case the final QUIC STREAM frame will have the FIN bit set</t>
  <t>the request/response has headers, body, and trailing headers, in which case
the final QUIC STREAM frame will not have the FIN bit set, and the trailing
HEADERS frame will have the END_STREAM bit set</t>
</list></t>

<t>(TODO: Describe mapping of HTTP/2 stream state machine to QUIC stream state
machine.)</t>

</section>
</section>
<section anchor="writing-data-to-quic-streams" title="Writing data to QUIC streams">

<t>A QUIC stream provides reliable in-order delivery of bytes, within that stream.
On the wire, data is framed into QUIC STREAM frames, but this framing is
invisible to the HTTP/2 layer.  A QUIC receiver buffers and orders received
STREAM frames, exposing the data contained within as a reliable byte stream to
the application.</t>

<t>Bytes written to Stream 3 must be HTTP/2 HEADERS frames (or other HTTP/2
non-data frames), whereas bytes written to data streams should simply be request
or response bodies.  No further framing is required by HTTP/2 (i.e. no HTTP/2
DATA frames are used).</t>

<t>If data arrives on a data stream before the corresponding HEADERS have arrived
on stream 3, then the data is buffered until the HEADERS arrive.</t>

</section>
<section anchor="stream-mapping" title="Stream Mapping">

<t>When HTTP/2 headers and data are sent over QUIC, the QUIC layer handles most of
the stream management.  HTTP/2 StreamIDs are replaced by QUIC StreamIDs.  HTTP/2
does not need to do any explicit stream framing when using QUIC - data sent over
a QUIC stream simply consists of HTTP/2 headers or body.  Requests and responses
are considered complete when the QUIC stream is closed in the corresponding
direction.</t>

<t>Like HTTP/2, QUIC uses odd-numbered StreamIDs for client initiated streams, and
even-numbered IDs for server initiated (i.e. server push) streams.  Unlike
HTTP/2 there are a couple of reserved (or dedicated) StreamIDs in QUIC.</t>

<section anchor="reserved-streams" title="Reserved Streams">

<t>StreamID 1 is reserved for crypto operations (the handshake, crypto config
updates), and MUST NOT be used for HTTP/2 headers or body, see
<xref target="QUIC-TRANSPORT"/>.  StreamID 3 is reserved for sending and receiving HTTP/2
HEADERS frames.  Therefore the first client initiated data stream has StreamID
5.</t>

<t>There are no reserved server initiated StreamIDs, so the first server initiated
(i.e. server push) stream has an ID of 2, followed by 4, etc.</t>

<section anchor="stream-3-headers" title="Stream 3: headers">

<t>HTTP/2-over-QUIC uses HPACK header compression as described in <xref target="RFC7541"/>.
HPACK was designed for HTTP/2 with the assumption of in- order delivery such as
that provided by TCP.  A sequence of encoded header blocks must arrive (and be
decoded) at an endpoint in the same order in which they were encoded.  This
ensures that the dynamic state at the two endpoints remains in sync.</t>

<t>QUIC streams provide in-order delivery of data sent on those streams, but there
are no guarantees about order of delivery between streams.  To achieve in-order
delivery of HEADERS frames in QUIC, they are all sent on the reserved Stream 3.
Data (request/response bodies) which arrive on other data streams are buffered
until the corresponding HEADERS arrive and are read out of Stream 3.</t>

<t>This does introduce head-of-line blocking: if the packet containing HEADERS for
stream N is lost or reordered then stream N+2 cannot be processed until they it
has been retransmitted successfully, even though the HEADERS for stream N+2 may
have arrived.</t>

<t>Trailing headers (trailers) can also be sent on stream 3.  These are sent as
HTTP/2 HEADERS frames, but MUST have the END_STREAM bit set, and MUST include a
“:final-offset” pseudo-header.  Since QUIC supports out of order delivery,
receipt of a HEADERS frame with the END_STREAM bit set does not guarantee that
the entire request/ response body has been fully received.  Therefore, the extra
“:final-offset” pseudo-header is included in trailing HEADERS frames to indicate
the total number of body bytes sent on the corresponding data stream.  This is
used by the QUIC layer to determine when the full request has been received and
therefore when it is safe to tear down local stream state.  The “:final-offset”
pseudo header is stripped from the HEADERS before passing to the HTTP/2 layer.</t>

</section>
<section anchor="stream-states" title="Stream states">

<t>The mapping of HTTP/2-over-QUIC with potential out of order delivery of HEADERS
frames results in some changes to the HTTP/2 stream state transition diagram
(<xref target="RFC7540"/>, Section 5.1}}.  Specifically the transition from “open” to “half
closed (remote)”, and the transition from “half closed (local)” to “closed”
takes place only when:</t>

<t><list style="symbols">
  <t>the peer has explicitly ended the stream via either  <list style="symbols">
      <t>an HTTP/2 HEADERS frame with END_STREAM bit set and, in the case of trailing
headers, the :final-offset pseudo-header</t>
      <t>or a QUIC stream frame with the FIN bit set.</t>
    </list></t>
  <t>and the full request or response body has been received.</t>
</list></t>

</section>
</section>
</section>
<section anchor="stream-priorities" title="Stream Priorities">

<t>HTTP/2-over-QUIC uses the HTTP/2 priority scheme described in <xref target="RFC7540"/>
Section 5.3.  In the HTTP/2 priority scheme, a given stream can be designated as
dependent upon another stream, which expresses the preference that the latter
stream (the “parent” stream) be allocated resources before the former stream
(the “dependent” stream).  Taken together, the dependencies across all streams
in a connection form a dependency tree.  The structure of the dependency tree
changes as HTTP/2 HEADERS and PRIORITY frames add, remove, or change the
dependency links between streams.</t>

<t>Implicit in this scheme is the notion of in-order delivery of priority changes
(i.e., dependency tree mutations): since operations on the dependency tree such
as reparenting a subtree are not commutative, both sender and receiver must
apply them in the same order to ensure that both sides have a consistent view of
the stream dependency tree.  HTTP/2 specifies priority assignments in PRIORITY
frames and (optionally) in HEADERS frames.  To achieve in-order delivery of
HTTP/2 priority changes in HTTP/2-over-QUIC, HTTP/2 PRIORITY frames, in addition
to HEADERS frames, are also sent on reserved stream 3.  The semantics of the
Stream Dependency, Weight, E flag, and (for HEADERS frames) PRIORITY flag are
the same as in HTTP/2-over-TCP.</t>

<t>Since HEADERS and PRIORITY frames are sent on a different stream than the STREAM
frames for the streams they reference, they may be delivered out-of-order with
respect to the STREAM frames.  There is no special handling for this–the
receiver should simply assign resources according to the most recent stream
priority information that it has received.</t>

<t>ALTERNATIVE DESIGN: if the core QUIC protocol implements priorities, then this
document should map the HTTP/2 priorities scheme to that provided by the core
protocol.  This would likely involve prohibiting the sending of HTTP/2 PRIORITY
frames and setting of the PRIORITY flag in HTTP/2 HEADERS frames, to avoid
conflicting directives.</t>

</section>
<section anchor="flow-control" title="Flow Control">

<t>QUIC provides stream and connection level flow control, similar in principle to
HTTP/2’s flow control but with some implementation differences.  As flow control
is handled by QUIC, the HTTP/2 mapping need not concern itself with maintaining
flow control state, or how/ when to send flow control frames to the peer.  The
HTTP/2 mapping must not send HTTP/2 WINDOW_UPDATE frames.</t>

<t>The initial flow control window sizes (stream and connection) are communicated
during the crypto handshake (see <xref target="connection-establishment"/>).  Setting these
values to the maximum size (2^31 - 1) effectively disables flow control.</t>

<t>Relatively small initial windows can be used, as QUIC will attempt to auto-tune
the flow control windows based on usage.  See <xref target="QUIC-TRANSPORT"/> for more
details.</t>

</section>
<section anchor="server-push" title="Server Push">

<t>HTTP/2-over-QUIC supports HTTP/2 server push.  During connection establishment,
the client indicates whether or it is willing to receive server pushes via the
SETTINGS_ENABLE_PUSH setting in the HTTP/2 SETTINGS frame (see
<xref target="connection-establishment"/>), which defaults to 1 (true).</t>

<t>As with server push for HTTP/2-over-TCP, the server initiates a server push by
sending an HTTP/2 PUSH_PROMISE frame containing the StreamID of the stream to be
pushed, as well as request header fields attributed to the request.  The
PUSH_PROMISE frame is sent on stream 3, to ensure proper ordering with respect
to other HEADERS and non- data frames.  Within the PUSH_PROMISE frame, the
StreamID in the common HTTP/2 frame header indicates the associated (client-
initiated) stream for the new push stream, while the Promised Stream ID field
specifies the StreamID of the new push stream.</t>

<t>The server push response is conveyed in the same way as a non-server- push
response, with response headers and (if present) trailers carried by HTTP/2
HEADERS frames sent on reserved stream 3, and response body (if any) sent via
QUIC stream frames on the stream specified in the corresponding PUSH_PROMISE
frame.</t>

</section>
<section anchor="error-codes" title="Error Codes">

<t>The HTTP/2 error codes defined in Section 7 of <xref target="RFC7540"/> map to QUIC error
codes as follows:</t>

<t><list style="hanging">
  <t hangText='NO_ERROR (0x0):'>
  Maps to QUIC_NO_ERROR</t>
  <t hangText='PROTOCOL_ERROR (0x1):'>
  No single mapping?</t>
  <t hangText='INTERNAL_ERROR (0x2)'>
  QUIC_INTERNAL_ERROR? (not currently defined in core protocol spec)</t>
  <t hangText='FLOW_CONTROL_ERROR (0x3):'>
  QUIC_FLOW_CONTROL_RECEIVED_TOO_MUCH_DATA? (not currently defined in core
protocol spec)</t>
  <t hangText='SETTINGS_TIMEOUT (0x4):'>
  (depends on whether we support SETTINGS acks)</t>
  <t hangText='STREAM_CLOSED (0x5):'>
  QUIC_STREAM_DATA_AFTER_TERMINATION</t>
  <t hangText='FRAME_SIZE_ERROR (0x6)'>
  QUIC_INVALID_FRAME_DATA</t>
  <t hangText='REFUSED_STREAM (0x7):'>
  ?</t>
  <t hangText='CANCEL (0x8):'>
  ?</t>
  <t hangText='COMPRESSION_ERROR (0x9):'>
  QUIC_DECOMPRESSION_FAILURE (not currently defined in core spec)</t>
  <t hangText='CONNECT_ERROR (0xa):'>
  ? (depends whether we decide to support CONNECT)</t>
  <t hangText='ENHANCE_YOUR_CALM (0xb):'>
  ?</t>
  <t hangText='INADEQUATE_SECURITY (0xc):'>
  QUIC_HANDSHAKE_FAILED, QUIC_CRYPTO_NO_SUPPORT</t>
  <t hangText='HTTP_1_1_REQUIRED (0xd):'>
  ?</t>
</list></t>

<t>TODO: fill in missing error code mappings.</t>

</section>
<section anchor="other-http2-frames" title="Other HTTP/2 frames">

<t>QUIC includes some features (e.g. flow control) which are also present in
HTTP/2.  In these cases the HTTP/2 mapping need not re- implement them.  As a
result some HTTP/2 frame types are not required when using QUIC, as they either
are directly implemented in the QUIC layer, or their functionality is provided
via other means.  This section of the document describes these cases.</t>

<section anchor="goaway-frame" title="GOAWAY frame">

<t>QUIC has its own GOAWAY frame, and QUIC implementations may to expose the
sending of a GOAWAY to the application.  The semantics of sending a GOAWAY in
QUIC are identical to HTTP/2: an endpoint sending a GOAWAY will continue
processing open streams, but will not accept newly created streams.</t>

<t>QUIC’s GOAWAY frame is described in detail in the <xref target="QUIC-TRANSPORT"/>.</t>

</section>
<section anchor="ping-frame" title="PING frame">

<t>QUIC has its own PING frame, which is currently exposed to the application.
QUIC clients send periodic PINGs to servers if there are no currently active
data streams on the connection.</t>

<t>QUIC’s PING frame is described in detail in the <xref target="QUIC-TRANSPORT"/>.</t>

</section>
<section anchor="padding-frame" title="PADDING frame">

<t>There is no HTTP/2 padding in this mapping; padding is instead provided at the
QUIC layer by including QUIC PADDING frames in a packet payload.  An HTTP/2 over
QUIC mapping should treat any HTTP/2 level padding as an error, to avoid any
possibility of inconsistent flow control states between endpoints (e.g. client
sends HTTP/2 padding, counts it against flow control, server ignores).</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>The security considerations of HTTP over QUIC should be comparable to those of
HTTP/2.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document has no IANA actions.  Yet.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

<reference anchor="QUIC-TLS" >
  <front>
    <title>Using Transport Layer Security (TLS) to Secure QUIC</title>
    <author initials="M." surname="Thomson" fullname="Martin Thomson" role="editor">
      <organization>Mozilla</organization>
    </author>
    <author initials="S." surname="Turner, Ed" fullname="Sean Turner" role="editor">
      <organization>sn3rd</organization>
    </author>
    <date year="2016" month="November"/>
  </front>
</reference>
<reference anchor="QUIC-TRANSPORT" >
  <front>
    <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
    <author initials="J." surname="Iyengar" fullname="Jana Iyengar" role="editor">
      <organization>Google</organization>
    </author>
    <author initials="M." surname="Thomson" fullname="Martin Thomson" role="editor">
      <organization>Mozilla</organization>
    </author>
    <date year="2016" month="November"/>
  </front>
</reference>




<reference  anchor='RFC7540' target='http://www.rfc-editor.org/info/rfc7540'>
<front>
<title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
<author initials='M.' surname='Belshe' fullname='M. Belshe'><organization /></author>
<author initials='R.' surname='Peon' fullname='R. Peon'><organization /></author>
<author initials='M.' surname='Thomson' fullname='M. Thomson' role='editor'><organization /></author>
<date year='2015' month='May' />
<abstract><t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t><t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t></abstract>
</front>
<seriesInfo name='RFC' value='7540'/>
<seriesInfo name='DOI' value='10.17487/RFC7540'/>
</reference>



<reference  anchor='RFC2119' target='http://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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='RFC7541' target='http://www.rfc-editor.org/info/rfc7541'>
<front>
<title>HPACK: Header Compression for HTTP/2</title>
<author initials='R.' surname='Peon' fullname='R. Peon'><organization /></author>
<author initials='H.' surname='Ruellan' fullname='H. Ruellan'><organization /></author>
<date year='2015' month='May' />
<abstract><t>This specification defines HPACK, a compression format for efficiently representing HTTP header fields, to be used in HTTP/2.</t></abstract>
</front>
<seriesInfo name='RFC' value='7541'/>
<seriesInfo name='DOI' value='10.17487/RFC7541'/>
</reference>




    </references>



<section anchor="contributors" title="Contributors">

<t>The original authors of this specification were Robbie Shade and Mike Warres.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAKPFPFgAA+1cW5MbuXV+x69AuA8eOuSsRqPdzXLL5XBJakV7hhyTHCtK
KpkCu0ESpWY33WgORW/pv+dcADSa5EiOnYc8ZF1ladlo4OBcv3Pp7Xa7ojJV
pnvy3XGny0p/quSiVLld6VI+lEVVJEUmr94tFg9tWTzDj396HA+EWi5L/Qwv
we/Rz2mR5GoLm6WlWlVdo6tV9y97k3Q3VbXrZqrSthIp/NGTr1/dfN+9uREJ
/Nu6KI89aatUmF3Zk1W5t9XrV69+fPVaqFKrHlO0K8pKHIry47os9rsenyhs
pfL0SWVFDpsetRU705P/AWR3pIUXSr2y8Lfjlv8CBG7Vbmfy9X8KofbVpih7
QnaFhH9Mbnvy/lr+bOym2NFPfJl781HHvxblGn9MysIWq4p+0ltlMl55zSv/
desXXCfFlhaVBfJZp6YqSiHyotyqyjzrnoCneJnu4m7eo5VOJK1HC5TWt5d3
6gisnutkX5rqKK/ghbasCv5F0yYt2qDJY/wlXJb+6bo/61svNsXWFnn43V1d
lZXJzx4yB4q/mixT4cfG9S4eM4dj9mWuy44cpdcnR821yt3j5jk2vy3Ty6cE
xs36k/nDdLZosg+f9WRfPg4fuj8rq1N5v88qs8v0J/g76I1nXODw38W9P1zL
8VHna1WeXOkPKldnj+hOvxTFOtP/A9b970tImHwVqaDodrtSLW1VqqQSYrFh
dQJj9Mq3895go6y0GoxeZXKlVQUctLLaqEqCtcpUW1OqZaaBcKlE/T6cRv7i
29dgkPtkI3EbMFC1lVsvFlD3jgQ/1HUPVllxkEmRV0B6ByUm4AdyJHlyxAe5
TipT5BIcC5wJlrfVeXUtgR/GorXv8d+RpqQ0SyBTSWf/slgJpgbuslV5ZRJb
ezLYYb7TiVmZRGXZsQPXi/czKfw/PIQNeQ9xzge7X1pYncrlkbYk8iNKNnCz
CrhcwP+VNR8TsIKlFmYL7MCzUFGrYsdUOTFtTZqC9gjxjRwja9I9MeH/pfZ/
VWokEyTF7ZMil3/9tem7Pn8G+t8Cu5Vc7bPMLd4Ro4pVLQStxa+//tPs7eCH
7968gpdQD76Rk6JSuBSkOyjyZ7xpkVtWCQiaqZWt+8f5otXhP+VkSn+fv5s+
3g1bfM3Wff9Di9iwt0xjg4HXYlz9xsq8qCREuD24nfVP8rDRuEwf6b1E7Uyl
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

-->

</rfc>

