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


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

]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-teas-yang-te-31" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="TE YANG Data Model">A YANG Data Model for Traffic Engineering Tunnels, Label Switched Paths and Interfaces</title>

    <author initials="T." surname="Saad" fullname="Tarek Saad">
      <organization>Cisco Systems Inc</organization>
      <address>
        <email>tsaad.net@gmail.com</email>
      </address>
    </author>
    <author initials="R." surname="Gandhi" fullname="Rakesh Gandhi">
      <organization>Cisco Systems Inc</organization>
      <address>
        <email>rgandhi@cisco.com</email>
      </address>
    </author>
    <author initials="X." surname="Liu" fullname="Xufeng Liu">
      <organization>IBM Corporation</organization>
      <address>
        <email>xufeng.liu.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="V. P." surname="Beeram" fullname="Vishnu Pavan Beeram">
      <organization>Juniper Networks</organization>
      <address>
        <email>vbeeram@juniper.net</email>
      </address>
    </author>
    <author initials="I." surname="Bryskin" fullname="Igor Bryskin">
      <organization>Individual</organization>
      <address>
        <email>i_bryskin@yahoo.com</email>
      </address>
    </author>
    <author initials="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </author>

    <date year="2022" month="October" day="24"/>

    
    <workgroup>TEAS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines a YANG data model for the provisioning and management of
Traffic Engineering (TE) tunnels, Label Switched Paths (LSPs), and interfaces.
The model covers data that is independent of any technology or dataplane encapsulation
and is divided into two YANG modules that cover device-specific, and device independent
data.</t>

<t>This model covers data for configuration, operational state, remote procedural
calls, and event notifications.</t>



    </abstract>



  </front>

  <middle>


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

<t>YANG <xref target="RFC6020"/> and <xref target="RFC7950"/> is a data modeling language that was
introduced to define the contents of a conceptual data store that allows
networked devices to be managed using NETCONF <xref target="RFC6241"/>. YANG has proved
relevant beyond its initial confines, as bindings to other interfaces (e.g.
RESTCONF <xref target="RFC8040"/>) and encoding other than XML (e.g. JSON) are being defined.
Furthermore, YANG data models can be used as the basis of implementation for
other interfaces, such as CLI and programmatic APIs.</t>

<t>This document describes a YANG data model for Traffic Engineering (TE) tunnels,
Label Switched Paths (LSPs), and interfaces. The data model is divided into two
YANG modules. The module 'ietf-te.yang' includes data that is generic and
device-independent, while the module 'ietf-te-device.yang' includes data that is
device-specific.</t>

<t>The document describes a high-level relationship between the modules defined in
this document, as well as other external protocol YANG modules.  The TE generic
YANG data model does not include any data specific to a signaling protocol.  It
is expected other data plane technology model(s) will augment the TE generic
YANG data model.</t>

<t>Also, it is expected other YANG modules that model TE signaling protocols,
such as RSVP-TE (<xref target="RFC3209"/>, <xref target="RFC3473"/>), or Segment-Routing TE (SR-TE) 
<xref target="RFC9256"/> will augment the generic TE YANG  module.</t>

</section>
<section anchor="terms-and-conventions"><name>Terms and Conventions</name>

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

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>The following terms are defined in <xref target="RFC6241"/> and are used in this specification:</t>

<t><list style="symbols">
  <t>client</t>
  <t>configuration data</t>
  <t>state data</t>
</list></t>

<t>This document also makes use of the following terminology introduced in the
YANG Data Modeling Language <xref target="RFC7950"/>:</t>

<t><list style="symbols">
  <t>augment</t>
  <t>data model</t>
  <t>data node</t>
</list></t>

</section>
<section anchor="prefixes-in-data-node-names"><name>Prefixes in Data Node Names</name>

<t>In this document, names of data nodes and other data model objects are prefixed
using the standard prefix associated with the corresponding YANG imported
modules, as shown in <xref target="tab1"/>.</t>

<texttable title="Prefixes and corresponding YANG modules" anchor="tab1">
      <ttcol align='left'>Prefix</ttcol>
      <ttcol align='left'>YANG module</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>yang</c>
      <c>ietf-yang-types</c>
      <c><xref target="RFC6991"/></c>
      <c>inet</c>
      <c>ietf-inet-types</c>
      <c><xref target="RFC6991"/></c>
      <c>rt-types</c>
      <c>ietf-routing-types</c>
      <c><xref target="RFC8294"/></c>
      <c>te-types</c>
      <c>ietf-te-types</c>
      <c><xref target="RFC8776"/></c>
      <c>te-packet-types</c>
      <c>ietf-te-packet-types</c>
      <c><xref target="RFC8776"/></c>
      <c>te</c>
      <c>ietf-te</c>
      <c>this document</c>
      <c>te-dev</c>
      <c>ietf-te-device</c>
      <c>this document</c>
</texttable>

</section>
<section anchor="model-tree-diagrams"><name>Model Tree Diagrams</name>

<t>The tree diagrams extracted from the module(s) defined in this document are given in
subsequent sections as per the syntax defined in <xref target="RFC8340"/>.</t>

</section>
</section>
<section anchor="design-considerations"><name>Design Considerations</name>

<t>This document describes a generic TE YANG data model that is independent of
any dataplane technology.  One of the design objectives is to allow specific
data plane technology models to reuse the TE generic data model and possibly
augment it with technology specific data.</t>

<t>The elements of the generic TE YANG data model, including TE Tunnels, LSPs, and
interfaces have leaf(s) that identify the technology layer where they reside.
For example, the LSP encoding type can identify the technology associated with a
TE Tunnel or LSP.</t>

<t>Also, the generic TE YANG data model does not cover signaling protocol data.
The signaling protocol used to instantiate TE LSPs are outside the scope of this
document and expected to be covered by augmentations defined in other document(s).</t>

<t>The following other design considerations are taken into account with respect to data
organization:</t>

<t><list style="symbols">
  <t>The generic TE YANG data model 'ietf-te' contains device independent data and
can be used to model data off a device (e.g. on a TE controller). When the
model is used to manage a specific device, the model contains the TE Tunnels
originating from the specific device.  When the model is used to manage a TE
controller, the 'tunnels' list contains all TE Tunnels and TE tunnel segments
originating from device(s) that the TE controller manages.</t>
  <t>The device-specific TE data is defined in module 'ietf-te-device' as
shown in <xref target="figctrl"/>.</t>
  <t>In general, minimal elements in the model are designated as "mandatory" to
allow freedom to vendors to adapt the data model to their specific product
implementation.</t>
  <t>Suitable defaults are specified for all configurable elements.</t>
  <t>The model declares a number of TE functions as features that can be
optionally supported.</t>
</list></t>

<section anchor="state-data-organization"><name>State Data Organization</name>

<t>The Network Management Datastore Architecture (NMDA) <xref target="RFC8342"/> addresses
modeling state data for ephemeral objects.  This document adopts the NMDA model
for configuration and state data representation as per IETF guidelines for new
IETF YANG models.</t>

</section>
</section>
<section anchor="model-overview"><name>Model Overview</name>

<t>The data models defined in this document cover the core TE features that are
commonly supported by different vendor implementations. The support of extended
or vendor specific TE feature(s) is expected to either be in augmentations, or
deviations to this model that are defined in separate documents.</t>

<section anchor="module-relationship"><name>Module Relationship</name>

<t>The generic TE YANG data model that is defined in "ietf-te.yang" covers the
building blocks that are device independent and agnostic of any specific
technology or control plane instances. The TE device model defined in
"ietf-te-device.yang" augments the generic TE YANG data model and covers data
that is specific to a device --  for example, attributes of TE interfaces, or
TE timers that are local to a TE node.</t>

<t>The TE data models for specific instances of data plane technology exist in
separate YANG modules that augment the generic TE YANG data model.  The TE
data models for specific instances of signaling protocols are outside the scope
of this document and are defined in other documents. For example, the RSVP-TE
YANG model augmentation of the TE model is covered in a separate document.</t>

<figure title="Relationship of TE module(s) with signaling protocol modules" anchor="figctrl"><artwork><![CDATA[
  TE generic     +---------+         o: augment
  module         | ietf-te |o-------------+
                 +---------+               \
                        o                   \
                        |\                   \
                        | \ TE device module  \
                        |  +----------------+  \
                        |  | ietf-te-device |   \
                        |  +----------------+    \
                        |       o                 \
                        |     /                    \
                        |   /                       \
                 +--------------+           +---------------+
  RSVP-TE module | ietf-rsvp-te |o .        | ietf-te-mpls^ |
                 +--------------+   \       +---------------+
                    |                \
                    |                 \
                    |                  \
                    |                   \
                    |                    \
                    o                 +-------------------+
                 +-----------+        | ietf-rsvp-otn-te^ |
  RSVP module    | ietf-rsvp |        +-------------------+
                 +-----------+           RSVP-TE with OTN
                                         extensions

                X---oY indicates that module X augments module Y
                ^ indicates a module defined in other documents
]]></artwork></figure>

</section>
</section>
<section anchor="te-yang-model"><name>TE YANG Model</name>

<t>The generic TE YANG module ('ietf-te') is meant for the management and
operation of a TE network. This includes creating, modifying and retrieving
information about TE Tunnels, LSPs, and interfaces and their associated
attributes (e.g.  Administrative-Groups, SRLGs, etc.).</t>

<t>A full tree diagram of the TE model is shown in the Appendix in
<xref target="fig-te-tree-full"/>.</t>

<section anchor="module-structure"><name>Module Structure</name>

<t>The 'te' container is the top level container in the 'ietf-te' module. The
presence of the 'te' container enables TE function system wide.  Below provides
further descriptions of containers that exist under the 'te' top level
container.</t>

<t>There are three further containers grouped under the 'te'
container as shown in <xref target="fig-highlevel"/> and described below.</t>

<t>globals:</t>

<ul empty="true"><li>
  <t>The 'globals' container maintains the set of global TE attributes that can be
applicable to TE Tunnels and interfaces.</t>
</li></ul>

<t>tunnels:</t>

<ul empty="true"><li>
  <t>The 'tunnels' container includes the list of TE Tunnels that are instantiated. Refer to
<xref target="TE_TUNNELS"/> for further details on the properties of a TE Tunnel.</t>
</li></ul>

<t>lsps:</t>

<ul empty="true"><li>
  <t>The 'lsps' container includes the list of TE LSP(s) that are instantiated for
TE Tunnels. Refer to <xref target="TE_LSPS"/> for further details on the properties of a TE LSP.</t>
</li></ul>

<t>The model also contains two Remote Procedure Calls (RPCs) as shown
in <xref target="fig-te-tree-full"/> and described below.</t>

<t>tunnels-path-compute:</t>

<ul empty="true"><li>
  <t>A RPC to request path computation for a specific TE Tunnel.
The RPC allows requesting path computation using atomic and stateless operation.
A tunnel may also be configured in 'compute-only' mode to provide stateful path updates
- see <xref target="TE_TUNNELS"/> for further details.</t>
</li></ul>

<t>tunnels-action:</t>

<ul empty="true"><li>
  <t>An RPC to request a specific action (e.g. reoptimize, or tear-and-setup) to be taken
on a specific tunnel or all tunnels.</t>
</li></ul>

<t><xref target="fig-te-tree-full"/> shows the relationships of these containers and RPCs within
the 'ietf-te' module.</t>

<figure title="TE Tunnel model high-level YANG tree view" anchor="fig-highlevel"><artwork><![CDATA[
module: ietf-te
  +--rw te!
     +--rw globals
     |     ...
     +--rw tunnels
     |     ...
     +--ro lsps
           ...

  rpcs:
    +---x tunnels-path-compute
    |  +---w input
    |  |     ...
    |  +--ro output
    |        ...
    +---x tunnels-actions
       +---w input
       |     ...
       +--ro output
             ...

]]></artwork></figure>

<section anchor="TeGlobals"><name>TE Globals</name>

<t>The 'globals' container covers properties that control a TE feature's
behavior system-wide, and its respective state as shown in <xref target="fig-globals"/>
and described in the text that follows.</t>

<figure title="TE globals YANG subtree high-level structure" anchor="fig-globals"><artwork><![CDATA[
     +--rw globals
     |  +--rw named-admin-groups
     |  |  +--rw named-admin-group* [name]
     |  |        ...
     |  +--rw named-srlgs
     |  |  +--rw named-srlg* [name]
     |  |        ...
     |  +--rw named-path-constraints
     |     +--rw named-path-constraint* [name]
]]></artwork></figure>

<t>named-admin-groups:</t>

<ul empty="true"><li>
  <t>A YANG container for the list of named (extended) administrative groups that may be applied
to TE links.</t>
</li></ul>

<t>named-srlgs:</t>

<ul empty="true"><li>
  <t>A YANG container for the list of named Shared Risk Link Groups (SRLGs) that may be
applied to TE links.</t>
</li></ul>

<t>named-path-constraints:</t>

<ul empty="true"><li>
  <t>A YANG container for a list of named path constraints. Each named path constraint is
composed of a set of constraints that can be applied during path computation.
A named path constraint can be applied to multiple TE Tunnels. Path constraints may also
be specified directly under the TE Tunnel. The path constraints specified under
the TE Tunnel take precedence over the path constraints 
derived from the referenced named path constraint. A named path constraint entry can be
formed of the path constraints shown in <xref target="fig-named-constraints"/>:</t>
</li></ul>

<figure title="Named path constraints YANG subtree" anchor="fig-named-constraints"><artwork><![CDATA[
     |  +--rw named-path-constraints
     |     +--rw named-path-constraint* [name]
     |             {te-types:named-path-constraints}?
     |        +--rw name                             string
     |        +--rw te-bandwidth
     |        |     ...
     |        +--rw link-protection?                 identityref
     |        +--rw setup-priority?                  uint8
     |        +--rw hold-priority?                   uint8
     |        +--rw signaling-type?                  identityref
     |        +--rw path-metric-bounds
     |        |     ...
     |        +--rw path-affinities-values
     |        |     ...
     |        +--rw path-affinity-names
     |        |     ...
     |        +--rw path-srlgs-lists
     |        |     ...
     |        +--rw path-srlgs-names
     |        |     ...
     |        +--rw disjointness?
     |        |       te-path-disjointness
     |        +--rw explicit-route-objects-always
     |        |     ...
     |        +--rw path-in-segment!
     |        |     ...
     |        +--rw path-out-segment!
     |              ...

]]></artwork></figure>

<ul empty="true"><li>
  <ul empty="true"><li>

    <t><list style="symbols">
      <t>name: A YANG leaf that holds the named path constraint entry. This is unique in the list
and used as a key.</t>
      <t>te-bandwidth: A YANG container that holds the technology agnostic TE bandwidth constraint.</t>
      <t>link-protection: A YANG leaf that holds the link protection type constraint required for the links to be included in the computed path.</t>
      <t>setup/hold priority: YANG leafs that hold the LSP setup and hold admission priority as defined in <xref target="RFC3209"/>.</t>
      <t>signaling-type: A YANG leaf that holds the LSP setup type, such as RSVP-TE or SR.</t>
      <t>path-metric-bounds: A YANG container that holds the set of metric bounds applicable on the
computed TE tunnel path.</t>
      <t>path-affinities-values: A YANG container that holds the set of affinity values and
mask to be used during path computation.</t>
      <t>path-affinity-names: A YANG container that holds the set of named affinity constraints and
corresponding inclusion or exclusion instructions for each to be used during path computation.</t>
      <t>path-srlgs-lists: A YANG container that holds the set of SRLG values and
corresponding inclusion or exclusion instructions to be used during path computation.</t>
      <t>path-srlgs-names: A YANG container that holds the set of named SRLG constraints and
corresponding inclusion or exclusion instructions for each to be used during path computation.</t>
      <t>disjointness: The level of resource disjointness constraint that the secondary path
of a TE tunnel has to adhere to.</t>
      <t>explicit-route-objects-always: A YANG container that contains two route objects lists:      <list style="symbols">
          <t>'route-object-exclude-always': a list of route entries to always exclude from the path computation.</t>
          <t>'route-object-include-exclude': a list of route entries to include or exclude in the path computation.</t>
        </list></t>
    </list></t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t>The 'route-object-include-exclude' is used to configure constraints on which route objects (e.g., nodes, links) are included or excluded in the path computation.</t>
    </li></ul>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t>The interpretation of an empty 'route-object-include-exclude' list depends on the TE Tunnel (end-to-end or Tunnel Segment) and on the specific path, according to the following rules:</t>
    </li></ul>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t><list style="numbers">
        <t>An empty 'route-object-include-exclude' list for the primary path of an end-to-end TE Tunnel indicates that there are no route objects to be included or excluded in the path computation.</t>
        <t>An empty 'route-object-include-exclude' list for the primary path of a TE Tunnel Segment indicates that no primary LSP is required for that TE Tunnel.</t>
        <t>An empty 'route-object-include-exclude' list for a reverse path means it always follows the forward path (i.e., the TE Tunnel is co-routed). When the 'route-object-include-exclude' list is not empty, the reverse path is routed independently of the forward path.</t>
        <t>An empty 'route-object-include-exclude' list for the secondary (forward) path indicates that the secondary path has the same endpoints as the primary path.</t>
      </list></t>
    </li></ul>

    <t><list style="symbols">
      <t>path-in-segment: A YANG container that contains a list of label restrictions
that have to be taken into considerations when crossing domains. This TE
tunnel segment in this case is being stitched to the upstream TE tunnel segment.</t>
      <t>path-out-segment: A YANG container that contains a list of label restrictions
that have to be taken into considerations when crossing domains. The TE
tunnel segment in this case is being stitched to the downstream TE tunnel segment.</t>
    </list></t>
  </li></ul>
</li></ul>

</section>
<section anchor="TE_TUNNELS"><name>TE Tunnels</name>

<t>The 'tunnels' container holds the list of TE Tunnels that are provisioned on
devices in the network as shown in <xref target="fig-te-tunnel"/>.</t>

<figure title="TE Tunnel list YANG subtree structure" anchor="fig-te-tunnel"><artwork><![CDATA[
     +--rw tunnels
     |  +--rw tunnel* [name]
     |     +--rw name                            string
     |     +--rw alias?                          string
     |     +--rw identifier?                     uint32
     |     +--rw color?                          uint32
     |     +--rw description?                    string
     |     +--rw admin-state?                    identityref
     |     +--ro operational-state?              identityref
     |     +--rw encoding?                       identityref
     |     +--rw switching-type?                 identityref
     |     +--rw source?                         te-types:te-node-id
     |     +--rw destination?                    te-types:te-node-id
     |     +--rw src-tunnel-tp-id?               binary
     |     +--rw dst-tunnel-tp-id?               binary
     |     +--rw bidirectional?                  boolean
     |     +--rw controller
     |     |  +--rw protocol-origin?        identityref
     |     |  +--rw controller-entity-id?   string
     |     +--rw reoptimize-timer?               uint16
     |     +--rw association-objects
     |     |  +--rw association-object* [association-key]
     |     |  |     ...
     |     |  +--rw association-object-extended* [association-key]
     |     |        ...
     |     +--rw protection
     |     |  +--rw enable?                         boolean
     |     |  +--rw protection-type?                identityref
     |     |  +--rw protection-reversion-disable?   boolean
     |     |  +--rw hold-off-time?                  uint32
     |     |  +--rw wait-to-revert?                 uint16
     |     |  +--rw aps-signal-id?                  uint8
     |     +--rw restoration
     |     |  +--rw enable?                          boolean
     |     |  +--rw restoration-type?                identityref
     |     |  +--rw restoration-scheme?              identityref
     |     |  +--rw restoration-reversion-disable?   boolean
     |     |  +--rw hold-off-time?                   uint32
     |     |  +--rw wait-to-restore?                 uint16
     |     |  +--rw wait-to-revert?                  uint16
     |     +--rw te-topology-identifier
     |     |  +--rw provider-id?   te-global-id
     |     |  +--rw client-id?     te-global-id
     |     |  +--rw topology-id?   te-topology-id
     |     +--rw te-bandwidth
     |     |  +--rw (technology)?
     |     |        ...
     |     +--rw link-protection?                identityref
     |     +--rw setup-priority?                 uint8
     |     +--rw hold-priority?                  uint8
     |     +--rw signaling-type?                 identityref
     |     +--rw hierarchy
     |     |  +--rw dependency-tunnels
     |     |  |     ...
     |     |  +--rw hierarchical-link
     |     |        ...
     |     +--rw primary-paths
     |     |  +--rw primary-path* [name]
     |     |        ...
     |     +--rw secondary-paths
     |     |  +--rw secondary-path* [name]
     |     |        ...
     |     +--rw secondary-reverse-paths
     |     |  +--rw secondary-reverse-path* [name]
     |     |        ...
     |     +---x tunnel-action
     |     |  +---w input
     |     |  |     ...
     |     |  +--ro output
     |     |        ...
     |     +---x protection-external-commands
     |        +---w input
     |              ...
]]></artwork></figure>

<t>When the model is used to manage a specific device, the 'tunnels' list contains
the TE Tunnels originating from the specific device. When the model is used to
manage a TE controller, the 'tunnels' list contains all TE Tunnels and TE
tunnel segments originating from device(s) that the TE controller manages.</t>

<t>The TE Tunnel model allows the configuration and management of the following TE
tunnel objects:</t>

<t>TE Tunnel:</t>

<ul empty="true"><li>
  <t>A YANG container of one or more TE LSPs established between the source and destination
TE Tunnel termination points.</t>
</li></ul>

<t>TE Path:</t>

<ul empty="true"><li>
  <t>An engineered path that once instantiated in the forwarding plane can be used
to forward traffic from the source to the destination TE Tunnel termination points.</t>
</li></ul>

<t>TE LSP:</t>

<ul empty="true"><li>
  <t>A TE LSP is a connection-oriented service established over a TE Path
and that allows the delivery of traffic between the TE Tunnel source and
destination termination points.</t>
</li></ul>

<t>TE Tunnel Segment:</t>

<ul empty="true"><li>
  <t>A part of a multi-domain TE Tunnel that is within a specific network domain.</t>
</li></ul>

<t>The TE Tunnel has a number of attributes that are set directly under the
tunnel (as shown in <xref target="fig-te-tunnel"/>). The main attributes of a TE Tunnel are described below:</t>

<t>operational-state:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds the operational state of the tunnel.</t>
</li></ul>

<t>name:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds the name of a TE Tunnel.  The name of the
TE Tunnel uniquely identifies the tunnel within the TE tunnel list.  The name
of the TE Tunnel can be formatted as a Uniform Resource Indicator (URI) by
including the namespace to ensure uniqueness of the name amongst all the TE
Tunnels present on devices and controllers.</t>
</li></ul>

<t>alias:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds an alternate name to the TE tunnel. Unlike the TE tunnel
name, the alias can be modified at any time during the lifetime of the TE tunnel.</t>
</li></ul>

<t>identifier:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds an identifier of the tunnel. This identifier is unique amongst tunnels
originated from the same ingress device.</t>
</li></ul>

<t>color:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds the color associated with the TE tunnel. The color is used
to map or steer services that carry matching color on to the TE tunnel as described in
<xref target="RFC9012"/>.</t>
</li></ul>

<t>admin-state:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds the tunnel administrative state. The administrative
status in state datastore transitions to 'tunnel-admin-up' when the tunnel used
by the client layer, and to 'tunnel-admin-down' when it is not used by the
client layer.</t>
</li></ul>

<t>operational-state:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds the tunnel operational state.</t>
</li></ul>

<t>encoding/switching:</t>

<ul empty="true"><li>
  <t>The 'encoding' and 'switching-type' are YANG leafs that define the specific
technology in which the tunnel operates in as described in <xref target="RFC3945"/>.</t>
</li></ul>

<t>source/destination:</t>

<ul empty="true"><li>
  <t>YANG leafs that define the tunnel source and destination node endpoints.</t>
</li></ul>

<t>src-tunnel-tp-id/dst-tunnel-tp-id:</t>

<ul empty="true"><li>
  <t>YANG leafs that hold the identifiers of source and destination TE Tunnel
 Termination Points (TTPs) <xref target="RFC8795"/> residing on the source and
 destination nodes. The TTP identifiers are optional on nodes that have a
 single TTP per node. For example, TTP identifiers are optional for packet
 (IP/MPLS) routers.</t>
</li></ul>

<t>bidirectional:</t>

<ul empty="true"><li>
  <t>A YANG leaf that when present indicates the LSPs of a TE Tunnel are bidirectional and co-routed.</t>
</li></ul>

<t>controller:</t>

<ul empty="true"><li>
  <t>A YANG container that holds tunnel data relevant to an optional external TE controller that
may initiate or control a tunnel. This target node may be augmented by external module(s), for example, to add data for PCEP initiated and/or
delegated tunnels.</t>
</li></ul>

<t>reoptimize-timer:</t>

<ul empty="true"><li>
  <t>A YANG leaf to set the interval period for tunnel reoptimization.</t>
</li></ul>

<t>association-objects:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the set of associations of the TE Tunnel to other
TE Tunnels. Associations at the TE Tunnel level apply to all paths of the TE
Tunnel. The TE tunnel associations can be overridden by associations
configured directly under the TE Tunnel path.</t>
</li></ul>

<t>protection:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the TE Tunnel protection properties.</t>
</li></ul>

<t>restoration:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the TE Tunnel restoration properties.</t>
</li></ul>

<t>te-topology-identifier:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the topology identifier associated with the topology where paths for the TE tunnel are computed.</t>
</li></ul>

<t>hierarchy:</t>

<ul empty="true"><li>
  <t>A YANG container that holds hierarchy related properties of the TE Tunnel. A TE LSP
  can be set up in MPLS or Generalized MPLS (GMPLS) networks to be used as
  a TE link to carry traffic in other (client) networks <xref target="RFC6107"/>.  In this
  case, the model introduces the TE Tunnel hierarchical link endpoint parameters
  to identify the specific link in the client layer that the underlying TE Tunnel is
  associated with. The hierarchy container includes the following:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>

    <t><list style="symbols">
      <t>dependency-tunnels: A set of hierarchical TE Tunnels provisioned or to be
provisioned in the immediate lower layer that this TE tunnel depends on for
multi-layer path computation. A dependency TE Tunnel is provisioned if and
only if it is used (selected by path computation) at least by one client
layer TE Tunnel. The TE link in the client layer network topology supported
by a dependent TE Tunnel is dynamically created only when the dependency TE
Tunnel is actually provisioned.</t>
      <t>hierarchical-link: A YANG container that holds the identity of the
hierarchical link (in the client layer) that is supported by this TE Tunnel.
The endpoints of the hierarchical link are defined by TE tunnel source and
destination node endpoints. The hierarchical link can be identified by its source
and destination link termination point identifiers.</t>
    </list></t>
  </li></ul>
</li></ul>

<t>primary-paths:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the list of primary paths.
A primary path is identified by 'name'. A primary path is selected from the list
to instantiate a primary forwarding LSP for the tunnel.  The list of primary
paths is visited by order of preference. A primary path has the following
attributes:</t>
</li></ul>

<ul empty="true"><li>

  <t><list style="symbols">
    <t>primary-reverse-path: A YANG container that holds properties of the
primary reverse path. The reverse path is applicable to
bidirectional TE Tunnels.</t>
  </list></t>
</li></ul>

<ul empty="true"><li>

  <t><list style="symbols">
    <t>candidate-secondary-paths: A YANG container that holds a list of candidate
secondary paths which may be used for the primary path to support path
protection. The candidate secondary path(s) reference path(s)  from the
tunnel secondary paths list.  The preference of the secondary paths is
specified within the list and dictates the order of visiting the secondary
path from the list. The attributes of a secondary path can be defined
separately from the primary path. The attributes of a secondary path will be
inherited from the associated 'active' primary when not explicitly defined
for the secondary path.</t>
  </list></t>
</li></ul>

<ul empty="true"><li>

</li></ul>

<t>secondary-paths:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the set of secondary paths. A secondary path is
 identified by 'name'. A secondary path can be referenced from the TE Tunnel's
'candidate-secondary-path' list.</t>
</li></ul>

<t>secondary-reverse-paths:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the set of secondary reverse paths. A secondary reverse
path is identified by 'name'. A secondary reverse path can be referenced from the
TE Tunnel's 'candidate-secondary-reverse-paths' list. A secondary reverse path contains
attributes similar to a primary path.</t>
</li></ul>

<t>The following set of common path attributes are shared for primary (forward and reverse) and secondary paths:</t>

<t>path-computation-method:</t>

<ul empty="true"><li>
  <t>A YANG leaf that specifies the method used for computing the TE path.</t>
</li></ul>

<t>path-computation-server:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the path computation server properties when the path is
 externally queried.</t>
</li></ul>

<t>compute-only:</t>

<ul empty="true"><li>
  <t>A path of a TE Tunnel is, by default, provisioned so that it can instantiated
  in the forwarding plane so that it can carry traffic as soon as a valid path
  is computed. In some cases, a TE path may be configured only for the
  purpose of computing a path and reporting it without the need to instantiate
  the LSP or commit any resources. In such a case, the path is configured in
  'compute-only' mode to distinguish it from the default behavior. A
  'compute-only' path is configured as a usual with the associated per path
  constraint(s) and properties on a device or TE controller. The device or TE
  controller computes the feasible path(s) subject to configured constraints.
  A client may query the 'compute-only' computed path properties 'on-demand',
  or alternatively, can subscribe to be notified of computed path(s) and
  whenever the path properties change.</t>
</li></ul>

<t>use-path-computation:</t>

<ul empty="true"><li>
  <t>A YANG leaf that indicates whether or not path computation is to
  be used for a specified path.</t>
</li></ul>

<t>lockdown:</t>

<ul empty="true"><li>
  <t>A YANG leaf that when set indicates the existing path should not be reoptimized
  after a failure on any of its traversed links.</t>
</li></ul>

<t>path-scope:</t>

<ul empty="true"><li>
  <t>A YANG leaf that specifies the path scope if segment or an end-to-end path.</t>
</li></ul>

<t>preference:</t>

<ul empty="true"><li>
  <t>A YANG leaf that specifies the preference for the path. The lower the number
 higher the preference.</t>
</li></ul>

<t>k-requested-paths:</t>

<ul empty="true"><li>
  <t>A YANG leaf that specifies the number of k-shortest-paths requested from the path
computation server and returned sorted by its optimization
objective.</t>
</li></ul>

<t>association-objects:</t>

<ul empty="true"><li>
  <t>A YANG container that holds a list of tunnel association properties.</t>
</li></ul>

<t>optimizations:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the optimization objectives
  that path computation will use to select a path.</t>
</li></ul>

<t>named-path-constraint:</t>

<ul empty="true"><li>
  <t>A YANG leafref that references an entry from the global list of named path constraints.</t>
</li></ul>

<t>te-bandwidth:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the path bandwidth (see <xref target="RFC8776"/>).</t>
</li></ul>

<t>link-protection:</t>

<ul empty="true"><li>
  <t>A YANG leaf that specifies the link protection type required for the links to
be included the computed path (see <xref target="RFC8776"/>).</t>
</li></ul>

<t>setup/hold-priority:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>signaling-type:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. This value overrides
the provided one in the referenced named-path-constraint.</t>
</li></ul>

<t>path-metric-bounds:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-affinities-values:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-affinity-names:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-srlgs-lists:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-srlgs-names:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>disjointness:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>explicit-route-objects-always:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-in-segment:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-out-segment:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>computed-paths-properties:
&gt; A YANG container that holds properties for the list of computed paths.</t>

<t>computed-path-error-infos:</t>

<ul empty="true"><li>
  <t>A YANG container that holds a list of errors related to the path.</t>
</li></ul>

<t>lsp-provisioning-error-infos:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the list of LSP provisioning error information.</t>
</li></ul>

<t>lsps:</t>

<ul empty="true"><li>
  <t>A YANG container that holds a list of LSPs that have been instantiated for this specific path.</t>
</li></ul>

<t>In addition to the path common attributes, the primary path has the following
attributes that are not present in the secondary path:</t>

<t><list style="symbols">
  <t>Only the primary path contains the list of 'candidate-secondary-paths' that
can protect the primary path.</t>
  <t>Only the primary path can contain a primary-reverse-path associated with the
primary path (and its associated list of
'candidate-secondary-reverse-path').</t>
</list></t>

</section>
<section anchor="TE_LSPS"><name>TE LSPs</name>

<t>The 'lsps' container includes the set of TE LSP(s) that have been instantiated.
A TE LSP is identified by a 3-tuple ('tunnel-name', 'lsp-id', 'node').</t>

<t>When the model is used to manage a specific device, the 'lsps' list contains all TE
LSP(s) that traverse the device (including ingressing, transiting and egressing the device).</t>

<t>When the model is used to manage a TE controller, the 'lsps' list contains all
TE LSP(s) that traverse all network devices (including ingressing, transiting and
egressing the device) that the TE controller manages.</t>

</section>
</section>
<section anchor="tree-diagram"><name>Tree Diagram</name>

<t><xref target="fig-te-tree"/> shows the tree diagram of depth=4 for the generic TE YANG model defined in
modules 'ietf-te.yang'. The full tree diagram is shown in <xref target="AppendixB"/>.</t>

<figure title="Tree diagram of depth-4 of TE Tunnel YANG data model" anchor="fig-te-tree"><artwork><![CDATA[
module: ietf-te
  +--rw te
     +--rw enable?    boolean
     +--rw globals
     |  +--rw named-admin-groups
     |  |  +--rw named-admin-group* [name]
     |  |          {te-types:extended-admin-groups,
     |  |           te-types:named-extended-admin-groups}?
     |  |        ...
     |  +--rw named-srlgs
     |  |  +--rw named-srlg* [name] {te-types:named-srlg-groups}?
     |  |        ...
     |  +--rw named-path-constraints
     |     +--rw named-path-constraint* [name]
     |             {te-types:named-path-constraints}?
     |           ...
     +--rw tunnels
     |  +--rw tunnel* [name]
     |     +--rw name                            string
     |     +--rw alias?                          string
     |     +--rw identifier?                     uint32
     |     +--rw color?                          uint32
     |     +--rw description?                    string
     |     +--rw admin-state?                    identityref
     |     +--ro operational-state?              identityref
     |     +--rw encoding?                       identityref
     |     +--rw switching-type?                 identityref
     |     +--rw source?                         te-types:te-node-id
     |     +--rw destination?                    te-types:te-node-id
     |     +--rw src-tunnel-tp-id?               binary
     |     +--rw dst-tunnel-tp-id?               binary
     |     +--rw bidirectional?                  boolean
     |     +--rw controller
     |     |     ...
     |     +--rw reoptimize-timer?               uint16
     |     +--rw association-objects
     |     |     ...
     |     +--rw protection
     |     |     ...
     |     +--rw restoration
     |     |     ...
     |     +--rw te-topology-identifier
     |     |     ...
     |     +--rw te-bandwidth
     |     |     ...
     |     +--rw link-protection?                identityref
     |     +--rw setup-priority?                 uint8
     |     +--rw hold-priority?                  uint8
     |     +--rw signaling-type?                 identityref
     |     +--rw hierarchy
     |     |     ...
     |     +--rw primary-paths
     |     |     ...
     |     +--rw secondary-paths
     |     |     ...
     |     +--rw secondary-reverse-paths
     |     |     ...
     |     +---x tunnel-action
     |     |     ...
     |     +---x protection-external-commands
     |           ...
     +--ro lsps
        +--ro lsp* [tunnel-name lsp-id node]
           +--ro tunnel-name                         string
           +--ro lsp-id                              uint16
           +--ro node
           |       te-types:te-node-id
           +--ro source?
           |       te-types:te-node-id
           +--ro destination?
           |       te-types:te-node-id
           +--ro tunnel-id?                          uint16
           +--ro extended-tunnel-id?
           |       yang:dotted-quad
           +--ro operational-state?                  identityref
           +--ro signaling-type?                     identityref
           +--ro origin-type?                        enumeration
           +--ro lsp-resource-status?                enumeration
           +--ro lockout-of-normal?                  boolean
           +--ro freeze?                             boolean
           +--ro lsp-protection-role?                enumeration
           +--ro lsp-protection-state?               identityref
           +--ro protection-group-ingress-node-id?
           |       te-types:te-node-id
           +--ro protection-group-egress-node-id?
           |       te-types:te-node-id
           +--ro lsp-actual-route-information
                 ...

  rpcs:
    +---x tunnels-path-compute
    |  +---w input
    |  |  +---w path-compute-info
    |  +--ro output
    |     +--ro path-compute-result
    +---x tunnels-actions
       +---w input
       |  +---w tunnel-info
       |  |  +---w (filter-type)
       |  |        ...
       |  +---w action-info
       |     +---w action?       identityref
       |     +---w disruptive?   empty
       +--ro output
          +--ro action-result?   identityref
]]></artwork></figure>

</section>
<section anchor="yang-module"><name>YANG Module</name>

<t>The generic TE YANG module 'ietf-te' imports the following modules:</t>

<t><list style="symbols">
  <t>ietf-yang-types and ietf-inet-types defined in <xref target="RFC6991"/></t>
  <t>ietf-te-types defined in <xref target="RFC8776"/></t>
</list></t>

<t>This module references the following documents:
<xref target="RFC4206"/>, <xref target="RFC4427"/>,
<xref target="RFC4872"/>, <xref target="RFC3209"/>, <xref target="RFC6780"/>,
<xref target="RFC7471"/>, <xref target="RFC9012"/>, <xref target="RFC8570"/>,
<xref target="RFC8232"/>, <xref target="RFC7271"/>, <xref target="RFC8234"/>, and <xref target="RFC7308"/>.</t>

<figure title="TE Tunnel data model YANG module" anchor="fig-basic-te"><artwork><![CDATA[
<CODE BEGINS> file "ietf-te@2022-10-12.yang"
module ietf-te {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-te";

  /* Replace with IANA when assigned */

  prefix te;

  /* Import TE generic types */

  import ietf-te-types {
    prefix te-types;
    reference
      "RFC8776: Common YANG Data Types for Traffic Engineering.";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC6991: Common YANG Data Types.";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC6991: Common YANG Data Types.";
  }

  organization
    "IETF Traffic Engineering Architecture and Signaling (TEAS)
     Working Group.";
  contact
    "WG Web:   <https://tools.ietf.org/wg/teas/>
     WG List:  <mailto:teas@ietf.org>

     Editor:   Tarek Saad
               <mailto:tsaad.net@gmail.com>

     Editor:   Rakesh Gandhi
               <mailto:rgandhi@cisco.com>

     Editor:   Vishnu Pavan Beeram
               <mailto:vbeeram@juniper.net>

     Editor:   Himanshu Shah
               <mailto:hshah@ciena.com>

     Editor:   Xufeng Liu
               <mailto: xufeng.liu.ietf@gmail.com>

     Editor:   Igor Bryskin
               <mailto:i_bryskin@yahoo.com>";
  description
    "YANG data module for TE configuration, state, and RPCs.
     The model fully conforms to the Network Management
     Datastore Architecture (NMDA).

     Copyright (c) 2022 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";

  // RFC Ed.: replace XXXX with actual RFC number and remove this
  // note.
  // RFC Ed.: update the date below with the date of RFC publication
  // and remove this note.

  revision 2022-10-12 {
    description
      "Initial revision for the TE generic YANG module.";
    reference
      "RFCXXXX: A YANG Data Model for Traffic Engineering Tunnels
       and Interfaces.";
  }

  typedef tunnel-ref {
    type leafref {
      path "/te:te/te:tunnels/te:tunnel/te:name";
    }
    description
      "This type is used by data models that need to reference
       configured TE tunnel.";
  }

  typedef te-gen-node-id {
    type union {
      type te-types:te-node-id;
      type inet:ip-address;
    }
    description
      "Generic type that identifies a node in a TE topology.";
  }

  /**
   * TE tunnel generic groupings
   */

  grouping te-generic-node-id {
    description
      "A reusable grouping for a TE generic node identifier.";
    leaf id {
      type te-gen-node-id;
      description
        "The identifier of the node. Can be represented as IP
         address or dotted quad address.";
    }
    leaf type {
      type enumeration {
        enum ip {
          description
            "IP address representation of the node identifier.";
        }
        enum dotted-quad {
          description
            "Dotted quad address representation of the node
             identifier.";
        }
      }
      description
        "Type of node identifier representation.";
    }
  }

  grouping path-common-properties {
    description
      "Common path attributes.";
    leaf name {
      type string;
      description
        "TE path name.";
    }
    leaf path-computation-method {
      type identityref {
        base te-types:path-computation-method;
      }
      default "te-types:path-locally-computed";
      description
        "The method used for computing the path, either
         locally computed, queried from a server or not
         computed at all (explicitly configured).";
    }
    container path-computation-server {
      when "derived-from-or-self(../path-computation-method, "
         + "'te-types:path-externally-queried')" {
        description
          "The path-computation server when the path is
           externally queried.";
      }
      uses te-generic-node-id;
      description
        "Address of the external path computation
         server.";
    }
    leaf compute-only {
      type empty;
      description
        "When present, the path is computed and updated whenever
         the topology is updated. No resources are committed
         or reserved in the network.";
    }
    leaf use-path-computation {
      when "derived-from-or-self(../path-computation-method, "
         + "'te-types:path-locally-computed')";
      type boolean;
      default "true";
      description
        "When 'true' indicates the path is dynamically computed
         and/or validated against the Traffic-Engineering Database
         (TED), and when 'false' indicates no path expansion or
         validation against the TED is required.";
    }
    leaf lockdown {
      type empty;
      description
        "When present, indicates no reoptimization to be attempted
         for this path.";
    }
    leaf path-scope {
      type identityref {
        base te-types:path-scope-type;
      }
      default "te-types:path-scope-end-to-end";
      config false;
      description
        "Indicates whether the path is a segment or portion of
         of the full path., or is the an end-to-end path for
         the TE Tunnel.";
    }
  }

  /* This grouping is re-used in path-computation rpc */
  grouping path-compute-info {
    description
      "Attributes used for path computation request.";
    uses tunnel-associations-properties;
    uses te-types:generic-path-optimization;
    leaf named-path-constraint {
      if-feature "te-types:named-path-constraints";
      type leafref {
        path "/te:te/te:globals/te:named-path-constraints/"
           + "te:named-path-constraint/te:name";
      }
      description
        "Reference to a globally defined named path constraint set.";
    }
    uses path-constraints-common;
  }

  /* This grouping is re-used in path-computation rpc */
  grouping path-forward-properties {
    description
      "The path preference.";
    leaf preference {
      type uint8 {
        range "1..255";
      }
      default "1";
      description
        "Specifies a preference for this path. The lower the number
         higher the preference.";
    }
    leaf co-routed {
      when "/te:te/te:tunnels/te:tunnel/te:bidirectional = 'true'" {
        description
          "Applicable to bidirectional tunnels only.";
      }
      type empty;
      description
        "Indicates whether the reverse path must to be co-routed
         with the primary.";
    }
  }

  /* This grouping is re-used in path-computation rpc */
  grouping k-requested-paths {
    description
      "The k-shortest paths requests.";
    leaf k-requested-paths {
      type uint8;
      default "1";
      description
        "The number of k-shortest-paths requested from the path
         computation server and returned sorted by its optimization
         objective.";
    }
  }

  grouping path-state {
    description
      "TE per path state parameters.";
    uses path-computation-response;
    container lsp-provisioning-error-infos {
      config false;
      description
        "LSP provisioning error information.";
      list lsp-provisioning-error-info {
        description
          "List of LSP provisioning error info entries.";
        leaf error-reason {
          type identityref {
            base te-types:lsp-provisioning-error-reason;
          }
          description
            "LSP provision error type.";
        }
        leaf error-description {
          type string;
          description
            "The textual representation of the error occurred during
             path computation.";
        }
        leaf error-timestamp {
          type yang:date-and-time;
          description
            "Timestamp of when the reported error occurred.";
        }
        leaf error-node-id {
          type te-types:te-node-id;
          description
            "Node identifier of node where error occurred.";
        }
        leaf error-link-id {
          type te-types:te-tp-id;
          description
            "Link ID where the error occurred.";
        }
        leaf lsp-id {
          type uint16;
          description
            "The LSP-ID for which path computation was performed.";
        }
      }
    }
    container lsps {
      config false;
      description
        "The TE LSPs container.";
      list lsp {
        key "node lsp-id";
        description
          "List of LSPs associated with the tunnel.";
        leaf tunnel-name {
          type leafref {
            path "/te:te/te:lsps/te:lsp/te:tunnel-name";
          }
          description "TE tunnel name.";
        }
        leaf node {
          type leafref {
            path "/te:te/te:lsps/te:lsp[tunnel-name="
               + "current()/../te:tunnel-name][lsp-id="
               + "current()/../te:lsp-id]/te:node";
          }
          description "The node where the LSP state resides on.";
        }
        leaf lsp-id {
          type leafref {
            path "/te:te/te:lsps/te:lsp[tunnel-name="
                           + "current()/../tunnel-name]/te:lsp-id";
          }
          description "The TE LSP identifier.";
        }
      }
    }
  }

  /* This grouping is re-used in path-computation rpc */
  grouping path-computation-response {
    description
      "Attributes reported by path computation response.";
    container computed-paths-properties {
      config false;
      description
        "Computed path properties container.";
      list computed-path-properties {
        key "k-index";
        description
          "List of computed paths.";
        leaf k-index {
          type uint8;
          description
            "The k-th path returned from the computation server.
             A lower k value path is more optimal than higher k
             value path(s)";
        }
        uses te-types:generic-path-properties {
          augment "path-properties" {
            description
              "additional path properties returned by path
               computation.";
            uses te-types:te-bandwidth;
            leaf disjointness-type {
              type te-types:te-path-disjointness;
              config false;
              description
                "The type of resource disjointness.
                 When reported for a primary path, it represents the
                 minimum level of disjointness of all the secondary
                 paths. When reported for a secondary path, it
                 represents the disjointness of the secondary path.";
            }
          }
        }
      }
    }
    container computed-path-error-infos {
      config false;
      description
        "Path computation information container.";
      list computed-path-error-info {
        description
          "List of path computation info entries.";
        leaf error-description {
          type string;
          description
            "Textual representation of the error occurred during
             path computation.";
        }
        leaf error-timestamp {
          type yang:date-and-time;
          description
            "Timestamp of last path computation attempt.";
        }
        leaf error-reason {
          type identityref {
            base te-types:path-computation-error-reason;
          }
          description
            "Reason for the path computation error.";
        }
      }
    }
  }

  grouping protection-restoration-properties {
    description
      "Protection and restoration parameters.";
    container protection {
      description
        "Protection parameters.";
      leaf enable {
        type boolean;
        description
          "A flag to specify if LSP protection is enabled.";
        reference
          "RFC4427";
      }
      leaf protection-type {
        type identityref {
          base te-types:lsp-protection-type;
        }
        default "te-types:lsp-protection-unprotected";
        description
          "LSP protection type.";
      }
      leaf protection-reversion-disable {
        type boolean;
        default "false";
        description
          "Disable protection reversion to working path.";
      }
      leaf hold-off-time {
        type uint32;
        units "milli-seconds";
        description
          "The time between the declaration of an SF or SD condition
           and the initialization of the protection switching
           algorithm.";
        reference
          "RFC4427";
      }
      leaf wait-to-revert {
        type uint16;
        units "seconds";
        description
          "Time to wait before attempting LSP reversion.";
        reference
          "RFC4427";
      }
      leaf aps-signal-id {
        type uint8 {
          range "1..255";
        }
        default "1";
        description
          "The APS signal number used to reference the traffic of
           this tunnel. The default value for normal traffic is 1.
           The default value for extra-traffic is 255. If not
           specified, non-default values can be assigned by the
           server, if and only if, the server controls both
            endpoints.";
        reference
          "RFC4427";
      }
    }
    container restoration {
      description
        "Restoration parameters.";
      leaf restoration-type {
        type identityref {
          base te-types:lsp-restoration-type;
        }
        default "te-types:lsp-restoration-restore-any";
        description
          "LSP restoration type.";
      }
      leaf restoration-scheme {
        type identityref {
          base te-types:restoration-scheme-type;
        }
        default "te-types:restoration-scheme-preconfigured";
        description
          "LSP restoration scheme.";
      }
      leaf restoration-reversion-disable {
        type boolean;
        default "false";
        description
          "Disable restoration reversion to working path.";
      }
      leaf hold-off-time {
        type uint32;
        units "milli-seconds";
        description
          "The time between the declaration of an SF or SD condition
           and the initialization of the protection switching
           algorithm.";
        reference
          "RFC4427";
      }
      leaf wait-to-restore {
        type uint16;
        units "seconds";
        description
          "Time to wait before attempting LSP restoration.";
        reference
          "RFC4427";
      }
      leaf wait-to-revert {
        type uint16;
        units "seconds";
        description
          "Time to wait before attempting LSP reversion.";
        reference
          "RFC4427";
      }
    }
  }

  grouping tunnel-associations-properties {
    description
      "TE tunnel association grouping.";
    container association-objects {
      description
        "TE tunnel associations.";
      list association-object {
        key "association-key";
        unique "type id source/id source/type";
        description
          "List of association base objects.";
        reference
          "RFC4872";
        leaf association-key {
          type string;
          description
            "Association key used to identify a specific
             association in the list";
        }
        leaf type {
          type identityref {
            base te-types:association-type;
          }
          description
            "Association type.";
          reference
            "RFC4872";
        }
        leaf id {
          type uint16;
          description
            "Association identifier.";
          reference
            "RFC4872";
        }
        container source {
          uses te-generic-node-id;
          description
            "Association source.";
          reference
            "RFC4872";
        }
      }
      list association-object-extended {
        key "association-key";
        unique
          "type id source/id source/type global-source extended-id";
        description
          "List of extended association objects.";
        reference
          "RFC6780";
        leaf association-key {
          type string;
          description
            "Association key used to identify a specific
             association in the list";
        }
        leaf type {
          type identityref {
            base te-types:association-type;
          }
          description
            "Association type.";
          reference
            "RFC4872, RFC6780";
        }
        leaf id {
          type uint16;
          description
            "Association identifier.";
          reference
            "RFC4872, RFC6780";
        }
        container source {
          uses te-generic-node-id;
          description
            "Association source.";
          reference
            "RFC4872, RFC6780";
        }
        leaf global-source {
          type uint32;
          description
            "Association global source.";
          reference
            "RFC6780";
        }
        leaf extended-id {
          type yang:hex-string;
          description
            "Association extended identifier.";
          reference
            "RFC6780";
        }
      }
    }
  }

  /* This grouping is re-used in path-computation rpc */
  grouping tunnel-common-attributes {
    description
      "Common grouping to define the TE tunnel parameters";
    leaf source {
      type te-types:te-node-id;
      description
        "TE tunnel source node ID.";
    }
    leaf destination {
      type te-types:te-node-id;
      description
        "TE tunnel destination node identifier.";
    }
    leaf src-tunnel-tp-id {
      type binary;
      description
        "TE tunnel source termination point identifier.";
    }
    leaf dst-tunnel-tp-id {
      type binary;
      description
        "TE tunnel destination termination point identifier.";
    }
    leaf bidirectional {
      type boolean;
      default "false";
      description
        "Indicates a bidirectional co-routed LSP.";
    }
  }

  /* This grouping is re-used in path-computation rpc */
  grouping tunnel-hierarchy-properties {
    description
      "A grouping for TE tunnel hierarchy information.";
    container hierarchy {
      description
        "Container for TE hierarchy related information.";
      container dependency-tunnels {
        description
          "List of tunnels that this tunnel can be potentially
           dependent on.";
        list dependency-tunnel {
          key "name";
          description
            "A tunnel entry that this tunnel can potentially depend
             on.";
          leaf name {
            type leafref {
              path "/te:te/te:tunnels/te:tunnel/te:name";
              require-instance false;
            }
            description
              "Dependency tunnel name. The tunnel may not have been
               instantiated yet.";
          }
          uses te-types:encoding-and-switching-type;
        }
      }
      container hierarchical-link {
        description
          "Identifies a hierarchical link (in client layer)
           that this tunnel is associated with. By default, the
           topology of the hierarchical link is the same topology of
           the tunnel;";
        reference
          "RFC4206";
        leaf enable {
          type boolean;
          default "false";
          description
            "Enables the hierarchical link properties supported by
             this tunnel";
        }
        leaf local-te-node-id {
          type te-types:te-node-id;
          description
            "The local TE node identifier.";
        }
        leaf local-te-link-tp-id {
          type te-types:te-tp-id;
          description
            "The local TE link termination point identifier.";
        }
        leaf remote-te-node-id {
          type te-types:te-node-id;
          description
            "Remote TE node identifier.";
        }
        uses te-types:te-topology-identifier {
          description
            "The topology identifier where the hierarchical link
             supported by this TE tunnel is instantiated.";
        }
      }
    }
  }

  grouping path-constraints-common {
    description
      "Global named path constraints configuration
       grouping.";
    uses te-types:common-path-constraints-attributes {
      description
        "The constraints applicable to the path. This includes:
         - The path bandwidth constraint
         - The path link protection type constraint
         - The path setup/hold priority constraint
         - path signaling type constraint
         - path metric bounds constraint. The unit of path metric
           bound is interpreted in the context of the metric-type.
           For example for metric-type 'path-metric-loss', the bound
           is multiples of the basic unit 0.000003% as described
           in RFC7471 for OSPF, and RFC8570 for ISIS.
         - path affinity constraints
         - path SRLG constraints";

    }
    uses te-types:generic-path-disjointness;
    uses te-types:path-constraints-route-objects;
    container path-in-segment {
      presence "The end-to-end tunnel starts in a previous domain;
                this tunnel is a segment in the current domain.";
      description
        "If an end-to-end tunnel crosses multiple domains using
         the same technology, some additional constraints have to be
         taken in consideration in each domain.
         This TE tunnel segment is stitched to the upstream TE tunnel
         segment.";
      uses te-types:label-set-info;
    }
    container path-out-segment {
      presence
        "The end-to-end tunnel is not terminated in this domain;
         this tunnel is a segment in the current domain.";
      description
        "If an end-to-end tunnel crosses multiple domains using
         the same technology, some additional constraints have to be
         taken in consideration in each domain.
         This TE tunnel segment is stitched to the downstream TE
         tunnel segment.";
      uses te-types:label-set-info;
    }
  }

  /**
   * TE container
   */

  container te {
    description
      "TE global container.";
    leaf enable {
      type boolean;
      default "false";
      description
        "Enables the TE component features.";
    }

    /* TE Global Data */
    container globals {
      description
        "Globals TE system-wide configuration data container.";
      container named-admin-groups {
        description
          "TE named admin groups container.";
        list named-admin-group {
          if-feature "te-types:extended-admin-groups";
          if-feature "te-types:named-extended-admin-groups";
          key "name";
          description
            "List of named TE admin-groups.";
          leaf name {
            type string;
            description
              "A string name that uniquely identifies a TE
               interface named admin-group.";
          }
          leaf bit-position {
            type uint32;
            description
              "Bit position representing the administrative group.";
            reference
              "RFC3209 and RFC7308";
          }


        }
      }
      container named-srlgs {
        description
          "TE named SRLGs container.";
        list named-srlg {
          if-feature "te-types:named-srlg-groups";
          key "name";
          description
            "A list of named SRLG groups.";
          leaf name {
            type string;
            description
              "A string name that uniquely identifies a TE
               interface named SRLG.";
          }
          leaf value {
            type te-types:srlg;
            description
              "An SRLG value.";
          }
          leaf cost {
            type uint32;
            description
              "SRLG associated cost. Used during path to append
               the path cost when traversing a link with this SRLG.";
          }
        }
      }
      container named-path-constraints {
        description
          "TE named path constraints container.";
        list named-path-constraint {
          if-feature "te-types:named-path-constraints";
          key "name";
          leaf name {
            type string;
            description
              "A string name that uniquely identifies a
               path constraint set.";
          }
          uses path-constraints-common;
          description
            "A list of named path constraints.";
        }
      }
    }

    /* TE Tunnel Data */
    container tunnels {
      description
        "Tunnels TE configuration data container.";
      list tunnel {
        key "name";
        description
          "The list of TE tunnels.";
        leaf name {
          type string;
          description
            "TE tunnel name.";
        }
        leaf alias {
          type string;
          description
            "An alternate name of the TE tunnel that can be modified
             anytime during its lifetime.";
        }
        leaf identifier {
          type uint32;
          description
            "TE tunnel Identifier.";
          reference
            "RFC3209";
        }
        leaf color {
          type uint32;
          description "The color associated with the TE tunnel.";
          reference "RFC9012";
        }
        leaf description {
          type string;
          default "None";
          description
            "Textual description for this TE tunnel.";
        }
        leaf admin-state {
          type identityref {
            base te-types:tunnel-admin-state-type;
          }
          default "te-types:tunnel-admin-state-up";
          description
            "TE tunnel administrative state.";
        }
        leaf operational-state {
          type identityref {
            base te-types:tunnel-state-type;
          }
          config false;
          description
            "TE tunnel operational state.";
        }
        uses te-types:encoding-and-switching-type;
        uses tunnel-common-attributes;
        container controller {
          description
            "Contains tunnel data relevant to external controller(s).
             This target node may be augmented by external module(s),
             for example, to add data for PCEP initiated and/or
             delegated tunnels.";
          leaf protocol-origin {
            type identityref {
              base te-types:protocol-origin-type;
            }
            description
              "The protocol origin for instantiating the tunnel."; 
          }
          leaf controller-entity-id {
            type string;
            description
              "An identifier unique within the scope of visibility
               that associated with the entity that controls the
               tunnel.";
            reference "RFC8232";
          }
        }
        leaf reoptimize-timer {
          type uint16;
          units "seconds";
          description
            "Frequency of reoptimization of a traffic engineered
             LSP.";
        }
        uses tunnel-associations-properties;
        uses protection-restoration-properties;
        uses te-types:tunnel-constraints;
        uses tunnel-hierarchy-properties;
        container primary-paths {
          description
            "The set of primary paths.";
          reference "RFC4872";
          list primary-path {
            key "name";
            description
              "List of primary paths for this tunnel.";
            uses path-common-properties;
            uses path-forward-properties;
            uses k-requested-paths;
            uses path-compute-info;
            uses path-state;
            container primary-reverse-path {
              when "../../../te:bidirectional = 'false'";
              description
                "The reverse primary path properties.";
              uses path-common-properties;
              uses path-compute-info;
              uses path-state;
              container candidate-secondary-reverse-paths {
                when "../../../../te:bidirectional = 'false'";
                description
                  "The set of referenced candidate reverse secondary
                   paths from the full set of secondary reverse paths
                   which may be used for this primary path.";
                list candidate-secondary-reverse-path {
                  key "secondary-path";
                  ordered-by user;
                  description
                    "List of candidate secondary reverse path(s)";
                  leaf secondary-path {
                    type leafref {
                      path "../../../../../../"
                         + "te:secondary-reverse-paths/"
                         + "te:secondary-reverse-path/te:name";
                    }
                    description
                      "A reference to the secondary reverse path that
                       should be utilised when the containing primary
                       reverse path option is in use.";
                  }
                }
              }
            }
            container candidate-secondary-paths {
              description
                "The set of candidate secondary paths which may be
                 used for this primary path. When secondary paths are
                 specified in the list the path of the secondary LSP
                 in use must be restricted to those path options
                 referenced.
                 The priority of the secondary paths is specified
                 within the list. Higher priority values are less
                 preferred - that is to say that a path with priority
                 0 is the most preferred path. In the case that the
                 list is empty, any secondary path option may be
                 utilised when the current primary path is in use.";
              list candidate-secondary-path {
                key "secondary-path";
                ordered-by user;
                description
                  "List of candidate secondary paths for this
                   tunnel.";
                leaf secondary-path {
                  type leafref {
                    path "../../../../../te:secondary-paths/"
                       + "te:secondary-path/te:name";
                  }
                  description
                    "A reference to the secondary path that should be
                     utilised when the containing primary path option
                     is
                     in use.";
                }
                leaf active {
                  type boolean;
                  config false;
                  description
                    "Indicates the current active path option that
                     has been selected of the candidate secondary
                     paths.";
                }
              }
            }
          }
        }
        container secondary-paths {
          description
            "The set of secondary paths.";
          reference "RFC4872";
          list secondary-path {
            key "name";
            description
              "List of secondary paths for this tunnel.";
            uses path-common-properties;
            uses path-forward-properties;
            uses path-compute-info;
            uses protection-restoration-properties;
            uses path-state;
          }
        }
        container secondary-reverse-paths {
          description
            "The set of secondary reverse paths.";
          list secondary-reverse-path {
            key "name";
            description
              "List of secondary paths for this tunnel.";
            uses path-common-properties;
            uses path-compute-info;
            uses protection-restoration-properties;
            uses path-state;
          }
        }
        action tunnel-action {
          description
            "Tunnel action.";
          input {
            leaf action-type {
              type identityref {
                base te-types:tunnel-actions-type;
              }
              description
                "Tunnel action type.";
            }
          }
          output {
            leaf action-result {
              type identityref {
                base te-types:te-action-result;
              }
              description
                "The result of the tunnel action operation.";
            }
          }
        }
        action protection-external-commands {
          input {
            leaf protection-external-command {
              type identityref {
                base te-types:protection-external-commands;
              }
              description
                "Protection external command.";
            }
            leaf protection-group-ingress-node {
              type boolean;
              default "true";
              description
                "When 'true', indicates that the action is
                 applied on ingress node.
                 By default, the action applies to the ingress node
                 only.";
            }
            leaf protection-group-egress-node {
              type boolean;
              default "false";
              description
                "When set to 'true', indicates that the action is
                 applied on egress node.
                 By default, the action applies to the ingress node
                 only.";
            }
            leaf path-name {
              type string;
              description
                "The name of the path that the external command
                applies to.";
            }
            leaf traffic-type {
              type enumeration {
                enum normal-traffic {
                  description
                    "The manual-switch or forced-switch command
                     applies to the normal traffic (this Tunnel).";
                }
                enum null-traffic {
                  description
                    "The manual-switch or forced-switch command
                     applies to the null traffic.";
                }
                enum extra-traffic {
                  description
                    "The manual-switch or forced-switch command
                     applies to the extra traffic (the extra-traffic
                     Tunnel sharing protection bandwidth with this
                     Tunnel).";
                }
              }
              description
                "Indicates whether the manual-switch or forced-switch
                 commands applies to the normal traffic, the null
                 traffic or the extra-traffic.";
              reference
                "RFC4427";
            }
            leaf extra-traffic-tunnel-ref {
              type tunnel-ref;
              description
                "In case there are multiple extra-traffic tunnels
                 sharing protection bandwidth with this Tunnel
                 (m:n protection), represents which extra-traffic
                 Tunnel the manual-switch or forced-switch to
                 extra-traffic command applies to.";
            }
          }
        }
      }
    }

    /* TE LSPs Data */
    container lsps {
      config false;
      description
        "TE LSPs state container.";
      list lsp {
        key "tunnel-name lsp-id node";
        unique "source destination tunnel-id lsp-id "
          + "extended-tunnel-id";
        description
          "List of LSPs associated with the tunnel.";
        leaf tunnel-name {
          type string;
          description "The TE tunnel name.";
        }
        leaf lsp-id {
          type uint16;
          description
            "Identifier used in the SENDER_TEMPLATE and the
             FILTER_SPEC that can be changed to allow a sender to
             share resources with itself.";
          reference
            "RFC3209";
        }
        leaf node {
          type te-types:te-node-id;
          description
            "The node where the TE LSP state resides on.";
        }
        leaf source {
          type te-types:te-node-id;
          description
            "Tunnel sender address extracted from
             SENDER_TEMPLATE  object.";
          reference
            "RFC3209";
        }
        leaf destination {
          type te-types:te-node-id;
          description
            "The tunnel endpoint address.";
          reference
            "RFC3209";
        }
        leaf tunnel-id {
          type uint16;
          description
            "The tunnel identifier that remains
             constant over the life of the tunnel.";
          reference
            "RFC3209";
        }
        leaf extended-tunnel-id {
          type yang:dotted-quad;
          description
            "The LSP Extended Tunnel ID.";
          reference
            "RFC3209";
        }
        leaf operational-state {
          type identityref {
            base te-types:lsp-state-type;
          }
          description
            "The LSP operational state.";
        }
        leaf signaling-type {
          type identityref {
            base te-types:path-signaling-type;
          }
          description
            "The signaling protocol used to set up this LSP.";
        }
        leaf origin-type {
          type enumeration {
            enum ingress {
              description
                "Origin ingress.";
            }
            enum egress {
              description
                "Origin egress.";
            }
            enum transit {
              description
                "Origin transit.";
            }
          }
          description
            "The origin of the LSP relative to the location of the
             local switch in the path.";
        }
        leaf lsp-resource-status {
          type enumeration {
            enum primary {
              description
                "A primary LSP is a fully established LSP for which
                 the resource allocation has been committed at the
                 data plane.";
            }
            enum secondary {
              description
                "A secondary LSP is an LSP that has been provisioned
                 in the control plane only; e.g. resource allocation
                 has not been committed at the data plane.";
            }
          }
          description
            "LSP resource allocation state.";
          reference
            "RFC4872, section 4.2.1";
        }
        leaf lockout-of-normal {
          type boolean;
          description
            "When set to 'true', it represents a lockout of normal
             traffic external command. When set to 'false', it
             represents a clear lockout of normal traffic external
             command. The lockout of normal traffic command applies
             to this Tunnel.";
          reference
            "RFC4427";
        }
        leaf freeze {
          type boolean;
          description
            "When set to 'true', it represents a freeze external
             command.  When set to 'false', it represents a clear
             freeze external command. The freeze command applies to
             all the Tunnels which are sharing the protection
             resources with this Tunnel.";
          reference
            "RFC4427";
        }
        leaf lsp-protection-role {
          type enumeration {
            enum working {
              description
                "A working LSP must be a primary LSP whilst a
                 protecting LSP can be either a primary or a
                 secondary LSP. Also, known as protected LSPs when
                 working LSPs are associated with protecting LSPs.";
            }
            enum protecting {
              description
                "A secondary LSP is an LSP that has been provisioned
                 in the control plane only; e.g. resource allocation
                 has not been committed at the data plane.";
            }
          }
          description
            "LSP role type.";
          reference
            "RFC4872, section 4.2.1";
        }
        leaf lsp-protection-state {
          type identityref {
            base te-types:lsp-protection-state;
          }
          description
            "The APS state machine controlling which
             tunnels are using the resources of the protecting LSP.";
          reference
            "RFC7271 and RFC8234";
        }
        leaf protection-group-ingress-node-id {
          type te-types:te-node-id;
          description
            "Indicates the te-node-id of the protection group
             ingress node when the APS state represents an external
             command (LoP, SF, MS) applied to it or a WTR timer
             running on it. If the external command is not applied to
             the ingress node or the WTR timer is not running on it,
             this attribute is not specified. A value 0.0.0.0 is used
             when the te-node-id of the protection group ingress node
             is unknown (e.g., because the ingress node is outside
             the scope of control of the server)";
        }
        leaf protection-group-egress-node-id {
          type te-types:te-node-id;
          description
            "Indicates the te-node-id of the protection group egress
             node when the APS state represents an external command
             (LoP, SF, MS) applied to it or a WTR timer running on
             it. If the external command is not applied to the
             ingress node or the WTR timer is not running on it, this
             attribute is not specified. A value 0.0.0.0 is used when
             the te-node-id of the protection group ingress node is
             unknown (e.g., because the ingress node is outside the
             scope of control of the server)";
        }
        container lsp-actual-route-information {
          description
            "RSVP recorded route object information.";
          list lsp-actual-route-information {
            when "../../origin-type = 'ingress'" {
              description
                "Applicable on ingress LSPs only.";
            }
            key "index";
            description
              "Record route list entry.";
            uses te-types:record-route-state;
          }
        }
      }
    }
  }

  /* TE Tunnel RPCs/execution Data */

  rpc tunnels-path-compute {
    description
      "TE tunnels RPC nodes.";
    input {
      container path-compute-info {
        /* 
         * An external path compute module may augment this
         * target.
         */
        description
          "RPC input information.";
      }
    }
    output {
      container path-compute-result {
        /* 
         * An external path compute module may augment this
         * target.
         */
        description
          "RPC output information.";
      }
    }
  }

  rpc tunnels-actions {
    description
      "TE tunnels actions RPC";
    input {
      container tunnel-info {
        description
          "TE tunnel information.";
        choice filter-type {
          mandatory true;
          description
            "Filter choice.";
          case all-tunnels {
            leaf all {
              type empty;
              mandatory true;
              description
                "When present, applies the action on all TE
                 tunnels.";
            }
          }
          case one-tunnel {
            leaf tunnel {
              type tunnel-ref;
              description
                "Apply action on the specific TE tunnel.";
            }
          }
        }
      }
      container action-info {
        description
          "TE tunnel action information.";
        leaf action {
          type identityref {
            base te-types:tunnel-actions-type;
          }
          description
            "The action type.";
        }
        leaf disruptive {
          when "derived-from-or-self(../action, "
             + "'te:tunnel-action-reoptimize')";
          type empty;
          description
            "When present, specifies whether or not the
             reoptimization
             action is allowed to be disruptive.";
        }
      }
    }
    output {
      leaf action-result {
        type identityref {
          base te-types:te-action-result;
        }
        description
          "The result of the tunnel action operation.";
      }
    }
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="te-device-yang-model"><name>TE Device YANG Model</name>

<t>The device TE YANG module ('ietf-te-device') models data that is specific to
managing a TE device.  This module augments the generic TE YANG module.</t>

<section anchor="module-structure-1"><name>Module Structure</name>

<section anchor="te-interfaces"><name>TE Interfaces</name>

<t>This branch of the model manages TE interfaces that are present on a device. 
Examples of TE interface properties are:</t>

<t><list style="symbols">
  <t>Maximum reservable bandwidth, bandwidth constraints (BC)</t>
  <t>Flooding parameters
  <list style="symbols">
      <t>Flooding intervals and threshold values</t>
    </list></t>
  <t>Interface attributes
  <list style="symbols">
      <t>(Extended) administrative groups</t>
      <t>SRLG values</t>
      <t>TE metric value</t>
    </list></t>
  <t>Fast reroute backup tunnel properties (such as static, auto-tunnel)</t>
</list></t>

<t>The derived state associated with interfaces is grouped under the interface
"state" sub-container as shown in <xref target="fig-if-te-state"/>.  This covers state data
such as:</t>

<t><list style="symbols">
  <t>Bandwidth information: maximum bandwidth, available bandwidth at different
priorities and for each class-type (CT)</t>
  <t>List of admitted LSPs
  <list style="symbols">
      <t>Name, bandwidth value and pool, time, priority</t>
    </list></t>
  <t>Statistics: state counters, flooding counters, admission counters
(accepted/rejected), preemption counters</t>
  <t>Adjacency information
  <list style="symbols">
      <t>Neighbor address</t>
      <t>Metric value</t>
    </list></t>
</list></t>

<figure title="TE interface state YANG subtree" anchor="fig-if-te-state"><artwork><![CDATA[
module: ietf-te-device
  augment /te:te:
      +--rw interfaces
         .
         +-- rw te-dev:te-attributes
                <<intended configuration>>
             .
             +-- ro state
                <<derived state associated with the TE interface>>
]]></artwork></figure>

</section>
</section>
<section anchor="tree-diagram-1"><name>Tree Diagram</name>

<t><xref target="fig-te-dev-tree"/> shows the tree diagram of the device TE YANG model defined in
modules 'ietf-te-device.yang'.</t>

<figure title="TE Tunnel device model YANG tree diagram" anchor="fig-te-dev-tree"><artwork><![CDATA[
module: ietf-te-device
  augment /te:te:
    +--rw interfaces
    |  +--rw threshold-type?            enumeration
    |  +--rw delta-percentage?          rt-types:percentage
    |  +--rw threshold-specification?   enumeration
    |  +--rw up-thresholds*             rt-types:percentage
    |  +--rw down-thresholds*           rt-types:percentage
    |  +--rw up-down-thresholds*        rt-types:percentage
    |  +--rw interface* [interface]
    |     +--rw interface                           if:interface-ref
    |     +--rw te-metric?
    |     |       te-types:te-metric
    |     +--rw (admin-group-type)?
    |     |  +--:(value-admin-groups)
    |     |  |  +--rw (value-admin-group-type)?
    |     |  |     +--:(admin-groups)
    |     |  |     |  +--rw admin-group?
    |     |  |     |          te-types:admin-group
    |     |  |     +--:(extended-admin-groups)
    |     |  |              {te-types:extended-admin-groups}?
    |     |  |        +--rw extended-admin-group?
    |     |  |                te-types:extended-admin-group
    |     |  +--:(named-admin-groups)
    |     |     +--rw named-admin-groups* [named-admin-group]
    |     |           {te-types:extended-admin-groups,
    |     |            te-types:named- extended-admin-groups}?
    |     |        +--rw named-admin-group    leafref
    |     +--rw (srlg-type)?
    |     |  +--:(value-srlgs)
    |     |  |  +--rw values* [value]
    |     |  |     +--rw value    uint32
    |     |  +--:(named-srlgs)
    |     |     +--rw named-srlgs* [named-srlg]
    |     |             {te-types:named-srlg-groups}?
    |     |        +--rw named-srlg    leafref
    |     +--rw threshold-type?                     enumeration
    |     +--rw delta-percentage?
    |     |       rt-types:percentage
    |     +--rw threshold-specification?            enumeration
    |     +--rw up-thresholds*
    |     |       rt-types:percentage
    |     +--rw down-thresholds*
    |     |       rt-types:percentage
    |     +--rw up-down-thresholds*
    |     |       rt-types:percentage
    |     +--rw switching-capabilities* [switching-capability]
    |     |  +--rw switching-capability    identityref
    |     |  +--rw encoding?               identityref
    |     +--ro state
    |        +--ro te-advertisements-state
    |           +--ro flood-interval?           uint32
    |           +--ro last-flooded-time?        uint32
    |           +--ro next-flooded-time?        uint32
    |           +--ro last-flooded-trigger?     enumeration
    |           +--ro advertised-level-areas* [level-area]
    |              +--ro level-area    uint32
    +--rw performance-thresholds
  augment /te:te/te:globals:
    +--rw lsp-install-interval?        uint32
    +--rw lsp-cleanup-interval?        uint32
    +--rw lsp-invalidation-interval?   uint32
  augment /te:te/te:tunnels/te:tunnel:
    +--rw path-invalidation-action?    identityref
    +--rw lsp-install-interval?        uint32
    +--rw lsp-cleanup-interval?        uint32
    +--rw lsp-invalidation-interval?   uint32
  augment /te:te/te:lsps/te:lsp:
    +--ro lsp-timers
    |  +--ro life-time?         uint32
    |  +--ro time-to-install?   uint32
    |  +--ro time-to-destroy?   uint32
    +--ro downstream-info
    |  +--ro nhop?                 te-types:te-tp-id
    |  +--ro outgoing-interface?   if:interface-ref
    |  +--ro neighbor
    |  |  +--ro id?     te-gen-node-id
    |  |  +--ro type?   enumeration
    |  +--ro label?                rt-types:generalized-label
    +--ro upstream-info
       +--ro phop?       te-types:te-tp-id
       +--ro neighbor
       |  +--ro id?     te-gen-node-id
       |  +--ro type?   enumeration
       +--ro label?      rt-types:generalized-label

  rpcs:
    +---x link-state-update
       +---w input
          +---w (filter-type)
             +--:(match-all)
             |  +---w all          empty
             +--:(match-one-interface)
                +---w interface?   if:interface-ref
]]></artwork></figure>

</section>
<section anchor="yang-module-1"><name>YANG Module</name>

<t>The device TE YANG module 'ietf-te-device' imports the following module(s):</t>

<t><list style="symbols">
  <t>ietf-interfaces defined in <xref target="RFC8343"/></t>
  <t>ietf-routing-types defined in <xref target="RFC8294"/></t>
  <t>ietf-te-types defined in <xref target="RFC8776"/></t>
  <t>ietf-te defined in this document</t>
</list></t>

<figure title="TE device data model YANG module" anchor="fig-te-device-types"><artwork><![CDATA[
<CODE BEGINS> file "ietf-te-device@2022-10-12.yang"
module ietf-te-device {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-te-device";

  /* Replace with IANA when assigned */

  prefix te-dev;

  /* Import TE module */

  import ietf-te {
    prefix te;
    reference
      "RFCXXXX: A YANG Data Model for Traffic Engineering
       Tunnels and Interfaces";
  }

  /* Import TE types */

  import ietf-te-types {
    prefix te-types;
    reference
      "RFC8776: Common YANG Data Types for Traffic Engineering.";
  }
  import ietf-interfaces {
    prefix if;
    reference
      "RFC8343: A YANG Data Model for Interface Management";
  }
  import ietf-routing-types {
    prefix rt-types;
    reference
      "RFC8294: Common YANG Data Types for the Routing Area";
  }

  organization
    "IETF Traffic Engineering Architecture and Signaling (TEAS)
     Working Group";
  contact
    "WG Web:   <https://tools.ietf.org/wg/teas/>
     WG List:  <mailto:teas@ietf.org>

     Editor:   Tarek Saad
               <mailto:tsaad.net@gmail.com>

     Editor:   Rakesh Gandhi
               <mailto:rgandhi@cisco.com>

     Editor:   Vishnu Pavan Beeram
               <mailto:vbeeram@juniper.net>

     Editor:   Himanshu Shah
               <mailto:hshah@ciena.com>

     Editor:   Xufeng Liu
               <mailto: xufeng.liu.ietf@gmail.com>

     Editor:   Igor Bryskin
               <mailto:i_bryskin@yahoo.com>";
  description
    "This module defines a data model for TE device configurations,
     state, and RPCs. The model fully conforms to the
     Network Management Datastore Architecture (NMDA).

     Copyright (c) 2022 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";

  // RFC Ed.: replace XXXX with actual RFC number and remove this
  // note.
  // RFC Ed.: update the date below with the date of RFC publication
  // and remove this note.

  revision 2022-10-12 {
    description
      "Initial revision for the TE device YANG module.";
    reference
      "RFCXXXX: A YANG Data Model for Traffic Engineering Tunnels
       and Interfaces";
  }

  grouping lsp-device-timers {
    description
      "Device TE LSP timers configs.";
    leaf lsp-install-interval {
      type uint32;
      units "seconds";
      description
        "TE LSP installation delay time.";
    }
    leaf lsp-cleanup-interval {
      type uint32;
      units "seconds";
      description
        "TE LSP cleanup delay time.";
    }
    leaf lsp-invalidation-interval {
      type uint32;
      units "seconds";
      description
        "TE LSP path invalidation before taking action delay time.";
    }
  }

  grouping te-igp-flooding-bandwidth-config {
    description
      "Configurable items for igp flooding bandwidth
       threshold configuration.";
    leaf threshold-type {
      type enumeration {
        enum delta {
          description
            "'delta' indicates that the local
             system should flood IGP updates when a
             change in reserved bandwidth >= the specified
             delta occurs on the interface.";
        }
        enum threshold-crossed {
          description
            "THRESHOLD-CROSSED indicates that
             the local system should trigger an update (and
             hence flood) the reserved bandwidth when the
             reserved bandwidth changes such that it crosses,
             or becomes equal to one of the threshold values.";
        }
      }
      description
        "The type of threshold that should be used to specify the
         values at which bandwidth is flooded. 'delta' indicates that
         the local system should flood IGP updates when a change in
         reserved bandwidth >= the specified delta occurs on the
         interface. Where 'threshold-crossed' is specified, the local
         system should trigger an update (and hence flood) the
         reserved bandwidth when the reserved bandwidth changes such
         that it crosses, or becomes equal to one of the threshold
         values.";
    }
    leaf delta-percentage {
      when "../threshold-type = 'delta'" {
        description
          "The percentage delta can only be specified when the
           threshold type is specified to be a percentage delta of
           the reserved bandwidth.";
      }
      type rt-types:percentage;
      description
        "The percentage of the maximum-reservable-bandwidth
         considered as the delta that results in an IGP update
         being flooded.";
    }
    leaf threshold-specification {
      when "../threshold-type = 'threshold-crossed'" {
        description
          "The selection of whether mirrored or separate threshold
           values are to be used requires user specified thresholds
           to be set.";
      }
      type enumeration {
        enum mirrored-up-down {
          description
            "mirrored-up-down indicates that a single set of
             threshold values should be used for both increasing
             and decreasing bandwidth when determining whether
             to trigger updated bandwidth values to be flooded
             in the IGP TE extensions.";
        }
        enum separate-up-down {
          description
            "separate-up-down indicates that a separate
             threshold values should be used for the increasing
             and decreasing bandwidth when determining whether
             to trigger updated bandwidth values to be flooded
             in the IGP TE extensions.";
        }
      }
      description
        "This value specifies whether a single set of threshold
         values should be used for both increasing and decreasing
         bandwidth when determining whether to trigger updated
         bandwidth values to be flooded in the IGP TE extensions.
         'mirrored-up-down' indicates that a single value (or set of
         values) should be used for both increasing and decreasing
         values, where 'separate-up-down' specifies that the
         increasing and decreasing values will be separately
         specified.";
    }
    leaf-list up-thresholds {
      when "../threshold-type = 'threshold-crossed'"
         + "and ../threshold-specification = 'separate-up-down'" {
        description
          "A list of up-thresholds can only be specified when the
           bandwidth update is triggered based on crossing a
           threshold and separate up and down thresholds are
           required.";
      }
      type rt-types:percentage;
      description
        "The thresholds (expressed as a percentage of the maximum
         reservable bandwidth) at which bandwidth updates are to be
         triggered when the bandwidth is increasing.";
    }
    leaf-list down-thresholds {
      when "../threshold-type = 'threshold-crossed'"
         + "and ../threshold-specification = 'separate-up-down'" {
        description
          "A list of down-thresholds can only be specified when the
           bandwidth update is triggered based on crossing a
           threshold and separate up and down thresholds are
           required.";
      }
      type rt-types:percentage;
      description
        "The thresholds (expressed as a percentage of the maximum
         reservable bandwidth) at which bandwidth updates are to be
         triggered when the bandwidth is decreasing.";
    }
    leaf-list up-down-thresholds {
      when "../threshold-type = 'threshold-crossed'"
         + "and ../threshold-specification = 'mirrored-up-down'" {
        description
          "A list of thresholds corresponding to both increasing
           and decreasing bandwidths can be specified only when an
           update is triggered based on crossing a threshold, and
           the same up and down thresholds are required.";
      }
      type rt-types:percentage;
      description
        "The thresholds (expressed as a percentage of the maximum
         reservable bandwidth of the interface) at which bandwidth
         updates are flooded - used both when the bandwidth is
         increasing and decreasing.";
    }
  }

  /**
   * TE device augmentations
   */
  augment "/te:te" {
    description
      "TE global container.";
    /* TE Interface Configuration Data */
    container interfaces {
      description
        "Configuration data model for TE interfaces.";
      uses te-igp-flooding-bandwidth-config;
      list interface {
        key "interface";
        description
          "TE interfaces.";
        leaf interface {
          type if:interface-ref;
          description
            "TE interface name.";
        }
        /* TE interface parameters */
        leaf te-metric {
          type te-types:te-metric;
          description
            "TE interface metric.";
        }
        choice admin-group-type {
          description
            "TE interface administrative groups
             representation type.";
          case value-admin-groups {
            choice value-admin-group-type {
              description
                "choice of admin-groups.";
              case admin-groups {
                description
                  "Administrative group/Resource
                   class/Color.";
                leaf admin-group {
                  type te-types:admin-group;
                  description
                    "TE interface administrative group.";
                }
              }
              case extended-admin-groups {
                if-feature "te-types:extended-admin-groups";
                description
                  "Extended administrative group/Resource
                   class/Color.";
                leaf extended-admin-group {
                  type te-types:extended-admin-group;
                  description
                    "TE interface extended administrative group.";
                }
              }
            }
          }
          case named-admin-groups {
            list named-admin-groups {
              if-feature "te-types:extended-admin-groups";
              if-feature "te-types:named-extended-admin-groups";
              key "named-admin-group";
              description
                "A list of named admin-group entries.";
              leaf named-admin-group {
                type leafref {
                  path "../../../../te:globals/"
                     + "te:named-admin-groups/te:named-admin-group/"
                     + "te:name";
                }
                description
                  "A named admin-group entry.";
              }
            }
          }
        }
        choice srlg-type {
          description
            "Choice of SRLG configuration.";
          case value-srlgs {
            list values {
              key "value";
              description
                "List of SRLG values that
                 this link is part of.";
              leaf value {
                type uint32 {
                  range "0..4294967295";
                }
                description
                  "Value of the SRLG";
              }
            }
          }
          case named-srlgs {
            list named-srlgs {
              if-feature "te-types:named-srlg-groups";
              key "named-srlg";
              description
                "A list of named SRLG entries.";
              leaf named-srlg {
                type leafref {
                  path "../../../../te:globals/"
                     + "te:named-srlgs/te:named-srlg/te:name";
                }
                description
                  "A named SRLG entry.";
              }
            }
          }
        }
        uses te-igp-flooding-bandwidth-config;
        list switching-capabilities {
          key "switching-capability";
          description
            "List of interface capabilities for this interface.";
          leaf switching-capability {
            type identityref {
              base te-types:switching-capabilities;
            }
            description
              "Switching Capability for this interface.";
          }
          leaf encoding {
            type identityref {
              base te-types:lsp-encoding-types;
            }
            description
              "Encoding supported by this interface.";
          }
        }
        container state {
          config false;
          description
            "State parameters for interface TE metric.";
          container te-advertisements-state {
            description
              "TE interface advertisements state container.";
            leaf flood-interval {
              type uint32;
              description
                "The periodic flooding interval.";
            }
            leaf last-flooded-time {
              type uint32;
              units "seconds";
              description
                "Time elapsed since last flooding in seconds.";
            }
            leaf next-flooded-time {
              type uint32;
              units "seconds";
              description
                "Time remained for next flooding in seconds.";
            }
            leaf last-flooded-trigger {
              type enumeration {
                enum link-up {
                  description
                    "Link-up flooding trigger.";
                }
                enum link-down {
                  description
                    "Link-down flooding trigger.";
                }
                enum threshold-up {
                  description
                    "Bandwidth reservation up threshold.";
                }
                enum threshold-down {
                  description
                    "Bandwidth reservation down threshold.";
                }
                enum bandwidth-change {
                  description
                    "Bandwidth capacity change.";
                }
                enum user-initiated {
                  description
                    "Initiated by user.";
                }
                enum srlg-change {
                  description
                    "SRLG property change.";
                }
                enum periodic-timer {
                  description
                    "Periodic timer expired.";
                }
              }
              default "periodic-timer";
              description
                "Trigger for the last flood.";
            }
            list advertised-level-areas {
              key "level-area";
              description
                "List of level-areas that the TE interface is
                 advertised in.";
              leaf level-area {
                type uint32;
                description
                  "The IGP area or level where the TE interface link
                   state is advertised in.";
              }
            }
          }
        }
      }
    }
  }

  /* TE globals device augmentation */

  augment "/te:te/te:globals" {
    description
      "Global TE device specific configuration parameters.";
    uses lsp-device-timers;
  }

  /* TE tunnels device configuration augmentation */

  augment "/te:te/te:tunnels/te:tunnel" {
    description
      "Tunnel device dependent augmentation.";
    leaf path-invalidation-action {
      type identityref {
        base te-types:path-invalidation-action-type;
      }
      description
        "Tunnel path invalidation action.";
    }
    uses lsp-device-timers;
  }

  /* TE LSPs device state augmentation */

  augment "/te:te/te:lsps/te:lsp" {
    description
      "TE LSP device dependent augmentation.";
    container lsp-timers {
      when "../te:origin-type = 'ingress'" {
        description
          "Applicable to ingress LSPs only.";
      }
      description
        "Ingress LSP timers.";
      leaf uptime {
        type uint32;
        units "seconds";
        description
          "The LSP uptime.";
      }
      leaf time-to-install {
        type uint32;
        units "seconds";
        description
          "The time remaining for a new LSP to be instantiated
           in forwarding to carry traffic.";
      }
      leaf time-to-destroy {
        type uint32;
        units "seconds";
        description
          "The time remaining for a existing LSP to be deleted
           from forwarding.";
      }
    }
    container downstream-info {
      when "../te:origin-type != 'egress'" {
        description
          "Downstream information of the LSP.";
      }
      description
        "downstream information.";
      leaf nhop {
        type te-types:te-tp-id;
        description
          "downstream next-hop address.";
      }
      leaf outgoing-interface {
        type if:interface-ref;
        description
          "downstream interface.";
      }
      container neighbor {
        uses te:te-generic-node-id;
        description
          "downstream neighbor address.";
      }
      leaf label {
        type rt-types:generalized-label;
        description
          "downstream label.";
      }
    }
    container upstream-info {
      when "../te:origin-type != 'ingress'" {
        description
          "Upstream information of the LSP.";
      }
      description
        "upstream information.";
      leaf phop {
        type te-types:te-tp-id;
        description
          "upstream next-hop or previous-hop address.";
      }
      container neighbor {
        uses te:te-generic-node-id;
        description
          "upstream neighbor address.";
      }
      leaf label {
        type rt-types:generalized-label;
        description
          "upstream label.";
      }
    }
  }

  /* TE interfaces RPCs/execution Data */

  rpc link-state-update {
    description
      "Triggers a link state update for the specific interface.";
    input {
      choice filter-type {
        mandatory true;
        description
          "Filter choice.";
        case match-all {
          leaf all {
            type empty;
            mandatory true;
            description
              "Match all TE interfaces.";
          }
        }
        case match-one-interface {
          leaf interface {
            type if:interface-ref;
            description
              "Match a specific TE interface.";
          }
        }
      }
    }
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="notifications"><name>Notifications</name>

<t>Notifications are a key component of any topology data model.</t>

<t><xref target="RFC8639"/> and <xref target="RFC8641"/> define a subscription mechanism and a push
mechanism for YANG datastores.  These mechanisms currently allow the
user to:</t>

<t><list style="symbols">
  <t>Subscribe to notifications on a per-client basis.</t>
  <t>Specify subtree filters or XML Path Language (XPath) filters so
that only contents of interest will be sent.</t>
  <t>Specify either periodic or on-demand notifications.</t>
</list></t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document registers the following URIs in the IETF XML registry
<xref target="RFC3688"/>.
Following the format in <xref target="RFC3688"/>, the following registrations are
requested to be made.</t>

<figure><artwork><![CDATA[
   URI: urn:ietf:params:xml:ns:yang:ietf-te
   Registrant Contact:  The IESG.
   XML: N/A, the requested URI is an XML namespace.

   URI: urn:ietf:params:xml:ns:yang:ietf-te-device
   Registrant Contact:  The IESG.
   XML: N/A, the requested URI is an XML namespace.
]]></artwork></figure>

<t>This document registers two YANG modules in the YANG Module Names
registry <xref target="RFC6020"/>.</t>

<figure><artwork><![CDATA[
   Name:       ietf-te
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-te
   Prefix:     te
   Reference:  RFCXXXX

   Name:       ietf-te-device
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-te-device
   Prefix:     te-device
   Reference:  RFCXXXX
]]></artwork></figure>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The YANG module specified in this document defines a schema for data that is
designed to be accessed via network management protocols such as NETCONF
<xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. The lowest NETCONF layer is the secure
transport layer, and the mandatory-to-implement secure transport is Secure
Shell (SSH) <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the
mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t>

<t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the
means to restrict access for particular NETCONF or RESTCONF users to a
preconfigured subset of all available NETCONF or RESTCONF protocol operations
and content.</t>

<t>There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., config true, which is the default). These
data nodes may be considered sensitive or vulnerable in some network
environments. Write operations (e.g., edit-config) to these data nodes without
proper protection can have a negative effect on network operations. These are
the subtrees and data nodes and their sensitivity/vulnerability:</t>

<t>"/te/globals":  This module specifies the global TE configurations on a device.
Unauthorized access to this container could cause the device to ignore packets
it should receive and process.</t>

<t>"/te/tunnels":  This list specifies the configuration and state of TE Tunnels
present on the device or controller.  Unauthorized access to this list could
cause the device to ignore packets it should receive and process. An attacker
may also use state to derive information about the network topology,
and subsequently orchestrate further attacks.</t>

<t>"/te/interfaces":  This list specifies the configuration and state TE interfaces
on a device. Unauthorized access to this list could cause the device to ignore packets it
should receive and process.</t>

<t>Some of the readable data nodes in this YANG module may be considered sensitive
or vulnerable in some network environments. It is thus important to control
read access (e.g., via get, get-config, or notification) to these data nodes.
These are the subtrees and data nodes and their sensitivity/vulnerability:</t>

<t>"/te/lsps": this list contains information state about established LSPs in the network.
An attacker can use this information to derive information about the network topology,
and subsequently orchestrate further attacks.</t>

<t>Some of the RPC operations in this YANG module may be considered sensitive or
vulnerable in some network environments. It is thus important to control access
to these operations. These are the operations and their
sensitivity/vulnerability:</t>

<t>"/te/tunnels-actions": using this RPC, an attacker can modify existing paths that
may be carrying live traffic, and hence result to interruption to services
carried over the network.</t>

<t>"/te/tunnels-path-compute": using this RPC, an attacker can retrieve secured
information about the network provider which can be used to orchestrate further
attacks.</t>

<t>The security considerations spelled out in the YANG 1.1 specification
<xref target="RFC7950"/> apply for this document as well.</t>

</section>
<section anchor="acknowledgement"><name>Acknowledgement</name>

<t>The authors would like to thank the  members of the multi-vendor YANG design
team who are involved in the definition of this model.</t>

<t>The authors would like to thank Tom Petch and Adrian Farrel for reviewing and
providing useful feedback about the document. The authors would also like to
thank Loa Andersson, Lou Berger, Sergio Belotti, Italo Busi, Carlo Perocchio,
Francesco Lazzeri, Aihua Guo, Dhruv Dhody, and Raqib Jones for providing
feedback on this document.</t>

</section>
<section anchor="contributors"><name>Contributors</name>

<figure><artwork><![CDATA[
   Himanshu Shah
   Ciena

   Email: hshah@ciena.com


   Xia Chen
   Huawei Technologies

   Email: jescia.chenxia@huawei.com


   Bin Wen
   Comcast

   Email: Bin_Wen@cable.comcast.com

]]></artwork></figure>

</section>
<section anchor="AppendixA"><name>Appendix A: Data Tree Examples</name>

<t>This section contains examples of use of the model with RESTCONF <xref target="RFC8040"/> and JSON encoding.</t>

<t>For the example we will use a 4 node MPLS network were RSVP-TE MPLS Tunnels can be setup. The
loopbacks of each router are shown. The network in <xref target="AppFig-Topo"/> will be used in the examples
described in the following sections.</t>

<figure title="TE network used in data tree examples" anchor="AppFig-Topo"><artwork><![CDATA[
 192.0.2.1        192.0.2.2      192.0.2.4
 +-------+        +-------+      +-------+
 |       |        |       |      |       |
 |   A   +--------+   B   +------+   D   |
 +---+---+        +-------+      +---+---+
     |                               |
     |            +-------+          |
     |            |       |          |
     +------------+   C   +----------+
                  |       |
                  +-------+
                  192.0.2.3
]]></artwork></figure>

<section anchor="TeTunnel"><name>Basic Tunnel Setup</name>

<t>This example uses the TE Tunnel YANG data model defined in this document to create an
RSVP-TE signaled Tunnel of packet LSP encoding type. First, the TE Tunnel is created with no specific restrictions or constraints (e.g., protection or restoration).
The TE Tunnel ingresses on router A and egresses on router D.</t>

<t>In this case, the TE Tunnel is created without specifying additional information about the primary paths.</t>

<figure><artwork><![CDATA[
POST /restconf/data/ietf-te:te/tunnels HTTP/1.1
    Host: example.com
    Accept: application/yang-data+json
    Content-Type: application/yang-data+json

{
  "ietf-te:tunnel": [
    {
      "name": "Example_LSP_Tunnel_A_2",
      "encoding": "te-types:lsp-encoding-packet",
      "admin-state": "te-types:tunnel-state-up",
      "source": "192.0.2.1",
      "destination": "192.0.2.4",
      "bidirectional": "false",
      "signaling-type": "te-types:path-setup-rsvp"
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="global-named-path-constraints"><name>Global Named Path Constraints</name>

<t>This example uses the YANG data model to create a 'named path constraint' that can be reference by TE Tunnels.
The path constraint, in this case, limits the TE Tunnel hops for the computed path.</t>

<figure><artwork><![CDATA[
POST /restconf/data/ietf-te:te/globals/named-path-constraints
     HTTP/1.1
    Host: example.com
    Accept: application/yang-data+json
    Content-Type: application/yang-data+json


  "ietf-te:named-path-constraint": {
          "name": "max-hop-3",
          "path-metric-bounds": {
            "path-metric-bound": {
              "metric-type": "te-types:path-metric-hop",
              "upper-bound": "3"
    }
   }
  }
}
]]></artwork></figure>

</section>
<section anchor="tunnel-with-global-path-constraint"><name>Tunnel with Global Path Constraint</name>

<t>In this example, the previously created 'named path constraint' is applied to the TE Tunnel created in <xref target="TeTunnel"/>.</t>

<figure><artwork><![CDATA[
POST /restconf/data/ietf-te:te/tunnels HTTP/1.1
    Host: example.com
    Accept: application/yang-data+json
    Content-Type: application/yang-data+json

{
  "ietf-te:ietf-tunnel": [
    {
      "name": "Example_LSP_Tunnel_A_4_1",
      "encoding": "te-types:lsp-encoding-packet",
      "description": "Simple_LSP_with_named_path",
      "admin-state": "te-types:tunnel-state-up",
      "source": "192.0.2.1",
      "destination": "192.0.2.4",
      "signaling-type": "path-setup-rsvp",
      "primary-paths": [
        {
          "primary-path": {
            "name": "Simple_LSP_1",
            "use-path-computation": "true",
            "named-path-constraint": "max-hop-3"
          }
        }
      ]
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="tunnel-with-per-tunnel-path-constraint"><name>Tunnel with Per-tunnel Path Constraint</name>

<t>In this example, the a per tunnel path constraint is explicitly indicated under the TE Tunnel created in <xref target="TeTunnel"/> to constrain the computed path for the tunnel.</t>

<figure><artwork><![CDATA[
POST /restconf/data/ietf-te:te/tunnels HTTP/1.1
    Host: example.com
    Accept: application/yang-data+json
    Content-Type: application/yang-data+json

{
  "ietf-te:tunnel": [
    {
      "name": "Example_LSP_Tunnel_A_4_2",
      "encoding": "te-types:lsp-encoding-packet",
      "admin-state": "te-types:tunnel-state-up",
      "source": "192.0.2.1",
      "destination": "192.0.2.4",
      "signaling-type": "te-types:path-setup-rsvp",
      "primary-paths": {
        "primary-path": [
          {
            "name": "path1",
            "path-metric-bounds": {
              "path-metric-bound": [ 
                {
                  "metric-type": "te-types:path-metric-hop",
                  "upper-bound": "3"
                }
              ]
            }
          }
        ]
      }
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="tunnel-state"><name>Tunnel State</name>

<t>In this example, the 'GET' query is sent to return the state stored about the tunnel.</t>

<figure><artwork><![CDATA[
GET  /restconf/data/ietf-te:te/tunnels +
     /tunnel="Example_LSP_Tunnel_A_4_1"
     /p2p-primary-paths/ HTTP/1.1
    Host: example.com
    Accept: application/yang-data+json
]]></artwork></figure>

<t>The request, with status code 200 would include, for example, the following json:</t>

<figure><artwork><![CDATA[
{
  "ietf-te:primary-paths": {
    "primary-path": [
      {
        "name": "path1",
        "path-computation-method": "te-types:path-locally-computed",
        "computed-paths-properties": {
          "computed-path-properties": [
            {
              "k-index": "1",
              "path-properties": {
                "path-route-objects": {
                  "path-route-object": [
                    {
                      "index": "1",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2"
                      }
                    },
                    {
                      "index": "2",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.4"
                      }
                    }
                  ]
                }
              }
            }
          ]
        },
        "lsps": {
          "lsp": [
            {
              "tunnel-name": "Example_LSP_Tunnel_A_4_1",
              "node": "192.0.2.1 ",
              "lsp-id": "25356"
            }
          ]
        }
      }
    ]
  }
}
]]></artwork></figure>

</section>
<section anchor="example-te-tunnel-with-primary-and-secondary-paths"><name>Example TE Tunnel with Primary and Secondary Paths</name>

<figure title="TE network used in data tree examples" anchor="AppFig-Topo2"><artwork><![CDATA[
                       ┌──────────┐          ┌──────────┐
                     ┌─┤192.0.2.9 ├───┐      │192.0.2.10│
                     │ └──────────┘   │      └───┬───┬──┘
                     │                │          │   │
┌──────────┐    ┌────┴─────┐     ┌────┴─────┐    │   │
│192.0.2.8 ├────┤192.0.2.3 ├─────┤192.0.2.4 ├────┘   │
└─┬────────┘    └────┬─────┘     └────┬─────┘        │
  │                  │                │              │
┌─┴────────┐         │                │              │
│192.0.2.1 ├─────────┘                │           ┌──┴───────┐
└─────┬──┬─┘                          └───────────┤192.0.2.5 │
      │  │                                        └──────┬─┬─┘
      │  │              ┌──────────┐                     │ │
      │  └──────────────┤192.0.2.2 ├─────────────────────┘ │
      │                 └─────┬─┬──┘                       │
      │                       │ │                          │
  ┌───┴──────┐                │ │                   ┌──────┴───┐
  │192.0.2.6 ├────────────────┘ └───────────────────┤192.0.2.7 │
  └──────────┘                                      └──────────┘

]]></artwork></figure>

<t>Below is the state retrieved for a TE tunnel from source 192.0.2.1 to 192.0.2.5
with primary, secondary, reverse, and secondary reverse paths as shown in <xref target="AppFig-Topo2"/>.</t>

<figure><artwork><![CDATA[
{
  "ietf-te:te": {
    "tunnels": {
      "tunnel": [
        {
          "name": "example-1",
          "description": "Example in slide 1",
          "source": "192.0.2.1",
          "destination": "192.0.2.5",
          "bidirectional": false,
          "primary-paths": {
            "primary-path": [
              {
                "name": "primary-1 (fwd)",
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                },
                "primary-reverse-path": {
                  "name": "primary-2 (rev)",
                  "explicit-route-objects-always": {
                    "route-object-include-exclude": [
                      {
                        "index": 1,
                        "numbered-node-hop": {
                          "node-id": "192.0.2.3",
                          "hop-type": "loose"
                        }
                      }
                    ]
                  },
                  "candidate-secondary-reverse-paths": {
                    "candidate-secondary-reverse-path": [
                      "secondary-3 (rev)",
                      "secondary-4 (rev)",
                      "secondary-5 (rev)"
                    ]
                  }
                },
                "candidate-secondary-paths": {
                  "candidate-secondary-path": [
                    "secondary-1 (fwd)",
                    "secondary-2 (fwd)"
                  ]
                }
              }
            ]
          },
          "secondary-paths": {
            "secondary-path": [
              {
                "name": "secondary-1 (fwd)",
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.1"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              },
              {
                "name": "secondary-2 (fwd)",
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.5",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              }
            ]
          },
          "secondary-reverse-paths": {
            "secondary-reverse-path": [
              {
                "name": "secondary-3 (rev)",
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.5"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.4",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              },
              {
                "name": "secondary-4 (rev)",
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.4"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.3",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              },
              {
                "name": "secondary-5 (rev)",
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.3"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.1",
                        "hop-type":"loose"
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "name": "example-3",
          "description": "Example in slide 3",
          "source": "192.0.2.1",
          "destination": "192.0.2.5",
          "bidirectional": true,
          "primary-paths": {
            "primary-path": [
              {
                "name": "primary-1 (bidir)",
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                },
                "candidate-secondary-paths": {
                  "candidate-secondary-path": [
                    "secondary-1 (bidir)",
                    "secondary-2 (bidir)"
                  ]
                }
              }
            ]
          },
          "secondary-paths": {
            "secondary-path": [
              {
                "name": "secondary-1 (bidir)",
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.1"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              },
              {
                "name": "secondary-2 (bidir)",
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.5",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "name": "example-4",
          "description": "Example in slide 4",
          "source": "192.0.2.1",
          "destination": "192.0.2.5",
          "bidirectional": false,
          "primary-paths": {
            "primary-path": [
              {
                "name": "primary-1 (fwd)",
                "co-routed": [null],
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                },
                "primary-reverse-path": {
                  "name": "primary-2 (rev)",
                  "candidate-secondary-reverse-paths": {
                    "candidate-secondary-reverse-path": [
                      "secondary-3 (rev)",
                      "secondary-4 (rev)"
                    ]
                  }
                },
                "candidate-secondary-paths": {
                  "candidate-secondary-path": [
                    "secondary-1 (fwd)",
                    "secondary-2 (fwd)"
                  ]
                }
              }
            ]
          },
          "secondary-paths": {
            "secondary-path": [
              {
                "name": "secondary-1 (fwd)",
                "co-routed": [null],
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.1"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              },
              {
                "name": "secondary-2 (fwd)",
                "co-routed": [null],
                "explicit-route-objects-always": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.5",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              }
            ]
          },
          "secondary-reverse-paths": {
            "secondary-reverse-path": [
              {
                "name": "secondary-3 (rev)"
              },
              {
                "name": "secondary-4 (rev)"
              }
            ]
          }
        }
      ]
    }
  }
}
]]></artwork></figure>

</section>
</section>
<section anchor="AppendixB"><name>Appendix B: Full Model Tree Diagram</name>

<t><xref target="fig-te-tree-full"/> shows the full tree diagram of the TE YANG model defined in
module 'ietf-te.yang'.</t>

<figure title="Full tree diagram of TE Tunnel YANG data model" anchor="fig-te-tree-full"><artwork><![CDATA[
module: ietf-te
  +--rw te
     +--rw enable?    boolean
     +--rw globals
     |  +--rw named-admin-groups
     |  |  +--rw named-admin-group* [name]
     |  |          {te-types:extended-admin-groups,
     |  |           te-types:named-extended-admin-groups}?
     |  |     +--rw name            string
     |  |     +--rw bit-position?   uint32
     |  +--rw named-srlgs
     |  |  +--rw named-srlg* [name] {te-types:named-srlg-groups}?
     |  |     +--rw name     string
     |  |     +--rw value?   te-types:srlg
     |  |     +--rw cost?    uint32
     |  +--rw named-path-constraints
     |     +--rw named-path-constraint* [name]
     |             {te-types:named-path-constraints}?
     |        +--rw name                       string
     |        +---u path-constraints-common
     +--rw tunnels
     |  +--rw tunnel* [name]
     |     +--rw name                                    string
     |     +--rw alias?                                  string
     |     +--rw identifier?                             uint32
     |     +--rw color?                                  uint32
     |     +--rw description?                            string
     |     +--rw admin-state?                            identityref
     |     +--ro operational-state?                      identityref
     |     +---u te-types:encoding-and-switching-type
     |     +---u tunnel-common-attributes
     |     +--rw controller
     |     |  +--rw protocol-origin?        identityref
     |     |  +--rw controller-entity-id?   string
     |     +--rw reoptimize-timer?                       uint16
     |     +---u tunnel-associations-properties
     |     +---u protection-restoration-properties
     |     +---u te-types:tunnel-constraints
     |     +---u tunnel-hierarchy-properties
     |     +--rw primary-paths
     |     |  +--rw primary-path* [name]
     |     |     +---u path-common-properties
     |     |     +---u path-forward-properties
     |     |     +---u k-requested-paths
     |     |     +---u path-compute-info
     |     |     +---u path-state
     |     |     +--rw primary-reverse-path
     |     |     |  +---u path-common-properties
     |     |     |  +---u path-compute-info
     |     |     |  +---u path-state
     |     |     |  +--rw candidate-secondary-reverse-paths
     |     |     |     +--rw candidate-secondary-reverse-path*
     |     |     |             [secondary-path]
     |     |     |        +--rw secondary-path    leafref
     |     |     +--rw candidate-secondary-paths
     |     |        +--rw candidate-secondary-path* [secondary-path]
     |     |           +--rw secondary-path    leafref
     |     |           +--ro active?           boolean
     |     +--rw secondary-paths
     |     |  +--rw secondary-path* [name]
     |     |     +---u path-common-properties
     |     |     +---u path-forward-properties
     |     |     +---u path-compute-info
     |     |     +---u protection-restoration-properties
     |     |     +---u path-state
     |     +--rw secondary-reverse-paths
     |     |  +--rw secondary-reverse-path* [name]
     |     |     +---u path-common-properties
     |     |     +---u path-compute-info
     |     |     +---u protection-restoration-properties
     |     |     +---u path-state
     |     +---x tunnel-action
     |     |  +---w input
     |     |  |  +---w action-type?   identityref
     |     |  +--ro output
     |     |     +--ro action-result?   identityref
     |     +---x protection-external-commands
     |        +---w input
     |           +---w protection-external-command?     identityref
     |           +---w protection-group-ingress-node?   boolean
     |           +---w protection-group-egress-node?    boolean
     |           +---w path-name?                       string
     |           +---w traffic-type?                    enumeration
     |           +---w extra-traffic-tunnel-ref?        tunnel-ref
     +--ro lsps
        +--ro lsp* [tunnel-name lsp-id node]
           +--ro tunnel-name                         string
           +--ro lsp-id                              uint16
           +--ro node
           |       te-types:te-node-id
           +--ro source?
           |       te-types:te-node-id
           +--ro destination?
           |       te-types:te-node-id
           +--ro tunnel-id?                          uint16
           +--ro extended-tunnel-id?                 yang:dotted-quad
           +--ro operational-state?                  identityref
           +--ro signaling-type?                     identityref
           +--ro origin-type?                        enumeration
           +--ro lsp-resource-status?                enumeration
           +--ro lockout-of-normal?                  boolean
           +--ro freeze?                             boolean
           +--ro lsp-protection-role?                enumeration
           +--ro lsp-protection-state?               identityref
           +--ro protection-group-ingress-node-id?
           |       te-types:te-node-id
           +--ro protection-group-egress-node-id?
           |       te-types:te-node-id
           +--ro lsp-actual-route-information
              +--ro lsp-actual-route-information* [index]
                 +---u te-types:record-route-state

  rpcs:
    +---x tunnels-path-compute
    |  +---w input
    |  |  +---w path-compute-info
    |  +--ro output
    |     +--ro path-compute-result
    +---x tunnels-actions
       +---w input
       |  +---w tunnel-info
       |  |  +---w (filter-type)
       |  |     +--:(all-tunnels)
       |  |     |  +---w all       empty
       |  |     +--:(one-tunnel)
       |  |        +---w tunnel?   tunnel-ref
       |  +---w action-info
       |     +---w action?       identityref
       |     +---w disruptive?   empty
       +--ro output
          +--ro action-result?   identityref

  grouping te-generic-node-id:
    +-- id?     te-gen-node-id
    +-- type?   enumeration
  grouping path-common-properties:
    +-- name?                      string
    +-- path-computation-method?   identityref
    +-- path-computation-server
    |  +---u te-generic-node-id
    +-- compute-only?              empty
    +-- use-path-computation?      boolean
    +-- lockdown?                  empty
    +--ro path-scope?                identityref
  grouping path-compute-info:
    +---u tunnel-associations-properties
    +---u te-types:generic-path-optimization
    +-- named-path-constraint?                leafref
    |       {te-types:named-path-constraints}?
    +---u path-constraints-common
  grouping path-forward-properties:
    +-- preference?   uint8
    +-- co-routed?    empty
  grouping k-requested-paths:
    +-- k-requested-paths?   uint8
  grouping path-state:
    +---u path-computation-response
    +--ro lsp-provisioning-error-infos
    |  +--ro lsp-provisioning-error-info* []
    |     +--ro error-reason?        identityref
    |     +--ro error-description?   string
    |     +--ro error-timestamp?     yang:date-and-time
    |     +--ro error-node-id?       te-types:te-node-id
    |     +--ro error-link-id?       te-types:te-tp-id
    |     +--ro lsp-id?              uint16
    +--ro lsps
       +--ro lsp* [node lsp-id]
          +--ro tunnel-name?   -> /te/lsps/lsp/tunnel-name
          +--ro node?          leafref
          +--ro lsp-id?        leafref
  grouping path-computation-response:
    +--ro computed-paths-properties
    |  +--ro computed-path-properties* [k-index]
    |     +--ro k-index?                            uint8
    |     +---u te-types:generic-path-properties
    +--ro computed-path-error-infos
       +--ro computed-path-error-info* []
          +--ro error-description?   string
          +--ro error-timestamp?     yang:date-and-time
          +--ro error-reason?        identityref
  grouping protection-restoration-properties:
    +-- protection
    |  +-- enable?                         boolean
    |  +-- protection-type?                identityref
    |  +-- protection-reversion-disable?   boolean
    |  +-- hold-off-time?                  uint32
    |  +-- wait-to-revert?                 uint16
    |  +-- aps-signal-id?                  uint8
    +-- restoration
       +-- restoration-type?                identityref
       +-- restoration-scheme?              identityref
       +-- restoration-reversion-disable?   boolean
       +-- hold-off-time?                   uint32
       +-- wait-to-restore?                 uint16
       +-- wait-to-revert?                  uint16
  grouping tunnel-associations-properties:
    +-- association-objects
       +-- association-object* [association-key]
       |  +-- association-key?   string
       |  +-- type?              identityref
       |  +-- id?                uint16
       |  +-- source
       |     +---u te-generic-node-id
       +-- association-object-extended* [association-key]
          +-- association-key?   string
          +-- type?              identityref
          +-- id?                uint16
          +-- source
          |  +---u te-generic-node-id
          +-- global-source?     uint32
          +-- extended-id?       yang:hex-string
  grouping tunnel-common-attributes:
    +-- source?             te-types:te-node-id
    +-- destination?        te-types:te-node-id
    +-- src-tunnel-tp-id?   binary
    +-- dst-tunnel-tp-id?   binary
    +-- bidirectional?      boolean
  grouping tunnel-hierarchy-properties:
    +-- hierarchy
       +-- dependency-tunnels
       |  +-- dependency-tunnel* [name]
       |     +-- name?
       |     |       -> /te/tunnels/tunnel/name
       |     +---u te-types:encoding-and-switching-type
       +-- hierarchical-link
          +-- enable?                            boolean
          +-- local-te-node-id?                  te-types:te-node-id
          +-- local-te-link-tp-id?               te-types:te-tp-id
          +-- remote-te-node-id?                 te-types:te-node-id
          +---u te-types:te-topology-identifier
  grouping path-constraints-common:
    +---u te-types:common-path-constraints-attributes
    +---u te-types:generic-path-disjointness
    +---u te-types:path-constraints-route-objects
    +-- path-in-segment!
    |  +---u te-types:label-set-info
    +-- path-out-segment!
       +---u te-types:label-set-info
]]></artwork></figure>

</section>


  </middle>

  <back>


    <references title='Normative References'>





<reference anchor='RFC3209' target='https://www.rfc-editor.org/info/rfc3209'>
<front>
<title>RSVP-TE: Extensions to RSVP for LSP Tunnels</title>
<author fullname='D. Awduche' initials='D.' surname='Awduche'><organization/></author>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<author fullname='D. Gan' initials='D.' surname='Gan'><organization/></author>
<author fullname='T. Li' initials='T.' surname='Li'><organization/></author>
<author fullname='V. Srinivasan' initials='V.' surname='Srinivasan'><organization/></author>
<author fullname='G. Swallow' initials='G.' surname='Swallow'><organization/></author>
<date month='December' year='2001'/>
<abstract><t>This document describes the use of RSVP (Resource Reservation Protocol), including all the necessary extensions, to establish label-switched paths (LSPs) in MPLS (Multi-Protocol Label Switching).  Since the flow along an LSP is completely identified by the label applied at the ingress node of the path, these paths may be treated as tunnels.  A key application of LSP tunnels is traffic engineering with MPLS as specified in RFC 2702.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3209'/>
<seriesInfo name='DOI' value='10.17487/RFC3209'/>
</reference>



<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<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='RFC6020' target='https://www.rfc-editor.org/info/rfc6020'>
<front>
<title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
<author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'><organization/></author>
<date month='October' year='2010'/>
<abstract><t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6020'/>
<seriesInfo name='DOI' value='10.17487/RFC6020'/>
</reference>



<reference anchor='RFC6241' target='https://www.rfc-editor.org/info/rfc6241'>
<front>
<title>Network Configuration Protocol (NETCONF)</title>
<author fullname='R. Enns' initials='R.' role='editor' surname='Enns'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'><organization/></author>
<author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'><organization/></author>
<author fullname='A. Bierman' initials='A.' role='editor' surname='Bierman'><organization/></author>
<date month='June' year='2011'/>
<abstract><t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices.  It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages.  The NETCONF protocol operations are realized as remote procedure calls (RPCs).  This document obsoletes RFC 4741.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6241'/>
<seriesInfo name='DOI' value='10.17487/RFC6241'/>
</reference>



<reference anchor='RFC6991' target='https://www.rfc-editor.org/info/rfc6991'>
<front>
<title>Common YANG Data Types</title>
<author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'><organization/></author>
<date month='July' year='2013'/>
<abstract><t>This document introduces a collection of common data types to be used with the YANG data modeling language.  This document obsoletes RFC 6021.</t></abstract>
</front>
<seriesInfo name='RFC' value='6991'/>
<seriesInfo name='DOI' value='10.17487/RFC6991'/>
</reference>



<reference anchor='RFC6107' target='https://www.rfc-editor.org/info/rfc6107'>
<front>
<title>Procedures for Dynamically Signaled Hierarchical Label Switched Paths</title>
<author fullname='K. Shiomoto' initials='K.' role='editor' surname='Shiomoto'><organization/></author>
<author fullname='A. Farrel' initials='A.' role='editor' surname='Farrel'><organization/></author>
<date month='February' year='2011'/>
<abstract><t>Label Switched Paths (LSPs) set up in Multiprotocol Label Switching (MPLS) or Generalized MPLS (GMPLS) networks can be used to form links to carry traffic in those networks or in other (client) networks.</t><t>Protocol mechanisms already exist to facilitate the establishment of such LSPs and to bundle traffic engineering (TE) links to reduce the load on routing protocols.  This document defines extensions to those mechanisms to support identifying the use to which such LSPs are to be put and to enable the TE link endpoints to be assigned addresses or unnumbered identifiers during the signaling process.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6107'/>
<seriesInfo name='DOI' value='10.17487/RFC6107'/>
</reference>



<reference anchor='RFC8040' target='https://www.rfc-editor.org/info/rfc8040'>
<front>
<title>RESTCONF Protocol</title>
<author fullname='A. Bierman' initials='A.' surname='Bierman'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='K. Watsen' initials='K.' surname='Watsen'><organization/></author>
<date month='January' year='2017'/>
<abstract><t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t></abstract>
</front>
<seriesInfo name='RFC' value='8040'/>
<seriesInfo name='DOI' value='10.17487/RFC8040'/>
</reference>



<reference anchor='RFC7950' target='https://www.rfc-editor.org/info/rfc7950'>
<front>
<title>The YANG 1.1 Data Modeling Language</title>
<author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'><organization/></author>
<date month='August' year='2016'/>
<abstract><t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols.  This document describes the syntax and semantics of version 1.1 of the YANG language.  YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification.  There are a small number of backward incompatibilities from YANG version 1.  This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t></abstract>
</front>
<seriesInfo name='RFC' value='7950'/>
<seriesInfo name='DOI' value='10.17487/RFC7950'/>
</reference>



<reference anchor='RFC3473' target='https://www.rfc-editor.org/info/rfc3473'>
<front>
<title>Generalized Multi-Protocol Label Switching (GMPLS) Signaling Resource ReserVation Protocol-Traffic Engineering (RSVP-TE) Extensions</title>
<author fullname='L. Berger' initials='L.' role='editor' surname='Berger'><organization/></author>
<date month='January' year='2003'/>
<abstract><t>This document describes extensions to Multi-Protocol Label Switching (MPLS) Resource ReserVation Protocol - Traffic Engineering (RSVP-TE) signaling required to support Generalized MPLS.  Generalized MPLS extends the MPLS control plane to encompass time-division (e.g., Synchronous Optical Network and Synchronous Digital Hierarchy, SONET/SDH), wavelength (optical lambdas) and spatial switching (e.g., incoming port or fiber to outgoing port or fiber).  This document presents a RSVP-TE specific description of the extensions.  A generic functional description can be found in separate documents.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3473'/>
<seriesInfo name='DOI' value='10.17487/RFC3473'/>
</reference>



<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<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>



<reference anchor='RFC8294' target='https://www.rfc-editor.org/info/rfc8294'>
<front>
<title>Common YANG Data Types for the Routing Area</title>
<author fullname='X. Liu' initials='X.' surname='Liu'><organization/></author>
<author fullname='Y. Qu' initials='Y.' surname='Qu'><organization/></author>
<author fullname='A. Lindem' initials='A.' surname='Lindem'><organization/></author>
<author fullname='C. Hopps' initials='C.' surname='Hopps'><organization/></author>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<date month='December' year='2017'/>
<abstract><t>This document defines a collection of common data types using the YANG data modeling language.  These derived common types are designed to be imported by other modules defined in the routing area.</t></abstract>
</front>
<seriesInfo name='RFC' value='8294'/>
<seriesInfo name='DOI' value='10.17487/RFC8294'/>
</reference>



<reference anchor='RFC8776' target='https://www.rfc-editor.org/info/rfc8776'>
<front>
<title>Common YANG Data Types for Traffic Engineering</title>
<author fullname='T. Saad' initials='T.' surname='Saad'><organization/></author>
<author fullname='R. Gandhi' initials='R.' surname='Gandhi'><organization/></author>
<author fullname='X. Liu' initials='X.' surname='Liu'><organization/></author>
<author fullname='V. Beeram' initials='V.' surname='Beeram'><organization/></author>
<author fullname='I. Bryskin' initials='I.' surname='Bryskin'><organization/></author>
<date month='June' year='2020'/>
<abstract><t>This document defines a collection of common data types and groupings in YANG data modeling language. These derived common types and groupings are intended to be imported by modules that model Traffic Engineering (TE) configuration and state capabilities.</t></abstract>
</front>
<seriesInfo name='RFC' value='8776'/>
<seriesInfo name='DOI' value='10.17487/RFC8776'/>
</reference>



<reference anchor='RFC8340' target='https://www.rfc-editor.org/info/rfc8340'>
<front>
<title>YANG Tree Diagrams</title>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='L. Berger' initials='L.' role='editor' surname='Berger'><organization/></author>
<date month='March' year='2018'/>
<abstract><t>This document captures the current syntax used in YANG module tree diagrams.  The purpose of this document is to provide a single location for this definition.  This syntax may be updated from time to time based on the evolution of the YANG language.</t></abstract>
</front>
<seriesInfo name='BCP' value='215'/>
<seriesInfo name='RFC' value='8340'/>
<seriesInfo name='DOI' value='10.17487/RFC8340'/>
</reference>



<reference anchor='RFC8342' target='https://www.rfc-editor.org/info/rfc8342'>
<front>
<title>Network Management Datastore Architecture (NMDA)</title>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='J. Schoenwaelder' initials='J.' surname='Schoenwaelder'><organization/></author>
<author fullname='P. Shafer' initials='P.' surname='Shafer'><organization/></author>
<author fullname='K. Watsen' initials='K.' surname='Watsen'><organization/></author>
<author fullname='R. Wilton' initials='R.' surname='Wilton'><organization/></author>
<date month='March' year='2018'/>
<abstract><t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model.  This document updates RFC 7950.</t></abstract>
</front>
<seriesInfo name='RFC' value='8342'/>
<seriesInfo name='DOI' value='10.17487/RFC8342'/>
</reference>



<reference anchor='RFC9012' target='https://www.rfc-editor.org/info/rfc9012'>
<front>
<title>The BGP Tunnel Encapsulation Attribute</title>
<author fullname='K. Patel' initials='K.' surname='Patel'><organization/></author>
<author fullname='G. Van de Velde' initials='G.' surname='Van de Velde'><organization/></author>
<author fullname='S. Sangli' initials='S.' surname='Sangli'><organization/></author>
<author fullname='J. Scudder' initials='J.' surname='Scudder'><organization/></author>
<date month='April' year='2021'/>
<abstract><t>This document defines a BGP path attribute known as the &quot;Tunnel Encapsulation attribute&quot;, which can be used with BGP UPDATEs of various Subsequent Address Family Identifiers (SAFIs) to provide information needed to create tunnels and their corresponding encapsulation headers. It provides encodings for a number of tunnel types, along with procedures for choosing between alternate tunnels and routing packets into tunnels.</t><t>This document obsoletes RFC 5512, which provided an earlier definition of the Tunnel Encapsulation attribute. RFC 5512 was never deployed in production. Since RFC 5566 relies on RFC 5512, it is likewise obsoleted. This document updates RFC 5640 by indicating that the Load-Balancing Block sub-TLV may be included in any Tunnel Encapsulation attribute where load balancing is desired.</t></abstract>
</front>
<seriesInfo name='RFC' value='9012'/>
<seriesInfo name='DOI' value='10.17487/RFC9012'/>
</reference>



<reference anchor='RFC8795' target='https://www.rfc-editor.org/info/rfc8795'>
<front>
<title>YANG Data Model for Traffic Engineering (TE) Topologies</title>
<author fullname='X. Liu' initials='X.' surname='Liu'><organization/></author>
<author fullname='I. Bryskin' initials='I.' surname='Bryskin'><organization/></author>
<author fullname='V. Beeram' initials='V.' surname='Beeram'><organization/></author>
<author fullname='T. Saad' initials='T.' surname='Saad'><organization/></author>
<author fullname='H. Shah' initials='H.' surname='Shah'><organization/></author>
<author fullname='O. Gonzalez de Dios' initials='O.' surname='Gonzalez de Dios'><organization/></author>
<date month='August' year='2020'/>
<abstract><t>This document defines a YANG data model for representing, retrieving, and manipulating Traffic Engineering (TE) Topologies. The model serves as a base model that other technology-specific TE topology models can augment.</t></abstract>
</front>
<seriesInfo name='RFC' value='8795'/>
<seriesInfo name='DOI' value='10.17487/RFC8795'/>
</reference>



<reference anchor='RFC4206' target='https://www.rfc-editor.org/info/rfc4206'>
<front>
<title>Label Switched Paths (LSP) Hierarchy with Generalized Multi-Protocol Label Switching (GMPLS) Traffic Engineering (TE)</title>
<author fullname='K. Kompella' initials='K.' surname='Kompella'><organization/></author>
<author fullname='Y. Rekhter' initials='Y.' surname='Rekhter'><organization/></author>
<date month='October' year='2005'/>
<abstract><t>To improve scalability of Generalized Multi-Protocol Label Switching (GMPLS) it may be useful to aggregate Label Switched Paths (LSPs) by creating a hierarchy of such LSPs.  A way to create such a hierarchy is by (a) a Label Switching Router (LSR) creating a Traffic Engineering Label Switched Path (TE LSP), (b) the LSR forming a forwarding adjacency (FA) out of that LSP (by advertising this LSP as a Traffic Engineering (TE) link into the same instance of ISIS/OSPF as the one that was used to create the LSP), (c) allowing other LSRs to use FAs for their path computation, and (d) nesting of LSPs originated by other LSRs into that LSP (by using the label stack construct).</t><t>This document describes the mechanisms to accomplish this.  [PROPOSED STANDARD]</t></abstract>
</front>
<seriesInfo name='RFC' value='4206'/>
<seriesInfo name='DOI' value='10.17487/RFC4206'/>
</reference>



<reference anchor='RFC4427' target='https://www.rfc-editor.org/info/rfc4427'>
<front>
<title>Recovery (Protection and Restoration) Terminology for Generalized Multi-Protocol Label Switching (GMPLS)</title>
<author fullname='E. Mannie' initials='E.' role='editor' surname='Mannie'><organization/></author>
<author fullname='D. Papadimitriou' initials='D.' role='editor' surname='Papadimitriou'><organization/></author>
<date month='March' year='2006'/>
<abstract><t>This document defines a common terminology for Generalized Multi-Protocol Label Switching (GMPLS)-based recovery mechanisms (i.e., protection and restoration).  The terminology is independent of the underlying transport technologies covered by GMPLS.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='4427'/>
<seriesInfo name='DOI' value='10.17487/RFC4427'/>
</reference>



<reference anchor='RFC4872' target='https://www.rfc-editor.org/info/rfc4872'>
<front>
<title>RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) Recovery</title>
<author fullname='J.P. Lang' initials='J.P.' role='editor' surname='Lang'><organization/></author>
<author fullname='Y. Rekhter' initials='Y.' role='editor' surname='Rekhter'><organization/></author>
<author fullname='D. Papadimitriou' initials='D.' role='editor' surname='Papadimitriou'><organization/></author>
<date month='May' year='2007'/>
<abstract><t>This document describes protocol-specific procedures and extensions for Generalized Multi-Protocol Label Switching (GMPLS) Resource ReSerVation Protocol - Traffic Engineering (RSVP-TE) signaling to support end-to-end Label Switched Path (LSP) recovery that denotes protection and restoration.  A generic functional description of GMPLS recovery can be found in a companion document, RFC 4426.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4872'/>
<seriesInfo name='DOI' value='10.17487/RFC4872'/>
</reference>



<reference anchor='RFC6780' target='https://www.rfc-editor.org/info/rfc6780'>
<front>
<title>RSVP ASSOCIATION Object Extensions</title>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<author fullname='F. Le Faucheur' initials='F.' surname='Le Faucheur'><organization/></author>
<author fullname='A. Narayanan' initials='A.' surname='Narayanan'><organization/></author>
<date month='October' year='2012'/>
<abstract><t>The RSVP ASSOCIATION object was defined in the context of GMPLS-controlled Label Switched Paths (LSPs).  In this context, the object is used to associate recovery LSPs with the LSP they are protecting.  This object also has broader applicability as a mechanism to associate RSVP state.  This document defines how the ASSOCIATION object can be more generally applied.  This document also defines Extended ASSOCIATION objects that, in particular, can be used in the context of the MPLS Transport Profile (MPLS-TP).  This document updates RFC 2205, RFC 3209, and RFC 3473.  It also generalizes the definition of the Association ID field defined in RFC 4872.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6780'/>
<seriesInfo name='DOI' value='10.17487/RFC6780'/>
</reference>



<reference anchor='RFC7471' target='https://www.rfc-editor.org/info/rfc7471'>
<front>
<title>OSPF Traffic Engineering (TE) Metric Extensions</title>
<author fullname='S. Giacalone' initials='S.' surname='Giacalone'><organization/></author>
<author fullname='D. Ward' initials='D.' surname='Ward'><organization/></author>
<author fullname='J. Drake' initials='J.' surname='Drake'><organization/></author>
<author fullname='A. Atlas' initials='A.' surname='Atlas'><organization/></author>
<author fullname='S. Previdi' initials='S.' surname='Previdi'><organization/></author>
<date month='March' year='2015'/>
<abstract><t>In certain networks, such as, but not limited to, financial information networks (e.g., stock market data providers), network performance information (e.g., link propagation delay) is becoming critical to data path selection.</t><t>This document describes common extensions to RFC 3630 &quot;Traffic                                           Engineering (TE) Extensions to OSPF Version 2&quot; and RFC 5329 &quot;Traffic                                     Engineering Extensions to OSPF Version 3&quot; to enable network performance information to be distributed in a scalable fashion.  The information distributed using OSPF TE Metric Extensions can then be used to make path selection decisions based on network performance.</t><t>Note that this document only covers the mechanisms by which network performance information is distributed.  The mechanisms for measuring network performance information or using that information, once distributed, are outside the scope of this document.</t></abstract>
</front>
<seriesInfo name='RFC' value='7471'/>
<seriesInfo name='DOI' value='10.17487/RFC7471'/>
</reference>



<reference anchor='RFC8570' target='https://www.rfc-editor.org/info/rfc8570'>
<front>
<title>IS-IS Traffic Engineering (TE) Metric Extensions</title>
<author fullname='L. Ginsberg' initials='L.' role='editor' surname='Ginsberg'><organization/></author>
<author fullname='S. Previdi' initials='S.' role='editor' surname='Previdi'><organization/></author>
<author fullname='S. Giacalone' initials='S.' surname='Giacalone'><organization/></author>
<author fullname='D. Ward' initials='D.' surname='Ward'><organization/></author>
<author fullname='J. Drake' initials='J.' surname='Drake'><organization/></author>
<author fullname='Q. Wu' initials='Q.' surname='Wu'><organization/></author>
<date month='March' year='2019'/>
<abstract><t>In certain networks, such as, but not limited to, financial information networks (e.g., stock market data providers), network-performance criteria (e.g., latency) are becoming as critical to data-path selection as other metrics.</t><t>This document describes extensions to IS-IS Traffic Engineering Extensions (RFC 5305).  These extensions provide a way to distribute and collect network-performance information in a scalable fashion. The information distributed using IS-IS TE Metric Extensions can then be used to make path-selection decisions based on network performance.</t><t>Note that this document only covers the mechanisms with which network-performance information is distributed.  The mechanisms for measuring network performance or acting on that information, once distributed, are outside the scope of this document.</t><t>This document obsoletes RFC 7810.</t></abstract>
</front>
<seriesInfo name='RFC' value='8570'/>
<seriesInfo name='DOI' value='10.17487/RFC8570'/>
</reference>



<reference anchor='RFC8232' target='https://www.rfc-editor.org/info/rfc8232'>
<front>
<title>Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE</title>
<author fullname='E. Crabbe' initials='E.' surname='Crabbe'><organization/></author>
<author fullname='I. Minei' initials='I.' surname='Minei'><organization/></author>
<author fullname='J. Medved' initials='J.' surname='Medved'><organization/></author>
<author fullname='R. Varga' initials='R.' surname='Varga'><organization/></author>
<author fullname='X. Zhang' initials='X.' surname='Zhang'><organization/></author>
<author fullname='D. Dhody' initials='D.' surname='Dhody'><organization/></author>
<date month='September' year='2017'/>
<abstract><t>A stateful Path Computation Element (PCE) has access to not only the information disseminated by the network's Interior Gateway Protocol (IGP) but also the set of active paths and their reserved resources for its computation.  The additional Label Switched Path (LSP) state information allows the PCE to compute constrained paths while considering individual LSPs and their interactions.  This requires a State Synchronization mechanism between the PCE and the network, the PCE and Path Computation Clients (PCCs), and cooperating PCEs.  The basic mechanism for State Synchronization is part of the stateful PCE specification.  This document presents motivations for optimizations to the base State Synchronization procedure and specifies the required Path Computation Element Communication Protocol (PCEP) extensions.</t></abstract>
</front>
<seriesInfo name='RFC' value='8232'/>
<seriesInfo name='DOI' value='10.17487/RFC8232'/>
</reference>



<reference anchor='RFC7271' target='https://www.rfc-editor.org/info/rfc7271'>
<front>
<title>MPLS Transport Profile (MPLS-TP) Linear Protection to Match the Operational Expectations of Synchronous Digital Hierarchy, Optical Transport Network, and Ethernet Transport Network Operators</title>
<author fullname='J. Ryoo' initials='J.' role='editor' surname='Ryoo'><organization/></author>
<author fullname='E. Gray' initials='E.' role='editor' surname='Gray'><organization/></author>
<author fullname='H. van Helvoort' initials='H.' surname='van Helvoort'><organization/></author>
<author fullname='A. D&apos;Alessandro' initials='A.' surname='D&apos;Alessandro'><organization/></author>
<author fullname='T. Cheung' initials='T.' surname='Cheung'><organization/></author>
<author fullname='E. Osborne' initials='E.' surname='Osborne'><organization/></author>
<date month='June' year='2014'/>
<abstract><t>This document describes alternate mechanisms to perform some of the functions of MPLS Transport Profile (MPLS-TP) linear protection defined in RFC 6378, and also defines additional mechanisms.  The purpose of these alternate and additional mechanisms is to provide operator control and experience that more closely models the behavior of linear protection seen in other transport networks.</t><t>This document also introduces capabilities and modes for linear protection.  A capability is an individual behavior, and a mode is a particular combination of capabilities.  Two modes are defined in this document: Protection State Coordination (PSC) mode and Automatic Protection Switching (APS) mode.</t><t>This document describes the behavior of the PSC protocol including priority logic and state machine when all the capabilities associated with the APS mode are enabled.</t><t>This document updates RFC 6378 in that the capability advertisement method defined here is an addition to that document.</t></abstract>
</front>
<seriesInfo name='RFC' value='7271'/>
<seriesInfo name='DOI' value='10.17487/RFC7271'/>
</reference>



<reference anchor='RFC8234' target='https://www.rfc-editor.org/info/rfc8234'>
<front>
<title>Updates to MPLS Transport Profile (MPLS-TP) Linear Protection in Automatic Protection Switching (APS) Mode</title>
<author fullname='J. Ryoo' initials='J.' surname='Ryoo'><organization/></author>
<author fullname='T. Cheung' initials='T.' surname='Cheung'><organization/></author>
<author fullname='H. van Helvoort' initials='H.' surname='van Helvoort'><organization/></author>
<author fullname='I. Busi' initials='I.' surname='Busi'><organization/></author>
<author fullname='G. Wen' initials='G.' surname='Wen'><organization/></author>
<date month='August' year='2017'/>
<abstract><t>This document contains updates to MPLS Transport Profile (MPLS-TP) linear protection in Automatic Protection Switching (APS) mode defined in RFC 7271.  The updates provide rules related to the initialization of the Protection State Coordination (PSC) Control Logic (in which the state machine resides) when operating in APS mode and clarify the operation related to state transition table lookup.</t></abstract>
</front>
<seriesInfo name='RFC' value='8234'/>
<seriesInfo name='DOI' value='10.17487/RFC8234'/>
</reference>



<reference anchor='RFC7308' target='https://www.rfc-editor.org/info/rfc7308'>
<front>
<title>Extended Administrative Groups in MPLS Traffic Engineering (MPLS-TE)</title>
<author fullname='E. Osborne' initials='E.' surname='Osborne'><organization/></author>
<date month='July' year='2014'/>
<abstract><t>MPLS Traffic Engineering (MPLS-TE) advertises 32 administrative groups (commonly referred to as &quot;colors&quot; or &quot;link colors&quot;) using the Administrative Group sub-TLV.  This is defined for OSPFv2 (RFC 3630), OSPFv3 (RFC 5329) and IS-IS (RFC 5305).</t><t>This document adds a sub-TLV to the IGP TE extensions, &quot;Extended Administrative Group&quot;.  This sub-TLV provides for additional administrative groups (link colors) beyond the current limit of 32.</t></abstract>
</front>
<seriesInfo name='RFC' value='7308'/>
<seriesInfo name='DOI' value='10.17487/RFC7308'/>
</reference>



<reference anchor='RFC8343' target='https://www.rfc-editor.org/info/rfc8343'>
<front>
<title>A YANG Data Model for Interface Management</title>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<date month='March' year='2018'/>
<abstract><t>This document defines a YANG data model for the management of network interfaces.  It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t><t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t><t>This document obsoletes RFC 7223.</t></abstract>
</front>
<seriesInfo name='RFC' value='8343'/>
<seriesInfo name='DOI' value='10.17487/RFC8343'/>
</reference>



<reference anchor='RFC8639' target='https://www.rfc-editor.org/info/rfc8639'>
<front>
<title>Subscription to YANG Notifications</title>
<author fullname='E. Voit' initials='E.' surname='Voit'><organization/></author>
<author fullname='A. Clemm' initials='A.' surname='Clemm'><organization/></author>
<author fullname='A. Gonzalez Prieto' initials='A.' surname='Gonzalez Prieto'><organization/></author>
<author fullname='E. Nilsen-Nygaard' initials='E.' surname='Nilsen-Nygaard'><organization/></author>
<author fullname='A. Tripathy' initials='A.' surname='Tripathy'><organization/></author>
<date month='September' year='2019'/>
<abstract><t>This document defines a YANG data model and associated mechanisms enabling subscriber-specific subscriptions to a publisher's event streams.  Applying these elements allows a subscriber to request and receive a continuous, customized feed of publisher-generated information.</t></abstract>
</front>
<seriesInfo name='RFC' value='8639'/>
<seriesInfo name='DOI' value='10.17487/RFC8639'/>
</reference>



<reference anchor='RFC8641' target='https://www.rfc-editor.org/info/rfc8641'>
<front>
<title>Subscription to YANG Notifications for Datastore Updates</title>
<author fullname='A. Clemm' initials='A.' surname='Clemm'><organization/></author>
<author fullname='E. Voit' initials='E.' surname='Voit'><organization/></author>
<date month='September' year='2019'/>
<abstract><t>This document describes a mechanism that allows subscriber applications to request a continuous and customized stream of updates from a YANG datastore.  Providing such visibility into updates enables new capabilities based on the remote mirroring and monitoring of configuration and operational state.</t></abstract>
</front>
<seriesInfo name='RFC' value='8641'/>
<seriesInfo name='DOI' value='10.17487/RFC8641'/>
</reference>



<reference anchor='RFC3688' target='https://www.rfc-editor.org/info/rfc3688'>
<front>
<title>The IETF XML Registry</title>
<author fullname='M. Mealling' initials='M.' surname='Mealling'><organization/></author>
<date month='January' year='2004'/>
<abstract><t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t></abstract>
</front>
<seriesInfo name='BCP' value='81'/>
<seriesInfo name='RFC' value='3688'/>
<seriesInfo name='DOI' value='10.17487/RFC3688'/>
</reference>



<reference anchor='RFC6242' target='https://www.rfc-editor.org/info/rfc6242'>
<front>
<title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
<author fullname='M. Wasserman' initials='M.' surname='Wasserman'><organization/></author>
<date month='June' year='2011'/>
<abstract><t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem.  This document obsoletes RFC 4742.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6242'/>
<seriesInfo name='DOI' value='10.17487/RFC6242'/>
</reference>



<reference anchor='RFC8446' target='https://www.rfc-editor.org/info/rfc8446'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author fullname='E. Rescorla' initials='E.' surname='Rescorla'><organization/></author>
<date month='August' year='2018'/>
<abstract><t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t><t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='8446'/>
<seriesInfo name='DOI' value='10.17487/RFC8446'/>
</reference>



<reference anchor='RFC8341' target='https://www.rfc-editor.org/info/rfc8341'>
<front>
<title>Network Configuration Access Control Model</title>
<author fullname='A. Bierman' initials='A.' surname='Bierman'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<date month='March' year='2018'/>
<abstract><t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability.  There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.  This document defines such an access control model.</t><t>This document obsoletes RFC 6536.</t></abstract>
</front>
<seriesInfo name='STD' value='91'/>
<seriesInfo name='RFC' value='8341'/>
<seriesInfo name='DOI' value='10.17487/RFC8341'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='RFC9256' target='https://www.rfc-editor.org/info/rfc9256'>
<front>
<title>Segment Routing Policy Architecture</title>
<author fullname='C. Filsfils' initials='C.' surname='Filsfils'><organization/></author>
<author fullname='K. Talaulikar' initials='K.' role='editor' surname='Talaulikar'><organization/></author>
<author fullname='D. Voyer' initials='D.' surname='Voyer'><organization/></author>
<author fullname='A. Bogdanov' initials='A.' surname='Bogdanov'><organization/></author>
<author fullname='P. Mattes' initials='P.' surname='Mattes'><organization/></author>
<date month='July' year='2022'/>
<abstract><t>Segment Routing (SR) allows a node to steer a packet flow along any path. Intermediate per-path states are eliminated thanks to source routing. SR Policy is an ordered list of segments (i.e., instructions) that represent a source-routed policy. Packet flows are steered into an SR Policy on a node where it is instantiated called a headend node. The packets steered into an SR Policy carry an ordered list of segments associated with that SR Policy.</t><t>This document updates RFC 8402 as it details the concepts of SR Policy and steering into an SR Policy.</t></abstract>
</front>
<seriesInfo name='RFC' value='9256'/>
<seriesInfo name='DOI' value='10.17487/RFC9256'/>
</reference>



<reference anchor='RFC3945' target='https://www.rfc-editor.org/info/rfc3945'>
<front>
<title>Generalized Multi-Protocol Label Switching (GMPLS) Architecture</title>
<author fullname='E. Mannie' initials='E.' role='editor' surname='Mannie'><organization/></author>
<date month='October' year='2004'/>
<abstract><t>Future data and transmission networks will consist of elements such as routers, switches, Dense Wavelength Division Multiplexing (DWDM) systems, Add-Drop Multiplexors (ADMs), photonic cross-connects (PXCs), optical cross-connects (OXCs), etc. that will use Generalized Multi-Protocol Label Switching (GMPLS) to dynamically provision resources and to provide network survivability using protection and restoration techniques. </t><t> This document describes the architecture of GMPLS.  GMPLS extends MPLS to encompass time-division (e.g., SONET/SDH, PDH, G.709), wavelength (lambdas), and spatial switching (e.g., incoming port or fiber to outgoing port or fiber).  The focus of GMPLS is on the control plane of these various layers since each of them can use physically diverse data or forwarding planes.  The intention is to cover both the signaling and the routing part of that control plane.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3945'/>
<seriesInfo name='DOI' value='10.17487/RFC3945'/>
</reference>




    </references>



  </back>

<!-- ##markdown-source:
H4sIAICKVmMAA+29y3YcR5IouI+viILOHAASMkGC1AuqkgSRlIp9SIpDoB59
qnV1ApkBIIqJjKyITIIoCX3m3PUsetGLWsxiFrPs5XzBfEp/ydjL3c0fERkJ
UiXWLeXtWyIy3c3Nzc3Nzc3tMRqNsmW1nJWH+VH+r0fPvskfFssif1pPy1l+
Vjf5SVOcnVWT/NH8vJqXZVPNz/OT1Xxeztq9/ElxCs2Or6rl5KKc5s+L5UWb
F/Np/ni+LJuzYlK2WXF62pSvDvOTRyH8bFpP5sUlDD2FQZajqlyejZZl0Y6u
i/k5/Gt0725WLZrDfNms2uXBnTuf3jnIJsWyPK+b68O8XU6zq7p5ed7UqwUO
cHSc/wH+RhS/we+yl+U1NJgeMj7zcjl6iCNlWbsELL8vZvW8JOhl1q5OL6u2
rer58noBXz5+dPJ1tqgO8z8t68le3tbNsinPYM7t9SX/Y1JfXpbzZftdlhWr
5UXdHGZZPspy+FTzFvAZ58dFMaUveJonRVO+dF/WzXkxr/5aLGHQw/xB1U7q
/Pi6XZaXLSA8oTblZVHNAMUWOo1hAl+e4xdjGFvGoqFejPNvYEIXVWbHelG8
LNsL9fWA0WQwbAidvpxgGxpKj/XHcf6kWrmB/rg6K4Hg8p0/yuOvnuYP6mZR
N/SFGuM19RrPqtUYl11NS4/1+3H+fJx/BWxXXLoRf1+1F/MVcNurYq5+9If+
l9W8WpRN/qxcIo+0auxXp9Tnyz9zEySrv3KPYczmugVGUov3GJjO+zqY6nxa
vaqmq2Km1636/pR7fHldXNQeMXmob2Hl6vlfi1n513xa5g+rulVjfttOiibd
wB/9pJyVZ/W8mhR69Bq7j8+l+7ScQucvl7YpYzOvm0uA8qo8hK4vvn5w7+DO
p/LPg7t3zT8/unNwx/zz4P5d889PP7X/vHvnY/nnJ3fuQ9usmp850NloNMqL
03bZFBOg9slF1eaw/Ve4g2BeZyBbQHKwhJiihLi0Emh5UeaLpn5V4ebEvY0C
5rKYF+cl9a7PspSQ2jl5tJsveyXVzpPj5+3uHgGsrMQaA3aljD+pX5VNyxgt
L4plDmhX82m5KOF/aGzofJ0vy8nFvJ7V59ewLtR6MSvmZV7OJ8WiXc2Y+2kY
AIZ8UtKIdQ7MyZOG8VYzoAGNQsMCWV5Vk3LULspJBbNjPPlLjUSG442FpjHa
SMJJPT+rzle8C/fyGrie/lnMQIiCPN3Lm/KyXhKdJ+UUGs5Azs6QcDhm+Qrn
Oq+XiAZ1BCLRil5W0+mszLL3UMI2MIUJzTSjKf3ww6+Ec25uCA5/8fGnH+IX
Fa63W2pcMqDZ+QqWlYlwVbTAQwwVyAXEYj4hhoAZLVH40grgX5NysYTNxxDb
Zd0IFJhFfdVmcxYDpSFgi/BOS+Gjab5qEYFnj04efPvsa4M5MPrNzZjX56Jo
iQvLadbADgLRs4T+1zWu6RKZolpWxYwpDbwMhGvzU1glAEtj1YB1o7gs3ynH
5+PsxaNjM6TsnJubXSb6fFJjb+kJk5nnf3z6hPvl/3L87TNoB7M8LbERk2Y6
zr5eNdj+EgiwF26nNp8AEJj1qoUpFy1R8rRoKyJjdbmY0Y6iFUa+yUKk4fRb
TS6w54MnjwlLIMk5yFLc5pP86Pnjdhxv7nbSVKed23vt3s022bs57l01QmK/
ZXq/cQf+I98WDWSM+sc2dJjMVoC+v/3PyzkgOcGBM9mhajPu5VcX1Yx5NIA6
4tZ9wLNgyxMxyzQtL6rzixEwIkwSGJJ35UW1gOVdXpXlXGHQGu6AQbOlXhzi
0qtyNsP/8mKXr1FTAk6GlQXNp57lPrmIXqDLCRmycEmnNYwHosJMkOQjb0qZ
FO4G+Ks6h1Fwsc1AAPvxMgPsytfQcgnoMkbUmeWpkrM02k67m19ViP7qnAi0
7EVunGfZ0ayt92DL5vFAsRzmKQHAGFvgS7MXXhz//vkIGu3QHsbz8+ZmT2TI
vfsf34MdvYfnwnFJSI5e1KslqdHQ5fjFCHk9++GHL6D1pwcffgSiMZqS4Tmj
QwuWYxS8J7DZWel+UM9RUCMjwA/v5S/Kv6yqhrZ0Cwcgy1bmKFCMc9SM23zr
6e+OT7b2+L/5s2/p3y8e/e+/e/zi0UP89/Fvj548sf/IpMXxb7/93ZOH7l+u
54Nvnz599Owhd4Zvc++rbOvp0b9u8bbd+vb5yeNvnx092QJmyT3GJMnGEpo2
96IplySyMrMFkJnzrx48///+77v3hdaorgD1+I9P7n58H0l5Uc55tHo+u5Y/
gaTXWbFYlAUKNzwiQDAuqmUxY7ndXtRX8xxYAimMlEQaV8x4TL+zGo8VXMQl
kx/QdZvMOz9ocPydhK6ZqNkMrL9l2fv5ZFbhYf6+f1gT98KXdEzzH4F8BaRr
OMZA28cRUJAvIwQF91wdp4RImQVXMuxgOMU7rglFYUn4l9tT5o85/EG0eg63
o+p1iUciA34Gv+TPQJ8FrnwcrPMeKbp0/FgozMxq7/MurE//DJuVSb3gMaYZ
H9s4YbrRFc1UfoNlbOtJVSDXwMFxIUpD05TtoqZTmXcSHHpwswNIsu/V+tM6
LotT1AFAaf9RZpbbz49aYuivX5RnwDugkqgvAcAo/MTfdH+NAHI8OvJcD0Vn
C1+X4dramq+FAUE9BwZ0GMCcymUCAH49DEDjtbMAGhZp9jcD4JODT+/7AOAc
TAGIvxYAH3/8UQRgUUxeWoQdgODrbgC597EAwq99ieRhAOd0AoCc8P0AfjjM
30Ouysns8pstu1+Q6xMcKoy5dUO7iw0zJ02JV8ECVa+WJdISv5rKV3iK40UL
mP+sqS+VLoAnphJUsdA9h+sa8j4aRFo4QPD7tiS1vsW9sSj5RtZeg6L4OhZ6
n9xDFZZOpoclHpt4LLWggLE8a/vUw/CYU7s/ffnKjHIRqgegS3w7t8Jwyoiw
BIH5tQgJtRCUkVYUZz2KBjVvShSwvoqhcSR9uG7b6nQGx4sc36BpsPxxEK0i
ZC9ucFOcyTktKHeTYk80K9EgnC0O9GE66TJ1ybgoXpX5rCzOcN2Zhki66uya
RlFIzYprWNkrPPTofITZ4qrBhaJGpbDAywGdnDiQu5zgZqNbRRfcUA4XmUUa
dSIANjZKWf+8nWbJt+NYJRN6IjkTP9LxC6tYzfGoWCJKOAqSjRgfJBhOmJl7
AldkXgpUyu3+wGuZ0RlZOyFc4K/Ta3M6MpvrjSFHmUCBlRiHSoS0YDadePuF
NSE43ud8gSkmk3o1F6ZCWQHY0N0YVQPPKIQn9kk/Sc3VZJvu00VFeIf2Be6A
jJV790cYVBYGf6/P8CIuvfmOCtpLgaMi7AbmWja74/wPF3w3yXJ3Q7Pg6DKe
q6sCw9szAoxMG4Ko7EPh/wwtYhXcIAtSra3UCyCBXDAI9Ax/8ginarHm4bfl
Prqdz6p26fBA7dHhQTwCf3JjkJzEE0n0GCO7MWU+bljBB2/UspLB7RCbE+0r
j93S185tVJ5zrdqAkjlZNjMU1u/noJgRnxQgX0BdrC7hBmhlUqUJxqoubTBW
yfOtS1S9lnVzvQVkhEFYrp7BiTTFZahzOFKmdcMyd1oseLJautf4TdW45Vqw
MQmA+WYJxPV4Bar66Yw07mI1E51QuuKRB3KFdHqjSGNbM5mx0FJYt5zMoDMe
PvPV5SkQHTY9kPVsNXdH3llZLFeNtc3RFsAFXbAJDa4V7WrBauSYDuljUtZJ
+f1W7Uje9WKQzp86Cya2ZJPVUTO5qEB64nj5zrOnD4923bl6gJeJ6RQwaUGX
tlYzdzWgmZeLC4AKC2k0Zrqze8f8FFDnDYQjiB4f2QmJlRXwpgTVurX2IdEF
8J0kP19VhAzQCMHMy6uMvjcKDGwM0ghYe/kWROarCtpkvrGm7dZMWOSLDk/7
xF8UWMMM32PokmdXA6XytDojZXwpTBjwkxiApAuuPhpAQO5NQZiaLnrDybi4
bbUFATi4rEiK05XVPwzw9k+mHRHpxO7WWGsmoGfflouiIcoLBVq5iT7lzf1C
WXyYjAN0JwV/S1u6toy9GMXy6aqa0cl+OqsnL1uNXXQw0M32fF63aPwTU7jV
pnybuIg1Ua/4DLb2OpRjDN3sSmuu2koYz7YMddt1KgOr1NYWnhlK+KYoGXs0
ynkDGWWnWC5BM10t+X4K4LUhFFYUxXx1yYQTIgHNihlDhV/xNitnvRHVwuhn
mqssNew1OFJCy9d45qBWbhgjNlb1GYy0DUxIng3DJ2H5SqtLmahLuacuBXzt
q0Kw/JF2Kca0zIkOby8Z/RgmZs9vo4Phtot3DizAv//7v8MFXmvt+PnA3q0/
sFe5+tAaOfLwYu/uiT/W3tX8gywPPynY/Pm3uLEZO/Fdd+sf/22z5vm/+duM
ZtbXXs3BTaW3Q3QP/nENSskh1nShT0yqdX32Uz/1d0p2Sff6IDGL9E/ELMZg
LMtgbCjtqwVzVz52eBiSwg5p/wfaHwaM/W89Y6fnOoAsUbPB7YY33KBlR9OY
MyIeW7dj1frplamXc1gHXgJcQCUeVDOH65uMmzseoXvetyfPOlk1+pAC07Kt
JfztjzBK/a94iKPpWT1z4Ez+6M5V+eZfIwD/Q/UtTLNuAU+iFy1ectkwRi+t
v8jh6uxTNOXEDV5bwuzJxp5ESRVIsNuxt1xS2S5LfLo1jgXKjwBvuPZlnN+V
8QxndX3MOrR9tZs0JV3l9nCU6uza+CU0JegMIP3m587/AZXlUzgv0+Ya/SaM
f/JFyJlNMqWG8L06P5riFQ19KdCaNSJfJwB2/OLJN/CfcjkZo4nhCG4xcAvS
hsHU6WlvhPjD0QJ1u+o1qhp0QyTDLEAYISy261kl9HjZrOimwuTfVnYEfDVm
7WxZL3J+pVQ/8WDO+iDPWaiZZHzJmFjjXQC2nON1rtWXtLwlNybgmyle8L8q
8fZJHiOwUtkZP4iLoXHBGjjAtiBlE7CKtQLNtnHjWuwz25wVOlBryDBzgdQ1
QyiQ5JOGfgUePAcleGZASuODLo0lb0bupesUZ4QXgPNZfVrM2sMs+5y0uG35
QhPoEv7jLCRtSZcabodEU9ykr7PFYjGDbY03ZdBeA3uG9o3JxAzicLB2Eb3A
sk0QBTKX8B43QK2+rIxx0zG/m6AJ4YcfTh59f/K7Z88ePTkGauBmdcsIYwCI
em4cg2DLLquytTuWBwFMZ+1CoYl/DcERNqa1yYQoklPE52omDueccIbOmyPM
NlBnlKAXPWfnuqphEPLOeS7eOWX+AJ1z8p0Xzx8AqoaVMstK/qbt4CZZt9Gi
WF6M4PK8AKYgch3lAJcN3n9ZlUAYbJFzC+sboq10iug4C+zNbjcGAonxEAi/
3RXL+pK9KdjWAHu7dQ5KY5BiYkq7LK6ZMmR1ZTsFnznbgvwIb/8kTIiJRQIw
WKAEY7BaTPHwykawNcp8PaMpQhUTsasCieYhjRQ5uJ0I66ZEO9Fl9deSfACW
ZdGMYLIj2Jirxa5Ykcm+m5G91F1NrY0cbVmCA2CTXGFcf+Zk7QtiXhPaUosm
JDUyDp2z5BGSEMV0aTIfeRw9NMpoRmpLcwWz+VVmtBj4U6RRJroTfsbjsW6x
tNbadIs6x22qtQ78Gf5uFpP2MDMK0+s8xbyZAMUWV8AY8J35yh/qRzMYHMqq
Ue418sfhNbWYhUPEs0kM4c9J01c0JHcEGD3JvZWwaFBOP6Ti0OGOtjR+HiS1
6BtehfyH905K+feNnNCJ40LMI0osiQci22sKZfPabrPT8qJ4VaGxgI7cER65
osUsW/McATqJ2A3jQ04wuLnJfKEkKsESlFdGgB9HyOxlqNTDafwt+hJMRwVq
RyM6gF2D7jbv53/C777TTX1OCDu3zey8EzL+uDlIYeM56nQVvxdYluppZwcK
GUnoo9jIfENs065OiXMUO7VGmUNOymJKyslA3R33GDXanJ/UDySf2FDhbPJU
VVaLzK0DBDrIPtI8QM1ltQM0/pe46IrSm4x8fFHgofCial/mTwAUxwG06GcF
uvGuHjiTgfPUwOF6dONQBBjIMWd7jvNHxeQi/SN6/KHsqvEBirQBUddUf62l
GVrloAOkjlQ8LdMDBf3xsWs1W1aLWekpM88D5O2hCxtfPbBMqwa2+exaabdO
BSBtK6SC6kx9Mq8PnX/ouAPaDav+xtofwcmgMzCS8mtojLPNND33cd5FFLj0
NddGAca7Gq9CctxAjDGXqAbkIaXE1Fve36q5+fxgXGYO00PcfBH0cuPkfR/o
j7fXVF8Y8RTENgj95UXQIDj9go64uUZ4j2dHki+iQdl7YHkNi5kEQNoSQICj
B1rF/fMVTPmTZNeLejbt69nT1dogiNCJvuvQpjW5RJPAZHRaA+e3G5GNuqN3
NDqXl+3oVTEDXfPWIK6JbW/Rn8TwCOXcrTtvPvK0av9cw9LM4UIQsrL5Bzl9
wRi6bRJY+Rqvt9WSHNXgosAvo6NidlVc32JOcCrKy/6vNu8MGHT1zm3vzD/P
I3ljTvZnyUPHO+XpQP/8c7jxcFCRHGPoFcSHC+4Qvjz0yEljAGtBgFdw5TEa
G3IF6XImpqBA5+IxD6gFxmF8fgaja68h86oIZ4SFoIU6ww/kSu/csG3u2orn
kptlw97SU6VZzF+21gmZjAVWT5UbB9NKkCEZtY8D5kbcHDp0WoeP9aKiHqQ9
09eoK1EEou2P9PQ87L6wDuZmUE9E9RLAjYhNXSiHsTSjh/oLARsLrvXLJ7oL
98q5V67sSmwAySzpnJeMImJa5A0e3Ei6nPuRTfeyAGWQl5F4tFN5ihAQgTl4
dN4+Fge9IRER37mTWIpWm55AzR9obmpW4nxCz9GoPm6GvpLXg3FHBVlTbXNk
b4PjbehLmP4ctNWnzCGpuXx1Asxg7HrVTEqvjZYu1sWrLeHbaQGKJ46SGRug
7ASMMiMnKfbDrGXk3uOri3yeBZE6Wh96Zg06fN7PtzXQEVFrWgrs7UN1wWEY
eBpUpfjPYptcujiVPKZfaiSRqWbE/qFMNJFZz6k9gOLB8LQTo2/vgNr3z1oU
Pc4Cnrm6qIBHfPKRZW+PgxX2+JzYFVuxHBMOzWkPngZNG+Linp7meXm5ABmy
ZgZEL3bIsRZmd63aga9Hy3pUzgkj+VbCkHYlKsZ3k0Qs98jJtGH/3joIJ2nw
Ce6Qcb87RkPocERdNG91aXaAma3D1OEfPFMu7bPLPGTo4JQeRP6Dt4W9wlho
G2I+r20vPIWrNtQ2iqU2ot+7BWbon4eWPJkpvnK26Hwue1TMabKYzRVFymDD
nWpcjvcCxiGnGhY2U+WzOwiZip20Cfs9uaErxHDuBFd7ks2uXdySw22c3b/l
EjkhuyMAd2X0iKMCgcwSGL/GezJgt6j5jGmjtdenmbsQrJXGTsjNKK4Vjg5U
mIx5mU8+dNtXTwPs+h04hmMsWz5pMOAAA4BrfPhrRU0nD2bfB9k6VU4KWAv4
LwcOg5bNYbWy01cLQKcsLmMnZj1fdYd5ByZcvsF8p/XVvHvG1qhuXi5/eE89
GJl37/gBVF87ul8/bVYDFFnzzESmi8QSz4OEER0tPwSLHuT1Q0LfW4v+NmVY
GmYfis1D3A8uIUWbMq+s6SdxI1XZpDujdebeQdxvAhfFji69/ZQbQLJ35/zI
Fk7PGsl+HaYgeQRyCReSIHo6X9lYm67J9nZuKWq+24TV35l02m4iWwsk/AOV
oVE1TRJ8SXEPHQQfBKRtJsLyo+UCWoSQTmGE5joxeLu8Vb/Tim3ctGQJtE/r
Gq7Y8xRbmvAN/ZvdfcaXacTRIBZyxzL8GIMdcUOZSxe3ulfnEbkoh1PA3XH3
owSXi9sRzNvcMpL4xO1AougvX5bX3wU9k6axHogj84q0HnSeAu0ozguZHJbd
ibpZPLHQP8ag05tr3aKq/qwi4b/gAmkw6hubrNr12Rktb4c93Bd/tutVARdJ
0LVpzGXcN+YNt0iLdsQWp8ReyhOmdMONGN1S3HoReimhgN9uGTSAdoLBM8Ok
cxLAW1/IYStJ0UMbLeU6LugUESiv6wWZaUfu8O5icPTAaYRZoCe/Qgci3kk5
SoFgWWtte4WHwFffJDFPPl9ZeDvOAr37xXARs+51q/+MXfOy1bGl1r1qdXRb
96LVi+oFrHPRTC6uk8Qzl7nJ9Sjh5bNW/hvgcD2bjZCim4h4upTRU1D6uNIt
UqpvP3x7Q+wZwW/zJmPIbXnQWLrthmNa3yZxbYpH8h2cBi2j7+40BAd1BprM
Q+jOhRGliZe8FEq5hp9yqrK3pdipii5nnkeM7wYzIFY4GarcESvsez20AyOW
O5HIVMDym4UrZ0G48hsFK594piTj0mqtT3GMqZfLLzA3OtxEHT3MXAKBtFcO
wKjnZCm+lFhRivGHMxLO46q9IBdYlyNLDPfijmauKipLASfQYXTZGoR5pOB3
9JYx3qClZC8zz6dEJcxK5/sPy9VejFL01kChfiquHuABfxk72FKyozn2YHSN
9cJhnPdiTAgDHYRk/Afn4APKzWULwrLDKgCeLUbowjCaaOSUQ7yGE884VsFm
2BN0ZhW0YmueYK5p7VB0VM/0HLow982rMolFwRG7BTszjdgipOkg4Z7s6Ko3
q7GtcJeIaS8KPyI8dJqnePNymXCEMty602u12ZW0c4iuH2WqjckSaa/dtmHm
kS1B74LUu2+U7dHssqVxlCe/gDVQyC4UuNhzKKn5BWfvkGcvASCN1RFbNahZ
EmGKpRPHCmjmolUEqGwTjqtZGn+D380r/CZ/YR7hHrOVFyTAzu9ePN7NT68z
lzPFTKZdFLyPynmL7z6MML3bybg0seKynp+3S3bCZkujkZ0SDo9vKMZ0xwHH
Rigi85JdrI+4BSYgo5NvKUPK3rZ0GcMMZ9XL0v+WVo1lPY1hiEPxSOhoh3yK
uUnhXmEeNtkgeVbSd466lhGcPr8GY9cwYCbxEnE/O4cRQ0mjHZozRjvzkdUd
MMUcB+YAzDKy9a1jUGqUTPulCHliG8oxmtFZvsDTol2WmFaGJZ/1u2xAmgGz
kQ1NuqKcCpaIHTWcM7PJ53fn7gHZaJX1cN08DEDfcZa6Mv7+L5jKerkio7HL
1SD5T5ti3lb2cX7b6HuEy2qxzQZ1NSYR5JRT+PBdjNMCsYd3BAJN5wKksu8+
pJswjEzDGN9CcpmTPxRgAMsYRfetgdNF+pjftgntbd8Euk1iNXTLUZllUwkM
KvMOHGHF5vpg9Y2jzqf3P6TVZ7G0rw46QrYHiWV4SnonPZpJ3dsUDhCYR/dD
uyeN1+2M5PYrx/ynh7VyGGGdqJP6Ob+R7ZycPG9tvpKPP4XJcxYpSnEUalsI
JJyUec05ee6hRPkGJNtKbpqqh6MCYeGj0Iz7Yl4Syr3gpxfoBYtPh5xADoHt
PH6+//T5k+NdfqwkSe7ZhNOsS3vBHAv6rbFkHTRxwHtQ5fyQl1eSfOYsSeu6
esMwTEnVIhmK0Ulj7iZpk7v6ujtCydDVm7MYL0udsaPwRfuyaM7LJbOg8eDn
qGHe93YIG8+752fVIPeWqctX8/zBo+d24ClSYJ+ypczKc/rCRT6FRu14DWrS
ypbGpeIVprEtm6qWZ3amkAVj3UUSVu/15FZOZ657m0c6i8n9HMQNHulO7kZl
LqbkWITOc9eSqI6uFQo8glOHmj6JFGDRCVB1b6op8D4lKlMtAIwKputz7Jc3
70y5Ww6hkervfC9dtBEtqzWfbghR9fRBpm2Ug6CbflqHSSkVth2nzOPVMf4H
ajUa5ywKiFkT2lpcbEuO6CunQeRoEHRhrnSZzdGGzLla4GmEggx39Dec4Av2
z5S/2/mGZZzchjwXPsoWVpjIGHKRIl3IXOtsrP8On/IKCqVBxnoAmDw9l5Sv
hFjrpXKz2WjDddW2QB7eHHZ45wMVESUyPvjXftpBe72jPsZVVykhznhBDD67
9pIo5oRlsNi8vdxqdAQQW4vFofhax+ZQdJQQieFNUFljPIeAhpcDUNJfy6yq
y8tySqIahgVkvOmRA4g9EJx3GEYv53JZ5g6RVxTg6DD3PYI8LM4kISAl3IK/
WAEkztlpQXZP5DgIB9hFWQfCGu4B8CvaaSTvcS5TCAKJDP+lFtNc4u1WtIm/
ABrKudylqvJmMr2GuxPSHnCnRA6lSg8thgxFA4Dm+hYTLDMAbRU5xDMmMmGv
d2w19nZzf84TvL+TmLtJ5tn6yc7M0htHMr5LOy8mkRvxGDpN0+m19oRx+lqs
rikd1NslDq7IIitLCTqGijJc3G6BksnSJjQDab2NziBl8R8k1o0bjnbgajFe
zvPm01dXQnUbL9nbuCvCdpbJ7d2VIiGCBKOF7adMfmh5MyeF0a3YndhHMuND
BQZDRpMlrpspX7oXNvAtQs/4sFmhpHKIILXQi0soqF8Q+tk1On5IMPGo2sOP
WSH0+fPyS+D29NRepRgxesA30woD9UfB40s/js7VzAKAsXwPv1aucqK8kshK
unaiNilpAclVO1cajFgSzCDBEGgmt6tjv7Gcol3VfMyUAcwtr9m1YWM6rVxc
pbKoERFoY1WTpb2BWM4hbrJ50w1UnB9O2+NnsTgEJsrAZVI2ucgPIjjnYAMp
6XzCtefkEKhUBIGOv2oOekbl7TV1SG8XFHG+bUcgIU4uqOI1D2g43GIXUdFr
P4drdMBrG9wBgsUZ01nvzQeXq0u4pAmqIlvtxO1O2W6z7a5dwm8+Yz0h71Xx
dhPTWzqYoPyUrROiaWA9883UfPPkfL2JycR7RjIvcYr5WrgLzoqGszb6Dr5B
mmYbnY2JRhmggkOPAhx/TsYEgWQ8kCU9FCHDvvcBz8CqqGwWfBsFVfeinqaN
DWbr83JxSyfOGIrZ5UBGc30Lh0CD58C7UZTChfvqo8FqUJbnjUEAduFfVrCP
xa7hMrbY15zYnb5q9yiHK+f53fNU0LYWHYij2/UzG8mM9ENb0Mu/0+CbTc2p
bQuMhaqmRvKTQ7zc4vBG09aXJd1nMIeXoa45UtSFmrRKETkoYFcNBvsLE8n6
FMJJxB543FAEE2f4xqxh7AscJS8n12mO6uPlvqzY4G9ikVrGlKL81N3L7FEv
hw4A68iiM60ofc+qai8QKSuIZE1ykxEENl0MJDEW0XbVYqkue5dW0nwhl5Is
V4E4eHpKsSmrgsxd4ta68e1ZUgRK/ZjpdN5mJUVHgrtIhWqJOabbFVmAvKCg
qZfRAaAdGW0clxzZmi+gwfS9KFGN/Tb6h5Xo5LC9h5eoxj4BwUk2u94j3sQC
DGRSlms511/jHAUeZCEPAMLdV3q5E9Sgk4tifk4VbVYiL7UcSMsYZ8ME0HTd
x/TOdSIlFFVUQMVOqVSFUk9E/GBSYXw36LGfopT1baeUms0G5rWwK2ZTwoIO
DWMURAIUZ0t6pD4rqhk+6pGHAd2u8NIBC0jid2qzfXAoIqavHSJjeXiqDVCd
2TgDnKgXwGQNZeY8GwTb6XtWG7WqEt/xSRDQm3RGmVvMOruLQJa9HElCKskI
0fH06I/tHrpfjoC6cJtsl9w7t9D86L4scQpI+sNVw9LZ3EmR8NrgmtkyHOPb
WV6dkh9bPH0zoB52mNKje6h6ISZMJeJ6UlKpKkgtN0IR512ZZMLlgLVj0HYR
W+YmTE1iSS7p+9ZkmsnI8OkC7gcf6S7CfoeTotm6OZhHMgyyH8BQyVj7zgD7
TIfu8VOulpspnFysvXWCJLywqYrwMB6o8ijn8mHd0L6CdZOIZzGQlxkcuW3p
dVtexDlmwlVFjPxA/I2RwVs+4mJRYW8x26eelxtgk4jf/3nJ0xHX/+4gZWL9
3wGMdPj+O4POu0AdLwD/50WlPyL/HVg1FZH6DmCj40V/XnTM2cL6zcjpC4dr
TkulSYe557zzqg0HGQHKdTPCdNCbKDfUq7Wvf+JxZNToFmMGXE3sjcbQqOP1
0SuuTYBylbtaJ9Idhjm5OjjvjNOy9K/nQj9dh0OmBffVYjqtWGdwEzYWF2ds
2YvNtX1G79x6bdLdxTpoJCyBWKo8/xav7dEILqGGImCnEa7dplHlQVaUodgU
2jNcMTdDOsOUZ+9KPUwrqzxrTyY5p2oruNN9fY1JbXt3bGOgaV0pAJrSHEv0
c29eZbGYBWmV02yBrzHOL9k3IRb5vRFofJTNXfyayKi4R+OPqin+C5+kCN9b
u+3zXFIO85nG39wjxRDCJc+ch6n4L1J2eOODJ+nhS/OL6joQ45SPfwe+WUBv
iy/Oxbo+i8vqIMSzJOLuOb0rFgAZR9WqDLIXe4mLwzz103KxvPjNfStsE9n9
/VJBphiOX8WbL9BxJvzK8882ee+/iiLqu1Mf61h7FcHoBfv9HbPV6oyQJnLW
g76X6uPCr3moZE+VSjIZzXOr5LhRAkv88RYDBkf8z5JaM1+b6PqX5Au/JF/Y
sPMvyRfeWvKFvCPq8qdLk9A1Ymc6gm4Uu2Lnu3oMCtDu6dwVI93V5Z89/LmL
Ln1hyV19+kON1/fqCx5O9l4TBtzVZ4Ow3Tw4G4MSD/YrOBWVZp+zWk9uZt9l
Cha31y27PvowCcZCyL0fvfF1X0RHf2tm2SlHdWeR6Lfur4X5rYEI5ZLpO9bN
3iqHDkgKD9S7D6c1BuiN/rIqEkisO5LxE+1Fj5TrMnOvA8DBZz294VPOV5el
Fr0aAHKReWkfcQxWBKgfQD15iWax+gwWq7lcf9Lpzlhb+a99GVP6OovxyOae
qRO5V9bOXQFIrmAv9VVnUvhHcvM0bHt79o4gl28JMM6ZfX/F5KtMZLo1f95a
1Rr+VrengVWnVBkboYXuBVRYzZYJXAZVtuFvzbY3CARY7pxV6MVAxNz1Gziq
hDB5+BBm7v9smCvBVLrxtGqb1QJfbLEDpY1U00oV4+GvC5OECUn0RTBOV0oJ
NCaYhBIp08Xovpf2L6zDS/kl3nvPFjFczcreKoauQlN1iU5CgbHTFEck8yU1
RSnMfM31efC7al4u5TsvrTgG7H306ad3b25Mb7Mn4nb8CIu4VrZOpHq89rGy
hSAPM+59/+AO9N4TWPfvH3wMf5nfPvn4wP3Gac7NXx99/Mkd1/Lj+x/fdb9x
lK3565MPP1YtPzm4p377+ED3g9/u419IHvn93p1PAgtQ9usH3z58lH/16JvH
z44/z4HFS1s9+8uDOwcHo7t3RncPuDC1WItsoeAfMj4NR5IUKr87vvsZfOfi
z7dWzfwQmx9SZEt7+PpydjhvD+kMFTBbn6Es2X8/f1EuZtiJbL2Pj54dscMM
3EbgOIQ1en8/I/MvLBns79J0e0wMo8sf89Jyc2anYNV/oD1iIfG3n9GXdq1l
G20JTxzmD9hKT1yLJe3zE4KFBrwT8bB7JGkygDfGWwjvJsBAcaiHA37fPT7y
btf46XHU7vDGwe/fbJwM/bnOi7lxd6G+jx+dfJ0iQn6E4RJ4YqG3EjLisa17
unPy6OhY5Ogf6uYlfkfljHgkMvhOWJht/eGb/A/l6SH889cXy+WiPdzfX8Lx
345xsmPAZ//qfH9ZFu3+5wLwm/xJ1S6hx68vCxDb9SH++qVp/rlkEn00reD2
iXBPiqZ8mR8XvjqHHwughR/HsE5fnuM3Yzh5YjAvipdle5F/A1O9qLogIfng
5y8nVTup03B+X7UX81X+vHhVzPOvgJjFZRe0V6f085d/Xs0r0DsRwxjeb+Gu
Nm8vVlhB6qIL0kULPwJW5bxIY/XH1VmJAR7VqgtE/pqajGfVitamj1aPz2Hn
fNVcty+rSMUw8KrvT7nBl9fFRc3EIvZQpjZmEe/8QSF1Zv0mXT6ePQ6w37NF
AuXAPrFPE2hJpyg41H5a80r3TB4VntpUPtzvoU1G4DH6zrOnD492xzLjB/Xi
GtTxi2W+M9nNUabmsl9WEsdAb2MgQjGkVT0MFaK1FKvlRd3Y8KYJhX7nR7NZ
TmCpMB36qE3NiC9KdGulx0GThAiduDCHggt9Z/MUJRtp91jm1mJGMa65nGtj
IqTDGDkMXKLMJItV0644BJup6fxKGQY/Ik7KOb4jlUhL84aGhy0/8LwoX1X4
DvTV8UNgKm7blkJbQIwyWufH4mV1fzwxJHD0227zJ+V5McPiofzK2xoazDi/
EywhNX9oizbT7ztWkCCYsnSiRLAmnc0uInswyTFHWFStp8AgdSRhD0jS/I/w
CQa6uroaN2eTUUk7gIbCIfbhO2y9+xm5DRBdAEC1bMvZmSUFP/HMaKroKTth
iYwn4D61fzQdH6KDNZ2gCI+XlHV6aiFukOzHeFljRmoOXAUIALIcB8C4lCg/
iOE/KEOP82qeSqodbL9Ync6ETxhIMIjAxytDyauUO91CTqhwR+OxQmHzM9dJ
BSCbs16tAR8c6aMNKWKDq+hUe8r7PX16m3gtI5dwPo9dmWB3FuIZOy2Nr+YI
/R15OuQTaFwgfxA49GS9BScVHEf0vzyK+yf+C7UnmclNF2U4VwEOYd5SMY7A
at8mL7+41YcE0Z7fLntMYlLlCMhsLo16YnDWwHKYadFXiWvmZ/p3VHEOK7hl
Tqd4ZV0zwW+UKie+2i7RUsHhmeQ4gPiLOVjNYP/99xHS+yrU0zAM3ZthiWlt
WUc0X8mEsVkw6QSGR0DWFeVAdf3ZK1xxJ+NprdSGQ8mx1AJ3BFTUNrSLR6bl
LxM5ijgnyAMTbSR+IByU8Pi5O2JlBdCzm81YOZqxzNdjj/fYBRbR83BV9hP7
A1tV8mqhvknjz5v7uUXE4moLhJjpJGjncLNDKmPcsLEfxtPuQcJXTvoxuuld
NiQdOjj7MwuG1gtw47GnsXiAeq48u7pZ9EEykstjQjIxe0vLduV+9pOAIOyc
YJeOMC9/GGWDUGt2WrRKknQA+iyiNcfqbPkdZzWFwBsT0XRr7ZbqDzJDoHt5
WWGciGMJGcU6ye2ZMDB2by9M+AAHlrh+1qmOUwxiUVkbzunE865PXueG1BHn
ZklJN+ctqSY6QlRGdTNClWJnPN7vIOxevuUQ/CDf2vYJ6kLdRjLH7d0ttXjp
7UaUDQc0VInj6dwnEVm3FS49LFWbkNq9K31kxN+ZRN9IRp8w+sHhwsgmOF3H
QwUCEq1zvWj8QSVTCkPXDGug4k5a2NTGPjmsyKvIpnNpTctx/qx2QXImQwur
7a5z3dhbQ1CQIzHNVEDVT8pp4dYFPvN0CbH9fxYJgGZV9m9zovo2ttsOorAM
9b3sGTK+OjspfxNHT3JCp3N0SxM3MVYkR1qRRF0TpZoDsXPy6OEuX5qIdttn
xaz10JmzcRsjvNFLjeq8uf4yNt3s9OCPHurKS4llNMFpb8apHpp+simJ5MPc
lQBUk826xJJTaMeRwaFntzslqC99MfB04A4urM2yDQvfnBallyyPo+BBzUaF
DqCjsFdSKtQOlFzAK0l+Nd7LOW8jhYxGEXeS3UY+Xqx8pDDsv8/3Vas4EF+M
6Fyr5rEwbhYT1IQTmoZ9kenRg50bsj04o0AyibMzmLLYlod5la5LaTW6oVk4
I+XZ514xXqDQRC5tlneqs9FZWZCRxvFD2gvOlzjhTS6+y4kXpLnBxQD3lcgj
odfVMrgErlEqX9jASorwZzRcToiOordtufS3IVE6RFmUzc/eMmNJ2PogHdZo
DzoOVCuwKrDUkxzkIqOWq8Ho4Hzr7nh88OGHCcqKkLjbf3wc2zjAIg5pNeKt
I6bVfNKxrSnlQhIlBkftGvOBn3rmN3LYDdDTjnQOmyCDzdKkdAdFJ9bCBp4j
aYHp1/VDkyifInb6DkdrexLfo59A8EUBxv2c6QKKcy+g2L9kdQHVrBrpMms4
8eR2gc2Wlm8Q4WxhuFDn/isrZ+7tJuQjmxdBkvy6NHjeiREpk1wT15zT7nbU
Fz9kaT/4oB8QRGTXioIVeoZfvw2frA9dMpVjtQGCGI3Hacqi9ewyvcoUfnyF
qgN9BvuZ6nij/t1pa/HmIZPAcdL2HDUNHUAXzcW3UvQigDtlCbe8FVmSU0Ye
RqqeTFYNpQldhZ51eZxJcB326HALzHy5iHFnBzIMSipQx4OGw+ZhIQLa9uLM
OVUAa38Sa/Hz7ZsKux47bi96zwKjlrFzcQLRDbEjp9t12JHX9SDcnmDA/uOH
gku85D34iDtlhAg7EQ5mQNgFI0AAFQXOzxbnWijofQ1lShqhG6UgeKLuFiLt
5MJVDrGwYimmpv2yvM63aEGZIgrB9YKsTeeY9W4vluLa+TUie6yH4yfUxZEo
8l+nHI08ndpfam8SdCLJq4E2cfpd+LaBBHlzJLVr8G+8awJ+4KpAbDpf7uzu
j8fBjL77Ey/IoH7c9Du6YQDqA6lhjPFu+6BQ56OaMqBTxqJbbKK3TKjeySuK
OUoMJ4AJ3Rxg/f9p7uG+xjPoPm7PhkSm2txAMvNwIqUzhnxzOfOgK0VUl9Dx
Q8sTQ4skgtNhPi1fD5dCQRB7KHQEXlrOfzJYzL8cLUW0W0Xa6t+xxj32GfhI
Lo0vJVWKMSVRnSfSwAsq+jM3V8iXfn/Xa6fdTW7GHnNKktS5SX6fbwWNtoI9
20UVoIsJeTcmdjWSJZIwaLihOxSueCo6rsdvR6urM2uMvNdMb601OJqv7vdZ
0CO1B9ZTw+ij8hJo7PQehuOoDxdJs9uZn5l1HPweJq+zym0rkfLBB+uqXK4u
Jft+7ZOFchNKESCdNDX48O5J4uMnGkCM4u4+ihECcb6CcNm1jL6JODytInWm
q9hcnj0Ppai6BA6Uabe5C0bCe8At8K1dn/5XuzrNijaR6kweLdYi96aX6+hE
f6PL9QvGRqfU82ZFwAdoKk7h0EWbXd3fIZba5y4hGluSVPWKyJ6jXrJdtx96
t56qrxGBM0tEeQoU/VOvhd0G0PxsVpDDIKfPoMz/Yr4wQ8NxzIN4V7TIwSpn
rzMMAIispWK29oprhyh3cVPSUKMBpbg3fgELOq7m8kc55FrnE8Q35XTNMaob
PWCNBGkSyuvReihwFWp2UFzSK3Ex9w8VD1+vVnWIIMf8OzRWc7SLbl1Ws1kl
yWXa9VjS2Y/QddnIaTmZFY0Vq6DfHX+Nb4HHD3GbsPKkt71xGeaqQjObz/FM
bOOWADZA3+s9O8ew4ovLN2Ngv8B2ilraOiLUGk6nigsF4ihAqzPUgEVCmxID
dnXfbB5ezffUND7xNmD6GSm52+4OY4ej58cS72ns+SY3jntf4gQy7KVaewGH
9Oqky/+Z4fkycEZuRw1dHExlmza/62mY6V5w6jfFSHWC+Y7zx2e+F5PK0L8H
v2DaXwXIFmiyITxSOU/3p5vQnpRcMQVX9kQVpHcJyXvQgpAIrgiuQMfteCDU
FPWZ1XsYveg93IS19AH6ZkI+hDRcyuue/G9Una6HiXlNjh45r8doJxdlLDyH
zTSGs8FkE51BX3WedJvPmKEMmPPf73DT6P1yuv1dTjcO7/k5jje71P/kB3V8
Sen3HOp9aE7k1DZg46tJIg9O/7GQLlMYmANiqKFxU7eAL7a85cFaw1siVSWe
a9/9C38YbhTVZCBZLLMctFKffHwQWh4CxN/I7qAqSBJVjFZkS+K5LIdeR29S
qmJQ98U+MghudKHXc/aPq4F3eD3R8GE8Tf7kAgSTesM3S41U+s3jVqi5vSV2
T43jGmfuwfgy6DfE1crQ9Ja1mQQ33bt6F/XuYvHkGwmhbHKaTZ5eLZJ6T2yw
xzEtwS97/Gfe43t5vBLv2mbvx/Ed3fUDCOvvwSSNtdo8EFWpd7EZxv2IKvHQ
YTW/KF+Pbrk1rRjZnDk6sH7rD+WiEkpwnEqN3akMSnCcg1DnqkK90+Tc9V7m
QfQOOGKd59QabVGgkZPF44cJX2BdQvQtjRlVO40XVyEQJsn0seBcAptNtq8I
aooCQbbNN0BAz3xDLHyvaB+Fjpgk/4q/xjG6CEZwPuBwk/oJ3J2Fojb346Br
1JEf8OwI68pIJ3xj3SHgmvVeph7YDjJKXDM86YLrBoqLVA9/cjUdXM1pmaSY
NBf1EvkEQy200HMlmf37LqmRET6eqGYPu9BHrVtAG4S4mFIST4WkDO6rUaFb
RRwSrBg87ay1eVID95FYtRGnycc4itiZ4sb7q8fN5KGraa1998i8LV9gNTus
kGAT9Acw/DIO1+XSp45GxXc/MWmU6VXaT4vcfbOIN4StrL2eTR/rbAjpotpe
QW0904hVqsg/c5x/pepSBiZ7G3TaWW9botja4rLUrX0kzLJ8NsTYcHDno/Ai
Ej32dllbe+ytPfvrEYFvO2ao5KQuUe4zlKJxt+ZGsa4jd3zHE7qtRzaHIU24
APWgbAo+QuSEvUx7bt7OD9vDaG0p9B4cMbcMjvwTUO0FgR5MssgPLZGc2kOu
P07BxnO7zs7rNmJDn900IzLvuaMZS47oYiTrdfLQBzUMCuzWD7i6UUcZPz8h
l0EitMH6VDUpL0JEIjW/x9tdo+BVa3d1h1iZMgVeDh1xR7mNQnS1BB3AZMNk
jcA1fVzZv9wk/+7ows1tLr0e4BxWR6Xyci6Vpxry6Yg2f+tlxk01Y1EvZiDY
rYumXLqcAXiGwe3QnARSko8sHBrE1/SgXFwuJC+bapdv07LKN7O6bbf58ZeG
1UDQExaEeLWYldZZ8LRoYV40gTvjO/i5979huhtmg9PSBzDPJbkmIfHt8fOv
JRMcp9Wkbx8fPz4eRwQ0VfQ0G0WNjl88+UY32PosU/eHHt/b2M3UbxwxvleV
LVSvqbWrj2a3BrvvYVJOXHQVXm7uZcsC865KOabyVVWvgJD1JUANFbc8Uh9s
tLthDPa9l/5O3KTvP2dBwLtRYRtgh9Itu0DDQHPv2c/pGuXkYk4CdI9rWCvf
Yy0ASAGkMFMFpHhJFZuoIYjfxloXy2JyYSbi2p/4AtbOHxSCJSqArqjZagED
l8Wla+2gSDdHIH/lZ8UpXM9ALpDDqL6OBuutKtBFC+4LwpjMnJ/NHsVmd1eJ
1f9l2YcvO6basAuvBvQ6brrwUXYzywf0DaUzU/Xr+qNuxQ4Z+S2n1Os3tXFo
dZrQvlzUc6Sc5GNQecfoP/s0O1ElKGEfWS707CTjQv/ZL6UWEVh73S7LyxEc
36WvhXDmvIT7thsrrma1/o6GKiTpQNQtl26JYcQ8EI3h6Y3J1BXJelbe/aYn
48X6zhuaJJ54BZxh+hrwBpaG2Ezde/M/kg4Mj263/NY2U3p0S4n54gu/5HTU
K8UId9/9xRK4HC3qtvJMsmoO8dNA7xy+Ag3GgrOu9ib1GKGFKV0LjLbPE/h1
2eD5+ozJxo2mg0nAg6llA2wUqvzZBpyPKtF6lkeo63k9KqP2Jqx6FFQbJ93t
H4hREd81HMq+nAmsLUWRlsORnzORCOyaoSd1u3wLm4LGU5YpBDvOf9faQBPW
uzHvzSI2buY6JALw4ZB5rhVJdR/5jibhyHCA99F03cYIVfQN9kjqhty7XbqS
G+HnNgmO8JPePj8H84eL2JO5KFyk9VmM1uEZyYVwcfoMJ0pvkaIYab0lfItI
2yykUZjCvFNXIbyjZ4XUuvZ4b5rJWwU3ji5Lx+VvElA2NLieyj6+mX8J3GVn
lN5xyYLT2A0cDsSI8qbD+c7LQI4U82tyahWRg/6Rs+qsxO96kO+w/m3qNuAQ
fbzx2zue+t0IUpHLDXEzpjTsmcroECSTjlAktLCeSTdaG4ctyhXkGdwmhh39
JqBRj2QTeCVnEPKlK9d5e5ci48PqYK3xLAod3hMAVouBFHBuqr5iSWB6Zh4V
Nnvj+a+feVec9YDZKXT7pnaLtzydwDDyOXHNdAyyLR896DHggS3GLj4LKPWb
cla+4qILLm2tg7zT7gah45wmvmjOyyW/ZuALKMbjcFQ/vxRYSJxFH6Ds+VDO
nPV2j5St6ZTxwR+eP3j0XHz1JWXtvk5UyZPEugX4a+JMUbGCNQiWEVeuS+kb
3ZwVxdj6wCL22uBV+URiDhCcVNWjabvHFHNHs2Ij79eMzWqNeDbh29UtlSvt
uGe8xFEsi12OU6vC4YdpuE6rWbWMYvvpIEwJdcZTDkoTipVIMJCS/KHsx3pV
azRs+8Ln165Nn1S+g2Nn8ELPRvuaMuWh10CtBnXhKjZurpSkvqF6oBxz/GkM
TnJqG68Nvg4FUCBMlZ6aFlUpP5+UtPJquw5/vQTVnN6RVGKKtk8TCFyvRYfV
gwdbI31L6d0ZNoWCRsqd92mm9bINXnYsgd8wzmmaaBklguwZ1qbe7WpDJ5r/
Y7yCumJuJDU5n+h4vM//l0oeyrmpI8+dtQlObFZPRXblNBESfAOSDyPTGkJ5
RzOcWZTMe9RRaDiiW0S5zYjXTz5/L9kNM3V4WuL25GnJDaOb7EOUZ1qAuhQr
Ovlqm4LCyepEbbD5nTnXrVraeD1N7pM1xE3QVra5Xys6AR+T2E9RHo9OKXKg
STXpp7TOD2Wpm6aOn1JJzZK8Yz1ck3Na40RnPuxMpxmL/68n1xlnku7g3dt2
7PTZ489N8tt1xM65ao7KV+0n/PFSAaO+0YV7e1GvZlNiySUoM63UR7AuCbCx
OZkJcWgXFG+4mi+C5OaA3JTi6NS8w2/8v286xHNqW6RlzVpJK3s6xb8MUW/h
eEo9e5qzPIXgiiYBxWYB0NE4zv4apXYCpSkGwoTnHNCnHOzcVJOleVGt/aVK
iCsnLBMptFiTF6+aZK6pll5xzUxiCEqfxumN899yGjYLVZIeYMmNWdkmEOR8
35goaSRFrajEYFuIel3wBEn1NlBjKHeMf+VlTeqSgcmL9li2Ad2I2NMzsWC0
PpjMBrN2oxfMdUAMsyE6+SbeePL27x35Pfup83zokKHDToW1Z8Kas7fvPPB1
x5RYSauTNNuB58SAUyJ5RniSfI3oDwX/WoGfEvdrT9ZeUW9FvJPlaWyHCHjN
sGko6dXKe2R9PGW2/VG+8+6VSzgfm09fwkD8rCXoY69ejdlugpHes91H50XR
kuM7rMSM8j3ZoqIxu6chJC51/Bl+EKbu/CpEsOdAHHL7DLbr5vfP3k36BjfQ
Ljnyd76DDrpfDjdE+HCjq9bQte6+cG225t6FZty3uD23kHd6kX/WpSvEmVms
Wn7avv7VkgeHiR+shZ9qDhMKlsAK2zh3En/WmoS7HlwmbISLbcKxCOvXvfWE
EkHdXTIPVJTVsn/CsHD41vPmUy5HHsQ3my9ZdQgxOTOWHgXsY8tmKVstTynG
NS8StCkKdFn/YQi79EB4c1r2ofdGdFV5LdWbDgHuo2Q8Z/JeArFwjtUNR1Fm
ejvrDhUlXURv0BRUUT1dH87cPswKp5QwCsVANQRdbglzLmMbtwwC0gxQBmAr
tWsgMQy/fNFwopZvStM47mwYUfF8g5m9MW3Ld4a0eNQkPIp6nr0GyCXt2uFu
Fktd3VO2VNTfTXIA9vIW1HMipQsjmw9VK+Z8jDa1YuoqsfYqgJOG6azwHZ6e
qDGjGugak9K8WXdOOJg1lyjzU0TusCsEiffdYZcjntlq9o7NC43egtAG8/Bz
X74LEyGM9PqUPpJpIKKitBdF4+d2VmFs1v2xD8QgJtjo1EvXguunWIyh1Q96
+XnP8kIMwWZVbfKIqPGku3ysE7nrUjQxmVrcECalRUoDYV9d+/tGQvHx3BgA
MXYUDZI2mMZnbvHIiAkzjGmEP+LuO5eHWqXb3dOp/9kivYaBT4x/3tqNtKzj
3v4sjRY4TNh31xWg/7CHJ1U1Svt33rIkk8Bkv6oNijLpeklSaCeo7WOyBppa
Ezr/CXeGPtJVGw0/yLdsjIhtuN6R9Ccp/NTr9WlL9AxzLH0LNb0eK2+b1j17
HD969vDRi+9PHj19/uQIA2A4manPn18/fnICjY6fP3rguZ9OLjC5NL12FLNZ
fUXhdUD8JuJw3JylKvJNlK2WWHT77TiHputavUkigqCAlJRT2qCGVFcOrlsj
ZeLwiMKFFIUnuTExdTN9qoeLK5n03g7FUxme3grhbZYYTpVtZvp2sHbi4002
k0JTebHR1mhKCv30F4L8nNAPsn4ligM6ZPtmibczv1j8xRPlmiT1Ep16/rIq
hq8MboBHJrWasKPL/vVmiL9FT12UlkMclNfMdKAzLu91k9kgvmlthDobNj1g
t8LfZVqwvqAmVSXe0FcLVoY6XQF5SZwzajyj7nsj3UjM3Xsj74Bv2V1V+vZf
b/nec/tByqFjgHidt1Vs3BwyiPQdamftXVLx5RWZwXmqZ+wFL5cITFRj3ECj
M5yz2IgCKod/6AiV0DrMkU0bapUIblnDB+bBcyPqHdluVMEQAwzRG+w6x5pI
p6BWXnB+OVedNHFPunD6BmknQhv7oIgqdrUkF/AOlwNyGV/MinmvoVwm6t5R
Npyq52NCk53Tv+g0sdjagsQpPw+V26SBnU4ok33rs7wcn49TdIiB4FCYVSFJ
nIG0GMTMkiw+WplIxq5Ph9rKRe/++GB8t4eR68lLzDdRn43koh2xcTIHV8cE
koZOr5pdYYbkosI4pE9w66MdGtBzDzj7Y8aV6byhJoB4Ew8YjRGqJDKgpLjq
6BxcRINZ1PpOPXjpfKtDsFZnTVn+dWiStDdYIBlnDXG6liOxAj6EALxPbvkx
vuT7MEx1QxNZyVYIvEgZW4dfYCLkEe+y9dYXKijJBYJncy3BVAHZUGSabihJ
jPNd4Z0ZQKoZpkGPxZxBWbrLTbasyKTngGC8YNzZk9Xj/GjW1nv5y3l9Nccc
TrYmGRsS0P8nBqFwZ8e70N7gIzhEQ1E9fjl7eqfNZw9y6uY5zYeeNf62eAtX
mRDarS4EVLSLcLksMD7QrhhdEhI6lIn5RhalNEaeRmXzmfncOpSiHx98fNcm
Mju4d7+bnL3PxW81jaLvrKYSNcaFfAgTn1z6rdF5/jmq6/Ni3n/q5DtP6ud7
+fHXe/nT4137KIpVBpYkl/I/nLygskXBmdPAkuFC4OvqkkqfpR4UTfYsBzdY
+ODl1Lw02EENAG+4vRAIChMTYGp6WFdlEJ2S7ePOmP4ftsALqg/F0nH9avQ8
9iLoOQvpHRRJeyBmJsWKHxv8qUJTUIPQthfTxEYkGlFnXbKx5lu6fPXax/mf
lYPlDuxPdTMGTr8JDmdgxUTBom3CwPH17RYMnHhTvAUDJ079WzBw5B2xOQPH
NLkNA3tvROibhc9anMxRF5Ie5FD34vj3ePGboMP7NCcgYpBOp0XHj3lCGja0
H+amzVe/ybeFTtthIfh1SpJLvapcfkh7W+9BQs9d1Xxavh7umPmCKCT0oflT
vvSkI6YqJoidhDwDHCMT5SxsDpgXzx+0++XrcrIiApsnQ2iG6fhFLxhp106h
aF8BsxbBEo9ajdZ3iwvSQ2qnUbVggKib1/v5kZJEqpR0KZkBKBZEUgcE2/t9
yTKgnIvkWbR7ebZwCox1kmEdUSOXyY7ZRX6TP//8BPE1E7wJ2UG8VAdxgmkL
w61hBfOIMaj2vModnRYnk4u6wpz9FWbYic3aeLYUyxpLEzSrYZk7viZQAtjf
oeTNUKB7UVTIAT+SL2gWCSO+NmOQU+g/0Y1fH46EJ1kx5Pzec/YG5zmHznOz
WSKNW55OgdF99aJ5w1UxVTDCe4N7q+4jKKWv1WToXJNCXF1Jfob5UHjlFVmL
25QdjcdjmiuVH/Xt74lrfMUHXxM7nMPDp9+qbVaLKK6ID99p2cAP0xE+R4/q
ZoRv/DtwHDPovTwI8vog39q2hTec97fJpbHtBzGnd0e/IdDyvdHenAsXFZtO
WP/9tBqBUmj8V9nngRXQ01IRpT9XfXQ29DrS93LBUOf5m7W8urmrvD4LbrJf
P/j24aP80bOHx59n/24/2Q+H+Xtn1fmIsp6Pllhsdzkrf7PllA2y7cBpBv/8
16Nn38jBtgXny3u4bx+Wr1Bk009PsVWWIa5T/hoaqE75znZVLs+wxgL/vr3L
kFsexcSvWrkAN1+QqcU551YEYNxtLGmIBKqcrywuJQt6MPIYsH0P8cP2xyCd
J5jPEL+kSTw2qTBbxB4gnzbFfGKDjHn2hElJ+bxs6kzxmkYTjDAxCWqLZ/aI
kxy1kgHP5dxU1T6g92GWvZ8/LV5Xl6tLXGdQ+Emhtf5xe8kyAW2+89WDXej6
9aymDFOqtBiuvvqBRn6FaYvZgQgGoaoAHGAMICwN3KVKYOwYj4LdZNZYaeUy
ecoXMF0pEkDfIpZFi3Z5VpxPi8lLfOWWkmiOHDvtCo3o7LaGrpbFalnLYbVr
uIskmFx8Q/usWh1TyQp+WrHbE93H5PdsiwBs5e3qdKRr9GIE6RVl7P7hB9wd
FfEsNb65Mdw3QVcR41yH/JsJ4rSYX9nlUqfKITARr7Fa2OJVUc381Ua76rQ6
I+McPixJ4DYxy5xj6ymV+GQGc2c9aefBCTKCLcM7FQst3oNIELyfPwPO0HzE
12MEuKjr2R5dvfdckDgsKS5AC2vQHlofwhUSr93Lzwxjua9wzJbKh5vvYOCd
YjIpF4DJflP+mWzvuzhGSeWcdVPQpad/hkXBvEmKZAb3sjq/OK2tV5V8/VQz
mJJr/57xvj/MfYED3Yw2ztWlTEmOD0aj5kpxjpO9Sj+HRjm0Ymgkzb2d4n1+
/WsERn44XrLNzz/3mwaxEzREzdROwOxnfPGCs7P4/HOPJEbWK25W4t6JJv6F
pCdsjCWsFUl7kJTwz/xhVZyDjMky3hpMjBG2urmhfSPGLWw75bZGjsaHApXO
wwqJ6O4oa9bmwSkxRneo7bG/vpstcHJ5fzTfW2lIW+kLTXL1POb3AdSXxQhk
FnDsEs4F1atZGl8h+2vXeOakowG+6BtvtRjZbu37HlusHQ/LBnT0XtsXxu3q
vravpff7+Z/sv78zbeJlCfldfaqzQ9sM7x4REOAAPm2+UD/9KL21Bqaq0ej+
OypPOzXeDQBBs8MdEjRecvtdv5Wde9w0CdWicLjTD1XTVbVMgjPT1jNXfTox
SGbvT6JiPz/01w24SeJniZ7q09UjmlGqc2LJ4jILuxGHMDZxS+Db6MvvEvw1
gBJ7Hd3cfHikJE0iOmoixjUe8tyk+4jZnJLdr+FvSsnfxdis4gFl6B/fdTCT
aYh/cv7fzqVJjRZMjprYxcC/ulZBr0OU3X89FalsQA/5ek4K+0mI8Lzz1Egg
1CNWE3hEJ8ggPPzT5JZIhOfCLcEkTphbQnKpdSfFoqCcpBWxauKH6+8ihkxD
uMYG6n6f6mYS/IYMke6GfbSK53FijQKhmL7Cy1Bb0r12lGhqW5MePjK3O41A
tO10N7g4LEfUFz3RQfH/YlC3OUinW3TzR2uq8/Oy4Z5pJtV9LS2mo1n5Ci1Q
TVngorq/vou6upFtowBJXjhgJrppzEGrcPwXKZH4v1IaSOuTFPSDcQOzWbwC
0VjYGv3Q5uQjMaR1NYcmmEKHbZqui20doxmVytUISx03BZXNR4RGyKzv7hwx
Gk7+62ZXEzh6PvbU+5oiOXxmDbhV9h20wLJhMtsv1jTD6Jqmvv4inlit6nSR
KdoHML+oF/HJEVU/9TvVq+V5jXLJasEIoksrNpuV78zmW/tDNf3CjHlezs27
d9TMHHEddxLc1qflLJqKldRkioPF/StuXWyqKGQK2Dn62J8Wij5pquTJGebD
ZpgPmGGemmHPvDJ6anOyYfSaCsHYHPpTdZvHn6/4PU1d8PnbHfXy5dVXFoXp
soDTaQTMGfz4owGAT0T2Q1b4Tij4AmSZJ4Cn0OzjtpRxQdkDErZkNgAoa7I2
E6CVAc0MxpYM1/s+Y3JoS86rS6xVy+aHsxpN/2ifsinoD7NsxNYCZSB01of8
hx9+hc5u9+7fu7kxLdFUacJ8Uo0PPr3vGhtmTbT7+OOPdDvdQqoiTlYo5LSN
Q0z2Xz365vGz48/xUbTMt/w5f3lw5+BgdPfO6O4BGUm2xCoSGEXoSQJ/H1Gh
onqe3x3fxWcCVHrbBd68t1bN/BB7HZIFuT18fTk7nLeHFInmQ9v6TBwSXpSL
GfYl29Pjo2dH/L5UtBjbBJNjlwRMJlm9FqOZ6fqYlopMxIwwt+UVtFTilxQL
gB82Qp9F9Fb8I3wO8yNmD3KHoKcIMpSeiJ/8I0m2ruo9GrdtNIG6JwB6QLmJ
EOWlTeEpqx5gy99244w8cZg/4MLHDvETgtWB+Fhw8zFQ7OzhUJ31jA5s3kUx
9xLwlJ48kDGTA/u7wxvbCMseDGDv9M4ft/ELHiE/grPCrUvdnBdz/fS39fjR
ydcpgkFHUOfRjQvLV+E6H9u4u52TR0fHIvj+ID7f3+A9kQai54AJi+itP3yT
/6E8PYR//vpiuVy0h/v7y7qetWMkwxjQ2b86B4WkaPfFugsd0BIPPX59WYBM
rw/x1y9N88+lPN6jabWsG4R7Airqy/y4KCIHbgughR/H83L55Tl+M57UlzGY
F8VL0GHzb2CmF1UXJKQe/PzlpGondRrO76v2Yr7Knxevinn+FdCyuOyC9uqU
fv7yz6t5Beo0YhjD+20FOnZ7scqPL4ooFMxAumjhR8CqnBdprP64OivRjbla
dYHIX1OT8axa0dr00erxOTDZV811CyvfBa/6/pQbfHldXNRMLGKP8Jl2Sz9I
snTHuBP1eEpb2rxg+m8CYhziK6HUj37+oOVQFOlN0XXYC64rredR+axcYsiC
2qy0kzBRX+nz/86zpw+PdsdCiQf14hquYhfLfGeym+NJkss2woANSTOAN6QW
XYFsFPUUBDwDKFbLi7qxjuYTzASV50egghDYVh4yMXUyd3hRTvHtEF9MKBkU
DIE+knAImggE+Oa0mmO4A81zj88Wo+DhHxgExUW12OSxh298C6wzTM9di1XT
rrieDROyXbEDo3Gi5tDuSTmnh3mkpXn4w9OY87q8gDVCT9Gvjh8Cs3HbthR1
DRCjR7382IYbTAwJHP222/xJeV7M8ucmNKM1NJhJgZeamz+Uo19+37ECBsGU
pRMxgjVpzHYRie3MqU5YwN9aS0LqFA29CYLQzfGkDAa6uroaN2eTUUk7g4bC
IfbhO2y9+xnMnR1ZEQCnhLCk4CIAM5rqvF4CiuSHhIfnPrV/NB0fomsyaQoI
j5eUvUWpBejep/jqCovVlJc1RsuyoxxAAJCUXUwDY3XaxJ2UOSjg9ZV7AKPv
ZLaL1emssiEtACQYROBnlLidVil3GlW3p9xjqk00c53MceX2t/Y92HpriovR
WIy46lJcyNyJ7fFKzBjJzbh7Ug+tkk3xRdyaxZR1LXOpTgKLgHV6SRR86yih
05OxJhfwUp0Qdsx1rmvj3fjIhAaHt4yMgF+PR9KU8ZaR4QzoaiBg/zMU9MuC
FBhxB0rj6vMG+u6eL0bmIX9kHQNGkmCok1UemMMLnRbgdLlkhQ2gObcAC81M
wbmceGefx1q+ed0nXTpQkcLryKo+zMV9m9pup9IeUvy9rwhweW+TT5zmlj/+
5rmIoFbuO34fTrmDB4Q5/pTLxee/0Y6PYTQNz6OeTFZ4qs59Z5W0tx8nQLBk
4zr302G0OPnti0fHv/32ycPRgxffHh8/ehhQxUfOkiigiphzMeZEJPNOFG5y
QfmxiX67JkotJI2JaPF7JhoygducvG3YZWyZ88TbIMgJmPIUNhdccvPyL3je
wKFbz11al8ALqtstsGtTXnCcIgM0wPwc9C6tBy36tT9HU99hKbHDbppwOonF
fJynudZB6VqbLo51TOpgDODWFIM6AI5TMSYbRNJ2xJfbXjmMvdS2G8JcET/1
zsKGSq3hJU1On6kG81G4romDInwBtFvVBsYEQvA3ZvV1WEyPl6gCzcuFAdQY
CIO86JYytd0UC5NTq1orcaEtYvD1mQ8iRefQKVVEeuJNr/8M9KdnvDPZpW7k
3CZH0eHDCZ4qquOB/n3sjTQzPqfsWUt1RYBYbr+47qclHmpmQ8bL2vEgO2R1
410ycKW54IIo/sZh+rJqmhpnWWMufDTmLZMMmuvSMry4JKiwmlwFranUiV5/
/Trmlps6evWzvRXuObQNoiN5/x12ZkW9goO8yDESembS+IdHmC/vQyGNSsxp
TQrWBB8ZlamQPyh7pqX5LZQxU/S7veQyIrIcwfi1FWjMX9PQG7MVigqj+d0l
kB/ZE7RB8hOhi2WPZmA4YDMiR71iIkuLzenLOs0/OnnXaAV4JyfvlzigIWDQ
7rNjAHMGBFPSai3lEsRKdU9RrZtQDsJ2uE8jjdvSgQm1Q+LK37I8+O6bEIJB
7EmWyO2QsbfVAsWFrTrhG7JcVbMZyz8GO1OvbS4QOTosRhQz6rng3PKccMN9
kG8hjl5H/yT6TWL6Aw6aI45wBU71ER6uVThuEhUOS5cw69EObTmfPE2KaJ1W
SciYZw40uI7TkqBwUkgFheTkLJu+RfVDDbZTvsaYj5Y1iqJbMwm1U9/Xfzel
/Bt13R7OSjm1pLOKrXdpcFzbxXmBt9U/Au+FKP/Cfe8o9zkh2SP3fhYGjE6k
jRhQ817dwL8X9XwqZvwelbFLo2lNWivHvMTOfD331LGBbOswpHeP8E7WYgbs
br79x2BW09i5rSS414HQbGx0lxHrELRkSQ4ecPxHJtX998lj9X1l/xenNX7e
ox8xtt+4sm2xL5vhwHQwPjscxmnbORWEe6R/oM2pHfnjIxeBjnXzYcWvlw6O
YxST56LXmGwac5FQi7vbgZKIQ35QKnd38HYKGbmOp0YwobqBF9OgMGUvPqo7
FTwvjQrytNGYOrcDGwxMJEp/diFuszmO3C+NpWRZCENTBhqN9Sid4aDuY7MS
Fcm4dUlHEMfVBMH0gnM6qGazfDECSoIkzXhxZQ7OD9GN0rqB8PxI0Gf/hWRo
S3TggM79B/WsbmKETCC6ivSIMQp5SLWO4Q2pOrNuvW9Tx4VImwx0ScyoOhud
lQU5MGz1x9gkMFmzQDZXempmb7xSKSQHLFmq25uvXdk31bdVfVWWNo6kCrOM
4DGwttUbrX2yKw85DIAt2em1i5qtSeBpFEgC5O1dTBpVlQnBw+UyoqiumHGI
bfoKO8dlnV0gQ1ctZ67kHK/Nfurb9UAGMNZ6MdpBvSjl1sYlgvkosDFxw47A
B/YAoZwHyedsge/ONgphS+0CsSWFy0fcR79txnEmAYBKx5B4zMUPOcCgm7ry
EepgRrbRdTAg+zQk+a+hV8atO+Px/YNP73/60ccHn374Nhji94SP3AZwprfi
A09Yda5P98+9MkaFHfZJFmz2ZiKFFnqILKHYxp9BiBDp9r0/eyrD31o4WDq8
sVTY6EJjikAnQw89etKqpwIMPXS7EyPLqrsT3RvJVoVOOoyYIiip8EZ/zddW
sfVTGqXn/VknvXsTKx4bYPkDh966id2EkzTBmG82MXToMpC0K/vGk3pk0GlX
C3SdR+vD9cAZpdJ8xvmqU/Xg+pDaOiYQ6nJK3luWr2zinuAwc0n/0hGqAUV7
aBJcKjSo7mJ1/OESBF7Qa7SSCVe79Ug5/4IK1mviPNnMMAOKuUZRtZug1uEN
OAxzHKucFQs0brUVescgLnoSkkp+Tbp6Pi/CKN+/6zS4Ppc89CEqt5xFKug4
PZEBFXYpnK/j9rb2HvZEOtt5CDYb1I+l8aMX/M0woO5vgIMzrt+WEC4plph3
ieRU60pA3wqd29MljZBvIN8AJaUksIPdGyKFZ+oED0EGtwEm6L0DAhL91Jdl
XKt+EB6PbXc4sBDgBuOT+vsmRCB1TrLC3WL+Royz2/vtUHhujgKGUb5e+C8k
3UjEdYulaLuP1obCUUSY8aJxAn6NMETFMZ1FIX3rdA1ud/XUA1jvau/IT5aW
txhCw46LjMrm0HsZ3dgOeCL+LAQa6EsD+bVFHfYoi1Mcw5oLph3tn8omt5Fk
GnC5fKXemiRANXhoUje2njenb/jByT1i2TycnolDKY5mbnRjimJNPvOxNmmW
UxFwA+cQJbfoe0HzQs6n5QJNflisVI3kBR90JcewrNZzg0jUiExA8rL+9ruQ
SVbMKNqDAflv64OoT/nwzbpy9sBBJFe5NvqfKzE6ZRCx/YoFXliSdgEoDweU
B+h6t3clAbCmRXdJgN5FeOz6STyUqpyNHIPJhD3lOCmCOhXiHtdeHJKhx7jy
86GfrOSnwGHplHHyfaa6IPPyiulBHoEVF82tfPdBcqWE5ldFY1wkJkVDWdEp
om3NlCSxyt9tSuVrzHEq1cYkU3Q5K4MpYbJsNal0TQHH2kEGmLX8/Stg8HIw
fz+00HWqVFV5dCCHT5NwAi7HfDXhYkR5WdaSXw1F10sEGtWN9vghTnkTYtH9
lL8eiYTtJU4nb/LLqIHFOHjImWUw1XRcAWgICfx0th0koOwy4ay789BsggF1
WMfFXpaeQTy8gZD+3eJtsPAqASVg4MVbYWA7kGVfWL4FhgDXq7afnX8qhlIo
/SzsZMfvZCalgCgXpP76NVHmpB61g69EVM4VH7JYsZFe5p5ktdhoywdFTfqK
j3SV9uigTGfZEXpxsmmcvFtMR8GRrnIjfcVGekyvT3FsKSXS4UHVYYF2mHup
o+I5pH8a4H41BHGvaMhgA/pGtRBspiNJbOPSWBn9trMkQvZe/qxeWr/TNsu8
P7mcKN2ysU4Q0HHO2drnsIr1op7V59cK+hiTbFP+qI/ufXpzQ26I5ov7d+EL
TjSCRFmdWsLllyWaS6r2kjoU+WLVXmTuS9wXhPbUZAlpKaV9ietrWrX5ZNVg
9nks2oKptMivmmLCljUluM+PecxT0rHn3jSpBsICdtFkVuEUsbpEO+ZeEgUr
mcVlu7UoTP/49En+HG88T4r5+QqdQ3f+iH/v2kYtJfEgmwK5y6JgpUcD8y4G
qqOKypgv/TGlhqw18cOYcCmbllSzzpsB1ovglFYPJG7QrOeJTtcFuuQ5KI+I
mp907HcvHrc2TgazfODcuHFzLYt676NPPrm5GWdf214MAw8xTh1mG+0F4AWS
Y6oM/Xdh8jZQ87KYlpIxHUkG+BzmA1J8YdsXAhym94CTIB0Se8BEjr+hGB+Y
zGH+bP9oT8I9zdAwipSoxena5GKcq2QoCi6R+0+BCeeO71zEq1rvaLuEKiMd
VVFoM7OWvEof3Tm4g0tp6Y2NDkUGKdI+M4jAbwNX4znl02JYZn0kjwh8KSlE
so4xFS03HFr19DHwlidGhOn7HibHWWEVicT+8ZKjKAf4MBeeSqPUTi5gk5Lk
0oViMjguONWcRCdPJuxk/qrCmyqnRbp0aZGwomM9qWeSO6Bo82ePTh58++xr
2ZEfHZBUhVFePDqmH4y4vXMf11cqsV+hlJGeoPpcc71KLtQ4wbIyyLItpUmj
X/dsMiV7ZtPVHQvDEF7cLXfdANwxgzq+KEGa7Rwf/3Y3t0geBLhYbC0yvz05
eX5sx802GPfkybGZ9P37HxFT40gmyZTvIH5EBKfNieUqOXfNzrOjB093XTpF
JCkVqJ5yRTM4imA8XDIU16DvLmXhaH3REamarGZFY0ms1wNPIOpbZAssqcjY
lJTnSSIqUbdxNVVSQAwfuKpJbYakkuOEp4wnNZ3Wkp8Io5CQ96hCYpTAUbO0
KQmUXcEOQCT2MXKA/0WWBUJspxqX4z3zeI863J6EMlQmPp0eDXbHfDZnanSs
Knha6pj2FmMwyZ8TJvpqNUNVnrKzYG6ty9Lshqycv6qaek5P7eP8D4Bgqahg
qpdiKijxc9mVXGNtqacvmbgyfqDRpVIxruWieEWEK8/ZxbQ8O8MUXPCr2ZRu
SJkd0Yu2EOsFnJRRjSisXDV2qiBd9s1MyVUE1BI0XO4bS/ehXyZKh3qWJroC
lDo/FZtXvyn73ZyTnOGlyHAp0aNq1a1uQvGpruCrqIloejyfY3IekLsvy2Wb
VTYvCPBuiaSh6jtNjYDHgr4YuS367F/kIR/YzuemIAwXmTJJolRFKoVV3djC
4mUDil/fFGloml22fnZ5/+ywVGaxXGLbJqOymLO2pvxvUommzrm6jWcPKE4x
4RsOa1jH6Ml7maR3a/HUJ0W1buCcIL0IlKVVw/HWNKQlrrvx3Ia+3pUp8yp9
DSPjACYBMma9THKM+1nsJCBXprTP1U5JiaQegZH1CozcFxiPlyydVq0kAuVU
e4ajMsTHzF5kCZ7F5+VyD/9HZMqelPWz+nZSyIwzKxnytyQZ8DED1l0vCu3h
1uM5eR4hzgN2ArJU7YWU0jIaoZBnnCmuJtnHy1v5EH9y3tY8QTVinUjfkB0w
2eLbYgfhhMwublLsE9IKYbue2dr1DGrbwtKuWr5IVWRlQg3IXx5KHXntbP74
wiYO0oYo+FRBufOQGvJkwaoUpx2SMoz0sASygEpK8hqjBwlmQMwQBsV0vpKS
c5ZdfLx1qeEByDfolVe+MnrmNOvnJlG6GlErJOLUpKNKMFTmGOrEaLPkfeLp
8Cgr4eyYooHeuyDdHd/NvbBbUas//vTDO2i9oAqw1p3Tqvmghl8BQLpyH02w
ijoAZ42d8TB5Rq9IKM6qlyWLi2L+kgbPL0vU0Gwi0ktYnmr0qpxPraWD7gnZ
Em2VVxc1cV01f1XPXrl0FqTRVc4IzYoDGWHWIXFSX+bPSzJPAZccTZsKSP01
8IAETqKRuLySQNKMlwX/gqU4W0GTspxiNUS1hIY4rOb7Y9O5KQhkjMCTuoDj
FVaobTEj6pN6lX9VNud49TiG/1Y1/Dmrl8tqD7ZsMYM/gdX28gdFA/9+XsLR
Mrmo6r3sayx7WbaTOn9S/PWvILH28qPqYlXk36zqvfzhRbN6Bf9bT68lSW3x
l+o0/5d6Lv7HdmaZnVIdXOpolem+gFlgYVJyZ8b7ZJQk+AGmAqafHmE+3sM8
yBCc0W9/hAPmAWxNArEqrsoqPyknF3OUpBVW9HT9/wxzq6ArtH5dFV9eUGsH
6StghT8woAf15aRol7oz/Po9/PolvStjJ2zAnc2t92iBD9/V6/zoULJZo4nL
1gD94T3T4OhGjBCtUZvNQVSqgqF4lnglSCnJqbqb2qspLce/HH/7zHo/j/Ms
+1os4AITthkbxxBukd+n8zN/+hxufEZkXOG158Xx75+PQNWhX0yOdBOvXi5X
C+LKbFbXC1xjQpXKUVJhz4Z2FxXQZO41sMmkBQT4ujofncBBB1gbU92qdfvQ
ECBjW/Cp+8XZv4RqLVtcYJHufnowvjM+AAEkH/PFgf/n/YwKG+DnA9M0+ML+
mdmKMrayTPCF/ZObHqneBO0r9wX++ZCb4jcfrEHgA0bAG7zj82OiWTTHdLNo
fraZnYaB8sD/8oPAOh9QI/p80NPPrM29zBjhFZMo47vhI8MsbAnCDWZYxhSQ
+AqLGZuaE8fIsbD1Tkr+wuw8syn4/Y19vKSLtY5HJSqDowtVHbzao4qemW3T
UoZ5aC7Q6jNR7cnBwEYnUCR0/nXVtMu9YHy8XBJYqes5r92rh7GZ8F218YsB
s8atbuN0+KCNn9VsUqn1QPxaW9KtV3bvEcmSMv7hIYqUx0ICfA1agzaeZZLz
ko6+6ZRO12LWoQQvGpD/zTWrZLKzn397fJLv4xTw5rCPa7IvFspDp0eRuWsf
1A/irt/WmHhflpfkM357RGVoD0kLEfVkn0piIMwP/tzKg9MDNgGNsAxBb+MM
37a2LC7sjXaY/4mgmHcvCvKCb7fkCPgeOOB7ptb3R98fbJl0pVuGK7BtOgSF
Wcj14FhIrl+sO0mZdvN+6jpwKDO2tcLS/Yg+N9WcJqpb3HctTuFgb5irCpzo
FoWbKPCmrgLh4aFEWi4dHKOmfbXYsm9x32U3LL9hz4rz4TOK5aJXoAeOs7u2
bLhR1X7MtzksjFzo3CbZZuucnGY2JTd6ODvLCW+ToOee3f7M+7PqslqGkuOi
XrjiFaLYMw7DGNqE1XGonFwPHBmI1D8Hs2teT+IGC64fey3jXxav0TdidG9L
p+bdot4cZDQCAYAOXIfBa3HcJmqC+SD59zTPyY8w/tZe2HG1wPdJA3frnuNK
+0xsWFPWlkSxsGnAoE4uykrsiURj7xB8qRTB2MWV+FiF9Oe7mc9Upi8pUPYY
u/kHE5H839vIyfvf330TSal8CrDTcWVHwBX9nhbke1yQn0+4xsIzlJm2qZyS
tP9aS0hNzKhZvLUMuRUt7gZbZAuErLZPWPTxpSJs2yUS1Pbvdc/4Lnkk6H33
HF1y+O9he4/8D8TnPNxuOTVGvq3QtGYyU07zFd6hh+0+MXMxxFjc20OAMfgH
26u33Kb/UArNBgpL5+Zz2yrccH9S/N6x+bBltOsGHIwdR+Of8uhulYp6uvWJ
SZ3Tp6b+hKFP32Vdv7p/mzY3fWKAgpY7Nvv2N49OtvO/rEq4PpBRhe9mDSxh
w5uTbfrk7TRVdw5vdwKQfMDulDus/P2b7jNL2i0OFiOPcfbf0gY3vizW8UXK
JeFcVy3VY8oP7twRs2E1n8xWUyAYSiaPes6ugmAPmRiePEjzfRfPq13Rxetb
4cmCnHdRT2OOpPIAs2tjJZ9qIOY7xmsk0YJVGe4Zv6Hf7k8ef0Y77eUITofy
NcmQWImMwcVbjhvRHXpUUy2qdLtUywi/LjwtiB5sbRt2aABqkJ8x7vU0PqY5
eyNrMXrQkfYjEY1J36ZRWT+Jg59yEvc3nETi2++i74YnzXJ9FXm25IXS414M
vVrLqHJMDlakbUekjHeI5nEbqm5ExDv48N6HH20NmZQn078LrlSCnlKzWMsT
ExAVaqTAHvwLFT5+J+ha3//+z//zv//z/+j9v//YrHV6JNPz/zHE+hS++r/i
Uf77P/+nJecd+KML2v+E//+f63D5mzSVPrr9f6X+/bfu0fq+4j8Q2aHUjNr9
vx1UH9pQo2AJ+ElAYk3+e/Fv+uf78c9/swP8Z0TBBN3j9Yk7/C2xMD0NBYHk
gqxfJdPdkDSmZMiLGwF1bJukbHI2aZBqzbtw/I8sxf3/5f8jGkYPsXbvaG74
MHc7kXBNLsBGQ/2XRrQX9GYSKqBqhPeQeccEOFi7pkP+728hOgNIpenUs6b9
gD169C0Vby5N7yQHRvTuBt2xehrsf2Se2P/odrT+26aL27XWH1s6DDpfBnyG
QMpST3gHG7/hfUUVPY1PNd3cjOvLVIJ2bT4BDsyV+rFOesHtz+77jHQLuazs
SQYh+mdTYulUKblrvzdfi3NQ0fJrdvSAfWBtsL7xpHQ3JOfLaW0ogW0FP0nL
uRBk5KtsoTXTKFLopzWr4MIXNO8zkhh4KUPJh36r8PWHHn98i36naST6OXGr
SVyb7NVRet7Nd86upruJG8GWseX5t6xRMbsqrjsvW7rtSC7Ho/I1/ff29667
P+mtqws4tEcrq7HpzOq6LX+S202C+GZ9ZNOkLc5mUsGaHuQ70C21prdc1duu
a/fKDlnbjVc3vb73etZ3kxXuWuOu7+N17riyb01ATmImknJkhaW37j3Lsq5r
z9JsuR73ehgmaHp/eNMPpelw6gzaGakp91Gps0MnbdQcusVj0PBAGr4Fc4Zu
f+MfO2smvLV2gj0nwpBJ/7OcCXf/Ppa4g/+1j7WQy0OEBjHjwT89M/6dzMI/
JTN++O4x48Yit/9E7mh4WxHcfSL/s3D9h//4XH//3eP6W4ngbp3vn4UZN33U
egeZse8a9I/EjB/+0zNjwj2EP/84zNj9jO4x4zuhDth/K0L2mhbvbWZavPd3
MS1SJgTd4O9hWSQk/pm36jtwCXsHLCidbBA0PbBN/04q/U9tRfmn5/9f7Chm
Zj+73nTwCzv+YkmxM3tHVaf7m6lO9/8JX2UnNW9Sck6fr2az7/6Z9/PPvhn+
nk+3/4jvhMmWvzz+df79Lqitv4iesPkvmu27rdn+wrFh81+U359b+X2XnhHf
yj7rONIH6f+Z/tXLBKDzO311mH8Nm1Qy3lKWp4dVcd4UlyrJ01c3mL9dMsqj
k+voDPrc3JA7qWQMRyDk/zqV7pLv6eSRTdjnJaDJJIPftnibjjEmcFsyT5tE
9tzmUGWe/mA0aq4kf7T5q5xjIqsv8IvTup6VxVz/Kpko+KsfzbdxWXjboLvN
+yDR4LvvdFO7njbar3y9xKJRPvS9VB9XvIOHSva8+SLo6pDTXIDJdObnyaan
IGgXdUtJa5BKXIAoSRAqcd1FCfzRkEDNNyoTvg7jHlSpPvsXmjIIN9l0UrdL
WvOe6aTzjoRIRe2idVafcN7hEGryec9yda+c7TVa5SFwDB69rD32FsfsYPr8
bWoea9FZgxv3L2ZV0X5x+/5cfO6sKpt+IMHa5m7xZ/Warr39lZmjF0rn/F2M
f29/VWQvBFK7VKHFrBdUNxBgESd2TD4CuH6NXDVz/DHRi4MsmZ1GxZKzGJaJ
DeJSLOvfLKOZDOQjrp/0xRqcf4zBjrgh6B1f9BC8KWusIlf9VaoCdlEdF/zu
R50TLtq2nlSc/lPFO8ftXeqxkco71tslTPTQLXccPhewA4pmcnHdDZmIrIxf
HcvgWqR2vTc1iVi/7JxP1FrKxQ1o/nJka1ck0Y2wwHB2qsrV25C2R7KFmrxW
3+K2P246/6hDD6o/DsHWMf86q1Kybz60+/td3c3nT77dIsEpwenlt8fvsT5S
vLd7UeyY2do+7w/A95bIum41FSR95YlgT5n8sXOE9I6M5vDz7cnhW20Tobd+
j4aE6GPxvrY/AfF+HmqMXttzaOIqg3kS5IpruQW/2B9V+V3k1P5TtsbE1jGw
XHM8T241W/aAY8wVOfCe0qDWgkSHXetRIu+ciP6xBxpvwQ5cOmDQxWMkWUDJ
2oFQEhu4t3/pd1/bH9cZObNLGUlq9ra7ZGS3ixl9sP67aIhdMIB2TTGykJi5
gGQWnvvKXRpqrFfsCpfbr2CfqeQbOefKoNzKnlWG2+uWXR89/2AshNz70Yqc
7ovo6G8NTXQdTLFjxZ35ufKLW/dXr5m3ByKUq6Y9N4eu2VsLQQ8Qqn41rZeo
gv1lVSQwGHLxiPafR0cv5Vh6Hr0AVLXVTipE7K8BIAvBZqX1HHGeqAhQP4B6
8hLE46g+g5VqLotZAg9v/+vOoE2Uf+2/+XV3RtT12VLPYkhr564AJFewl/q9
ghN56ta83SdS3wgwzhnOqxVwLL8DqNTLgXV0fQcQdGQ7TzyKBlc5rMwFOhZD
4CM9o+Ku7WFmmptD3a+CkckUw7NQn+ZpVSR1eutj2+vFh3cCF6kkkql5eUey
QsPIEqsL+VjuqEKyu34DBny4U8xmIpHauIVTXmYz+Y2qwKZBYUlWBhVDyn2M
yU4YnG+xrhRMK/d/NvsmsV9042nVUnkUviB46Mealvq6V8WC1rRJKIl6VDTZ
MlhuhDy38fYI/myEqC8zLOS0duyg9ygw6vzGlh2p7lKaY7I5VpURM9KPaqcF
87b9DYtjgdQAQbcA2DCV4FU6aCGMTVHqY+3wxIQ9mGabtZM6cUL5s40obbez
kxGDDFCB7DF0IbBi/XLyzixdZIGOsNW3X7OPBlqx11mh/anHN1LHZQubody8
QHyiFlqejL/Q62BhRyYlBzX6SQP3kSPhfRjPyrEnbNIFTLJUPCAn7auqhQao
7pRNUze0tq0vq3tawmnzXSTE+eemLNq622gadwjs1mqDxm3RTgqzvlwwfFYL
0byCBmL8saOfOasFqa7jOe5I9c7THakyfdSN7wEBwyrVN76s6LsKFX1hEPog
j64nCH/0eW7KpuH/7Kufo672+hdvnwAJjbxrlpIHPocdqtl1pv70+asr8SfQ
QTJ7xjwmP/SqqW4nJk3ZngyKxVWEWLg/1jazm0M3XsfrcdthvB73692AbiHX
WYK0nDNN1frpF+rkRx9TP4aA0rekhKwIurEJDf8F2osZPzHSRT2bwjXojOiU
wFG9oUmPq6JaYgFeGiE+cPQWlh7Foh3xpTF97/UPBEVkxUX662E0SfSjAsxh
zwH91hIzH0ZM70UypCZlde4lZ9QlvQCui1Mwe/UPx8CqgfHL0iPHP8MO1l++
LK/thv4x7gM/x5v5R1+R7V+ZH32luJNO0o5NBLFO36l6dk7Uumf0zDjROTnj
fJMZ5wNnnKdmnK9Xtl1X9pUZiZnMDuH4VdpZM5TDiUTuRfl6ZCcasl702OyY
Tg9oPl16B7bXdrgh7dvGGkeX5tQ+BQCNu0RM2+W6Jl6UQnTBCKebetp1M7a/
ap6bluhvBUry9chz67DMHDXwn0YUf/O1zv/aKP+iDMkQ8t99rQsldYG1Dgb+
zKoJcBKqhCHvrDkL85TpTO5uANGtbgJEvynJA0LK6jKhf3borQ5EU17W+FMP
Imvx8NwF4B9SLnfk/GISimR4AfOulwaauemHXQIfjz49D064P9fQaY4lbxON
I9ieF69//0cvmfIca8z9Krr4Sy2N4hSrYpRLZ6mxvdFA63WPkQm6a+9BTN8Z
Oi2aFJ5fp/wVOwvnUT2+/x9S0S+kMC8CAA==

-->

</rfc>

