<?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.29 (Ruby 2.6.10) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-moq-privacy-pass-auth-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Privacy Pass MoQ Auth">Privacy Pass Authentication for Media over QUIC (MoQ)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-moq-privacy-pass-auth-00"/>
    <author initials="S." surname="Nandakumar" fullname="Suhas Nandakumar">
      <organization>Cisco</organization>
      <address>
        <email>snandaku@cisco.com</email>
      </address>
    </author>
    <author initials="C." surname="Jennings" fullname="Cullen Jennings">
      <organization>Cisco</organization>
      <address>
        <email>fluffy@iii.ca</email>
      </address>
    </author>
    <date year="2025" month="October" day="15"/>
    <area>Web and Internet Transport</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>media over quic</keyword>
    <keyword>privacy-pass</keyword>
    <abstract>
      <?line 56?>

<t>This document specifies the use of Privacy Pass architecture and issuance
protocols for authorization in Media over QUIC (MoQ) transport protocol. It
defines how Privacy Pass tokens can be integrated with MoQ's authorization
framework to provide privacy-preserving authentication for subscriptions,
fetches, publications, and relay operations while supporting fine-grained
access control through prefix-based track namespace and track name matching
rules.</t>
      <t>Issues and PRs can be made against https://github.com/suhasHere/moq-privacy-pass.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-moq-privacy-pass-auth/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Media Over QUIC Working Group mailing list (<eref target="mailto:moq@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/moq/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/moq/"/>.
        Working Group information can be found at <eref target="https://datatracker.ietf.org/wg/moq/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/moq-wg/moq-transport"/>.</t>
    </note>
  </front>
  <middle>
    <?line 71?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Media over QUIC (MoQ) <xref target="MoQ-TRANSPORT"/> provides a transport protocol for live
and on-demand media delivery, real-time communication, and interactive content
distribution over QUIC connections. The protocol supports a wide range of
applications including video streaming, video conferencing, gaming, interactive
broadcasts, and other latency-sensitive use cases. MoQ includes mechanisms for
authorization through tokens that can be used to control access to media
streams, interactive sessions, and relay operations.</t>
      <t>Traditional authorization mechanisms often lack the privacy protection needed
for modern media distribution scenarios, where users' viewing patterns and
content preferences should remain private while still enabling fine-grained
access control, namespace restrictions, and operational constraints.</t>
      <t>Privacy Pass <xref target="RFC9576"/> provides a privacy-preserving authorization
architecture that enables anonymous authentication through unlinkable tokens.
The Privacy Pass architecture consists of four entities: Client, Origin, Issuer,
and Attester, which work together to provide token-based authorization without
compromising user privacy. The issuance protocols <xref target="RFC9578"/> define how these
tokens are created and verified.</t>
      <t>This document defines how Privacy Pass tokens can be integrated with MoQ's
authorization framework to provide comprehensive access control for media
streaming, real-time communication, and interactive content services while
preserving user privacy through unlinkable authentication tokens.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</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>
    <section anchor="privacy-pass-architecture-for-moq">
      <name>Privacy Pass Architecture for MoQ</name>
      <t>The Privacy Pass MoQ integration involves the following entities and their
interactions:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Client</strong>: The MoQ client requesting access to media content. The client is
responsible for obtaining Privacy Pass tokens through the attestation and
issuance process, and presenting these tokens when requesting MoQ operations.</t>
        </li>
        <li>
          <t><strong>MoQ Relay/Origin</strong>: The MoQ relay server or origin that forwards media
content and requires authorization. The relay validates Privacy Pass tokens,
enforces access policies, and forwards authorized requests to origins or other
relays. Relays maintain configuration for trusted issuers and validate token
signatures and metadata.</t>
        </li>
        <li>
          <t><strong>Privacy Pass Issuer</strong>: The entity that issues Privacy Pass tokens to clients
after successful attestation. The issuer operates the token issuance protocol,
manages cryptographic keys, and may implement rate limiting. The issuer creates
tokens with appropriate MoQ-specific metadata.</t>
        </li>
        <li>
          <t><strong>Privacy Pass Attester</strong>: The entity that attests to properties of clients
for the purposes of token issuance. The attester verifies client credentials,
subscription status, or other eligibility criteria. Common attestation methods
include username/password, OAuth, device certificates, or other authentication
mechanisms.</t>
        </li>
      </ul>
      <t>In the below deployment, the MoQ relay and Privacy Pass issuer are operated
by different entities to enhance privacy through separation of concerns:</t>
      <sourcecode type="ascii"><![CDATA[
                 Separated Issuer and Relay Architecture

┌─────────────┐                               ┌─────────────┐
│   Client    │                               │Privacy Pass │
│             │──────────(1)─────────────────►│  Attester   │
└─────────────┘                               │ (3rd Party) │
   |    │                                     └─────────────┘
   |    │
   |    |──────────(2)──────────────────────────────────
   |                                                    |
   |                                                    ▼
   |                                             ┌─────────────┐
   |                                             │ Privacy Pass│
   |(3)                                          │  Issuer     │
   |                                             │ (Separate)  │
   |                                             └─────────────┘
   │
   ▼
┌─────────────┐
│ MoQ Relay   │
└─────────────┘

(1) Client attestation with separate Attester
(2) Token issuance from separate Issuer to Client
(3) Client requests media access with token from relay

]]></sourcecode>
      <t>However, in certain deployments the MoQ relay and Privacy Pass issuer may be
operated by the same entity to simplify key management and policy coordination.
The details of such an intgrated architecture is TBD.</t>
      <section anchor="trust-model">
        <name>Trust Model</name>
        <t>The architecture assumes the following trust relationships based on
the Privacy Pass architecture <xref target="RFC9576"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Clients trust issuers not to collude with attester
ot break unlinkability guarantees</t>
          </li>
          <li>
            <t>Relays trust issuers to properly validate client eligibility
before issuing tokens</t>
          </li>
          <li>
            <t>Issuers trust attesters to accurately verify client eligibility</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="privacy-pass-token-integration">
      <name>Privacy Pass Token Integration</name>
      <t>This section describes how Privacy Pass tokens are integrated into the MoQ
transport protocol to provide privacy-preserving authorization for various
media operations.</t>
      <section anchor="token-types-for-moq-authorization">
        <name>Token Types for MoQ Authorization</name>
        <t>This specification uses the existing Privacy Pass token types defined in
<xref target="RFC9578"/>:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Token Type 0x0001 (VOPRF(P-384, SHA-384))</strong>: Privately verifiable tokens
using Verifiable Oblivious Pseudorandom Function for deployments requiring
issuer-only validation capability.</t>
          </li>
          <li>
            <t><strong>Token Type 0x0002 (Blind RSA (2048-bit))</strong>: Publicly verifiable tokens
using blind RSA signatures for deployments requiring distributed validation
across multiple relays.</t>
          </li>
        </ul>
      </section>
      <section anchor="token-structure">
        <name>Token Structure</name>
        <t>Privacy Pass tokens used in MoQ <bcp14>MUST</bcp14> follow the structure defined in
<xref target="RFC9577"/> for the PrivateToken HTTP authentication scheme. The token
structure includes:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Token Type</strong>: 2-byte identifier specifying the issuance protocol used</t>
          </li>
          <li>
            <t><strong>Nonce</strong>: 32-byte client-generated random value for uniqueness</t>
          </li>
          <li>
            <t><strong>Challenge Digest</strong>: 32-byte SHA-256 hash of the TokenChallenge</t>
          </li>
          <li>
            <t><strong>Token Key ID</strong>: Variable-length identifier for the issuer's public key</t>
          </li>
          <li>
            <t><strong>Authenticator</strong>: Variable-length cryptographic proof bound to the token</t>
          </li>
        </ul>
        <section anchor="token-challenge-structure-for-moq">
          <name>Token Challenge Structure for MoQ</name>
          <t>MoQ-specific TokenChallenge structures use the default format defined in
<xref target="RFC9577"/> with MoQ-specific parameters in the origin_info field:</t>
          <artwork><![CDATA[
struct {
    uint16_t token_type;
    opaque issuer_name<1..2^16-1>;
    opaque redemption_context<0..32>;
    opaque origin_info<0..2^16-1>;
} TokenChallenge;
]]></artwork>
          <t>For MoQ usage, the origin_info field contains MoQ-specific authorization scope
information encoded as a UTF-8 string with the following format:</t>
          <t>TODO: Degfine origin_info to be binary format</t>
          <artwork><![CDATA[
moq-scope = operation ":" namespace-pattern [":" track-pattern]
operation = "subscribe" / "fetch" / "publish" / "announce"
namespace-pattern = exact-match / prefix-match
track-pattern = exact-match / prefix-match
exact-match = namespace/name-string
prefix-match = namespace/name-string"*"
]]></artwork>
          <t>Examples:</t>
          <ul spacing="normal">
            <li>
              <t><tt>subscribe:sports.example.com/live/*</tt> - Subscribe to any track under live
sports</t>
            </li>
            <li>
              <t><tt>fetch:vod.example.com/movies/action*</tt> - Fetch video-on-demand action content</t>
            </li>
            <li>
              <t><tt>publish:meetings.example.com/meeting/m123/audio/opus48000</tt> - Publish content
for meeting m123</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="track-namespace-and-track-name-matching-rules">
        <name>Track Namespace and Track Name Matching Rules</name>
        <t>This specification defines prefix-based matching rules for track namespaces
and track names to enable fine-grained access control while maintaining
privacy.</t>
        <section anchor="namespace-matching">
          <name>Namespace Matching</name>
          <t>Track namespace matching supports three modes:</t>
          <t><strong>Exact Match</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>Pattern: <tt>"example.com/live/sports/soccer"</tt></t>
            </li>
            <li>
              <t>Matches: Only the exact namespace <tt>example.com/live/sports/soccer</tt></t>
            </li>
          </ul>
          <t><strong>Prefix Match</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>Pattern: <tt>"example.com/live/sports/*"</tt></t>
            </li>
            <li>
              <t>Matches: Any namespace starting with <tt>example.com/live/sports/</tt></t>
            </li>
            <li>
              <t>Examples: <tt>example.com/live/sports/soccer</tt>,
<tt>example.com/live/sports/tennis</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="track-name-matching">
          <name>Track Name Matching</name>
          <t>Track name matching within authorized namespaces follows the same pattern:</t>
          <t><strong>Exact Match</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>Pattern: <tt>"video"</tt></t>
            </li>
            <li>
              <t>Matches: Only tracks named exactly <tt>video</tt></t>
            </li>
          </ul>
          <t><strong>Prefix Match</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>Pattern: <tt>"video*"</tt></t>
            </li>
            <li>
              <t>Matches: Any track name starting with <tt>video</tt></t>
            </li>
            <li>
              <t>Examples: <tt>video-med</tt>, <tt>video-high</tt>, <tt>video-low</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="matching-algorithm">
          <name>Matching Algorithm</name>
          <t>When a MoQ relay receives a request with a Privacy Pass token, it performs the
following validation steps to determine whether to authorize the requested
operation:</t>
          <ol spacing="normal" type="1"><li>
              <t>Extract the Privacy Pass token from the MoQ control
message (SETUP, SUBSCRIBE, FETCH, PUBLISH, or ANNOUNCE)</t>
            </li>
            <li>
              <t>Verify the token signature using the appropriate
issuer public key based on the token type:  </t>
              <ul spacing="normal">
                <li>
                  <t>For Token Type 0x0001 (VOPRF): Use the issuer's private validation key</t>
                </li>
                <li>
                  <t>For Token Type 0x0002 (Blind RSA): Use the issuer's public verification key</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Validate that the token has not been replayed by checking:  </t>
              <ul spacing="normal">
                <li>
                  <t>Token nonce uniqueness within the issuer's replay window</t>
                </li>
                <li>
                  <t>Token expiration timestamp (if present in token metadata)</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Extract the MoQ-specific authorization scope from the token's origin_info
field:  </t>
              <ul spacing="normal">
                <li>
                  <t>Authorized operation type (subscribe, fetch, publish, announce)</t>
                </li>
                <li>
                  <t>Namespace pattern (exact match or prefix match)</t>
                </li>
                <li>
                  <t>Track name pattern (exact match or prefix match, optional)</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Verify that the requested MoQ operation matches the operation specified
in the token scope:  </t>
              <ul spacing="normal">
                <li>
                  <t>SUBSCRIBE operations require "subscribe" scope</t>
                </li>
                <li>
                  <t>FETCH operations require "fetch" scope</t>
                </li>
                <li>
                  <t>PUBLISH operations require "publish" scope</t>
                </li>
                <li>
                  <t>ANNOUNCE operations require "announce" scope</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Apply namespace/name matching rules based on the pattern type:  </t>
              <ul spacing="normal">
                <li>
                  <t>If Exact Match, the requested namespace/name <bcp14>MUST</bcp14> exactly equal the pattern</t>
                </li>
                <li>
                  <t>If Prefix Match, the requested namespace/name <bcp14>MUST</bcp14> start with the pattern prefix</t>
                </li>
              </ul>
            </li>
          </ol>
          <t>Access is granded to the requested resource if and only if ALL of the following
conditions are met:</t>
          <ul spacing="normal">
            <li>
              <t>Token signature verification succeeds</t>
            </li>
            <li>
              <t>Token nonce has not been previously used (replay protection)</t>
            </li>
            <li>
              <t>Token has not expired (if applicable)</t>
            </li>
            <li>
              <t>Requested operation matches token operation scope</t>
            </li>
            <li>
              <t>Requested namespace matches token namespace pattern</t>
            </li>
            <li>
              <t>Requested track name matches token track name pattern (if specified)
specified)</t>
            </li>
          </ul>
          <t>else, authorzation error is returned to the requesting client.</t>
        </section>
      </section>
      <section anchor="token-in-moq-messages">
        <name>Token in MOQ Messages</name>
        <t>Privacy Pass tokens are provided to MoQ relays using the existing MoQ
authorization framework with the following adaptations:</t>
        <section anchor="setup-message-authorization">
          <name>SETUP Message Authorization</name>
          <t>For connection-level authorization, Privacy Pass tokens are included in the
SETUP message's authorization parameter:</t>
          <artwork><![CDATA[
SETUP {
    Version = 1,
    Parameters = [
        {
            Type = AUTHORIZATION,
            Value = base64url(PrivateTokenAuth)
        }
    ]
}

struct {
    uint8_t auth_scheme = 0x01; // Privacy Pass
    opaque token_data<1..2^16-1>;
} PrivateTokenAuth;
]]></artwork>
        </section>
        <section anchor="moq-operation-level-authorization">
          <name>MoQ Operation-Level Authorization</name>
          <t>For individual MoQ operation authorization, tokens are included in
operation-specific control messages:</t>
          <artwork><![CDATA[
SUBSCRIBE {
    Track_Namespace = "sports.example.com/live/soccer",
    Track_Name = "video",
    Parameters = [
        {
            Type = AUTHORIZATION,
            Value = base64url(PrivateTokenAuth)
        }
    ]
}
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="example-authorization-flow">
      <name>Example Authorization Flow</name>
      <t>Below shows an example deployment scenarios where the relay has been
configured with the necessary validation keys and content policies, the
relay can verify Privacy Pass tokens locally and deliver media directly
without contacting the Origin.</t>
      <sourcecode type="ascii"><![CDATA[
                    Direct Relay Authorization Flow

   Client      MoQ Relay             Issuer          Attester
     |            |                    |                |
     |            |                    |                |
     | (1) Request Service Access      |                |
     |----------->|                    |                |
     |            |                    |                |
     |  (2) Challenge (TokenChallenge) |                |
     |<-----------|                    |                |
     |            |                    |                |
     |  (3) Attestation Request        |                |
     |---------------------------------|--------------->|
     |  (4) Attestation                |                |
     |<-------------------------------------------------|
     |  (5) Token Request              |                |
     |-------------------------------->|                |
     |  (6) Token                      |                |
     |<--------------------------------|                |
     |            |                    |                |
     |  (7) SUBSCRIBE with Token       |                |
     |----------->|                    |                |
     |            |                    |                |
     |            |  (8) Local Token Validation         |
     |            |     (No external call)              |
     |            |                    |                |
     |            |                    |                |
     |  (9) SUBSCRIBE_OK + Media       |                |
     |<-----------|                    |                |
     |            |                    |                |
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO: Add considerations for the security and privacy of the Privacy Pass
tokens.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9576" target="https://www.rfc-editor.org/rfc/rfc9576.txt">
          <front>
            <title>The Privacy Pass Architecture</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC9577" target="https://www.rfc-editor.org/rfc/rfc9577.txt">
          <front>
            <title>The Privacy Pass HTTP Authentication Scheme</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC9578" target="https://www.rfc-editor.org/rfc/rfc9578.txt">
          <front>
            <title>Privacy Pass Issuance Protocols</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MoQ-TRANSPORT" target="https://www.ietf.org/archive/id/draft-ietf-moq-transport-12.txt">
          <front>
            <title>Media over QUIC Transport</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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"/>
            <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"/>
            <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9458" target="https://www.rfc-editor.org/rfc/rfc9458.txt">
          <front>
            <title>Oblivious HTTP</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
urKP8sa2et4imq65aKQtRJeQZnllunMp5xcm93Jyx29D5Gbvm/rcZCyou8sQ
2TlSNgJss+Au3CbNStvk3CVKXvYjhgp5l8kEmVxOARnsvoPEcB1ODBk6REm2
ItiUhM2WQV4o+owG77f1nO27aNsMdJX45Y0XSnW8rgu+5k4ZxZIm8/Wtf69R
g1TtnLqMtRZ2HuwXVqQ9jP7prFDalaw8i2ubdJYcmykbuLW2KqU+JKZoWySM
p8fatp2ILOG1s2z12p4uNz5sbGxsypXXh0fHz1aOgjvbd/vy5PkufVldpdz7
yLQ4nXgSr/knam6qvW7ftxOmI63qOAcfYziEZ3UWNZzxrd8UgzSEMLoWcCPE
6hhtiMLCaupgOe5bcuUx9BlJ48muXNnauLsdDJPKos5TliswHzY7vcLtUhzb
TrKKPRxFGJU52D+t0ypBgSRtRekJ+gR6b/PYZarIbXUacEELuH1jXIZxcW7r
MpE++PRJulLHyskcyMPdue6b5uGuqXtstdrAdpOBBQUhNm4FwxkMPuGCCEVS
adVyZnsKi+UkU8SQDqgIICB3LBRj3MFYZdaVWxUBP2vTAKmzBEEmQ2AxrZZJ
SPP4sZJPEhSolQ+MFHXr3n05CfWESzwgw7g3mzxyaCa7/4S2v4ZtkjIEtAQ+
0qPMcdOo49faTuooojAob2Cel8tgdetnMARoDfM647lJU4GTbjjlaAls1KRt
Y3XK5S5prWqwBjFw6EgINZRmFnyZyrgOcwuZQj/KU3LJiakgTZ/kjMbKEpxJ
Y1PGWZ2RH7mUg5uvNu+fVYaoM3I935rrEkUIGVounlGR+3BzMNj65837weZ3
nSVUZ0+5sj7jLtGH6uHGYHBnq7vKw4Z+bgB9muPJtybpeGZdaq2RAvSX08P9
OJppdjnR9eQ6guduZ+t4o7IIMZ+6vTKUr06fBdskB7IEkwV1Ar7ZBs6dHj45
3JFP1JinCT4upo88REpSzux6ZvRnQcNUPl8+auOH7O302tlRYMdV8g295tmu
e/VWtHseyZ5tYQxVT67LHs+h+RurtzbfwyyDokaqJxYPeISYE0ZVwENjLLaD
Zn4UnYOvXur/9KglZJ2+BYaRwt9w2aLeWs9wSTz9EFJbyriudw2dOxy/9UCZ
n3lQTZPg9bV3MpAnbhlnINnMzsVhpsrOkqU0AAgos2vnPI870KbIBpReN41h
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

-->

</rfc>
