<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.18 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sawant-capport-api-state-enhancement-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="CAPPORT API State Enhancement">Captive Portal API State Structure Enhancement</title>
    <seriesInfo name="Internet-Draft" value="draft-sawant-capport-api-state-enhancement-01"/>
    <author fullname="Paresh Sawant">
      <organization>Apple Inc.</organization>
      <address>
        <email>paresh_sawant@apple.com</email>
      </address>
    </author>
    <date year="2024" month="August" day="19"/>
    <keyword>capport api state</keyword>
    <keyword>token</keyword>
    <keyword>internet access</keyword>
    <keyword>notification</keyword>
    <abstract>
      <?line 23?>

<t>This document specifies a new key in Captive Portal API State data
structure. The purpose of the new key is to allow clients to
perform the client authentication without user interaction.</t>
    </abstract>
  </front>
  <middle>
    <?line 29?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>As described in <xref target="RFC8908"/>, the Captive Portal API data structure is
specified in JavaScript Object Notation (JSON) <xref target="RFC8259"/>. Requests
and responses for the Captive Portal API use the
"application/captive+json" media type. The original specification
specifies key "user-portal-url" to convey the web portal URL to the
client. Although in most cases client devices are capable of
presenting the web portal to the user, there are types of devices
that are not built to support the user interaction with the web
portal. This document specifies a new key that allows client to
perform the authentication without user interaction.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="api-state-structure-enhancement">
      <name>API State Structure Enhancement</name>
      <t><xref target="new-key"/> shows the new key that can be optionally included in the
top-level of the JSON structure returned by the API server.</t>
      <table anchor="new-key">
        <name>Table 1</name>
        <thead>
          <tr>
            <th align="left">Key</th>
            <th align="left">Type</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">client-authentication-url</td>
            <td align="left">string</td>
            <td align="left">Provides the URL of the authentication server that <bcp14>MUST</bcp14> be accessed over TLS with which the client is authenticated without user interaction. Authentication Server authenticates clients using the HTTP authentication framework specified in <xref target="RFC9110"/>. The server <bcp14>MUST NOT</bcp14> require user interaction on the client device. The client <bcp14>MUST</bcp14> have a credential to perform the authentication without user interaction.</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="use-cases">
      <name>Use Cases</name>
      <ul spacing="normal">
        <li>
          <t>Devices that don't support user interaction or web interface,
can join captive networks using "client-authentication-url"
key. For example, IoT (Internet of Things) devices or speakers
can join captive networks using the credentials provisioned to
them.</t>
        </li>
        <li>
          <t>Use of "PrivateToken" HTTP authentication scheme can attest that
the client behind the user agent is likely not a bot attempting to
perform some form of automated attack such as credential stuffing.</t>
        </li>
        <li>
          <t>User experience improvements by not requiring user's interaction
with the Captive Portal system every time client device connects
the captive network. For example, many Captive Portal systems
require users to accept the same terms of service or solve CAPTCHA
or watch some commercial on every connection to captive network.</t>
        </li>
      </ul>
    </section>
    <section anchor="example-interaction">
      <name>Example Interaction</name>
      <t>Upon discovering the URI of the API server, a client connected to a
captive network will query the API server to retrieve information
about its captive state and conditions to escape captivity.  In this
example, the client discovered the URI "https://example.org/captive-
portal/api/X54PD39JV" using one of the mechanisms defined in
<xref target="RFC8910"/>.</t>
      <t>To request the Captive Portal JSON content, a client sends an
HTTP GET request:</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="80" width="344" viewBox="0 0 344 80" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <g class="text">
              <text x="16" y="36">GET</text>
              <text x="152" y="36">/captive-portal/api/X54PD39JV</text>
              <text x="308" y="36">HTTP/1.1</text>
              <text x="24" y="52">Host:</text>
              <text x="96" y="52">example.org</text>
              <text x="32" y="68">Accept:</text>
              <text x="164" y="68">application/captive+json</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
GET /captive-portal/api/X54PD39JV HTTP/1.1
Host: example.org
Accept: application/captive+json
]]></artwork>
      </artset>
      <t>The server then responds with the JSON content for that client:</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="536" viewBox="0 0 536 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <g class="text">
              <text x="36" y="36">HTTP/1.1</text>
              <text x="88" y="36">200</text>
              <text x="116" y="36">OK</text>
              <text x="60" y="52">Cache-Control:</text>
              <text x="152" y="52">private</text>
              <text x="24" y="68">Date:</text>
              <text x="68" y="68">Mon,</text>
              <text x="100" y="68">19</text>
              <text x="128" y="68">Aug</text>
              <text x="164" y="68">2024</text>
              <text x="220" y="68">05:07:35</text>
              <text x="272" y="68">GMT</text>
              <text x="56" y="84">Content-Type:</text>
              <text x="212" y="84">application/captive+json</text>
              <text x="8" y="116">{</text>
              <text x="76" y="132">"captive":</text>
              <text x="144" y="132">true,</text>
              <text x="148" y="148">"client-authentication-url":</text>
              <text x="400" y="148">"https://server.example.org/auth"</text>
              <text x="8" y="164">}</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
HTTP/1.1 200 OK
Cache-Control: private
Date: Mon, 19 Aug 2024 05:07:35 GMT
Content-Type: application/captive+json

{
    "captive": true,
    "client-authentication-url": "https://server.example.org/auth"
}
]]></artwork>
      </artset>
      <t>Upon receiving this information, the client will use it to start
an authentication session with the server (as specified by "client-
authentication-url" key) to enable access to the external network.
The client sends following HTTP request to begin the authentication:</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="64" width="200" viewBox="0 0 200 64" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <g class="text">
              <text x="16" y="36">GET</text>
              <text x="56" y="36">/auth</text>
              <text x="116" y="36">HTTP/1.1</text>
              <text x="24" y="52">Host:</text>
              <text x="124" y="52">server.example.org</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
GET /auth HTTP/1.1
Host: server.example.org
]]></artwork>
      </artset>
      <t>Upon receiving the HTTP request, the server selects appropriate
authentication scheme to authenticate the client. This example
shows "Bearer" authentication scheme defined in <xref target="RFC6750"/>.
<xref section="16.4.1" sectionFormat="of" target="RFC9110"/> specifies the list of authentication
schemes. The server sends HTTP response message with 401
(Unauthorized) status code along with WWW-Authenticate header:</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="64" width="328" viewBox="0 0 328 64" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <g class="text">
              <text x="36" y="36">HTTP/1.1</text>
              <text x="88" y="36">401</text>
              <text x="156" y="36">Unauthorized</text>
              <text x="72" y="52">WWW-Authenticate:</text>
              <text x="172" y="52">Bearer</text>
              <text x="264" y="52">realm="example"</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example"
]]></artwork>
      </artset>
      <t>In response to the received challenge, the client sends an access
token in the "Authorization" request header using "Bearer"
authentication scheme:</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="80" width="304" viewBox="0 0 304 80" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <g class="text">
              <text x="16" y="36">GET</text>
              <text x="56" y="36">/auth</text>
              <text x="116" y="36">HTTP/1.1</text>
              <text x="24" y="52">Host:</text>
              <text x="124" y="52">server.example.org</text>
              <text x="60" y="68">Authorization:</text>
              <text x="148" y="68">Bearer</text>
              <text x="240" y="68">mF_9.B5f-4.1JqM</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
GET /auth HTTP/1.1
Host: server.example.org
Authorization: Bearer mF_9.B5f-4.1JqM
]]></artwork>
      </artset>
      <t>If the access token is found valid, the server sends a response to
the client. An example of such response is:</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="360" viewBox="0 0 360 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <g class="text">
              <text x="36" y="36">HTTP/1.1</text>
              <text x="88" y="36">200</text>
              <text x="116" y="36">OK</text>
              <text x="56" y="52">Content-Type:</text>
              <text x="236" y="52">application/json;charset=UTF-8</text>
              <text x="60" y="68">Cache-Control:</text>
              <text x="156" y="68">no-store</text>
              <text x="32" y="84">Pragma:</text>
              <text x="100" y="84">no-cache</text>
              <text x="8" y="100">{</text>
              <text x="168" y="116">"access_token":"mF_9.B5f-4.1JqM",</text>
              <text x="124" y="132">"token_type":"Bearer",</text>
              <text x="108" y="148">"expires_in":3600,</text>
              <text x="196" y="164">"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA"</text>
              <text x="8" y="180">}</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
    "access_token":"mF_9.B5f-4.1JqM",
    "token_type":"Bearer",
    "expires_in":3600,
    "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA"
}
]]></artwork>
      </artset>
      <t>On a successful HTTP authentication, the client <bcp14>SHOULD</bcp14> query the
API server again to verify that it is no longer captive.</t>
      <t>When the client requests the Captive Portal JSON content after
gaining external network access, the server responds with updated
JSON content:</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <g class="text">
              <text x="36" y="36">HTTP/1.1</text>
              <text x="88" y="36">200</text>
              <text x="116" y="36">OK</text>
              <text x="60" y="52">Cache-Control:</text>
              <text x="152" y="52">private</text>
              <text x="24" y="68">Date:</text>
              <text x="68" y="68">Mon,</text>
              <text x="100" y="68">19</text>
              <text x="128" y="68">Aug</text>
              <text x="164" y="68">2024</text>
              <text x="220" y="68">05:08:13</text>
              <text x="272" y="68">GMT</text>
              <text x="56" y="84">Content-Type:</text>
              <text x="212" y="84">application/captive+json</text>
              <text x="8" y="116">{</text>
              <text x="76" y="132">"captive":</text>
              <text x="148" y="132">false,</text>
              <text x="104" y="148">"venue-info-url":</text>
              <text x="352" y="148">"https://flight.example.com/entertainment",</text>
              <text x="116" y="164">"seconds-remaining":</text>
              <text x="220" y="164">326,</text>
              <text x="120" y="180">"can-extend-session":</text>
              <text x="228" y="180">true</text>
              <text x="8" y="196">}</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
HTTP/1.1 200 OK
Cache-Control: private
Date: Mon, 19 Aug 2024 05:08:13 GMT
Content-Type: application/captive+json

{
    "captive": false,
    "venue-info-url": "https://flight.example.com/entertainment",
    "seconds-remaining": 326,
    "can-extend-session": true
}
]]></artwork>
      </artset>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document recommends security considerations specified in
<xref section="7" sectionFormat="of" target="RFC8908"/>.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>This document recommends privacy consideration specified in
<xref section="7.1" sectionFormat="of" target="RFC8908"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to add the new key specified in <xref target="new-key"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC8908" target="https://www.rfc-editor.org/info/rfc8908" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8908.xml">
        <front>
          <title>Captive Portal API</title>
          <author fullname="T. Pauly" initials="T." role="editor" surname="Pauly"/>
          <author fullname="D. Thakore" initials="D." role="editor" surname="Thakore"/>
          <date month="September" year="2020"/>
          <abstract>
            <t>This document describes an HTTP API that allows clients to interact with a Captive Portal system. With this API, clients can discover how to get out of captivity and fetch state about their Captive Portal sessions.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8908"/>
        <seriesInfo name="DOI" value="10.17487/RFC8908"/>
      </reference>
      <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
        <front>
          <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
          <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
          <date month="December" year="2017"/>
          <abstract>
            <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
            <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="90"/>
        <seriesInfo name="RFC" value="8259"/>
        <seriesInfo name="DOI" value="10.17487/RFC8259"/>
      </reference>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
        <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="RFC8910" target="https://www.rfc-editor.org/info/rfc8910" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8910.xml">
        <front>
          <title>Captive-Portal Identification in DHCP and Router Advertisements (RAs)</title>
          <author fullname="W. Kumari" initials="W." surname="Kumari"/>
          <author fullname="E. Kline" initials="E." surname="Kline"/>
          <date month="September" year="2020"/>
          <abstract>
            <t>In many environments offering short-term or temporary Internet access (such as coffee shops), it is common to start new connections in a captive portal mode. This highly restricts what the user can do until the user has satisfied the captive portal conditions.</t>
            <t>This document describes a DHCPv4 and DHCPv6 option and a Router Advertisement (RA) option to inform clients that they are behind some sort of captive portal enforcement device, and that they will need to satisfy the Captive Portal conditions to get Internet access. It is not a full solution to address all of the issues that clients may have with captive portals; it is designed to be one component of a standardized approach for hosts to interact with such portals. While this document defines how the network operator may convey the captive portal API endpoint to hosts, the specific methods of satisfying and interacting with the captive portal are out of scope of this document.</t>
            <t>This document replaces RFC 7710, which used DHCP code point 160. Due to a conflict, this document specifies 114. Consequently, this document also updates RFC 3679.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8910"/>
        <seriesInfo name="DOI" value="10.17487/RFC8910"/>
      </reference>
      <reference anchor="RFC6750" target="https://www.rfc-editor.org/info/rfc6750" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6750.xml">
        <front>
          <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="D. Hardt" initials="D." surname="Hardt"/>
          <date month="October" year="2012"/>
          <abstract>
            <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6750"/>
        <seriesInfo name="DOI" value="10.17487/RFC6750"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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
NT97y/YFMpCPnhjHMzqn2ozFDvCnx08yNITdPVTFKeZv7fDObq/ztLe9y1+d
jNi+FeePzIH9QQvYrTkIe27QMwd6k/H5H+X03oIdrqlpkoQWeOzOwmMCp5CB
BA1N2ESqSekWC01A0DkusscVLQrNKPsutxvmLmIBsIP/EXXAdT1H6qssYCtM
oKL02ERKaqqm7VeqA5b8RKUJ7KtTQ6OUW+pNMjr0kE2GgTWDqfef2i5xSfH7
zKTvywy8D+gDQMqW4PUmEkrGlJfJ70UG2hBrVhc3SkyNBqrhDXf4c3ow2yl7
L3H0kIX3QKlcxLjrpZ483TUxfnt74dJu98nGDhiO/PCi7rUaB0uSH0dKu2LY
kMGsDNVqzKwrHA72kgA5RymUYUuPnU6XPbpM7Y1R9FmGj03KLJFBsxAOijNg
aWa+e/fO7zehmEkRyqLHV0Yo9uXNbdny8h63UEEvESfPPYejZ505SBf6OspZ
1wI8ZMw4lum0naGrfFddmZm7NHca4V7fKWKQ8moyWhOqHs35bjUT/jI5W6Jr
q5Oj93sbL3cnPpz95uOJs9qdHqpQMxZQJJWoX3MRR+ESi43JTaRYk5/9tGKn
6QuoU6qnRuqPM+uD6ZHS4j/hgkJJ/fxydOQ/W07DaeYrnRWSDQsxTYQZCGhK
lUytfe+NfV7PW4LCc9nVfH5PNzeY41zjPqGbQy+k3kdYvv2k03HDhZyYi8pq
Y/3q83z7zdnVUeenV7s/ftoaxW/fDfp15j0DVwgVUmZSxqta3BbD3Lm9bkhY
oyERUxGZlom6n4k7JUem0U0zTkGESa6IoKK/o0LY2NrxUX2rvnMxQd5lJIwY
u5yFHXNaJGmX2zIPqXtmzU3/zyX2Wa+7/b+V2AmOKFWNncu0lD4VxOXCOomj
6UzXoYZudlNSR6oBDjX3FVmUpM5P+QXdZhNs2GR760lVw0XqE4xp6Luy6Wp8
xZI1nKODskCLSJdvCqf9QtT3bc2LLeQnaqgJalWtCForWofpRsp/SuG5uEI2
F33m9BX8FzJzt6Al8kGJtsIsyRz0T/v3BJpByHQUdb16GLYuhZZuCer7I3ex
PsZJjf0HeaBXlcsZAAA=

-->

</rfc>
