<?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.39 (Ruby 4.0.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thallapelly-oasnt-caid-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="OASNT-CAID">OASNT-CAID: Canonical Action Identifier Derivation and the Named-Human Binding</title>
    <seriesInfo name="Internet-Draft" value="draft-thallapelly-oasnt-caid-00"/>
    <author initials="A." surname="Thallapelly" fullname="Arun Thallapelly">
      <organization>OmniArx</organization>
      <address>
        <email>arun@advitlabs.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="24"/>
    <area>Security</area>
    <keyword>attestation</keyword>
    <keyword>authorization</keyword>
    <keyword>CAID</keyword>
    <keyword>executor</keyword>
    <keyword>mobile</keyword>
    <keyword>agent</keyword>
    <abstract>

<t>This document profiles OASNT tokens for consumption by executor-side
processing models. It fixes one normative derivation of a Canonical Action
Identifier (CAID) from the OASNT action digest, so that every executor
checks the same derivation rather than each integration defining its own,
and it specifies the semantics of the token's named-human binding,
including a subject-to-enrollment check whose absence this profile makes a
refusal.</t>
    </abstract>
  </front>
  <middle>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="I-D.thallapelly-oasnt"/> (hereafter "the core document") defines the OASNT
token: a compact JWS in which a hardware-bound device key attests that a
specific human authorized one specific action, with the disclosure the
human was shown bound into the signature. The core document deliberately
stops at the token. It does not define how an executor, having decided to
admit evidence of several kinds, identifies the action that evidence
authorizes.</t>
      <t>Executor-side processing models such as
<xref target="I-D.schrock-action-evidence-boundary"/> work in terms of a Canonical
Action Identifier: a value the executor derives for the effect it is about
to perform and matches against the identifiers derived from admissible
evidence. Left unspecified, that derivation would be reinvented by every
executor-to-OASNT integration, and two integrations that disagreed on any
detail would disagree silently.</t>
      <t>This document fixes the derivation once. It also specifies the named-human
binding of the token: what a validated token asserts about the human it
names, the subject-to-enrollment check a verifier is required to make, and
what the binding deliberately does not assert.</t>
      <t>This profile is written from a running implementation. The subject
verification requirement in <xref target="named-human"/> exists because implementing
this profile exposed its absence; see <xref target="sec-subject"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<t>"The core document" refers to <xref target="I-D.thallapelly-oasnt"/>. "Action",
"canonical action", "disclosure", and the claim names <tt>adg</tt>, <tt>dsp</tt>, <tt>rqf</tt>,
<tt>sub</tt>, and <tt>cnf</tt> have the meanings the core document gives them.</t>
      <t>"Effect" refers to the concrete operation an executor is about to perform,
in the executor's own representation.</t>
    </section>
    <section anchor="caid">
      <name>The Canonical Action Identifier</name>
      <section anchor="syntax">
        <name>Syntax</name>
        <sourcecode type="abnf"><![CDATA[
caid          = "oasnt:caid:" version ":" digest
version       = 1*DIGIT
digest        = 43base64url-char
base64url-char = ALPHA / DIGIT / "-" / "_"
]]></sourcecode>
        <t>A CAID is an opaque octet string. It is not a URI under <xref target="RFC3986"/>, it
<bcp14>MUST NOT</bcp14> be dereferenced, and no registration of the leading literal is
requested or implied.</t>
        <t>This document defines version <tt>1</tt>.</t>
      </section>
      <section anchor="derivation">
        <name>Derivation</name>
        <t>For an action with type T and parameters P, the version 1 CAID is:</t>
        <artwork><![CDATA[
CAID(T, P) = "oasnt:caid:1:" || BASE64URL(SHA-256(canonical-action(T, P)))
]]></artwork>
        <t>where <tt>canonical-action</tt> is the canonical action encoding of the core
document, under its escaping rules and its UTF-8-octet key ordering;
SHA-256 is <xref target="RFC6234"/>; and BASE64URL is the URL-safe alphabet of
<xref target="RFC4648"/> without padding, yielding exactly 43 characters.</t>
        <t>The digest octets are, by construction, identical to the value of the
<tt>adg</tt> claim of an OASNT token minted for the same action. A conforming
derivation therefore has two equivalent forms:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Recomputed.</strong> Derive from a representation of the action the deriving
party itself holds, by computing the canonical action encoding and its
digest. This is the form an executor uses for its effect, and the form a
verifier that recomputed <tt>adg</tt> during token validation uses for the
evidence.</t>
          </li>
          <li>
            <t><strong>Carried.</strong> Prefix the <tt>adg</tt> value of a validated token. This form is
only meaningful after the token's signature has verified under an
enrolled key, and it carries only the strength of that signature: it
proves what the device signed, not what the executor is about to do. A
carried value that is not exactly 43 characters of the base64url
alphabet <bcp14>MUST</bcp14> be refused rather than prefixed.</t>
          </li>
        </ul>
        <t>Every CAID comparison in <xref target="matching"/> is an octet-string equality. Nothing
is ever parsed out of a CAID.</t>
      </section>
      <section anchor="versioning">
        <name>Versioning</name>
        <t>Version 1 pins the canonicalization rules of the core document as of this
writing: the escaping of structural delimiters and the UTF-8-octet key
ordering. Any change to those rules is a new version, never a silent
change under the same one.</t>
        <t>Because the version participates in the octet-string comparison,
identifiers derived under different versions never compare equal. A
version mismatch therefore manifests as an ordinary CAID mismatch and
fails closed. No version negotiation exists or is needed.</t>
      </section>
    </section>
    <section anchor="matching">
      <name>CAID Matching</name>
      <t>An executor admitting an OASNT token as evidence for an effect <bcp14>MUST</bcp14>
proceed as follows.</t>
      <ol spacing="normal" type="1"><li>
          <t>Validate the token as the core document's verification procedure
requires. A token that fails validation yields no CAID and no further
processing.</t>
        </li>
        <li>
          <t>Derive <tt>CAID-effect</tt> from the executor's own representation of the
effect it is about to perform, using the recomputed form of
<xref target="derivation"/>. The executor <bcp14>MUST NOT</bcp14> construct <tt>CAID-effect</tt> from any
value carried in the token or supplied by the party presenting it.</t>
        </li>
        <li>
          <t>Derive <tt>CAID-evidence</tt> from the validated token: the recomputed form
where the validator recomputed <tt>adg</tt> against an expected action, the
carried form otherwise.</t>
        </li>
        <li>
          <t>The evidence identifies the effect only if <tt>CAID-effect</tt> and
<tt>CAID-evidence</tt> are equal as octet strings. Any other outcome, including
a refused carried derivation in step 3, <bcp14>MUST</bcp14> be treated as a refusal
(<tt>caid-mismatch</tt>) and <bcp14>MUST NOT</bcp14> be downgraded to a warning.</t>
        </li>
      </ol>
      <t>Note that step 2 makes the comparison self-strengthening: equality between
a self-derived <tt>CAID-effect</tt> and a carried-basis <tt>CAID-evidence</tt> is itself
a recomputation of the token's <tt>adg</tt> against the executor's view of the
effect. The carried basis is weak only where matching does not happen, for
example when a CAID is stored or forwarded for audit without being
compared; such a value retains only signature strength and <bcp14>MUST</bcp14> be marked
as carried wherever that distinction is visible.</t>
    </section>
    <section anchor="named-human">
      <name>The Named-Human Binding</name>
      <section anchor="what-a-validated-token-asserts">
        <name>What a validated token asserts</name>
        <t>The core document records, at enrollment, a subject identifier bound to
the enrolled key, and requires the <tt>sub</tt> claim in every token. This
profile makes the linkage load-bearing. A token validated under this
profile asserts:</t>
        <t>the subject recorded at enrollment and named by <tt>sub</tt>, in control of the
enrolled hardware-bound key identified by <tt>cnf.jkt</tt>, approved the specific
action identified by the CAID, having been shown the disclosure whose
digest <tt>dsp</tt> carries, on a device whose runtime integrity was assessed as
the <tt>int</tt> claim reports.</t>
      </section>
      <section anchor="subject-verification">
        <name>Subject verification</name>
        <t>A verifier operating under this profile <bcp14>MUST</bcp14> refuse a token
(<tt>sub-mismatch</tt>) when <tt>sub</tt> is absent, is not a string, or is not equal to
the subject identifier recorded at enrollment for the key that verified
the signature.</t>
        <t>This check is <bcp14>REQUIRED</bcp14>. Without it, a token signed by one enrolled key may
assert any subject whatsoever: every cryptographic check passes, the key
is authorized, and the named human is fiction. <xref target="sec-subject"/> records the
implementation experience behind this requirement.</t>
      </section>
      <section anchor="what-the-binding-does-not-assert">
        <name>What the binding does not assert</name>
        <t>The binding deliberately asserts nothing beyond the statement above. In
particular:</t>
        <ul spacing="normal">
          <li>
            <t>It is not a per-signature user-verification ceremony. The approval step
precedes the signature; no claim attests a biometric or knowledge-factor
ceremony for each individual signature. A relying party that requires
per-signature user verification composes it alongside this profile; this
profile will not fold it into the core semantics.</t>
          </li>
          <li>
            <t>It does not assert comprehension or legal consent. A valid <tt>dsp</tt> proves
which octets were displayed and signed, not that they were understood.
This limit is inherited from the core document unchanged.</t>
          </li>
          <li>
            <t>It does not strengthen the <tt>int</tt> claim. A device-asserted integrity
verdict retains exactly the limits the core document states.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="sec-one-derivation">
        <name>One derivation or none</name>
        <t>The interoperability property this profile buys is deliberately fragile in
one direction: two implementations that disagree on any canonicalization
detail, escaping, ordering, or version, produce disjoint CAID spaces and
refuse each other's identifiers. The failure mode of divergence is
<tt>caid-mismatch</tt>, which denies. Nothing about the construction can turn a
divergence into an acceptance.</t>
      </section>
      <section anchor="sec-carried">
        <name>Carried derivations</name>
        <t>The carried form of <xref target="derivation"/> is a convenience for parties that
cannot recompute, and it is exactly as strong as the signature over the
token that carried it. The matching procedure of <xref target="matching"/> restores
recomputation strength wherever it is actually applied. Deployments <bcp14>SHOULD</bcp14>
treat an unmatched carried CAID, for example in logs or forwarded
evidence, as a claim by the device rather than a fact about any effect.</t>
      </section>
      <section anchor="sec-subject">
        <name>The subject check</name>
        <t>The reference implementation, prior to this profile, validated enrollment,
signature, thumbprint, freshness, replay, all three bindings, and the
integrity claim, and did not compare <tt>sub</tt> against the enrollment record.
A token signed by an enrolled key claiming a different subject passed
every check. The defect was found while implementing this profile's
named-human semantics, was fixed by the refusal <xref target="subject-verification"/>
requires, and is now exercised by a published refusal vector (the
named-human substitution case in the implementation's adversarial corpus,
and <xref target="vectors"/>).</t>
        <t>The lesson generalizes: the named-human binding is precisely as strong as
the weakest link between <tt>sub</tt>, the enrollment record, and the key. A
deployment that enrolls keys without recording a verified subject
identifier has nothing for this check to bind, and the assertion of
<xref target="named-human"/> silently degrades to "some enrolled key approved this".
Enrollment procedures <bcp14>SHOULD</bcp14> therefore verify the subject identifier they
record.</t>
      </section>
      <section anchor="namespace-separation">
        <name>Namespace separation</name>
        <t>The fixed leading literal exists so that an OASNT-derived identifier can
never be confused with an identifier derived by another evidence profile
that also feeds an executor. Executors handling multiple evidence profiles
<bcp14>SHOULD</bcp14> treat the full octet string, prefix included, as the identifier and
compare nothing shorter.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions. The literal <tt>oasnt:caid:</tt> is a fixed
string defined by this document; it is not a URI scheme, not a URN
namespace, and no registration is requested.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.thallapelly-oasnt">
          <front>
            <title>OASNT: Attested Action Authorization Tokens</title>
            <author fullname="Arun Thallapelly" initials="A." surname="Thallapelly">
              <organization>OmniArx</organization>
            </author>
            <date day="24" month="July" year="2026"/>
            <abstract>
              <t>   This document defines the OASNT token, a compact JWS-based credential
   in which a hardware-bound device key attests that a specific human,
   on a device whose runtime integrity was assessed, authorized one
   specific action whose human-readable disclosure is cryptographically
   bound to the token (What You See Is What You Sign).  Tokens are
   single-use, short-lived, and may additionally be bound to one
   concrete HTTP request.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-thallapelly-oasnt-01"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </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="I-D.schrock-action-evidence-boundary">
          <front>
            <title>The Action Evidence Boundary for Consequential Agent Effects</title>
            <author fullname="Iman Schrock" initials="I." surname="Schrock">
              <organization>EMILIA Protocol, Inc.</organization>
            </author>
            <date day="21" month="July" year="2026"/>
            <abstract>
              <t>   Consequential agent actions can cross identity, transport,
   authorization, policy, and execution systems.  Each system can
   produce a valid artifact while the executor still lacks a safe rule
   for joining the artifacts to the exact effect, consuming one-time
   authority, and handling an uncertain outcome.  This document defines
   the Action Evidence Boundary (AEB), an executor-side processing model
   for that lifecycle.

   AEB requires native artifact verification, Canonical Action
   Identifier (CAID) matching, Authorization Evidence Chain (AEC)
   satisfaction, a separate local authorization decision, durable atomic
   consumption or reservation, invocation, closed effect outcomes, and
   authenticated reconciliation.  It defines no receipt or token format,
   no policy language, no universal evidence taxonomy, and no new
   registry.  Native workload credentials, message signatures, attested
   per-action tokens, permit records, authorization receipts, and status
   mechanisms retain their own semantics and verifiers.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-schrock-action-evidence-boundary-00"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
      </references>
    </references>

<section anchor="vectors">
      <name>Test Vectors</name>
      <t>The derivation vectors below are byte-reproducible: they are generated
from the shipped canonicalization by <tt>docs/ietf/caid/gen-vectors-caid.mjs</tt>
in the implementation repository, and unlike the signature vectors of the
core document they involve no randomness. The named-human refusal vector
involves an ECDSA signature and is verified rather than compared.</t>
      <section anchor="p1-caid-derivation">
        <name>P1: CAID derivation</name>
        <t>Action type <tt>payment.transfer</tt>, parameters <tt>amount=100.00</tt>, <tt>payee=acct_9</tt>.</t>
        <artwork><![CDATA[
canonical action  payment.transfer|amount=100.00&payee=acct_9
adg               YlHp3M4JIWFPPZIVAwAmYOBOMfUyb2bjE6ve3AD2iaQ
CAID              oasnt:caid:1:YlHp3M4JIWFPPZIVAwAmYOBOMfUyb2bjE6ve3AD2iaQ
]]></artwork>
        <t>This vector is deterministic: any conforming implementation reproduces
these exact octets.</t>
      </section>
      <section anchor="p2-caid-mismatch">
        <name>P2: CAID mismatch</name>
        <t>The evidence above is presented for a different effect: <tt>amount=9000.00</tt>,
<tt>payee=acct_EVIL</tt>.</t>
        <artwork><![CDATA[
executing canonical action  payment.transfer|amount=9000.00&payee=acct_EVIL
CAID-effect                 oasnt:caid:1:EWy_PVFw3FxdZIk6AEpEJ5HxhAsCJQnSq7P1jPHg6gc
CAID-evidence               oasnt:caid:1:YlHp3M4JIWFPPZIVAwAmYOBOMfUyb2bjE6ve3AD2iaQ
]]></artwork>
        <t>The octet strings differ; the outcome is a refusal (<tt>caid-mismatch</tt>).</t>
      </section>
      <section anchor="p3-carried-form-refusals">
        <name>P3: carried-form refusals</name>
        <t>Each of the following values <bcp14>MUST</bcp14> be refused by the carried form of the
derivation rather than prefixed:</t>
        <artwork><![CDATA[
""                                             (empty)
"short"                                        (wrong length)
42 or 44 characters of the base64url alphabet  (wrong length)
43 characters ending in "="                    (padding)
any character outside ALPHA / DIGIT / "-" / "_"
]]></artwork>
      </section>
      <section anchor="p4-named-human-refusal-verified-not-compared">
        <name>P4: named-human refusal (verified, not compared)</name>
        <t>A token signed by the core document's published test key, with every claim
valid except <tt>sub</tt>, which names <tt>mallory</tt> while enrollment records
<tt>agent-1</tt> for the key. Verification refuses with <tt>sub-mismatch</tt> and no
other reason. The signature is not byte-reproducible; regenerate and
verify with the tool named above.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The composition questions raised by Iman Schrock on the WIMSE mailing
list, in particular whether the <tt>adg</tt>-to-CAID derivation should be fixed
normatively or left to each executor adapter, prompted this profile.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA51b23IbR5J9r6+ohSLGlAKARYqjsaHxzMISNaJDF1rUJTwT
E2ahuwCW2OhudzUIYWn6W/Zb9sv2ZGZVoRugNbOrBwlodN3ycvJkZmk0GqnW
tYWd6MGb6fnrd6On09NnE/3UlFXpMlPoada6qtSnuS1bN3e20c9s464NPzVl
rttLq1+bpc1HL1ZLU+rvXZm7cjFQZjZr7HVv4oHKq6zEyxOdN2bejtpLUxSm
tkWxGVXGl+0oMy4fPXyoMtPaRdVsJtq3uXJ1M9Fts/Lt0cOH3z48UqaxBlOf
22zVuHYzUFd2s66afKL/YdrW+pY3ONRm1V5Wjfuv8JU2MdT2M4a1VTPUy2rm
CovXFjjePxWGlfnPpqhK7HBjvaodJmyrbKh91bSNnXt82izpwz+VzD1ReqRd
6Sd6OtbvtudRWms56rRZlbu/VM3ClGFbE/1mWbpp85l+sEvjiok2GPOfJr+G
bszMj7NqqcqqWeL9a4sV9eno2XhPePTD2+dPjx8ffxM+Pj56dDxRrpzvjvXZ
ZVNlVyPD6h3ZawcFZ3Y0q1ZlbiB2Gf/o228eT9QIVkJ/aWylbTBEqXeXzmso
c7WE4HTdVHPI0WtWtW6rK1t6jUV1VpV+tazZWmabJPmRx3oKwzLrPawFisht
4cf6tNVz9xkzQQU6nVjnW5ur5trs2afq2OcBKfm+njfVko1T9iQH1blbwDhI
nfjNtNpe22a7LZVd2uzK8zAP3XXXbQyeNjSq1NZkl9A5LLSRH3M7dyWdw7XY
+rocKnIN12pf24y2FeaEdrHNzNMp6AFL6ivPhpKPLtmBZuJAQ6gtK1b0EQf2
q9knm8FhqpEtm6ooWO68Xb2+rLwl3ZAGMS00ExSil+YKSxsFg115U4xFjUuX
54VV6p4+LdumylciQ3Vzc6dZ3d7qAxzdwmEhgAHtO6sam9Q/uC/nD4dkeSs+
GewYry5rCF//8PEcIsNmHWRn9KVp8jW8WCwOE1w7bB5erMV/vejHqCDBTIt0
okPbnE0k/Sr6Heq1ay95G7nzWVH5VUMisUpGr43X/hIK0rIsdFiJZtyiNC1e
Jh/eOR82V7iZhaotnNe3VQ2Rtlv9sdXmFY5fVm0QhcYimiwlQc2luSZV5thv
js23lTL50pEFiuuRSXgyRxj1FUwASOOiUYtggwkHu5VRKsnDQ7knXffSe+4F
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
NgAA

-->

</rfc>
