<?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.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dekater-scion-controlplane-08" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="SCION CP">SCION Control Plane</title>
    <seriesInfo name="Internet-Draft" value="draft-dekater-scion-controlplane-08"/>
    <author initials="C." surname="de Kater" fullname="Corine de Kater">
      <organization>SCION Association</organization>
      <address>
        <email>c_de_kater@gmx.ch</email>
      </address>
    </author>
    <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
      <organization>SCION Association</organization>
      <address>
        <email>nic@scion.org</email>
      </address>
    </author>
    <author initials="S." surname="Hitz" fullname="Samuel Hitz">
      <organization>Anapaya Systems</organization>
      <address>
        <email>hitz@anapaya.net</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 162?>

<t>This document describes the Control Plane of the path-aware, inter-domain network architecture SCION (Scalability, Control, and Isolation On Next-generation networks). A fundamental characteristic of SCION is that it gives path control to SCION-capable endpoints that can choose between multiple path options, thereby enabling the optimization of network paths. The Control Plane is responsible for discovering these paths and making them available to the endpoints.</t>
      <t>The SCION Control Plane creates and securely disseminates path segments between SCION Autonomous Systems (AS) which can then be combined into forwarding paths to transmit packets in the data plane. This document describes mechanisms of path exploration through beaconing and path registration. In addition, it describes how Endpoints construct end-to-end paths from a set of possible path segments through a path lookup process.</t>
      <t>This document contains new approaches to secure path aware networking. It is not an Internet Standard, has not received any formal review of the IETF, nor was the work developed through the rough consensus process. The approaches offered in this work are offered to the community for its consideration in the further evolution of the Internet.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://scionassociation.github.io/scion-cp_I-D/draft-dekater-scion-controlplane.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-dekater-scion-controlplane/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/scionassociation/scion-cp_I-D"/>.</t>
    </note>
  </front>
  <middle>
    <?line 171?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>SCION is a path-aware internetworking routing architecture as described in <xref target="RFC9217"/>. It allows endpoints and applications to select paths across the network to use for traffic, based on trustworthy path properties. SCION is an inter-domain network architecture and is therefore not concerned with intra-domain forwarding.</t>
      <t>SCION has been developed with the following goals:</t>
      <t><em>Availability</em> - to provide highly available communication that can send traffic over paths with optimal or required characteristics, quickly handle inter-domain link or router failures (both on the last hop or anywhere along the path) and provide continuity in the presence of adversaries.</t>
      <t><em>Security</em> - to introduce a new approach to inter-domain path security that leverages path awareness in combination with a unique trust model. The goal is to provide higher levels of trustworthiness in routing information to prevent traffic hijacking, and enable users to decide where their data travels based on routing information that can be unambiguously attributed to an AS, ensuring that packets are only forwarded along authorized path segments. A particular use case is to enable geofencing. Security properties are further discussed in <xref target="security-properties"/>.</t>
      <t><em>Scalability</em> - to improve the scalability of the inter-domain control plane and data plane, avoiding existing limitations related to convergence and forwarding table size. The advertising of path segments is separated into a beaconing process within each Isolation Domain (ISD) and between ISDs which incurs minimal overhead and resource requirements on routers.</t>
      <t>SCION relies on three main components:</t>
      <t><em>PKI</em> - To achieve scalability and trust, SCION organizes existing ASes into logical groups of independent routing planes called <em>Isolation Domains (ISDs)</em>. All ASes in an ISD agree on a set of trust roots called the <em>Trust Root Configuration (TRC)</em> which is a collection of signed root certificates in X.509 v3 format <xref target="RFC5280"/>. The ISD is governed by a set of <em>core ASes</em> which typically manage the trust roots and provide connectivity to other ISDs. This is the basis of the public key infrastructure which the SCION Control Plane relies upon for the authentication of messages that is used for the SCION Control Plane. See <xref target="I-D.dekater-scion-pki"/></t>
      <t><em>Control Plane</em> - performs inter-domain routing by discovering and securely disseminating path information between ASes. The core ASes use Path-segment Construction Beacons (PCBs) to explore intra-ISD paths, or to explore paths across different ISDs.</t>
      <t><em>Data Plane</em> - carries out secure packet forwarding between SCION-enabled ASes over paths selected by endpoints. A SCION border router reuses existing intra-domain infrastructure to communicate to other SCION routers or SCION endpoints within its AS. See <xref target="I-D.dekater-scion-dataplane"/></t>
      <t>This document describes the SCION Control Plane component. It should be read in conjunction with the other components <xref target="I-D.dekater-scion-pki"/> and <xref target="I-D.dekater-scion-dataplane"/>.</t>
      <t>The SCION architecture was initially developed outside of the IETF by ETH Zurich with significant contributions from Anapaya Systems. It is deployed in the Swiss finance sector to provide resilient connectivity between financial institutions. The aim of this document is to document the existing protocol specification as deployed, to encourage interoperability among implementations, and to introduce new concepts that can potentially be further improved to address particular problems with the current Internet architecture. This document is not an Internet Standards Track specification; it does not have IETF consensus and it is published for informational purposes.</t>
      <t>Note (to be removed before publication): this document, together with the other components <xref target="I-D.dekater-scion-pki"/> and <xref target="I-D.dekater-scion-dataplane"/>, deprecates <xref target="I-D.dekater-panrg-scion-overview"/>.</t>
      <section anchor="terms">
        <name>Terminology</name>
        <t><strong>Autonomous System (AS)</strong>: An Autonomous System is a network under a common administrative control. For example, the network of an Internet service provider, company, or university can constitute an AS.</t>
        <t><strong>Beaconing</strong>: The Control Plane process where an AS discovers paths to other ASes.</t>
        <t><strong>Control Plane</strong>: The SCION Control Plane is responsible for the propagation and discovery of network paths, i.e., for the exchange of routing information between SCION nodes. The Control Plane thus determines where traffic can be sent and deals with questions such as how paths are discovered, which paths exist, how they are disseminated to endpoints, etc. Within a SCION AS, such functionalities are carried out by the Control Service whereas packet forwarding is a task carried out by the data plane.</t>
        <t><strong>Control Service</strong>: The Control Service is the main control plane infrastructure component within a SCION AS. It is responsible for the path exploration and registration processes that take place within the Control Plane.</t>
        <t><strong>Core AS</strong>: Each Isolation Domain (ISD) is administered by a set of distinguished autonomous systems (ASes) called core ASes, which are responsible for initiating the path-discovery and -construction process (in SCION called "beaconing"). Each ISD <bcp14>MUST</bcp14> have at least one Core AS.</t>
        <t><strong>Endpoint</strong>: An endpoint is the start or the end of a SCION path, as defined in <xref target="RFC9473"/>.</t>
        <t><strong>Forwarding Path</strong>: A forwarding path is a complete end-to-end path between two SCION endpoints which is used to transmit packets in the data plane. It can be created with a combination of up to three path segments (an up segment, a core segment, and a down segment).</t>
        <t><strong>Hop Field (HF)</strong>: Hop Field (HF): As they traverse the network, Path Segment Construction Beacons (PCBs) accumulate cryptographically protected AS-level path information in the form of Hop Fields. In the data plane, Hop Fields are used for packet forwarding: they contain the incoming and outgoing interface IDs of the ASes on the forwarding path.</t>
        <t><strong>Info Field (INF)</strong>: Info Field (INF): Each Path Segment Construction Beacon (PCB) contains a single Info field, which provides basic information about the PCB. Together with Hop Fields (HFs), these are used to create forwarding paths.</t>
        <t><strong>Isolation Domain (ISD)</strong>: Isolation Domain (ISD): In SCION, Autonomous Systems (ASes) are organized into logical groups called Isolation Domains or ISDs. Each ISD consists of ASes that span an area with a uniform trust environment (e.g. a common jurisdiction). A possible model is for ISDs to be formed along national boundaries or federations of nations.</t>
        <t><strong>Leaf AS</strong>: An AS at the "edge" of an ISD, with no other downstream ASes.</t>
        <t><strong>MAC</strong>: Message Authentication Code. In the rest of this document, "MAC" always refers to "Message Authentication Code" and never to "Medium Access Control". When "Medium Access Control address" is implied, the phrase "Link Layer Address" is used.</t>
        <t><strong>Path Segment</strong>: Path segments are derived from Path Segment Construction Beacons (PCBs). A path segment can be (1) an up segment (i.e. a path between a non-core AS and a core AS in the same ISD), (2) a down segment (i.e. the same as an up segment, but in the opposite direction), or (3) a core segment (i.e., a path between core ASes). Up to three path segments can be used to create a forwarding path.</t>
        <t><strong>Path Segment Construction Beacon (PCB)</strong>: Core AS control planes generate PCBs to explore paths within their isolation domain (ISD) and among different ISDs. ASes further propagate selected PCBs to their neighboring ASes. These PCBs traverse each AS accumulating information, including Hop Fields (HFs) which can subsequently be used for traffic forwarding.</t>
        <t><strong>SCMP</strong>: A signaling protocol analogous to the Internet Control Message Protocol (ICMP). This is described in <xref target="scmp"/>.</t>
        <t><strong>Trust Root Configuration (TRC)</strong>: A Trust Root Configuration or TRC is a signed collection of certificates pertaining to an isolation domain (ISD). TRCs also contain ISD-specific policies.</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>
        <?line -18?>

</section>
      <section anchor="paths-links">
        <name>Paths and Links</name>
        <t>SCION routers and endpoints connect to each other via links. A SCION path between two endpoints essentially traverses one or more links.</t>
        <t>In SCION, Autonomous Systems (ASes) are organized into logical groups called Isolation Domains or ISDs. Each ISD consists of ASes that span an area with a uniform trust environment (i.e. a common jurisdiction). An ISD is administered by a set of distinguished ASes called core ASes.</t>
        <t>SCION distinguishes three types of links between ASes: (1) core links, (2) parent-child links, and (3) peering links.</t>
        <ul spacing="normal">
          <li>
            <t><em>Core</em> links connect two core ASes, which are either within the same or in different ISDs. Core links can exist for various reasons, including provider-customer (where the customer pays the provider for traffic) and peering relationships.</t>
          </li>
          <li>
            <t><em>Parent-child</em> links create a hierarchy between the parent and the child AS within the same ISD. ASes with a parent-child link typically have a provider-customer relationship.</t>
          </li>
          <li>
            <t><em>Peering</em> links exist between ASes with a (settlement-free or paid) peering relationship. They can be established between any two ASes (core or non-core) and can cross ISD boundaries.</t>
          </li>
        </ul>
        <t>These link types form the basis of the notion of "valley free" paths. Valley free paths means that a child AS does not carry transit traffic from a parent AS to another parent AS.</t>
        <t>The SCION paths are always valley free, and consist of at most three segments: an up segment, traversing links from child to parent, then a core segment consisting of core links, followed by a down segment traversing links from parent to child. Peering links can be used as "shortcuts" in an up-core-down path.</t>
        <t>A path can contain at most one peering link shortcut which means they can only be used in paths between ASes within the "customer cone" of the ASes connected by the peering link.</t>
        <t><xref target="_figure-1"/> shows the three types of links for one small ISD with two core ASes A and C, and four non-core ASes D,E,F, and G.</t>
        <figure anchor="_figure-1">
          <name>The three types of SCION links in one ISD. Each node in the figure is a SCION AS.</name>
          <artwork><![CDATA[
+-------------------------+
|                         |       #
|        ISD Core         |       |      parent-child
|  .---.           .---.  |       |      link
| (  A  )*-------*(  C  ) |       |
|  `-#-'           `-#-'  |       0
|    |               |    |
+----|---------------|----+   *-------*  core link
     |               |
     |               |        < - - - >  peering link
   .-0-.           .-0-.
  (  D  )< - - - >(  E  )
   `-#-'           `-#-'
     |               |
     |               |
     |               |
   .-0-.           .-0-.
  (  G  )         (  F  )
   `---'           `---'
]]></artwork>
        </figure>
        <t>Each link connecting SCION routers is bi-directional and is identified by its corresponding egress and ingress interface IDs. An interface ID consists of a 16-bit identifier that <bcp14>MUST</bcp14> be unique within each AS, with the exception of value 0 (see <xref target="I-D.dekater-scion-dataplane"/>). Therefore, they can be chosen and encoded by each AS independently without any need for coordination between ASes.</t>
      </section>
      <section anchor="routing">
        <name>Routing</name>
        <t>SCION provides path-aware inter-domain routing between ASes across the Internet. The SCION Control Plane is responsible for discovering these inter-domain paths and making them available to the endpoints within the ASes.</t>
        <t>SCION inter-domain routing operates on two levels: within a ISD which is called <em>intra</em>-ISD routing, and between ISD which is called <em>inter</em>-ISD routing. Both levels use <em>Path Segment Construction Beacons (PCBs)</em> to explore network paths. A PCB is initiated by a core AS and then disseminated either within an ISD to explore intra-ISD paths, or among core ASes to explore core paths across different ISDs.</t>
        <t>The PCBs accumulate cryptographically protected path and forwarding information at an AS level and store this information in the form of <em>Hop Fields</em>. Endpoints use information from these Hop Fields to create end-to-end forwarding paths for data packets that carry this information in their headers. This also supports multi-path communication among endpoints.</t>
        <t>The creation of an end-to-end forwarding path consists of the following processes:</t>
        <ol spacing="normal" type="1"><li>
            <t><em>Path exploration (or beaconing)</em>: This is the process where an AS discovers paths to other ASes. See also <xref target="beaconing"/>.</t>
          </li>
          <li>
            <t><em>Path registration</em>: This is the process where an AS selects a few PCBs, according to defined policies, turns the selected PCBs into path segments, and adds these path segments to the relevant path infrastructure, thus making them available to other ASes. See also <xref target="path-segment-reg"/>.</t>
          </li>
          <li>
            <t><em>Path resolution</em>: This is the process of actually creating an end-to-end forwarding path from the source endpoint to the destination. For this, an endpoint performs (a) a path lookup step to obtain path segments, and (b) a path combination step to combine the forwarding path from the segments. This last step takes place in the data plane. See also <xref target="lookup"/>.</t>
          </li>
        </ol>
        <t>All processes operate concurrently.</t>
        <t>The <strong>Control Service</strong> is responsible for the path exploration and registration processes in the Control Plane. It is the main control plane infrastructure component within each SCION AS and has the following tasks:</t>
        <ul spacing="normal">
          <li>
            <t>Generating, receiving, and propagating PCBs. Periodically, the Control Service of a core AS generates a set of PCBs, which are forwarded to the child ASes or neighboring core ASes. In the latter case, the PCBs are sent over policy compliant paths to discover multiple paths between any pair of core ASes.</t>
          </li>
          <li>
            <t>Selecting and registering the set of path segments via which the AS wants to be reached.</t>
          </li>
          <li>
            <t>Managing certificates and keys to secure inter-AS communication. Each PCB contains signatures of all on-path ASes and each time the Control Service of an AS receives a PCB, it validates the PCB's authenticity. When the Control Service lacks an intermediate certificate, it can query the Control Service of the neighboring AS that sent the PCB through the API described in <xref target="_figure-17"/>.</t>
          </li>
        </ul>
        <t><strong>Note:</strong> The Control Service of an AS is decoupled from SCION border routers. The Control Service of a specific AS is part of the Control Plane, is responsible for <em>finding and registering suitable paths</em>, and can be deployed anywhere inside the AS. Border routers are deployed at the edge of an AS and their main tasks are to <em>forward data packets</em>.</t>
        <section anchor="path-segments">
          <name>Path Segments</name>
          <t>SCION distinguishes the following types of path segments:</t>
          <ul spacing="normal">
            <li>
              <t>A path segment from a non-core AS to a core AS is an <em>up segment</em>.</t>
            </li>
            <li>
              <t>A path segment from a core AS to a non-core AS is a <em>down segment</em>.</t>
            </li>
            <li>
              <t>A path segment between core ASes is a <em>core segment</em>.</t>
            </li>
          </ul>
          <t>Each path segment starts and/or ends at a core AS.</t>
          <t>All path segments may be reversed: a core segment can be used bidirectionally, an up segment can be converted into a down segment, and a down segment can be converted into an up segment depending on the direction of the end-to-end path. This means that all path segments can be used to send data traffic in both directions.</t>
          <t>The cryptographic protection of PCBs and path segments is based on the Control Plane PKI. The signatures are structured such that the entire message sequence constituting the path segment can be authenticated by anyone with access to this PKI.</t>
          <t>For fast validation of the path information carried in individual packets during packet forwarding, symmetric key cryptography is used and the Hop Fields contain a MAC. These MACs are structured to allow verification of the sequence of hops, but in contrast to the PCBs can only be validated by the border routers of the respective AS.</t>
        </section>
      </section>
      <section anchor="numbering">
        <name>Addressing</name>
        <t>Inter-domain SCION routing is based on an &lt;ISD, AS&gt; tuple. Although a complete SCION address is composed of the &lt;ISD, AS, endpoint address&gt; 3-tuple, the endpoint address is not used for inter-domain routing or forwarding. The endpoint address is of variable length, does not need to be globally unique, and can thus be an IPv4, IPv6, or link layer address.</t>
        <t><strong>Note:</strong> As a consequence of the fact that SCION relies on existing routing protocols (e.g. IS-IS, OSPF, SR) and communication fabric (e.g. IP, MPLS) for intra-domain forwarding, existing internal routers do not need to be changed to support SCION.</t>
        <section anchor="isd-numbers">
          <name>ISD Numbers</name>
          <t>An ISD number is the 16-bit global identifier for an ISD and <bcp14>MUST</bcp14> be globally unique.</t>
          <t>The following table gives an overview of the ISD number allocation:</t>
          <table anchor="_table-1">
            <name>ISD number allocations</name>
            <thead>
              <tr>
                <th align="left">ISD</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">The wildcard ISD.</td>
              </tr>
              <tr>
                <td align="left">1 - 15</td>
                <td align="left">Reserved for documentation and sample code (analogous to <xref target="RFC5398"/>).</td>
              </tr>
              <tr>
                <td align="left">16 - 63</td>
                <td align="left">Private use (analogous to <xref target="RFC6996"/>). Can be used for testing and private deployments</td>
              </tr>
              <tr>
                <td align="left">64 - 4094</td>
                <td align="left">Public ISDs. Should be allocated in ascending order, without gaps and "vanity" numbers.</td>
              </tr>
              <tr>
                <td align="left">4095 - 65535</td>
                <td align="left">Reserved for future use.</td>
              </tr>
            </tbody>
          </table>
          <t>Currently, ISD numbers are allocated by Anapaya, a provider of SCION-based networking software and solutions (see <xref target="ISD-AS-assignments"/>).</t>
        </section>
        <section anchor="scion-as-numbers">
          <name>SCION AS Numbers</name>
          <t>A SCION AS number is the 48-bit identifier for an AS. Although they play a similar role, there is no relationship between SCION AS numbers and BGP ASNs as defined by <xref target="RFC4893"/>. For historical reasons some SCION Autonomous Systems use a SCION AS number where the first 16 bits are 0 and the remaining 32 bits are identical to their BGP ASN, but there is no technical requirement for this.</t>
        </section>
        <section anchor="text-representation">
          <name>Text Representation</name>
          <section anchor="isd-numbers-1">
            <name>ISD numbers</name>
            <t>The text representation of SCION ISD numbers <bcp14>MUST</bcp14> be its decimal ASCII representation.</t>
          </section>
          <section anchor="as-numbers">
            <name>AS numbers</name>
            <t>The text representation of SCION AS numbers is similar to IPv6 (see <xref target="RFC5952"/>) but not identical. It <bcp14>MUST</bcp14> be as follows:</t>
            <ul spacing="normal">
              <li>
                <t>It uses a 16-bit colon-separated lower-case hex encoding with leading 0s omitted: <tt>0:0:0</tt> to <tt>ffff:ffff:ffff</tt>.</t>
              </li>
              <li>
                <t>The <tt>::</tt> zero-compression feature of IPv6 <bcp14>MUST NOT</bcp14> be used. The feature has very limited use in a 48-bit address space and would only add more complexity.</t>
              </li>
              <li>
                <t>A range of AS numbers can be shortened with a notation similar to the one used for CIDR IP ranges (<xref target="RFC4632"/>). For example, the range of the lowest 32-bit AS numbers (0-4294967295) can be represented as <tt>0:0:0/16</tt>.</t>
              </li>
              <li>
                <t>For historical reasons, SCION AS numbers in the lower 32-bit range <bcp14>MAY</bcp14> also be represented as decimal for human readability. For example, if a program receives the AS number <tt>0:1:f</tt>, it <bcp14>MAY</bcp14> display the number as "65551".</t>
              </li>
            </ul>
          </section>
          <section anchor="isd-as-tuples">
            <name>&lt;ISD, AS&gt; tuples</name>
            <t>The text representation of SCION addresses <bcp14>MUST</bcp14> be <tt>&lt;ISD&gt;-&lt;AS&gt;</tt>, where <tt>&lt;ISD&gt;</tt> is the text representation of the ISD number, <tt>&lt;AS&gt;</tt> is the text representation of the AS number, and <tt>-</tt> is the litteral ASCII character 0x2D.</t>
            <t>For example, the text representation of AS number 65551 (0x1000f) in ISD number 4 is <tt>4-0000:1:f</tt>.</t>
          </section>
        </section>
        <section anchor="serv-disc">
          <name>Wildcard Addressing</name>
          <t>SCION endpoints use wildcard AS <tt>0:0:0</tt> to designate any core AS, e.g. to place requests for core segments or down segments during path lookup. These wildcard addresses are of the form I-0, to designate any AS in ISD I. For more information, see <xref target="wildcard"/>.</t>
        </section>
        <section anchor="special-purpose-scion-as-numbers">
          <name>Special-Purpose SCION AS Numbers</name>
          <table anchor="_table-2">
            <name>AS number allocations</name>
            <thead>
              <tr>
                <th align="left">AS</th>
                <th align="left">Size</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>0:0:0</tt></td>
                <td align="left">1</td>
                <td align="left">The wildcard AS</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>0:0:1-0:ffff:ffff</tt></td>
                <td align="left">~4.3 bill.</td>
                <td align="left">Public SCION AS numbers</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>1:0:0</tt></td>
                <td align="left">1</td>
                <td align="left">Reserved</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>2:0:0/16</tt></td>
                <td align="left">~4.3 bill.</td>
                <td align="left">Additional public SCION AS numbers</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ff00:0:0/32</tt></td>
                <td align="left">65535</td>
                <td align="left">Reserved for documentation and test/sample code (analogous to <xref target="RFC5398"/>).</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ffaa:0:0/24</tt></td>
                <td align="left">~16.8 mill.</td>
                <td align="left">Reserved for private use (analogous to <xref target="RFC6996"/>). These numbers can be used for testing/private deployments.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ffff:ffff:ffff</tt></td>
                <td align="left">1</td>
                <td align="left">Reserved</td>
              </tr>
            </tbody>
          </table>
          <t>The rest of the space is currently unallocated.</t>
        </section>
      </section>
      <section anchor="bootstrapping-ability">
        <name>Bootstrapping ability</name>
        <t>A secure and reliable routing architecture has to be designed specifically to avoid circular dependencies during network bootstrapping. One goal is that the SCION network can start up even after large outages or attacks, in addition to avoiding cascades of outages caused by fragile interdependencies. This section lists the concepts SCION uses to prevent circular dependencies:</t>
        <ul spacing="normal">
          <li>
            <t>Neighbor-based path discovery: Path discovery in SCION is performed by the beaconing mechanism. In order to participate in this process, an AS only needs to be aware of its direct neighbors. As long as no path segments are available, communicating with the neighboring ASes is possible with the one hop path type which does not rely on any path information. SCION uses these <em>one hop paths</em> to propagate PCBs to neighboring ASes to which no forwarding path is available yet. The One Hop Path Type is described in more detail in <xref target="I-D.dekater-scion-dataplane"/>.</t>
          </li>
          <li>
            <t>Path reversal: In SCION, every path is reversible. That is, the receiver of a packet can reverse the path in the packet header in order to produce a reply packet without having to perform a path lookup. Such a packet follows the original packet's path backwards.</t>
          </li>
          <li>
            <t>Availability of certificates: In SCION, every entity is required to be in possession of all cryptographic material (including the ISD's TRC and certificates) that is needed to verify any message it sends. This (together with the path reversal) means that the receiver of a message can always obtain all this material by contacting the sender. This avoids circular dependencies between the PKI and connectivity.<br/></t>
          </li>
        </ul>
        <t><strong>Note:</strong> For a detailed description of a TRC and more information on the availability of certificates and TRCs, see the SCION Control-Plane PKI <xref target="I-D.dekater-scion-pki"/>.</t>
      </section>
      <section anchor="resistance-to-partitioning">
        <name>Resistance to partitioning</name>
        <t>Partitioning occurs when a network splits into two because of link failures. Partitioning of the global SCION inter-domain network is much less likely to happen, thanks to its path awareness that exposes multiple paths between SCION ASes. Even during failures there is no special failure mode required as SCION-enabled ASes can always switch to already known paths that use other links.</t>
        <t>Recovering from a partitioned network is also seamless as only coarse time synchronization between the partitions is required to resume normal operation and move forward with updates of the cryptographic material. <xref target="clock-inaccuracy"/> further describes the impact of time synchronization and path discovery time.</t>
      </section>
      <section anchor="communication-protocol">
        <name>Communication Protocol</name>
        <t>All communication between the Control Services in different ASes is expressed in terms of gRPC remote procedure calls (for details, see <xref target="gRPC"/>). Service interfaces and messages are defined in the Protocol Buffer "proto3" interface definition language (for details, see <xref target="proto3"/>).</t>
        <t>The RPC messages are transported via the <xref target="Connect"/>'s rpc protocol; a gRPC-like protocol that carries messages over HTTP/3 (see <xref target="RFC9114"/>)). HTTP3 traffic uses QUIC/UDP (<xref target="RFC9000"/>) as a transport layer. In the case of SCION, UDP relies on the data plane.</t>
        <t><xref target="app-a"/> provides the entire Control Service API definition in protobuf format.</t>
        <t><xref target="app-b"/> provides details about the establishment of the underlying QUIC connections through the data plane.</t>
      </section>
    </section>
    <section anchor="beaconing">
      <name>Path Exploration or Beaconing</name>
      <section anchor="introduction-and-overview">
        <name>Introduction and Overview</name>
        <t><strong>Path Exploration</strong> is the process where an AS discovers paths to other ASes. In SCION, this process is referred to as <em>beaconing</em> and this section provides a detailed explanation of this.</t>
        <t>In SCION, the <em>Control Service</em> of each AS is responsible for the beaconing process. The Control Service generates, receives, and propagates the <em>Path Segment Construction Beacons (PCBs)</em> on a regular basis, to iteratively construct path segments.</t>
        <t>PCBs contain inter-domain topology and authentication information, and can also include additional metadata that helps with path management and selection. The beaconing process itself is divided into routing processes on two levels, where <em>inter-ISD</em> or core beaconing is based on the (selective) sending of PCBs without a defined direction, and <em>intra-ISD</em> beaconing on top-to-bottom propagation. Beaconing is initiated by core ASes, therefore each ISD <bcp14>MUST</bcp14> have at least one core AS.</t>
        <ul spacing="normal">
          <li>
            <t><em>Inter-ISD or core beaconing</em> is the process of constructing path segments between core ASes in the same or in different ISDs. During core beaconing, the Control Service of a core AS either initiates PCBs or propagates PCBs received from neighboring core ASes to other neighboring core ASes. PCBs are periodically sent over policy compliant paths to discover multiple paths between any pair of core ASes.</t>
          </li>
          <li>
            <t><em>Intra-ISD beaconing</em> creates path segments from core ASes to non-core ASes. For this, the Control Services of core ASes create PCBs and sends them to the non-core child ASes (typically customer ASes) at regular intervals. The Control Service of a non-core child AS receives these PCBs and forwards them to its child ASes, and so on until the PCB reaches an AS without any children (leaf AS). As a result, all ASes within an ISD receive path segments to reach the core ASes of their ISD and register reciprocal segments with the Control Service of the associated core ASes.</t>
          </li>
        </ul>
        <t>On its way, a PCB accumulates cryptographically protected path and forwarding information per traversed AS. At every AS, metadata as well as information about the AS's ingress and egress interfaces is added to the PCB. The full PCB message format is described in <xref target="pcbs"/>. PCBs are used to construct path segments. ASes register them to make them available to other ASes, as described in <xref target="path-segment-reg"/>.</t>
        <section anchor="peering-links">
          <name>Peering Links</name>
          <t>PCBs do not traverse peering links. Instead, peering links are announced along with a regular path in a PCB. If both ASes at either end of a peering link have registered path segments that include this specific peering link, then it is possible to use this peering link during segment combination to create the end-to-end path.</t>
        </section>
        <section anchor="appending-entries-to-a-pcb">
          <name>Appending Entries to a PCB</name>
          <t>Every propagation interval (as configured by the AS), the Control Service:</t>
          <ul spacing="normal">
            <li>
              <t>selects the best combinations of PCBs and interfaces connecting to a neighboring AS (i.e. a child AS or a core AS). This is described in <xref target="selection"/>.</t>
            </li>
            <li>
              <t>propagates each selected PCB to the selected egress interface(s) associated with it. This is described in <xref target="path-segment-prop"/>.</t>
            </li>
          </ul>
          <t>For every selected PCB and egress interface combination, the AS appends an <em>AS entry</em> to the selected PCB. This includes a Hop Field that specifies the ingress and egress interface for the packet forwarding through this AS, in the beaconing direction. The AS entry can also contain peer entries.</t>
        </section>
        <section anchor="pcb-propagation-illustrated-examples">
          <name>PCB Propagation - Illustrated Examples</name>
          <t>The following three figures show how intra-ISD PCB propagation works, from the ISD's core AS down to child ASes. Interface identifiers of each AS are numbered with integer values while ASes are described with an upper case letter for the sake of illustration.</t>
          <t>In <xref target="_figure-3a"/> below, core AS X sends the two different PCBs "a" and "b" via two different links to child AS Y: PCB "a" leaves core AS X via egress interface "2", whereas PCB "b" is sent over egress interface "1". Core AS X adds the respective egress information to the PCBs when sending them off, as can be seen in the figure (the entries "<em>Core - Out:2</em>" and "<em>Core - Out:1</em>", respectively).</t>
          <figure anchor="_figure-3a">
            <name>Intra-ISD PCB propagation from the ISD core to child ASes - Part 1</name>
            <artwork><![CDATA[
                            +-------------+
                            | Core AS X   |
                            |             |
                            |    2   1    |
                            +----#---#----+
          +--------+             |   |             +--------+
          |PCB     |     +-----+ |   | +-----+     |PCB     |
          |========|-----|PCB a| |   | |PCB b|=====|++++++++|
          |Core    |     +-----+ |   | +-----+     |Core    |
          |- Out:2 |        |    |   |    |        |- Out:1 |
          +--------+        v    |   |    v        +--------+
                                 v   v
                            +----#---#----+
                            |     AS Y    |

]]></artwork>
          </figure>
          <t>AS Y receives the two PCBs "a" and "b" through two different (ingress) interfaces, namely "2" and "3", respectively (see <xref target="_figure-3b"/> below). Additionally, AS Y forwards to AS Z four PCBs that were previously sent by core AS X. For this, AS Y uses the two different (egress) links "5" and "6". AS Y appends the corresponding ingress and egress interface information to the four PCBs. As can be seen in the figure, AS Y also has two peering links to its neighboring peers V and W, through the interfaces "1" and "4", respectively - AS Y includes this information in the PCBs, as well. Thus, each forwarded PCB cumulates path information on its way "down" from core AS X.</t>
          <figure anchor="_figure-3b">
            <name>Intra-ISD PCB propagation from the ISD core to child ASes - Part 2</name>
            <artwork><![CDATA[
                        +-----+ |   | +-----+
                        |PCB a| |   | |PCB b|
                        +-----+ |   | +-----+
                           |    |   |    |
                           v    |   |    v
        +-------------+         v   v
        |             |    +----#---#----+    +-------------+
        |             |    |    2   3    |    |             |
        |    AS V     #- --# 1           |    |             |
        |             |    |     AS Y    |    |    AS W     |
        |             |    |           4 #- --#             |
        +-------------+    |             |    |             |
                           |    6   5    |    +-------------+
            +--------+     +----#---#----+     +--------+
            |PCB     |          |   |          |PCB     |
            |========|          |   |          |========|
            |Core X  |          |   |          |Core X  |
            |- Out:2 |          |   |          |- Out:2 |
+--------+  |--------|  +-----+ |   | +-----+  |--------|  +--------+
|PCB     |  |AS Y    |--|PCB c| |   | |PCB d|--|AS Y    |  |PCB     |
|++++++++|  |-In:2   |  +-----+ |   | +-----+  |-In:2   |  |++++++++|
|Core X  |  |-Out:6  |     |    |   |    |     |-Out:5  |  |Core X  |
|- Out:1 |  |-PeerV:1|     v    |   |    v     |-PeerV:1|  |- Out:1 |
|--------|  |-PeerW:4|          |   |          |-PeerW:4|  |--------|
|AS Y    |  +--------+          |   |          +--------+  |AS Y    |
|-In:3   |              +-----+ |   | +-----+              |-In:3   |
|-Out:6  |==============|PCB e| |   | |PCB f|==============|-Out:5  |
|-PeerV:1|              +-----+ |   | +-----+              |-PeerV:1|
|-PeerW:4|                 |    |   |    |                 |-PeerW:4|
+--------+                 v    |   |    v                 +--------+
                                v   v
                           +----#---#----+
                           |    AS Z     |

]]></artwork>
          </figure>
          <t>The following figure shows how the four PCBs "c", "d", "e", and "f", coming from AS Y, are received by AS Z over two different links: PCBs "c" and "e" reach AS Z over ingress interface "5", whereas PCBs "d" and "f" enter AS Z via ingress interface "1". Additionally, AS Z propagates PCBs "g", "h", "i", and "j" further down, all over the same link (egress interface "3"). AS Z extends the PCBs with the relevant information, so that each of these PCBs now includes AS hop entries from core AS X, AS Y, and AS Z.</t>
          <figure anchor="_figure-3c">
            <name>Intra-ISD PCB propagation from the ISD core to child ASes - Part 3</name>
            <artwork><![CDATA[
                   +-----+      |   |      +-----+
                   |PCB c|      |   |      |PCB d|
                   +-----+      |   |      +-----+
                     |  +-----+ |   | +-----+  |
                     v  |PCB e| |   | |PCB f|  v
                        +-----+ |   | +-----+
                           |    |   |    |
                           v    |   |    v
                                v   v
                         +------#---#------+
                         |      5   1      |
                         |                 |
                         | AS Z            |
            +--------+   |        3        |   +--------+
            |PCB     |   +--------#--------+   |PCB     |
            |========|            |            |========|
            |Core X  |            |            |Core X  |
+--------+  |- Out:2 |            |            |- Out:2 |  +--------+
|PCB     |  |--------|            |            |--------|  |PCB     |
|++++++++|  |AS Y    |            |            |AS Y    |  |++++++++|
|Core X  |  |-In:2   |            |            |-In:2   |  |Core X  |
|- Out:1 |  |-Out:6  |   +-----+  |  +-----+   |-Out:5  |  |- Out:1 |
|--------|  |-PeerV:1|---|PCB g|  |  |PCB h|---|-PeerV:1|  |--------|
|AS Y    |  |-PeerW:4|   +-----+  |  +-----+   |-PeerW:4|  |AS Y    |
|-In:3   |  |--------|      |     |     |      |--------|  |-In:3   |
|-Out:6  |  |AS Z    |      v     |     v      |AS Z    |  |-Out:5  |
|-PeerV:1|  |-In:5   |            |            |-In:1   |  |-PeerV:1|
|-PeerW:4|  |-Out:3  |            |            |-Out:3  |  |-PeerW:4|
|--------|  +--------+            |            +--------+  |--------|
|AS Z    |               +-----+  |  +-----+               |AS Z    |
|-In:5   |===============|PCB i|  |  |PCB j|===============|-In:1   |
|-Out:3  |               +-----+  |  +-----+               |-Out:3  |
+--------+                  |     |     |                  +--------+
                            v     |     v
                                  v

]]></artwork>
          </figure>
          <t>Based on the figures above, one could say that a PCB represents a single path segment. However, there is a difference between a PCB and a registered path segment as a PCB is a so-called "travelling path segment" that accumulates AS entries when traversing the Internet. A registered path segment is instead a "snapshot" of a travelling PCB at a given time T and from the vantage point of a particular AS A. This is illustrated by <xref target="_figure-4"/>. This figure shows several possible path segments to reach AS Z, based on the PCBs "g", "h", "i", and "j" from <xref target="_figure-3c"/> above. It is up to AS Z to use all of these path segments or just a selection of them.</t>
          <figure anchor="_figure-4">
            <name>Possible up- or down segments for AS Z</name>
            <artwork><![CDATA[
                AS Entry Core         AS Entry Y          AS Entry Z

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |    AS Y     |     |     AS Z    |
path segment 1 |            1#     #3            5     #1            |
               |             |     |             |     |             |
               |            2#-----#2----------- 6-----#5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                 egress 2       ingress 2 - egress 6      ingress 5

----------------------------------------------------------------------

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |    AS Y     |     |     AS Z    |
               |            1#     #3     +-----5#-----#1            |
path segment 2 |             |     |      |      |     |             |
               |            2#-----#2-----+     6#     #5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                 egress 2       ingress 2 - egress 5      ingress 1

------------------------------------------------------------------------

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |    AS Y     |     |     AS Z    |
               |            1#-----#3-----+     5#     #1            |
path segment 3 |             |     |      |      |     |             |
               |            2#     #2     +-----6#-----#5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                 egress 1       ingress 3 - egress 6      ingress 5

------------------------------------------------------------------------

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |   AS Y      |     |     AS Z    |
               |            1#-----#3-----------5#-----#1            |
path segment 4 |             |     |             |     |             |
               |            2#     #2           6#     #5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                 egress 1       ingress 3 - egress 5      ingress 1

]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="pcbs">
        <name>Path-Segment Construction Beacons (PCBs)</name>
        <section anchor="pcb-compos">
          <name>PCB Message Format</name>
          <t><xref target="_figure-5"/> graphically represents the PCB message format:</t>
          <figure anchor="_figure-5">
            <name>Top-down composition of one PCB</name>
            <artwork><![CDATA[
                              PCB / PATH SEGMENT

+-------------+------------+------------+--------+--------------------+
|Segment Info | AS Entry 0 | AS Entry 1 |  ...   |     AS Entry N     |
+-------------+------------+------------+--------+--------------------+
*- - - - # - -*            *- - - # - - *
         |                        |
*- - - - v - - - *                |
+---------+------+                |
|Timestamp|Seg ID|                |
+---------+------+                |
                                  |
*- - - - - - - - - - - - - - - - -v- - - - - - - - - - - - - - - - - - *
+-----------------------+----------------------------------------------+
|    Unsigned Ext.      |               Signed AS Entry                |
+-----------------------+----------------------------------------------+
                        *- - - - - - - - - - - - # - - - - - - - - - - *
                                                 |
                                                 |
*- - - - - - - - - - - - - - - - - - - - - - - - v - - - - - - - - - - *
+--------------------+-----------------++------------------------------+
|     Signature      |    Header       ||                    Body      |
+--------------------+-----------------++------------------------------+
                     *- - - - # - - - -**- - - - - - - - # - - - - - - *
                              |                          |
*- - - - - - - - - - - - - - -v- - - - *                 |
+----------------+---------------------+                 |
| Signature Alg. | Verification Key ID |                 |
+----------------+---------------------+                 |
                 *- - - - - # - - - - -*                 |
                            |                            |
*- - - - - - - - - - - - - -v- - - - - - - - - -*        |
+---------+---------+------------+--------------+        |
| ISD-AS  |TRC Base | TRC Serial |Subject Key ID|        |
+---------+---------+------------+--------------+        |
                                                         |
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - v - - - - - - *
+------+-----------+---------++------------+----+------------++---+----+
|ISD-AS|Next ISD-AS|Hop Entry||Peer Entry 0| ...|Peer Entry N||MTU|Ext.|
+------+-----------+---------++------------+----+------------++---+----+
                   *- - # - -**- - - # - - *
                        |            |
                        |            |
*- - - - - - - - - - - -v- *  *- - - v - - - - - - - - - - - - - - - - *
+-------------+------------+  +--------+--------+----------+-----------+
| Ingress MTU | Hop Field  |  |HopField|PeerMTU |PeerISD-AS|PeerInterf.|
+-------------+--------+---+  +----+---+--------+----------+-----------+
                       *- - -#- - -*
                             |
                             |
*- - - - - - - - - - - - - - v - - - - - - - - - - - - - - *
+------------+-------------+-------------------+-----------+
|  Ingress   |    Egress   |  Expiration Time  |   MAC     |
+------------+-------------+-------------------+-----------+
]]></artwork>
          </figure>
          <t><strong>Note:</strong> For a full example of one PCB in the Protobuf message format, please see <xref target="app-a"/>, <xref target="_figure-14"/>.</t>
          <section anchor="segment">
            <name>PCB Top-Level Message Format</name>
            <artwork><![CDATA[
+-------------+-------------+------------+------+------------+
|Segment Info | AS Entry 0  | AS Entry 1 |  ... | AS Entry N |
+-------------+-------------+------------+------+------------+
]]></artwork>
            <t>Each PCB <bcp14>MUST</bcp14> consists of at least:</t>
            <ul spacing="normal">
              <li>
                <t>An information field with an identifier and a timestamp.</t>
              </li>
              <li>
                <t>Entries of all ASes on the path segment represented by this PCB.</t>
              </li>
            </ul>
            <t>The following code block defines the PCB at the top level in Protobuf message format.</t>
            <artwork><![CDATA[
   message PathSegment {
       bytes segment_info = 1;
       repeated ASEntry as_entries = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>segment_info</tt>: This field is used as input for the PCB signature. It is the encoded version of the component <tt>SegmentInformation</tt>, which provides basic information about the PCB. The <tt>SegmentInformation</tt> component is specified in detail in <xref target="seginfo"/>.</t>
              </li>
              <li>
                <t><tt>as_entries</tt>: Contains the <tt>ASEntry</tt> component of all ASes on the path segment represented by this PCB.
                </t>
                <ul spacing="normal">
                  <li>
                    <t><tt>ASEntry</tt>: The <tt>ASEntry</tt> component contains the complete path information of a specific AS that is part of the path segment represented by the PCB. The <tt>ASEntry</tt> component is specified in detail in <xref target="ase-message"/>.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </section>
          <section anchor="seginfo">
            <name>Segment Information</name>
            <artwork><![CDATA[
+----------------------------+
|         Segment Info       |
+----------------------------+
*- - - - - - - # - - - - - - *
               |
               |
*- - - - - - - v - - - - - - *
+--------------+-------------+
|   Timestamp  |   Seg ID    |
+--------------+-------------+
]]></artwork>
            <t>Each PCB <bcp14>MUST</bcp14> include an information component with basic information about the PCB.</t>
            <t>In the Protobuf message format, the information component of a PCB is called the <tt>SegmentInformation</tt> message. The following code block shows the Protobuf message definition for the <tt>SegmentInformation</tt> message.</t>
            <artwork><![CDATA[
   message SegmentInformation {
       int64 timestamp = 1;
       uint32 segment_id = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>timestamp</tt>: The 32-bit timestamp indicates the creation time of this PCB. It is set by the originating core AS and the expiration time of each Hop Field in the PCB is computed relative to this timestamp. The timestamp is encoded as the number of seconds elapsed since the POSIX Epoch (1970-01-01 00:00:00 UTC).</t>
              </li>
              <li>
                <t><tt>segment_id</tt>: The 16-bit identifier of this PCB and the corresponding path segment. The segment ID is <bcp14>REQUIRED</bcp14> for the computation of the message authentication code (MAC) of an AS's Hop Field. The MAC is used for Hop Field verification in the data plane and the originating core AS <bcp14>MUST</bcp14> fill this field with a cryptographically random number.</t>
              </li>
            </ul>
            <t><strong>Note:</strong> See <xref target="hopfield"/> for more information on the Hop Field message format. <xref target="I-D.dekater-scion-dataplane"/> provides a detailed description of the computation of the MAC and the verification of the Hop Field in the data plane.</t>
          </section>
          <section anchor="ase-message">
            <name>AS Entry</name>
            <artwork><![CDATA[
                           +--------------+
                           |  AS Entry    |
                           +--------------+
                           *- - - -#- - - *
                                   |
                                   |
                                   |
*- - - - - - - - - - - - - - - - - v - - - - - - - - - - - - - - - *
+-----------------------+------------------------------------------+
|    Unsigned Ext.      |          Signed AS Entry                 |
+-----------------------+------------------------------------------+
]]></artwork>
            <t>Each PCB <bcp14>MUST</bcp14> also contain the entries of all ASes included in the corresponding path segment. This means that the originating core AS <bcp14>MUST</bcp14> add its AS entry to each PCB it creates, and each traversed AS <bcp14>MUST</bcp14> attach its AS entry to the PCB.</t>
            <t>One AS entry contains the complete hop information for this specific AS in this specific path segment. It consists of a signed and an unsigned component.</t>
            <t>The code block below defines an AS entry <tt>ASEntry</tt> in Protobuf message format.</t>
            <artwork><![CDATA[
   message ASEntry {
       SignedMessage signed = 1;
       PathSegmentUnsignedExtensions unsigned = 2;
   }
]]></artwork>
            <t>It includes the following components:</t>
            <ul spacing="normal">
              <li>
                <t><tt>SignedMessage</tt>: The signed component of an AS entry. For the specification of this part of the AS entry, see <xref target="signed-compo"/> below.</t>
              </li>
              <li>
                <t><tt>PathSegmentUnsignedExtensions</tt>: The unsigned and thus unprotected part of the AS entry. These are extensions with metadata that need no explicit protection.</t>
              </li>
            </ul>
          </section>
          <section anchor="signed-compo">
            <name>AS Entry Signed Component</name>
            <artwork><![CDATA[
        +------------------------------------------------------+
        |                   Signed AS Entry                    |
        +------------------------------------------------------+
        *- - - - - - - - - - - - -#- - - - - - - - - - - - - - *
                                  |
                                  |
*- - - - - - - - - - - - - - - - -v- - - - - - - - - - - - - - - - - -*
+--------------------+-----------------+------------------------------+
|      Header        |     Body        |            Signature         |
+--------------------+-----------------+------------------------------+
]]></artwork>
            <t>Each AS entry of a PCB <bcp14>MUST</bcp14> include a signed component as well as a signature computed over the signed component. Each AS entry <bcp14>MUST</bcp14> be signed with the Control Plane AS Certificate (See <xref target="I-D.dekater-scion-pki"/>).</t>
            <t>The signed component of an AS entry <bcp14>MUST</bcp14> include the following elements:</t>
            <ul spacing="normal">
              <li>
                <t>a header,</t>
              </li>
              <li>
                <t>a body, and</t>
              </li>
              <li>
                <t>a signature.</t>
              </li>
            </ul>
            <t>In the Protobuf message format implementation, the signed component of an AS entry is specified by the <tt>SignedMessage</tt>. It consists of a header-and-body part (<tt>header_and_body</tt>) and a raw signature (<tt>signature</tt>). See also the code block below.</t>
            <artwork><![CDATA[
   message SignedMessage {
       bytes header_and_body = 1;
       bytes signature = 2;
   }
]]></artwork>
            <t>The following code block shows the low level representation of the <tt>HeaderAndBodyInternal</tt> message used for signature computation input. This message <bcp14>SHOULD NOT</bcp14> be used by external code.</t>
            <artwork><![CDATA[
   message HeaderAndBodyInternal {
       // Encoded header suitable for signature computation.
       bytes header = 1;
       // Raw payload suitable for signature computation.
       bytes body = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t>For the specification of the signed header, see <xref target="ase-header"/>.</t>
              </li>
              <li>
                <t>For the specification of the signed body, see <xref target="ase-sign"/>.</t>
              </li>
              <li>
                <t>For the specification of the <tt>signature</tt> field, see <xref target="sign"/>.</t>
              </li>
            </ul>
            <section anchor="ase-header">
              <name>AS Entry Signed Header</name>
              <artwork><![CDATA[
           +-----------------+
           |     Header      |
           +-----------------+
           *- - - - # - - - -*
                    |
 - - - - - - - - - -v- - - - - - - - - *
+----------------+---------------------+
| Signature Alg. | Verification Key ID |
+----------------+---------------------+
                 *- - - - - # - - - - -*
                            |
 - - - - - - - - - - - - - -v- - - - - - - - - -
+---------+---------+------------+--------------+
| ISD-AS  |TRC Base | TRC Serial |Subject Key ID|
+---------+---------+------------+--------------+
]]></artwork>
              <t>The header part defines metadata that is relevant to the computation and verification of the signature. It <bcp14>MUST</bcp14> include at least the following metadata:</t>
              <ul spacing="normal">
                <li>
                  <t>The algorithm to compute the signature</t>
                </li>
                <li>
                  <t>The subjectKeyIdentifier of the public key to be used to verify the signature (see <xref target="I-D.dekater-scion-pki"/>)</t>
                </li>
                <li>
                  <t>The ISD-AS number of the AS</t>
                </li>
              </ul>
              <t>The following code block defines the signed header of an AS entry in Protobuf message format (called the <tt>Header</tt> message).</t>
              <artwork><![CDATA[
   message Header {
       SignatureAlgorithm signature_algorithm = 1;
       bytes verification_key_id = 2;
       // Optional
       google.protobuf.Timestamp timestamp = 3;
       // Optional
       bytes metadata = 4;
       int32 associated_data_length = 5;
   }

   message VerificationKeyID {
       uint64 isd_as = 1;
       bytes subject_key_id = 2;
       uint64 trc_base = 3;
       uint64 trc_serial = 4;
   }
]]></artwork>
              <ul spacing="normal">
                <li>
                  <t><tt>signature_algorithm</tt>: Specifies the algorithm to compute the signature.</t>
                </li>
                <li>
                  <t><tt>verification_key_id</tt>: Contains information that is relevant to signing and verifying PCBs and other control-plane messages. It includes the following fields (see also the above code block):
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t><tt>isd_as</tt>: The ISD-AS number of the current AS.</t>
                    </li>
                    <li>
                      <t><tt>subject_key_id</tt>: Refers to the certificate that contains the public key needed to verify this PCB's signature.</t>
                    </li>
                    <li>
                      <t><tt>trc_base</tt>: Defines the <em>base</em> number of the latest Trust Root Configuration (TRC) available to the signer at the time of the signature creation.</t>
                    </li>
                    <li>
                      <t><tt>trc_serial</tt>: Defines the <em>serial</em> number of the latest TRC available to the signer at the time of the signature creation.</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <t><strong>Note:</strong> For more information on signing and verifying control plane messages (such as PCBs), see the chapter Signing and Verifying Control Plane Messages of the SCION Control Plane PKI Specification <xref target="I-D.dekater-scion-pki"/>. For more information on the TRC base and serial number, see the chapter Trust Root Configuration Specification of the SCION Control Plane PKI Specification <xref target="I-D.dekater-scion-pki"/>.</t>
              <ul spacing="normal">
                <li>
                  <t><tt>timestamp</tt>: Defines the signature creation timestamp. This field is <bcp14>OPTIONAL</bcp14>.</t>
                </li>
                <li>
                  <t><tt>metadata</tt>: Can be used to include arbitrary per-protocol metadata. This field is <bcp14>OPTIONAL</bcp14>.</t>
                </li>
                <li>
                  <t><tt>associated_data_length</tt>: Specifies the length of associated data that is covered by the signature, but is not included in the header and body. The value of this field is zero, if no associated data is covered by the signature.</t>
                </li>
              </ul>
            </section>
            <section anchor="ase-sign">
              <name>AS Entry Signed Body</name>
              <artwork><![CDATA[
                +--------------------------------------+
                |                 Body                 |
                +--------------------------------------+
                *- - - - - - - - - -#- - - - - - - - - *
                                    |
                                    |
*- - - - - - - - - - - - - - - - - -v- - - - - - - - - - - - - - - - -*
+------+-----------+---------++------------+---+------------++---+----+
|ISD-AS|Next ISD-AS|Hop Entry||Peer Entry 0|...|Peer Entry N||MTU|Ext.|
+------+-----------+---------++------------+---+------------++---+----+
]]></artwork>
              <t>The body of an AS entry <bcp14>MUST</bcp14> consist of the signed component <tt>ASEntrySignedBody</tt> of all ASes in the path segment represented by the PCB, up until and including the current AS.</t>
              <t>The following code block defines the signed body of one AS entry in Protobuf message format (called the <tt>ASEntrySignedBody</tt> message).</t>
              <artwork><![CDATA[
   message ASEntrySignedBody {
       uint64 isd_as = 1;
       uint64 next_isd_as = 2;
       HopEntry hop_entry = 3;
       repeated PeerEntry peer_entries = 4;
       uint32 mtu = 5;
       PathSegmentExtensions extensions = 6;
   }
]]></artwork>
              <ul spacing="normal">
                <li>
                  <t><tt>isd_as</tt>: The ISD-AS number of the AS that created this AS entry.</t>
                </li>
                <li>
                  <t><tt>next_isd_as</tt>: The ISD-AS number of the downstream AS to which the PCB <bcp14>SHOULD</bcp14> be forwarded. The presence of this field prevents path hijacking attacks, as further discussed in <xref target="path-hijack"/>.</t>
                </li>
                <li>
                  <t><tt>hop_entry</tt>: The hop entry (<tt>HopEntry</tt>) with the information required to forward this PCB through the current AS to the next AS. This information is used in the data plane. For a specification of the hop entry, see <xref target="hopentry"/>.</t>
                </li>
                <li>
                  <t><tt>peer_entries</tt>: The list of optional peer entries (<tt>PeerEntry</tt>). For a specification of one peer entry, see <xref target="peerentry"/>.</t>
                </li>
                <li>
                  <t><tt>mtu</tt>: The maximum transmission unit (MTU) that is supported by all intra-domain links within the current AS. This value is set by the control service when adding the AS entry to the beacon. How the control service obtains this information is implementation dependent. Current practice is to make it a configuration item.</t>
                </li>
                <li>
                  <t><tt>extensions</tt>: List of (signed) extensions (optional). PCB extensions defined here are part of the signed AS entry. This field <bcp14>SHOULD</bcp14> therefore only contain extensions that include important metadata for which cryptographic protection is required. For more information on PCB extensions, see <xref target="pcb-ext"/>.</t>
                </li>
              </ul>
            </section>
            <section anchor="sign">
              <name>AS Entry Signature</name>
              <t>Each AS entry <bcp14>MUST</bcp14> be signed with the AS certificate's private key K<sub>i</sub>. The certificate <bcp14>MUST</bcp14> have a validity period fully containing that of the segment being verified, regardless of current time. The signature Sig<sub>i</sub> of an AS entry ASE<sub>i</sub> is computed over the AS entry's signed component.</t>
              <t>This is the input for the computation of the signature:</t>
              <ul spacing="normal">
                <li>
                  <t>The signed header and body of the current AS (<tt>header_and_body</tt>).</t>
                </li>
                <li>
                  <t>The <tt>segment_info</tt> component of the current AS. This is the encoded version of the <tt>SegmentInformation</tt> component containing basic information about the path segment represented by the PCB. For the specification of <tt>SegmentInformation</tt>, see <xref target="seginfo"/>.</t>
                </li>
                <li>
                  <t>The signed <tt>header_and_body</tt>/<tt>signature</tt> combination of each previous AS on this specific path segment.</t>
                </li>
              </ul>
              <t>The signature Sig<sub>i</sub> of an AS entry ASE<sub>i</sub> is now computed as follows:</t>
              <t>Sig<sub>i</sub> =
K<sub>i</sub>( SegInfo || ASE<sub>0</sub><sup>(signed)</sup> || Sig<sub>0</sub> || ... || ASE<sub>i-1</sub><sup>(signed)</sup> || Sig<sub>i-1</sub> || ASE<sub>i</sub><sup>(signed)</sup> )</t>
              <t>The signature metadata minimally contains the ISD-AS number of the signing entity and the key identifier of the public key to be used to verify the message. For more information on signing and verifying control plane messages, see the chapter "Signing and Verifying Control Plane Messages" of the SCION Control Plane PKI Specification <xref target="I-D.dekater-scion-pki"/>.</t>
              <t>The following code block shows how the signature input is defined in the SCION Protobuf implementation ("ps" stands for path segment). Note that the signature has a nested structure.</t>
              <artwork><![CDATA[
input(ps, i) = signed.header_and_body || associated_data(ps, i)

associated_data(ps, i) = ps.segment_info ||
                         ps.as_entries[1].signed.header_and_body ||
                         ps.as_entries[1].signed.signature ||
                         ...
                         ps.as_entries[i-1].signed.header_and_body ||
                         ps.as_entries[i-1].signed.signature
]]></artwork>
            </section>
          </section>
          <section anchor="hopentry">
            <name>Hop Entry</name>
            <artwork><![CDATA[
       +-----------+
       | Hop Entry |
       +-----------+
       *- - -#- - -*
             |
 - - - - - - v - - - - - - *
+-------------+------------+
| Ingress MTU | Hop Field  |
+-------------+------------+
]]></artwork>
            <t>Each body of an AS entry <bcp14>MUST</bcp14> contain exactly one hop entry component. The hop entry component specifies forwarding information which the data plane requires to create the hop through the current AS (in the direction of the beaconing).</t>
            <t>The following code block defines the hop entry component <tt>HopEntry</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message HopEntry {
       HopField hop_field = 1;
       uint32 ingress_mtu = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>hop_field</tt>: Contains the authenticated information about the ingress and egress interfaces in the direction of beaconing. Routers need this information to forward packets through the current AS. For further specifications, see <xref target="hopfield"/>.</t>
              </li>
              <li>
                <t><tt>ingress_mtu</tt>: Specifies the maximum transmission unit (MTU) of the ingress interface (in beaconing direction) of the hop being described. The MTU of paths constructed from the containing beacon is necessarily less than or equal to this value. How the control service obtains the MTU of an inter-AS link is implementation dependent. It may be discovered or configured. Current practice to make it a configuration item.</t>
              </li>
            </ul>
            <t>In this description, MTU and packet size are to be understood in the same sense as in <xref target="RFC1122"/>. That is, exclusive of any layer 2 framing or packet encapsulation (for links using an underlay network).</t>
          </section>
          <section anchor="hopfield">
            <name>Hop Field</name>
            <artwork><![CDATA[
                      +-----------+
                      | Hop Field |
                      +-----------+
                      *- - -#- - -*
                            |
                            |
*- - - - - - - - - - - - - -v- - - - - - - - - - - - - - - *
+-------------+-------------+-------------------+----------+
|   Ingress   |    Egress   |  Expiration Time  |   MAC    |
+-------------+-------------+-------------------+----------+
]]></artwork>
            <t>The Hop Field, part of both hop entries and peer entries, is used directly in the data plane for packet forwarding and specifies the incoming and outgoing interfaces of the ASes on the forwarding path. To prevent forgery, this information is authenticated with a message authentication code (MAC) which will be checked by the SCION border routers during packet forwarding. The algorithm used to compute the Hop Field MAC is an AS-specific choice and the operator of an AS can freely choose a MAC algorithm without outside coordination. However, the Control Service and routers of the AS do need to agree on the algorithm used.</t>
            <t>Control Service and router implementations <bcp14>MUST</bcp14> support the Default Hop Field MAC algorithm described in <xref target="I-D.dekater-scion-dataplane"/>. This document does not specify any further mechanism to coordinate this choice between Control Services and routers of one AS.</t>
            <t>The following code block defines the Hop Field component <tt>HopField</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message HopField {
       uint64 ingress = 1;
       uint64 egress = 2;
       uint32 exp_time = 3;
       bytes mac = 4;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>ingress</tt>: The 16-bit ingress interface identifier (in the direction of the path construction, that is, in the direction of beaconing through the current AS).</t>
              </li>
            </ul>
            <t><strong>Note:</strong> For the core AS that initiates the PCB, the ingress interface identifier <bcp14>MUST NOT</bcp14> be specified. This initiating AS is a core AS.</t>
            <ul spacing="normal">
              <li>
                <t><tt>egress</tt>: The 16-bit egress interface identifier (in the direction of beaconing).</t>
              </li>
              <li>
                <t><tt>exp_time</tt>: The 8-bit encoded expiration time of the Hop Field, indicating its validity. This field expresses a duration in seconds according to the formula: <tt>duration = (1 + exp_time) * (24*60*60/256)</tt>. The minimum duration is therefore 337.5 s. This duration is relative to the PCB creation timestamp set in the PCB's segment information component (see also <xref target="seginfo"/>). Therefore, the absolute expiration time of the Hop Field is the sum of these two values.</t>
              </li>
              <li>
                <t><tt>mac</tt>: The message authentication code (MAC) used in the data plane to verify the Hop Field, as described in <xref target="I-D.dekater-scion-dataplane"/>.</t>
              </li>
            </ul>
          </section>
          <section anchor="peerentry">
            <name>Peer Entry</name>
            <artwork><![CDATA[
                      +--------------+
                      |  Peer Entry  |
                      +--------------+
                      *- - - -#- - - *
                              |
*- - - - - - - - - - - - - - -v- - - - - - - - - - - - - - *
+-------------+------------+--------------+----------------+
|  Hop Field  |  Peer MTU  | Peer ISD-AS  | Peer Interface |
+-------------+------------+--------------+----------------+
]]></artwork>
            <t>By means of a peer entry, an AS can announce that it has a peering link to another AS. A peer entry is an optional component of a PCB - it is only included if there is a peering link to a peer AS.</t>
            <t>The following code block defines the peer entry component <tt>PeerEntry</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message PeerEntry {
       uint64 peer_isd_as = 1;
       uint64 peer_interface = 2;
       uint32 peer_mtu = 3;
       HopField hop_field = 4;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>peer_isd_as</tt>: The ISD-AS number of the peer AS. This number is used to match peering segments during path construction.</t>
              </li>
              <li>
                <t><tt>peer_interface</tt>: The 16-bit interface identifier of the peering link on the peer AS side. This identifier is used to match peering segments during path construction.</t>
              </li>
              <li>
                <t><tt>peer_mtu</tt>: Specifies the maximum transmission unit (MTU) of the peering link being described. The MTU of paths via such link is necessarily less than or equal to this value. How the control service obtains the MTU of an inter-AS link is implementation dependent. It may be discovered or configured, but current practice is to make it a configuration item.</t>
              </li>
              <li>
                <t><tt>hop_field</tt>: Contains the authenticated information about the ingress and egress interfaces in the current AS (coming from the peering link, in the direction of beaconing - see also <xref target="_figure-6"/>). The data plane needs this information to forward packets through the current AS. For further specifications, see <xref target="hopfield"/>.</t>
              </li>
            </ul>
            <t>In this description, MTU and packet size are to be understood in the same sense as in <xref target="RFC1122"/>. That is, exclusive of any layer 2 framing or packet encapsulation (for links using an underlay network).</t>
            <figure anchor="_figure-6">
              <name>Peer entry information, in the direction of beaconing</name>
              <artwork><![CDATA[
   +-----------+
   |           |
   | parent AS |
   |           |
   +-----------+
         |
         |
         | ASE.HF.ingress_interface
+--------#-----------+                  +-----------------+
|        |           |         PE.peer_ |                 |
|                    |         interface|                 |
|        | + - - - - #------------------#     peer AS     |
|                    |PE.HF.ingress_    |                 |
|        | |         |interface         |                 |
|                    |                  +-----------------+
|        v v         |
+---------#----------+
          | PE.HF.egress_interface
          | ASE.HF.egress_interface
          |
          |
    +-----------+
    |           |
    |  child AS |
    |           |
    +-----------+
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="pcb-ext">
          <name>PCB Extensions</name>
          <t>In addition to basic routing information such a hop entries and peer entries, PCBs can be used to communicate additional metadata in extensions. Extensions can be signed and unsigned: signed extensions are protected by the AS signature, whereas unsigned extensions are not.</t>
          <t>In Protobuf, extensions are specified as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Unsigned extensions <tt>PathSegmentUnsignedExtensions</tt> are part of the AS entry component (the <tt>ASEntry</tt> message, see also <xref target="ase-message"/>).</t>
            </li>
            <li>
              <t>Signed extensions <tt>PathSegmentExtensions</tt> are part of the signed body component of an AS entry (the <tt>ASEntrySignedBody</tt> message, see also <xref target="ase-sign"/>).</t>
            </li>
          </ul>
          <t><strong>Note:</strong> SCION also supports so-called "detachable extensions". The detachable extension is part of a PCB's unsigned extensions, but a cryptographic hash of the detachable extension data is added to the signed extensions. Thus, a PCB with a detachable extension can be signed and verified without actually including the detachable extension in the signature. This prevents a possible processing overhead caused by large cryptographically-protected extensions.</t>
        </section>
        <section anchor="pcb-validity">
          <name>PCB Validity</name>
          <t>To be valid (that is, usable to construct a valid path), a PCB <bcp14>MUST</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t>Contain valid AS Entry signatures (<xref target="sign"/>).</t>
            </li>
            <li>
              <t>Have a timestamp (<xref target="seginfo"/>) that is not in the future.</t>
            </li>
            <li>
              <t>Contain only unexpired hops (<xref target="hopfield"/>).</t>
            </li>
          </ul>
          <t>For the purpose of validation, a timestamp is considered "future" if it is later than the current time at the point of validation plus an allowance for differences between the validator's and originator's clock. As an allowance, it is recommended to use the granularity of the hopfield expiration time (that is 337.5 seconds, see <xref target="hopfield"/>).</t>
          <t>For the purpose of validation, a hop is considered expired if its absolute expiration time, calculated as defined in <xref target="hopfield"/>, is later than the current time at the point of validation.</t>
        </section>
        <section anchor="configuration">
          <name>Configuration</name>
          <t>For the purpose of constructing and propagating path segments, an AS Control Service <bcp14>MUST</bcp14> be configured with links to neighboring ASes. Such information may be conveyed to the Control Service in an out-of-band fashion (e.g in a configuration file). For each link, these values <bcp14>MUST</bcp14> be configured:</t>
          <ul spacing="normal">
            <li>
              <t>Local interface ID. This <bcp14>MUST</bcp14> be unique within each AS.</t>
            </li>
            <li>
              <t>Neighbor type (core, parent, child, peer), depending on link type (see <xref target="paths-links"/>). Link type depends on mutual agreements between the organizations operating the ASes at each end of each link.</t>
            </li>
            <li>
              <t>Neighbor ISD-AS number</t>
            </li>
            <li>
              <t>Neighbor interface underlay address</t>
            </li>
          </ul>
          <t>In addition, the maximum MTU supported by all intra-AS links <bcp14>MAY</bcp14> be configured.
Last, the AS <bcp14>SHOULD</bcp14> adopt a PCB selection policy that it does not accidentally isolate the AS from the network, i.e., such that it does not block connectivity to parent providers and that ensures downstream connectivity for children. For more details, see <xref target="selection"/>.</t>
        </section>
      </section>
      <section anchor="path-prop">
        <name>Propagation of PCBs</name>
        <t>This section describes how PCBs are received, selected and further propagated in the path exploration process.</t>
        <section anchor="reception-of-pcbs">
          <name>Reception of PCBs</name>
          <t>Upon receiving a PCB, the Control Service of an AS performs the following checks:</t>
          <ol spacing="normal" type="1"><li>
              <t>PCB validity: It verifies the validity of the PCB (see <xref target="pcb-validity"/>) and invalid PCBs <bcp14>MUST</bcp14> be discarded. The PCB contains the version numbers of the TRC(s) and certificate(s) that <bcp14>MUST</bcp14> be used to verify its signatures which enables the Control Service to check whether it has the relevant TRC(s) and certificate(s). If not, they can be requested from the Control Service of the sending AS through the API described in <xref target="_figure-17"/>.</t>
            </li>
            <li>
              <t>Loop avoidance: If it is a core AS, the Control Service <bcp14>MUST</bcp14> check whether the PCB includes duplicate hop entries created by the core AS itself or by other ASes. If so, the PCB <bcp14>MUST</bcp14> be discarded in order to avoid loops. This step is necessary because core beaconing is based on propagating PCBs to all AS neighbors. Additionally, core ASes <bcp14>SHOULD</bcp14> discard PCBs that were propagated at any point by a non-core AS. Ultimately, core ASes <bcp14>MAY</bcp14> make a policy decision not to propagate beacons containing path segments that traverse the same ISD more than once as this can be legitimate, e.g. if the ISD spans a large geographical area, a path transiting another ISD may constitute a shortcut.</t>
            </li>
            <li>
              <t>Incoming Interface: the last ISD-AS entry in a received PCB (in its AS Entry Signed Body) <bcp14>MUST</bcp14> coincide with the ISD-AS neighbor of the interface where the PCB was received. If not, the PCB <bcp14>MUST</bcp14> be discarded.</t>
            </li>
            <li>
              <t>Continuity: when a PCB contains two or more AS entries, the receiver Control Service must check every AS entry except the last and discard beacons where the ISD-AS of an entry does not equal the ISD-AS of the next entry.</t>
            </li>
          </ol>
          <t>If the PCB verification is successful, the Control Service decides whether to store the PCB as a candidate for propagation based on selection criteria and polices specific for each AS.</t>
        </section>
        <section anchor="storing-candidate-pcbs">
          <name>Storing Candidate PCBs</name>
          <t>An AS stores candidate PCBs in a temporary storage called the <em>Beacon Store</em>. The management of this storage is implementation defined.</t>
          <t>Current practice is to retain all PCBs until expired or replaced by one describing the same path with a later origination time.</t>
        </section>
        <section anchor="selection">
          <name>PCB Selection Policies</name>
          <t>An AS <bcp14>MUST</bcp14> select which PCBs to propagate further. The selection process can inspect and compare the properties of the candidate PCBs (e.g. length, disjointness across different paths, age, expiration time) and/or take into account which PCBs have been propagated in the past. The PCBs to select or eliminate is determined by the policy of the AS.</t>
          <t>Only a relatively small subset of the viable PCBs <bcp14>SHOULD</bcp14> be propagated to avoid excessive overhead of the path discovery system in bigger networks. The goal of the AS <bcp14>SHOULD</bcp14> be to propagate those candidate PCBs with the highest probability of collectively meeting the needs of the endpoints that will perform path construction.</t>
          <t>As SCION does not provide any in-band signal about the intentions of endpoints nor about the policies of downstream ASes, the policy will typically select a somewhat diverse set optimized for multiple, generic parameters. Selection may be based on criteria such as:</t>
          <ul spacing="normal">
            <li>
              <t>AS path length: from the originator core AS to the child (non-core) AS.</t>
            </li>
            <li>
              <t>Expiration time: the maximum value for the expiration time when extending the segment.</t>
            </li>
            <li>
              <t>ISD or AS blacklists: certain ASes or ISD that may not appear in a segment.</t>
            </li>
            <li>
              <t>ISD loops: if permitted, they allow core AS to reach other core ASes in the same ISD via a third party ISDs.</t>
            </li>
            <li>
              <t>Availability of peering links: that is the number of different peering ASes from all non-core ASes on the PCB or path segment. A greater number of peering ASes increases the likelihood of finding a shortcut on the path segment.</t>
            </li>
            <li>
              <t>Path disjointness: Paths can be either AS disjointed or link disjointed. AS disjointed paths have no common upstream/core AS for the current AS, whereas link disjointed paths do not share any AS-to-AS link. AS disjointness allows path diversity in the event that an AS becomes unresponsive, and link disjointness provides resilience in case of link failure. Both criteria can be used depending on the objective of the AS.</t>
            </li>
          </ul>
          <t>The relative disjointness of two PCBs A and B may be calculated by assigning a disjointness score, calculated as the number of links in A that don't appear in B. The beacon that has the highest disjointness score and is not the shortest path <bcp14>SHOULD</bcp14> be selected. If this is not better than what has already been selected, then the beacon with the shortest path yet to be selected <bcp14>SHOULD</bcp14> be chosen instead.</t>
          <t>A PCB Selection Policy can be expressed as a stateful filter of segments, i.e., a function which indicates whether to accept or deny a given segment. This filter is stateful in that it can be updated each time its AS registers a new segment.
Naturally, an AS's policy selects PCBs corresponding to paths that are commercially or otherwise operationally viable.</t>
        </section>
        <section anchor="propagation-interval-size">
          <name>Propagation Interval and Best PCBs Set Size</name>
          <t>PCBs are propagated in batches to each neighboring AS at a fixed frequency known as the <em>propagation interval</em> which happens for both intra-ISD beaconing and core beaconing. At each propagation event, each AS selects a set of the best PCBs from the candidates in the Beacon Store according to the AS's selection policy. This set <bcp14>SHOULD</bcp14> have a fixed size, the <em>best PCBs set size</em>.</t>
          <t>The <em>best PCBs set size</em> <bcp14>SHOULD</bcp14> be:</t>
          <ul spacing="normal">
            <li>
              <t>For intra-AS beaconing (i.e. propagating to children ASes): at most 50.</t>
            </li>
            <li>
              <t>For core beaconing (i.e. propagation between core ASes): at most 5 per immediate neighbor core AS. Current practice is that each set of 5 is chosen among the PCBs received from each neighbor.</t>
            </li>
          </ul>
          <t>Note that the PCBs set size should not be too low, in order to make sure that beaconing can discover a wide amount of paths.
Values above are <bcp14>RECOMMENDED</bcp14> maxima which represent a tradeoff between scalability and amount of paths discovered.
In current practice the intra-ISD set size is typically 20.</t>
          <t>Depending on the selection criteria, it may be necessary to keep more candidate PCBs than the <em>best PCBs set size</em> in the Beacon Store in order to determine the best set of PCBs. If this is the case, an AS <bcp14>SHOULD</bcp14> have a suitable pre-selection of candidate PCBs in place in order to keep the Beacon Store capacity limited.</t>
          <ul spacing="normal">
            <li>
              <t>The <em>propagation interval</em> <bcp14>SHOULD</bcp14> be at least "5" (seconds) for intra-ISD beaconing and at least "60" (seconds) for core beaconing.</t>
            </li>
          </ul>
          <t>Note that to ensure establish quick connectivity, an AS <bcp14>MAY</bcp14> attempt to forward a PCB more frequently ("fast recovery"). Current practice is to increase the frequency of attempts if no PCB propagation is known to have succeeded within the last propagation interval:</t>
          <ul spacing="normal">
            <li>
              <t>because the corresponding RPC failed;</t>
            </li>
            <li>
              <t>or because no beacon was available to propagate.</t>
            </li>
          </ul>
          <t>The scalability implications of such parameters are further discussed in <xref target="scalability"/>.</t>
        </section>
        <section anchor="path-segment-prop">
          <name>Propagation of Selected PCBs</name>
          <t>To bootstrap the initial communication with a neighboring beacon service, ASes use one-hop paths. This special kind of path handles beaconing between neighboring ASes for which no forwarding path may be available yet. It is the task of beaconing to discover such forwarding paths and the purpose of one-hop paths is to break this circular dependency. The One-Hop Path Type is described in more detail in <xref target="I-D.dekater-scion-dataplane"/>.</t>
          <section anchor="intra-prop">
            <name>Propagation of PCBs in Intra-ISD Beaconing</name>
            <t>The propagation process in intra-ISD beaconing includes the following steps:</t>
            <ol spacing="normal" type="1"><li>
                <t>From the candidate PCBs stored in the Beacon Store, the Control Service of an AS selects the best PCBs to propagate to its downstream neighboring ASes, based on a selection algorithm specific for this AS.</t>
              </li>
              <li>
                <t>The Control Service adds a new AS entry to every selected PCB which <bcp14>MUST</bcp14> at least include:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>The ingress interface to this AS, in the Hop Field component.</t>
                  </li>
                  <li>
                    <t>The egress interface to the neighboring AS, also in the Hop Field component.</t>
                  </li>
                  <li>
                    <t>The ISD_AS number of the next AS, in the signed body component of the AS entry.</t>
                  </li>
                  <li>
                    <t>If the AS has peering links, the Control Service <bcp14>MAY</bcp14> add corresponding peer entry components to the signed body of the AS entry; one peer entry component for each peering link that the AS wants to advertise. The Hop Field component of each added peer entry <bcp14>MUST</bcp14> have a specified egress interface.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>The Control Service <bcp14>MUST</bcp14> now sign each selected, extended PCB and append the computed signature.</t>
              </li>
              <li>
                <t>As a final step, the Control Service propagates each extended PCB to the correct neighboring ASes by invoking the <tt>SegmentCreationService.Beacon</tt> remote procedure call (RPC) in the Control Services of the neighboring ASes (see also <xref target="prop-proto"/>).</t>
              </li>
            </ol>
          </section>
          <section anchor="propagation-of-pcbs-in-core-beaconing">
            <name>Propagation of PCBs in Core Beaconing</name>
            <t>The propagation process in core beaconing includes the following steps:</t>
            <ol spacing="normal" type="1"><li>
                <t>The core Control Service selects the best PCBs to forward to neighboring core ASes observed so far.</t>
              </li>
              <li>
                <t>The service adds a new AS entry to every selected PCB which <bcp14>MUST</bcp14> at least include:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>The egress interface to the neighboring core AS in the Hop Field component.</t>
                  </li>
                  <li>
                    <t>The ISD_AS number of the neighboring core AS in the signed body component of the AS entry.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>The core Control Service <bcp14>MUST</bcp14> sign the extended PCBs and append the computed signature.</t>
              </li>
              <li>
                <t>As a final step, the service propagates the extended PCBs to the neighboring core ASes by invoking the <tt>SegmentCreationService.Beacon</tt> remote procedure call (RPC) in the Control Services of the neighboring core ASes (see also <xref target="prop-proto"/>).</t>
              </li>
            </ol>
          </section>
          <section anchor="prop-proto">
            <name>Propagation of PCBs in Protobuf Message Format</name>
            <t>The last step of the above described core and intra-ISD propagation procedures is implemented as follows in Protobuf message format:</t>
            <artwork><![CDATA[
   service SegmentCreationService {
       rpc Beacon(BeaconRequest) returns (BeaconResponse) {}
   }

   message BeaconRequest {
       PathSegment segment = 1;
   }

   message BeaconResponse {}
]]></artwork>
            <t>The propagation procedure includes the following elements:</t>
            <ul spacing="normal">
              <li>
                <t><tt>SegmentCreationService</tt>: Specifies the service via which the extended PCB is propagated to the Control Service of the neighboring AS.
                </t>
                <ul spacing="normal">
                  <li>
                    <t><tt>Beacon</tt>: Specifies the method that calls the Control Service at the neighboring AS in order to propagate the extended PCB.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t><tt>BeaconRequest</tt>: Specifies the request message sent by the <tt>Beacon</tt> method to the Control Service of the neighboring AS. It contains the following element:
                </t>
                <ul spacing="normal">
                  <li>
                    <t><tt>PathSegment</tt>: Specifies the path segment to propagate to the neighboring AS. For more information on the Protobuf message type <tt>PathSegment</tt>, see <xref target="segment"/>.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t><tt>BeaconResponse</tt>: An empty message returned as an acknowledgement upon success.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
    </section>
    <section anchor="deployment-considerations">
      <name>Deployment Considerations</name>
      <section anchor="monitoring-considerations">
        <name>Monitoring Considerations</name>
        <t>In order to maintain service availability, an AS <bcp14>SHOULD</bcp14> monitor the following aspects when deploying the SCION control plane:</t>
        <ul spacing="normal">
          <li>
            <t>For routers (to enable correlation with link states): state of configured links (core, child, parent)</t>
          </li>
          <li>
            <t>For any control service:
            </t>
            <ul spacing="normal">
              <li>
                <t>Fraction of path lookups served successfully (see <xref target="lookup"/>)</t>
              </li>
              <li>
                <t>Time synchronization offset with other ASes (see <xref target="clock-inaccuracy"/>)</t>
              </li>
              <li>
                <t>Fraction of ASes found in non-expired segments for which a non-expired certificate exists</t>
              </li>
            </ul>
          </li>
          <li>
            <t>For a core AS:
            </t>
            <ul spacing="normal">
              <li>
                <t>Fraction of core ASes (preferably only those to which the link is up) that can be found in non-expired core segments</t>
              </li>
              <li>
                <t>Fraction of ASes, core or children, (preferably only those to which the link is up) whereto a beacon was initiated during the last propagation interval</t>
              </li>
              <li>
                <t>Fraction of freshly propagated beacons for which at least one corresponding down segment has been registered (see <xref target="path-segment-reg"/>)</t>
              </li>
            </ul>
          </li>
          <li>
            <t>For a non-core AS:
            </t>
            <ul spacing="normal">
              <li>
                <t>Number of up segments available (may be just 0/non-0) younger than the propagation interval (or some multiple thereof).</t>
              </li>
              <li>
                <t>Fraction of up segments that were successfully registered as down segments (see <xref target="path-segment-reg"/>).</t>
              </li>
              <li>
                <t>Fraction of children ASes (preferably only those to which the link is up) whereto a beacon was propagated during the last propagation interval</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="clock-inaccuracy">
        <name>Effects of Clock Inaccuracy</name>
        <t>A PCB originated by a given Control Service is validated by all the Control Services that receive it. All have different clocks and their differences affect the validation process:</t>
        <ul spacing="normal">
          <li>
            <t>A fast clock at origination or a slow clock at reception will yield a lengthened expiration time for hops, and possibly an origination time in the future.</t>
          </li>
          <li>
            <t>A slow clock at origination or a fast clock at reception will yield a shortened expiration time for hops, and possibly an expiration time in the past.</t>
          </li>
        </ul>
        <t>This bias comes in addition to a structural delay: PCBs are propagated at a configurable interval - typically around one minute. As a result of this and the way they are iteratively constructed, PCBs with N hops may be validated up to N intervals (so maximally N minutes) after origination which creates a constraint on the expiration of hops. Hops of the minimal expiration time (337.5 seconds - see <xref target="hopfield"/>) would make any PCB describing a path longer than 5 hops expire. For this reason it is unadvisable to create hops with a short expiration time - they <bcp14>SHOULD</bcp14> be around 6 hours.</t>
        <t>The Control Service and its clients authenticate each-other according to their respective AS's certificate. Path segments are authenticated based on the certificates of the ASes that they refer to. The <bcp14>RECOMMENDED</bcp14> expiration time of a SCION AS certificate is between 3h and 3 days. Some deployments use up to 5 days.
In comparison to these time scales, clock offsets in the order of minutes are immaterial.</t>
        <t>Each administrator of a SCION Control Service is responsible for maintaining sufficient clock accuracy. No particular method is assumed by this specification.</t>
      </section>
      <section anchor="scalability">
        <name>Path Discovery Time and Scalability</name>
        <t>The path discovery mechanism balances the number of discovered paths and the time it takes to discover them versus resource overhead of the discovery.</t>
        <t>The resource costs for path discovery are as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Communication overhead is transmitting the PCBs and occasionally obtaining the required PKI material.</t>
          </li>
          <li>
            <t>Processing overhead is validating the signatures of the AS entries, signing new AS entries, and to a lesser extent, evaluating the beaconing policies.</t>
          </li>
          <li>
            <t>Storage overhead is both the temporary storage of PCBs before the next propagation interval, and the storage of complete discovered path segments.</t>
          </li>
        </ul>
        <t>All of these are dependent on the number and length of the discovered path segments, i.e. the total number of AS entries of the discovered path segments.</t>
        <t>Interesting metrics for scalability and speed of path discovery are the time until all discoverable path segments have been discovered after a network bootstrap, and the time until new link is usable. In general, the time until a specific PCB is built depends on its length, the propagation interval, and whether on-path ASes use "fast recovery".</t>
        <t>At each AS, the PCB will be processed and propagated at the subsequent propagation event. As propagation events are not synchronized between different ASes, a PCB arrives at a random point in time during the interval and may be buffered before potentially being propagated. With a propagation interval T at each AS, the mean time until the PCB is propagated in one AS therefore is T / 2 and the mean total time for the propagation steps of a PCB of length L is at worst L * T / 2 (with a variance of L * T^2 / 12).</t>
        <t>Note that link removal is not part of path discovery in SCION. For scheduled removal of links, operators let path segments expire. On link failures, endpoints route around the failed link by switching to different paths in the data plane.</t>
        <t>To achieve scalability, SCION partitions ASes into ISDs and in an ideal topology the inter-ISD core network should be kept to a moderate size. For more specific observations, we distinguish between intra-ISD and inter-ISD beaconing.</t>
        <section anchor="intra-isd-beaconing">
          <name>Intra-ISD Beaconing</name>
          <t>In the intra-ISD beaconing, PCBs are propagated top down along parent-child links from core to leaf ASes. Each AS discovers path segments from itself to the core ASes of its ISD.</t>
          <t>This typically produces an acyclic graph which is narrow at the top, widens towards the leafs, and is relatively shallow. Intermediate provider ASes will have a large number of children, while they only have a small number of parents and the chain of intermediate providers from a leaf AS to a core AS is typically not long (e.g. local, regional, national provider, then core).</t>
          <t>Each AS potentially receives PCBs for all down path segments from the core to itself. While the number of distinct provider chains to the core is typically moderate, the multiplicity of links between provider ASes has multiplicative effect on the number of PCBs. Once this number grows above the maximum recommended best PCBs set size of 50, ASes <bcp14>SHOULD</bcp14> trim the set of PCBs propagated.</t>
          <t>Ultimately, the number of PCBs received by an AS per propagation interval remains bounded by 50 for each parent link of an AS, and at most 50 PCBs per child link are propagated. The length of these PCBs and thus the number of AS entries to be processed and stored, is expected to be moderate and not grow considerably with network size. The total resource overhead for beacon propagation is easily manageable even for highly connected ASes.</t>
          <t>To illustrate this, an AS with a rather large number of 100 parent links receives at most 5000 PCBs during a propagation interval. Assuming a generous average length of 10 AS entries for these PCBs, this corresponds to 50000 AS entries.</t>
          <t>Due to the variable length fields in AS entries, the sizes for storage and transmission cannot be predicted exactly, but assume an average of 250 bytes per AS entry. At the shortest recommended propagation interval of 5 seconds, this corresponds to an average bandwidth of around 2.5 MB/s and the processing of 10000 signature verifications per second.</t>
          <t>If the same AS has 1000 child links, the propagation of the beacons will require signing one new AS entry for each of the propagated PCBs for each link (at most 50 per link), i.e. at most 50000 signatures per propagation event. The total bandwidth for the propagation of these PCBs for all 1000 child links would, be roughly around 25 MB/s which is manageable with even modest consumer hardware.</t>
          <t>On a network bootstrap, path segments to each AS are discovered within a number of propagation steps proportional to the longest path. With a 5 second propagation interval and a generous longest path of length 10, all path segments are discovered after 25 seconds on average. When all ASes start propagation just after they've received the first PCBs from any of their upstreams (see 'fast recovery'), the construction of a first path to connect each AS to the ISD core is accelerated.</t>
          <t>When a new parent-child link is added to the network, the parent AS will propagate the available PCBs in the next propagation event. If the AS on the child side of the new link is a leaf AS, path discovery is thus complete after at most one propagation interval. Otherwise, child ASes at distance D below the new link, learn of the new link after at worst D further propagation intervals.</t>
        </section>
        <section anchor="inter-isd-beaconing">
          <name>Inter-ISD Beaconing</name>
          <t>In the inter-ISD core beaconing, PCBs are propagated omnidirectionally along core links. Each AS discovers path segments from itself to any other core AS.</t>
          <t>The number of distinct paths through the core network is typically very large. To keep the overhead manageable, at most 5 path segments to every destination AS are discovered and the propagation frequency is slower than in the intra-ISD beaconing (at least 60 seconds between propagation events).</t>
          <t>Without making strong assumptions on the topology of the core network, we can assume that shortest paths through real world networks are relatively short: e.g. the Barabási-Albert random graph model predicts a diameter of log(N)/log(log(N)) for a network with N nodes <xref target="BollRio-2000"/> and The average distance scales in the same way. Whilst we cannot assume that the selected PCBs are strictly the shortest paths through the network, they are likely to be not very much longer than the shortest paths either.</t>
          <t>With N the number of participating core ASes, an AS receives up to 5 * N PCBs per propagation interval per core link interface. For highly connected ASes, the number of PCBs received thus becomes rather large and in a network of 1000 ASes, a AS with 300 core links receives up to 1.5 million PCBs per propagation interval.</t>
          <t>Assuming an average PCB length of 6 and the shortest propagation interval of 60 seconds, this corresponds to roughly 150 thousand signature validations per second or roughly 38 MB/s. For much larger, more highly connected ASes, the path discovery tasks of the Control Service can be distributed over many instances in order to increase the PCB throughput.</t>
          <t>On a network bootstrap, full connectivity is obtained after a number of propagation steps corresponding to the diameter of the network. Assuming a network diameter of 6, this corresponds to roughly 3 minutes on average. When a new link is added to the network, it will be available to connect two ASes at distances D1 and D2 from the link, respectively, at worst after a mean time (D1+D2)*T/2.</t>
        </section>
      </section>
    </section>
    <section anchor="path-segment-reg">
      <name>Registration of Path Segments</name>
      <t><strong>Path registration</strong> is the process where an AS transforms selected PCBs into path segments, and adding these segments to the relevant path databases thereby making them available to other ASes.</t>
      <t>As mentioned previously, a non-core AS typically receives several PCBs representing several path segments to the core ASes of the ISD the AS belongs to. Out of these PCBs, the non-core AS selects those down path segments through which it wants to be reached, based on AS-specific selection criteria.</t>
      <t>The next step is to register the selected down segments with the Control Service of the relevant core ASes in accordance with a process called <em>intra-ISD path segment registration</em>. As a result, a core AS's Control Service contains all intra-ISD path segments registered by the non-core ASes of its ISD. In addition, each core AS Control Service also stores the preferred core path segments to other core ASes during the <em>core segment registration</em> process.</t>
      <t>Both processes are described below.</t>
      <section anchor="intra-reg">
        <name>Intra-ISD Path Segment Registration</name>
        <t>Every <em>registration period</em> (determined by each AS), the AS's Control Service selects two sets of PCBs to transform into two types of path segments:</t>
        <ul spacing="normal">
          <li>
            <t>Up segments, which allow the infrastructure entities and endpoints in this AS to communicate with core ASes; and</t>
          </li>
          <li>
            <t>Down segments, which allow remote entities to reach this AS.</t>
          </li>
        </ul>
        <t>The up segments and down segments do not have to be equal as AS may want to communicate with core ASes via one or more up segments that differ from the down segment(s) through which it wants to be reached. Therefore, an AS can define different selection policies for the up segment and down segment sets. In addition, the processes of transforming a PCB in an up segment or a down segment differ slightly.</t>
        <section anchor="term-pcb">
          <name>Terminating a PCB</name>
          <t>Both the up segments and down segments end at the AS, so by transforming a PCB into a path segment, an AS "terminates" the PCB for this AS ingress interface and at that moment in time.</t>
          <t>The Control Service of a non-core AS <bcp14>MUST</bcp14> perform the following steps to "terminate" a PCB:</t>
          <ol spacing="normal" type="1"><li>
              <t>The Control Service adds a new AS entry to the PCB which <bcp14>MUST</bcp14> be defined as follows:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The next AS <bcp14>MUST NOT</bcp14> be specified.
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>In Protobuf message format, this means that the value of the <tt>next_isd_as</tt> field in the <tt>ASEntrySignedBody</tt> component <bcp14>MUST</bcp14> be "0".</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>The egress interface in the Hop Field component <bcp14>MUST NOT</bcp14> be specified.
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>In Protobuf message format, this means that the value of the <tt>egress</tt> field in the <tt>HopField</tt> component <bcp14>MUST</bcp14> be "0".</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>If the AS has peering links, the Control Service <bcp14>MAY</bcp14> add corresponding peer entry components to the signed body of the AS entry - one peer entry component for each peering link that the AS wants to advertise. The egress interface ID in the Hop Field component of each added peer entry <bcp14>MUST NOT</bcp14> be specified.
              </t>
              <ul spacing="normal">
                <li>
                  <t>In Protobuf message format, this means that the value of the <tt>egress</tt> field in the <tt>HopField</tt> component <bcp14>MUST</bcp14> be "0".</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The Control Service <bcp14>MUST</bcp14> sign the modified PCB and append the computed signature.</t>
            </li>
          </ol>
          <t><strong>Note:</strong></t>
          <ul spacing="normal">
            <li>
              <t>For more information on the signed body component of an AS entry, see <xref target="ase-sign"/>.</t>
            </li>
            <li>
              <t>For more information on a peer entry, see <xref target="peerentry"/>.</t>
            </li>
            <li>
              <t>For more information on the Hop Field component, see <xref target="hopfield"/>.</t>
            </li>
            <li>
              <t>For more information on signing an AS entry, see <xref target="sign"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="transforming-a-pcb-into-an-up-segment">
          <name>Transforming a PCB into an Up Segment</name>
          <t>Every registration period, the Control Service of a non-core AS performs the following steps to transform PCBs into up segments:</t>
          <ol spacing="normal" type="1"><li>
              <t>The Control Service selects the PCBs that it wants to transform into up segments from the candidate PCBs in the Beacon Store.</t>
            </li>
            <li>
              <t>The Control Service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>up segments</strong>.</t>
            </li>
            <li>
              <t>The Control Service adds the newly created up segments to its own path database.</t>
            </li>
          </ol>
          <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
        </section>
        <section anchor="transforming-a-pcb-into-a-down-segment">
          <name>Transforming a PCB into a Down Segment</name>
          <t>Every registration period, the Control Service of a non-core AS performs the following steps to transform PCBs into down segments:</t>
          <ol spacing="normal" type="1"><li>
              <t>The Control Service selects the PCBs that it wants to transform into down segments from the candidate PCBs in the Beacon Store.</t>
            </li>
            <li>
              <t>The Control Service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>down segments</strong>.</t>
            </li>
            <li>
              <t>The Control Service registers the newly created down segments with the Control Services of the core ASes that originated the corresponding PCBs. This is done by invoking the <tt>SegmentRegistrationService.SegmentsRegistration</tt> remote procedure call (RPC) in the Control Services of the relevant core ASes (see also <xref target="reg-proto"/>). The first ISD-AS entry of the path segment <bcp14>SHOULD</bcp14> be equal to the core ISD-AS where the segment is being registered. If not, the core AS <bcp14>SHOULD</bcp14> reject the segment.</t>
            </li>
          </ol>
          <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
        </section>
      </section>
      <section anchor="core-path-segment-registration">
        <name>Core Path Segment Registration</name>
        <t>The core beaconing process creates path segments from core AS to core AS. These core segments are then added to the Control Service path database of the core AS that created the segment, so that local and remote endpoints can obtain and use these core segments. In contrast to the intra-ISD registration procedure, there is no need to register core segments with other core ASes as each core AS will receive PCBs originated from every other core AS.</t>
        <t>In every registration period, the Control Service of a core AS performs the following operations:</t>
        <ol spacing="normal" type="1"><li>
            <t>The core Control Service selects the best PCBs towards each core AS observed so far.</t>
          </li>
          <li>
            <t>The core Control Service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>core segments</strong>.</t>
          </li>
          <li>
            <t>The Control Service adds the newly created core segments to its own path database.</t>
          </li>
        </ol>
        <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
      </section>
      <section anchor="reg-proto">
        <name>Path Segment Registration gRPC API</name>
        <t>The Control Service of a non-core AS has to register the newly created down segments with the Control Services of the core ASes that originated the corresponding PCBs. This registration step is implemented as follows in Protobuf message format:</t>
        <artwork><![CDATA[
   enum SegmentType {
       SEGMENT_TYPE_UNSPECIFIED = 0;
       SEGMENT_TYPE_UP = 1;
       SEGMENT_TYPE_DOWN = 2;
       SEGMENT_TYPE_CORE = 3;
   }

   service SegmentRegistrationService {
       rpc SegmentsRegistration(SegmentsRegistrationRequest) returns (
         SegmentsRegistrationResponse) {}
   }

   message SegmentsRegistrationRequest {
       message Segments {
           repeated PathSegment segments = 1;
       }

       map<int32, Segments> segments = 1;
   }

   message SegmentsRegistrationResponse {}
]]></artwork>
        <ul spacing="normal">
          <li>
            <t><tt>SegmentType</tt>: Specifies the type of the path segment to be registered. Currently, only the following type is used:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>SEGMENT_TYPE_DOWN</tt>: Specifies a down segment.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><tt>map&lt;int32, Segments&gt; segments</tt>: Represents a separate list of segments for each path segment type. The key is the integer representation of the corresponding <tt>SegmentType</tt>.</t>
          </li>
          <li>
            <t><tt>SegmentRegistrationResponse</tt>: an empty message returned as an acknowledgement upon success.</t>
          </li>
        </ul>
      </section>
      <section anchor="path-mtu">
        <name>Path MTU</name>
        <t>SCION paths represent a sequence of ASes and inter-AS links; each with possibly different MTUs. As a result, the path MTU is the minimum of the MTUs of each inter-AS link and intra-AS networks it traverses. Such MTU information is disseminated during path construction:</t>
        <ul spacing="normal">
          <li>
            <t>The MTU of each intra-AS network traversed (represented by the MTU field of the corresponding <xref target="ase-sign">AS Entries</xref>)</t>
          </li>
          <li>
            <t>The MTU of each inter-AS link or peering link (indicated by the ingress_mtu field of each <xref target="hopentry"/> or the peer_mtu field of each <xref target="peerentry"/> used)</t>
          </li>
        </ul>
        <t>Such information is then made available to endpoints during the path lookup process (See <xref target="lookup"/>). SCION endpoints are oblivious to the topology of intermediate ASes, therefore when looking up a path they <bcp14>MUST</bcp14> assume that all hops are constrained by the intra-AS MTU of each AS traversed.</t>
      </section>
    </section>
    <section anchor="lookup">
      <name>Path Lookup</name>
      <t>The <em>path lookup</em> is a fundamental building block of SCION's path management as it enables endpoints to obtain path segments found during path exploration and registered during path registration. This allows the endpoints to construct end-to-end paths from the set of possible path segments returned by the path lookup process. The lookup of paths still happens in the control plane, whereas the construction of the actual end-to-end paths happens in the data plane.</t>
      <section anchor="lookup-process">
        <name>Lookup Process</name>
        <t>An endpoint (source) that wants to start communication with another endpoint (destination) requires up to three path segments:</t>
        <ul spacing="normal">
          <li>
            <t>An up segment to reach the core of the source ISD (only if the source endpoint is a non-core AS);</t>
          </li>
          <li>
            <t>a core segment to reach
            </t>
            <ul spacing="normal">
              <li>
                <t>another core AS in the source ISD, in case the destination AS is in the same source ISD, or;</t>
              </li>
              <li>
                <t>a core AS in a remote ISD, if the destination AS is in another ISD, and;</t>
              </li>
            </ul>
          </li>
          <li>
            <t>a down segment to reach the destination AS.</t>
          </li>
        </ul>
        <t>The actual number of required path segments depends on the location of the destination AS as well as on the availability of shortcuts and peering links. More information on combining and constructing paths is provided by <xref target="I-D.dekater-scion-dataplane"/>.</t>
        <t>The process to look up and fetch path segments consists of the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>The source endpoint queries the Control Service in its own AS (i.e. the source AS) for the required segments by sending a SegmentsRequest. The Control Service has up segments stored in its path database and additionally checks if it has appropriate core segments and down segments stored as well - in this case it returns them immediately in a SegmentsResponse.</t>
          </li>
          <li>
            <t>If there are no appropriate core segments and down segments, the Control Service in the source AS queries the Control Services of the reachable core ASes in the source ISD for core segments to core ASes in the destination ISD. To reach the core Control Services, the Control Service of the source AS uses the locally stored up segments.</t>
          </li>
          <li>
            <t>The Control Service of the source AS combines up segments with the newly retrieved core segments. The Control Service then queries the Control Services of the remote core ASes in the destination ISD to fetch down segments to the destination AS. To reach the remote core ASes, the Control Service of the source AS uses the previously obtained and combined up segments and core segments.</t>
          </li>
          <li>
            <t>The Control Service of the source AS returns all retrieved path segments to the source endpoint.</t>
          </li>
          <li>
            <t>Once it has obtained all path segments, the source endpoint combines them into an end-to-end path in the data plane.</t>
          </li>
          <li>
            <t>The destination endpoint, once it receives the first packet, <bcp14>MAY</bcp14> revert the path in the received packet in order to construct a response. This ensures that traffic flows on the same path bidirectionally.</t>
          </li>
        </ol>
        <t><xref target="_table-3"/> below shows which Control Service provides the source endpoint with which type of path segment.</t>
        <table anchor="_table-3">
          <name>Control services responsible for different types of path segments</name>
          <thead>
            <tr>
              <th align="left">Segment Type</th>
              <th align="left">Responsible Control Service(s)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Up-segment</td>
              <td align="left">Control service of the source AS</td>
            </tr>
            <tr>
              <td align="left">Core-segment</td>
              <td align="left">Control service of core ASes in source ISD</td>
            </tr>
            <tr>
              <td align="left">Down-segment</td>
              <td align="left">Control service of core ASes in destination ISD (either the local ISD or a remote ISD)</td>
            </tr>
          </tbody>
        </table>
        <section anchor="sequence-of-lookup-requests">
          <name>Sequence of Lookup Requests</name>
          <t>The overall sequence of requests to resolve a path <bcp14>SHOULD</bcp14> be as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Request up segments for the source endpoint at the Control Service of the source AS.</t>
            </li>
            <li>
              <t>Request core segments, which start at the core ASes that are reachable with up segments, and end at the core ASes in the destination ISD. If the destination ISD coincides with the source ISD, this step requests core segments to core ASes that the source endpoint cannot directly reach with an up segment.</t>
            </li>
            <li>
              <t>Request down segments starting at core ASes in the destination ISD.</t>
            </li>
          </ol>
          <t>The segment lookup API gRPC definition can be found in <xref target="_figure-11"/>.</t>
        </section>
        <section anchor="caching">
          <name>Caching</name>
          <t>For the sake of efficiency, the Control Service of the source AS <bcp14>SHOULD</bcp14> cache each returned path segment request. Caching ensures that path lookups are fast for frequently used destinations and is also essential to ensure that the path lookup process is scalable and can be performed with low latency.</t>
          <t>In general, to improve overall efficiency, the Control Services of all ASes <bcp14>SHOULD</bcp14> do the following:</t>
          <ul spacing="normal">
            <li>
              <t>Cache the returned path segments.</t>
            </li>
            <li>
              <t>Send requests in parallel when requesting path segments from other Control Services.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="behavior-of-actors-in-the-lookup-process">
        <name>Behavior of Actors in the Lookup Process</name>
        <t>As described above, the source endpoint resolves paths with a sequence of segment requests to the Control Service of the source AS. The Control Service in the source AS either answers directly or forwards these requests to the responsible Control Services of core ASes. In SCION, the instances that handle these segment requests at the Control Services are called <em>source AS segment-request handler</em> and <em>core AS segment-request handler</em>, respectively.</t>
        <t>This section specifies the behavior of the segment request handlers in the lookup process.</t>
        <section anchor="wildcard">
          <name>Use of Wildcard Addresses in the Lookup Process</name>
          <t>Endpoints can use wildcard addresses to designate any core AS in path segment requests. The segment request handlers <bcp14>MUST</bcp14> expand these wildcard addresses and translate them into one or more actual addresses. <xref target="_table-4"/> below shows who is responsible for what.</t>
          <t><strong>Note:</strong> For general information on the use of wildcard addresses in SCION, see <xref target="serv-disc"/>.</t>
          <table anchor="_table-4">
            <name>Use of wildcards in path segments requests</name>
            <thead>
              <tr>
                <th align="left">Segment Request</th>
                <th align="left">Wildcard Represents</th>
                <th align="left">Expanded/Translated By</th>
                <th align="left">Translated Into</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Up segment</td>
                <td align="left">"Destination" core AS (where up segment ends)</td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address destination core AS in source ISD</td>
              </tr>
              <tr>
                <td align="left">Core segment</td>
                <td align="left">Source core AS (where core segment starts)<sup>1</sup></td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address source core AS in source ISD</td>
              </tr>
              <tr>
                <td align="left">Core segment</td>
                <td align="left">Destination core AS (where core segment ends)</td>
                <td align="left">Control service of the <em>source core AS</em></td>
                <td align="left">Actual address destination core AS in destination ISD</td>
              </tr>
              <tr>
                <td align="left">Down segment</td>
                <td align="left">"Source" core AS (where down segment starts)<sup>2</sup></td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address source core AS in destination ISD</td>
              </tr>
            </tbody>
          </table>
          <t>1) Includes all core ASes for which an up segment from the source AS exists.<br/>
2) Includes all core ASes in destination ISD with a down segment to destination AS.</t>
        </section>
        <section anchor="segment-request-handler-of-a-non-core-source-as">
          <name>Segment-Request Handler of a Non-Core Source AS</name>
          <t>When the segment request handler of the Control Service of a <em>non-core</em> source AS receives a path segment request, it <bcp14>MUST</bcp14> proceed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Determine the requested segment type.</t>
            </li>
            <li>
              <t>In the case of an up segment request, look up matching up segments in the path database and return them.</t>
            </li>
            <li>
              <t>In the case of a core segment request from a source core AS to a destination core AS:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Expand the source wildcard into separate requests for each reachable core AS in the source ISD.</t>
                </li>
                <li>
                  <t>For each core segment request;
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If possible, return matching core segments from cache;</t>
                    </li>
                    <li>
                      <t>Otherwise, request the core segments from the Control Services of each reachable core AS at the source of the core segment, and then add the retrieved core segments to the cache.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>In the case of a down segment request:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Expand the source wildcard into separate requests for every core AS in the destination ISD (destination ISD refers to the ISD to which the destination endpoint belongs).</t>
                </li>
                <li>
                  <t>For each segment request;
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If possible, return matching down segments from cache;</t>
                    </li>
                    <li>
                      <t>Otherwise, request the down segment from the Control Services of the core ASes at the source of the down segment. Sending the request may require looking up core segments to the source core AS of the down segment, and then adding the retrieved down segments to the cache.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="segment-request-handler-of-a-core-as">
          <name>Segment-Request Handler of a Core AS</name>
          <t>When the segment request handler of a <em>core AS</em> Control Service receives a path segment request, it <bcp14>MUST</bcp14> proceed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Validate the request:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The source of the path segment <bcp14>MUST</bcp14> be this core AS.</t>
                </li>
                <li>
                  <t>The request <bcp14>MUST</bcp14> either be;
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>for a core segment to a core AS in this ISD or another ISD, or;</t>
                    </li>
                    <li>
                      <t>for a down segment to an AS in this ISD.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>If the destination is a core or wildcard address, then load matching core segments from the path database and return.</t>
            </li>
            <li>
              <t>Otherwise, load the matching down segments from the path database and return.</t>
            </li>
          </ol>
          <t><xref target="app-c"/> shows by means of an illustration how the lookup of path segments in SCION works.</t>
        </section>
      </section>
    </section>
    <section anchor="scmp">
      <name>SCMP</name>
      <t>The SCION Control Message Protocol (SCMP) provides functionality for network diagnostics, such as traceroute, and error messages that signal packet processing or network-layer problems. SCMP is a helpful tool for network diagnostics and, in the case of External Interface Down and Internal Connectivity Down messages, a signal for endpoints to detect network failures more rapidly and fail-over to different paths. However, SCION nodes should not strictly rely on the availability of SCMP, as this protocol may not be supported by all devices and/or may be subject to rate limiting.</t>
      <t>This document specifies only messages <bcp14>RECOMMENDED</bcp14> for the purposes of path diagnosis and recovery. An extended specification, still a work in progress, can be found in <xref target="SCMP"/>.</t>
      <section anchor="general-format">
        <name>General Format</name>
        <t>Every SCMP message is preceded by a SCION header, and zero or more SCION extension headers. The SCMP header is identified by a <tt>NextHdr</tt> value of <tt>202</tt> in the immediately preceding header.</t>
        <t>The messages have the following general format:</t>
        <figure anchor="_figure-scmp-format">
          <name>SCMP message format</name>
          <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |     Code      |           Checksum            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                       Type-dependent Block                    |
    +                                                               +
    |                         (variable length)                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <t><tt>Type</tt>: it indicates the type of SCMP message. Its value determines the format of the type-dependent block.</t>
          </li>
          <li>
            <t><tt>Code</tt>: it provides additional granularity to the SCMP type.</t>
          </li>
          <li>
            <t><tt>Checksum</tt>: it is used to detect data corruption.</t>
          </li>
          <li>
            <t><tt>Type-dependent Block</tt>: optional field of variable length which format is dependent on the message type.</t>
          </li>
        </ul>
      </section>
      <section anchor="message-types">
        <name>Message Types</name>
        <t>SCMP messages are grouped into two classes: error messages and informational messages. Error messages are identified by a zero in the high-order bit of the type value. I.e., error messages have a type value in the range of 0-127. Informational messages have type values in the range of 128-255.</t>
        <t>This specification defines the message formats for the following SCMP messages:</t>
        <table>
          <name>error messages types</name>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">Reserved for future use</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">
                <xref target="packet-too-big">Packet Too Big</xref></td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Reserved for future use</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Reserved for future use</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">
                <xref target="external-interface-down">External Interface Down</xref></td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">
                <xref target="internal-connectivity-down">Internal Connectivity Down</xref></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">100</td>
              <td align="left">Private Experimentation</td>
            </tr>
            <tr>
              <td align="left">101</td>
              <td align="left">Private Experimentation</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">127</td>
              <td align="left">Reserved for expansion of SCMP error messages</td>
            </tr>
          </tbody>
        </table>
        <table>
          <name>informational messages types</name>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">128</td>
              <td align="left">
                <xref target="echo-request">Echo Request</xref></td>
            </tr>
            <tr>
              <td align="left">129</td>
              <td align="left">
                <xref target="echo-reply">Echo Reply</xref></td>
            </tr>
            <tr>
              <td align="left">130</td>
              <td align="left">
                <xref target="traceroute-request">Traceroute Request</xref></td>
            </tr>
            <tr>
              <td align="left">131</td>
              <td align="left">
                <xref target="traceroute-reply">Traceroute Reply</xref></td>
            </tr>
            <tr>
              <td align="left">200</td>
              <td align="left">Private Experimentation</td>
            </tr>
            <tr>
              <td align="left">201</td>
              <td align="left">Private Experimentation</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">255</td>
              <td align="left">Reserved for expansion of SCMP informational messages</td>
            </tr>
          </tbody>
        </table>
        <t>Type values 100, 101, 200, and 201 are reserved for private experimentation.</t>
        <t>All other values are reserved for future use.</t>
      </section>
      <section anchor="checksum-calculation">
        <name>Checksum Calculation</name>
        <t>The checksum is the 16-bit one's complement of the one's complement sum of the
entire SCMP message, starting with the SCMP message type field, and prepended
with a "pseudo-header" consisting of the SCION address header and the Layer 4
protocol type as defined in <xref target="I-D.dekater-scion-dataplane"/> section "SCION Header Specification/Pseudo Header for Upper-Layer Checksum".</t>
      </section>
      <section anchor="processing-rules">
        <name>Processing Rules</name>
        <t>Implementations <bcp14>MUST</bcp14> respect the following rules when processing SCMP messages:</t>
        <ul spacing="normal">
          <li>
            <t>If an SCMP error message of unknown type is received at its destination, it <bcp14>MUST</bcp14> be passed to the upper-layer process that originated the packet that caused the error, if it can be identified.</t>
          </li>
          <li>
            <t>If an SCMP informational message of unknown type is received, it <bcp14>MUST</bcp14> be silently dropped.</t>
          </li>
          <li>
            <t>Every SCMP error message <bcp14>MUST</bcp14> include as much of the offending SCION packet as possible. The error message packet - including the SCION header and all extension headers - <bcp14>MUST NOT</bcp14> exceed <strong>1232 bytes</strong> in order to fit into the minimum MTU (see <xref target="I-D.dekater-scion-dataplane"/> section "Deployment Considerations/MTU").</t>
          </li>
          <li>
            <t>In case the implementation is required to pass an SCMP error message to the upper-layer process, the upper-layer protocol type is extracted from the original packet in the body of the SCMP error message and used to select the appropriate process to handle the error. In case the upper-layer protocol type cannot be extracted from the SCMP error message body, the SCMP message <bcp14>MUST</bcp14> be silently dropped.</t>
          </li>
          <li>
            <t>An SCMP error message <bcp14>MUST NOT</bcp14> be originated in response to any of the following:
            </t>
            <ul spacing="normal">
              <li>
                <t>An SCMP error message.</t>
              </li>
              <li>
                <t>A packet which source address does not uniquely identify a single node. E.g., an IPv4 or IPv6 multicast address.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>The maximum size 1232 bytes is chosen so that the entire datagram, if encapsulated in UDP and IPv6, does not exceed 1280 bytes (L2 Header excluded). 1280 bytes is the minimum MTU required by IPv6 and it is assumed that, nowadays, this MTU can also be safely expected when using IPv4.</t>
      </section>
      <section anchor="scmp-notification">
        <name>Error Messages</name>
        <section anchor="packet-too-big">
          <name>Packet Too Big</name>
          <figure>
            <name>Packet-too-big format</name>
            <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |     Code      |          Checksum             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |            reserved           |             MTU               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                As much of the offending packet                |
    +              as possible without the SCMP packet              +
    |                    exceeding 1232 bytes.                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
          </figure>
          <table>
            <name>field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">2</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">MTU</td>
                <td align="left">The Maximum Transmission Unit of the next-hop link.</td>
              </tr>
            </tbody>
          </table>
          <t>A <strong>Packet Too Big</strong> message <bcp14>SHOULD</bcp14> be originated by a router in response to a
packet that cannot be forwarded because the packet is larger than the MTU of the
outgoing link. The MTU value is set to the maximum size a SCION packet can have
to still fit on the next-hop link, as the sender has no knowledge of the
underlay.</t>
        </section>
        <section anchor="external-interface-down">
          <name>External Interface Down</name>
          <figure anchor="_figure-22">
            <name>External-interface-down format</name>
            <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |     Code      |          Checksum             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              ISD              |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         AS                    +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +                        Interface ID                           +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                As much of the offending packet                |
    +              as possible without the SCMP packet              +
    |                    exceeding 1232 bytes.                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
          </figure>
          <table>
            <name>field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">5</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">ISD</td>
                <td align="left">The 16-bit ISD identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">AS</td>
                <td align="left">The 48-bit AS identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">Interface ID</td>
                <td align="left">The interface ID of the external link with connectivity issue.</td>
              </tr>
            </tbody>
          </table>
          <t>A <strong>External Interface Down</strong> message <bcp14>SHOULD</bcp14> be originated by a router in response
to a packet that cannot be forwarded because the link to an external AS is broken.
The ISD and AS identifier are set to the ISD-AS of the originating router.
The interface ID identifies the link of the originating AS that is down.</t>
          <t>Recipients can use this information to route around broken data-plane links.</t>
        </section>
        <section anchor="internal-connectivity-down">
          <name>Internal Connectivity Down</name>
          <figure anchor="_figure-23">
            <name>Internal-connectivity-down format</name>
            <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |     Code      |          Checksum             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              ISD              |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         AS                    +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +                   Ingress Interface ID                        +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +                   Egress Interface ID                         +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                As much of the offending packet                |
    +              as possible without the SCMP packet              +
    |                    exceeding 1232 bytes.                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
          </figure>
          <table>
            <name>field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">6</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">ISD</td>
                <td align="left">The 16-bit ISD identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">AS</td>
                <td align="left">The 48-bit AS identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">Ingress ID</td>
                <td align="left">The interface ID of the ingress link.</td>
              </tr>
              <tr>
                <td align="left">Egress ID</td>
                <td align="left">The interface ID of the egress link.</td>
              </tr>
            </tbody>
          </table>
          <t>A <strong>Internal Connectivity Down</strong> message <bcp14>SHOULD</bcp14> be originated by a router in
response to a packet that cannot be forwarded inside the AS because because the
connectivity between the ingress and egress routers is broken. The ISD and AS
identifier are set to the ISD-AS of the originating router. The ingress
interface ID identifies the interface on which the packet enters the AS. The
egress interface ID identifies the interface on which the packet is destined to
leave the AS, but the connection is broken to.</t>
          <t>Recipients can use this information to route around a broken data plane inside an
AS.</t>
        </section>
      </section>
      <section anchor="scmp-information">
        <name>Informational Messages</name>
        <section anchor="echo-request">
          <name>Echo Request</name>
          <figure anchor="_figure-26">
            <name>Echo-request format</name>
            <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |     Code      |          Checksum             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Identifier          |        Sequence Number        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Data (variable Len)                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


]]></artwork>
          </figure>
          <table>
            <name>field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">128</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Identifier</td>
                <td align="left">A 16-bit identifier to aid matching replies with requests</td>
              </tr>
              <tr>
                <td align="left">Sequence Nr.</td>
                <td align="left">A 16-bit sequence number to aid matching replies with requests</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">Variable length of arbitrary data</td>
              </tr>
            </tbody>
          </table>
          <t>Every node <bcp14>SHOULD</bcp14> implement a SCMP Echo responder function that receives Echo Requests and originates corresponding Echo replies.</t>
        </section>
        <section anchor="echo-reply">
          <name>Echo Reply</name>
          <figure anchor="_figure-27">
            <name>Echo-reply format</name>
            <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |     Code      |          Checksum             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Identifier          |        Sequence Number        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Data (variable Len)                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
          </figure>
          <table>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">129</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Identifier</td>
                <td align="left">The identifier of the Echo Request</td>
              </tr>
              <tr>
                <td align="left">Sequence Nr.</td>
                <td align="left">The sequence number of the Echo Request</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">The data of the Echo Request</td>
              </tr>
            </tbody>
          </table>
          <t>Every node <bcp14>SHOULD</bcp14> implement a SCMP Echo responder function that receives Echo Requests and originates corresponding Echo replies.</t>
          <t>The data received in the SCMP Echo Request message <bcp14>MUST</bcp14> be returned entirely and unmodified in the SCMP Echo Reply message.</t>
        </section>
        <section anchor="traceroute-request">
          <name>Traceroute Request</name>
          <figure anchor="_figure-24">
            <name>Traceroute-request format</name>
            <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |     Code      |          Checksum             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Identifier          |        Sequence Number        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              ISD              |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         AS                    +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +                          Interface ID                         +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
          </figure>
          <t>Given a SCION path constituted of hop fields, traceroute allows to identify the corresponding on-path ISD-ASes.</t>
          <table>
            <name>field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">130</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Identifier</td>
                <td align="left">A 16-bit identifier to aid matching replies with requests</td>
              </tr>
              <tr>
                <td align="left">Sequence Nr.</td>
                <td align="left">A 16-bit sequence number to aid matching replies with request</td>
              </tr>
              <tr>
                <td align="left">ISD</td>
                <td align="left">Place holder set to zero by SCMP sender</td>
              </tr>
              <tr>
                <td align="left">AS</td>
                <td align="left">Place holder set to zero by SCMP sender</td>
              </tr>
              <tr>
                <td align="left">Interface ID</td>
                <td align="left">Place holder set to zero by SCMP sender</td>
              </tr>
            </tbody>
          </table>
          <t>A border router is alerted of a Traceroute Request message through the Ingress or Egress Router Alert flag set to 1 in the hop field that describes the traversal of that router in a packet's path (see <xref target="I-D.dekater-scion-dataplane"/> section "SCION Header Specification/Path Header/SCION Path Type/Hop Field"). When such a packet is received, the border router <bcp14>SHOULD</bcp14> reply with a <xref target="traceroute-reply">Traceroute Reply message</xref>.</t>
        </section>
        <section anchor="traceroute-reply">
          <name>Traceroute Reply</name>
          <figure anchor="_figure-25">
            <name>Traceroute-reply format</name>
            <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |     Code      |          Checksum             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Identifier          |        Sequence Number        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              ISD              |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         AS                    +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +                          Interface ID                         +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
          </figure>
          <table>
            <name>field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">131</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Identifier</td>
                <td align="left">The identifier set in the Traceroute Request</td>
              </tr>
              <tr>
                <td align="left">Sequence Nr.</td>
                <td align="left">The sequence number of the Tracroute Request</td>
              </tr>
              <tr>
                <td align="left">ISD</td>
                <td align="left">The 16-bit ISD identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">AS</td>
                <td align="left">The 48-bit AS identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">Interface ID</td>
                <td align="left">The interface ID of the SCMP originating router</td>
              </tr>
            </tbody>
          </table>
          <t>The identifier is set to the identifier value from the <xref target="traceroute-request">Traceroute Request message</xref>. The ISD and AS identifiers are set to the ISD-AS of the originating border router.</t>
        </section>
      </section>
      <section anchor="scmp-authentication">
        <name>SCMP Authentication</name>
        <t>Authentication of SCMP packets is not specified here. In current deployments it is still experimental so endpoints should validate link down messages (<xref target="external-interface-down">External Interface Down</xref> and <xref target="internal-connectivity-down">Internal Connectivity Down</xref>) with additional signals for reliable operations.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As described previously, the goal of SCION’s beaconing process in the control plane is to securely discover and disseminate paths between any two ASes. This section describes security considerations for SCION's Control Plane that focuses on <em>inter</em>-domain routing. SCION does not provide intra-domain routing, nor does it provide end-to-end payload encryption so these topics lie outside the scope of this section.</t>
      <t>This section discusses three kinds of threats to the control plane:</t>
      <ol spacing="normal" type="1"><li>
          <t>When an adversary controls one or all core ASes of an ISD and tries to manipulate the beaconing process from the top down (see <xref target="topdown-manipulate"/>).</t>
        </li>
        <li>
          <t>When "ordinary" (non-core) adversaries try to manipulate the beaconing process (see <xref target="manipulate-beaconing"/>).</t>
        </li>
        <li>
          <t>Denial of Services (DoS) attacks where attackers overload different parts of the infrastructure (see <xref target="dos-cp"/>).</t>
        </li>
      </ol>
      <section anchor="security-properties">
        <name>Security Properties</name>
        <t>The SCION control plane provides various security properties, as discussed below.
Here, an AS is described as 'honest' if its private keys are unknown to the attacker and if it uses a unique interface identifier for each link. An honest path is one that only traverses honest ASes. A honest segment is the one created by an honest AS.</t>
        <t>Security properties are:</t>
        <ul spacing="normal">
          <li>
            <t>Connectivity - For every pair of honest ASes X and Y, X will eventually register enough segments to build at least one path (of any length) leading to Y.</t>
          </li>
          <li>
            <t>Forwarding Path Consistency - For every honest path segment registered in any AS
            </t>
            <ul spacing="normal">
              <li>
                <t>its sequence of AS entries corresponds to a continuous SCION forwarding path in the network of inter-domain links</t>
              </li>
              <li>
                <t>the inter-domain network topology remains unchanged since the segment was first generated.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Loop Freedom - For every honest path segment registered in any AS, its sequence of AS entries contains no duplicates, including current and next ISD-AS and interface IDs.</t>
          </li>
          <li>
            <t>Path Authorization - For every honest path segment registered in any AS and any AS X appearing on that segment (except for the previous one), AS X propagated a PCB corresponding to the segment portion ending in its own entry to its successor AS on the segment.</t>
          </li>
        </ul>
        <t>To ensure that the properties hold across the overall SCION network, all core ASes should be able to reach each other with some sequence of core links, and all non-core ASes should have at least one path up to a core AS. Furthermore, to ensure that the properties hold within a single ISD, all cores ASes of the ISD should be able to reach each other without leaving the ISD, i.e., for every pair of cores in an ISD there is a sequence of SCION links that only traverses ISD members.
A core AS may reach other core ASes in the same ISD via other ISDs. This may be permitted, depending on the ISD's policies.</t>
      </section>
      <section anchor="topdown-manipulate">
        <name>Manipulation of the Beaconing Process by a Core Adversary</name>
        <t>The first risk to the beaconing process comes from an adversary controlling one or more core ASes in an ISD. If the adversary stops all core AS(es) within an ISD from propagating PCBs, the discovery of new paths will halt. In this case, downstream ASes will notice that PCBs are no longer being propagated, but all previously discovered and still valid paths remain usable for data plane forwarding until they expire. This is an unlikely scenario, as it would require compromise of all core ASes within an ISD.</t>
      </section>
      <section anchor="manipulate-beaconing">
        <name>Manipulation of the Beaconing Process by a Non-Core Adversary</name>
        <t>This section examines several possible approaches that could be taken by an "ordinary" non-core adversary to manipulate the beaconing process in the SCION Control Plane. For each case it shows to what extent SCION's design can prevent the corresponding attack or help mitigate it.</t>
        <section anchor="path-hijack">
          <name>Path Hijacking through Interposition</name>
          <t>A malicious AS M might try to manipulate the beaconing process between two neighbor ASes A and B, with the goal to hijack traffic to flow via M. If M can interpose itself on the path between A and B, then it could attempt several potential attacks:</t>
          <ul spacing="normal">
            <li>
              <t>The adversary M could intercept and disseminate a PCB on its way from A to the neighboring AS B, and inject its own AS entry into the PCB toward downstream ASes.</t>
            </li>
            <li>
              <t>The adversary could modify the Hop Fields of an already existing path in order to insert its own AS in the path.</t>
            </li>
            <li>
              <t>The adversary could fully block traffic between AS A and AS B in order to force traffic redirection through an alternate path that includes its own AS.</t>
            </li>
          </ul>
          <t>The first type of attack is detectable and blocked by downstream ASes (e.g. B) because a PCB disseminated by AS A towards AS B contains the "Next ISD AS" field in the entry of AS A, pointing to AS B, and protected by A's signature. If M manipulates the PCB while in flight from A to B, then verification of the manipulated inbound PCBs will fail at AS B, as the adversary's PCBs cannot contain A's correct signature.</t>
          <t>The second type of attack is made impossible by the Hop Field's MAC which protects the Hop Field's integrity and chains it with the previous Hop Fields on the path.</t>
          <t>The third type of attack generally cannot be prevented. However the alternate path would be immediately visible to endpoints as traffic <bcp14>MUST</bcp14> include Hop Fields from AS M.</t>
        </section>
        <section anchor="fake-ases">
          <name>Creation of Spurious ASes and ISDs</name>
          <t>An alternative scenario is when an adversary tries to introduce and spoof a non-existent AS. This would enable the adversary to send traffic with the spoofed AS as a source, allowing the adversary to complicate the detection of its attack and to plausibly deny the misbehavior.</t>
          <t>However, spoofing a new AS requires a registration of that AS with the ISD core to obtain a valid AS certificate, otherwise the adversary cannot construct valid PCBs. As this registration should include a thorough check and authentication by a CA, this cannot be done stealthily which defeats the original purpose.</t>
          <t>Similarly to creating a fake AS, an adversary could try to introduce a new malicious ISD. This involves the generation of its own TRC, finding core ASes to peer with, and convincing other ISDs of its legitimacy to accept the new TRC. Although this setup is not entirely impossible, it requires substantial time and effort and may need the involvement of more than one malicious entity. Here the "costs" of setting up the fake ISD may outweigh the benefits.</t>
        </section>
        <section anchor="peer-link-misuse">
          <name>Peering Link Misuse</name>
          <t>The misuse of a peering link by an adversary represents another type of attack. Consider the case where AS A wants to share its peering link only with one of its downstream neighbors AS B, and therefore selectively includes the peering link only in PCBs sent to B. An adversary may now try to gain access to this peering link by prepending the relevant PCBs to its own path. For this, the adversary needs to be able to (1) eavesdrop on the link from A to B, and (2) obtain the necessary Hop Fields by querying a Control Service and extracting the Hop Fields from registered paths.</t>
          <t>Even if an adversary succeeds in misusing a peering link as described above, SCION is able to mitigate this kind of attack. Each AS includes an egress interface as well as specific “next hop” information to the PCB before disseminating it further downstream. If a malicious entity tries to misuse a stolen PCB by adding it to its own segments, verification will fail upstream as the egress interface mismatches. Therefore, the peering link can only be used by the intended AS.</t>
        </section>
        <section anchor="manipulate-selection">
          <name>Manipulation of the Path-Selection Process</name>
          <t>Endpoint path control is one of the main benefits of SCION compared to the current Internet as SCION endpoints can select inter-domain forwarding paths for each packet. However, with the benefits of path selection comes the risk of endpoints selecting non-optimal paths. This section discusses some mechanisms with which an adversary can attempt to trick endpoints downstream (in the direction of beaconing) into choosing non-optimal paths. The goal of such attacks is to make paths that are controlled by the adversary more attractive than other available paths.</t>
          <t>In SCION, overall path selection is the result of three steps. Firstly, each AS selects which PCBs are further forwarded to its neighbors. Secondly, each AS chooses the paths it wants to register at the local Control Service (as up segments) and at the core Control Service (as down segments). Thirdly, the endpoint performs path selection among all available paths resulting from a path lookup process.</t>
          <t>These attacks are only successful if the adversary is located within the same ISD and upstream relative to the victim AS. It is not possible to attract traffic away from the core as traffic travels upstream towards the core. Furthermore, the attack may either be discovered downstream (e.g., by seeing large numbers of paths becoming available), or during path registrations. After detection, non-core ASes will be able to identify paths traversing the adversary AS and avoid these paths.</t>
          <t><strong>Announcing Large Numbers of Path Segments</strong> <br/>
This attack is possible if the adversary controls at least two ASes. The adversary can create a large number of links between the ASes under its control which do not necessarily correspond to physical links. This allows the adversary to multiply the number of PCBs forwarded to its downstream neighbor ASes and in turn increases the chance that one or several of these forwarded PCBs are selected by the downstream ASes.</t>
          <t>In general, the number of PCBs that an adversary can announce this way scales exponentially with the number of consecutive ASes the adversary controls. However, this also decreases their chance of being chosen by a downstream AS for PCB dissemination or by an endpoint for path construction as these relatively long paths have to compete with other shorter paths. Furthermore, both endpoints and downstream ASes can detect poorer quality paths in the data plane and switch to better paths.</t>
          <t><strong>Wormhole Attack</strong> <br/>
A malicious AS M1 can send a PCB not only to their downstream neighbor ASes, but also out-of-band to another non-neighbor colluding malicious AS M2. This creates new segments to M2 and M2's downstream neighbor ASes, simulating a link between M1 and M2 which may not correspond to an actual link in the network topology.</t>
          <t>Similarly, a fake path can be announced through a fake peering link between two colluding ASes even if in different ISDs. An adversary can advertise fake peering links between the two colluding ASes, thus offering short paths to many destination ASes. Downstream ASes might have a policy of preferring paths with many peering links and thus are more likely to disseminate PCBs from the adversary. Endpoints are also more likely to choose short paths that make use of peering links.
In the data plane, whenever the adversary receives a packet containing a fake peering link, it can transparently exchange the fake peering Hop Fields with valid Hop Fields to the colluding AS. To avoid detection of the path alteration by the receiver, the colluding AS can replace the added Hop Fields with the fake peering link Hop Fields the sender inserted.</t>
          <t>To defend against this attack, methods to detect the wormhole attack are needed. Per link or path latency measurements can help reveal the wormhole and render the fake peering link suspicious or unattractive. Without specific detection mechanisms these so-called wormhole attacks are unavoidable in routing.</t>
        </section>
      </section>
      <section anchor="dos-cp">
        <name>Denial of Service Attacks</name>
        <t>The beaconing process in the SCION Control Plane relies on control plane communication. ASes exchange control plane messages within each other when propagating PCBs to downstream neighbors, when registering PCBs as path segments, or during core path lookup. Volumetric DoS attacks, where attackers overload a link may make it difficult to exchange these messages.</t>
        <t>SCION limits the impact of such attacks which aim to exhaust network bandwidth on links as ASes can switch to alternative paths that do not contain the congested links. Reflection-based attacks are also prevented as response packets are returned on the same path to the actual sender.</t>
        <t>Other mechanisms are required to avoid transport protocol attacks where the attacker tries to exhaust the resources on a target server, such as for the Control Services, by opening many connections to this. The means to mitigate these kind of DoS attacks are basically the same as for the current Internet, e.g. filtering, geo-blocking or using cookies.</t>
        <t>Thanks to its path awareness, SCION enables more fine-grained filtering mechanisms based on certain path properties. For example, control plane RPC methods that are available to endpoints within an AS are strictly separate from methods available to endpoints from other ASes. Specifically, expensive recursive path segment and trust material lookups are thus shielded from abuse by unauthorized entities.</t>
        <t>For RPC methods exposed to other ASes, the Control Service implementation minimizes its attack surface by rejecting illegitimate callers based on ISD/AS, path type and length and any other available data points as soon as possible, i.e. immediately after determining the request type. For example:</t>
        <ul spacing="normal">
          <li>
            <t><tt>SegmentCreationService.Beacon</tt> can only be called by direct neighbors and thus calls from peers with a path length greater than one can immediately be discarded.</t>
          </li>
          <li>
            <t><tt>SegmentRegistrationService.SegmentsRegistration</tt> can only be called from within the same ISD, thus the source address <bcp14>MUST</bcp14> match the local ISD and the number of path segments <bcp14>MUST</bcp14> be 1.</t>
          </li>
        </ul>
        <t>A combination of the mechanism above is used to prevent flooding attacks on the Control Service. In addition, the Control Service <bcp14>SHOULD</bcp14> be deployed in a distributed and replicated manner so that requests can be balanced and a single instance failure does not result in a complete failure of the control plane of a SCION AS.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>The ISD and SCION AS number are SCION-specific numbers. They are currently allocated by Anapaya Systems, a provider of SCION-based networking software and solutions (see <xref target="ISD-AS-assignments"/>). This task is currently being transitioned from Anapaya to the SCION Association.</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.dekater-scion-dataplane">
          <front>
            <title>SCION Data Plane</title>
            <author fullname="Corine de Kater" initials="C." surname="de Kater">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Nicola Rustignoli" initials="N." surname="Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Jean-Christophe Hugly" initials="J." surname="Hugly">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Samuel Hitz" initials="S." surname="Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date day="24" month="December" year="2024"/>
            <abstract>
              <t>   This document describes the data plane of the path-aware, inter-
   domain network architecture SCION (Scalability, Control, and
   Isolation On Next-generation networks).  One of the basic
   characteristics of SCION is that it gives path control to endpoints.
   The SCION Control Plane is responsible for discovering these paths
   and making them available as path segments to the endpoints.  The
   role of the SCION Data Plane is to combine the path segments into
   end-to-end paths, and forward data between endpoints according to the
   specified path.

   The SCION Data Plane fundamentally differs from today's IP-based data
   plane in that it is _path-aware_: In SCION, interdomain forwarding
   directives are embedded in the packet header.  This document provides
   a detailed specification of the SCION data packet format as well as
   the structure of the SCION header.  SCION also supports extension
   headers, which are additionally described.  The document continues
   with the life cycle of a SCION packet while traversing the SCION
   Internet, followed by a specification of the SCION path authorization
   mechanisms and the packet processing at routers.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekater-scion-dataplane-04"/>
        </reference>
        <reference anchor="I-D.dekater-scion-pki">
          <front>
            <title>SCION Control Plane PKI</title>
            <author fullname="Corine de Kater" initials="C." surname="de Kater">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Nicola Rustignoli" initials="N." surname="Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Samuel Hitz" initials="S." surname="Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date day="30" month="December" year="2024"/>
            <abstract>
              <t>   This document presents the trust concept and design of the SCION
   _Control Plane Public Key Infrastructure (CP-PKI)_. SCION
   (Scalability, Control, and Isolation On Next-generation networks) is
   a path-aware, inter-domain network architecture where the Control
   Plane PKI handles cryptographic material and lays the foundation for
   the authentication procedures in SCION.  It is used by SCION's
   Control Plane to authenticate and verify path information, and builds
   the basis for SCION's trust model based on Isolation Domains.

   This document describes the trust model behind the SCION's Control
   Plane PKI, including specifications of the different types of
   certificates and the Trust Root Configuration.  It also specifies how
   to deploy the Control Plane PKI infrastructure.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekater-scion-pki-08"/>
        </reference>
        <reference anchor="RFC4632">
          <front>
            <title>Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan</title>
            <author fullname="V. Fuller" initials="V." surname="Fuller"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <date month="August" year="2006"/>
            <abstract>
              <t>This memo discusses the strategy for address assignment of the existing 32-bit IPv4 address space with a view toward conserving the address space and limiting the growth rate of global routing state. This document obsoletes the original Classless Inter-domain Routing (CIDR) spec in RFC 1519, with changes made both to clarify the concepts it introduced and, after more than twelve years, to update the Internet community on the results of deploying the technology described. 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="122"/>
          <seriesInfo name="RFC" value="4632"/>
          <seriesInfo name="DOI" value="10.17487/RFC4632"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5952">
          <front>
            <title>A Recommendation for IPv6 Address Text Representation</title>
            <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5952"/>
          <seriesInfo name="DOI" value="10.17487/RFC5952"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="gRPC" target="https://grpc.io/">
          <front>
            <title>gRPC, an open-source universal RPC framework</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="proto3" target="https://protobuf.dev/programming-guides/proto3/">
          <front>
            <title>Protocol Buffers Language Guide version 3</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="Connect" target="https://connectrpc.com/docs/protocol/">
          <front>
            <title>Connect Protocol Reference</title>
            <author>
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </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.dekater-panrg-scion-overview">
          <front>
            <title>SCION Overview</title>
            <author fullname="Corine de Kater" initials="C." surname="de Kater">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Nicola Rustignoli" initials="N." surname="Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Adrian Perrig" initials="A." surname="Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date day="7" month="May" year="2024"/>
            <abstract>
              <t>   The Internet has been successful beyond even the most optimistic
   expectations and is intertwined with many aspects of our society.
   But although the world-wide communication system guarantees global
   reachability, the Internet has not primarily been built with security
   and high availability in mind.  The next-generation inter-network
   architecture SCION (Scalability, Control, and Isolation On Next-
   generation networks) aims to address these issues.  SCION was
   explicitly designed from the outset to offer security and
   availability by default.  The architecture provides route control,
   failure isolation, and trust information for end-to-end
   communication.  It also enables multi-path routing between hosts.

   This document discusses the motivations behind the SCION architecture
   and gives a high-level overview of its fundamental components,
   including its authentication model and the setup of the control- and
   data plane.  As SCION is already in production use today, the
   document concludes with an overview of SCION deployments.

   For detailed descriptions of SCION's components, refer to
   [I-D.dekater-scion-pki], [I-D.dekater-scion-controlplane], and
   [I-D.dekater-scion-dataplane].  A more detailed analysis of
   relationships and dependencies between components is available in
   [I-D.rustignoli-scion-components].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekater-panrg-scion-overview-06"/>
        </reference>
        <reference anchor="ISD-AS-assignments" target="https://docs.anapaya.net/en/latest/resources/isd-as-assignments/">
          <front>
            <title>SCION ISD and AS Assignments</title>
            <author>
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="CHUAT22" target="https://doi.org/10.1007/978-3-031-05288-0">
          <front>
            <title>The Complete Guide to SCION</title>
            <author initials="L." surname="Chuat" fullname="Laurent Chuat">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Legner" fullname="Markus Legner">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Basin" fullname="David Basin">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Hausheer" fullname="David Hausheer">
              <organization>Otto von Guericke University Magdeburg</organization>
            </author>
            <author initials="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <author initials="P." surname="Mueller" fullname="Peter Mueller">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="A." surname="Perrig" fullname="Adrian Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="ISBN" value="978-3-031-05287-3"/>
        </reference>
        <reference anchor="RFC1122">
          <front>
            <title>Requirements for Internet Hosts - Communication Layers</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1122"/>
          <seriesInfo name="DOI" value="10.17487/RFC1122"/>
        </reference>
        <reference anchor="RFC4893">
          <front>
            <title>BGP Support for Four-octet AS Number Space</title>
            <author fullname="Q. Vohra" initials="Q." surname="Vohra"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <date month="May" year="2007"/>
            <abstract>
              <t>Currently the Autonomous System (AS) number is encoded as a two-octet entity in BGP. This document describes extensions to BGP to carry the Autonomous System number as a four-octet entity. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4893"/>
          <seriesInfo name="DOI" value="10.17487/RFC4893"/>
        </reference>
        <reference anchor="RFC5398">
          <front>
            <title>Autonomous System (AS) Number Reservation for Documentation Use</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <date month="December" year="2008"/>
            <abstract>
              <t>To reduce the likelihood of conflict and confusion when relating documented examples to deployed systems, two blocks of Autonomous System numbers (ASNs) are reserved for use in examples in RFCs, books, documentation, and the like. This document describes the reservation of two blocks of ASNs as reserved numbers for use in documentation. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5398"/>
          <seriesInfo name="DOI" value="10.17487/RFC5398"/>
        </reference>
        <reference anchor="RFC6996">
          <front>
            <title>Autonomous System (AS) Reservation for Private Use</title>
            <author fullname="J. Mitchell" initials="J." surname="Mitchell"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document describes the reservation of Autonomous System Numbers (ASNs) that are for Private Use only, known as Private Use ASNs, and provides operational guidance on their use. This document enlarges the total space available for Private Use ASNs by documenting the reservation of a second, larger range and updates RFC 1930 by replacing Section 10 of that document.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="6"/>
          <seriesInfo name="RFC" value="6996"/>
          <seriesInfo name="DOI" value="10.17487/RFC6996"/>
        </reference>
        <reference anchor="RFC9217">
          <front>
            <title>Current Open Questions in Path-Aware Networking</title>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>In contrast to the present Internet architecture, a path-aware internetworking architecture has two important properties: it exposes the properties of available Internet paths to endpoints, and it provides for endpoints and applications to use these properties to select paths through the Internet for their traffic. While this property of "path awareness" already exists in many Internet-connected networks within single domains and via administrative interfaces to the network layer, a fully path-aware internetwork expands these concepts across layers and across the Internet.</t>
              <t>This document poses questions in path-aware networking, open as of 2021, that must be answered in the design, development, and deployment of path-aware internetworks. It was originally written to frame discussions in the Path Aware Networking Research Group (PANRG), and has been published to snapshot current thinking in this space.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9217"/>
          <seriesInfo name="DOI" value="10.17487/RFC9217"/>
        </reference>
        <reference anchor="RFC9473">
          <front>
            <title>A Vocabulary of Path Properties</title>
            <author fullname="R. Enghardt" initials="R." surname="Enghardt"/>
            <author fullname="C. Krähenbühl" initials="C." surname="Krähenbühl"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>Path properties express information about paths across a network and the services provided via such paths. In a path-aware network, path properties may be fully or partially available to entities such as endpoints. This document defines and categorizes path properties. Furthermore, the document identifies several path properties that might be useful to endpoints or other entities, e.g., for selecting between paths or for invoking some of the provided services. This document is a product of the Path Aware Networking Research Group (PANRG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9473"/>
          <seriesInfo name="DOI" value="10.17487/RFC9473"/>
        </reference>
        <reference anchor="BollRio-2000" target="https://kam.mff.cuni.cz/~ksemweb/clanky/BollobasR-scale_free_random.pdf">
          <front>
            <title>The diameter of a scale-free random graph</title>
            <author initials="B." surname="Bollobás" fullname="Béla Bollobás">
              <organization/>
            </author>
            <author initials="O." surname="Riordan" fullname="Oliver Riordan">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SCMP" target="https://docs.scion.org/en/latest/protocols/scmp.html">
          <front>
            <title>SCMP Documentation</title>
            <author initials="" surname="Anapaya">
              <organization>Anapaya Systems</organization>
            </author>
            <author initials="" surname="ETH">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="" surname="SCION">
              <organization>SCION Association</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="SCIONLAB" target="https://ieeexplore.ieee.org/abstract/document/9259355">
          <front>
            <title>SCIONLAB - A Next-Generation Internet Testbed</title>
            <author initials="J." surname="Kown" fullname="Jonghoon Kwon">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="J." surname="García-Pardo" fullname="Juan A. García-Pardo">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Legner" fullname="Markus Legner">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="F." surname="Wirz" fullname="François Wirz">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Frei" fullname="Matthias Frei">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Hausheer" fullname="David Hausheer">
              <organization>Otto von Guericke University Magdeburg</organization>
            </author>
            <author initials="A." surname="Perrig" fullname="Adrian Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 2030?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Many thanks go to William Boye (Swiss National Bank), Matthias Frei (SCION Association), Kevin Meynell (SCION Association), Juan A. Garcia Prado (ETH Zurich), and Roger Lapuh (Extreme Networks) for reviewing this document. We also thank Daniel Galán Pascual and Christoph Sprenger from the Information Security Group at ETH Zurich for their inputs based on their formal verification work on SCION. We are also very grateful to Adrian Perrig (ETH Zurich), for providing guidance and feedback about every aspect of SCION. Finally, we are indebted to the SCION development teams of Anapaya, ETH Zurich, and the SCION Association for their practical knowledge and for the documentation about the SCION Control Plane, as well as to the authors of <xref target="CHUAT22"/> - the book is an important source of input and inspiration for this draft.</t>
    </section>
    <section numbered="false" anchor="deployment-testing-scionlab">
      <name>Deployment Testing: SCIONLab</name>
      <t>SCIONLab is a global research network that is available to test the SCION architecture. You can create and use your ASes using your own computation resources which allows you to gain real-world experience of deploying and managing a SCION network.</t>
      <t>More information can be found on the SCIONLab website and in the <xref target="SCIONLAB"/> paper.</t>
    </section>
    <section numbered="false" anchor="app-a">
      <name>Full Control Service gRPC API</name>
      <t>The following code blocks provide, in protobuf format, the entire API by which control services interact.</t>
      <figure anchor="_figure-11">
        <name>Control Service gRPC API - Segment lookup.    This API is exposed on the SCION dataplane by the control    services of core ASes and exposed on the intra-domain protocol    network.</name>
        <artwork><![CDATA[
service SegmentLookupService {
    // Segments returns all segments that match the request.
    rpc Segments(SegmentsRequest) returns (SegmentsResponse) {}
}

message SegmentsRequest {
    // The source ISD-AS of the segment.
    uint64 src_isd_as = 1;
    // The destination ISD-AS of the segment.
    uint64 dst_isd_as = 2;
}

enum SegmentType {
    // Unknown segment type.
    SEGMENT_TYPE_UNSPECIFIED = 0;
    // Up segment.
    SEGMENT_TYPE_UP = 1;
    // Down segment.
    SEGMENT_TYPE_DOWN = 2;
    // Core segment.
    SEGMENT_TYPE_CORE = 3;
}

message SegmentsResponse {
    message Segments {
        // List of path segments.
        repeated PathSegment segments = 1;
    }

    // Mapping from path segment type to path segments.
    // The key is the integer representation of the SegmentType enum.
    map<int32, Segments> segments = 1;
}
]]></artwork>
      </figure>
      <t><br/></t>
      <figure anchor="_figure-12">
        <name>Control Service gRPC API - Segment registration.    This API is only exposed by core ASes and only on the SCION    dataplane.</name>
        <artwork><![CDATA[
service SegmentRegistrationService {
    // SegmentsRegistration registers segments at the remote.
    rpc SegmentsRegistration(SegmentsRegistrationRequest) returns (
        SegmentsRegistrationResponse) {}
}

message SegmentsRegistrationRequest {
    message Segments {
        // List of path segments.
        repeated PathSegment segments = 1;
    }

    // Mapping from path segment type to path segments.
    // The key is the integer representation of the SegmentType enum.
    map<int32, Segments> segments = 1;
}

message SegmentsRegistrationResponse {}
]]></artwork>
      </figure>
      <t><br/></t>
      <figure anchor="_figure-13">
        <name>Control Service gRPC API - Segment creation</name>
        <artwork><![CDATA[
service SegmentCreationService {
    // Beacon sends a beacon to the remote control service.
    rpc Beacon(BeaconRequest) returns (BeaconResponse) {}
}

message BeaconRequest {
    // Beacon in form of a partial path segment.
    PathSegment segment = 1;
}

message BeaconResponse {}
]]></artwork>
      </figure>
      <t><br/></t>
      <figure anchor="_figure-14">
        <name>Control Service gRPC API - Segment representation</name>
        <artwork><![CDATA[
message PathSegment {
    // The encoded SegmentInformation. It is used for signature input.
    bytes segment_info = 1;
    // Entries of ASes on the path.
    repeated ASEntry as_entries = 2;
}

message SegmentInformation {
    // Segment creation time set by the originating AS. Segment
    // expiration time is computed relative to this timestamp.
    // The timestamp is encoded as the number of seconds elapsed
    // since January 1, 1970 UTC.
    int64 timestamp = 1;
    // The 16-bit segment ID integer used for MAC computation.
    uint32 segment_id = 2;
}

message ASEntry {
    // The signed part of the AS entry. The body of the SignedMessage
    // is the serialized ASEntrySignedBody. The signature input is
    // defined as follows:
    //
    //  input(ps, i) = signed.header_and_body || associated_data(ps, i)
    //
    //  associated_data(ps, i) =
    //          ps.segment_info ||
    //          ps.as_entries[1].signed.header_and_body ||
    //          ps.as_entries[1].signed.signature ||
    //          ...
    //          ps.as_entries[i-1].signed.header_and_body ||
    //          ps.as_entries[i-1].signed.signature
    //
    proto.crypto.v1.SignedMessage signed = 1;
    // The unsigned part of the AS entry.
    proto.control_plane.v1.PathSegmentUnsignedExtensions unsigned = 2;
}

message SignedMessage {
    // Encoded header and body.
    bytes header_and_body = 1;
    // Raw signature. The signature is computed over the concatenation
    // of the header and body, and the optional associated data.
    bytes signature = 2;
}

message HopEntry {
    // Material to create the data-plane Hop Field.
    HopField hop_field = 1;
    // MTU on the ingress link.
    uint32 ingress_mtu = 2;
}

message PeerEntry {
    // ISD-AS of peer AS. This is used to match peering segments
    // during path construction.
    uint64 peer_isd_as = 1;
    // Remote peer interface identifier. This is used to match
    // peering segments
    // during path construction.
    uint64 peer_interface = 2;
    // MTU on the peering link.
    uint32 peer_mtu = 3;
    // Material to create the data-plane Hop Field
    HopField hop_field = 4;
}

message HopField {
    // Ingress interface identifier.
    uint64 ingress = 1;
    // Egress interface identifier.
    uint64 egress = 2;
    // 8-bit encoded expiration offset relative to the segment
    // creation timestamp.
    uint32 exp_time = 3;
    // MAC used in the dataplane to verify the Hop Field.
    bytes mac = 4;
}
]]></artwork>
      </figure>
      <t><br/></t>
      <figure anchor="_figure-15">
        <name>Control Service gRPC API - Signed ASEntry representation</name>
        <artwork><![CDATA[
enum SignatureAlgorithm {
    // Unspecified signature algorithm. This value is never valid.
    SIGNATURE_ALGORITHM_UNSPECIFIED = 0;
    // ECDS with SHA256.
    SIGNATURE_ALGORITHM_ECDSA_WITH_SHA256 = 1;
    // ECDS with SHA384.
    SIGNATURE_ALGORITHM_ECDSA_WITH_SHA384 = 2;
    // ECDS with SHA512.
    SIGNATURE_ALGORITHM_ECDSA_WITH_SHA512 = 3;
}

// Low-level representation of HeaderAndBody used for signature
// computation input. This should not be used by external code.
message HeaderAndBodyInternal {
    // Encoded header suitable for signature computation.
    bytes header = 1;
    // Raw payload suitable for signature computation.
    bytes body = 2;
}

message Header {
    // Algorithm used to compute the signature.
    SignatureAlgorithm signature_algorithm = 1;
    // Optional arbitrary per-protocol key identifier.
    bytes verification_key_id = 2;
    // Optional signature creation timestamp.
    google.protobuf.Timestamp timestamp = 3;
    // Optional arbitrary per-protocol metadata.
    bytes metadata = 4;
    // Length of associated data that is covered by the signature, but
    // is not included in the header and body. This is zero, if no
    // associated data is covered by the signature.
    int32 associated_data_length = 5;
}

message ASEntrySignedBody {
    // ISD-AS of the AS that created this AS entry.
    uint64 isd_as = 1;
    // ISD-AS of the downstream AS.
    uint64 next_isd_as = 2;
    // The required regular hop entry.
    HopEntry hop_entry = 3;
    // Optional peer entries.
    repeated PeerEntry peer_entries = 4;
    // Intra AS MTU.
    uint32 mtu = 5;
    // Optional extensions.
    proto.control_plane.v1.PathSegmentExtensions extensions = 6;
}

message VerificationKeyID {
    uint64 isd_as = 1;
    bytes subject_key_id = 2;
    uint64 trc_base = 3;
    uint64 trc_serial = 4;
}
]]></artwork>
      </figure>
      <t><br/></t>
      <figure anchor="_figure-17">
        <name>Control Service gRPC API - Trust Material representation</name>
        <artwork><![CDATA[
service TrustMaterialService {
    // Return the certificate chains that match the request.
    rpc Chains(ChainsRequest) returns (ChainsResponse) {}
    // Return a specific TRC that matches the request.
    rpc TRC(TRCRequest) returns (TRCResponse) {}
}

message ChainsRequest {
    // ISD-AS of Subject in the AS certificate.
    uint64 isd_as = 1;
    // SubjectKeyID in the AS certificate.
    bytes subject_key_id = 2;
    // Point in time at which the AS certificate must still be valid. In seconds
    // since UNIX epoch.
    google.protobuf.Timestamp at_least_valid_until = 3;
    // Point in time at which the AS certificate must be or must have been
    // valid. In seconds since UNIX epoch.
    google.protobuf.Timestamp at_least_valid_since = 4;
}

message ChainsResponse {
    // List of chains that match the request.
    repeated Chain chains = 1;
}

message Chain {
    // AS certificate in the chain.
    bytes as_cert = 1;
    // CA certificate in the chain.
    bytes ca_cert = 2;
}

message TRCRequest {
    // ISD of the TRC.
    uint32 isd = 1;
    // BaseNumber of the TRC.
    uint64 base = 2;
    // SerialNumber of the TRC.
    uint64 serial = 3;
}

message TRCResponse {
    // Raw TRC.
    bytes trc = 1;
}

// VerificationKeyID is used to identify certificates that authenticate the
// verification key used to verify signatures.
message VerificationKeyID {
    // ISD-AS of the subject.
    uint64 isd_as = 1;
    // SubjectKeyID referenced in the certificate.
    bytes subject_key_id = 2;
    // Base number of the latest TRC available to the signer at the time of
    // signature creation.
    uint64 trc_base = 3;
    // Serial number of the latest TRC available to the signer at the time of
    // signature creation.
    uint64 trc_serial = 4;
}
]]></artwork>
      </figure>
      <t><br/></t>
      <t>In case of failure, gRPC calls return an error as specified by the gRPC framework. That is, a non-zero status code and an explanatory string.</t>
    </section>
    <section numbered="false" anchor="app-b">
      <name>SCION Data Plane use by the SCION Control Plane</name>
      <t>The SCION Control Plane RPC APIs rely on QUIC connections carried by the SCION dataplane. The main difference between QUIC over native UDP and QUIC over UDP/SCION is the need for a UDP/SCION connection initiator to identify the relevant peer (service resolution) and to select a path to it. Since the Control Service is itself the source of path segment information, the following bootstrapping strategies apply:</t>
      <ul spacing="normal">
        <li>
          <t>Neighboring ASes craft one-hop-paths directly. This allows multihop paths to be constructed and propagated incrementally.</t>
        </li>
        <li>
          <t>Constructed multihop paths are registered with the Control Service at the origin core AS. The path to that AS is the very path being registered.</t>
        </li>
        <li>
          <t>Paths to far ASes are available from neighboring ASes. Clients obtain paths to remote ASes from their local Control Service.</t>
        </li>
        <li>
          <t>Control services respond to requests from remote ASes by reversing the path via which the request came.</t>
        </li>
        <li>
          <t>Clients find the relevant Control Service endpoint by resolving a "service address" (that is an address where the <tt>DT/DL</tt> field of the common header is set to 1/0 (see <xref target="I-D.dekater-scion-dataplane"/>).</t>
        </li>
      </ul>
      <t>The mechanics of service address resolution are the following:</t>
      <ul spacing="normal">
        <li>
          <t>To resolve the address of the control service at a given AS, a client sends a ServiceResolutionRequest RPC (which has no parameters) to an endpoint address constructed as follows:
          </t>
          <ul spacing="normal">
            <li>
              <t>Common Header:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Path type: SCION (0x01)</t>
                </li>
                <li>
                  <t>DT/DL: "Service" (0b0100)</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Address Header:
              </t>
              <ul spacing="normal">
                <li>
                  <t>DstHostAddr: "SVC_CS" (0x0002)</t>
                </li>
              </ul>
            </li>
            <li>
              <t>UDP Header:
              </t>
              <ul spacing="normal">
                <li>
                  <t>DstPort: 0</t>
                </li>
              </ul>
            </li>
          </ul>
        </li>
        <li>
          <t>The ingress border router at the destination AS resolves the service destination to an actual endpoint address. This document does not mandate any specific method for this resolution.</t>
        </li>
        <li>
          <t>The ingress border router forwards the message to the resolved address.</t>
        </li>
        <li>
          <t>The destination service responds to the client with a ServiceResolutionResponse. That response contain one or more transport options.</t>
        </li>
        <li>
          <t>The client uses the address and port from the "QUIC" option to establish a QUIC connection, which can then be used for regular RPCs.</t>
        </li>
      </ul>
      <t>The following code block provides the full service resolution API in the Protobuf message format.</t>
      <figure anchor="_figure-16">
        <name>Service Resolution gRPC API definition</name>
        <artwork><![CDATA[
package proto.control_plane.v1;

// A ServiceResolutionRequest must always fit within a UDP datagram. If
// the request does not fit, there is no mechanism for clients and
// servers to establish control-plane reachability.
message ServiceResolutionRequest {}

// A ServiceResolutionResponse must always fit within a UDP datagram. If
// the response does not fit, there is no mechanism for clients and
// servers to establish control-plane reachability.
message ServiceResolutionResponse {
    // Supported transports to reach the service,
    //
    // List of known transports:
    // - QUIC
    //
    // Unknown values should be ignored by clients.
    map<string, Transport> transports = 1;
}

message Transport {
    // Protocol specific server address descriptor.
    //
    // Supported address format for QUIC:
    //  192.168.0.1:80
    //  [2001:db8::1]:80
    //
    //  Missing ports / zero port / invalid port values should be
    // treated by clients as errors.
    string address = 1;
}

]]></artwork>
      </figure>
      <t><br/></t>
    </section>
    <section numbered="false" anchor="app-c">
      <name>Path-Lookup Examples</name>
      <t>To illustrate how the path lookup works, we show two path-lookup examples in sequence diagrams. The network topology of the examples is represented in <xref target="_figure-8"/> below. In both examples, the source endpoint is in AS A. <xref target="_figure-9"/> shows the sequence diagram for the path lookup process in case the destination is in AS D, whereas <xref target="_figure-10"/> shows the path lookup sequence diagram if the destination is in AS G. ASes B and C are core ASes in the source ISD, while E and F are core ASes in a remote ISD. Core AS B is a provider of the local AS, but AS C is not, i.e. there is no up-segment from A to C. "CS" stands for Control Service.</t>
      <figure anchor="_figure-8">
        <name>Topology used in the path lookup examples.</name>
        <artwork><![CDATA[
+----------------------------+     +----------------------------+
|                            |     |                            |
|                            |     |                            |
|    +------------------+    |     |    +------------------+    |
|    |      Core        |    |     |    |          Core    |    |
|    |                  |    |     |    |                  |    |
|    | .---.     .---.  |    |     |    |            .---. |    |
|    |(  C  )---(  B  )-----------------------------(  F  )|    |
|    | `+--'     `+-+'---------+   |    |    .---.   `+-+' |    |
|    |  |         | |   |    | +------------(  E  )   | |  |    |
|    |  |         | |   |    |     |    |    `-+-'----+ |  |    |
|    +--|---------|-|---+    |     |    +------|--------|--+    |
|       |         | |        |     |           |        |       |
|       |         | |        |     |           |        |       |
|       |+--------+ |        |     |           |        |       |
|       ||          |        |     |           |        |       |
|       ||          |        |     |           |        |       |
|     .-++.         |        |     |         .-+-.      |       |
|    (  D  )      .-+-.      |     |        (  G  )-----+       |
|     `---'      (  A  )     |     |         `---'              |
|                 `---'      |     |                            |
|   ISD 1                    |     |                    ISD 2   |
+----------------------------+     +----------------------------+
]]></artwork>
      </figure>
      <figure anchor="_figure-9">
        <name>Sequence diagram illustrating a path lookup for a destination D in the source ISD. The request (core, x, x) is for all pairs of core ASes in the source ISD. Similarly, (down, x, D) is for down segments between any core AS in the source ISD and destination D.</name>
        <artwork><![CDATA[
+---------+          +---------+          +---------+        +---------+
|Endpoint |          |Source AS|          | Core AS |        | Core AS |
|         |          | CS (A)  |          | CS (B)  |        | CS (C)  |
+----+----+          +----+----+          +----+----+        +-----+---+
    +++                   |                    |                   |
    | |                   |                    |                   |
+---+-+-------+           |                    |                   |
|send requests|           |                    |                   |
| in parallel |           |                    |                   |
+---+-+-------+           |                    |                   |
    | |                   |                    |                   |
    | |  request (up)     |                    |                   |
    | +----------------->+++                   |                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | | reply (up,[A->B]) |                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |request (core,*,*) |                    |                   |
    | +----------------->+++                   |                   |
    | |                  | |request (core,B,*) |                   |
    | |                  | +----------------->+++                  |
    | |                  | |<-- -- -- -- -- --+++                  |
    | |                  | | reply(core,[B->C])|                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | |reply (core,[B->C])|                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |request (down,*,D) |                    |                   |
    | +----------------->+++                   |                   |
    | |            +-----+-+-----+             |                   |
    | |            |send requests|             |                   |
    | |            | in parallel |             |                   |
    | |            +-----+-+-----+             |                   |
    | |                  | |                   |                   |
    | |                  | |request (down,B,D) |                   |
    | |                  | +----------------->+++                  |
    | |                  | |<-- -- -- -- -- --+++                  |
    | |                  | | reply(down,[B->D])|                   |
    | |                  | |                   |                   |
    | |                  | |                   |request (down,C,D) |
    | |                  | +-------------------+----------------->+++
    | |                  | <-- -- -- -- -- -- -+ -- -- -- -- -- --+++
    | |   reply (down,   | |                   | reply(down,[C->D])|
    | |   [B->D, C->D])  | |                   |                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | |                   |                    |                   |
+---+-+----------+        |                    |                   |
|combine segments|        |                    |                   |
+---+-+----------+        |                    |                   |
    | |                   |                    |                   |
    +++                   |                    |                   |
     |                    |                    |                   |
 +---+----+           +---+----+          +----+---+          +----+---+
 +--------+           +--------+          +--------+          +--------+
]]></artwork>
      </figure>
      <figure anchor="_figure-10">
        <name>Sequence diagram illustrating a path lookup for a destination G in a remote ISD. The request (core, x, (2, x)) is for all path segments between a core AS in the source ISD and a core AS in ISD 2. Similarly, (down, (2, x), G) is for down segments between any core AS in ISD 2 and destination G.</name>
        <artwork><![CDATA[
+---------+     +---------+      +---------+   +---------+   +---------+
|Endpoint |     |Source AS|      | Core AS |   | Core AS |   | Core AS |
|         |     | CS (A)  |      | CS (B)  |   | CS (E)  |   | CS (F)  |
+---+-----+     +----+----+      +----+----+   +----+----+   +----+----+
    |                |                |             |             |
   +++               |                |             |             |
   | |               |                |             |             |
+--+-+------+        |                |             |             |
|   send    |        |                |             |             |
|requests in|        |                |             |             |
| parallel  |        |                |             |             |
+--+-+------+        |                |             |             |
   | |               |                |             |             |
   | |  request (up) |                |             |             |
   | +------------->+++               |             |             |
   | |<- -- -- -- --+++               |             |             |
   | |    reply      |                |             |             |
   | | (up,[A->B])   |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |   request     |                |             |             |
   | |(core,*,(2,*)) |                |             |             |
   | +------------->+++    request    |             |             |
   | |              | |(core,B,(2,*)) |             |             |
   | |              | +------------->+++            |             |
   | |              | |<- -- -- -- --+++            |             |
   | |              | | reply (core,  |             |             |
   | |              | | [B->E,B->F])  |             |             |
   | |<- -- -- -- --+++               |             |             |
   | | reply (core,  |                |             |             |
   | | [B->E,B->F])  |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |   request     |                |             |             |
   | |(down,(2,*),G) |                |             |             |
   | +------------->+++               |             |             |
   | |        +-----+-+-----+         |             |             |
   | |        |send requests|         |             |             |
   | |        | in parallel |         |             |             |
   | |        +-----+-+-----+         |   request   |             |
   | |              | |               | (down,E,G)  |             |
   | |              | +---------------+----------->+++            |
   | |              | <- -- -- -- -- -+ -- -- -- --+++            |
   | |              | |               |    reply    |             |
   | |              | |               |(down,[E->G])|             |
   | |              | |               |             |   request   |
   | |              | |               |             | (down,F,G)  |
   | |              | +---------------+-------------+----------->+++
   | |              | < -- -- -- -- --|-- -- -- -- -+ -- -- -- --+++
   | |              | |               |             |    reply    |
   | | reply (down, | |               |             |(down,[F->G])|
   | | [E->G,F->G]) | |               |             |             |
   | |<- -- -- -- --+++               |             |             |
   | |               |                |             |             |
+--+-+----+          |                |             |             |
| combine |          |                |             |             |
|segments |          |                |             |             |
+--+-+----+          |                |             |             |
   | |               |                |             |             |
   +++               |                |             |             |
    |                |                |             |             |
+---+----+       +---+----+       +---+----+    +---+----+    +---+----+
+--------+       +--------+       +--------+    +--------+    +--------+
]]></artwork>
      </figure>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change Log</name>
      <t>Changes made to drafts since ISE submission. This section is to be removed before publication.</t>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-08">
        <name>draft-dekater-scion-controlplane-08</name>
        <t>Major changes:</t>
        <ul spacing="normal">
          <li>
            <t>Abstract: reword, mention goal and that document is not an Internet Standard</t>
          </li>
          <li>
            <t>"Propagation of PCBs" section:
            </t>
            <ul spacing="normal">
              <li>
                <t>clarify checks at reception</t>
              </li>
              <li>
                <t>introduce criteria for PCB selection policies</t>
              </li>
              <li>
                <t>remove superfluous policy example figure</t>
              </li>
              <li>
                <t>Propagation Interval and Best PCBs Set Size: mention tradeoff between scalability and amount of paths discovered.</t>
              </li>
              <li>
                <t>reorganize order of paragraphs</t>
              </li>
            </ul>
          </li>
          <li>
            <t>New section "Security Properties" in Security considerations, based on formal model of SCION</t>
          </li>
          <li>
            <t>New figure: Control Service gRPC API - Trust Material definitions</t>
          </li>
        </ul>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Moved "Special-Purpose SCION AS Numbers" table later in text</t>
          </li>
          <li>
            <t>Split "Circular dependencies and partitioning" into two sections: "Bootstrapping ability" and "Resistance to partitioning".</t>
          </li>
          <li>
            <t>Explain why PCBs have a next_isd_as field</t>
          </li>
          <li>
            <t>Qualified better the choice of time allowance in the definition of segment from the future in section "PCB Validity".</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-07">
        <name>draft-dekater-scion-controlplane-07</name>
        <ul spacing="normal">
          <li>
            <t>Moved SCMP specification from draft-dekater-scion-dataplane-03 to this document</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-06">
        <name>draft-dekater-scion-controlplane-06</name>
        <t>Major changes:</t>
        <ul spacing="normal">
          <li>
            <t>New section: Path MTU</t>
          </li>
          <li>
            <t>New section: Monitoring Considerations</t>
          </li>
          <li>
            <t>Completed description of Control Services gRPC API in appendix</t>
          </li>
        </ul>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Introduction: clarify goal of the document</t>
          </li>
          <li>
            <t>Clarify typical vs recommended-limits values for best PCB set size and for certificate validity duration.</t>
          </li>
          <li>
            <t>Clarify text representation of ISD-AS</t>
          </li>
          <li>
            <t>General rewording</t>
          </li>
          <li>
            <t>Added reference to SCIONLab as a testbed for implementors</t>
          </li>
          <li>
            <t>Introduced this change log</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-05">
        <name>draft-dekater-scion-controlplane-05</name>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Clarify beaconing fast retry at bootstrapping</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-04">
        <name>draft-dekater-scion-controlplane-04</name>
        <t>Major changes:</t>
        <ul spacing="normal">
          <li>
            <t>Clarified selection of MAC including a default algorithm</t>
          </li>
          <li>
            <t>New section: PCB validity</t>
          </li>
          <li>
            <t>New section: configuration</t>
          </li>
          <li>
            <t>New section: Path Discovery Time and Scalability</t>
          </li>
          <li>
            <t>New section: Effects of Clock Inaccuracy</t>
          </li>
          <li>
            <t>New appendix: Control Service gRPC API</t>
          </li>
        </ul>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Introduction: Added overview of SCION components</t>
          </li>
          <li>
            <t>Clarified path reversibility, link types, interface IDs</t>
          </li>
          <li>
            <t>Fixed private AS range typo</t>
          </li>
          <li>
            <t>Clarified PCB selection policies and endpoint requirements</t>
          </li>
          <li>
            <t>Clarified PCB propagation</t>
          </li>
          <li>
            <t>General edits to make terminology consistent, remove duplication and rationalize text</t>
          </li>
          <li>
            <t>Removed forward references</t>
          </li>
          <li>
            <t>Added RFC2119 compliant terminology</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9y92XYbV5Yg+s6viEut1SZpAOIgyTY9dFGiZLNTU4l0TrXq
SgEgSIYFIFARAVJMUvkt3U+97sP9ia4fu3s++0QEQMqWb1YVM22TQMQZ9tln
z0O/31+r83qS7Sfrx0+OXr1MnhSzuiwmyetJOsvW19LhsMwuwrev19dGaZ2d
FeXVfpLPTou1ajGc5lWVw3tX8ww/HGfzDP41q9fWxsVolk7h03GZntb9cfYe
Xi771Qge7494qjnO1N/+eg2m2Vu7l6RllsKER29Onq3Dn5dF+f6sLBZz+Ox1
Wp8nB5fwRPIyq/GbfHaWvPlxfe19dgV/jveToxlMMMvq/iHOuHaRzRbZPgyT
3D4GPMRbWH+TVVlajs6TH/El+maa5hP4Zp7OyrN/ysv6dFCUZ/QNPgjfnNf1
vNq/f//y8nKQZ/z9fXyrjw/kF9n9y2x4n96/v74G68nr88UQXiRgpFVVjPK0
hl/vC3Tmb4/6h/jkBGBW1W6K5hsDHmuQF9G7928D+uC8nk7W19bSRX1elPtr
ST9J4Pyq/eTJIBlnyR/wPVgA/PApPinKfJY1voJ97ieMHgdhTfxdxmAbvR1n
b2kV/3Q2/TAYna+5uV4OkjeLqs7PZsUk97O9zEfFJG19eYf5Zvnon2i7eAh+
ruNB8lNe/83PcpxOF9nEfUzjH8zSeXqVJsdXVZ1Nq2j0c3j0n1J+YACotrY2
K8oprOICMC1JAPKDGObjtE4J4N1fz9/n+MWbZ08ePNrblV8f7n69rb9+81A/
/WZ7Wz/9ZmfnAf569ub1k31an15k/KSXpLOkgHvYr4pFOcqSxQyWV1bpJIFv
k9MS9o64v05vwgLhxd3t3T0eKC3PMkA4xbezcj5C5IIv52VRF3vxfK/xMziq
5PHi9BTmSJ6ns7NFepYlPy5ywBWcF/aZ7N1pMpphuDgFIF3gH2ew1Clc0f4Z
Dlbx93u4FiBVs2xUx4uRDxNb1JsM1pTNRllj9geds4/4ddzwqJjeB/olM8JQ
99fWkOItOWq62XKiBWz5Is8u6Znjw/7BcR+uKyDxFKhiFS+YMRmeghMbJwfH
iNT65J2WjGscOHS8n83uM8m4X2Z8+tX9vBrDEvwqCII//XxwsrsbL+jkPAPQ
TueTrNYTrAu+cI317C5ZT060b2d7sLO9/dX9b776ur/X397b6W8DUn/d36a3
qqzMswrhybMjoB6/3E/ip7/qM5IYhaKfvvxXLvXzQfLkfJHW9ilf7OfpAs69
bnxHt/vpyU/JXxewAqBEnUO+GCTPs7OZkjgb80Vavl9Uze/uNubhIHmcwo4b
Qx6mF/m48c2dB/wpXVTnWWuZPGbrSxr2VQ2neQHX8Uca+32W/MykIa+vYH9n
42y4AKLZOWNEPpOlFDRZRUSbY74eJC/g9UlrE68B/8rWd3cDzcEAXi/L/Kwx
5sG4zIEwNr7rGBMI7M7OrpLdB19/s6fEeO+br+XXR99880iJ8e7OV/rrg6/o
2cfFZPImL/q7QrLtguH9GuewHNxecZqkSTVKJ1n/tMyypAQiUExBWEnn5523
6306HUxPTwcjIOiD0d/u//19lU1RshgBg3l/dR+nLYZp9aZPo77FUd/yqIP5
+PT22/R4kPAY//6/qgb0Hv/7/wP8uPlt4/1XwM5zEMXSJqK/miCauS+Pn7x4
HUEGP0gOi9ECCVTg6nehf8btHfVTul2BVDSdk7Bz+/YFZ38FIgMCfSKWEk2N
3+mSa+iz5wePG7DiD0G2OQBB9kPd/zEDmkTvmBCcnAAchtk4BuN2JxjzLMs+
zCdFmQ3wV4JlOqzqMh3VCGM6lPvf7D78Zu/hw9vh+D8GyR+KyyYO/I9idnZe
wAr/cFl8KrmDEX8EUfrf/9+0/zotx0Vz6AVc7INlz/zjyP6zQfKnvGzSzGdw
Jf/9fxd5FX9552U+K7O8tci6Ps/TKv7uPyor+Y0Ueq3f7yeKnmtrJ+cASUVS
0E+qUZkPsyqpSZZxGi0SXPxwDlpgP0UtsAfrQfkNCGSaz5IZ64Sk1eU1iIIg
RMit3DgGipoO8wlsr6fD9khsO6pAU6Gr92rGt/Es3EYZstocwFU9XczGKdG3
STI6T3H5sCPQcEa4NJ4ox4WndZLXoCVewDZwtYlobiaM9UdAlIaTLAFle17A
JuStEYBvBJesypIhzJxls2S6mNQ5CHQ8UDHHZVU9BESZDa9gABgHtWCEDH47
zf/GS4clKUDw1WqQnLQgCqsFOXMOI+a4GhCQgb1VI5SBZcyKJ64IVNP0vXw8
TdILUKhoD7ApnNy2MsAzVcDH843KDOk7DVZlIzifyRXOCHwwn9E3tMsqOyM5
14AgpHVRF7NiWsB1FmqebBwcbyaX54BWBDtYxwxeAnhPh6DtjhE/CtwWYMsY
l857wRXDJa6mcErzFJAfpsrpbaS0acIadrIMM6cZnP4sr2B+ADKtmMkvA74+
L4vF2TmsI4Vzx1lxu/RYmZ3liPek+QOpT9LxOMc/eogwYYbz4jJ5aqgBo8BL
C9CMAMb9uuhnMl4FyiBIHCCFAL/ApRQVH2QMRV1Qyp9PiuL9Yo7qIGgXfFp+
n4ircJsqwJ7LJJ3DY+noPCOg8ZHxKHQBFcNgk7CdGvFpVtSovxobO65h9wD9
XnKe8rdlNsrgaozhsauEdLIJfIY6l97wo6cnz3rwbJlcpkwICI1Bq8wmoBiP
bUf4Ff+GMMpmFaCG7ovQ3a2/QAWXUAJeg4UKqcjsC8FjwJ0pCGg1rQ2OheEP
qpQcryDK6aLEO5hkF8VkoReOFi87B8ASpZvm4/EkW1u7h9+UxRjOEWWDNaMX
qaNoTNACVHF3NaGQp2kAFMUV2s/1tcixHz/SMaQg5V1WjrggAgIoJvmI9iCH
OUFlW273qATcofUr0YBHFhXTBMDY09N81EtAOIUZEcfLRYWP1edXjA4A5nlW
1qAXDgIlTGd3INC4NqKacAgwWUY4AiAfIRzGyWUOo8MoZaqjhOs8UCgiag2R
UAQUoffooFDmvUQYnhXpBDT4ta0Dpl3EDbZACoOtwvovUF0+z8/OgSYF6ibo
MNK7LVS6wjsocEmQXgogaVqiw4DVALoy+7dFjtgVMwyg4PD56D1MBaQE8CMG
FFD09/Q2nD4MfQqLAVABuRsWODxj4CStaqAUc3wQrtIlAhCOvhBmgOvZZNIj
e8Obnc8WiNqCxHMYFO0rpMuMyciEqj3AdesY73qATy64CzNEhEG+C0sX0sMv
M7wmcChleqbUnRB9BlcUV8GUmoFLsEvR3PVvi4xRLJkW42zCdxmPjzAlPi2A
D04wIWIc8DLXGfQGmf0HwYdDwEtA7vQMz/NfgBPAgywVEF/N8AaUNOM4G+GE
DGQAXV4yq4DXaW67GZ3TKdYM0ZiXwo7PFsDFEM/qGm4xHDKRH5SCj3sJ0jHh
v2lgUESqZpMrxX8koHTYLMvnf8vGMd1HkWWewp0cLSZpSZd5BKsUEMoGz7Li
FDCACLgeubvMNKuSOhQNFlXFNOdf/nXjnh5zP7ywSbgThC1FnykeGUGOVGb5
VmlmhEEqLBEXpsMITBkO56LIiZVnH/AmwS8TkHlqoWsgUKQCTBgG0O6M0BsH
cVJATVuvAGTCJRD167zC75SjG/cEcFUZwJHGJXkidaxduA3hLqw9wysRJMpD
3tHG0fEhX0UVaOCDSuSWfAZABKEinzHNgKWcZ+mYHlcjoJIRXpFgGWCmEUDY
N54WSx9ZlgggpyDasdlybev1H47wME5g/UB9Afmjg0iJnMHl6Qn5BrEdZJy/
waAG6IPjrGIITIozoIgTdszQxXOuI7sCdGLAPoEdAei2mmCpCC7V5hYg6mSi
o5PwgBbVM9wHPGzSDROEsihqGxNxZ+uEPn8Dn6O0eQp3Szj1xsmbJ5tbCmZk
tCPgBdlIuTXaU2EQHDEZIQKcIpnnVfx58HD7m+RijwWUmlksGvaRxSLO4Bph
zDM8LxwFZHFb6dYI+RhuSGevr+YIMLi903SG5nVcud9Qg06jITu/IApaJAXd
PoSVyKTMLpHm5JVpRQvQA0bJ+wyJ+2mZssSIDFZWsEQkF8xZAKYwr8f7sEBB
ulamBzNMAceJgrNyUyE1GdvzHeMiNckAap0uk48fAR+jxxEzgYIgsKuYGigy
Da8i1WSJBqEyfkR+9dLhgfDh2fkQVUS3Yl/uO+6CQYdvPqZ7Doj6+snjapPI
JttZRCJBJCC+30Mm7L6OpKpxThImDE5nCHs/RIJmGx+lZUm3d1EHERuJvqdZ
kSrUZ+o95j048YOFOkbHoJABI+AjGhbAN0ysKDPYvbvfkZTVQCIiqCoJZQEr
hfwwOUIg8AdB9BTCiHL0wfFyrDA/G+LGKpNAp1qphI6k3+q8WEyQ1MIG0zEL
GbNfFrNREDJIWab1Bxq5HFkJ2W5ZdKT0RvItqjBA2+ucrn8QUAFkqFV4nQdP
jS0laCjhpSKRIsIkqhmJC8TrSPdrmDdVCwNiPCmuVNuBdV3CFUlO4YogOwQk
qxlfleQAowE+IOpfID6KdPxijvIX3I685hUI88ynvAd/Zixj2J9kH1A0U9tu
Us1BqDpVKpOGVfdYQBkB70NaSfQABQxjVlOUe3L0c5m5uWK5LRJVUVAlTWLu
DSzzokbiRscxDNKNiCgsiI3HJXJ1Jz7Bl3DjplVAILiofKlV1fXH3rQerNCM
q+QENIP3MTi+JYNAkfFr5yBkMoYEPZf0JhqYSH91LgTZUT44r/minBcVifQv
Yd/JBuyObsaU9jpklYuZB72zuR8fJZ7FWUYQ+p2uTg/PvcyY9cbPdjlm6a7d
u5ecZCWQ/AJEkavk+h48Pa2QrWy1rERkJNraQldA24TEcoEqposZkseUSB2i
5BilMjbYXGQqmA6SZwDm7EOK+NeLdGZUo9wJV7jiUaa3rOwRzEBXI3axCAZX
svsVcrUy1gOQT2w9VkET19+235n0ybofvmZcsgrGLj4vYn84aMx5ZeAuutph
HmStsZinZ3JrUTyXGa9aNsdekg+yQc/ezD6g5eyMiF6XohTb+2ag+3WaLevz
BRKLmjAg0+2rJieKVoXXjpaXgdrPyAt6ZcXEs1oAgU3Z0ibMusxsJ0iCWGzi
74h29ehh2MaVPqtmyzHTK2F5oMDVI/QcEONL1XgJih1NeiqcKAVSphoWSwDE
E5AHeNP3seAQ7TGtOiQDwuA6rd53DePsmf7oZdQmVulkImB2qGMNscBogPL5
sF1lRZ0Y1LSZsrITjKOK2Spx1un7DFeAgOCJWu4B2R8JdrivpytUMQSZ3G0y
/XnhfcxsasEUNQ0Eowo2Z9BzVQUxUVIxBs+zuWfm/3XuTDP9cGtw8/2Rlzv1
Xm/kehdktnXTPNc3B7JFkEFf/Hx8wkyCzC1oGIJTSQQaBBk1JwshVGzVo65q
YHWJXlNYEHm3eW5cbo/586lY1cXk+OCrPSLHW1vPAj6iOE2zNA3vqoNJfErD
mG2XH+hHW4pUHY70jjva74/M6MJ+h7FamLzRCfa5mLPtFxXOWPffgNfhW/m7
R6+Wmfsb7arAKi9n+hnZP7Z+KubJszwDKXTjp2fEe+JPADgVUxKyH5VV5tlI
j0AIl/F2jSQdAZdeoM0D9ng1rwuKPhBVEwUt1gYOjvtkI2vrRmrNhg8QFLbM
itwTMUR77mtCc1MCW0Rpn3cnvgSx8QDYVXUDCnVWiM4Bah/e66ND02VZq7GV
eRwi8B7BBhSaRy8ZwM3PhADcBkkC5GZwegAZgKkmGY93iuMZK2AuTrY+YDMe
iukQSS4uF0YDjhVJTA5ocPbVZk/8agZB1K0IQVueKt5tJw2jPXd+g7DgC9Rb
4jJD8kXmRLHxjDutOkJy2mabQo0RRn/IQ1LVdIB0eES0KxB1UCjBqGBn3CVc
Y9tHNrvIy4KC2pKNbHA2CLLXL6ADVeOczoq8r+bcIpMw0oJTWUjCMi2Oa0bR
mQrAcDIoZZN+XSanmfpxaK38FIP5eZaeCus4IEEq5RNdz8Zn2bqKdseHPd7K
TMUqvP2AVVk6DRLWi4MnOM4LtprgKXh7yhPYgF0vYBV1S3/qJeswxDrs5TK9
QhZ6Kmbo9RVDrtPNmqGxXR4d5wtY1IhYifDKdRBM0Ena/a0qPusIXtSvclLG
kGWdl2g7Xn+Ononn6RXKk+5ZxGPaub9vCILXET0luSkryftH6utdCR3bssNQ
Stg3dtCu6mg0sEyQONXVqSwFJHyKnyZ2KFRb/xLyVKVTMurB9dzY3WxQdRnV
nkurpMEZQCnXkYo5oCrogSBJlGxs3CR5f2Nvs8FAeNhec7UmUsC2f17Km9Sf
EFOQtJNg3o0K4nmJyBBLfVUiIRFE36q2oSvIZDkIO0Ywxk3zNyvuDXsYUwxV
w1W5yIItS+fk4WdZfnY+LEq1SJOCUOnKlJ2SIR7PWhlkQ9XA0JHRZEFgahJo
F1BQLYZVBlrDrGZjQTB7irIROSO3tjAMjmUftNukk8jekcIHxRnSYnE1m6Ko
109vt0VAbxzBgJvB7Bu5fckFM5rOWea4xQxOi1r6DOwInmIBTczisa08so+j
rwcOlsRZ8lp1H/kAx4QRJ1VhkgCGVKuhA0j6JB+xvxEU+ifosJkxbUZkOURp
k6IjKjauoW0bM0UqoF4g8K73+L/Jy1f0+5un//zz0Zunh/j78U8Hz5/bL2vy
xPFPr35+fhh+C28+efXixdOXh/wyfJpEH60BNf7LOot7669enwBrPXi+bpEE
ZuRJ2VA6FJPVvMwQfdNqLTq2x09e/5//ufMAROj/C2To3Z2dbz5+lD++3vnq
AfwBut6MZyOHH/+JAtVaOp9naUlukskEMHSe1wBeEs6rcyRYqCUiOvwLQuZf
95PvhqP5zoMf5APccPShwiz6kGDW/qT1MgOx46OOaQya0ecNSMfrPfhL9LfC
3X343X+fYE5Lf+fr//7DGuHQa4tVQkZVJdf3iED10aGO5qHYXM2OXhdmQ+kH
SN2QejB7v8hTcsc7K3pLWwljoMqqtkWlRRXpYnDDpkgweay1tf+cMpow1yUy
2ky9YndUrmkZTT3afJr+2UpYICZ50Q4IjJFnZ5+EgZHBmPn4HGMN6v7oPAfF
QD7HY0dmPM/Yl6RH0k/IfrAlgxs+XBbdWn6Wm5DvhQjS91tM7oktjBgLWZSI
k1yAcIpnj9YdMmMHxqR2w/4IDqKYwlwbFoCQ2GdzFBHFLkePewYlESCyU3KP
I0E9z+ewY9jwawcf27iKEuc5MP1ydB4cAWy9KNW0Rusg0AKrbcIB9i28XfCq
dRbOLcrGi44d+yXzinkvulgGpEcEnW4DcK5mDwEH6JOimo83O8FBYsSVSlUg
lKdqVDchcnZFuEBzbBBGwIgqWDKgyZBLTj+8CUH3YPdQldm2s4p17pYfd1Yo
y12/wJtxleDa1zWG84/hM5G9plk6k8uchsMw1wHaBK/YXJKHaBeJG5SjhOeJ
jzPFsw8jn1YwkopS4lbHV0oIDGlKGLhT1XJpVWTdbwrNQiHtDvKyeA/onKKF
9DiqsyE5y2QSseFvPcd7Kd2JpPju+WS/KEPjzBjc7OhCJGcDm10HPlvWo0Vd
rUu0wmJOCNCnqUTkFm1F7Pok+ShMkBl4ypPogEJZ9DwFGUkC0Pklvqpq47tc
vHW7NzAta61mUBF6xpChi+xWAWu+vr5HEmHW3wEZBMUJJiudlBdJDO6kmqIg
gsjO3iFPK4FhIl486Un8zaL0ahh8f9h72nvG3/4IC/g7/Kx92V/28+XaTbLs
R7+5F57BNRHRbT4j//XUCN8awBQDN6T83XgLdw9PbySwuWRzS5a2BX8/gb/D
0zjiu/69/hduRPlbn9nmtTY3xR8yHG4aIKC/v4TvbeIk4P5a0jncko/1l++S
Pv3vhyTChzWCwHYDIvA3fAGbPYTN2pvw91P4ey1ZsuVPW9iKj1cs6EeEvv7A
389sQf3GguBvxrTr/cQQnlNzvqcEyga+M/ljrM9nhPTE2UiwQheV2VBpLNah
zAmyDkInPUlXXZ3rAORYEoWXhnnfDAbpRMNic4yoAmWJby1HI5fsXuAouDNy
VNPTM/49MqmSVOY/ieTANNl51B+iF1mnKZmTkLJA0YoUi+mj29CRZZ7g7AM6
14VhAUeAZ7eR8d4a5EE6rUT89gK1Q1v9eVFlM5HNR8VYgllEn3dxZqgZwTrQ
8oqseZaJaj4qClTIO2J/SEV4w35HlTLNqtsMwm4FIHmS6+KlLd77U9yo7SyL
VhDtp6RceBYQydCdO6FQilpM7ECwOXx2P7jwiJyrx0XD9yg6aItCnmSgXjOk
sfOlrIxewhRFTELgkF0Mv7rVOqVGwC1veGrkthyg/YcuDLvalP97mx/JEZHb
NpbgJfLwligvtmEFJuYeH90e+nVyLpaqO3puOGI6Dl+NPA+1uP3Zv0NhcXVB
KgIBY6mnJ/ioqq2BSzZZEC6G10hEYhR1drJgcHRevFaeDWE6uY/ESScxOCSR
dq8vLxOMfsXYVjZ6kfWoWsznICRVnA3Vl5wqH5jPp9LMQaI1CnVKZyvWGlHF
OGvAPNH7a2s7A8FW77vegF2aW3aTPOohRvPTIzQoRI52jfa9MPBgbVdn957y
O8zHhlRkS6fZJWFfD9GvkGDowvy6ao8DgrwoZ+IYjqywZIOI7NDiBB2PK5cu
5nKPCvFyAH5iCJs6IF0QQY/jOZZSuqWwmbu4zT7ABEC0F0BUSV7OEgAhRsD0
dN0YTcg1uQpH9CokEpRtPnTZ5BiDS2aS3PWMfOk5wSc8aTGuG+lmIx+rqjOy
9RfD2uVReCBvDO0d78HWFyXprctr6pZuyQEEFMoh4QHS98gEKcSiw5ceAZ5X
jGZnDNwOoRrCWCjmjoPjJldyEztCTz5HcEhnIIgEnvzKCBaSNFR+o7nPJQkt
0ASMtkF60E80cxu5ISe2GWO0MCmMiYDLQ1mzeTFmGt/rjPIhmUx5ljpdqmA/
48sbTFAhF0Sz18QAwO5O7ysJBjZ1PQLzwTBgTArpqfOaVXyKneKwYiQJVxy0
kesF5uBOoWJxhmoVmUvmaV6afs6CSR/2OhEZOBysSUKWyhhRETTChjB2tDWl
Qlw4ynd0ju7HfvICg+tps95dgdO8z658CiPLReTnclxEhHqUJCwggPw4NWVf
4eEAvmNsIxWiOpaxCWPqfJotPVIiw5L3iKcJM1DGJ0jM+ZjWKOD/ogrB93l9
Jc7armHhor4PGXbTbJzTzQv7pglQpgYBvuyOKVOTU+RRE7uwhu0iMHy65cHr
o2byoWlRX0kwEEaa7sMF7wotM3CQN2tULOYTdQZ3xKg3wv+ia2JuJB5sTgFM
p2160OsiNFvA8cZdOFgtck4PImze6plZb5iFqGpLt8spM1SwEkVbv3Zxd+s7
EgY9PnNAELEUbglRKqIr6kbakssdiVBbpMTcixzn1TKLeUSyVJ+NbhbRsIZr
XWyD3mNOSU/mMCe02wqGvK3B0kGiAfyIpCVveetc1ygtj7i8502BCBG6ttGb
FM9G1/M+BuvOMGKpDgtS1hVRmWl6xfSE3Dbj/ZbN0VkCh7lT1pGax1EIqstS
DppLHPMb7gofW/ZiNDhrwKTJCaPWpSj+N0LrhNl7S3Fr841wAspv1QxHMhkD
elL2qU0WhGynvqjqIothjjJrZCaSucNSiVvhva//cMTX3tFe4krKtMccScuR
obTdGhalSUoJe+xHWQip9oGXTVC7ZCdRGmdXaORhLwKHxxBzhUXjytbWULQ7
RcFJyLcDfCu+TkNyKaNmDNLBeIFR+aIPjTnPsxU+10uqq+k0q0vJ6HIgvrIo
SHXAOLXMbM3Ji4MnGhgBv7bghziFlAELvIUUDNmEwQ/+Pi/mlUW3kCCFGxdh
g07XG6mVn5mJOSbmOgESY8oxkasI9EyCiRAa1/dmi+mQqPFH9JM6C0Ywmkng
s2ERLOI7Cs46OP4BtBdgKphViNahs3MfdCoJOpLfgZYKlP9oEF6bjtILQrs8
/UOy16eRe5HxxQ+GDhcLEem2vZQ+ZISwvGsgsqaVOTGiSTY7wwBcc+mQpYtl
nzMsGIUqDBvqArcilWpIGuDR64sHPfz3I7JfkCFyQhFcMmHEsw84RnfmkYA4
SYquULxxzYxTS+yxvE8t3iQxfUfH/SOA56vj1896yfEb8ZRF6vtpOkRcl+df
95IXr58fbyoYu3L/e1HeWlaizVTRbFw04cRpB0zZ2JbA2xBuihael4R0wEvF
jc1IqIqE2EkZ3t5cekrZ91YEUA2njYMRUuk1CMq+Znlwlmhyi2WDhQXgPWUo
AbO+oW+cFf+QRDE2wX7On5u1hu9huV/mt/6gr2Q7mpuuxSUoMiMUf8ja/tl2
lewk/WTnoU2F9WLLC7myY1/AjI1plOWToB0ao8FdABdnBO998zUZs7unegRz
PdrTqV6X+QUK6Whi6xgLa9LRWE8cKyalOKtMXZrLGCxWMjfFqR49gKkebH/z
QKbibGAOPTi2hEjBJeZHaTVSMaKk5CS1pp+lc2ba6xcpFkJZF1SEoXAqmOXh
f5sNq/m3ff7Po4cP9x42QXm6IPUaNvErD++GHDR0T4J/pvNeVOhkeaIGh567
POqw1l0DV5KEyZ4LNjAvT5/ZiSu/UhWnNbkECBfEolSZh6NVHxTPj0mKWRAC
XQmfxbTlwddNH4wQFVQpjImRj2QOhJtC9KY5JiWCzJRJLShmP1FIQ7N80nGA
Cuzm8Y+v4aOXlU/sAPgQKmLRREx0R0kH5J4adMMRVemhEBUAxFQ5aUfwEqJ3
2tprCFw5zUsQIeBuDHMJCd42WabEOr0UWLi3G75nyOAKLApUVs+iiQcACJ/n
M1mt1UwQ21JeyeGcZB9qQFcufyLlCvGLex53mGTX+GgZPRq8gh7TlPLjorFa
CBZzOIDHjhpvD2SmcBx3mMidHdajkOMHaCBbV3SUesOAgwQVZIEGOTKK6RLT
SjgR639HJLRUwRsIvBtUtVD1AuMpyj4VDznPPrBbDs+IRORJltIf2yAMTPO6
RsXp3fY+/O8dLvDdKfzs27/eoZaH2323v/8u+VtWFn2UwEj2QzkgI3kfN047
06BFpYcsMelTaJijDCoqAQILZecFbESulEpU1TyVKiCXRApJXoUvOSSPhcMP
aG8hFbTUFEUHdU0qxFiNzOoSoU4rR+XOhILAZ46APzk6fAP74YGBevAde7S3
S+S+lU1q85ORDmAP12VvlzbkVrSx3X+w+82Dbx59tfvNw01doCEQR6vwQdzf
eURw777OvQ4cm9ncpU7Nq3px8Be2A7fnUqTHHZ8vprAezL+XnO3GNvNTpr9Y
IToYxsS4JxQD1r6zf/qO7Fg47TiviPyRyUp4QJWsA/d5uLOut6qhBNzlbgmS
ZOEKv8NRfuh/B8O86wnl4s/eKc1eMmIsu/XgLRzjDi/ZtlmEf9e3lyZ4p0oj
JlZHKtn+sHso2miEPktmCYAliAH+fNjZ3t4+3UzySOB9gBO/e9DfxuK3eABC
M/+k8likqiHHp1RGC67NIleiSXEwvaMK44x1+4zMxGKUAZEexX/0MJEbAgl4
hj459uoHSwzZtr3ZxGnS5lBR9ddWEM6Zq74Fd+hRf7vXXhXnhiBkjhh7p+wS
djkESHfRIaJzGPNH02Q66b/m7PsOYeAG/2oIPMlx/rcs/PU5RfuWON8W6T+v
gI+Cop632+FOtN9IzG/B45N3yBPu9Lcdu7lJ/v5gsMdyKlCiycBJxy2y9+kT
7tyyQxOJP8MPTbir9Nym6NjfgVSVpPoPv36rNOHp6TbzkL3ddzwhi/utHXbr
T1TN+a5KlEyYpjTh7gOZ8O87jwZf8xantMXGrPM76lVMDxocvall3e/QsGxl
kSTzOx920H52VfsJJLyh/JxEiYSZyDto3VKtCOvOqRqElSnR5vYYK0/VZTqf
k3bJjBr1FHGSsWtkwlaozkKU5Bkt2DUiaUNWxYRSIAqu15aM8pLLqGj0FoYZ
KNHWUJ6hX88geTVzNf/U1CuVIeQNStGizPXFPMF6fkl6iqxxggWyMcmYalah
MlXX6C/rkXQot8NWRw5D0IbTMXtI9L1RyqZ+DHJOz3It0ui3IJb1SizeEwoh
IT+slp3hBZN87aoOdsKDhPGX4owTXZQYmpUKkHzKUDrAbKJ5pbEFzvhqVeqs
Yi35ftkmywHW6GecI7prMpP41nvioCJJGQ1petAcIYcV35Drki/AHIgYh1Ul
XJSQlLHY6k96tEZ29LwFUHWJtjeSXT6W+xtK0AByYO1LmgF9W+IfNiMpFQYr
1A0dW+UH0akQVdjyA1ZbUhtJMhE1AbG1NPiMp521qgyTp8rCWK40PhCRGg32
dI4nuO5mVh9JGeOshlfZvXpL3al+IgEv3CPGZ39nhCO6Gn4CwYhLoTJuom+w
/C0dDcQZMSL5PdQmEBjK7/QIB2pRUKxhlBUJBQEUA9n4SbUsnacXEnIkyBrH
wMC5UFmW4BDhQrZ04GV+ls/Md/KFFBMdwl8Idoos8HVdm0mLbbigZlxfMWSk
SKsm7xHCiUoqXv/YyzXF08B6WBshW0dkf1gZplKSjdvNv5lo6Ty8TTwXOV/I
4WS+q5xc72MlLBvt4ktzf9qb3qnXPksdFQ9T0jYkvAi3RPfddjKUcg0j85bh
QrJS4/CQUlZLCLlPD3r9hyNNB7FCYoPvhuUP3suA4nQqWJ6N5QJYIHFqEGyK
3OowTFecNL2ImacsnweuIV7GvnkZl9etklDhDGMCqWSaUktcBEUPv3Z/JcWI
anhecqKKcidQV/NaYuYwznaYEUfRJAor6ztI4sGYh4uroSOOV8fH08P7MkET
xyR/nzHHPcckUUoYTTFmHSui1a3Su4Qw2QeqDbYsgkeFRlzhU2Suwq+tHLG3
u1Ws8uiXVKUhXKy06ipc6NCyAvzmasLpBM0GV8n7mebTyGoJdHQXNGHvTWZB
1CGhiQEZzLiJBZFm6ZRAlVbM1kZFStQNI3eqq9novIQD+FscN843TgatmsQC
gADybjLjIuYc/qaSLxZYU6bAt3cx51gfOeBuijIghXIEotr7PtA7RKx0dLUZ
ivBG1RDz6Rz9cjhi1y7M8x4kBnxO8629B05TzjkwIvbOeWA0QnGqONdRGTZg
FunaXIAQa7PhGrG7GZWeqyUOc0wReECLgNKR/kAEQS7u9TU+T5K71aXSRAYJ
jteqpBxoY8WJiAzFnc2SdW4+tu6SIcaWYA4Co7Q961oGv8mmfeThuItoasqu
Q6ciTI+hajj/9bW0M/v4EThCOR+ZW/RbwFPcWR+vbKgOYLHRObUYkOEpwu6n
k5PX9/ecmRcbyMF6ADL41Z7FaJBA888/Hz25//Pha7EzYt85NAmnVCZMV8oe
YAsFJNuuWsR6Cb7tSwo36ohdXwOJ6acfP4bsCReG0QzW4ogxA3U+S7RPnBTX
tRGHfkQ5BFdbx5IyyaQvt4hK9k2ukAbgxo3tUJV7F7cWbWBNAqieuihTOHer
tpdch8Drj6ws+eL9hHyvxGVr9TXcYBzcuiwe+5b47yCneIGcSQ9gsoZvVMmW
rXFLHChOFTE4OjaLQbXpzNkd8zgTHRfcitPFJy37pjtit1UOuztqz+JZe2by
jSNlBY8+ISGE6kOX2RmJJJRH22OGl3HNRqLy2j0jro4OLJzCVyRkJuKwdTHn
wpIUoRWX2okMgBpuQQyGRcHMFExgCVMAPUdR4e0+zyZzSU+mtXAt6KlmU3Oo
PeknJ11QRT6eTU5JY8BIIo0Oc3EXGojtE3vUgs3JOJjNspWoQTXM0QzJ2pDV
XGSbJAiKZEIws7QrI7oWFMYg2bLEmS03BanccwxMGxZ1jZm3oZDkwF2+ZhaP
S76vrUtEdkvtuxDo10+2jnTn7Y23biqFKyvKqTLX6kjjIhJvTf0/XIQAbJv3
DvHfkp2ksKgY+EXp7wt9ZB1VSArqDPoORGZJTLjFfs9dkPrvGwiOxyLpVe44
tEdQDHfODPe7iVKJfb5Fp5Ti59bUJQtOJI0L35uq+84Gd/H0G6FagWVZS52O
2mgQ3bELIAcrApdbg0cesMotTMTHsDZKALUl9SQsAW/WAijUxCK2OSa+Eobj
0yTpbUDOZGPCBc82BxzzhbLsBINStRZ/nBUnS2yn95Qc/n7uq6ozb85LC4vS
CGscJsebBrTRBjHVdkl8urZLblQJecVVxUF96HFIvcupq35TUt08K616y5ij
MGoxGqCXyog68ODLDMCVxplsQWI5OP6isrxcShVopOhyQPPYJXBwAUH0TC1g
ZNyVKvHSiaCrCtR8NMRiYXaHrSjYEt7Hp2SHotg1xSqr9YoErF6r9dCSPCyO
UZd8cirFI+xWQvOsTldcgwVkH1hQOu7Fn7PlcDYrFqCKa4U/ccDrxVP7VMoQ
PDrlaGVO0qiVllpl06gCA3EPhUbWDFZmu43wdpaxrICVG0XqVEhJbjVYShcl
luT8nKJLh3oWIaErJFd2xXKvMXAP5hoE/hSLwjNNpM2vrT1lu58r06xkKdlI
SeThjA2zFAMV6KSbZJHW9EGW9KporVUU5O3Q2mW6c+x/nGNihYSUAhZlYHwr
652pjLSJHMQxQqJCPllRL5R91rx7G0i5A2nhRlP1irkjPMepN9X9TvCOJu+6
7B5wPfX6k7FmzCkVyPMB/ldbrbULVSDJiBARKXaoKSulnAgr1TKwguq4VLtm
MemgMuUVETsRb4IUZ6IekyldcxCDVaJGdKfvuP4NkwQAzWuHl/3kaDJZUGIf
7PIphzFUrWBZqsjAOMuFzqgUd8jOxmE9ulPPxl7IemSzrMpVFDmg5V5M6VLY
hDC8yqs+1O2OnG9ZaEqWnWGFMCx7QCWKJ8L+2Byh2MOECjM45pJtB2IqZd7p
MVRId9GlorDgMLEjtP5LbtUeatvDDADSs338OQguJO4HuZNu5HrKFUHXh+ts
lYgeYcLqoJD8ZZ/giK+BaHCRVW4ifL+FReu76z2rS06vDte5XZIKje1XdtYH
VmPyz5Y27DMC7J2oXZelG5CNVRUS4lXF6SnxJav7noVkdy7JsSHWCSKT61wk
vJ+8WtT7u1sCI//hztZ6z61ocrWpxWnWVrlsG+EUK5+9cUCwmidLn40dw7c+
uwv/7Nz+LK33nvwTrdd28mVr8Jv2EM23bxAVwsK/lJH47S/duOFB//b38sMB
K/RMeiNv019DfuTmS/mJ3taKP7fObQ/6twUpwi6tQk9cqkce3InebkPtInr7
YiXUlvzgSxe/8hjbP7wBvOv011qrEM5eapHWS4mrp6pMIiJamvTJnZHsYGAC
TRXF9yEVapEn4zoRidoQHrbpBIse9RoGaR6ID7++17isaibVHQ2VcKKiY5YZ
jBOnxQUVCyu7JX/lOlXs8UWueommE3Tb59yxj4hbMEokf/aqJ42oXuXmbjLZ
DFPe9Yey/kfrA35PJQFRpVyRn5W8vINQ2hZItVtKF2W9xLQpkuOyaMjdonF6
4Q0fqJI/0lr+1ItMrE78AzrPu3vQPJ0+T2pizLI6JVKmgjUsFDUW2FgDmXHI
eadEbdP4Wrl3hSmIyTry/PXIigAndxtV7yQfS5/uJFWfaeykRYpWPdqgO/Zo
g0NFz4enGvzGXgw0pmOsVW8bU9qLPwpPxW/D2fyR/rrXT2DKRpTVbW93PWoU
z8/xp7u+zT8PdDndc3fA9pYBbzlEevQR/PPQ/lolYTS4T8eJLeM7DX5tv950
PRK/abx6+Zv2SPwmsd8/r5zTHonfbPHo9pv2yJqHikXA3iwVDNqPELQ8hG4M
l0Q4GUU3fowfO3RzkAsCC758NNvf5UeWriU84mQdD7mbPu7zkW6+S1jhRx7y
4wGiQYDBR9BQ88f9HX6jS2jxjzjZx4OLH/nT/oNV5xIeCa+ueXB1SZ6NUaIj
DaIMgWsvfjQ83iUCunXpq2sBot9HP3SMWXTSp81HDNJrDYh+2lr01bUuiDqQ
dIilHZBe64Ko/CwRTzsgfaucequY+glSqtLnv/JfHULq8LMJqbsaPRuMDaIz
cv1T6fjlhML1EZaIH+O/Mi0Jf7pO0YwWh4JY2ZNGUOKZGV7xlkgt7tDE9210
HjJbF8N6eKtd3xFkyEgBr3BhuiRUeMlsC++j+t7xOirjLZH4ry330voZ7vYc
/5Xrln9ZDxEpIFqx24A3p84wMnNutE0Ae9i6iibKPtQm8ZpjUewBUi8sTrco
JG6JyrOfem/JjOxBIlPC4BjKqRp/LPX19HhmZPX46yopMLqijg6tENeUJzRf
Ee7wmWZZyTi6X7iQNTSp2KqL+48QUlc9v+IpIVZGYlYuVACMkpUIlyuW2kFe
Vz1slKvz4Ygc28h7fq67iGn2zL1ovLuLaY1tfYKY1vwjCBWxsNUW05pvukeW
CVtOwFg6ipNBlghbkfjfPYoX2ZYJW0EeW7oWJ7ItE7acyBaurCcCkci2SthC
KaEvUujZTRA3z+nTSGTTVyNhKxIwlq3FiWzdwlbzjG5a/47PqEvY4sH/6l65
cO9fhDPSR5YIWzT4w9vPaMcDoCVs8eB7q0cJjzhhq1t/WDpKt3ay1oRF4/nm
GUXD26trARbfNwRVqpTr8OWX1hMGo7VuWNxtLfbqKiG0C1+6YbSSQ0T4crtZ
FZ5pi5WjzyZW7qFY+diHU6nzKh2CkNSTCCVMRa8oo5lqk3HghuTtulaE3h09
SH4qLtHf6Mo+pCZMjjLX8kzdkOky1zaHhErdZJit6GuXUXLPTybN8Kd1WakL
sxD3X56JZ8a1WCAwWXHsg6WrIPsfuf1hEevVLJ2D7F1zx73ErYT2g3DCqjkz
Dng+4TAOPRUUGTFUguspSTqLtfCGtR4E927uHI9U90LQ4AEWvqCHIk2gQqBj
+ol69pcEwuAF7MWhdCuFaFx6MFaPsGU2oogWMeXepHSrJZSABG2VfeNFFGXy
C7bsSUMooTw6FSm3Q8yFsZ+SAzdqlmCf/qXjyb+2RumyLN7hs+YwcH+dX8zR
BGU9EZ0ItC7Cp52YjOywxe7env+Q81fvectiW6q76fjrDp+tHGaXBbZ7uw4M
ySP+7GH01u+0ms90Uok6InblT1Uvd4EGyleP4m8erq31P8vPfzTsaw8TfmLs
4wU8FBxoYF+ExLurzrZD0grDrFpNjH0MlEeywv9q2Pcw/mbnc2Hffzb8o7nu
7bllPJQTX4V/e78T/vHMfGwMjkeywv+U+KcgVCzb+/2p3///+Gfo95vxj3/u
Qv8e/E7cl/5zb9d99p+a/q3Avzb9+3tT43mgCs9rFWoX8367tg6GqeFpo1Ij
paf7d2lOf01xyR9D5J+2t33Gkcz0fZ8LsH7EHDBZ1kMQgn3gttOJNL49jone
F2WuBaXoB9+7n7w+OPkpOX7644unL0/WGt3Gvrz9j84qOV+u3Sg8qG38TRCV
t/0fJJkOBoPE3SH+5qWgy+daz1ZfmnPdw39veTBsuS+SrQCzDt1bkdhGu5D/
brWf+bK5tpaqf7N2cwI6W1Wn0znCKzk6bM15t3FWnXJrzUv/d3HrEwSgZXWR
PrFeknSv+3kmdVKefqgH3YA/5gcMN1aA6DeuaBn0lsLu3hIY3X4grU38ildu
P9LG/y46P11ypO0Pv7wFoNqQ8FjLlMtC8V8/cW0M+aTzbj0uxle6tc+2ok7Q
xdSAKEILlvcaMLrlMH79Odm1axGRLjh0b7htRsQCTeEcDiZnWCXqj764+R+y
K2x/1175b5p1OawjkHbtdTkIV8L3Ngh3kbWt8GqLvja329j7l+FVKj6NTVOS
G6zPgfZNWCj+eswlRG6OF8NfsCAQw/rms8y6ChIrf34FwegmHEYwvuxc8Jft
jcSffGkfr90wBG9eYo1G+R3TOIjS39ygI0EFhxuUFPwnL29uXpz8fIOM4+bz
ragDcFuGvFvLhIUmqGO43/GxZcdzQbRhaxUN7zyeTrzyHoSOJyIAIoaLuAyQ
huWGDBtylsCf9BedCj2Bv8gx0q8U5TBYKsd96Vb0ZfOLzhUtgSQD5x5f7tVX
5JYbdMstWQ3+BuhXnMMScBu8BTmeur+efpjnUpsB5UZ+4sXBE1n2b5q5qQk9
tAawxZwbObNakqsNHR02oECgCtSsYkSJmlKB1T0aFSLBYhexztJL5pisnlkN
USqpsdkLzgAs8aFlbXE8XNpz6vLY0qNEVfvY2UP5dp0i/myVMtOpzdx4PWal
DnOX2dlLYY24KL0/6lkrWf7cuiiqx5Cc0l3VhCtXUJ39YLWqH5g7qGmTUt+L
85a14I+zRPgqx0PpW4npeM24MapuOcS6PVIVIWirUpurBmrCbTrz2TK0YD8N
Xln9HNVtPZBrvcvDK3S+yRLfIgiS75Odb/VrWHNGjq2DYz6XtHqrbrrvk116
7iNNBIB454d5t6++L4SktZpBF918UVvGGu7KuvP4hnvaspecgKG8ceiy9072
chSO7Z12tLOaJVjJY7Qkp9oSpLtGchOFPF3O4Awl9TiP9AyHpyzSdwE6sP0n
2vkNJ3snAPQD/2qEAaD3w4j7vImOCUZ+Bda5pp3e0GyCpgXmfCe01Svz0OxY
yGoQAvHqC5JuSn7nvcSTDl3otUK7mz41CbVr8x4RoqSL8LffbrCzW/SatqGv
OcASWXAJfaPFm5mDeRbbOjoX33y7i/hZWZmY1sWNK2+9MpROupIfcQpP1wSE
aRInICECdDm6buA7HVeqGHTRR/aody7GFYpSWnPLNMH2p2O0Hw+EM5/Vjx4E
RhBRzQV8ubcbqOo4ppVMLO1VucBSHT+MiG2+RlbLyDoQU7iCFF2SEgV8wbJa
76KUuKxdZRZrjJEFYUhHonCDIKGGvClta7XAe84NQS4y62EWmCCt3y28Muot
DU+l2DDMVWVAlMbwwCSdI0OociqKiPO9Oj76c/J0XsBiNna++Wq7v70D/0+w
ajT+P/n55MnmIOYzY4Fdu/m8A5BtPc6Fi4NhTs5Dez64YvDmm6f//PPRm6eH
hj4MiajYviJKo7IT16cGCXPTGjR+UQUI82wogCpbxCnCAUSt1FotdG07XadM
9/w015qcXozpKGRSwlBY54dOJ2redSyy5HkxpzG4g9ayIpph6Q0Z5Lais53F
xRo1PJeAHsGnkOjqPdfC56humzZOYaHm2rOgj7f7AJq095ZAZm+AXalEfcq4
ylzuLeFHnWv5jA/dwSRym8b9WUzidzKH32IJ/zym8G6mG1Wy8OUDvPQnnNlw
dTWlijtwriQF2JoGU1etuAYQ70zXhw16uEZWz7UfduWKZAwseX7eGibIA1iK
OlTv6JQ5MYsi0q8k0znuvTtrVsWJNn5Ux+pbIidOKhnWrZK/TdzQtqJBXqD0
bdOquKYVLztIrbepVJGEoGqRiQWMaapXy4q8bOC0MMXZp5i9UlERHNtEU2A4
sspBzX68tl0u+/4uWoHwxyZkQt9g2r1mnmeh6L4v7RjpAfpO6FnCg7P7dZNB
TMrQyp3Kwmy/TMoXCAFfXqs9r3ZfwKSoLACOeFxcJJG6Ns4KKlaJTbBdR1nT
MowiCIV4YhC6jvbVZAqf6CELJMIoTgdRvY1KRcT5N69gOQG/t5por+YM8SpX
PfN5HKt3d8LdBhg5ksjhJucUPGyNk2t47JJPccHdth7HTYxMmQIVK3TtC+4q
yqXBwBKk+ZBh1ySaSTyjtrKS51ol9rgGOjz+JFROTzaOua1hd010LX98C1WK
9xgTvWyShbbjqTQQ6NHvQzgr4mf0V7At3aa3YglsHtXV1bptiZFhQ7SvBgXu
YFy83D6ssY+rZTq38Y4/fgsfv8WP321q1H166Y5w4539/o4qWmcsY9QdrK5L
p40YVMMO2FhBxLjEUmjraHKoOyjpyHzZbtndu+wd372D2Rgv3JF04zUNPehK
TYRWVQl+NQFJtvvTq5+fH/rOf3hMyDio0S8uswNInesIwLp/Hyg0K7jSuqJa
5NyId+nqBl2QjgAMo76Bk56nV5MiHX/6kHJiTUPDCtZu+C33J7gQQB3izzYH
dxyCr50fAL+4/XWHzayuxoKFlIDsYNVCp6/dYjtUtw6667++aZH8m094uyMc
opPzwZh3424dzGxJBMGdoxTuPmJr2UsiEFbHG3RudRVD/3SX/qfHD/yKOQJR
k6tKRFpVh1jSpGrmkmdeF6b5LFz7si4TRez3iDm6VqCO2Z5OS2wP15ZOzkD3
q8+nXKSVmHs8tjxYMUAAHkcNI1mmrd3eZ1fSt0arvkpbmWg8a1m8hLfLfHJA
wfDHMvwdfV0RWWrx3KUKWrLhjcp8q417bC6l87H2Rrs8MLjaxt8GWLfZoj/e
twBIb/MV2v5qztUR9KOzojibZANtYTAItn5vVN5bNQTPbbj4ffLAnmYLdKhK
+hafeDvJZmcgv32fPBQm4YHhyQfiyWGAy4Kt3Xk1fptWXVIBY1fXzuXVuhy9
xVy2aEvuu4ovrm7B2ck7DgCUx+OoRunt14A00o5T8n66qABax73GwbR9Ol8N
ySbkgmpc3XgkvYHYVqvtN9hI363AE9eTVuAmyVHunrsem/tr5PTjIxDtufOS
Sac+rDbNr8SHA6++we4PlVEqJ7dz6xBvwXG0odVuSg3sX1QezjSnHjfMduju
9RZ+ttVYMOV/1slJiRmHb4qCYsEpdIGPYgMI+2ZcSNpoRGkucfOKeFqlThO3
Kka05rr402Urwx5Sv236RqxHlyG9G7sEnZIYnQBZqL8Z11XZDP2pRufpHIu1
HLvB/miDxTrbC2sNw+uOelslobfVcSS2Le90tXRnODjCkO4/l8mny659ipuL
X4oJx10C5G9ddssZd9hgRPFZxm4vH+Dw6vUJrOTgOZEaJcpIX1x/0No19yiH
eV2mWF8bVmTde/TFlaN30/UWWRRyj/wzlKeOxBbqtxBUV9tujxq/59wBsWmd
FraMJ4lSP7uzqHixWQxt2diYnbp0z4rWIlbMv1TqJ0vMtekXy5w1d7SOtYXe
tl3O2368mPu5Zuwyg3VY4O4WG3+3KNe7BbTebn375HjWzxLO+hmjWZeuJ0j/
pFV3GabEpNNQg118kvgGGHERi941fD53javpYfI+t+Xg4vi+UaRn958kXOvG
Cu+9uats3bG3FWJ26+m7SJbyzQww4q19HeRKwA4+//Ni/pYX70VLC1xDTOEH
seCsC1570AzXmNYLk4zxx/kvnIfG+Ry+Tx41hdXbxTMNr2LPm/TaMucGjuF2
vGogDC6tahiFysRZA1kN3RDD1zALZW6ZUDOGjZq0WhoKS/Xb8/yXdPSeJAht
eAzwt0JteTVaaFM+a2jA73AgnB2K7ECrqF0lG+/05N5tBmuylxh8X0Rte2ix
HL5McEB967aD5APbrJy0igFLpEU7GECCbzuNU7bsYJSCj+gT3qfHKdnqRIhC
MdfO6a59AWzfEBKtt0vmxjtpr7nJ8TM3O2CsTDpNP+TTxZTb8k1zbji7mOVw
bYE4hpax1WIu7QWBvCAp4tYH0q2MazVLu54GcWGQMpePo41URK2k2Q43Lx0b
hWo6jbkDBNWf6XyfG8t2FXSuGjZ66x1bD5InstR5iY1nuWm5dqLJa+oJ4kXJ
vMZSJgDDzLskn8vZbTCN3PS3fUMPlPvj+K+0eRm35iuzyHFZmVfP/Jd26eSS
1taMTNqJcrSAmyFqHQNAgDNEpdRUf7QR8/2Pm4EGl6fvOLpcVI835hBvNOzD
50ussSwhs8f0Y9NltcyBBA841RPbMJf5BSqhqGv+4TvQWn/Iv7uP/2G65fVU
16oNUTIfY/de7jdGUfQGQ8bBNByGMNphht+wPSAbY2XxMyAzE23bJrhELU7N
gc67hP36tTVFA2B10dc+gs58bvq0KM6tmAWuK8R00QdLd4RB2cLMJBjbzlRI
b1sHuhxOAxkjjuSO3V+ddGF10PYtAdburFYFn94pAnmpr6E7XNxcDS6K2wGx
BaH73l3hWy1pGKUW+E+o5f2qeJbgA/21iIWlSg25kD1zl3PAhOZY369FF2oD
I1s5J+PGBt7m7+D3+Q9K//Cj+Q/w1P/5nzqkPIZvUspGGCDv79xtCHswenv5
u5tNUBnZmwLWTFN33xkNO+Ulta9k3K1dYweR2jTjRu9mErfw5M9h0WlbQdY/
xYaz/vmsIbf4cbWQcTgNplF51WyczEsxdaLBujfW57BqbIo+5sIQ/nIAi0Vz
WQhwC7OdU0QD6DKI9Fwxgu0FKILTUjbmAM18E8RzRqNB06sNWNcwoMgra2vd
n8NQ82oQJcncrNC04dmQCPIvO/86WLqOTx8jAGLV23Az7zo0XMbPsEA/SnA9
kVZE4oLp8iAlqATdsN10piveuDdvVj65IpGx4ZNcnYfRTGFbkci5+k0XvrPK
hiCSHgitQMVQ7g+qkovJiXWowDpDq7YlHSiDUugiyEUOrBoNAnGCJfrVhupN
2rNN6Y21c9u8q/mhaxtBJ1xhgdjv8N+pEeDamQX4eFADZSG7IzNDatm8ZZW/
lZph7zazuFycP9G5LjHlli6dHXA0GA6SNzAK+mYodrGlADmFmBvuVUvOi3mS
quuRLFRFqiwH95Mi5GDSMiTfpl4KMrQrwyPedHT82/QKNsvi1uZOsiPgtsEz
3ADYuo9mrkSnlxppBhKJMmy9nJY5XCaS5oGDUEd2wHhQxTV1hdTYu2igtpBU
G3vDZaB69CuV0SNQzdIrlBu0pzGK/6VrmNmhsN6qrXIAmzWUnHOYGi6Qep9z
C8Yq/xvroCK3YFf7qi4KY8tUUh8kZ/TFED5eX7959mRnZ3eX65WSoaAHJAmU
zQrzfWj3AM70CnBpFw4gpQYFxLJpSpD603mFdVyJsSMzZ0vComL5hVcBA8D5
1NhSUfVIR06vDR1XJ2DcJavdk+llLOwu49w9Of6WIhyfXGfjrgzqtgx1jmr9
lbnxn5CB3TVzsKHbafTMMkI9dX1vBUJhZynrmcmOqcbkqiMV6jQgoeN/5GJs
9DCVrhrkp1/UZwXzSSPLZpwNqbhuQGqXm5wUaiTF784yNMx12ahiJiHJV7dn
ijGnvsTcrSFqARlsy3RblqWHRYk6fSlMQjr/tgAwaIQGhSbOITAiXBDJQyPZ
pG+q6ui8QJpkuWbzDLCkcLE42AzutMywExs8WyA14Zwsm1abhcM/FWhYMH2B
y2OPeFR9utWvmzp9yy6D3RxbPme8lfQMG7nKScU7BdKyfLgGza5YDBOrKA12
mJ2mi0ndAFCYImrme0t6mxhHxsVoQUaLcZGxR5XBfEV0Vbn0NAPNb5ZXEsMi
sJKOz3IcWpO71ZW+ATD26dxVIgtbjSUy+uzTJTKh500Pj9CgDhdPpt/sNuW0
7MP8LYVWeNeORD2lo65oIZmmkRfakkucxr9UtCWFdOTKEvbUjN5bLcYtEco2
W2EgLHuUwSlEGcuW8kuuv265yq2fMFjimy0W3TwgNJ70yqbi7DIfhz1kHcBq
94W8BVZeBSCDOp+ZjPo1DyqGwY7s4zpmEJL1TPS5rsy6G5nNYRRcI6eNmow0
s+TidDQqpAu19rEssc78fvLOHv8+2dhJvjQM20y2ko3dB1uPtuH/93cfPtp8
x2SUTEwg+oZ5Kmev39v7avAwqfSiu2fidGn2ybVjSMiPEhKuv7BSHEsS6EOQ
mLdaUp9zWRJjTDqsignS+tsArpbbajENxeCxrRQ3o2Y3UzpSN9OtXKzbydaw
nLnjTqtPo6haxib4/6+DV+zukuNK4dGPfif58VYR8s5puneueffJkuLKehEq
KcZlqggMqF7AH/S7RV3Ln0Yi7l5vtHNmpt6PryStldstOPdnkDjS2axYcMUA
JJe1mAN9s1kSD2YcjIma8IEbSgQdc812VKbo46h5xZ64EPl0ypeeaWhrOp7i
7hzXrcix3OAZ/jSeG0IcmkyX3NPLYyv4azvFDgZMT7CVZO/blTaWFid2c68K
Y1DIMQWV71T0J5W4RreKQNxKCZvs2+DRwStv+2rKAh18za3FzlUr8vD6EhRh
lauGFz/HQn+DwSVa8O12FOzeR4GjasH4T2Mu4XjE0a/08f/+9jxvKvUNHJuH
dJvk2E+MwVv5tkeYMUmH6RgqKkIdIRK/n4Xwv5bxSUloywrk4z9v+IN5qkd7
0/nEEkvSTfev6PAc/PRsoOZWw6XAQu/5AdsyQldSWqiQ6ldnv71+OiBS01m0
trNEbPjQFrjy3RuQpVUOuddaoDS7Vlq6at7XEXSaW+qYN3x9E2h7ext33q/9
rITzhWtz66Wfe/5pPzzvK2seun9EMGPVM63f28jXwk/8RDuLhU9WjtOsavnI
6vs7Uco3VF1J1dZd5X4XSXmtUUUfibik0j+WaAeFgaBBo+nP4ryHWyyHlJIz
isPugSpPgYFS+FBqrWpDKEEUbzXw65SBXKEKrVqxrx+6SC0K/7IKFmK+I/nB
Quu10a4Vv2i8DsIr01sVAXvNJ0LOeRT20Q9lcNwLtxTiaAWsuVIupnZSFI+V
SBHBs5dE2qgv40emgOOVS1m1BB+ivDT3PlpURyRyx/Ioozi2w7BllZ4SM2Dl
G9hhVarROSX+hH2sCzvu+M6XTUxFpe84Z5ZnGjW5UJnRdsTdg2vaBCAwY7UD
lsfek/MFRuzSjRMDdOd4bdTWkDiz3oKktaAImzjsvHvvszhYQ+RlCy1OXdO7
skDRk3g5zImRB7Aazc+fpOVZ1i5Y1g8Xy+02EJc/aiggkxa1HWFnbpJH6APE
GxEzFpVmdJlkrgGFJDFv9ly1DbhfWyo9yjMWBGk7rpINy1wHPNtKfuIgxWDw
2YgMNxaYy3k2bKxacERLmI100cWMbDkZqV0yj8lniNNqUZwvyjna4wGRaJlC
otO4Qh+lL4xJ0l7nGddRy2XlFxPfSlYGvNhIFiSJyLHOiGEOEE0XpF+nSJBS
VNNRHAs9JSszYOMI8mJRfiH5k1LEij4Yoc4Myns8Xk/WB1wGyDmqD2PtZogj
AqrMsEEjokBwMJvNMDKEKRaoCY9Nhx2i751AS/WtIqDqYRFMq6UGuR7WwRxR
D8wxG8MshipaRe/XH4tckDiV7vpepCt97Nxj0FfFdWYdTBtVySq10TQ9Lxr8
GzQ5pkcsotfo0MnPzodFySZqTJQ9Rg7vWb6ohjDERXYVyF5zqnxGpp1F3S9O
+0Pq5gnklJSCbHBGXzf0w9N8kkkMPsVusoLGJlA2f3asn9js8wJOzZkSjg6F
1OnzIGn82yLTUHrp54k88aXsN6mv5hnqiigQsIbRYymtR8IMHDgryEQhZ2Jq
oncsJht1+j5BEi3Az+0JfpEcmdMFUm92l7E9wt/AojxLZ/nfxBXGPr4QtY+i
Vc1rz/B6ngYoRTuJzDr+iwAfU8GAcaFwGwl8vcjigRrlkiwFsSUAlA/+Eh/K
YO15WknlWXhKwurTcTHXdrihj+m8mOSjKzMgmk8uHY3IsMPMDm6rhkXBgKbL
iwoJt3GQDXosjbZGYnsfrG6GU14gNQKcFTVSKl6WlfhWEcSziliHy+iJXkYi
SqgBA7hoUy6YWfkgZtkjh1eg+Gj9huH0SCq+5lwdvMgfJdS8EsCo5YhjPDmt
vcRgsVEGmjjVZZkw86XLJaYDJQnB7E+EAYuuFXLPhNcLHXoD4839mtbWfp5T
2g/OQ5QmeL6al9xEQMBVpBCtYnjoNkdReIeTNFQE2Ecbk8g2VeA+jlHg0xs+
3UEf2NyUrDvm+QQXveZornKpVeTj8fYljYPnu2G+7JM3TzYqHtZlNeBHhA9G
ROKYY2QjTtDgeIFshiJM1Qks6igN8ECFg85K7OX4rNU1WLqWQXKEWbt8q65U
VMTQQY69tTvRcUYkBQrxIt9mMEEdvD5qenxUy9z5Ch08u0DKCmCn6UUBDAyY
/j4uhPm+uS+7sYNjKqMt69Fa7YXxAqsBpnUW6ZCajWcpTeyUBZBnk1O0NsEX
6lKgag6noCT0bPQWPuDGOFgD3QO4k2QCm1JHIQBw7u2vyOBI+uWZgz0wr0IH
aM98CQtxaMomNS4K4x+Ybju56ulGYIdCE2WFMgBi22XGGqveYuyMPbsSQQLp
LyDBrK9u4+TnCYgb8GA8OlJkMsOmSl/HoKEy7hdUPMNmkN1VPoCv0QKbor6l
DmkwG2KndCJ8bKRG8TIVE6gg5wTEal4daMyDs4G4bejNao6upVRUi7Ms6BVI
5dIedfiuz9ninovEw0dOE6dXLA7lNUpxKUbDl/VoAZr6HqCDxheZS2yfJp5g
CR/hj2o1oTbqTFKZ6OQzra0aMqok031Tw4QBfTGExpKnlOcqq7UATOW4ZGMw
/LxMK5s0utfd2DtYezCgy5XPFkQ8OaWvQd8ui0RZUWje3hPqQnOVrRs6xcoO
fEMx+ucqaPPZB2QLAWpIkBRZFWPCpmT/zA54AGO/4ruInmLe/aHWNNu1o0D1
43LbmCM5wlt5uph0UxnE7DG3qWcSU8B9Lhy0ySUJKDlGAVyC1BwrtgsdZBKg
hjXWxGAhGy9Q5tKGTlVAJQcjNUeoWWJ+YpMwIz0g3kirqdwK6LIT5tUZ5g4i
wcGH0Hnosrq3uO0mjZ5tSfhDOoOnppb7RcSL3+xy6ZDyghFY3Z6aMiN9FqkW
rYmT2lVVgm2W2XwC6EuEGIOYhFOoUEp0gK6pWDVYI7Lyx6JUOZPAscH4NYIV
af11EJQ+Ksg4DIw+FsaqFDbQLZF4tFa8yZMs3RANgnsxxyGImxbTeSpYgYMg
cw2Rho3D2SByxfU6eoj3vyD5nZHfaVQW8B/Vomv25QG9QgtXQ5skPn4ftQty
ic2QQ4xGxWIW7YoSJ4eoBHQJb1VtwgwBQKCCODjJpxyTRm4ggPyUdFVhmkL4
zYpIlaEnV0TvOBYG/qgwXQvrRWHgizx6kZMZhiYMaetubcZDkUhU7BdSo5EP
1lLvIUxzBSx2ipsa5mdngCIiuFe8t7MCKEQwd4ZJowOvz1EPbpyUkeBzIL1Y
HQieH6bDfCKy5AhkUZLccbfTLDOFij12MinIRsRglQdj1KeItF2u4rWDSgyV
RuVEjyBenc9Y4SXpcBL5Lmt0bxYcVBEmnWHaeUis1JsBz0RVBZScy8nSKkHD
lO4BghjACotpdonbGOfMsulsQcaf5n+Tgp3TBYgNQCt6wHlnQOkwF7KEy4wB
iwN3SUXXNxJphFHqHXGvpmOGEV+X/SCJBgtSCKuTIlfk/9hQSWZTtPGn8fXZ
jzRRznXX3Num/YhYIlkhzSZqmZ19Ehm42fEQ6Nl7rAlQ7ZOAjfSPw4xZsKDz
x22TDjqfZ2nJpLoxGomP+yjRzPHe1TVqZCSZk3XMb7gkZqHlyFRE8x5YHBCD
AbAQUF5yoe0r/JQCvg641pWhtHdgV/tmsiSktlgOR5/kcZqVzgavvBMiQ4w1
UuhG6h8G7JyRNF660aMxQRhC/4kWOcrfA2E6RyczPHia83kEAa2rtRLu8rVQ
DKO0+/SRCZNZLvK+PcQsiiwx4aNB4wmOtCASO2OvE0ZuzPlO3ddTsoxuc8gH
t1BjAhkRg58xcvgceQpe+oPjfl2oTSRaBbMNcgopXSRFtLYQeo5ip4NkdXqI
BtUMGTL3HUAay00BotXQyNazAx4FHKFaIjn6EthoSC+cAgaRA+AxxvnbLfY+
uci8RbeXytSJ099YyAkrqxxLGa0DnwIZlKjyAa31sdkKg00VNZjKMnHjESo2
v8UW2Bit2eCEd5bBNS5mX/h7Kk2vJAOJHlEVWxlEe0o2KDAdpzuJqEq8BE8r
cCM1uJDIXkuePVmYstoswZc6ZzoB9BlfMWfXV4lGMHxljcbA4lmvslqiNszM
ExYyQk5I4k0NUyA/6hKuzEig8bljKT8O4mEG4jQaXGttA6R2YzakYfPD2chl
LIbmR07MBlkGdQT0KWQzFCzOAClmSdwaQyYhQVXmzbWeY20YOB/TeXPLC6Tn
ooKVoEJWFEaPScaXgWC8RLMLK9Xa0EfYIsOrEq9z1LmDzH54e/mqcfnmaVaO
cuKgqLjh3i7zSlMsRHMXmQj7FLAo6/QH0jEvUi4G9RgPkCUnOMBjjL+5vue0
jX4uT/cxNgfkXbPrxbLfEKPXOCOUYBLb5ckoAJD9QHYfNAHNYOPvZ9jfUrB9
y6s4OumWnOY5XpgZ53lT5g8bdJENBVsHC83e/AFUrdayCmFwIl491YgM/Gni
RMqhgSXkC6ocZ6zQqzvtmHE64qbZWO03CGu+HVKFhGGDMGaRaSusoJLAqC2h
Zl1fhbu2v0a1Kp+x/Zyt3gFGG3hdIksQGfnYNkzccXMfD2tawBQPtwc2VsOu
1BgHtVLxCxiP9gOhzAHK3jQbY3ZCMDuYVahT3ztX94EczMOEM1mQlKTAFs9U
BgjGCT6uCAMBanEtgAhySMUWk7FQRYBGgVXme5H9jQxTaGLnMQIUkBiozgBn
eEny9JTUJY2ZHKz9kT1BXJAVL86bp09evXjx9OXh00OWFVPBcqtJgnJVmY6z
4vTU4FoBl1GZisr6x/O4yMcBOkdaoY4izsutse0jnE0i34UDXzts8tW2mYHc
qMIqgwkSIPU+y+Zs0WloPeZz7ETervvkD8B0xXA3BSVwoIi78U2tMnUoxrfM
auIDoPthX6h2tYwdZEiIlkG7ay10lM7TEZ4Karc1WS+4BswSiha4ohXpXn+4
jr4D8iBzp7Rl9C288mi7+U6D9kVoX4iTKEEH/hDUifPk3xZ5w8ukMENjbFqj
qaf2AaFsv6PTFRqOSZUb66e4HvSoo+a8vrm0lJaK3exyMS6ANjierJI6nzhN
BLtKWAUMQgdJFjYqJuxqjZHVrwvkpPOpfVys847Hvnn9hMTNbPwtPIcMRh6d
FSbyoBjiC/ga79MqPO5yok1LI2FJVEHNM2irRAKWFsJzA20O2qwbhjtW6cq7
40TKMLccrLwoatAZ0rlcfMzjmrggtlwluTRi1bJhiczusb6EwChmWR8dHkzU
hIuhgRFGfZ+ze5cr/wGaTihSQ/FWKVjTVe+Kjs2KZrqskpcAdhAwfX/fOq3e
N7LmikCMCeiNIdVjGoUoRPsSRB0Cmr4Xx0BeomhfWrT5SMrVvoL3MNuFtMAT
9JrnjUwk52O9W2KSZCZ1OF1zEtqEIDy2DV/fYzJhztgswn81LOazTnKypJo4
upbEAfqsJfoI4Ua6N+6i2rc4XVXUiiWs2GZWkCTtzEhNtOkF607qeFPIsI3s
3lIek9yCJx1rS8djFdWjHndsBXR3TTBVOtoJFRYYYm31hIl+O9VSkyBQRc+b
/S5d3TYbopVAacUpPSB6HHN4pxHh4N+2Emek1qUtamnMpBg5xfNBgx7Zp6g4
RvadJZ5VZCnjcbMxYUcak9WVb5SZ9av4tlHg0q3XfB1xjpXKfjDCZSqTpOML
tKlXUqKvK4tZY1Y4XtJN6AsIhmDa5smRb68L6+h1LL+Gm1QZVxVuNgoK1hHT
R+VHW9BKuTZX6foBh7mh6QqIMd7f7jOwS1ZJUI6fx9qOlBiB3abVQ7T9XBTv
1Vap5fCeSEqqTDJgavAO5IEpSh9Eg8ZU/xyNeBvAbDcV4VpJ6IaYjbnjpFXc
Bpc737QyIEuI5hMkwUYvV1LIpt/8VuJ4om7+JpiXEjmrRRtHrTmj5hD5Lh4u
PJyWRrOq34lW3YXQWCTDb6AzS0e7I8nZWwFtdrzhLWIje0Dp6rfcnap9Z9rj
LwfXP+7ChAX86ltjiaPa5O0ZF/C+doOIuEEyNwWjyFJYyw1yULBWmgTSuoBj
Ckfy3uAoL+Fuuax6YN1QDomt5XwkFGGD//OGA5I20be8KLFOr35OduxsM7n+
2O51E70bRnfpCZaIr3mz3QPwJDhHKHfTCaFlJCnqZLgEyVrpoQot9OGECm8R
Q6C4e+9BXSLZtSm2EIR3gtmt1NSsPi8kchFxvDv2TPh1w4zotXHvZ43XTjmb
0Qm1FiFhaHYcZHXR/ot6JXWln7J3adYYQvhaJyUE2KeytJYXlaptysdds65q
ndK6PBTkG80fFbLlApoehoyksMoDEFZAUb+yofjSiKEehPARKuqgSkvIx2LO
KVcSvrl2LznM5pPiir58IsHurCpTxOkL4L4amtL49igyyOWc2GCc0XkcG5af
KQ/ZOIuU4iwq9sKOaU1KqNlPHlVZ3dc+iFoiZ4MMKqSWksQ0cQo1CZzkOkAT
KP0isfAawc4+IYnd1phtiu7d1InQQddIk+YGTs/IpsIEm53YRfF+Ma8SFR0s
+AhtM3qq/NDmJg1Bdbqqq9novCw0ehuGO0WTGu0gBCqGESifog9ccjRawBKu
ZCy/HNHpF0TtyV+rgTkWmRc0/jR6wNfmzj6gs9sAoRytvX3H6uYltqSC87ji
XBeOvIh6GmgWOYBBac+Muxt0LJiG1lV3blSCF11kde+Tl0EOWyr/4OxMWsJn
rJn/K21brbWdAi89h6kd7dboNwd8lQlRjYpVMlS8jfKgckfeQPVqwWhR+oAZ
nuCBzYC83lnP5/bSRMLFPKBDMO5siLnnF4zv276P729vJldwNmc+Y6ULBMkG
9jctppkFieCjZVacbg5a4PGzh+jV6NK4vaZVBI9q1ebbc0Vulc+DHO5U74Qd
SFOfnp4SqYMVPaHEgiO7xJjF07jXH9U3q7Ew4gIXV2kraabSRKGQbNEpqhKw
xUuT5BilAU+SAh0CP2gtZqXL48yvlLZBg/uMMdbgKLfuICFLNI2CKO6j+rhN
BsW56Nel5RFQXNIVaTWpBAVls45iU3iBMHeuJ2GWlIp4RVlDjQDCdireQWP2
1uLitS9ZHLvcP21tzSd9oJ5kcAzzlNoMsGvTJ1KnViIbLtoY+NzVftLlAU6j
6hl4o+169p2DKS2J2iLZmeYz4KWifgEBwpp5GiGqdtrLlCSyK5oNXU8aBegK
uvZcWN1LTm0UWhIQE2497OWlrQkvciG+N1zWS1kN5jGcNgNCtS1GRlpgKnOn
lCanWqdBGHZwTmH6P+FCRESUKvPtFMIodVBqd8S5g8kleSc5NB5kAryZLqY1
VRkgkMmHDAPmZNrPgFIe04pqmhCBmaXjizxkr3INZ3pRnAKEaa0V9/k4nAuL
D/QRvLsoK/GGdJVPRKPuCIN96rjAJZmi+ixxNF3oOcbzkqCGRIP86U5QGLDt
PTCTslmPxezEpP2HN+NynWobRMp/SvIlmxu8m7ajCloqgmLchoQSLsTfsXdO
O99LxukVBikiixqb+MtuFcbMh/wI+W0p6jev+PrVXE6NBDa4QSR2EIlgcc0i
EVgyhlUJHvOFmWImA3ZKHEgd8XSMqIjYq6U4G/X+HVnXOC7tIK4yN5nBFqen
GPE5M4ol3APL7lMwYM5eE9Gg8EpX1WKqsb6up0XIMOXjPLQQXBJTEYDHzrl2
7T1k6vOIQ3dDHcwhPDkbZe1IQ6sRFLuFJI6Hgp+ryJ0E304pGWtBgAFcH7VD
iG0JFnUmD46KqnY9CsJSCWXjAgxPIg+dTYGOKS7lVFtAcGgcOxqllQb+cDEl
fcZ6YWEPh4AOfVQKW/nzgZlbRGpIF4utcpSpoVFxziBJnxM8C+KlVYUmc9TN
MeIGI2LD4MHaqgHEVPRBsgP8qijkh06olX6gdqsh11M0x0aXONSzk3Zv44Wb
ZHXWRAsjLBitNtFo74pDOKz2lFIXwS4KeLSmmR4pmqNy4BpvqqitmSmrF5ZW
dssgVOUDRdWKgAq3rcxHjGnNcBG4b1lw0sYoaLgvPQJht/oAB0tEdDZE/7tl
MdtMNUw+uJ978e3iGRBhTNYlLoQpUBzanUrWjF9QcOmJZWq4yCe1z1NG9qLZ
D8sUBV6KhgNixxLcl3m4G3EMeOy1BomFXCetryyCpySzxpIQYRhmKFCMRDv2
jISe1qdWu8Xp5qS9MTcJYjKrnxyNkZYl8MaK5S8gEONiKpl3ubAqpyfkPvBP
I+UXNOxYL9C8oIh/IiVcEC7sbZD8iYWDTjXsxLK9FV5YjdGfo8IwNi1SfQop
YatlUeGJk+R+smvIw0PRRTFxt3nO5JwJhRgx+Jav4nNiQKDrFSWc8PNkSwbf
EFnnAhhuKh0N6dv/exe+39ndjGJoCGHRSo+blThardTSuFSwJeKrLH5Vo/Ns
vMAkKX1b44J7VhcbsbduXDQV4V7NophoLG9miRhkkFIpjDQOimSRgn5AJmGL
oIdqdESUAtQuszqg0BE4wjy7iIJaeiInEGvnyBaJpIdhMexfbPxUt2+cUek/
IOrF2VVAPDL+k1FAiYSE3g2xiRKHGqXJtCCbX0aRYc6uaRSAnWRaaO6SiCNS
vwXGNOllCd4G8T3I9D46Cj0gHVEVUqjOB8vZW71O3Qe2ymaCFOVwseT1OWOE
TX0UlEhbhz1OsvRUsoC10Z1iTtXAAHpPcoiDg1a9hVwYBBaoalzQs2B14wXX
9YbjvBphLyrKV9XoaEBfIB2gkGr/8QIoNcYvotW6QDeldoBOT4Wju5rEmLxz
TgkCA44m1sBOLU7AKyRaKU5yTpsNTC5YzWBFbLIRu4h61SnRy2VwEFiDsAZC
Xk76Vt61AE0cUWgzcpn70cMK7zEdnOTQYWkOauhHElUvmUlQtY0tIfGUBzQI
3Qo95RRDh8R0I7EipopI0nHCdq4c/AKnDZRWoRILroDpo1ADgoFQRbgR7U1v
k9Bjto/lI8nLYeTUOxOfHZr+7HlOnsjYAhNLPBaD+Yqr6oYarGclOu/YIUiz
S1qUr73TDgalON/tXpRzDlLNVNxWFvTp2dLamk8qby8uRAcPr0L5h24uBiSa
QDpEispvPNx2USVchIMLvEpYU08jMyVoWtaXiWmYH45pBmuYkaRYOYG+Pl80
lRYnFHKWRSyAcEgWFfkBtsGBAPycEVR8DHEdz8UKDZE5ktigEWWiuycml7bV
HQrCZ5tkI0ozAzUEsY5yfrm2FxoNyTaVn52z4WbGqyMKSPwGqMSCdFLGH/Xf
CHOGz1Fca9KPne1tfxhVuHLhILblKEQE6pZbUBgD1ZQfIAkUuy9i7QBUEMIR
7Wz7MxD5Qw5N+ngESzodEi7Av4Sx1Qvz4JHQgSCSKcjgw5lCjWR4PBER6kVt
IRzxlX1HWNe6ZrQASigVzqgnmFSKI/Wb2IHsDLa0C7jKzRDmnKjG8RaYNEHz
an6Pv7Gdl4Zi860CVhcs3MSYaQqchqEqksvu4GHy4vF9F6Hp1FM6bIBkaF3n
M+558Tx5yMunLEUJT8O33VWs2hqCJX1ImQDkW6I5m5JbUNFcF3ljNEEziINE
YFTfCh4lG44+4ILxw01RAj3Gbnudu0mlRHsIlzPAsksgjgmLcqEmONjE2KPi
LFhlJZhpd+VQTGZwF5tuJ91uJDAVOb0RxeCmg/AAAkRG6dvdKmGjXEdhuTik
WwetUqK7Uy8GtAR+/AQQlXm0XC4yiEpmmmktiqLdOEw0PBAAP4JTJXa2ewTE
ecv02FKGd4NltzDsR8aezaTsSkYpZmWsIZIHjEdAmeiLi1BBiQX8vIxSk9Aq
zAedl5YnKp6qLyKV9ovNnogJITWc1SUek8uXFEqj7VAEpia+59QgI5sQW8E7
x1ui29ESflvVJq0CFjshtDQyZ7BHIR3BO6iRSZ3WHbkUISRVDb60BuocZKEa
wexgkmGvpbxVzH/NMCS2DbmkFHnayUde1ZKK17NyucyOUG4j/RJViYkUQdfF
9HAh5ay1RpuVtdbDVsEsP3kV9BnRdDr1Ga+E3aLUFNNZbtV42XdDQjK9S3Tj
k9UXwtTaJZWLnbRLwJWkR1d53CuOkYxLh0biAbXYsiQdk1cC1er5jLQWDaKB
xmRLY+i2CZJjT3YGIZMFzdpwvOqJyZfqkcQN2AP/aNuohBPEG5YhVDP+JPVU
p+l7jkQtC4pjAaI7l1yTmapyrHlrpRAHOVKYqQ8GywNk2IjyeAPUS1Tj4SVM
jpPiF1LPzSmB8OY+l0rCqR6nIFD++/+q8v7BBI60VosUq57IKCYqoFDrnZxz
Yoi+FmcbLzfv43/4V85pCuxDHHwz5DbJ9fXjYjJ5kxf9XeBmHz/SwZwQzWAh
w64cu02i4gWX6RXrV1Ut4KDSCQ4irGv4PBsqmozW1XpyFQtHbVT1FI4NrFRi
QDtB42TsqKBOCkUc4dAYl4sIyPHD9mOlgD0t+Zxt6mYaUAnaRGL1Mm3BCKac
dHLBud5OppMWyE6GmE4ZfrXCRZRUiwNEorwajOyARc4z86aqAHsorhjVaW5q
ByTHKfAOSiJftTUqgqKCfpBG0VIYhPxHwUNg57BE4A0Xt1viVVlqBwQ+vLmV
FVhhEdZiGLwAm3CMGb249zVJX2IDI1xBwJU9NoitOIwGQ8NMKXMlND19EgWF
96XMhxQeTR6vKdeF4VtURYGXUR4f5Q4w8s+xmNlSmQ+Da+KylNgkh5xV3n+w
QtBrpcazayTQEHf5Iq1OV+OffbT61PbMk9qW3WI5olO2yWtzFER5gypaYd2J
pnRQJYc7hH6Hu8EsxBJC8IJT+QCVCRRowc6+cbjz5eHu5tbJ/V2UCJI3FMsU
YhPIxXqsTO+6Fcb0ESub00Ole3NrS5PuNGGCC6kxlSFFlGtpxjSTjMOtKr9j
ii9hj0SVRRyYHZZSV5KROK3ToVZqKbPhlbI/cshGoHXVFanc0ZQLF5HKml3k
cAEJdj40zQkRRlUqFAPSiZIxScjmjjz8TUtwaJllVVoWeRRlvtlZRYEFrxZ1
rJYJ+XSLCvkjGB/WYTNUXiNqWR0ymqi+ZoruBpck57tytlO5VQZDqVqrSlIJ
IA6Ci1lhHAxnhUCWREbbUUY1hDjIg3jzpXmTpAAaVZLbcqkCPgw6wsgobqgX
TLtfVG0Kp9HYoRBwc+zKB/1JFHij3lAwtidR6WFSkvToWoEv1BWAq+nx9cEI
EwswbWFSs+SS891t+ZDUGBauPi5Vy1HLoOillotBugeHWgS/h6cIMbnQ7FIm
C0+JlWz5iZFv5cV4K9mIa7mJ3rip5ZQ7zsRw/BLrw3FwoqXUKD1hAoKPYMB6
ZX42hRg3rJg76iLRrRPVsfLZaZlqABsWTUPnlXT8CD60XBoTsarr+3wQgtpx
fIvvwZSH/hbEk0oSj01kxbQsDZVuWxQDO2veK6nURH4QvtRckTKlJaLfFi/8
6rVSZgeqquo/awW+sjMwcBq/Bq4kfDuVidpGhiZ7XMbRuRsbVVCcAdWtqwUJ
wozGdXNMSGitYosVfhY3pBuY9IhoZNl8NQEhCiR60Z5PCIlZmOahru8hYvfn
o+FHuVz1rceXzSwIAK0LQAGQonQtkzv/OZRWIK7XspKsWjcpy2Uzd2QZpzor
abjSAVSLWZ50E+mYGVImndYQJEtTnPaIRx8Wts67CLmQd0ystjiKkKGI4qd0
LfDBUJZVKInKSxrVcupVPzlamiUmkh73hjT9jqvzCat6h3Nos0FpEisq47uO
BjEhV1E3sL69viqDe3n25O+6K2nP29hQ6My8ZB+7g390gjfs/HfI8G4dy9Hh
qpNZnfzdeWT/oANblWVuubHTYsxZ6ndMKw89jjSvY1mC2V26LYUMM+ujNFgx
bNy/1bIutFHvyneXnGdnV8Llo1jJv649yPqZaywj7TMUTkS0UgGqQ35aXjMj
Is9LGhYYaQ5iU1C+HKNaTqh9vnqo6u4ZfkMi8+yvXR0tMtb72iBLS3C0uF2s
RgL3lL1bVCrtOSq2goeirHrTKpfgdWNeaF1C3CVg+Vi1ji23ra2tpXeK2JoY
6tH8InX/I/GKS5iY4qZKbKt9exfaWYOrIDOxb/xM4kFZaVzSsmMFNrLY+g9F
x0hO+owIGctf/4VQMtrYCqQMRSfbmHk3nb2KvAUhL8Jlgcm3jrtz4M+JVF4b
I8deVvXAa5Za+UDtUP6731QHocPgEBdBADhZDQQCJDs+owYL6s33poeQ7+L6
Ggus5OXQWkBfokwQhEOwLcStE/Qqyehl9osmuFnR0N+dYHCJlKVGAFYdGrVR
zF4jKVEdTj9XTNpKPJ6QzSvKrNXo81lsRm0VrvFUtIGojKaK7A54pHlx4C41
20KJx9RzVf1RW2UbNPflZKN2c5mkg1I2NnrsZJHBkhQTUcXbHpssOVKYirdH
drUYDi7tOuBuWsXWJQlL4RRKIhbudnLdSyLqTR/r0Uy++DRqfwult3Kzv7Ye
DgeZRjtcVgCnc9z/IDQ6OshPFxxiPPiHiQ6Wf9VpCjzDGonYeOk6kNCPdzQr
UDXrhkH5H8GhIuRXS/dvqTiTzRZTBRcVALQqMMdPf3zx9OXJ25O/vH769ueX
x6+fPjl6dvT0MPk+2f62+6HXViam9d3hqz+9hG93u7998urNU/h2z5WYaZTC
6WC9cTmcLj680fVhu1ROaCfd/fyqEjorZgjraz4cvqHVZ3NGoY66O1UEUZ6a
Rkzn3wHt3tvt2aA/tN+5y1KbpXtC+R1Eh1ZNF6q60iVdqEk1SAlSQBUdVlIq
wFPeWqpNYhV8rq7wroUw0eyx8ZMqu6yEArz8Rj1fXBcby5fW6I2sSK+P6nlI
XLTfECyQieD77Epdh2h1wUgH86lFoZfxtY3gOHCA7ToAWG3628rSKO3D1pHi
E53WC0ABTXrBSAxfnJkzu5jaMau2LBPtMfktw4WomWXjB4s4TFU1fFiGF7gM
ARpljgOZESjhW2aWiuZzNbaorZfE6+ShD5p2RqXRHePIqXR0lU2FiIrPqdVE
hkosnPAi/BqiGW22cbJhAAs+NXyVTVudx/4v0sIMcDbqt909sds8ZtZ6Y+CG
Vv+3mcVg/hbONayARhKDEJuVEo2ihdGWPBtsUHQBNwFLmg1n+fCwGc244f8P
kqdz7bkyPiZbA/2NK/cMJAMrjIBSSDGc5OTbVqnUB39FiTEWHSIZdlT4CAfH
VcDE2r0OQ5a4bqCLh0INjIoDcAcCqX/goSto4I+IQwMYGygYge7Yc97ntWxM
pIgtB4MtDs88XczGKbUGm1C6J2HIUJLfGRhfVFoq2HqMpYTz2tTSdUkqVM5v
aCsU6Oxx3jceZZ3BPMP+MS9OiIQhHVMQINHEdovwY+y5glZXJipmq5DMltDe
vOGdFnKmnbLaGCMZJfxZoUXhq5pTsLh7gqjPUWmr0DZGvopCg/EzbuDeXntj
1CiLECiqHLTkmVOfNIUKVt/AlBIpxGRmHQ6G7qpRLY0UwwAuTHNTQ/U1JKw+
L7Osw1V8EDkFnWtWZErZr6S7oGa3Qdw3jz63NRCWOkl3E8uHp5FAb5MQl9Zd
NItg2nxUinekkVWNSNQ8DmL0bxXltzyBHzpVbZcHPl0+pmtTSQE6vI/IXxoB
Kx5E3IuCJSF+yyoPxKjscrZrQthRJAc0w29BH8gm5PqWF9JGbynt0sQ8OHJU
DZIXHVoSoNcwd/1CXIdyqwEuqXB0326v230SfNKU3wmITxQVmxxndUM4kh7v
VW36zNLqsk2EA5mjVGGyVbBjZoojgG3DagvIGICd5nG3g7EVYZ5wpm2vgqxL
oni3MotKnTd5h4rguIrYXqMhXxZIzj2WubE9Nx6aY7BfSXyqYR9qeddlJkWM
vkVv0L3Ja9NNaowQs5YjE+mcGnbHwqNzdpaZJOB/ynq67SfxzYYDWXF0znoJ
F0xLCjZ6rgWSZI0evM2g9YK/RhSzdNKids1lLLUExTtZWNu0Qrr48YE4bFhq
AmkNxncxi3HJDABsJSixqEV20TSVdM9AYtfdgE208TbAUdlmusMxFmrwaUwJ
Yyg3p/hUAIewRRcmy31Bh/RHMwwlhg+WNr7TIeiFScm6qMDujHJsUKTB2kPJ
+5WLHNbZTJHqdbJQO3++rOI1bUgaXQLGI96bh78O2uPOzrlVmxPDpaQ4jd5n
8AhGK5RoFK2DPCXTWOg6PxtFPgdJLtX6SJkIf9xeRR37ZXpKDQhIICwc26aZ
hnFmDbCQ62tqS9Pf+/hRUoSAr11q5l1HIXduoNcFU7o+UlJQLA5x58K1G6WC
/202rObfku3qJnnj6j01JsRwsI6fm7Wbfvvny47PbvuBkZKf5xqIbOPbOqpl
uNu1JnJpxGN1jhTdfUdh3UjoMv3UkZoUZEP6QBrN1N6eXkDbvFm73k/uCRIk
dV5Psu/XG1O1a3IFe0J3hOT6R2n37OwVIpcLe69YfKFSP9hX1z0oJZLFelsV
EyrL0OgwGFWvArlFDXhRjIAIHk1MlQiY2wgUsWgdN6JxGnvJeoMM1zAPc8aS
cla6HAsfMiqhoO23l3HSo7agyjl13GLd8S8vokvj62wewLqCi4ckpCbB5Fwl
Jh/EHM3IFIU8EgtWmDUFKEwaQlGvvn230t1IboBol+gIII8ARe1xqchmMd3r
ay523N/ZIRkZsfBJSpVo1taeKUJgVUM0F0g1udHVHXmk4N8Ig1DZ2GAaciNk
XGRYmTqm0lH5ZOrKhO49xFbX3kpajRpYKq2FQk5lDEOlmh+uw5YdXpddB7GA
yupMWDAWuImnSlKesQMddSbHbkPkvwuVsQr0WZTFRbizt0CPKyJpvrFAblzE
qgeXniNwMg/sgCZXZ8vIJCIoTOYUXEQ2YYOSfGNWktgrzGpmc31sLnicnacg
7nCtixFVRBKcbBkSvA+Pyot0CxdCsypR67SupaNwDTSplvmfWxSpU7BqCf1C
+NNZdYmhGXZpEcG4FUgl3ubmAsrlvLiKGA55pskW1hNDnOYSSSdZ7MUlk7R2
201/Y/dm2E3IEmKqwmOXW4TGWyF5pfupOIdJCxZV6qaMHCVDhwr1eWvhOqYh
SMMQxsTmZ44U+FM+GY+w6crBeFxy0HgnWiXX9y7lUUx2iAIEMCpAv0RNVsbB
wKOM4yUzqdduxpcuKlRpM5cluyGra/ZhLhmI3ZNa5Y+JZMmL2OxD/cUUYy8N
EhUvH7TEy6Kr1Cd2BG55nIUEdQVbLhjWHcvNDTuD17m86GNu4qaXRI1X3YQT
cy6o7p8bbL+eYlWS+ycKknHy+KrjQff9EYLrFin2U2TYLhn40x9kCThpyJrr
h4HxrBt+bXCskbNlZtQDcqm8HG7xFjx0EKFHxPIdBjuBWGVqvzo4Oa1tGi0q
sn6SqFFtflct5j/sfHcf//MrF1nFk91lfYcd++pa5B1hJ0PcHYBNAVH1iXiV
6wzG1uHGeTAOjrufGY7tZQZF5IEqIj/HF7xqkrjKaBxqHDubcMmkV01KSb8q
ZboOBJEtPrhBAvOkLhCD74blD2u7Swfs2IDw+ab5umW0Zr2IuZVSn5+YFnMQ
y8ti1ie0OtZFSaWTFTxpWZY1DbilzoKtyPqiZas6mQalEnNmDjKqRooMalyH
UW9ceS1Yd9kZT1ZO8f5IDF18AjadWq+nqdSN9JqclY5v2ndZYCR+RKpHc674
yinQpERfAykpWLnjUklG0FPjkPqi8R3ihBasYHKOBSm0LKxt+6pkcTzTV7rW
/a0l5wSHXU9BYHCL1TuOikQB29525WIUIKaBtoOZu8TAJZuKdUcfNeXSzMZs
K8WUHZH4u6ysFumKKyeTYutko4smG/ltR0Wxio0TallVmh9QZq2tV0y3obNG
l6VQE7M3m4f+q867Iwj9TucdwW/lccf2ic5TjuJ8SFnzhcCp4VV6ZaXNnPu/
89QbF7NjjhiTwlyKTJ1Wc0Gm2ynwE574bmQ3NSVk6/9r79u227iuBN/5FbU4
DyYtACIpS7aVxGvxJpndoswWKTsZLy+qABSIigEUpgoQxYjqld/otXoe5lvm
T/Ils+/nUgUQpBgnmoidToSqU/vc9tm3sy8N/vEfSWR/lFIS/lJ6EYrhJgRd
aJyWJptgi5Z9qRNh4Z8Vxq7DmYGrgOTxsjQ8HXllJkX/JpdvhT0wMUvkyCYP
hB/55x+YvNIukX9HUr5kQx0VlGlpMfFbxjiIZ3jng4DhB8tO13KAaxRqNp22
e5ui7GDyCIq9Y+ZnWSdxhkMJGA/9JwLGx+435FZF3iyn+8cnVI5grE4sYSkF
LZ5IjqQ9eLCBX2w64/1gPpErALzKxi3y8pRcTApY/x6666J3UUrp/3sZpXsW
o2VZosLHvYi+T9roSG8u/ByKBrw9Sq84Qw5QsTE6heE8aIeH2Wg6mKMpC0a7
YDzYtVUMViZw+A5EEOz4yCIrSdLFYdIjfLfvp36h1zp2TN8gIyf67/vOYGYB
KkfLI9EU2Kzoluk07484vz2+aXOthlqia6zGcolsRdNYcxIpST9NGdc1tVOZ
UXkmml7saoAr1aKtGLKPAO8rUlRJvgmSOaYidKWQ+pmYVCb9h1RD44qbdTnU
o0jErXKczzgpNZlF+kVvzoK/2UXIEcU22y9NYokfuaa5uwSQXZNyOpoEsEM1
/LRYYlCFoyXuQmnCSdYomOGCz3jdvourIabd5LnYBrhQqAaXEWapRyatGJDh
vtaT4p3ABG24LzjEvwB6mxFDvN1woJThlBuKDYUg8xPyYcFKDOyfT6DfvITv
vu+Xb1x07ZudrZ03lpHN8wrgQeEZYXhi8ral5iwMgZuGWkJCj3CmtVsNdort
hmc7Dc8eKYhteP0o+Sp5nDxJvk6+Sb69zTMC8qD9kf+3xuop/tH9YOJ+78Ph
8X/z3z45dczHoWnlvsdS/8PRtV05jj1yEGz4k7EsgLLq3/KxJMlGlNW38d70
3taFEQ/1dblsQWbUZrRU1T04hPwKdfR28kac1LEglHjLhn7q/pdY1rSS02TJ
XjQiiLoT2WcWbgf5a3aoO0Qb7s44oPMKwgyBE6wYhKRWxETqn7VX+l4QTIbM
7u8eiyD3APQnnk+lpJDMMcYOAFBMpVtz742zMbPmIHPL1W0tcwVf/FqqTASV
4WOfFfqOu+Vjm/oFcO9p1ndpbXqjFK2kT2Nezr7cZmaFceqrTnIYNUUHt4j8
ER0VUodZ4trsv9DNg13i3YSN7WSdVjwCycHv2pl3RDrh3NFb7e2dr1EdbBqm
UE37uqp9vr3zTXvn8WO7CPD5kGQDqYJ15m7cZbIjx8FCAzW+FoeGYxD28P3t
/9QkfBdXBs+gu8204lUmQW10s0gFAclivtI4dhjGzycs0p0VRbKXX1ABSnzQ
Blmt3c0vmumMwHh0D+P46h5gPJa5LBAXYVKZvGlbio42Cv6bDsYTgbFYrAQw
ubxs++kGBRKaYRnG3f9wb7e2EMZJmb9FCe7wHYZTji2qZUUY2x8N417msvN1
bW/pHqoSx1w6YRGFCGEADxJ+E6slSAyR4cBQP/Zc2k3NR5xLXDKgPYyHvWGh
F0+IfPBT7y0XnyceB8D41ocxHV05CPBj6fcG4xHh0M9nptl5o3Hq3sIxMYzt
OgweTQBh0ZgQxs5H4jLD+DhcVlT+GFymcTx+vAIuNzNXhuFQeUErQ+kzj78B
PWjBf223cDVZncElYe8jbyxTWaAsXCCtMUfWGwFZ+9bRWwndV5F7Px1huUUv
YF/fSBjZ9pM2cf9J9oXmNefwZhYHas8rCzlbQ9GizAIm23I+RObrFIiZxPhJ
tJJqtCVLT/01uZxZn1bZvF+0WeVaV5d4qfYwM1uKXluJqqfG5BdkwvhqzVRw
6hCLNUsaMVJQl7rtm+vBOvf0Pfdw6sshD09olPoOt+D1FLatzf3r8q9LBKGz
tryaj1ACPNL1FMchsvGJG0Qkw5T4BbvQeFabWLJJxAidThpIMq7cfIJxjhOL
EDVfVsqfElxVOptnl2oBVy79wpwmaXYijmtoCLUWM5MUU2dxHP2xcFQtce8X
u4ETUTu1WTQes2WzCYZe5SN21OqXBYxb4XsWiHCV6LucbxMTqnHkKngUg4FY
zDXwkyaICdDE7C95xAKI0qotUNUI7ts3OAYCfbViewZ8ZtnEsndke/7yy+2d
RztcmAUz73r+xwNS1mSbNDYUY+4ozcnKKH9gRWhRfOI6QISiDwHW+qbLZGax
SHmAyrwZEkVCOX6ragFSLkapVtML7zhTJSPkYZbdgraIUXDkeWeTy5CXQ65h
FJLbgwbLaQ/YwOfFeXgBPM5risF0gqVYPGJXhKdh4A2jwkG36tTzBszebVxn
PyWdd0zzifmpWwWGKOroqV4SNAK2RIS7uuLicss3HuYDUWRcEHE+yUFYwWgb
PvFXZNudXIwyMrqC/tq56FCay6OTt1+htQ/+9wlXGuuh+6VAVDOc1AyjymDu
WCBy9DA98sSSvNBuMa9CnL8o0zHRoGzSS6fVfKTL8frghO3S0G3LjVvOHoiG
WhJp48WOUn54ieSiv9nxG0Qh2ngM7VCAHk7z4srXfv1jHGwLurxMseSzOAbj
t1SVAX1KcevTAa6hVfIixjAnnoDLxgyHLQHHKpbwVUQbJmMMTLy/Q92RItx9
3fHDZwNm0my//PsZME2u8/oKekaMCP/+rsbU3UWMUA5981jChx6bJLkQi5UY
cWuCs8SYyscRB+AOfaep4f0bU8WUurOtasBJcFo8G+p18hJDemwgeEs8X8UW
Eg4/8gu8m3J7rfq1G03TCV1hNN7xIDBNBGEVMAEGX3MCB6HmZ37putcTZ5fE
LLztYTGl+N1OoIyxpZZVI1z83QQLFfiEDWQly9di8SkeLyTbKOnDZY0vroWy
rPJxcdOm3Okk4fpyL9BtLsiRWPEWSX+AehP0c1FoKHLH8leIMZXrXaog5zO5
NJQ9kSugMXWNwuPxdm6QuxKc/nLJzWRGobxUho0Sj1niEx0YlrUsQXwRB4xF
d7fvFxnjPrMLevibsovED0yrjaXxb8WxWPumYLqb77tW+/st7gFvOZZFr4/8
3NCL/z6BdfnM0uv3ozs7yk4Om4nbfXN3f073wueXcvzHdx6djPA+eH8IMKBb
LAWIMRLfmFmoDJR3Zdqg3tQABnSKAX71DQFEX7bbweMR+ieeAQYJ4gWQckNO
MCXFNoJiVtU869wksSzgtncUXdakgMTqogunyucoex0K54HplsWv2aRDWjdu
DWqu4YpSCTwntUjeWyUvMlgyZtJAGVSYa1+BVW4wDd9rUlfyhLpE2/irrJdP
88wPyCK92Y9F4uJdGIrFxWt5QmQMaJMFTJLCeIUym93S3i+5P/ws/NDDz8LP
6n+fhvBzJAVlVpF//pXW5XD1ZfkU1uWzUNggFFq+jaOFdP/Tlguf3Hl0MsJ/
TblQjv6BAWySC7USF5t5lk350IO3TNBcBd6NprHF8s3tZM21wEx2o6yZ020i
zYMKX7Lk6Umga4HQrBWv/YWk2Ab+J4+i8sTTJBRP1z5CPJUNoJ7Wlomp7h2m
o7SIMlmKbGJ1NyQxxFpjmanbwMz1pp5uLNdGmfqgYz257lzjBHkh+TpWpN1Z
cUdpOfXlZc6ypZuZTtYkYDby9oyvnjz4cvPke1ihRdHzsPosSdPD31KSPnKH
xfWl/7AUUS85g+ffeSzu7wARzvnNv8gmi5zn7k0CqIsAT8wu5KHop830ycvx
Y0b4d2D6PgICy1aW71Fx5DK5F0iInou5JtWyMGEF6JAW6LkH0JL8SDralaBS
ggZERjflH6OoAIwcLKGDMi2vmFIun/JiHs3+SegSoVzYXGzoCgikEyKekh0d
3c8kXJCZr0W0+iSWmafx8rhiugCkqXcCAj0dXTnyDD8+E2d6+Jk4/wOIc402
fx3RZkRWR5k/TdL87Z3H99uQZpKNa0pTIM7dADAizRQlH1Hl1aE2kGYESBT4
lmNTgP8MFNjmYH664s7oetcZxc6BlqGPfd4kCHo+sUJVDZCmLoTYFYuMIg+w
4nUt8uAzO6CH/8Ls4LMF/rdxP1jRAeGfa13qLNsSh53VaInHup8DyZt4Dk9a
cCifUSlqIOzo20SSMzrKOlqlhVYK52XMFhGf1haTNoFkQxDR209RVHj0Mbz9
X0+LazIun4zwOA2LETJxMRFSjHRXIkTEY27xlCPj8scDjJwOPhbgMltwl6NH
1KKLGfSyUs5X2iQBWOjGEJ5fsGFSjeFFqWbsVwxvF4Elg1F6oePettBzPbws
L2nOXkkywJWh0hHLbyhPmXuDmpm1vNPtgluWxXMhNH7zkJvREzxyD61g/Ppm
J6F8U5x4x7PJuvgjDjnx19Vq+KKQJVFutaBMXdqm4MwmiYzV8rjpZ2mMHn6W
xhrGsuDvszS2dCyLG/x/IY09bpTGQjPKJykaNdG5W4zwt7aiVC5esYHtNgJc
3YqCEFcA+Cncu6/kjxkActe6NYCLRaNod8KYDO8Fh2xYIGdDuoZFfJ3TNsSX
1h7savVb60Dc4NtYWoLdObSczETEAYEv+G0ZD1iKqbgavUss108w2zQHuHLN
Ycx0JMHBlYQuctyJl7FghFGXLk2f5NF7qzkyya+z72f4SzbukvQFl+vOiV42
RQpzKaY4xSBnECqzEVu0XRV7TuqYwTJgB2FcdFR0wlXmYlHwomA5lmTKv/31
v6qkm6UwJHKs0sIfDbU3KYQUI5Kh04zKA1eUpI/LzLmivFLBQr0lMIoX00dx
AYigkIITsiudSS+YCc1ei6dqqsoTGgxJ4YOiRwXIANaXtLpfwnKOsW4qYh7m
KBR13SJnJZuX1IANG2Oga8lNXd6vsL7XFeX6BIJWXk25FgSdBHI4mWLCSVDx
EoBmfiWwRFpH2008LiiBKznnKg1UDPTXnGpODuhn6qWi9beDU72S7I+xuH1S
UCgVMTWqtMhCmIKcs4nq8Z5x5bkCa9Lm07lWaWhACCMoME8+LRtaIwGe4IO2
g7G5SblZaWzrQAkALcqr9WRDM4pv2nCp+/JqpSFYh65l21phl48wvfgkF+zW
VMQbB8UpdDibpVjGkfPV8y+kaIjAtKd+Es7SlbvMJ4My5SpqmM3ExtAvqnYP
Cx2vMXFT/D0p8YzOcvYzkaftqT0Nkq+Gx8sSzeEFFhZJtkPhPqewOUWXPlfH
6Kx9DwNvaYLcoN5MlXwxBDyoZl9whovKUrr8ml0xPbe8FYxjujQcDE5ZMeiI
pRIs77E3j+tY0nJ2BNvFHLXYrdSqY2TkrBxUIV6rfGszJg67+lPT/krQOn7c
w5MgDl8T9xms/2l9mXBiXCTIJ8OSM5tuUqZpXrLNzvpP/khz/lML/nFJPOQt
jGFOZSO1rDIcfbIy+Emiqdwz5iwZZZgSAAfLhgA6a1eWWxFec7qNIvkTFid6
xn5o+IgU+31OK4OlkYKh+ivpUkFbmeecSezuKUnkbdrksOI73rrQSXMmx0oT
M8MGTuaIbIyRAzcmv8qgJrTVMt1KOClGQfo1RzF9aUXWtch3meHzChCpN8TM
en3MtdATOikTu8Rc1lT8kPOWzjCTRBvL30yTZ0AbAfadFqe1fF0mMxrZpEj6
8+mI00u2vBQpKm4ggmAcq4o+Usfe5D2qOkW7iZINSER/YcHmLkPmNCz8zz9i
9o8sLdlUzCdJv91At+TpzKXWFX6PmLjZ4q/xaKQXdIDS5GR/L7I+awZ1gYhZ
gSX1PL71qvXiihG1ptWc95AwQ7coBAYpz5HDNZQYcwcUrYcJ6gCVHHEpDyYZ
jxl1WhHzEtENC/lJhXquKEf/xdmoSIyqinEW7DWBIGRtWXIbrxa2A82ZJGtH
mSt1WyLzTvJsXmJ3mPu31VhMLZopDotshZJdhItXy+QqY80iVK86UfRlR3dL
TeLDtbMpQ+agRum4J8IuLjhAnJBSaftLxRtAa9VIsPHTcYa6HOD6rqV250T9
bnj1osCosOPHb/M0sbzvKhFKqukppmqdzdBoySlMDd/pWzSxFiMsHydl2I5V
EvBqcu+Z4KDFsshHmLPzm5T0vkFsEd7M5KfMq1/1XNRlkR5gmAhFTcLXiMft
ilwFy5GGtRnd1xWMKagZs5FVm4Y7vG3Upx5nmuX+nmQnUoGcsuZMsksrJQcA
h+loJuUwpPp0i8Q4EG2ydMxDo4aYkaUnmIygtco01p6gbP+yDEJO2MOXCui6
AsA6ECkBzBoZKVwyJOYEIFikVhvUOfJ6PGgO7GmEc6PsMnmp5WspSzi8HeW/
oiZS9bIJykwkHYHAckmnR+tGYKY4WLRcSoAEFCVY21vjlNXc8fGqSTr9EAn8
2buUUxJXGdE9F6JCSZ6w4oScvp4SglmK/s4s/XgytVExh0WryNLmb+HXACDF
quNVk5Ea5VyQgAqUpDNOCjYzrYyLypHrNmIAFWuo3W6yUImnAbP2J5g/HrEH
gHc06Q/edeR/hlZMzPgyh9RpWBuu2ompgGbD9pCa0W3ROEVqgLwOSNAxwL0Y
zlbWJ8ydH5TTSQafdomTITkmtN1ruYSBpDNjsi3q2yomY5IzrE+HNO2YDvQx
rUQu48YZVtlooDSM6ylLv9YLmkAo+xztNaxVNp7OPNTA9UatRnQYEmzPAsJx
LN9SvyQMxDo5c/2COfklUFuiI7tK4XT+EtC61xLJhhL/K/MXienKJXVDmLMC
T2tMTDq1MfIIyeOHL8DtDku10nQEn/evuJiWL4JaRjmQ0fACzxuQV+NpUZeD
OUrwlNvbNs724FS2AScdJq8rMGOYtgdSpjWwDTlpxGTREZuHxAFr7S83yo7P
WDRhuZwJ0tcwJbgVWaWRsqYTU+iNrHPRSfY2LUaFt9XbaPqMZsX7UvHMTMLF
xVp/KRIsvFuXS09ZR95flo53WwmZzERAdGiBeeQ40xf2BTSAy0rOyTSHR8Ad
vcrQ5HKYjygv92BEp9Thn54A2DWXVFsIr4OEQ+xS8AdxJeJVWEUDpTUZWhWy
UxgYNZXIH1kCGjBRp97MG7iWDoZW/YYtGqd9SiuoZLoboTDAPN7dl9gYWZ+q
1gSP5wWpqlRMd0g7ks8cmTHR3T8bPobTKIFllbVBSpkHwHQX6SQEGVQoLSnC
KxRi7aWyGL/QxNucJzrzTadc14UORJCY0hstbysQY62ijGq7mnan81KItaSN
RwkQyPoAeFsbmA1aR3bdqcrfZsbacRMua7Yus1+hOa/oz3t8goDvkLsAMkci
JsiVON4JwdB8AWxX0iYGrBN9F2yWrjg2QsyITKSVFYFrsW+Pit8BHMpPS4ok
y2Z0xmUhcipnS9tGVrgCJZ85Ljgc+WzCuAUCi5aWhbW0kjA0EuKpJOJRTT6S
cyoq0Y5qZOkdIT4dNg+u/V3SvhZdOg+pSGbQrIcqCx1BmBrJ6FjgKJqbO05s
FpPP8ah1MGKXBMxgIKLNWBrTBDVjIqGU+Zc1svAigEX23ZaKq4rRfRSqYT8B
RYCeXMmB62cDNpMO/ZSbXGEGDUT5OB+l5Yj3hRCS1g/RjkwDkQiPg1U11+EV
LbcTOEiCZ2F08pYrN5OgwFYLb6ORBZy92geVLGdhyCucDhufiS7HpBVW9S1W
Zkf1wXQkhTSCRZ3l47RHQ0t7xOiZe19iF7D8I1QKyQuGL4hAcZU7FPO8dVSM
MtMa9lTzLlZj5vLg+ZhPUjYAPsjSBBUOyiRrrsxZ0zKTjkN5xXB/3CJhp7Mr
oD5ZyWi03iuw7CaXs57NpJwbvqHNIOUS+gHF9hIlEpHcJtkgn2kQyAmsGH73
Au9tjvMK2SBIhhmmOYVH7TE9El2Of7Dz0FQ+pAsfFqTdrpeufK+WJQsJbMcu
WVi+RdmYjcnEbS9TsQZWQypygZZWvz/SoukYklrIG+qxdxXAKo/PkoY+4Npk
Iy1G7eQL4gq1PuBEE9erpGzaHllj3US5/tOlIvgFkYCeJpPlWlHRQklCbFcv
b5S9helyP2ILQiwnFkXqA4JpRXQDcYftpc6qsbG9mWC4aIVJY5XTUbeBeICL
sbGzqRSLUR6HjHA95gNj/V9z0H/5eMdl9QifOdWtTiVmXJ4ZjktxkeP9BO3g
AbaQ5SvjyrKEYtxjsHBpQ+F31rdQe5UFME2IFh7vfXyMO0QtjIRcLSc7SWrh
utDPZYZ1sFxdkuRvf/1vslIOi+nf/vq/41BaFcm6jFxOeiRjH4hmbNzy0JPk
urR2sL37Iz5nKZowRtmEwV9plcV85qOJ2s5bocTnJLr5VA6FSHS1KUNv5FbJ
F4pySFr1A9EjgjQi0xIlVBaxDSFRQTErrduk9KNO2j7lkwdPXel1T8Ov9LVX
ht18gwn75O7D5Nl8YgTNmdtQWEhLl9Nczc18ncxJvaXEWFDrXbJDB2b3yITv
FZTlW3WvvJyJBf6IxC6t02ZLF517tIhhHVd3lc6toCeUtLBM0ZhyXVMRuwU3
nGSbHWd4AwC7KO6wVmU5EDNMFcZVKXOQFFzXHunc0KKrpqHBIN3FIGurvWFR
VAtH6i7F2Y1SLgtzuRv9Ve+0SZ5KS7uJHTmc8ihswTeMRGjeKl+kEyU1+kaZ
kZcjKzmvFvBo/eUKDE7AfDTTO2GSgaYw9GeoUuLFfiakgj+sZEXNgKdH2uU+
kANpfAfrr6Ly4wOjRVNOQwuAyopyOrsTE5s3qK3s+BBQ3Q1AXa8oM/tJpF7x
4KYPgvqZ5JICGo/6L1hB3CmQA6BrVbxk6bhAcow0MVxvWUVEAynmTF9KGU2x
C7GSVWWGBbh+REXkvgOLTuax6RbTqxY90lPFphgYvSncSckaMFBWbuS0w7QB
H0lBOZqpvGaqJop6jEymlqRmwLFV9FQzstWPKtefWgK0cXx9Ybe+JBxYWVff
jOsft4xyogPaVxkZgymtrPh3GQVB8xqQDuKLugmbWOU16c9Ls+34agJqDwNE
J1OVWtEdDXEIT3qwcAo5nHxHUdfG9CrtbZH3xVtDj9+XX+6CajFnifsFTeSl
mwhZJaXmLxY3oPLuRNecZcD2qYYS5ohh90m+G0ykUsn9NqCkv5w4CL6K8XOP
0GJQYlw6wsppRBcqCH1UPkIlydliSeMYXlV5T1IDKp3WGJVYi6VM9+h7STKX
jYnoSo2WNIizTtXHE4EVqEGWgRZKVZAN9MwzgO5L1O7JHLPy87UYOeOz7ohv
zfiIdFUsIq2msTMhr/EbxgWRxvCQVbBQGZZ2gNVjK6yK8SFQ1Iaz3pxONat2
jajg8d4ZL3uFFQG9FclLXRNiYqQvcukAUomDiRJnD+1/xP1K0W6MUFIpHwtY
QqWdyGQlC6z0CKaGtzxynLgoHhsy4ESK8kK0ART6Ek+q8M+AmnShiW8ymtRM
w7TUUgZxWsBHJUjtXFZYmIzwc3clREYdGAAmnkEFYuZ6xzP8E3CBIcidyS4d
Sz2p8f3AtshME70Ex4PC15uFrP0iFNZrLtgu0E3bxaDdFcuNaotIquyTHogG
7DgQjmBHjhsf9ooUd9+V5HiHpnq888Xi09RKqnxMoirpHKykCXWAKfL3Qgy0
2G9IARDTe+jYwh9HPh7qruEbTlpqLWEs4io5elr6ziIujQL90btlcctCeJCJ
apVPPO8rvhTerR1N/DVDa1Sti5A41vvBs4beENgDPiPsVZ5B90RXQf1wptAH
EdLy3ZJUmqRbaLKTg24MYEsnbdMxIZjhGFmhnzP9GrM/Al1eUgFod1HDpFV5
uy0CKIPuTCG/R1SMwLC4Fs4P6RwJsGIGCQbVWTuKj1qLrKzOVOwZSLyi9Jzs
nQ3qni3NB97SekozTJ+P2g1Vh8nese+Ps/noR54uTmvIZkXvqTlBus2F41QI
Xw8MrHbXRqZkMymyIE3zKFs1YDRajDRIe2rzRKYTj6s2cEJzf5xDy2rP91Xo
woTuMGimRNqDNheUBpwg0QKNaDYs+n4RcQRzqYRNrcV4F59hVepOcgLw2ewj
xB0VUvQdGwMzmZfZ2FJq0Z0rXgWkowgqVdqeqE2rPitQ6qdCvqCX+cRpNZ3k
J3FAMaOD2wFPvWMOUxVtYKSoLUUzUhdE2kOS6zzfXbqOr3l0CpFHRZydMMXU
d5tLbvKoZr/h0AcTmN14PhGTREfIlKJs2NS8xUXe931zpDJa4KNBW9tg8OMT
Z9qUNU9Nr1FziROeSSb2dJdO8mMxmgMOgZYMlOtUV7e12N9VOAdyCKIPcFqR
COc9VDPx1sc7qJWbLXIF8RAa52Jyz8dT1E5i7VmU+nzM4IbpvJoZl0H2eZn3
yR6qFLJy4oFj9v5lkEfTRMzVSz0+yzDcCqVCkWxfZQNRCYFbV1RXzuEcEVC7
IMPOLXegRh9wSUPJXFF4Gh1f9oq/LHNSPvCwOj8QBngngKG48mOihhBVJEKt
VblCF2WnleHpVDubLqOYBOgWitA4TWaoN6DbQMn3RLQVrgJxpGZXpMEV02zC
UsrkykvRZ6ZgVlSAoEyqyFqJOKHmSg/haLaw2KhgiNZAK+YNJLZttRK61B7k
I8b+FgjuRZsuwekapJRSUj3AdE1EkpJ3GmsdTOcvkcFQnTa1kyE1qZhFYpnF
9kWZUopC68jfJMYPJAdArxGhCKrz4hOvmHcpJl1pRZTg1cm+o99qIXKmh+AK
1TkcoVaKqgyeWeSMVQZMEheXmL/CWwCG2jCxYXHFQodHZMB5N8XCfW+J3c3L
Sg+PeXiy8z9i0hgjlJHCMiXhHSRBpRoiP9OqcGmXcmNeIbEW11bJ5zLjXcEF
8lcCdSYpYucG2mrCxbheH9UoA/CVf1EKLI1sv10URf4sZsd8pHdiM7ySgV+l
t5cgSj7E6z0+rlR0E6YtydHUuTY2zLEoZPfdVcGakndn1gHm51+Vp2a1wDrz
7paEg62o4rqPPeS+80asCno9LivRYUezN4HlWjgnuoOQhdO7KzKhEtsIViAD
rzSom3kEz/iClI7S3dORp5I3ETH5kK7d8Qb5yrPS6EDVKuK/axw2janBJCZS
OT0Kq/ORawHZ9z2zokWsBGp3wCAt29A21qdFVt41lVis73rg+T4GzTdaZ1F9
1wZwDDyXNXO/iFCWXCk1WqsZqV26Wo5RE9duXGI48l1KGsICmPgJ4BUrUODS
igRa6glRuLrpKCV9i3BXXYlRliSDAd6doBOyxTqJzZh65XK5M9dKliSkZHRP
ygSUr0aSo92Xu7XwMtJh+0VvTrRESjdRy7Sn0WlnQ2f5VIi6c2kpUlnbhEcx
HxLDuWITO/MJPGAjNa2iv9EknaZXMMorYPVj9OfWwJnS7lOE3YusQTpfMZhd
EllGSwLISszmNFcDOfO30wr9gQiXPnzYFFV9llZk53PDYasMMXDafkVyHZkI
BjLpqip6uVZNbrfbsIu9X3Fld3ta7Ip6XHv/lNcg6/9hfQDSSYZRn8cUPcf8
7qJA0D8BzctBftwDjEo2Ti9BdUxeao7bPWi42UqOAXmHOWzLszLLoVE8Emjy
79lbwIvj7GqCd4eNTf5tjlyqkzxPS3iYnJQpCF0bh2ffJ/8TpNDecJMvZl8V
6Bf8Ip3Oh/D23Qw1j+QlL321KfGLb/NM3GQ8zAEdQuQwmmFyAGczG0F/o//7
fybJSVr1ULLCPvaHZY7O0UPgc7AL2KGpyF6WXxeG9Rx0iCkaXt1wVQDJUS2b
zmceo+CnBGYUXUpS1Ivc0fB4VXYkR+sL5Nh4IYAOcn3goxPUy8r8IlooLqaN
aIqrcDEHZWciV9ID0Oe6pNx1UZ1ip/2Uyy4rQuNFz4RZ+yUPAUSvrDtzN4YS
5ghfj4opHcsZaBlkxRa8bHlrYf4FdSz1lmlKuh5SX1eWjUYskpzuI3/Hw1+g
cLX8a2qVnEmMoCH+vP/9692znZ1fJI6oC7KIOHmju0qJfinKJigGaTqfiVUZ
FNTSHzjiVwksmaiXVzr4jCw8F095dC/SbvOB07ccGHExKoDoUv1LOARDZyOT
gi+BdDbLKn/++EGOGjH5Rf6pmAdmfi7xm1zBnMSeT0Iu/cbLL6TXc1lZJ+iL
SsXGemhrHhwAddSGoaFjG0U+azgH8x5iaOTDM0kv2GATBNrAYh0XhFXuLAnT
GZDPZeGp0rg6l1kXiF9mlv0hklF+u7v34QMw5inHfSfP5qP6peAFCoq7J0eg
w6fTaTv90LwZyENc1fEe5j8gvaBSko8hWqxAdecDyQ+hl4RUXBf76KqbmPK6
SkND6d4ccLwjaSgqZd0sUbwgiVjH/J7i3B4+tAsh0Q05YMNZcdniptKL8HAu
TFxOe/b1hpOgOPDewHlvWCHdTN5/WIPlsET44ZduZGdOmApD8y0qCxvOYdpP
vkqqsneeV/1zOJB/SLZ/58PwraE3A+pXMwdo53c40gw2U4dJeTBsiK8l2lQV
ERKP6eXp4fPjw5dn52d/Ojk8f/3y9ORw/+jZ0eEBAN2y0b2ehkMIPzoJZnLg
9dPQ+uCHn17ygKX9PntaLWq//8OrQ2j/6HfNWyG2A55o/FoeS0cv8mpWk147
1gK9rUjawetHgeDwy2b4YU0HfgxnyO60AzWPlB4qeV7rSbb61+xKXQzIOxmT
NqgrXCA7+7uJ28tQxun09/Ddo52WzfW7aKwfailetq1Y7UK60FZwauDC3kge
w7e50y59wpRYhi019sqJx4/t0Gs4oN1MRqCCzABqnEEISiuBMtH1UiPNaNCV
6pTDb2SGv8qtW6oGnnExy+qkw/98o+lhnaQYcjU3v4nO1EB/xvMGPL9h4ZRC
NByInVscCN9nonYsSPlWhO5eRZhOb/0Tg5/boVmO2JGlwiE1myzIAIoiE5vh
VcZjFI45r0Np/niD/6eOtvq8GT+Dr2oDYle4sfj+piU5NvsIwqNoQL7afobD
aNzBR7fYwZ4sZbDe/2m9+SMKWDvIdAXa4+Slp/io4xBZM1AOtsAWlpV5qlSv
Sid5jrJewC8PJRqeon+yKPAkOLC7p4cUJ5RW5xpCr5w/OgK+chaTQVsHdjfH
vEJCtsPyih39QL+nUFDvy7wScTnrR75VeOKhRTVLx9OAHNhT4iWyruJu6sxL
HA4EDUbpFFZWAXDWgn9LJ3O8GN1uJdvffr2VvD7b5y5YKnI9xNKV5QvlVcBy
O0KRbPswlsjTAJy49WjH7V+/tui6L6FACKhA/sylFS7XQD4273eL/pVRP2os
pXIUSq53mmgnJrOvdMSt9+D7jnXlYR18qCD62YCM73QPQOrLU3mlLfiTjSmm
XdiEmfGwO0PKf3kO1Oucxnl9DTBYWc3650i75JMYXHOr5A/WQP+mVSc4EtfX
TU0cqv+8/Utn4eBW/tQtVcNHnU7nBkB5+yNG4X9s4/DXj6SeDuU4KjpvtzsB
VihCxWg9nyzDNB8uU8hzZjoA3iN4rwUI5t+CfxaULcQ6jEhMMKr3jozxaeZl
4YhKxFCPBMYr5k/lVXrpxzNGaO1RmkJ9JGA+aJ1kfUnByPyjQTi7SzEVk53D
U+LEAaW2fuOpf19Mo5N+rNc4GuKUmWOH1JM1DwXuAn7SL4wROOcYUH8Zjs9e
O4HYq/HmUyJ5cT6ezWsjxCidaIhOk6SgJ4vH86zwrDerC4LKV0ZEPM9R35Mt
0Ebx4ya99hVLItR1UwqjBYPRz+9hTNapr3R66+x7XgTrTJ/zIj/63R02fPF+
fxVjFTdxWzaJQy+8BfNnqDgSyBMrfpvpp25VOCWj8mWP3xeDAcoJsQd1FQoI
gWDhMX9ZT4B3ToJDsJ7AcmnnPe9DXsdZwTbhKOTXP6njtKer+Z810fCrWwn3
vk4SCYhsVVGisDu6ADlpNhz7xhWXKdERj1QbCopzhkh0Myc3L/KzEnvH0fOX
u2evXx2e7754/sOro7PvjxdaYg73DySu9PT73Z3HTxZDwJa75z/Bv8+5aYgl
PpxH33y1KhxoGqBMAOfx9s6qcKCpWXVQZy0u2yO0ojeoh5yLe3dCEk+DrI3f
+3ZbFr0lEIZjYCWMVYORrKo5InrHHUS/I0spuYjDVfN8ZnlU3LbX5Eef99VY
nqY2vB0w4Z4Rc+IebLgOUZWyCg/lo+tC8GnD6uhtLc4Nk4Ph/2Cs1IqdTbOy
bX41pPpHpIeH71/1nEMzk6ljyN5CLCAtF0VxMco6aovunJn47ysCj1Ye9Dib
pbE8oM+Y1AigF67WWyhJ2CWFxnCIcmVzIZ9mT8ZH3JRIQ6OCsRBlTBLz/bfQ
eXdSKIi4/yVdm6IE1DgS1M/FW+EPyeMm3capHE2ChYicnDlHEgaSFhjKocq0
6lJCCCpwXA8+xejKwOjtCcLm7FVmF/NRWlJpAa93E96QE9PzZswgUUVk9kgB
d9IVyQZOCXd4cYRmTHI6P3sdcD8WJB7X+8tM5l5VWvekdPcxAH8S7NyP3in7
9+wK9N33y3ZBZN95F518aqdSPpqVvXO8vnUr571gRXUxQ368CkNmnUM16qV8
WS1lZ+hQpXJZzU72ioxarDG4PAuaBeSma6N9arbB/1M3lOlzz1AWdps6P92z
V/tedxrcGXcIrTbg/+td0cNmg1wwuqbzecq7qtQlTDlx09mUjxmFlkBYjkAA
6ISCYnKxHsFCuJLGIbxkjB5ynL4MuDZLSuj5I4ah0CD0+uXRH5NsWvSGN7GE
dHZOAWHnBPGcs5z5NOCWI+xyojn8JwUodLPMFNHaoD92tPx5rDuECOj2Xu8A
VkFzpW4ES7+IbbH80gkX4XKoKzA28rEhrc6xWYBP+7srfdpL9dNQzHGHI8B0
y3D/aj9UlqtQwd4D6vUyzInvfwFHQOibw9tTIizLPzLa96g+2HhvUO6z73my
QD5txaFFnXR7+rGFX3qrqA6wLpsL11FHRPT9alAmUziiXJlwUHVuZB01Ti2n
/VYkhCJ3MnKoy2t0eUVSgrsYlTagtFczorKhe4jaYi1gmg53MXBUJBYyg+nU
WZ6hxG84gpt469cr8Fbik86AsYC3YpL/lIOWxGexxUDY17UUvjZJsrLENOeV
VyZA5E1qPijTcUYXtyCdkUTcktRQVLMKaNwMHWiLfiY+wWgfAGEHCz5ckXs2
h6LIHTMV9uQgEnGIXhRjwr4t3SW+LU1fyTLhBPmy7j9eH+0Hvvm9tCy9SUZX
3+Kyn3pBdeg1LRFyBIwslxJS8frghKbtXsCTh5anhO5DMlF0U++dGxAcnnyW
U3mMuMSdZYohUXZD5ST0Z2IPzE3NfyWJLFILrchBcT617NA1h/FKEyt6/sPR
TbPvzMQ+Qc6VqFsUM7xD5ftkuk3NLihv+HQ6unq6tvZl8jLIiIh8AL3K0G+6
DXJ7m0NR2CF7dBVGUVPQNAr9FmPYzZxxUPx3vYzMFBLNpSoAFPS977WNgHE0
iWWpsYi0WrKbmXeT5vIWnw396BVODibbLMmCKUEl16vTXnBIJzqVQapB3UGQ
A93JT6I16yT7o5xuyCVzjy2I3AsTIPXkzMvmFBKyIqHrlhfOam7SksLHQaZY
AT8nAE0Pk3U6eUr99HtAJagnGTFm6wqROF5iC6+mbgCl37Jn3briuTi0rycb
5i84MS93F+Xz5uDs4cGLN5KI0fyyx+Niovq3q/ay/XBrpQpzm+KCLS7vvYrv
M4OBeQdRoj68M0KH4KyQmVlAJNfVC33HK4dzaXJBZTIpq1rSo7U01wBZuFfW
q8pPSPM2eEvEmRxDYcYYUVFtSsSyrbYOIjhQwbUiogutHlui+KaRUZg8RcQH
NNnYere1vSlvaROeJusySNi0re7W9tbWJgHclU5DiAfV7PuimuFL/PLH/fP9
03UCu7W1wx8ifa19dFKUs6fJFi6wd78SluiTAxwGJutu2IUsrbvfJgjvjtdM
yJR57lukwBgoErulXjk9kQN5nFutw5bO0pFLvoZKQi6kPKP6g9D4+zYigeRP
wWMTVqqA0I2xSSJbGpCJ5Vth8xbNpyGCfjpuF33H93A2DuljrvkpFNmIYmN7
cztfR465Lt9TcFaFhtO8wsFFPLulDqgpyZkTMwGzczxbieAQaNxEk8+rKw9C
x3Q+GiV1fspuQCzMnqhbrG4Bc8OOWi3WMMwRnzfbeX5HCsDu4kNL6mY6ukyv
kFjOXIp7RHmkRBclJw5DOD6lNayDr4gx88UqnHoXn4ML0xNKDGuPIDiwsQqX
WkYtN16UgD7t5phLouO5oiyYwfsPi+coyHOHScqX/wSzjPW90/kUcTjzok8r
V1vAoyityJlClXgpFGMfqw8HyPSI8dFX6urLNcy8mgagZRRiFZbZOyc7lrdb
WCCOO/nOH2xsDLBWbpInakE3OsZLakeZk/JNZ0XZiQbs1kfb8pGhfcIJ2nyT
7W93OttPvulsdbaffrNlj3/e2draftrvfvP06fYv7oW9P84rkkV4Ng+5ai6N
/yGm1OQM+fgzXjOFMHNVcAxxKtaAZBF5AW0GumJ1Te2JamoqzzjUccoa+e3k
gV7Gydrb7ByfHHJQYyXaTm+RtlNgrOacJe1kiPknh0EEO0XaVBTeUtHrS/bm
bMvrTPvJJ65cRT+n8ydhyrV6MyKmuE8rp2uy0v/+vazGNx8+SDEltJRxDhv5
rOXrGMZRKe8rpf7sOCjfYmXfoSZSiofpCrTUk44hMNJ2Y55v/RxILD9st/W3
vRV06MOtdS7pqRphP5dMB3scbCUZ7uICHhZY0JJk3ofU/Fm9eapSOCXJ3ZcS
IXscU+NH65G1gmR+FBgxxQ6025fLKAm19UnnfNpW7c4lCN3vJOsod2EYZJ/j
zGsahPi0Lq3ryYVVlzdZW1o39dr770VN7gtCwzgfRBAWNmEI0gttj9/9dfzP
oNl1HUJtAs0QwiYKoQOj6tBz+ddSCNwmgLABY0uSTXgB/9rjfy3+gzbPoE04
hjewUl8QfPjXgy+C1XJj0JFSm3gd3Civ6d/y/EHU9yH0rW1WgxCuw5v2g/YX
PLQIAvTkithe078X4MO1axXgQ1IfQxJBiJvZd/cJwdbswV0hXC9s9htB6LQf
POjcDAGaCe7HEABVDhhVmpoZBGj2XDH+QQgBUEWRGpvtKrR4DF6zJILg/3nN
VqZReBvSWPR4CQT8ZocgfDytjkWeb6yytEoIvsOXzz2V92NIRMw5vPrbqz70
Hq1dW5pgH8dOmbnungaIp5zzuuGRt0fhN6fJxu5mw8O9zQAT8dH+pi30g6ZZ
rPCQp/aApka/HzTVJ2/c6qaH7Lp83fxudSA0Hqvi/eCG9guAXFOmQLUuNp77
FYBQhGqKmX2zUTPxuBnIvUyH33zkwhoQVeY35tPNhe2XAqkf3u9WRx4bye+T
djv8zx2AJFxfHubS+nm3/d3eL5v/uIX9ZwFiG4ySfevL1pd3WJP72eKm5tHw
9hYNbymQVYe3fCS/jxGwGQOXA2EM5Mn8vNf+bv+Xzb8/2gvW39TpJ4ex6LYH
GHvwT4GxyiAf1Gj3LYAsZkW3AbKQFf3W09Hmq+77iqSA9n1v0b5/YqSAJoOn
8uAGUtAMpOnpfQAJF3ufFvt2C9tuNy/2Mij1hQWCV3vSDqEIeaOBLlkVf7n3
ebk9ILQDrYRf3Glp70dCWa39AiCh/Oif29tIspxQzYJtHBn6rUfCb+6BadyL
srJ6+0VAHrTrqlbjQ9O/Gp+tucMWA4ofLn9WU5y/dVcFsVVZjfpSAMnTodlj
yLc3H9RNyR3zmHfCXPIO/rOJFl8CQSVR8jJK3NEAyctWLoceAB0YoKCmiDlE
ceJT1qlrMDl7vT+DxQaBmtofPlj4q2YQqNkCQjvAwl81g0DNFhDaAfjXYfDr
2aY7pNHUHsRTexBMpunXWiPO3/Ag+oUw6sf09jDq9OKWMB54hGsx0VoOA3+T
JOe/uy0Mc3fKJ3eG4cTAO4/jPtYjuYd9URiBQeIuMEKppEH8W2Ucv79B+lt1
PVh2aWi0KgzflvEP3Zd7gaGbe2cYasXY2Gl9uXmf+OGN7PbrYQPbax7YajCW
I+6K41iKuCvCSHyDwh3XgwTuwxb817NfNleDcS9nbtnQV4WxbOirwlj2yacH
4+PPLQlydDhaz/+BdF1/LzJ/3AbGImPOrWAssOXc11zcxq16buMnvHOHuGt3
omOhmaBG1RbA+P0yI8GKMBqR3xjyHddDDAyH7e+ex/acW40j+OXt0h1h8LCe
8S7dYV/qu7RoYyIryPXSbbrzinj7FFF21ghvhCH79Iz3ySg77luLH642Dvfr
niXDhY1uhOEk9geLGt0I4zpRK9D1okY3wzAl/O4w7mMuyf1wuvvQTm/65EYY
NWvRDQ8W/XJmDf+7JQ8W/apnSNy6HyPS87qDYbMJCYSG5N1mZEfyy0WYCegG
A1DwnvxTmmxN3F0reX47gxP7u8R2pudkZ/ofGOyMJZheFBfNbrX8HvMP9SnE
gjKfa4T30ekhhq6O0ecYU0QGBZlzjUvDhcSADCkGPp13R1r+iupvEch2GGck
/ujkjt7e+mZR6YI/F1zMEkZIRU92uxWVD3sKnV4WZR+rnk3Y37iQRP9S20ni
UyQpSTpxhbBP0ckzLfsAbv1EK2xxeh6smrWuE0RX7XbSgz2iCOVhRsWJZlT+
bSqJ2tqU67foz3sY8JpTOKrV1HTlhKnYX55V9AUvF6wrFh8ezbEymhQDFJ+h
hPGdGvsDpBm8lWnuIapSla9TnFP+l+yprQUsUT8rBgPDGKxBKu7+jI/jYj6x
xLqVV6a3I0Msyot0AkATjsuhliWetemwgoV7SVUneXLrVjLhxIodrSNi2vNe
UPyj5aomSL2EcdHPRlapQMDzIjxdnPi9FgXsPM0rwJ18EuHOMSHpOpU5Skft
k3mJOW5dZRGp2ruecPaiEVW6wfOcvZvB56dTWL5kfT8vexRs08+mWLBr0ssl
NS4liMXegQatc8lwdEGXZaqeJut7QcyobMg6fbz+KqtyqcJCWYg9WFhI5xAD
imEwl8Mr3nUpI+lnkaHoP2j7H1gKlYOYucwpJyUoco5w5YQQGB5EvWmyMls8
DvPzXKQ5WkiScrptRxT/EeMNcBLoH73aWf+6+azr/pzuH59Y4IVUZcBBNAG2
YMX21iPL1qpHf8XhPFmV9Hgo/5QDAY/PXsfPj2HHZhy9GlW8aWNEIdXP6Vv8
iCx2XFfNoTjyqSmiWf6uCaOPhPZw30qptA49px+SxYDu5fXsakoFOd5iKAPG
iCIW99tSjE+iRpCEdYXCUNxohbRAK3f4OS/eCgZgGkOh+V5fgJ0NWdA48QK0
e871lYWYw6ohiaeSmZZZAffVakak6P2PmQm6EvlmZb+KsvIWRHM2Sf3BETC/
1bDh8QJsqC29ztCVjBxgee4yo6TGszA8fMXOv1oVFblzStFnLAaWFfMPcvYt
loLgSKdYvclyntWwGDZX9y9+B0MjCswpSZvQ/0CYxlVyRhQFqzQ5PhN/cjgY
wD/pCm6fghGPJmkP+EPa06aK6YtJ/s1ngJEHR4XlgoylULo4Kr9dBcsnFeQp
vpuH3eKalhjji9l+LfHk0QF++Sx/h1+V+duUAsSTkutbXk2LAG4z9+dSAXpV
Jzm+xrVB4cdTx/a9Y5L185kUHP4VeqViceyFTBy2mgGslsoX/flUxTAuEiYV
nvAgC0t7JYKbhNu6Q1fZOXz1bH9ne/tbLv6Vp1QUyLpd+39/8GmiCZ8CAA==

-->

</rfc>
