<?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-01" 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
AS65000 and AS65001.</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
dRzsDoixFrvIzi4h2qX7Lfdb7pfd090zsy98seyq1KXKCrHY6en3frpnMJ1O
lW9Mmf+XKarSznVTt1a5Xc1/+eb48PCrw2OVmWauXbmulG9XW+e9q8rmdof3
T0/efq1Mbc1cq/31XKm8ykqzxTd5bdbNtK627sdyel1X+2m988W0ttfON/Xt
1GfVzubTrd2ubO2nh0eq3eWmsX6uj784Pp7oZ4dHx0o1rilA7TIs07JMh2V6
XdX68s3yTHvb6Gr1o80ar8xqVdubX7moMOX1XNtSvdvPldZTTewq0zabqp6r
KcQHZ8uZvmSJ8IaIuTR+Y7qHVX1N+xbOrIpb/aLKbY6nmWtu53qx9Y2tc7Ol
J1VbgrO5vjjDJ7s1rphrT7T+UofVGS2elUXc+28z/dyWvrC3afO/4V/fe8q7
n5bYZVa48p3+63b1Co+hA2thwefV+425tqWt9bKpZ/rLQ+YkB6Wjw+NnnydO
n9sa6/tsvjzp2PyRdv2LS9sopcqq3prG3VhS3eXXL8iC8c8/HH8e/iSLzhX5
UXpbTadTbVbg0GSNUm83zmu4ULu1ZaODQ0SCGn4ayegVrLqzmVvfuvJaX/k6
i650NVFGl3avTdPUbtU2VlelNn5K1iYSdYVn9EkF20O/utlYWLFtiNqbqnDZ
rV4yfQfnh7vrM/hHC+3pJ+Q6T2fCa7eHKYpqjweBLZfp6Oq6qfTK6tyuXQkv
JO+zJtsEd4Q+aJFtJtrcVC4nBnZ1tSos6SjTZrty1y3MovcbW4Kor4obeonE
CSLP1IIlvjGFy4Xdui0ST9e1yVtTQJ/0FxRKWliZ7N3e1LmHkbc7LFq5ArvM
xCRbl+eFVeoTcqe6ytuMqJKBfp2a9M8/B+t9+BA04EnX6j57xFicaPu+sSXc
nyzDFMjmHz6Q0q2HXDX+21bggcy2rXxDQuCBHlmUY6EE5chzSglPTi8vn2p/
i5DcRrJgAdowpbYOi2voem1rW2bYTOeuBuGgcF2tmTz50BPfwpaGlKoXS122
9MJEn76BFSHvewjTZLOnEwSnNnnuSEuwBe+13zisBaWtt8UNNLMxN1bhs8MW
+3K4KZvts6rP1i25QFUL5/Af0hdU7JoWMp2WelU1GwjkLb5syF3jUlJF68UU
+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
Bz4dOBEsJyWE3wSR96v/A4E764gyOAAA

-->

</rfc>

