<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-liu-sidrops-rrdp-delta-retention-policy-01" category="info" submissionType="IETF" xml:lang="en" updates="8182" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="RRDPDR">RPKI Repository Delta Protocol (RRDP) Delta File Retention Policy</title>
    <seriesInfo name="Internet-Draft" value="draft-liu-sidrops-rrdp-delta-retention-policy-01"/>
    <author initials="L." surname="Liu" fullname="Libin Liu">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>liulb@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="Z." surname="Yan" fullname="Zhiwei Yan">
      <organization>CNNIC</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>yanzhiwei@cnnic.cn</email>
      </address>
    </author>
    <author initials="L." surname="Chen" fullname="Li Chen">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>lichen@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="D." surname="Li" fullname="Dan Li">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>tolidan@tsinghua.edu.cn</email>
      </address>
    </author>
    <date year="2025" month="November" day="25"/>
    <area>Operations and Management [REPLACE]</area>
    <workgroup>SIDROPS</workgroup>
    <abstract>
      <?line 50?>

<t>This document updates RFC 8182 (The RPKI Repository Delta Protocol) by specifying an optimized delta file retention policy based on client access patterns. The proposed mechanism allows RRDP servers to maintain only the delta files required by active clients, reducing storage requirements while maintaining compatibility with existing clients. By tracking which serial numbers are being requested by active clients, the repository can determine the minimum serial number needed by any client and safely prune delta files that update from earlier serial numbers.</t>
      <t>The proposed mechanism provides several benefits, including reduced storage requirements, smaller notification files, and more efficient use of bandwidth and processing resources. It also maintains backward compatibility with existing RRDP clients, requiring no changes to client implementations.</t>
    </abstract>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The RPKI Repository Delta Protocol (RRDP) <xref target="RFC8182"/> defines a mechanism for publishers to make available a set of current repository objects, and for relying parties to maintain a local copy of this repository that is periodically updated to match the published repository.</t>
      <t>RFC 8182 specifies that repository must maintain a set of delta files that allow relying parties to update from any recent state to the current state. It proposes a size-based delta file retention strategy, stating that "Any older Delta Files that, when combined with all more recent Delta Files, will result in the total size of deltas exceeding the size of the snapshot <bcp14>MUST</bcp14> be excluded to avoid that Relying Parties download more data than necessary.". However, as the number of existing RPKI objects grows and more are proposed, the snapshot file size increases significantly, requiring more delta files to be stored. This leads to higher storage costs and potential performance issues.
Consequently, practical implementations have adopted various strategies to mitigate these issues, such as count-based limits (maintaining a fixed number of delta files) and time-based limits (retaining delta files only for a specified duration).</t>
      <t>This document updates RFC 8182 by defining an adaptive delta file retention policy based on client access patterns. The key insight is that repositories need only maintain delta files that might be used by active relying parties. By tracking the minimum serial number accessed by active clients, repositories can safely prune older delta files that are no longer needed, while ensuring that all active clients can still perform incremental updates. This adaptive approach can be integrated with existing size-based delta file retention strategy <xref target="RFC8182"/> to provide a more comprehensive solution.</t>
      <t>This approach provides several benefits:</t>
      <ol spacing="normal" type="1"><li>
          <t>Reduced storage requirements for RRDP servers;</t>
        </li>
        <li>
          <t>Improved efficiency in delta file management;</t>
        </li>
        <li>
          <t>Maintained backward compatibility with existing RRDP clients;</t>
        </li>
        <li>
          <t>Potential performance improvements for notification file processing;</t>
        </li>
        <li>
          <t>Better adaptation to actual client update patterns.</t>
        </li>
      </ol>
      <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="background">
      <name>Background</name>
      <t>This section reviews existing delta file retention strategies and illustrates their potential limitations.</t>
      <section anchor="existing-delta-file-retention-strategies">
        <name>Existing Delta File Retention Strategies</name>
        <t>Section 3.3.2 of RFC 8182 mandates that servers limit the number of deltas in the notification file such that the combined size of the underlying delta files does not exceed that of the snapshot file.  Servers are free to further limit the number of deltas included in the notification file, though.  Two common strategies are:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Count-based retention</strong>: Maintaining a fixed number of most recent delta files (e.g., the last 500 delta files). This approach is simple to implement but does not account for varying delta file sizes or client access patterns, and may lead to frequently downloading the full snapshot for clients.</t>
          </li>
          <li>
            <t><strong>Time-based retention</strong>: Keeping delta files for a specified time period (e.g., 2 hours). This approach ensures clients that update regularly can use delta files, but may not be optimal for clients with irregular update schedules and may also lead to frequently downloading the full snapshot for clients.</t>
          </li>
        </ol>
        <t>These strategies are typically implemented as configuration options in RRDP server software, allowing repository operators to choose the approach that best fits their needs.</t>
      </section>
      <section anchor="challenges-with-current-strategies">
        <name>Challenges with Current Strategies</name>
        <t>While the existing retention strategies provide some guidance, they have several limitations:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Size-based retention</strong>:
            </t>
            <ul spacing="normal">
              <li>
                <t>Does not consider client access patterns;</t>
              </li>
              <li>
                <t>Can lead to inefficient storage use if many small delta files are retained when they are no longer needed. This issue may be exacerbated when the snapshot size grows along with the number increasement of existing objects and the addition of more new objects.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Count-based retention</strong>:
            </t>
            <ul spacing="normal">
              <li>
                <t>Arbitrary fixed limits may not match actual client needs;</t>
              </li>
              <li>
                <t>Does not adapt to changing repository update frequencies;</t>
              </li>
              <li>
                <t>May discard delta files that are still needed by active clients.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Time-based retention</strong>:
            </t>
            <ul spacing="normal">
              <li>
                <t>Does not account for varying client update frequencies and may retain too many files during periods of frequent updates or too few during periods of infrequent updates;</t>
              </li>
              <li>
                <t>May retain files longer than necessary if no clients need them;</t>
              </li>
              <li>
                <t>May discard delta files that are still needed by active clients.</t>
              </li>
            </ul>
          </li>
        </ol>
        <t>These challenges highlight the need for a more adaptive approach to delta file retention that considers actual client behavior while maintaining compatibility with existing client implementations.</t>
      </section>
    </section>
    <section anchor="adaptive-delta-file-retention-policy">
      <name>Adaptive Delta File Retention Policy</name>
      <t>This document defines an adaptive delta file retention policy based on client access patterns. The key principle is that repositories need only maintain delta files that might be used by active relying parties. This approach would not like to replace the existing size-based retention strategy proposed in RFC 8182 and can be integrated with it to make RRDP work in a more efficient and adaptive manner.</t>
      <t>The policy consists of three main components:</t>
      <ol spacing="normal" type="1"><li>
          <t>A client tracking mechanism that records the serial numbers accessed by clients;</t>
        </li>
        <li>
          <t>A method for determining the minimum serial number needed by active clients;</t>
        </li>
        <li>
          <t>An algorithm for pruning delta files that are no longer needed.</t>
        </li>
      </ol>
      <t>By implementing this policy, RRDP repositories can reduce storage requirements while ensuring that all active clients can perform incremental updates.</t>
      <section anchor="client_tracking">
        <name>Client Tracking Mechanism</name>
        <t>To implement the adaptive delta file retention policy, RRDP repositories <bcp14>MUST</bcp14> track the serial numbers accessed by clients. This can be accomplished by monitoring client requests for delta files.</t>
        <t>When a client requests a delta file, it typically does so by first retrieving the notification file, identifying the appropriate delta file based on its current local serial number, and then requesting that specific delta file.</t>
        <t>Repositories <bcp14>SHOULD</bcp14> maintain a data structure that records:</t>
        <ol spacing="normal" type="1"><li>
            <t>Client identifiers (e.g., IP addresses or anonymized identifiers);</t>
          </li>
          <li>
            <t>The serial numbers requested by each client;</t>
          </li>
          <li>
            <t>Timestamps of the most recent requests.</t>
          </li>
        </ol>
        <t><xref target="data_structure"/> shows an example for the data structure to record RRDP clients.</t>
        <figure anchor="data_structure">
          <name>An example for the data structure to record RRDP clients.</name>
          <artwork><![CDATA[
| Client ID | Serial Number |       Last Access Time       |
|-----------|---------------|------------------------------|
| Client A  |       42      | July 10, 2025, at 12:00PM UTC|
| Client B  |       37      | July 11, 2025, at 08:30AM UTC|
| Client C  |       45      | July 11, 2025, at 14:15PM UTC|
]]></artwork>
        </figure>
        <t>Repositories <bcp14>MAY</bcp14> implement more sophisticated tracking mechanisms, such as:</t>
        <ul spacing="normal">
          <li>
            <t>Using probabilistic data structures (e.g., Bloom filters) to efficiently track large numbers of clients;</t>
          </li>
          <li>
            <t>Implementing privacy-preserving techniques to avoid storing identifiable client information.</t>
          </li>
        </ul>
        <t>Repositories <bcp14>SHOULD</bcp14> periodically clean this data structure to remove entries for clients that have not been seen for a configurable period (e.g., 7 days). This helps ensure that the minimum serial number calculation is based only on active clients.</t>
      </section>
      <section anchor="min_serial">
        <name>Minimum Serial Number Determination</name>
        <t>Based on the client tracking data, repositories can determine the minimum serial number needed by active clients. This is the smallest serial number that any active client might need to update from.</t>
        <t>The algorithm for determining the minimum serial number is as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Initialize min_serial to the current repository serial number;</t>
          </li>
          <li>
            <t>For each active client in the tracking data: 
a. If the client's serial number is less than min_serial, update min_serial to the client's serial number;</t>
          </li>
          <li>
            <t>Return min_serial.</t>
          </li>
        </ol>
        <t>For example, using the client tracking data from the previous section:</t>
        <ul spacing="normal">
          <li>
            <t>Current repository serial number: 50;</t>
          </li>
          <li>
            <t>Client A's serial number: 42;</t>
          </li>
          <li>
            <t>Client B's serial number: 37;</t>
          </li>
          <li>
            <t>Client C's serial number: 45;</t>
          </li>
          <li>
            <t>Minimum serial number: 37.</t>
          </li>
        </ul>
        <t>Repositories <bcp14>SHOULD</bcp14> recalculate the minimum serial number:</t>
        <ul spacing="normal">
          <li>
            <t>Whenever a new delta file is created;</t>
          </li>
          <li>
            <t>Periodically (e.g., daily) to account for client tracking data cleanup;</t>
          </li>
          <li>
            <t>Before any delta file pruning operation.</t>
          </li>
        </ul>
        <t>Repositories <bcp14>MAY</bcp14> implement a safety margin by subtracting a small value from the calculated minimum serial number. This helps ensure that clients that have recently become active but have not yet requested a delta file can still perform incremental updates.</t>
      </section>
      <section anchor="delta_pruning">
        <name>Delta File Pruning Algorithm</name>
        <t>Once the minimum serial number has been determined, repositories can safely prune delta files that are no longer needed. A delta file is no longer needed if it allows updating from a serial number that is less than the minimum serial number.</t>
        <t>The algorithm for delta file pruning is as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Determine the minimum serial number (min_serial) as described in <xref target="min_serial"/>;</t>
          </li>
          <li>
            <t>For each delta file: 
a. Extract the "from" serial number (from_serial) from the delta file metadata; 
b. If from_serial &lt; min_serial, mark the delta file for deletion;</t>
          </li>
          <li>
            <t>Delete all marked delta files;</t>
          </li>
          <li>
            <t>Update the notification file to remove references to the deleted delta files.</t>
          </li>
        </ol>
        <t>For example, if the minimum serial number is 37, delta files that update from serial numbers 1-36 can be safely deleted.</t>
        <t>Repositories <bcp14>MAY</bcp14> implement the following safeguards:</t>
        <ul spacing="normal">
          <li>
            <t>Never delete the most recent N (e.g., 5) delta files, regardless of the minimum serial number calculation;</t>
          </li>
          <li>
            <t>Maintain delta files for a minimum time period before considering them for deletion;</t>
          </li>
          <li>
            <t>Implement a gradual pruning strategy to avoid sudden changes in available delta files.</t>
          </li>
        </ul>
        <t>Publishers <bcp14>MUST</bcp14> ensure that after pruning, the notification file still contains at least one delta element, unless the current serial number is 1.</t>
      </section>
      <section anchor="integration-with-existing-size-based-retention-policy">
        <name>Integration with Existing Size-based Retention Policy</name>
        <t>The adaptive delta file retention policy described in this document <bcp14>MUST</bcp14> be integrated with the size-based retention policy specified in <xref target="RFC8182"/>.</t>
        <t>The integration <bcp14>SHOULD</bcp14> be implemented as follows:</t>
        <ul spacing="normal">
          <li>
            <t>First, determine the minimum set of delta files required by active clients using the adaptive policy;</t>
          </li>
          <li>
            <t>Then, if the total size of these delta files exceeds the snapshot file size, remove older delta files to ensure the total size of retained delta files doe not exceed the size of the snapshot file, as required by <xref target="RFC8182"/>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="server-implementation">
        <name>Server Implementation</name>
        <t>Repositories implementing the adaptive delta file retention policy <bcp14>SHOULD</bcp14> follow these guidelines:</t>
        <ol spacing="normal" type="1"><li>
            <t>Client Tracking:
            </t>
            <ul spacing="normal">
              <li>
                <t>Use efficient data structures for client tracking as described in <xref target="client_tracking"/>;</t>
              </li>
              <li>
                <t>Regularly clean up tracking data for inactive clients.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Configuration Options:
            </t>
            <ul spacing="normal">
              <li>
                <t>Allow configuration of the client inactivity threshold (default: 7 days);</t>
              </li>
              <li>
                <t>Allow configuration of the safety margin for minimum serial number calculation (default: 5).</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Operational Features:
            </t>
            <ul spacing="normal">
              <li>
                <t>Provide monitoring and alerting for delta file management;</t>
              </li>
              <li>
                <t>Log delta file pruning operations;</t>
              </li>
              <li>
                <t>Expose metrics on storage savings and client serial number distribution.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Fallback Mechanisms:
            </t>
            <ul spacing="normal">
              <li>
                <t>Implement mechanisms to recover if delta files are accidentally pruned too aggressively;</t>
              </li>
              <li>
                <t>Consider maintaining an archive of pruned delta files that can be restored if needed.</t>
              </li>
            </ul>
          </li>
        </ol>
        <t>Repositories <bcp14>MAY</bcp14> implement the following optimizations:</t>
        <ul spacing="normal">
          <li>
            <t>Batch delta file pruning operations to reduce the frequency of notification file updates;</t>
          </li>
          <li>
            <t>Implement predictive algorithms to anticipate client behavior and adjust the safety margin accordingly.</t>
          </li>
        </ul>
      </section>
      <section anchor="client-behavior">
        <name>Client Behavior</name>
        <t>No changes to client behavior are required to benefit from the adaptive delta file retention policy. Existing RRDP clients will continue to function as specified in RFC 8182.</t>
      </section>
    </section>
    <section anchor="priv">
      <name>Privacy Considerations</name>
      <t>The client tracking mechanism described in <xref target="client_tracking"/> involves collecting information about client behavior, which raises privacy concerns. Repositories implementing this mechanism <bcp14>SHOULD</bcp14> take steps to protect client privacy:</t>
      <ol spacing="normal" type="1"><li>
          <t>Anonymization:
          </t>
          <ul spacing="normal">
            <li>
              <t>Use anonymized identifiers instead of storing actual IP addresses;</t>
            </li>
            <li>
              <t>Consider using techniques such as IP address hashing with a rotating salt;</t>
            </li>
            <li>
              <t>Ensure that the anonymization method still allows tracking the same client across multiple requests.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Data Minimization:
          </t>
          <ul spacing="normal">
            <li>
              <t>Store only the minimum information needed (client identifier, serial number, timestamp);</t>
            </li>
            <li>
              <t>Do not store additional information such as User-Agent strings or other HTTP headers unless necessary for debugging.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Data Retention:
          </t>
          <ul spacing="normal">
            <li>
              <t>Implement strict data retention policies;</t>
            </li>
            <li>
              <t>Delete tracking data for clients that have not been seen for a configurable period (e.g., 7 days).</t>
            </li>
          </ul>
        </li>
      </ol>
      <t>Repositories <bcp14>MAY</bcp14> implement more sophisticated privacy-preserving techniques, such as differential privacy or secure multi-party computation, to further protect client privacy while still benefiting from the adaptive delta file retention policy.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The adaptive delta file retention policy introduces several security considerations:</t>
      <ol spacing="normal" type="1"><li>
          <t>Denial of Service:
          </t>
          <ul spacing="normal">
            <li>
              <t>An attacker could potentially manipulate the minimum serial number calculation described in <xref target="min_serial"/> by repeatedly requesting delta files with very old serial numbers</t>
            </li>
            <li>
              <t>To mitigate this, repositories <bcp14>SHOULD</bcp14>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Implement rate limiting for delta file requests;</t>
                </li>
                <li>
                  <t>Use anomaly detection to identify suspicious patterns;</t>
                </li>
                <li>
                  <t>Consider weighting client importance based on factors such as reputation or update frequency;</t>
                </li>
                <li>
                  <t>Implement the safeguards described in <xref target="delta_pruning"/> to provide additional protection.</t>
                </li>
              </ul>
            </li>
          </ul>
        </li>
        <li>
          <t>Information Leakage:
          </t>
          <ul spacing="normal">
            <li>
              <t>The client tracking mechanism could potentially leak information about client update patterns;</t>
            </li>
            <li>
              <t>Repositories <bcp14>SHOULD</bcp14> implement the privacy considerations described in <xref target="priv"/> to mitigate this risk.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Consistency:
          </t>
          <ul spacing="normal">
            <li>
              <t>Inconsistent delta file availability across multiple servers could lead to confusion or errors;</t>
            </li>
            <li>
              <t>Repositories <bcp14>SHOULD</bcp14> ensure consistent implementation across all servers.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Fallback Reliability:
          </t>
          <ul spacing="normal">
            <li>
              <t>Clients falling back to snapshot updates more frequently could increase load on servers and networks;</t>
            </li>
            <li>
              <t>Repositories <bcp14>SHOULD</bcp14> monitor fallback frequency and adjust retention policy parameters accordingly.</t>
            </li>
          </ul>
        </li>
      </ol>
      <t>These security considerations do not introduce new vulnerabilities beyond those already present in the RRDP protocol, but they should be carefully addressed in any implementation of the adaptive delta file retention policy.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC8182">
        <front>
          <title>The RPKI Repository Delta Protocol (RRDP)</title>
          <author fullname="T. Bruijnzeels" initials="T." surname="Bruijnzeels"/>
          <author fullname="O. Muravskiy" initials="O." surname="Muravskiy"/>
          <author fullname="B. Weber" initials="B." surname="Weber"/>
          <author fullname="R. Austein" initials="R." surname="Austein"/>
          <date month="July" year="2017"/>
          <abstract>
            <t>In the Resource Public Key Infrastructure (RPKI), Certificate Authorities (CAs) publish certificates, including end-entity certificates, Certificate Revocation Lists (CRLs), and RPKI signed objects to repositories. Relying Parties retrieve the published information from those repositories. This document specifies a new RPKI Repository Delta Protocol (RRDP) for this purpose. RRDP was specifically designed for scaling. It relies on an Update Notification File which lists the current Snapshot and Delta Files that can be retrieved using HTTPS (HTTP over Transport Layer Security (TLS)), and it enables the use of Content Distribution Networks (CDNs) or other caching infrastructures for the retrieval of these files.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8182"/>
        <seriesInfo name="DOI" value="10.17487/RFC8182"/>
      </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:
H4sIAAAAAAAAA7Vb23LbSJJ9Z4T+oVZ+WNshKiTZXnvo3pmWKDtaO5KtleTY
6JmY6CgCRbJaIMBBAVKz1dpv2W/ZL9uTWRcUQJCWZ3odMT0UiLplZZ48eeFw
ONwZmErm6U8yK3I1ElVZq52BXpb80VRHBwd/ODjaGSSyGgmdTwvxTIznKrnd
GdTLVFbKjMS7w3d4w9SThTZGF3m1WmKmsw83H3cGslRyJD4vVSkrfGUE1hIX
MpcztVB5Jf569eHy/Hj84W87g/vZSFyfnV59vrzeGewM0iLJ5QITpaWcVsNM
10Oj07JYmmFZpsthqrJKDktVYRrMPFwWmU5Ww4NDGlzpKsPQq8s/n4krtSyM
ropyJU5pjLgsi6pIikw8v7o6vXzhnn7UmcK7bjpxydPhAJNJqe4wFV49vdoZ
ZDLHPlVOq8i6mhflaGcwhGggiJ2BEHbP53qic/y3pkdFiRF/mRf5bFbLPKnx
hZwUEAi2RN8nulqNxInSP+t8xg+KOq9KPBvPdS7piVpInY0EhJBNvv91lmRy
sq/Sej/hfawt/5e5vlda/CjzsP7406ez8bettpL5rzzR90me62TTYueaNCL/
vU+aYM4nHPVUkpzD4jcGM89rKb7k+k6VuPdvXLjCvacy/75yE0Vr50W5gBbf
qRG9f/VxTIpPn2EwsIz4S2x0OBRyYqpSJhUNvplrI6DTNau9sx2ahM1HPL+Z
q6+o6wsxWQmzVImerrA3WJIolpVe6F9VKtgaxJR0OJiEsCYhJtLgDfydZJoW
l0mijBFLWVWqzM2+oLWXsKyC3luoZC5zbRZCZllxb1jzhVEliRPiEZBTXuF/
mDFbiQpjm8UNVv97rUvMg83i6BCIW9bs4bu0TmjrBscDAviXSSRG3M9p9352
ei0pFtgkTCnD9Yl7Xc2F+kWbir+zk+6LE+wBQr6lh5gimdNetcxEXi8mtGVA
kJgo+pqWU6bq3xwdpGxkn0C8KSRZLnSu+Et80It60Z5e5EqlbsJ8FSQMkDNy
qiCfZVnnbQlVc+kVQEzLYiGULDGs7Ox732pN783g0Z1OMZdRuBWMmahcTTUd
Q+dJVqf2tJA2hvUJe0+YBa6X9l9UeqoTRme7wT3e/qKA2NQUX/GJaqNEMYUq
5em9TnER9A62QZpkFzNFXeKvfXGG82em0RODUcntvSzTrRfKahapCm2WnueF
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
XzaTrAf/Bz/fDeSwQwAA

-->

</rfc>
