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


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-romijn-grow-rpsl-registry-scoped-members-00" category="info" submissionType="IETF" xml:lang="en" updates="2622, 4012">
  <front>
    <title abbrev="Registry scoped members for RPSL set objects">Registry scoped members for RPSL set objects</title>

    <author initials="S." surname="Romijn" fullname="Sasha Romijn">
      <organization>Reliably Coded</organization>
      <address>
        <postal>
          <city>Amsterdam</city>
          <country>NL</country>
        </postal>
        <email>sasha@reliablycoded.nl</email>
      </address>
    </author>
    <author initials="J." surname="Bensley" fullname="James Bensley">
      <organization>Inter.link GmbH</organization>
      <address>
        <postal>
          <street>Boxhagener Str. 80</street>
          <city>Berlin</city>
          <code>10245</code>
          <country>DE</country>
        </postal>
        <email>james@inter.link</email>
      </address>
    </author>

    <date year="2025" month="February" day="21"/>

    
    
    <keyword>rpsl</keyword>

    <abstract>


<?line 40?>

<t>This document updates RFC2622 and RFC4012 by specifying <spanx style="verb">src-members</spanx>,
a new attribute on as-set and route-set
objects in the Routing Policy Specification Language (RPSL).
This attribute allows a specific registry to be defined for each member
in a set, avoiding problematic ambiguity when resolving set members.
A new validation rule allows gradual upgrades and backwards compatibility.</t>



    </abstract>



  </front>

  <middle>


<?line 49?>

<section anchor="introduction"><name>Introduction</name>

<t>The Routing Policy Specification Language (RPSL) <xref target="RFC2622"/> defines the
as-set and route-set objects, extended in <xref target="RFC4012"/>.
These are among the most common objects in the Internet Routing Registry (IRR) system.
These sets can either reference a direct member of the set
(such as an AS number, IP prefix, etc.), or additional sets which themselves have
their own direct members and/or reference yet more sets, ad infinitum.
In both cases, this referencing uses the <spanx style="verb">members</spanx> and <spanx style="verb">mp-members</spanx>
attributes <xref target="RFC4012"/>.
Server and client software can follow these references to 
resolve a set down to its members, a set of prefixes or ASes.</t>

<t>A set may refer to another set by including the primary key in its
<spanx style="verb">(mp-)members</spanx> attribute.
The referred set may be in the same or in another IRR registry.
It is not possible to specify the IRR registry of
the referred set. This can lead to primary key collisions
when resolving a set:</t>

<t><list style="numbers" type="1">
  <t>There are multiple significant IRR registries.</t>
  <t>Sets often reference objects in registries other than the registry the set itself is stored in.</t>
  <t>There is no guaranteed uniqueness of object primary keys amongst the different registries.</t>
  <t>Hence, multiple objects may exist in the IRR system with the same primary key, 
making references to them ambiguous.</t>
  <t>Many IRR servers will mirror data from multiple IRR registries,
meaning that even within a single server, there are usually collisions.</t>
</list></t>

<t>The ambiguity encountered when resolving set members can result in either an
incorrect RPSL object being chosen, because an object with the same primary key
was retrieved from the wrong IRR registry, or the required RPSL object (which does exist)
is not found, because the resolving process didn't try to retrieve the object from
the correct IRR registry.
"Incorrect" and "wrong" in this context meaning: not as intended or expected by the operator.</t>

<t>Including members from the incorrect RPSL object can result in the computation of
unintentional routing policy information, which is then deployed to network infrastructure.
That could cause route leaking, or worse, aid in route hijacking.
This has been seen multiple times on the public Internet.</t>

<t>If intended policies are not included, because the object was not found,
prefixes that should be accepted, are not, and the prefixes are not reachable.</t>

<t>With either case, routing policy information may end up missing and connectivity 
may be disrupted.</t>

<t>There is no current way to prevent such ambiguity during set member resolution,
both for operators who create the legitimate objects and those who try to resolve them.</t>

<t>Two previous enhancements to reduce set name collisions have been standardized.
However, the problem persists:</t>

<t><list style="symbols">
  <t><xref target="RFC2622"/> Section 5.1 defines hierarchical set names, such as <spanx style="verb">AS65000:AS-EXAMPLE</spanx>
which may also have additional authorization requirements for the referred aut-num.
However, this authorization only works within a single IRR registry, and doesn't
allow the correct external IRR to be specified, if the object in question is not
local to the IRR registry storing the referring set.</t>
  <t><xref target="RFC2725"/> Section 9.6 defines external repository (IRR) references.
This allows for the correct IRR registry to be specified for a set member object
by using the SOURCE:: notation however, this syntax isn't supported in the members
field of set objects.</t>
</list></t>

<t>To solve this, this document adds <spanx style="verb">src-members</spanx> to as-set and route-set objects,
using a IRR registry name prefix with a double colon.
For example: "RIPE::AS-EXAMPLE", to refer specifically to an object "AS-EXAMPLE"
in the IRR registry "RIPE". This format is already widely used informally by operators,
including in platforms such as PeeringDB.
Continued availability of existing <spanx style="verb">(mp-)members</spanx> attributes
together with new validation rules, ensures backwards compatibility.</t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
</section>
<section anchor="the-src-members-attribute"><name>The <spanx style="verb">src-members</spanx> attribute</name>

<section anchor="as-set-class"><name>as-set class</name>

<t>The new <spanx style="verb">src-members</spanx> attribute on as-set is similar to the <spanx style="verb">members</spanx> attribute
from <xref target="RFC2622"/>, except that the AS set name <bcp14>MUST</bcp14> be prefixed with a registry name
and a double colon.</t>

<dl newline="true">
  <dt>Attribute:</dt>
  <dd>
    <t><spanx style="verb">src-members</spanx></t>
  </dd>
  <dt>Value:</dt>
  <dd>
    <t>list of ([<spanx style="verb">as-number</spanx>] or [<spanx style="verb">registry-name</spanx>]::[<spanx style="verb">as-set-name</spanx>])</t>
  </dd>
  <dt>Type:</dt>
  <dd>
    <t>optional, multi-valued</t>
  </dd>
</dl>

</section>
<section anchor="route-set-class"><name>route-set class</name>

<t>The new <spanx style="verb">src-members</spanx> attribute on route-set is similar to the <spanx style="verb">mp-members</spanx> attribute 
from <xref target="RFC4012"/>, except that any references to set names <bcp14>MUST</bcp14> 
be prefixed with a registry name and a double colon.</t>

<dl newline="true">
  <dt>Attribute:</dt>
  <dd>
    <t><spanx style="verb">src-members</spanx></t>
  </dd>
  <dt>Value:</dt>
  <dd>
    <t>list of ([<spanx style="verb">ipv4-address-prefix-range</spanx>] or [<spanx style="verb">ipv6-address-prefix-range</spanx>] or [<spanx style="verb">registry-name</spanx>]::[<spanx style="verb">route-set-name</spanx>] or [<spanx style="verb">registry-name</spanx>]::[<spanx style="verb">as-set-name</spanx>] or [<spanx style="verb">as-number</spanx>] or [<spanx style="verb">registry-name</spanx>]::[<spanx style="verb">route-set-name</spanx>][<spanx style="verb">range-operator</spanx>])</t>
  </dd>
  <dt>Type:</dt>
  <dd>
    <t>optional, multi-valued</t>
  </dd>
</dl>

</section>
<section anchor="resolving"><name>Resolving members through <spanx style="verb">src-members</spanx></name>

<t>IRR software that resolves the members of a set <bcp14>MUST</bcp14> have support for
objects with and without <spanx style="verb">src-members</spanx>.
These objects may be encountered if they were created or updated before
adoption of <spanx style="verb">src-members</spanx>, or the objects have not been updated since.</t>

<t>The resolving process is:
1. The resolver <bcp14>MUST</bcp14> include all members listed in the <spanx style="verb">src-members</spanx> attribute,
   if any.
   To find the referenced sets, the resolver <bcp14>MUST</bcp14> match on both the IRR registry
   name and the set's primary key.
   If the IRR registry is unknown to the resolver, no set can match the reference.
1. The resolver <bcp14>MUST</bcp14> include all members listed in the <spanx style="verb">members</spanx> and <spanx style="verb">mp-members</spanx>
   attributes, when their primary key was not already listed in <spanx style="verb">src-members</spanx>.
   If there are multiple sets with a primary key known to the resolver,
   the behavior is not defined by this document as this was a previously 
   existing problem.</t>

<t>Note that the restriction to a specific IRR registry name is only used
to select the correct IRR registry to retrieve the referred object and its
attributes. During recursive resolving, if that set has references to further sets,
those <bcp14>MUST</bcp14> be retrieved from a potentially different registry. This could be either the
registry specified in the <spanx style="verb">src-members</spanx> attribute, if present, or the existing source
selection algorithm the IRR server currently uses when resolving using <spanx style="verb">(mp-)members</spanx>.
In other words, the restriction of the lookup to a specific IRR registry does not cascade.</t>

<section anchor="resolving-example"><name>Resolving example</name>

<figure title="Example objects for recursive lookups and attribute interactions"><sourcecode type="rpsl"><![CDATA[
route-set: RS-FIRST
members: RS-SECOND
mp-members: RS-LEGACY
src-members: RIPE::RS-SECOND
source: EXAMPLE

route-set: RS-SECOND
members: RS-THIRD
source: RIPE

route-set: RS-SECOND
members: AS65002
source: OTHER

route-set: RS-THIRD
members: AS65000
source: OTHER

route-set: RS-LEGACY
members: AS65001
source: OTHER
]]></sourcecode></figure>

<t>To perform a recursive lookup of RS-FIRST, the IRR software will:
1. Look up RS-FIRST.
1. Determine that the members of RS-FIRST are RS-SECOND (RIPE registry only)
   and RS-LEGACY (any registry). The mention of RS-SECOND in the <spanx style="verb">members</spanx>
   attribute is not included, as <spanx style="verb">RS-SECOND</spanx> is already listed in <spanx style="verb">src-members</spanx>.
1. Look up RS-SECOND in RIPE, and RS-LEGACY in any registry.
1. Determine that the members of RS-LEGACY are AS65001, and the members
   of RS-SECOND are RS-THIRD.
1. Look up RS-THIRD in any registry.
1. Determine that the members of RS-THIRD are AS65000.</t>

<t>If all mentioned registries are enabled, RS-FIRST would resolve to
AS64500 and AS64501.</t>

<t>The RS-SECOND object in the OTHER registry is never looked up,
and AS65002 is not included. This would happen even if there was no
RS-SECOND object found in RIPE.</t>

</section>
</section>
</section>
<section anchor="relation-to-mp-members"><name>Relation to <spanx style="verb">(mp-)members</spanx></name>

<t>Existing IRR software will not be aware of the new <spanx style="verb">src-members</spanx> attribute
and instead refer to <spanx style="verb">(mp-)members</spanx>.
This is also why the existing attributes are not modified - this existing software
would consider e.g. <spanx style="verb">RIPE::AS-EXAMPLE</spanx> as the full primary key of a set, and fail
to look up the reference as intended.</t>

<t>Existing IRR objects may also not be updated with <spanx style="verb">src-members</spanx> for some time,
as this cannot be done automatically. Or, they may be partially updated
as for large sets, finding the intended IRR registry references
may take some time.
Deployment in both software and objects will be a gradual process, however,
even partial deployment will reduce the potential for issues from reference
mixups.</t>

<t>In order to keep support for existing IRR software, the contents of
<spanx style="verb">src-members</spanx> must match <spanx style="verb">(mp-)members</spanx> as close as possible,
which the IRR server will ensure.</t>

<section anchor="validation"><name>Additional validation</name>

<t>When an authoritative IRR registry processes a set object with a <spanx style="verb">src-members</spanx>
attribute, it <bcp14>MUST</bcp14> validate that all references in <spanx style="verb">src-members</spanx>, with the registry
names removed, are also listed in <spanx style="verb">members</spanx> or <spanx style="verb">mp-members</spanx>.
All values <bcp14>MUST</bcp14> be combined, regardless if they were listed in
one attribute, or in multiple repetitions of the attribute.</t>

<t>This ensures that the new <spanx style="verb">src-members</spanx> can be used, providing the benefits
for updated resolver software, while still having a consistent <spanx style="verb">(mp-)members</spanx> available
for older software.</t>

<t>IRR registry software is <bcp14>RECOMMENDED</bcp14> to make the <spanx style="verb">src-members</spanx> attribute
mandatory on all new as-set/route-set objects, and <bcp14>MAY</bcp14> make it required when modifying
existing objects.</t>

<t>Example of a valid object:</t>

<figure title="Valid object"><sourcecode type="rpsl"><![CDATA[
route-set: RS-EXAMPLE
members: 192.0.2.0/24
mp-members: 2001:db8::/32
mp-members: RS-OTHER
src-members: 192.0.2.0/24, RIPE::RS-OTHER, 2001:db8::/32
source: EXAMPLE
]]></sourcecode></figure>

<t>Example of an invalid object:</t>

<figure title="Invalid object: inconsistent inclusion of NTTCOM::RS-SRCMBRONLY, and 200:db8::/36 vs /32. Note: the inclusion RS-MPMBRONLY only in mp-members is permitted."><sourcecode type="rpsl"><![CDATA[
route-set: RS-EXAMPLE
members: 192.0.2.0/24
mp-members: 2001:db8::/36
mp-members: RS-OTHER, RS-MPMBRONLY
src-members: 192.0.2.0/24, RIPE::RS-OTHER
src-members: NTTCOM::RS-SRCMBRONLY, 2001:db8::/32
source: EXAMPLE
]]></sourcecode></figure>

</section>
<section anchor="automatic-generation-of-mp-members"><name>Automatic generation of <spanx style="verb">(mp-)members</spanx></name>

<t>Managing multiple copies of the same records is tedious for users.
Therefore, IRR registry software is <bcp14>RECOMMENDED</bcp14> to automatically
fill <spanx style="verb">(mp-)members</spanx>, if not specified by the user, based on <spanx style="verb">src-members</spanx>,
in authoritative objects, when the user creates or updates the object.</t>

<t>Specifically, for authoritative IRR registries:</t>

<t><list style="symbols">
  <t>It is <bcp14>RECOMMENDED</bcp14> that when creating/updating a route-set object
with a <spanx style="verb">src-members</spanx> attribute, but without both a <spanx style="verb">members</spanx> and <spanx style="verb">mp-members</spanx>
attribute, the software fills the <spanx style="verb">mp-members</spanx> attribute automatically with the contents
of <spanx style="verb">src-members</spanx>, with the IRR registry prefix removed from references.</t>
  <t>It is <bcp14>RECOMMENDED</bcp14> that when creating/updating an as-set object
with a <spanx style="verb">src-members</spanx> attribute, but without a <spanx style="verb">members</spanx>
attribute, the software fills the <spanx style="verb">members</spanx> attribute automatically with the contents
of <spanx style="verb">src-members</spanx>, with the IRR registry prefix removed from references.</t>
</list></t>

<t>The registry <bcp14>MAY</bcp14> return an informational message to the user about
the modifications.
The objects <bcp14>MUST NOT</bcp14> be modified if already submitted with any
<spanx style="verb">members</spanx> or <spanx style="verb">mp-members</spanx> attribute, though the <xref target="validation">validation rules noted
earlier</xref> <bcp14>MUST</bcp14> still be applied.
Non-authoritative servers <bcp14>MUST NOT</bcp14> generate <spanx style="verb">members</spanx> or <spanx style="verb">mp-members</spanx>
automatically.</t>

<t>IRR registry software <bcp14>MUST NOT</bcp14> attempt to automatically derive
<spanx style="verb">src-members</spanx> from <spanx style="verb">(mp-)members</spanx>, as this cannot be done reliably.</t>

</section>
<section anchor="multiple-references-to-the-same-primary-key"><name>Multiple references to the same primary key</name>

<t>Adding a IRR registry scope to each reference syntactically allows a new
behavior: having multiple references to the same RPSL primary key.
This is not permitted, and IRR registry software <bcp14>MUST</bcp14> reject this:</t>

<figure title="Invalid object fragment using multiple registry prefixes with the same RPSL primary key"><sourcecode type="rpsl"><![CDATA[
src-members: RIPE::AS-OTHER, ARIN::AS-OTHER
]]></sourcecode></figure>

<t>The IRR registry software <bcp14>MUST</bcp14> verify that, without their registry prefix,
all references from <spanx style="verb">src-members</spanx> are unique.</t>

<t>This reduces ambiguity regarding backwards compatibility with <spanx style="verb">(mp-)members</spanx>
described earlier.
If allowed, the attribute <spanx style="verb">src-members: RIPE::AS-OTHER, ARIN::AS-OTHER</spanx> would
refer to two different sets, whereas the translation <spanx style="verb">mp-members: AS-OTHER</spanx>
only refers to one set.</t>

</section>
</section>
<section anchor="IANA"><name>IANA Considerations</name>

<t>This memo includes no request to IANA.</t>

</section>
<section anchor="Security"><name>Security Considerations</name>

<t>This document removes a potential security issue where routing
policy could be manipulated by maliciously creating set objects,
which could be used in favor of legitimate objects.</t>

<t>While not a new issue, references between set objects can be
circular, and software <bcp14>MUST</bcp14> detect such cases while resolving.
It is <bcp14>RECOMMENDED</bcp14> to also limit the depth or size of their resolving
to prevent excessive resource use.</t>

</section>


  </middle>

  <back>



    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC2622">
  <front>
    <title>Routing Policy Specification Language (RPSL)</title>
    <author fullname="C. Alaettinoglu" initials="C." surname="Alaettinoglu"/>
    <author fullname="C. Villamizar" initials="C." surname="Villamizar"/>
    <author fullname="E. Gerich" initials="E." surname="Gerich"/>
    <author fullname="D. Kessens" initials="D." surname="Kessens"/>
    <author fullname="D. Meyer" initials="D." surname="Meyer"/>
    <author fullname="T. Bates" initials="T." surname="Bates"/>
    <author fullname="D. Karrenberg" initials="D." surname="Karrenberg"/>
    <author fullname="M. Terpstra" initials="M." surname="Terpstra"/>
    <date month="June" year="1999"/>
    <abstract>
      <t>RPSL allows a network operator to be able to specify routing policies at various levels in the Internet hierarchy; for example at the Autonomous System (AS) level. At the same time, policies can be specified with sufficient detail in RPSL so that low level router configurations can be generated from them. RPSL is extensible; new routing protocols and new protocol features can be introduced at any time. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2622"/>
  <seriesInfo name="DOI" value="10.17487/RFC2622"/>
</reference>
<reference anchor="RFC2725">
  <front>
    <title>Routing Policy System Security</title>
    <author fullname="C. Villamizar" initials="C." surname="Villamizar"/>
    <author fullname="C. Alaettinoglu" initials="C." surname="Alaettinoglu"/>
    <author fullname="D. Meyer" initials="D." surname="Meyer"/>
    <author fullname="S. Murphy" initials="S." surname="Murphy"/>
    <date month="December" year="1999"/>
    <abstract>
      <t>The implementation and deployment of a routing policy system must maintain some degree of integrity to be of any operational use. This document addresses the need to assure integrity of the data by providing an authentication and authorization model. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2725"/>
  <seriesInfo name="DOI" value="10.17487/RFC2725"/>
</reference>
<reference anchor="RFC4012">
  <front>
    <title>Routing Policy Specification Language next generation (RPSLng)</title>
    <author fullname="L. Blunk" initials="L." surname="Blunk"/>
    <author fullname="J. Damas" initials="J." surname="Damas"/>
    <author fullname="F. Parent" initials="F." surname="Parent"/>
    <author fullname="A. Robachevsky" initials="A." surname="Robachevsky"/>
    <date month="March" year="2005"/>
    <abstract>
      <t>This memo introduces a new set of simple extensions to the Routing Policy Specification Language (RPSL), enabling the language to document routing policies for the IPv6 and multicast address families currently used in the Internet. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4012"/>
  <seriesInfo name="DOI" value="10.17487/RFC4012"/>
</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>





  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA8VbbXMbx5H+Pr9ijv5gKQXAJCM7NiqXBJLoiCmS0hFyci7b
dRzsDoixFrvIzi4h2qX7Lfdb7pfd090zsy98seyq1KXKCrjY6en3frpnMJ1O
lW9Mmf+XKarSznVTt1a5Xc2ffHN8ePjV4bHKTDPXrlxXyrerrfPeVWVzu8P7
pydvv1amtmau1f56rlReZaXZ4pu8NutmWldb92M5va6r/bTe+WJa22vnm/p2
6rNqZ/Pp1m5XtvbTw0PV7nLTWD/Xx18cH0/0s8OjY6Ua1xSgdhmWaVmmwzK9
rmp9+WZ5pr1tdLX60WaNV2a1qu3Nr1xUmPJ6rm2p3u3nSuupJnaVaZtNVc/V
FOKDs+VMX7JEeEPEXBq/Md3Dqr6mfQtnVsWtflHlNsfTzDW3c73Y+sbWudnS
k6otwdlcX5zhL7s1rphrT7T+UofVGS2elUXc+28z/dyWvrC3afO/4V/fe8q7
n5bYZVa48p3+63b1Co+hA2thwefV+425tqWt9bKpZ/rLQ+YkB6Wjw+NnnydO
n9sa6/tsvjzp2PyRdv2LS9sopcqq3prG3VhS3eXXL8iC8eMfjj8PH8mic0V+
lN5W0+lUmxU4NFmj1NuN8xou1G5t2ejgEJGghp9GMnoFq+5s5ta3rrzWV77O
oitdTZTRpd1r0zS1W7WN1VWpjZ+StYlEXeEZ/aWC7aFf3WwsrNg2RO1NVbjs
Vi+ZvoPzw931Gfyjhfb0E3KdpzPhtdvDFEW1x4PAlst0dHXdVHpldW7XroQX
kvdZk22CO0IftMg2E21uKpcTA7u6WhWWdJRps1256xZm0fuNLUHUV8UNvUTi
BJFnasES35jC5cJu3RaJp+va5K0poE/6BIWSFlYme7c3de5h5O0Oi1auwC4z
McnW5XlhlfqE3Kmu8jYjqmSgX6cm/fPPwXofPgQNeNK1us8eMRYn2r5vbAn3
J8swBbL5hw+kdOshV43/thV4ILNtK9+QEHigRxblWChBOfKcUsKT08vLp9rf
IiS3kSxYgDZMqa3D4hq6Xtvalhk207mrQTgoXFdrJk8+9MS3sKUhperFUpct
vTDRp29gRcj7HsI02ezpBMGpTZ470hJswXvtNw5rQWnrbXEDzWzMjVX422GL
fTnclM32WdVn65ZcoKqFc/gP6Qsqdk0LmU5LvaqaDQTyFl825K5xKami9WIK
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
uy1K1w98OnAiWE5KCL8JIu9X/wfUlB6BMjgAAA==

-->

</rfc>

