<?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.11 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-privacypass-architecture-05" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.10 -->
  <front>
    <title abbrev="Privacy Pass Architecture">Privacy Pass Architectural Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-architecture-05"/>
    <author initials="A." surname="Davidson" fullname="Alex Davidson">
      <organization>LIP</organization>
      <address>
        <postal>
          <city>Lisbon</city>
          <country>Portugal</country>
        </postal>
        <email>alex.davidson92@gmail.com</email>
      </address>
    </author>
    <author initials="J." surname="Iyengar" fullname="Jana Iyengar">
      <organization>Fastly</organization>
      <address>
        <email>jri@fastly.com</email>
      </address>
    </author>
    <author initials="C. A." surname="Wood" fullname="Christopher A. Wood">
      <organization>Cloudflare</organization>
      <address>
        <postal>
          <street>101 Townsend St</street>
          <city>San Francisco</city>
          <country>United States of America</country>
        </postal>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2022" month="July" day="06"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies the architectural framework for constructing
secure and anonymity-preserving instantiations of the Privacy Pass
protocol. It provides recommendations on how the protocol ecosystem
should be constructed to ensure the privacy of clients, and the security
of all participating entities.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Privacy Pass is a protocol for authorization based on anonymous-credential
authentication mechanisms. Typical approaches for authorizing clients,
such as through the use of long-term cookies, are not privacy-friendly
since they allow servers to track clients across sessions and interactions.
Privacy Pass takes a different approach: instead of presenting linkable
state carrying information to servers, e.g., whether or not the client
is an authorized user or has completed some prior challenge, clients
present unlinkable proofs that attest to this information.</t>
      <t>The most basic Privacy Pass protocol provides a set of cross-origin
authorization tokens that protect the client's anonymity during interactions
with a server. This allows clients to communicate an attestation of a
previously authenticated server action, without having to reauthenticate
manually. The tokens retain anonymity in the sense that the act of
revealing them cannot be linked back to the session where they were
initially issued.</t>
      <t>At a high level, Privacy Pass is composed of two protocols: issuance
and redemption.</t>
      <t>The issuance protocol runs between a Client and two network functions in the
Privacy Pass architecture: Attestation and Issuance. These two network
functions can be implemented by the same protocol participant, but can also be
implemented separately. The Issuer is responsible for issuing tokens in
response to requests from Clients. The Attester is responsible for attesting
properties about the Client for which tokens are issued. The Issuer needs to be
trusted by the server that later redeems the token. Attestation can be
performed by the Issuer or by an Attester that is trusted by the Issuer.
Clients might prefer to select different Attesters, separate from the Issuer,
to be able to use preferred authentication methods or improve privacy by not
directly communicating with an Issuer. Depending on the attestation,
Attesters can store state about a Client, such as the number of overall tokens
issued thus far. As an example of an Issuance protocol, in the original Privacy
Pass protocol <xref target="PPSRV"/>, tokens were only issued to Clients that solved
CAPTCHAs. In this context, the Attester attested that some client solved a
CAPTCHA and the resulting token produced by the Issuer was proof of this fact.</t>
      <t>The redemption protocol runs between Client and Origin (server). It allows
Origins to challenge Clients to present one or more tokens for authorization.
Depending on the type of token, e.g., whether or not it is cross-origin
or per-origin, and whether or not it can be cached, the Client either presents
a previously obtained token or invokes the issuance protocol to acquire one
for authorization.</t>
      <t>The issuance and redemption protocols operate in concert as shown in
the figure below.</t>
      <figure anchor="fig-overview">
        <name>Privacy Pass Architectural Components</name>
        <artwork><![CDATA[
      Origin          Client        Attester          Issuer
  /--------------------------------------------------------------------
  |                 /-----------------------------------------\
  |   Challenge ----> Attest --->                             |
  |                 | TokenRequest --------------->           |
  |   Redemption    |                              (validate) | Issuance
  |      Flow       |                              (evaluate) |   Flow
  |                 |     <-------------------  TokenResponse |
  |   <--- Response |                                         |
  |                 \-----------------------------------------/
  \--------------------------------------------------------------------
]]></artwork>
      </figure>
      <t>This document describes requirements for both issuance and redemption
protocols. This document also describes ecosystem considerations that
impact the stated privacy and security guarantees of the protocol.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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>The following terms are used throughout this document.</t>
      <ul spacing="normal">
        <li>Client: An entity that seeks authorization to an Origin.</li>
        <li>Origin: An entity that challenges Clients for tokens.</li>
        <li>Issuer: An entity that issues tokens to Clients for properties
attested to by the Attester.</li>
        <li>Attester: An entity that attests to properties of Client for the
purposes of token issuance.</li>
      </ul>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>The Privacy Pass architecture consists of four logical entities --
Client, Origin, Issuer, and Attester -- that work in concert as
shown in <xref target="introduction"/> for token issuance and redemption. This
section describes the purpose of token issuance and redemption
and the requirements therein on the relevant participants.</t>
      <section anchor="redemption-protocol">
        <name>Redemption Protocol</name>
        <t>The redemption protocol is a simple challenge-response based authorization
protocol between Client and Origin. Origins prompt Clients with a token
challenge and, if possible, Clients present a valid token for the challenge
in response. The context in which an Origin challenges a Client for a token
is referred to as the redemption context. This context includes all information
associated with the redemption event, such as the timestamp of the event,
Client visible information (including the IP address), and the Origin name.</t>
        <t>The challenge controls the type of token that the Origin will accept for the
given resource. As described in <xref target="HTTP-Authentication"/>,
there are a number of ways in which the token may vary, including:</t>
        <ul spacing="normal">
          <li>Issuance protocol. The token identifies the type of issuance protocol
required for producing the token. Different issuance protocols have different
security properties, e.g., some issuance protocols may produce tokens that
are publicly verifiable, whereas others may not have this property.</li>
          <li>Issuer identity. Tokens identify which Issuers are trusted for a given
issuance protocol. The selected Issuer transitively determines what types
of attestation the Origin is willing to accept. For example, if a given Issuer
<tt>issuer.example</tt> has two trusted Attesters, then any Origin choosing <tt>issuer.example</tt>
as its Issuer is willing to accept attestation checks done by either of these
two Attesters.</li>
          <li>Redemption context. Tokens can be bound to a given redemption context, which
influences a client's ability to pre-fetch and cache tokens. For example,
an empty redemption context always allows tokens to be issued and redeemed
non-interactively, whereas a fresh and random redemption context means
that the redeemed token must be issued only after the client receives the challenge.
See Section 2.1.1 of <xref target="HTTP-Authentication"/> for more details.</li>
          <li>Per-origin or cross-origin. Tokens can be constrained to the Origin for
which the challenge originated, or can be used across Origins.</li>
        </ul>
        <t>Depending on the use case, Origins may need to maintain state to track
redeemed tokens. For example, Origins that accept cross-origin
across shared redemption contexts tokens SHOULD track which tokens
have been redeemed already in those redemption contexts, since these
tokens can be issued and then spent multiple times in response to any
such challenge. See Section 2.1.1 of <xref target="HTTP-Authentication"/> for discussion.</t>
        <t>Origins that admit cross-origin tokens bear some risk of allowing tokens
issued for one Origin to be spent in an interaction with another Origin.
If tokens protected with resources are unique to a single Origin, then
said Origin MUST NOT admit cross-origin tokens for authorization.</t>
      </section>
      <section anchor="issuance-protocol">
        <name>Issuance Protocol</name>
        <t>The issuance protocol embodies the core of Privacy Pass. It takes as input
a challenge from the redemption protocol and produces a token, as shown
in the figure below.</t>
        <figure anchor="fig-issuance">
          <name>Issuance Overview</name>
          <artwork><![CDATA[
  Origin          Client        Attester          Issuer

                  +--------------------------------------\
    Challenge ----> TokenRequest --->                    |
                  |             (attest)                 |
                  |                TokenRequest --->     |
                  |                            (evaluate)|
                  |                   <--- TokenResponse |
      Token  <----+ TokenResponse <---                   |
                  |--------------------------------------/
]]></artwork>
        </figure>
        <t>Clients interact with the Attester and Issuer to produce a token in response to
a challenge. The context in which an Attester vouches for a Client during issuance
is referred to as the attestation context. This context includes all information
associated with the issuance event, such as the timestamp of the event and
Client visible information, including the IP address or other information specific
to the type of attestation done.</t>
        <t>Each issuance protocol may be different, e.g., in the number and types of
participants, underlying cryptographic constructions used when issuing tokens,
and even privacy properties.</t>
        <t>Clients initiate the Token issuance protocol using the challenge, a randomly
generated nonce, and public key for the Issuer. The Token issuance protocol
itself can be any interactive protocol between Client, Issuer, or other
parties that produces a valid authenticator over the Client's input, subject
to the following security requirements.</t>
        <ol spacing="normal" type="1"><li>Unconditional input secrecy. The issuance protocol MUST NOT reveal anything
about the Client's private input, including the challenge and nonce, to the
Attester or Issuer. The issuance protocol can reveal the Issuer public key for
the purposes of determining which private key to use in producing the token.
A result of this property is that the redemption flow is unlinkable
from the issuance flow.</li>
          <li>One-more forgery security. The issuance protocol MUST NOT allow malicious
Clients or Attesters (acting as Clients) to forge tokens offline or otherwise
without interacting with the Issuer directly.</li>
          <li>Concurrent security. The issuance protocol MUST be safe to run concurrently
with arbitrarily many Clients.</li>
        </ol>
        <t>Each Issuance protocol MUST come with a detailed analysis of the privacy impacts
of the protocol, why these impacts are justified, and guidelines on how to deploy
the protocol to minimize any privacy impacts.</t>
        <t>Clients obtain the Issuer public key directly from the Origin using the process
described in <xref target="HTTP-Authentication"/>. Clients MAY apply some form of key consistency
check to determine if this public key is consistency and correct for the specified
Issuer. See <xref target="CONSISTENCY"/> for example mechanisms.
Depending on the deployment, the Attester may be able to assist the Client in applying
these consistency checks across clients.</t>
        <t>Depending on the use case, issuance may require some form of Client
anonymization service similar to an IP-hiding proxy so that Issuers cannot
learn information about Clients. This can be provided by an explicit
participant in the issuance protocol, or it can be provided via external means,
e.g., through the use of an IP-hiding proxy service like Tor. In general,
Clients SHOULD minimize or remove identifying information where possible when
invoking the issuance protocol.</t>
        <t>Issuers MUST NOT issue tokens for Clients through untrusted Attesters. This is
important because the Attester's role is to vouch for trust in
privacy-sensitive Client information, such as account identifiers or IP address
information, to the Issuer. Tokens produced by an Issuer that admits issuance
for any type of attestation cannot be relied on for any specific property.
See <xref target="attester-role"/> for more details.</t>
        <section anchor="attester-role">
          <name>Attester Role</name>
          <t>Attestation is an important part of the issuance protocol. Attestation is the
process by which an Attester bears witness to, confirms, or authenticates a
Client so as to verify a property about the Client that is required for
Issuance. Examples of attestation properties include, though are not limited
to:</t>
          <ul spacing="normal">
            <li>Capable of solving a CAPTCHA. Clients that solve CAPTCHA challenges can attest
to this capability for the purposes of being ruled out as a bot or otherwise
automated Client.</li>
            <li>Client state. Clients can be associated with state and the attester can
attest to this state. Examples of state include the number of issuance
protocol invocations, the client's geographic region, and whether the
client has a valid application-layer account.</li>
            <li>Trusted device. Some Clients run on trusted hardware that are capable of
producing device-level attestation statements.</li>
          </ul>
          <t>Each of these attestation types have different security properties. For
example, attesting to having a valid account is different from attesting to be
running on trusted hardware. In general, Attesters should accept a limited form
of attestation formats.</t>
          <t>Each attestation format also has an impact on the overall system privacy. For
example, the number of users in possession of a single class of trusted device
might be lesser than the number of users that can solve CAPTCHAs. Similarly,
requiring a conjunction of attestation types could decrease the overall
anonymity set size. For example, the number of Clients that have solved a
CAPTCHA in the past day, have a valid account, and are running on a trusted
device is lesser than the number of Clients that have solved a CAPTCHA in the
past day. Attesters should not admit attestation types that result in small
anonymity sets.</t>
        </section>
        <section anchor="issuer-role">
          <name>Issuer Role</name>
          <t>Issuers MUST be uniquely identifiable by all Clients with a consistent
identifier. In a web context, this identifier might be the Issuer host name.
As discussed later in <xref target="privacy"/>, ecosystems that admit a large number of
Issuers can lead to privacy concerns for the Clients in the ecosystem.
Therefore, in practice, the number of Issuers should be bounded. The actual
Issuers can be replaced with different Issuers as long as the total never
exceeds these bounds. Moreover, Issuer replacements also have an effect on
client anonymity that is similar to when a key rotation occurs. See <xref target="privacy"/>
for more details about maintaining privacy with multiple Issuers.</t>
          <section anchor="key-management">
            <name>Key Management</name>
            <t>To facilitate issuance, the Issuer MUST hold an Issuance key pair at any
given time. The Issuer public key MUST be made available to all Clients in
such a way that key rotations and other updates are publicly visible.
The key material and protocol configuration that an Issuer uses to produce
tokens corresponds to a number of different pieces of information.</t>
            <ul spacing="normal">
              <li>The issuance protocol in use; and</li>
              <li>The public keys that are active for the Issuer.</li>
            </ul>
            <t>The way that the Issuer publishes and maintains this information impacts
the effective privacy of the clients; see <xref target="privacy"/> for more details.
The fundamental requirement for key management and discovery is that Issuers
must be unable to target specific clients with unique keys without detection.
There are a number of ways in which this might be implemented:</t>
            <ul spacing="normal">
              <li>Servers use a verifiable, tamper-free registry from which clients discover
keys. Similar to related mechanisms and protocols such as Certificate
Transparency <xref target="RFC6962"/>, this may require external auditors or additional
client behavior to ensure the registry state is consistent for all clients.</li>
              <li>Clients use an anonymity-preserving tool such as Tor to discover keys
from multiple network vantage points. This is done to ensure consistent
keys to seemingly different clients.</li>
              <li>Clients embed Issuer keys into software.</li>
            </ul>
            <t>As above, specific mechanisms for key management and discovery are out of scope
for this document.</t>
          </section>
          <section anchor="key-rotation">
            <name>Key Rotation</name>
            <t>Token issuance associates all issued tokens with a particular choice of
key. If an Issuer issues tokens with many keys, then this may harm the
anonymity of the Client. For example, they would be able to map the
Client's access patterns by inspecting which key each token they possess
has been issued under.</t>
            <t>To prevent against this, Issuers MUST only use one private key for
issuing tokens at any given time. Servers MAY use one or more keys for
redemption to allow Issuers for seamless key rotation.</t>
            <t>Servers may rotate keys as a means of revoking tokens issued under old
or otherwise expired keys. Alternatively, Issuers may include expiration
information as metadata alongside the token; See <xref target="metadata"/> for more
discussion about metadata constraints. Both techniques are equivalent
since they cryptographically bind expiration to individual tokens.
Key rotations should be limited in frequency for similar reasons.</t>
          </section>
        </section>
        <section anchor="metadata">
          <name>Metadata</name>
          <t>Certain instantiations of the issuance protocol may permit public or private
metadata to be cryptographically bound to a token. As an example, one
trivial way to include public metadata is to assign a unique issuer
public key for each value of metadata, such that N keys yields log2(N)
bits of metadata. The total amount of metadata bits included in a token
is the sum of public and private metadata bits.</t>
          <t>Public metadata is that which clients can observe as part of the token
issuance flow. Public metadata can either be transparent or opaque. For
example, transparent public metadata is a value that the client either
generates itself, or the Issuer provides during the issuance flow and
the client can check for correctness. Opaque public metadata is metadata
the client can see but cannot check for correctness. As an example, the
opaque public metadata might be a "fraud detection signal", computed on
behalf of the Issuer, during token issuance. In normal circumstances,
clients cannot determine if this value is correct or otherwise a tracking
vector.</t>
          <t>Private metadata is that which clients cannot observe as part of the token
issuance flow. Such instantiations may be built on the Private Metadata Bit
construction from Kreuter et al. <xref target="KLOR20"/>
or the attribute-based VOPRF from Huang et al. <xref target="HIJK21"/>.</t>
          <t>Metadata may also be arbitrarily long or bounded in length. The amount of
permitted metadata may be determined by application or by the underlying
cryptographic protocol.</t>
        </section>
        <section anchor="extensions">
          <name>Issuance Protocol Extensibility</name>
          <t>The Privacy Pass protocol and ecosystem are both intended to be receptive to
extensions that expand the current set of functionalities through new issuance
protocols. Each issuance protocol SHOULD come with a detailed analysis of the
privacy impacts of the extension, why these impacts are justified, and
guidelines on how to deploy the protocol to minimize any privacy impacts.
Any extension to the Privacy Pass protocol MUST adhere to the guidelines
specified in <xref target="issuer-role"/> for managing Issuer public key data.</t>
        </section>
      </section>
    </section>
    <section anchor="deployment">
      <name>Deployment Considerations</name>
      <t>Client uses Privacy Pass to separate attestation context and redemption
context. Linking or combining these contexts can reveal sensitive information
about the Client, including their identity or browsing history. Depending on the
deployment model, separating these contexts can take different forms.
The Origin, Attester, and Issuer portrayed in <xref target="fig-overview"/> can be instantiated
and deployed in a number of different ways. This section covers some expected
deployment models and their corresponding security and privacy considerations.
The discussion below assumes non-collusion between entities when operated by
separate parties. Mechanisms for enforcing non-collusion are out of scope
for this architecture.</t>
      <section anchor="deploy-shared">
        <name>Shared Origin, Attester, Issuer</name>
        <t>In this model, the Origin, Attester, and Issuer are all operated by the same entity,
as shown in the figure below.</t>
        <figure anchor="fig-deploy-shared">
          <name>Shared Deployment Model</name>
          <artwork><![CDATA[
                   +------------------------------------------+
      Client       |  Attester         Issuer         Origin  |
        |          |                                          |
        |          |          Challenge                       |
        <----------------------------------------------+      |
        |          | Attest                                   |
        +----------------->                                   |
        |          |     TokenRequest                         |
        +-------------------------------->                    |
        |          |     TokenResponse                        |
        <--------------------------------+                    |
        |          |          Redeem                          |
        +---------------------------------------------->      |
                   +------------------------------------------+
]]></artwork>
        </figure>
        <t>This model represents the initial deployment of Privacy Pass, as described in <xref target="PPSRV"/>.
In this model, the Attester, Issuer, and Origin share the attestation and redemption contexts.
As a result, attestation mechanisms that can uniquely identify a Client, e.g., requiring
that Clients authenticate with some type of application-layer account, are not appropriate,
as they could be used to learn or reconstruct a Client's browsing history.</t>
        <t>Attestation and redemption context unlinkability requires that these events be separated
over time, e.g., through the use of tokens with an empty redemption context,
or over space, e.g., through the use of an anonymizing proxy when connecting to the Origin.</t>
      </section>
      <section anchor="deploy-joint-issuer">
        <name>Joint Attester and Issuer</name>
        <t>In this model, the Attester and Issuer are operated by the same entity
that is separate from the Origin, as shown in the figure below.</t>
        <figure anchor="fig-deploy-joint-issuer">
          <name>Joint Attester and Issuer Deployment Model</name>
          <artwork><![CDATA[
                                                   +-----------+
      Client                                       |   Origin  |
        |                    Challenge             |           |
        <-----------------------------------------------+      |
        |                                          |           |
        |          +---------------------------+   |           |
        |          |  Attester         Issuer  |   |           |
        |          |                           |   |           |
        |          | Attest                    |   |           |
        +----------------->                    |   |           |
        |          |     TokenRequest          |   |           |
        +-------------------------------->     |   |           |
        |          |     TokenResponse         |   |           |
        <--------------------------------+     |   |           |
        |          +---------------------------+   |           |
        |                                          |           |
        |                    Redeem                |           |
        +----------------------------------------------->      |
                                                   |           |
                                                   +-----------+
]]></artwork>
        </figure>
        <t>This model is useful if an Origin wants to offload attestation and issuance
to a trusted entity. In this model, the Attester and Issuer share attestation
context for the Client, which can be separate from the Origin's redemption context.</t>
        <t>For certain types of issuance protocols, this model separates attestation and redemption
contexts. However, Issuance protocols that require the Issuer to learn information about
the Origin, such as that which is described in <xref target="RATE-LIMITED"/>,
are not appropriate since they could link attestation and redemption contexts through the Origin name.</t>
      </section>
      <section anchor="deploy-joint-origin">
        <name>Joint Origin and Issuer</name>
        <t>In this model, the Origin and Issuer are operated by the same entity, separate from
the Attester, as shown in the figure below.</t>
        <figure anchor="fig-deploy-joint-origin">
          <name>Joint Origin and Issuer Deployment Model</name>
          <artwork><![CDATA[
                                    +--------------------------+
      Client                        |   Issuer         Origin  |
        |                Challenge  |                          |
        <-----------------------------------------------+      |
        |                           |                          |
        |          +-----------+    |                          |
        |          |  Attester |    |                          |
        |          |           |    |                          |
        |          | Attest    |    |                          |
        +----------------->    |    |                          |
        |          |           |    |                          |
        |          |     TokenRequest                          |
        +-------------------------------->                     |
        |          |           |    |                          |
        |          |     TokenResponse                         |
        <--------------------------------+                     |
        |          |           |    |                          |
        |          +-----------+    |                          |
        |                           |                          |
        |                 Redeem    |                          |
        +----------------------------------------------->      |
                                    +--------------------------+
]]></artwork>
        </figure>
        <t>This model is useful for Origins that require Client-identifying attestation,
e.g., through the use of application-layer account information, but do not
otherwise want to learn information about individual Clients beyond what is
observed during the token redemption, such as Client IP addresses.</t>
        <t>In this model, attestation and redemption contexts are separate. As a result,
any type of attestation is suitable in this model. Moreover, any type of token
challenge is suitable assuming there is more than one Origin involved, since no
single party will have access to the identifying Client information and unique
Origin information. If there is only a single Origin, then per-Origin tokens
are not appropriate in this model, since the Attester can learn the redemption
context. (Note, however, that the Attester does not learn whether a token is
per-Origin or cross-Origin.)</t>
      </section>
      <section anchor="deploy-split">
        <name>Split Origin, Attester, Issuer</name>
        <t>In this model, the Origin, Attester, and Issuer are all operated by different entities,
as shown in the figure below.</t>
        <figure anchor="fig-deploy-split">
          <name>Split Deployment Model</name>
          <artwork><![CDATA[
                                                   +-----------+
      Client                                       |   Origin  |
        |                    Challenge             |           |
        <-----------------------------------------------+      |
        |                                          |           |
        |          +-----------+                   |           |
        |          |  Attester |                   |           |
        |          |           |                   |           |
        |          | Attest    |    +----------+   |           |
        +----------------->    |    |  Issuer  |   |           |
        |          |           |    |          |   |           |
        |          |     TokenRequest          |   |           |
        +-------------------------------->     |   |           |
        |          |           |    |          |   |           |
        |          |     TokenResponse         |   |           |
        <--------------------------------+     |   |           |
        |          |           |    |          |   |           |
        |          +-----------+    +----------+   |           |
        |                                          |           |
        |                    Redeem                |           |
        +----------------------------------------------->      |
                                                   |           |
                                                   +-----------+
]]></artwork>
        </figure>
        <t>This is the most general deployment model, and is necessary for some
types of issuance protocols where the Attester plays a role in token
issuance; see <xref target="RATE-LIMITED"/> for one such type of issuance protocol.
In this model, the Attester, Issuer, and Origin have a separate view
of the Client: the Attester sees potentially sensitive Client identifying
information, such as account identifiers or IP addresses, the Issuer
sees only the information necessary for Issuance, and the Origin sees
token challenges, corresponding tokens, and Client source information,
such as their IP address. As a result, attestation and redemption contexts
are separate, and therefore any type of token challenge is suitable in
this model assuming there is more than a single Origin. As in the
Joint Origin and Issuer model in <xref target="deploy-joint-origin"/>, if there is
only a single Origin, then per-Origin tokens are not appropriate.</t>
      </section>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>Client uses Private Pass to separate attestation context and redemption
context. Depending on the deployment model, this can take different forms.
For example, any Client can only remain private relative to the entire
space of other Clients using the protocol. Moreover, by owning tokens for
a given set of keys, the Client's anonymity set shrinks to the total number
of clients controlling tokens for the same keys.</t>
      <t>In the following, we consider the possible ways that Issuers can leverage
their position to try and reduce the anonymity sets that Clients belong
to (or, user segregation). For each case, we provide mitigations that
the Privacy Pass ecosystem must implement to prevent these actions.</t>
      <section anchor="metadata-privacy-implications">
        <name>Metadata Privacy Implications</name>
        <t>Any metadata bits of information can be used to further segment the
size of the Client's anonymity set. Any Issuer that wanted to
track a single Client could add a single metadata bit to Client tokens. For
the tracked Client it would set the bit to <tt>1</tt>, and <tt>0</tt> otherwise. Adding
additional bits provides an exponential increase in tracking granularity
similarly to introducing more Issuers (though with more potential
targeting).</t>
        <t>For this reason, the amount of metadata used by an Issuer in creating
redemption tokens must be taken into account -- together with the bits
of information that Issuer's may learn about Clients otherwise. Since this
metadata may be useful for practical deployments of Privacy Pass, Issuers
must balance this against the reduction in Client privacy. In general,
Issuers should bound the metadata permitted so as to not allow it to uniquely
identify each possible user.</t>
      </section>
      <section anchor="issuer-key-rotation">
        <name>Issuer Key Rotation</name>
        <t>Techniques to introduce Client "segregation" can be used to reduce
Client anonymity. Such techniques are closely linked to the type of key
schedule that is used by the Issuer. When an Issuer rotates their key,
any Client that invokes the issuance protocol in this key cycle will be
part of a group of possible clients owning valid tokens for this key. To
mechanize this attack strategy, an Issuer could introduce a key rotation
policy that forces Clients into small key cycles. Thus, reducing the
size of the anonymity set for these Clients.</t>
        <t>Issuers SHOULD invoke key rotation for a period of time between 1 and 12 weeks.
Key rotations represent a trade-off between Client privacy and continued Issuer
security. Therefore, it is still important that key rotations occur on a
regular cycle to reduce the harmfulness of an Issuer key compromise.</t>
        <t>With a large number of Clients, a minimum of one week gives a large enough
window for Clients to participate in the issuance protocol and thus enjoy the
anonymity guarantees of being part of a larger group. A maximum of
12 weeks limits the damage caused by a key compromise. If an Issuer
realizes that a key compromise has occurred then the Issuer should
generate a new key and make it available to Clients. If possible, it should
invoke any revocation procedures that may apply for the old key.</t>
      </section>
      <section anchor="servers">
        <name>Large Number of Issuers</name>
        <t>Similarly to the Issuer rotation dynamic that is raised above, if there
are a large number of Issuers, and Origins accept all of them, segregation
can occur. For example, if Clients obtain tokens from many Issuers, and
Origins later challenge a Client for a token from each Issuer, Origins
can learn information about the Client. Each per-Issuer token that a
Client holds essentially corresponds to a bit of information about the
Client that Origin learn. Therefore, there is an exponential loss in
anonymity relative to the number of Issuers that there are.</t>
        <t>For example, if there are 32 Issuers, then Origins learn 32 bits of
information about the Client if a valid token is presented for each one.
If the distribution of Issuer trust is anything close to a uniform
distribution, then this is likely to uniquely identify any Client amongst
all other Internet users. Assuming a uniform distribution is clearly the
worst-case scenario, and unlikely to be accurate, but it provides a stark
warning against allowing too many Issuers at any one time.</t>
        <t>In cases where clients can hold tokens for all Issuers at any given
time, a strict bound SHOULD be applied to the active number of Issuers
in the ecosystem. We propose that allowing no more than 4 Issuers at any
one time is highly preferable (leading to a maximum of 64 possible user
segregations). However, having a very large user base could potentially
allow for larger values. Issuer replacements should only occur with the same
frequency as config rotations as they can lead to similar losses in
anonymity if clients still hold redemption tokens for previously active
Issuers.</t>
        <t>In addition, we RECOMMEND that trusted registries indicate at all times
which Issuers are deemed to be active. If a Client is asked to invoke
any Privacy Pass exchange for an Issuer that is not declared active,
then the client SHOULD refuse to retrieve the Issuer public key
during the protocol.</t>
        <section anchor="more-servers">
          <name>Allowing More Issuers</name>
          <t>The bounds on the numbers of Issuers that this document proposes above are
very restrictive. This is because this document considers a situation where
a Client could be challenged (and asked to redeem) tokens for any Issuer.</t>
          <t>An alternative system is to ensure a robust strategy for ensuring that
Clients only possess redemption tokens for a similarly small number of
Issuers at any one time. This prevents a malicious verifier from being
able to invoke redemptions for many Issuers since the Client would only
be holding redemption tokens for a small set of Issuers. When a Client
is issued tokens from a new Issuer and already has tokens from the
maximum number of Issuers, it simply deletes the oldest set of
redemption tokens in storage and then stores the newly acquired tokens.</t>
          <t>For example, if Clients ensure that they only hold redemption tokens for
4 Issuers, then this increases the potential size of the anonymity sets
that the Client belongs to. However, this doesn't protect Clients
completely as it would if only 4 Issuers were permitted across the whole
system. For example, these 4 Issuers could be different for each Client.
Therefore, the selection of Issuers they possess tokens for is still
revealing. Understanding this trade-off is important in deciding the
effective anonymity of each Client in the system.</t>
          <section anchor="redemption-partitions">
            <name>Redemption Partitions</name>
            <t>Another option to allow a large number of Issuers in the ecosystem,
while preventing the joining of a number of different tokens is for the
Client to maintain sharded "redemption partitions". This would allow the
Client to redeem the tokens it wishes to use in a particular context,
while still allowing the Client to maintain a large variety of tokens
from many Issuers. Within a redemption partition, the Client limits the
number of different Issuers used to a small number to maintain the
privacy properties the Client requires. As long as each redemption
partition maintains a strong privacy boundary with each other, the
verifier will only be able to learn a number of bits of information up
to the limits within that "redemption partitions".</t>
            <t>To support this strategy, the client keeps track of a <tt>partition</tt> which
contains the set of Issuers that redemptions have been attempted
against. An empty redemption is returned when the limit has been
hit:</t>
            <artwork><![CDATA[
  Client(partition, issuer)                     Issuer(skS, pkS)
  ------------------------------------------------------------
  if issuer not in partition {
    if partition.length > REDEEM_LIMIT {
      Output {}
      return
    }
    partition.push(issuer)
  }
  token = store[issuer.id].pop()
  req = Redeem(token, info)

                               req
                        ------------------>

                               if (dsIdx.includes(req.data)) {
                                 raise ERR_DOUBLE_SPEND
                               }
                               resp = Verify(pkS, skS, req)
                               if resp.success {
                                 dsIdx.push(req.data)
                               }

                                resp
                        <------------------
  Output resp
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="centralization">
        <name>Centralization</name>
        <t>A consequence of limiting the number of participants (Attesters or Issuers)
in Privacy Pass deployments for meaningful privacy is that it forces
concentrated centralization amongst those participants.
<xref target="CENTRALIZATION"/> discusses
several ways in which this might be mitigated. For example, a multi-stakeholder
governance model could be established to determine what participants are
fit to operate as participants in a Privacy Pass deployment. This is precisely
the model used to control the Web's trust model.</t>
        <t>Alternatively, Privacy Pass deployments might mitigate this problem through
implementation. For example, rather than centralize the role of attestation
in one or few entities, attestation could be a distributed function performed
by a quorum of many parties, provided that neither Issuers nor Origins learn
which attester implementations were chosen. As a result, clients could have
more opportunities to switch between attestation participants.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>We present a number of security considerations that prevent malicious
Clients from abusing the protocol.</t>
      <section anchor="token-exhaustion">
        <name>Token Exhaustion</name>
        <t>When a Client holds tokens for an Issuer, it is possible for any
verifier to invoke that client to redeem tokens for that Issuer. This
can lead to an attack where a malicious verifier can force a Client to
spend all of their tokens from a given Issuer. To prevent this from
happening, tokens can be scoped to single Origins such that they can only
be redeemed within for a single Origin.</t>
        <t>If tokens are cross-Origin, Clients should use alternate methods to prevent
many tokens from being redeemed at once. For example, if the Origin requests
an excess of tokens, the Client could choose to not present any tokens for
verification if a redemption had already occurred in a given time window.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="PPEXT" target="https://github.com/privacypass/challenge-bypass-extension">
          <front>
            <title>Privacy Pass Browser Extension</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PPSRV" target="https://blog.cloudflare.com/cloudflare-supports-privacy-pass/">
          <front>
            <title>Cloudflare Supports Privacy Pass</title>
            <author initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HIJK21" target="https://research.fb.com/wp-content/uploads/2021/01/PrivateStats-De-Identified-Authenticated-Logging-at-Scale_final.pdf">
          <front>
            <title>PrivateStats: De-Identified Authenticated Logging at Scale</title>
            <author initials="S." surname="Huang">
              <organization/>
            </author>
            <author initials="S." surname="Iyengar">
              <organization/>
            </author>
            <author initials="S." surname="Jeyaraman">
              <organization/>
            </author>
            <author initials="S." surname="Kushwah">
              <organization/>
            </author>
            <author initials="C. K." surname="Lee">
              <organization/>
            </author>
            <author initials="Z." surname="Luo">
              <organization/>
            </author>
            <author initials="P." surname="Mohassel">
              <organization/>
            </author>
            <author initials="A." surname="Raghunathan">
              <organization/>
            </author>
            <author initials="S." surname="Shaikh">
              <organization/>
            </author>
            <author initials="Y. C." surname="Sung">
              <organization/>
            </author>
            <author initials="A." surname="Zhang">
              <organization/>
            </author>
            <date year="2021" month="January"/>
          </front>
        </reference>
        <reference anchor="HTTP-Authentication">
          <front>
            <title>The Privacy Pass HTTP Authentication Scheme</title>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Steven Valdez">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="1" month="July" year="2022"/>
            <abstract>
              <t>   This document defines an HTTP authentication scheme that can be used
   by clients to redeem Privacy Pass tokens with an origin.  It can also
   be used by origins to challenge clients to present an acceptable
   Privacy Pass token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-auth-scheme-03"/>
        </reference>
        <reference anchor="CONSISTENCY">
          <front>
            <title>Key Consistency and Discovery</title>
            <author fullname="Alex Davidson">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Matthew Finkel">
              <organization>The Tor Project</organization>
            </author>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="4" month="March" year="2022"/>
            <abstract>
              <t>   This document describes the key consistency and correctness
   requirements of protocols such as Privacy Pass, Oblivious DoH, and
   Oblivious HTTP for user privacy.  It discusses several mechanisms and
   proposals for enabling user privacy in varying threat models.  In
   concludes with discussion of open problems in this area.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-wood-key-consistency-02"/>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Kasper" initials="E." surname="Kasper">
              <organization/>
            </author>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves.  The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="KLOR20">
          <front>
            <title>Anonymous Tokens with Private Metadata Bit</title>
            <author fullname="Ben Kreuter" initials="B." surname="Kreuter">
              <organization/>
            </author>
            <author fullname="Tancrède Lepoint" initials="T." surname="Lepoint">
              <organization/>
            </author>
            <author fullname="Michele Orrù" initials="M." surname="Orrù">
              <organization/>
            </author>
            <author fullname="Mariana Raykova" initials="M." surname="Raykova">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="Advances in Cryptology - CRYPTO 2020" value="pp. 308-336"/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-56784-2_11"/>
        </reference>
        <reference anchor="RATE-LIMITED">
          <front>
            <title>Rate-Limited Token Issuance Protocol</title>
            <author fullname="Scott Hendrickson">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Jana Iyengar">
              <organization>Fastly</organization>
            </author>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Steven Valdez">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="2" month="May" year="2022"/>
            <abstract>
              <t>   This document specifies a variant of the Privacy Pass issuance
   protocol that allows for tokens to be rate-limited on a per-origin
   basis.  This enables origins to use tokens for use cases that need to
   restrict access from anonymous clients.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/tfpauly/privacy-proxy.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-privacypass-rate-limit-tokens-02"/>
        </reference>
        <reference anchor="CENTRALIZATION">
          <front>
            <title>Centralization, Decentralization, and Internet Standards</title>
            <author fullname="Mark Nottingham">
	 </author>
            <date day="26" month="June" year="2022"/>
            <abstract>
              <t>   Despite being designed and operated as a decentralized network-of-
   networks, the Internet is continuously subjected to forces that
   encourage centralization.

   This document offers a definition of centralization, explains why it
   is undesirable, identifies different types of it, catalogues
   limitations of common approaches to decentralization, and explores
   what Internet standards efforts can do to address it.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-nottingham-avoiding-internet-centralization-04"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank Scott Hendrickson, Tommy Pauly, Benjamin Schwartz,
Steven Valdez and other members of the Privacy Pass Working Group for many helpful
contributions to this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+196XbbVprg//sUGPtH5BOSXiqdqlJNLYrtTJR40VhKZaq6
+iQgcEkiAgEWFsmM43qWeZZ+sv7WuwCgLDk13WfOaZ5aZBK4y3e/fbvz+dx0
RVfa4+TeWVNcpdk+OUvbNjlpsk3R2azrm7RMvmzSrb2um8t7Jl0uG3t1nBx6
2pq8zip4/DjJm3TVzQvbreY7fnoHD8/T4OH5o38xedrZY5PB/67rZn+cFNWq
NqbYNcdJ1/Rt9+TRo98+emIu7R5WkB8np1Vnm8p282c4vjFtl1b592lZVzDn
3rZmVxwn/9rV2Sxp66Zr7KqFv/Zb/OPfjEn7blM3xyaZmwQ+RdUeJyeL5Fl6
VeRtXdGXvP6T0r6Nv6+b9XHy4vSM/pEVHaz2RdEu5des7qsOd3AG0/brtKRv
7TYtyuMkhcEWuQz22yd/WuPXi6zeRgv5epGc7m21TptgHV+nVRp9Tcv4Mm27
ch9O8WNT/GlF347GfbrAPX5X13kw7tNNU7RdvdvYJvqVhn9a1n2+KlM4UPyu
BTja7jh5/OhxclFfV62t8uS8CwBxnlaIJ1VWtFkdw+PbCs4bH4czbpN6lZxs
bVNkabj4LL3+08amu6JaL4uuXcABG1PVzTbtiivAjyR58+XTJ48f/1b+/M1n
n31+DGgCyBI8c3b2/P9cHNO4gtYRnn7R1Nct7Pb5285WbSHn1qXNGve26bpd
e/zw4broNv0SYfgwwNuH2SYtSzgEO18yIttglLOz8zd/jib2AEzO+90OUKKN
FjM59bKs14vMvUlr8P+ctzKQ0tOcFkYjObRO3KG/WsDMZQlPVvL1+GS/Ov36
myePo4UzI+gsHheM8szOT3NbdcWqgDM8gWnwH0iuefKiXq/hwJK0S84zwPB7
k5tqbGuR6BcrBur1bp7VQMRV97DflXWatw+fPHry+OGjxw/DqefRzPNo5rnM
PE+7Oc38/aqo0nKxy1e0BOIpSDgJjjwBoLn8v4DqfJF81afV+uCvIflN/f61
3afAJB2kx09807eb63Qz/TvQ5zeL5IW10z//FX7r6+nfzhbJy3oDeGDL6QeA
tN+k601fpd3mhvWdb9Li8sDy/rLAFZ73hwAEU/x1g+Az8/k8SZfALdIM6Pdi
U7QJyIN+CyeXtDub4Vm2CZxkkkYSZqUSJgF6Bs5RwRB91sERm9ZmICkSYPLw
37rab4HdAAEAUjVXiHywApAAXQFMAF5D9oLDR6S2a2qQB3UJ59gl8A/gwrCK
xgI2wspyfbNKNvU1va0vJPBIu287uzXtpu7LPFlavzqggK5OgAfg+vg1nhTW
kJUF7BkkD64bf6NtwNIN/AiMJNmlDSBzsUtxkwlidgegWTAIt0Wel9aY+yjt
mjpHUACfMRE3A9imfqUIN8bx4ifaULJMW1gh/MFgq/t2njWWKApkU+rpCR/e
WuBvVdFu20Vysd/B12WS7mD0NNsArMLRcb26PdP22SZJ8Uibul9vaKt9axEE
IJHXc5DVW4BYfQmbA2AAoKq6U0DNVw0Mk4MYa4sqIxjuEThwCni6tmkRwIhM
lzpjkmZNDZtvbdvSqSF8C1QJUoIRQDACUpdeWoRTXqxWtkE01F0dE+bYNMe1
Ej5VdBRlUV2mS4B+i/IKBFPT7BnPRNQAtGBVssBZYhfrxSy53tgOBSnACTeI
YOAVGzymygEPTqRv+TkgWoDMdldaxKS23hICIfqrpJnpro2sL+krXR6efL1C
wAP3TTuQrB0BC0kuWOoCqdAm2xp+BoQoslgiOvRxVJHCzjrCYITzHNYMjNbE
mNXVl4D1PDWOAFQc7PiT1hNqkgPSE/D8CZlrELA0D0IQ0A2XTKfeulOGnSBx
9hXxewIgbZHnRxJCkFwVgNTlPkkjqcTjJjwbnAzMVvcdgJvYBYzc2PAFA1y7
h+n3uBKre2tslxZVsBH4B5Mx6D68c+JiGcLKwFJsWtLwGwv4nlaIBMAr8LRg
SUvEYDodq5iLGNMIyl/DX6DKFEiYsJ2ibXubw8mdwMkmmwLIqoQJylkypH9E
n5qoHLjede2OE3gyDgLamDVIIEj2212AD/qrR4Cmh10vbXdtLWwbtISCiAW5
FwwM6hhz577iQxR4xMQWqvYgFYITw3FOZU6CMwLRj2v8uAA7BFyBdIFiA6G3
Z8Cl22C9jn9W3SxZwvnii2nZ1vC2Cd9uLTwK56wHjMsA9CjwjNsdTFkgNSGD
Q6AwihAKANrLE5ax5u897Ad4YVNvBT4tD8k7nR6U8RYFGSx9Zxvk8iAiESNx
UwJnfPJ6UwAvlcmRUwoehKuurM2JOmCTZB0F4GG0J9QsU1wNnrrdsrilYRfR
mTCkDawJuYUfSKaCFcEX8IzbHQ0NWxxMzM8vjIAEhNd6g3zBrvAd5JQlMgjP
gXVAtMvkcBiofrSZoT0mxOngTxQpPCJsKhnJLqBwAAse4RYZmZfEsESgRJMX
IOzBMAqYCh40M6JKdwC67g7EEf5SM7UHTGdm3LIJcmA5wRGxjODjVKKBXTmh
COKu3y4RmqsE1tWg5OcTNny68EwPKJXC7CckKOzbFJGXeFzlaMbh/UwZETNm
kNJCgSbm5+/ekUny/v1MMQqZDOzL8RcEqx4ZnWxbl1c2N09Pzi6efnUCqH1a
sTghbf0t7KsLcZ1hQzugl7fK/2UgYNEylNOBgDb6snMkhqsF1WaEeddpy9KN
lbkC4ZN1wrk8KzvAuwLO9ZpglBwxaTwg9Y8FjeGfWNCouPXgqFUhAIAhqEF+
Nk40jDSthRkhTrff0RHSKwd0hIKIKRKz8AuQo/yLdcfxS8IhM9TM8lnIRWxB
j8raW4PqoROS9RIlGp07wh6JpbqqL0UdHwsEAEKa/b0vCGusmdh1LEliOeNF
UYJcD6kETgIwKQMWiLQB+vR1hTwWZ18Va9ShlxbOBsb9xz/+IQaGnKD7yEbl
43DRfRiD4OWH83/CB8b5ORl+bj/y3+T9pw7B8Ns/yLIT+vumz8+T8/+cXOAB
vmFxlAzm/MPE+2/8qSRTI0afoytQZNB+fgBPKvvxC/kSlXNdyM0DWRipl4H4
xQP7wc//nIBfojsVIaz7wWcT/+3Ny5iAR/z5263PEz0tt3/6hg8h+Lvj5D7g
/RzFwlVhr9n/8vub/LBPUd2rkLTvvR9a16C7Z02xJLuWqHZLrAzJdlmDmDtA
p842bkURdwOSLuVHdZYw2b9gKjRiNiP7R4UrFSOARGLuJDBOp7Zvsu5B2oMw
sc5Od6Y5GrsXYCwWVV3W6z0zl0tUjusGZPu9l9+eX9yb8f8nr17T32+e/+9v
T988f4Z/n3918uKF+8PIE+dfvf72xTP/l3/z6euXL5+/esYvw7dJ9JW59/Lk
L/eYA997fXZx+vrVyYt7LHsjIJFYIIUVLRxgt7j3tDUKODROky+env37/338
GQjl/yFezPfv5R+/efzrz+AfwOWF35OE5n+ibWDAXLUp8mryGmTprujgZGae
haIZAdAjeK1qlG4kYAGUrEX2LcloMs9Z6ww2gP4GYaqgsFfsh9iLSLf2sk2G
lh9qJcyVF/Aq/zV61YnU1slUREQWoPge8+nRe6SZtM6+rKO3vf4MdOi1j1q1
B5UGOL7+PZqB3xMR7/RxQMZAEUe7Jkl2fYO2VevEuCMhwtUo5kHAP2gKMcXg
rDDUqu6bBDCcPCzq9gEublR5fC3CXxRhQgon6IDx0TbIGIsEqlGBCohVBE4j
QC4H+kNMgEkfPW10yJ7oiUIZDmMwDDmJ1/IC/oMKiYVFiV7UgC1wBRwgNN/Q
6XX/fiilzoQpHNb4yPfVkpnnkW3uzDV2fUWo6xjdYUVxkahWCM/CjA77xGFB
2zdeXYQ3QR1fJQAesvdm7gXVHtOEpKkATnDLLxhsfrUX2SpWVRuPkc1BR20h
TaUhtuq6yPYUAwnJtBWAO+DJ2MLn/UxZ2ZPjB9hL4DgygMV1VhAvp/0PRrNX
I1OnK7ZoLW13ytz5GcHs5Kpgqzh0pB3x9OI5SU7PkjTPASTtA+85lf1j0Ep0
Tn8EuIsGlcyR0u19NPL+dQEbTLPM7jyVrwtYIR4BECU6JsAEixj3u3d//Ori
4iwMPsCqf386f7YYxzXhmXkLOvnWgtVlCPGJAaeBDXid7lt/uM4wT7bpHlCl
2c8SB5BjI3wyUssDJ1VSaHQk3v5IlQdmJjSZKyMF5qAwF8/AM2eej95v0Xdm
vQEP4zmJ7pmoWjlkCU6MgVsUgy90ICIvb5DLLMsiA9EH2hBsKSVyIhcZIFeN
wOQR0Aai1ZAYk9n3XqQIUDp09ogbh6G0F5jzYywa1ZHBZETIAMsZrZ1hzm4M
m+tEHWgybYGRR1h1bjvSXeAorgnv4CxQTKEVH7hcAnQsWsJIcUkyXi6SL2El
4gEg1iKr8nbNDwX7KuShH8iLjJ403UvgXEGcBSraew5S1y1OOBwEzwAABYzL
O8dGi4s2AmieXaIaAeYxiF8xPJnsW5SeuCS3FDyeN1OMiE9IDNpl3VfMuhKl
y+ErMz5EPKRqVfYWTgm5ofc7L4uSRD0Z8POV7YiF5mwsq/4RQRn3DtwM5tlP
TAhckUhW3NNeMVmqe85JQaB7jJ9XdTV33m7EDY/GabICVsMLAuTJ6+3UjFsL
eIUQVP6lgyur6NsumJ70xXTF/jnngmlsZmH2NpY3Cxj23Fr4Lwv6J4vHi8d4
au/eTbA50RzI9ZGjO7ykgzxzDgr0IYTui+GBcqBMnQ4h8sO4sBTPBD1DF7dW
h54NHJ5HIh1WIj8io0EUjLwu6CXMQPTPnCAnlmF5/i2shJz67LTTyJKJ4TtA
DzcSa49MCXFoRAJSmxT56/hAHdaIBcLhrNDZa4ihLa2gPK0lLQFlcgk7oPo1
MTDwWg2bAc11EewD5CQ20O4QLbbofkOdiUR1EqgfrNnvOZ7nEebu6JIXbdZT
hANOKAZevi1i2ClklmjhkNxoivYy4Qip2DGRsxQnQJbzWl/HrfLWKFgTxpnU
u0vCw5kspyudVAJXqt6oEiBGU1X8vWegIJDXpXV6Oe7ZtGnh3Itqkd6wwSnn
Gai8TrrHCu/YF2e3yzpXOZ8hQQKMQnuDXJsS68Rz3fWdSQOycu71KWUakUQk
c6vqpDcwjTicJ310H+mfM8no8+ntXCd/o1eHHrWhR2zSr/bzxKyxO+iIRdyD
j3g1SQ4s4lavRotwfrPbvkr+sLGrzK1JvGufDp6h1yZmmJr1dofzMHJsOTQW
x5bD9tfi8UInllpMSrje1vCBhsrrXLVTIVNVgiMeFiL9YYvKDX1V9z69QZFX
Q9bq+5w2rCJt6JdbVg5Yt7arEC43mFaBJTEwrVCuMlMMLTHJzsmMSGq1JsJ9
oroHpP8clKkJJoWydhmYCWoQCP8QI4gkEmrHGDcPvQAzYLq5bUpKtsia/a6r
1026gzML8oHQ4UjKAHrIBgHbGXkgEDbO+eitk0WIahho7zhl5yJ2abjN9K0C
LsjGSEVtK/dmbSuKauSo8GWWrVU2Yshrqba+hhYvDs9lQPG25UolNyrsgQKZ
HPBbeAeRHidD0/q8DGXo7IMIgqb4xpUojE9VdyahgYi3/BHEoqKB9yg6ky/0
7wBYHy+Sbys4obzA40lLHggfByVUYu5j+DqhyakTuGuw6Kq1GYbGP2n5NCmA
RCuM8Tpyx+hh8OJdxBZBFB7EeDkIe1lJEIiMz9ME3jBy5anRR6Fk4i26UnxD
otZFNWlvmxOJhroYp9qyFGEPdX8R1yuMvMBvPgXIOKnuNrQi4QxH8rqyc9Lc
YeFr2+zd8X3wQDj/ags4k2Hk0JENwNBHwI9SSs5DDiW/P8AN02Sq9NSrFazU
Ovy8LkBL1Wwch+Eahg/ArtF62shTONG+IcfErbaACmG64oyNnh2k/DoQLWuE
zbIAHbwpwG7aIrFpKocwtpHLhcfNUD0VRyBbQ6Rep+W+LYJoBvMdDoe0ZhDk
QFNwz+q6PkLa5o9g0lGWK7ORdV/ktiRnguYkYiRmV9Z7Ew5HRg2g37b4idnG
YPqA53Hw9wBuu+wIh0+i1nkmCFMCLxmENQ6YAQvnBn158hdMt4ORSblHYYOQ
wjnFJQ4W/N6QM4H3KF4UdH0wUfhVsmTVl9iqrxtcuWO2mmGaG6V2NF/evfvj
09evzk/PL56/evoXct5d13U+h0HnwYhiv2j+RZAQOTY0+TC2xIYjXUVkoKat
gKQv2ijRB80UhAiyOkaEcFPiVhGTMnOIeYOl68gApxbWHIObZzaSyiaBHMqe
hbdawJ4ybSSwc3o23xQ0Dxz4Wzw2ZkXqNOPENlOCvVZF2gNz7SApqnCWqGQW
5pJNZN/ukLN0oexXFWFE0iTcfMqDG+qqSBNMv29Q3pDDZGZY2ZjIQ53al+y+
LC5RLDeU68IivZw5ohGD3ZFYjSlVW0wvUp/iMC+Uc/o0HkBKiqEsC6WjsW/R
GAWu48Bk7Iamo0/T4c1hXcXA2ycwL1oMxdYNZkQDxLK0b22EoSBOmxo1RfJi
kf7L5IMDYjqGpuZioiN5Nz3mBrqlqqdpRlUe3hXdkKDwyqaJXhOlwsliZ4m7
NCCXjRX4DFqvi5OiDpxuSjv1WZcNcE9OfdbnVbsNPMbMGiSO2MwRKpMeLzDU
73sCf1NjXnaYRsf5vR7qiNcqDyZcyYNXUU0R5orbH5so6BuhCFSFj3T1DBnG
qmi2LRFHmMnaYsqVpmCR8VCzO33PieKsXoxyDzWtL4wRGJ+s+ZwZYjsEdxA+
FUsHqY/wU9O8S6AbwFLQJSmY8TTdEWOEgTBFjPSHRHLEFhO5aPpbGPrKXCow
ukgl3znDgdnzq6Ig1NOWFqdqepTYlKiHSvES1hdpJlQiUm9Jp+e1LFxsnF2G
fo2qqg8MOckGlLiVohY+7SLWbs0yYghdfl2AOUgedBSQBEFQ4CwsdNnZ7/3g
a+tsp8auifTCXDIOcIureJMGNsIOmTMNOS/TPWVRE4EjKC6E5+QWeSfIVhQy
ChHUtVA2yTObtMmvKcRCVIwxcHf4vAXRiHmwOeU3R+hFwNiGiplGF+KICpmS
cXxqKjpFXl3jvLouKxfPQzLDHRCUp7XBkKQaRW8trYFNVyqUBxuPJEqgOEsZ
iYZUlERIWJsBhTHjdPsf/8Q5OnSAlSh9qiBosqnk7AhXH0AhRjGsSyCfMMov
SVLHFakDNCsxsQFPIUIEw/m+mOwOLzHjriaH5tQQzJ0NqRuO5pyVkHI/M8yE
+DiA0f0oeeGjQBode0awzNHSTEXOyb6NT9zHcoYWxPfArx8vMGI+hE2jJFbR
UXYpEHGe7mf82ABpmM4Q3wPcSBVihiGGmHUYVoeXksRLMbqUxRi/kPuyO3oM
NRpYjE+MhmxH8FKpJ5KYZV6kpizVRY7pxCL7ibyXVMAzzJxwOm5nvKZAJJIm
13YZZhgXbaBMJA63Astlg7UsnA2A8XqONwB8OOmd7BJBd8x+dnlrURQCCA+r
FD3YTaDiwuGkOfsa2Z7iLBtRxrzk1CIIP8cC/feNhcfsjC1/NHGzEbrpZL6o
jIKfmuwPL/VpGS2JtJpdmWYqazxrchHtlkqunNew7kA5roCxIsVnXDhA/JPm
arFusLFIL+pK0hk4c0d4yxVV31iYjJiLyTRrRvFF1YfAkiDnXEpWG8gqqdnJ
gCe3apG5AzJDhUv0Ew3Wsc7Ox0D7diEs2Taj6v3kG5jsJdjja1q+MRc1Zo2j
UkBCVcTnLEQkwuRNjew4yLTHVe/SAhPcKSLGsWj0wUaVGIFlqhSxTUFsp1ew
C2f/BaQAujVrzZgEwlALAcSVbOyX7Xc5q3NRYgT7eBcuMRJVlaZIXfxGPFmo
Ha77RhMOaBe66L61beBEdzFDtKPRh861JWHCikezXWEz1lPi8rL5AW8M+Q/s
78hNzc94kLVeLxAv58BfyoEwB6ih36JFpz1uW9GkTYaFb84HQwRK6FsEhSGi
oIuJ/TtMdgzRcsIOwAWtgHBSxC+AeuAGpaf5SBQBaXXIm5DAvE9PkNZoEL+v
FFW4atobKlnIQSUcSZBTDxo6SzI+g4tb5RoVrWenQYEUqebnUm6J5mIa5eBg
3AHMo1VjLemSbdeIo4jH1XXqXkG7w2U6oc6lUyUpyd6nEuFs68zJp6isrbgs
LwGFEwx7MKfINfLu3R/ffPn0899+/oRqWmg3gcfDeQPSPi+6ms1QsEHFKe3V
3aVFdY8yIsPSXbc1UcIDZ5Ok2WH2rTpk5o6qCWBBnWBYmdzVQAa6tQueUsFE
QIJVESQdT9MyO0yRBEQCTazw/pRC8m38wgOxmghZYbmV3aLCtg9od2Lhdrv0
uUz0LkwFb9erjvRXg8IVePEV4IBDyuAAP4jyiI6Ip2jYZKCGGybxOPnYse43
wgaRccdJpmpjSRxNa5e4ponVC3Yl9Yht2aZGDQsEOiwONIxVwP3i7GKWJugc
wN1LtpTDK9DjyRUaKEbCMsQ2HGmTmKkuwlxpepvuaAwXyUC1H6u0UClDfWKJ
oR6EbudjCAhUm2pyCI8sGrlBVZ/yRAQMFDFbkLDDSh86hDWyQ07zniWR0kap
QuQUq2wUqkCDf1D8yMIvCYWf8gj06uooyiUJgXCYIGDB8q++dotABGhtukXd
N5J9sAMdnGi67mRlLdvq5OFD+MMexZcmuX0BGBIQ5Ca06NHVSP4M5kcnJXEI
TcrSReGEanLTC4yGkXOzxRLDFGRymmCfmTWWP/hYzu9Ep9FnAulhfDaM6jU6
kEuOQvr+Ais0gJ1viM+z4EfGBrYFEndQHR8FRqlaeFlg1NOtHMEO3xRXRd6n
Wmy4MN9EqobXO9X+xKQsqnBFXksHJewbTSsqqyeL4KUu/919t11jkG1jeGG6
FcN0pHiHnv5OdQLKSiWENA5CnN0zsWGfJ6hVrWHl5IzK1ToYDXUjUiFqd8Iy
nZuD3aDopl+jxipyltMjzSCcS0SJuRnkwdIhxBdK0v0V4+y+sGWOyvj6ydGr
Bwb72YRvaAovKhHpllwNwa8JPS7rpXMJErwpyNGTV18Wx3KUSTkaAg7sbGKz
VDwQCW60LuollUgipofuS503DC4mw1Hxfcn/RDvNyWx2r+1SAOjQ7RA8M3Eg
qQDZaX5ZWN3oIu+UsGrLFblBQwVROxlIHscoPkoaaTAuboBDUNx7hGJK6G1d
JK9p+VOL1L+HA6EeKdXoaIMfGHeAsCgj6umpnMaWJvdWDSg3Xu9LEGnT8t6M
2gD0HXm8Deo35UpPUHMEFBZxHQsa4NRjCVSbogGhjOQLEmpmAuTAbYwDc3xE
ReticBHnTTnLEYNcV/BjjTLqbIilB9ERZ7wLRp4jAQ54jwTiln1ROp+YrsAx
sS+KzoS5JayNfdPYHj0JFv1rC1Q8v3nx+s2TR79/9vp08fgR/OfRrx/+9te/
mf9q/uhXj+b/8vmvf/PZ/Mn3jx+DNSuoCPK9KQAN7JwrUf78+uzNlzw69Rny
Y3MDpvfvAUBuWbh26WQQRavJuqd6PvIVIG9Ar3i3Ea+B8hLDvJU17mDMpfUH
ycEW7+6Vcn8Km7k0HBOn4YS1elPZi9pXS1zx7+67Dlnt+4kSqSj/0JcXouzj
ikXsEZVLiZellOYd2XBdbfzIjEMg/9Tt7rMFCGu0s0RaFpIcwzG0yl57p3pQ
BHkguUligbfJAjCDMLzL2tI13y4NwNyQBhBlFXw4DeAEvnSzaxBu+ixIUUxz
7k3CD/p1GBdglzoz4i5R6AytAeQ0E1kGKPqwcu6ZC55jckdYSvruvg+su9xA
dlrETX1q3zhiIg9vWJjm0vNeFBVpj8SOt0v2LrkoPCdrB5lAPgQaZe8N4meD
hKTCl6AQTWHLOfxpg732mv24yYTxewadMcc2L7K5A6vDNN8wMgErE/eEpiir
O3gW5k5ifLJJ93p2YekxHJ6mjTsuanNKp+PFqSIy5RdCN4NYqFpASBZgy1kI
QJmUZT3aZquBsqIJHFBRpplTbrL9oOqY9xto15SWjIpcj4ntWIQB2Fz28hsn
zrlqS/JPSlsCZITGYZOk0C1ARkSWrkUEoIBVPPRhIzcsAOVs73OuEBgfkhyQ
Yv+cSwmAALQBh6BF96EjJg8QGMnB1lhlxM45jJMzE/ReoB8P9l6IPrdMz6Y8
Y3k/ygX/eSIbXFatH80l9wnIQbLz7av8P/i+Tx7/0PtTTQlu2viN80vXh7us
fwz0mxtG3Dg/fqIU9Y+Z/zbL+fD8kq79wfk/CP9P7zg/fd5Qjc2h2e+0/0lo
TCXQ341+wiz6iCdoKr2wkkCSvkQW4bpCEMPAcI50gmEjiBuMBclrwyoSKvoY
pPhJG6HFFDMasrBZ2HWHVhwkQvhGYBOlTBTKSyUqOYveCHyOLoA8jD3ug+ZL
nAfm4siGXlKvZ5guIzkbKKRcOtGh/AffupDaB4JQggGIl7JXRt0p3GyhTjhD
jhLGnIHh1vhJO1YL4pyiaSi51F/Wr8X17bOFW6kMaCkJVkRabjjVu9hahc1E
jlzkTz1cDjkzmjoO9nt204DeJ/6TT7sjuQtDVeLwjIoCWUh+jR7vydoPJx5/
xEfmrHtOC8mp10lSH5aLxoUxRx3JVOR+nOD80OfTiPL5u7iK6gMf5Gw3ik7/
mZZ84aMfLftuFH632cJ4BcG3N3HPT28zwE3qx8+3HODG5d9igMMKwOEBbqkB
3GEL0yrAXVYwuaC7r2CgBBwe4JZawK1W8IsR6UOfOwwwrYd85ClMHsq0KvJx
W7jDJ2ZpE8pMyMFVpTnM+D+g5RQUhF31JfVLcO1SrlPp5IdlKHWaj7QQ5/zh
SILktGnziFtKFVZygqHV2TBIFZqpl5PN7ENCBrOzx30SjMFYYyZBFi2em+ix
MQvW7OZob9C/jNO/kq/qa+tygQatOyRjjCPtgavdKTqjUgATCk5fy+i8vcW4
0cqbk4vn8xenL08vnj+jIo2wuQpuZE6xqjmrKthiZUIlS8JQGSllqDHdRgON
lJi45YxTS+Trw0oJV33fZLnfQSUZdEc1scb9T9JGbmAst9NGkFvcxZCXMb0m
cgNz/U/SRm61ggNC5NOPGSDURn7+yAHiv+8+gNdGbj/AAW3kv2oL+LmVR+MX
uzT+M7Zws1PkF3tF/h9t4RfTwvipjxvAa1Mficq3Qovb6UM3MtWD+pC2DAn1
obHQuLU2hApI1H9FBTjz83lYwxb1uT5s0x/yjsS1YRj+zmvqu+0jwqiO3aAv
hCkr6qtZ2n1NRStkmBuJCOdhXJ/j2V6ae11DhJYvRKMWAAOxfBu1AIW0ymEO
3KuXyhwqREMvQl90KXdkCGYMU67Dl4eNBcMBKKQh+6We8NKLGgsHglY4WAuE
VQLaE6iqjZRtYEhjz93vOJubc9DE9xJiwbjQj6DCzjbjJvLJv5he55bFjaim
uuVQT+vXYUOcSdWtiA/HaXJeVkpufqO9JMcRvqNXdWdnGCxlZdblkLgx8pri
Q50MpCVRrp1Ia4LVugZX4qJ6wIEcIIPuNnEcfO6fFMbx8TaNYn1sJOcuzOu/
HVK3FXt3HWCkAn7EAJN/32GAgQr4abylOzmkVHf4aJ/aUPn4/8qj9c/awn+J
S+wXb2FEC7dCpP/2qd3p80GfGgkbFx+kfxxUFSWTlC6FkhrVZJyFwk6ypMKy
nzZtJC243lpzgwvKX2vk+duupBaa0nigGiTxae1N6P+RbCLUbzi79lBr27uH
JaVq07lWMP/FRKn9x/HqW+xWv6uxyoKvZxp3RvA6lPm4Lgm2DQvTDE1J+hTH
bb0+Fh+GuupGvZJxAC7uCmrnZ4M0G+maRe+6tgHYAjFS54Mb3jBTx685VoZv
o0ubUJd2a+ZyybE+nEzrw3RjiDN3btKOB7oorVcqZw8ZV2JDoT9yyq/3fsb5
rzyVuYvGOxU/pmw4jb+PUuG0Fm0iDw7Q9hflwd3Qz8bTUXFTtllU/OKbKHEy
OYKlwXtdK5eaThVgnLvJuZBAB401FEWmu5FICfdFVUHfIemb4S0n0IZB6Q2q
QLDuRHsGS9anK+nxIfdBRfgGjMhLZwZJsSyltxl/faP2Fy/j2bynlkpLRMMP
mqXNkmvrMtZ4I64nTLqPawHFqsG69bU1TGXwdKHFHFiUJgfZi0EUF2snUYYD
av+Y9VAnRzUAiy4bbO26sWvCjQdSuJRSMAIbCF27vjoJDFmsw2s9RnmiPk2X
KhhdGaF0XL7ifiLUpEGvYzRh2YgOdrp1roTWUH5qXP8QV5lGbYCxzVjfEL7A
vrYyo2mpQ8/qhjMHBgDzhN1l0ClBIxpuyutoWbGZezXkuf8lXKa/oCJsHUxA
o/FcIxFsYcTFYYh6+Lu8/cPjH5gP/vDoB58+DwvNc+qF5+oXGSr+kkbqo0RX
wRTUcU86ICC7kcT7ZN2kFZbEYXJDqw0WuBamc+03iFsqIh5J+xaujKupk5GI
PcPlqfDKAwlHEYPg4iAmtIlSFjqvqKkPdiGHl+g+vKhUjEhLq2KR51Rcj6ii
Ey++qNdsq7t+cQgUM0CVgLQ+4TIANvSjDlUhrM/FzwAMfZgtH3jSpJI/UpTa
cf5UXN+blqmOHdTlWSZldhW5ayhch46wE9WwTwBXPm0CNPSp/q7lD0kZKrxj
JNNkKeOSpYj6HUdCFuH7EQN8B/WYviwtQB5HI/cC5nJvSKjMs1SAOWqUko1B
wVtW1i3mdMmdmYM+pMBpDd6ukPellAYVrUMwrzstku+4673raVDztePMWGEU
9ttFvY9uvAdN3VLUtW6fIQtHXxrenCiFKSB7mrqn7qwOqCpARFIF14CoBOEh
sQmWkRS3nxRVug65EZYHdna9nwW7YY7kDyFusmB2NXBVqZnHhOXg/h2u7sVe
H34nlLfdtzM+J5G5ESeNhaaIvtY1wAi6l0mBBMMybv3A3XUBU4uabyotttYl
ZT8m/vf4CcghezkqVHQpjFxSlNt5vVoNb3AJr5pCgV1UvSttNlHTSNeag1O9
OjxI37lroicDda2gHi7ArtZcYUw44JCbwITVwsApqEVXHZYcc6tDvJRyi8zG
mO+4dmTQfUThiS1mqZSDa/zQ/kGwkG7TutdshWzagKKRA5FHDeLq4F5pe7Ct
nqjePcjz6keuJgnqnONLurh5lkd1WkLDGA+CCljlW1mu0UPkolKmpzzdYiE7
NaJjWTCESVSjDVAGSvlJkxqHD1OvIzoTSoblim3rkzGQOlyBINYr2GsagVtF
AF5i65ewQYfrWHgaXuNTdDqWoDNyDKw9zlzrswwO3+VeUsEW9blU5RCbiiB1
E1t9Qaf2atT95d19uUQadPzzUEIHe3JElO+rdFtkjvU1aUGXInCFvpolhptA
DNFLZgwN4db1oEJPM72+nYWaoiFdHmE9vpZk2FZU+Br1MkidksXzuUsAuD9P
0K934hYjHsNqH1ZU9+V1453/4+iRV/qkgAvtL5ek4m4Dcu3xsOkLIH/bOqN+
1AIFNbSBauHmMqH0EDOPlhYxGWeSDrS1Ent74sURjuKG1tG4UZDGMbjNh6hg
4Ym435JfPfHgJwpx8Cfgwc+iYZub4MiXz4S3VxXuWiu5iIFOiTqCcxgIy3G4
7FEadukBcGvJ1vV4ZknPYAblhFqfhe+GvRiwVVZxaZkuJtK+vSgH/bNat50h
fCY98RR7DFe24/ZjaP+Ls8BNGy8ZLV4EEvtdzHXdtN0cjaSkzWwFmnQ9k4CY
X9KSAmo9ezQw8ll00V3qoDdfmmsAPM0rOmBwu0UdEYy2XaA2HwUlH51WZKep
Yy2s2qbWReENE7DzwUB8pxEnf+NqmiLrRI0UgY0bwLiu17ikI88ICfUiCN/t
KvmOZApdD8cEphur6sAR89lgVUa3hxDH683LvVzuTGz5CNtv6dVDgXxJPv8s
VlpNwK3aB0EKm2/oh41ImBmSIYzVuKJDBR49w9oyglCkG1U3o1SY6Islujh5
OVg9cPYIugSMb6OQttKNKWzypBUDQZsxbbVQUpePmDUU3hfB6god+th0YhvF
XfbLZ6jKGaORWpNk8rvbLoW1SPqjtMHhpp45l0nwufItBGZ8iZa7PIdpAedl
me44Ce5aNHqWp6SBx36Ft6gBr+XK9LgHbMHx2txmJVW98Bx0wxojpJTfC0ID
IvV6Yzvu5CpKWfQFqSbIIxhUNp8oGr8MzeN39xGl515mYwki91JTPxrTTDvB
ucNLQ4VkpL0OAtEQogJ3JQIlCKqj3jfxDYdQ3xJfg9j1Qfthk8bui2XQIz9P
jqg/oR4HXzf0IGIijhthTQreOurapmgzSW6aIT2I0K2/RAav5orUS7YK3bTz
XciRZqSXzQEcThPvq2BrZdyib8gkGVbifqJ+Mdq8XjpZweukV5Aua1T3E93O
r6PVEmbPj30SgsD02hG/AcAiMVJv2UN7oR2IT1KJUSxU7ctduDY2oRrFuqsm
BFT+Qii67y14ECWV8sgJhQ9VWfTS4RV1pRVDGNVTDJbywiYcMQXfb5+uXTdb
ufBe7rS318RjpF+w9pgZKSWu15T22WIlZs+IcJiTmc8GKow0d2Mvl1xLqvw7
OWivtsalfzzV5l/UvgemCqSFUJZtq086vRVKl27Q9kC4lXu+Ik8QoFjxHrxo
u6bO384bIy3cce7rDfbPVJE5bBsFpO0HcRQbOdxZ09KexLGGKdcSRhqXiBgl
tAAj1eg1XOEOqIuXdyAfAQNYKtiRup2ljWB39nGBV8NmhVa6G99VL2qSFaxW
LVDtjsn9vsKbXtFa1YiHx4X5zn3/HrkQ63P1oK/UQTtn1JdzhnILc6GYRyjb
x+AORUFWB2rbXZspd2Oo8/cG18lhz1848nvh3Vpu/feEPTHe8MLjgZgJJy6f
jdGMexz6S0TiLmdajsfbYs3Aa5Ue4cN1KriuQJO10s+Ms7FGhhvwqAJVdYrv
jTcVRlYCY99MgVCPRF2CaczWwwV2Qe+MoLt4MJeWPFIsT5udEr6FN5rrMoPu
kKT71kEvUZLbGEcl5Y1NGUQybsbjxAa5+ojSg7Zu4lAOMGYqZtHv9A4dgdA1
g5R40iFcoVZubb9DkkukT7h6AQNV59LaXSs3CRLy/uAG+UGuyEQUkcaYdiCB
EkkH9XLPX0CIYUT4Frs/sLGyoBu0h/Wg5Pvv+qbSq5jcPhPtUWc2RXesWWh8
fkcBBnH1z/iqNfzwOo/ay/NZsrs8fwAD3DFXI/rgdaErmZBUySIAevKO0jHw
Gmf9asFddZI/gJb87Pnzl99TVoI8mCSv+w4vOHr3Xv7NgKB/8Fd+oF3fbo5k
p4Z/ZmP69yxO/5V/WxT5vy129e7oAV/VCz9zIsuR3MWHePVg6ta86ANvHnxk
Ip3lg+MBTI7y9jR/u9CrzI5gigXGHR48cOC4aUHoo0qev3nz/bPX337x4vn3
52dgcXzovfcf3me7AxD9ma42ONohlhCqwOIe3GJP+Pqi7TkN9ha7YBDQUbrt
f3gPHxwXl3HwoYkEL+Mwj95EukLn4lOgqwZ9phKuOSHbgE1QUouIKlUseJYV
Xr2WHPkG4u6qrPYBGvyRlRaGvkhVtinKT4yRuZ5Dwl0KDUAYap5ddZzJmkWr
VZ9NwlecxnfC47U9z19dvDl5cfrXk4vT16+oKAzIFzezSbfz9KomXYSv261s
N49Hf//eNQfHu+2pMfyNTXEl/I1duOP8Bm7QOm8xLolaK3ahw1yEii/eoaQR
p7phFga3KM6T6E4jSmSPwI6W34qDdJLrq/3O3CMkgw8cgjcSQa/JCgyeGc7r
wgWpwJUUBjr+7+zyk1YccpyRDggT98U8eOAMJoVRoneWgUxE3YWKBYzLB5D8
8AiMsL+Ntrx3JyXdd+tymEWPyCcdRldgCbms50Gii3Zc9Z489E7qrQEAVBTI
IM0o8vD3vm7YlUTKjjT7mfl7hQh1K+lmqNKyCgopSPSLE8Td7xHvWkyBDFG6
GiRJ+bQSXDdKXUNuspoEfl9JizJQAUBZgCk00BXduxJRibmP1/Nyu6RRCpHG
voAbkadOI2meC7hWS3F7pUSuEOSEjvFdcGyiLifydIgncQvf5283KXY0Q64U
mbzifo+cDs7dz6E55+cTl4TXyLzhzt1ARmp0GGN1qQBMKib0uvFFMnwXM/nO
p9wG+ALxMb/4rsY2aGSRa+CkaAa2e3hpO0Z4g9yYgh8ym3QHo1CuUHxzM/WR
Er9gkFjWBn1GnQdR/RDu2mjRMdWTEqa/meDuYwq3B4UNM2eqi3eT2loLY6Bs
g02dt0GSjyECCjctl+y4+6ux62I2vHSDAxUaMmk4Z7s1FCDJJHiqaYmB2s/k
QtfXW81wcNgcrKNuBE8kTkcxjEBr3aTej+KiiMRhfZ/jhMOq2Nh+Pk+WeEE4
0NhJdlnV16XNudV1y84/vtJZbTu6TIxU/rS6TM4zkFTJV4AoTZFdUpbMRb3d
ImPtkc9+YasfU5AL8ODmGkj6p5k57+jy0j+nIGF+Cq4D2FrnVRwlZH1XN5Tt
878oA8H5rza23IFYJitA4xuS7BY14P4P7GVV5QGgAAA=

-->

</rfc>
