From 80464047b5c4882ff676f35df8d6ab857c3fbffe Mon Sep 17 00:00:00 2001 From: Mukesh Moopath Velayudhan Date: Thu, 25 Aug 2022 20:18:31 -0700 Subject: [PATCH 1/7] Default drop support for P4 table miss without generating SAI drop action (#187) - Handle all table miss drops consistently at the end of the pipeline - Convert PTF pkt test to invalid pkt drop test --- dash-pipeline/SAI/sai_api_gen.py | 3 +- dash-pipeline/bmv2/dash_outbound.p4 | 2 + dash-pipeline/bmv2/dash_pipeline.p4 | 14 +-- .../saithrift/ptf/vnet/test_saithrift_vnet.py | 113 +++++++++--------- .../saithrift/pytest/echo/test_echo_port.py | 3 +- 5 files changed, 67 insertions(+), 68 deletions(-) diff --git a/dash-pipeline/SAI/sai_api_gen.py b/dash-pipeline/SAI/sai_api_gen.py index d119a44ec..3c77f27ca 100755 --- a/dash-pipeline/SAI/sai_api_gen.py +++ b/dash-pipeline/SAI/sai_api_gen.py @@ -25,6 +25,7 @@ STAGES_TAG = 'stages' PARAM_ACTIONS = 'paramActions' OBJECT_NAME_TAG = 'objectName' +SCOPE_TAG = 'scope' def get_sai_key_type(key_size, key_header, key_field): if key_size == 1: @@ -234,7 +235,7 @@ def generate_sai_apis(program, ignore_tables): param_names = [] for action in table[ACTION_REFS_TAG]: action_id = action["id"] - if all_actions[action_id][NAME_TAG] != NOACTION: + if all_actions[action_id][NAME_TAG] != NOACTION and not (SCOPE_TAG in action and action[SCOPE_TAG] == 'DEFAULT_ONLY'): fill_action_params(sai_table_data[ACTION_PARAMS_TAG], param_names, all_actions[action_id]) sai_table_data[ACTIONS_TAG].append(all_actions[action_id]) diff --git a/dash-pipeline/bmv2/dash_outbound.p4 b/dash-pipeline/bmv2/dash_outbound.p4 index 4656f5d36..59e7c0292 100644 --- a/dash-pipeline/bmv2/dash_outbound.p4 +++ b/dash-pipeline/bmv2/dash_outbound.p4 @@ -72,7 +72,9 @@ control outbound(inout headers_t hdr, actions = { set_tunnel_mapping; + @defaultonly drop; } + const default_action = drop; counters = ca_to_pa_counter; } diff --git a/dash-pipeline/bmv2/dash_pipeline.p4 b/dash-pipeline/bmv2/dash_pipeline.p4 index 86fed6b07..2bb754182 100644 --- a/dash-pipeline/bmv2/dash_pipeline.p4 +++ b/dash-pipeline/bmv2/dash_pipeline.p4 @@ -140,7 +140,9 @@ control dash_ingress(inout headers_t hdr, actions = { set_eni_attrs; + @defaultonly deny; } + const default_action = deny; } direct_counter(CounterType.packets_and_bytes) eni_counter; @@ -158,7 +160,6 @@ control dash_ingress(inout headers_t hdr, } action permit() { - meta.dropped = false; } action vxlan_decap_pa_validate(bit<16> src_vnet_id) { @@ -174,7 +175,7 @@ control dash_ingress(inout headers_t hdr, actions = { permit; - @defaultonly deny; + deny; } const default_action = deny; @@ -208,7 +209,9 @@ control dash_ingress(inout headers_t hdr, actions = { set_eni; + @defaultonly deny; } + const default_action = deny; } action set_acl_group_attrs(bit<32> ip_addr_family) { @@ -243,12 +246,6 @@ control dash_ingress(inout headers_t hdr, present in the VIP table */ meta.encap_data.underlay_sip = hdr.ipv4.dst_addr; } - // TODO [cs] shouldn't this also be called at end of ingress? - // Shouldn't it call mark_to_drop(standard_metadata); - - if (meta.dropped) { - return; - } /* If Outer VNI matches with a reserved VNI, then the direction is Outbound - */ meta.direction = direction_t.INBOUND; @@ -288,7 +285,6 @@ control dash_ingress(inout headers_t hdr, eni.apply(); if (meta.eni_data.admin_state == 0) { deny(); - return; } acl_group.apply(); diff --git a/dash-pipeline/tests/saithrift/ptf/vnet/test_saithrift_vnet.py b/dash-pipeline/tests/saithrift/ptf/vnet/test_saithrift_vnet.py index 469d9a2b8..da4c56281 100644 --- a/dash-pipeline/tests/saithrift/ptf/vnet/test_saithrift_vnet.py +++ b/dash-pipeline/tests/saithrift/ptf/vnet/test_saithrift_vnet.py @@ -126,63 +126,62 @@ def runTest(self): outer_smac = "00:00:05:06:06:06" inner_smac = "00:00:04:06:06:06" - # TODO - Enable drop tests once PR# 187 is merged - ## check VIP drop - #wrong_vip = "172.16.100.100" - #inner_pkt = simple_udp_packet(eth_dst="02:02:02:02:02:02", - # eth_src=self.eni_mac, - # ip_dst=self.dst_ca_ip, - # ip_src=src_vm_ip) - #vxlan_pkt = simple_vxlan_packet(eth_dst=self.our_mac, - # eth_src=outer_smac, - # ip_dst=wrong_vip, - # ip_src=self.src_vm_pa_ip, - # udp_sport=11638, - # with_udp_chksum=False, - # vxlan_vni=self.outbound_vni, - # inner_frame=inner_pkt) - #print("\n\nSending packet with wrong vip...\n\n", vxlan_pkt.__repr__()) - #send_packet(self, 0, vxlan_pkt) - #print("\nVerifying drop...") - #verify_no_other_packets(self) - - ## check routing drop - #wrong_dst_ca = "10.200.2.50" - #inner_pkt = simple_udp_packet(eth_dst="02:02:02:02:02:02", - # eth_src=self.eni_mac, - # ip_dst=wrong_dst_ca, - # ip_src=src_vm_ip) - #vxlan_pkt = simple_vxlan_packet(eth_dst=self.our_mac, - # eth_src=outer_smac, - # ip_dst=self.vip, - # ip_src=self.src_vm_pa_ip, - # udp_sport=11638, - # with_udp_chksum=False, - # vxlan_vni=self.outbound_vni, - # inner_frame=inner_pkt) - #print("\nSending packet with wrong dst CA IP to verify routing drop...\n\n", vxlan_pkt.__repr__()) - #send_packet(self, 0, vxlan_pkt) - #print("\nVerifying drop...") - #verify_no_other_packets(self) - - ## check mapping drop - #wrong_dst_ca = "10.1.211.211" - #inner_pkt = simple_udp_packet(eth_dst="02:02:02:02:02:02", - # eth_src=self.eni_mac, - # ip_dst=wrong_dst_ca, - # ip_src=src_vm_ip) - #vxlan_pkt = simple_vxlan_packet(eth_dst=self.our_mac, - # eth_src=outer_smac, - # ip_dst=self.vip, - # ip_src=self.src_vm_pa_ip, - # udp_sport=11638, - # with_udp_chksum=False, - # vxlan_vni=self.outbound_vni, - # inner_frame=inner_pkt) - #print("\nSending packet with wrong dst CA IP to verify mapping drop...\n\n", vxlan_pkt.__repr__()) - #send_packet(self, 0, vxlan_pkt) - #print("\nVerifying drop...") - #verify_no_other_packets(self) + # check VIP drop + wrong_vip = "172.16.100.100" + inner_pkt = simple_udp_packet(eth_dst="02:02:02:02:02:02", + eth_src=self.eni_mac, + ip_dst=self.dst_ca_ip, + ip_src=src_vm_ip) + vxlan_pkt = simple_vxlan_packet(eth_dst=self.our_mac, + eth_src=outer_smac, + ip_dst=wrong_vip, + ip_src=self.src_vm_pa_ip, + udp_sport=11638, + with_udp_chksum=False, + vxlan_vni=self.outbound_vni, + inner_frame=inner_pkt) + print("\n\nSending packet with wrong vip...\n\n", vxlan_pkt.__repr__()) + send_packet(self, 0, vxlan_pkt) + print("\nVerifying drop...") + verify_no_other_packets(self) + + # check routing drop + wrong_dst_ca = "10.200.2.50" + inner_pkt = simple_udp_packet(eth_dst="02:02:02:02:02:02", + eth_src=self.eni_mac, + ip_dst=wrong_dst_ca, + ip_src=src_vm_ip) + vxlan_pkt = simple_vxlan_packet(eth_dst=self.our_mac, + eth_src=outer_smac, + ip_dst=self.vip, + ip_src=self.src_vm_pa_ip, + udp_sport=11638, + with_udp_chksum=False, + vxlan_vni=self.outbound_vni, + inner_frame=inner_pkt) + print("\nSending packet with wrong dst CA IP to verify routing drop...\n\n", vxlan_pkt.__repr__()) + send_packet(self, 0, vxlan_pkt) + print("\nVerifying drop...") + verify_no_other_packets(self) + + # check mapping drop + wrong_dst_ca = "10.1.211.211" + inner_pkt = simple_udp_packet(eth_dst="02:02:02:02:02:02", + eth_src=self.eni_mac, + ip_dst=wrong_dst_ca, + ip_src=src_vm_ip) + vxlan_pkt = simple_vxlan_packet(eth_dst=self.our_mac, + eth_src=outer_smac, + ip_dst=self.vip, + ip_src=self.src_vm_pa_ip, + udp_sport=11638, + with_udp_chksum=False, + vxlan_vni=self.outbound_vni, + inner_frame=inner_pkt) + print("\nSending packet with wrong dst CA IP to verify mapping drop...\n\n", vxlan_pkt.__repr__()) + send_packet(self, 0, vxlan_pkt) + print("\nVerifying drop...") + verify_no_other_packets(self) # check forwarding inner_pkt = simple_udp_packet(eth_dst="02:02:02:02:02:02", diff --git a/dash-pipeline/tests/saithrift/pytest/echo/test_echo_port.py b/dash-pipeline/tests/saithrift/pytest/echo/test_echo_port.py index bbcd5488f..e80b4a240 100644 --- a/dash-pipeline/tests/saithrift/pytest/echo/test_echo_port.py +++ b/dash-pipeline/tests/saithrift/pytest/echo/test_echo_port.py @@ -3,6 +3,7 @@ @pytest.mark.bmv2 +@pytest.mark.skip(reason="re-enable once pipeline fwd is fixed") def test_udp_unidirectional(): """ This script does following: @@ -145,4 +146,4 @@ def wait_for(func, timeout=60, interval=0.2): time.sleep(interval) print("Timeout occurred !") - return False \ No newline at end of file + return False From d7adda23fb97562acd4a08953d9e1f837e64ee7c Mon Sep 17 00:00:00 2001 From: Sanjay Thyamagundalu Date: Wed, 31 Aug 2022 00:01:31 -0700 Subject: [PATCH 2/7] AMD-Pensando HA Proposal document --- .../design/AMD-Pensando_HA_Proposal.md | 723 ++++++++++++++++++ .../high-avail/design/images/channels.003.png | Bin 0 -> 26479 bytes .../design/images/dp_repl_packet.005.png | Bin 0 -> 9897 bytes .../design/images/dpreplication.004.png | Bin 0 -> 31626 bytes .../high-avail/design/images/ha_sm.006.png | Bin 0 -> 107090 bytes .../design/images/node_pairing.007.png | Bin 0 -> 68386 bytes .../design/images/planned_switchover.009.jpeg | Bin 0 -> 22471 bytes .../design/images/terminology.001.png | Bin 0 -> 5601 bytes .../design/images/topology.002.jpeg | Bin 0 -> 21907 bytes .../images/unplanned_switchover.008.png | Bin 0 -> 29221 bytes 10 files changed, 723 insertions(+) create mode 100644 documentation/high-avail/design/AMD-Pensando_HA_Proposal.md create mode 100644 documentation/high-avail/design/images/channels.003.png create mode 100644 documentation/high-avail/design/images/dp_repl_packet.005.png create mode 100644 documentation/high-avail/design/images/dpreplication.004.png create mode 100644 documentation/high-avail/design/images/ha_sm.006.png create mode 100644 documentation/high-avail/design/images/node_pairing.007.png create mode 100644 documentation/high-avail/design/images/planned_switchover.009.jpeg create mode 100644 documentation/high-avail/design/images/terminology.001.png create mode 100644 documentation/high-avail/design/images/topology.002.jpeg create mode 100644 documentation/high-avail/design/images/unplanned_switchover.008.png diff --git a/documentation/high-avail/design/AMD-Pensando_HA_Proposal.md b/documentation/high-avail/design/AMD-Pensando_HA_Proposal.md new file mode 100644 index 000000000..adeb868aa --- /dev/null +++ b/documentation/high-avail/design/AMD-Pensando_HA_Proposal.md @@ -0,0 +1,723 @@ +# DASH High Availability proposal + +## Overview + +This document describes the High availability mechanisms for DPUs in the DASH framework. High Availability is achieved by pairing DPUs such that a failure in any one in the pair results in the surviving DPU taking over forwarding on behalf of the failed DPU. Since forwarding on the DPU is stateful, all forwarding state from each DPU is synchronized with the other so that the switchover is seamless for user traffic. This document describes the procedures for such pairing and the mechanisms for synchronizing state between the pair. + +## Design Goals + +This proposal has the following design goals + +1. All connections setup before switchover should work reliably after planned and unplanned switchovers +1. 0 downtime planned switchover, <2 sec downtime unplanned switchover +1. Data packets should not be dropped due to flow replication delays +1. Sync connection setup and teardown at datapath rate to support high CPS +1. Sync only required packets to conserve PPS for data traffic + +## Functional Description + +### Terminology + +![](images/terminology.001.png) + +The above picture shows the terminology used for the layers in this document. The SONIC stack represents the sonic stack including gnmi, swss, syncd etc.. DASH SDK is the vendor implementation specific DASH SDK. The DPU is the vendor implementation of the hardware datapath and any associated sw components. + +### Network Topology + +The 2 DPUs in the pairing relation is administratively defined via configuration. Pairing and synchronization happens via the data network. Each DPU is typically connected to the data fabric via 2 interfaces which provides high availability in case of failure in one of the network paths (link or tor). Each DPU has the following IPs + +1. Link IPs connecting to the the TOR +1. A Control plane Loopback IP unique to each DPU +1. 2 Datapath VIPs shared between the pair of DPUs + +The loopback IPs (#2, and #3 above) are advertised and maintained via dynamic advertisements from the DPU. The picture below shows the network topology with 2 paired DPUs. + +![](images/topology.002.jpeg) + +#### Control Network Loopback IP (CNIP) + +The control plane Loopback IP, also referred to in this document as the CNIP, is unique to each DPU and provides the ability to address each DPU as long as some connectivity exists between the DPU and the network fabric. This is used to communicate between the paired DPUs. All control plane traffic between the DPUs is sourced from this IP and addressed to this IP. The Peer DPU is identified by its control plane loopback IP. The CNIP is used for pairing between the DPUs by exchanging control messages, for all flow synchronization packets - both bulk and datapath sync (covered later) and datapath heartbeat messages . The Same IP address is used by the datapath to originate and terminate flow sync packets. + +#### Datapath VIP + +The Datapath VIP IPs are the addresses that are used to direct traffic towards the DPU by the rest of the network. The use of 2 VIP loopback IPs allows for the DPUs to provide an ENI based active-active forwarding paradigm. + +### ENI based active-active + +The 2 Datapath VIPs (DP-VIP) are shared between the paired DPUs. Each DP-VIP is associated with a primary and a secondary DPU. In steady state each DPU has one primary DP-VIP and a secondary DP-VIP while on the peer DPU the roles are flipped. The DPU attracts traffic such that traffic for each DP-VIP lands on the primary DPU for the VIP. The DPU achieves this by signaling via network protocols to the fabric. + +Each ENI configured on the DPU is associated with a DP-VIP by the controller. In steady state for the set of ENIs managed by a DPU pair, traffic to and from a set of ENIs land on one of the DPUs while traffic to/from the remaining ENIs are handled by the other DPU. Thus the dataplanes on both the DPUs are actively forwarding traffic. On failure or administrative switchover, the secondary DPU takes over the active DPUs role for the DP-VIP and hence the DPU ends up handling traffic for both the DP-VIPs at the same time. State synchronization between the 2 DPUs ensures that on switchover there is no loss in state and switchover is seamless for user traffic. + +### Datapath Heartbeat + +Each DPU sends heartbeat messages at a configured interval to its peer. When a peer loses a set number of heartbeats it declares the peer unreachable and a switchover is initiated. The interval between heartbeats and the number of missed heartbeats are configurable. The Heartbeats can be aggressive hence it is left to the DPU to perform the heartbeat. + +## State Synchronization + +State synchronization between the 2 DPUs uses the CNIP IP. All state synchronization happens at the granularity of the DP-VIP and happens from the primary of the DP-VIP towards the secondary. State synchronization happens in 2 stages + +1. Bulk Sync +1. Data path sync + +The below figure shows the channels used for synchronization. The Bulk sync and the datapath synchronization uses 2 different channels. + +![](images/channels.003.png) + +The Control Plane channel is managed by SONiC stack. The SONiC stack relays messages from the DPU to the remote DPU in addition to originating and consuming messages. The Control Plane Channel is used to relay messages between the primary and active. This channel carries Bulk Sync messages, Control messages between the SONIC stack and control messages between the DPUs. This channel is a gRPC bidirectional stream between the 2 SONIC instances in this proposal + +In addition to the Control Plane Channel, there is a DP Sync channel. This channel is between the data paths of the DPUs. This channel is used for Datapath Synchronization which is covered in a later section. + +### Bulk Sync + +On bootup of a DPU, the DPU attempts to look for the configured peer. If the DPU is not able to reach its peer in a given interval of time, the state of the DPU is said to be “standalone” mode. Both the DP-VIPs are set to PRIMARY-STANDALONE mode. This causes the DP-VIP IP addresses to be advertised to the network. Traffic received on the DP-VIP is forwarded and flow state is built accordingly. + +As the peer DPU comes online at some later point in time and Control Plane connectivity is established between the two DPUs, the peer requests for a sync of all accumulated states. This sync is called the Bulk sync. + +The picture above shows a block schematic. The SONiC stack establishes the Control Plane Channel on discovering the liveness of the peer. The Control Plane channel is a bi-directional channel. This channel is defined as a bi-dir streaming grpc channel. The bidirectional stream allows the peers to sync in lock step in an efficient way. The messages used on the channel are defined in a later section. The usage of the message in different workflows is defined later. + +Bulk sync follows the perfect-sync method of marking all flows created during the bulk sync process with a color and syncing all flows not that color to the secondary. + +### Datapath Synchronization + +An Inline flow replication synchronization is employed to allow for reliable and timely synchronization. This synchronization models the primary and the secondary DPUs as one logical DSC. Flow setup and delete are complete only once the operation is performed on both the primary and the secondary. The primary`s policy evaluation result is honored on the secondary so no policy evaluation happens on the secondary. There is a reconciliation that is performed on switchover when the secondary becomes primary. That is discussed in a later section. + +![](images/dpreplication.004.png) + +Only Control packets for a flow are synched to the secondary. Once the flow has been synchronized to the secondary the primary does not forward any packets to the secondary. The Primary tracks the status of the synchronization to achieve the short circuit. The exact mechanisms for doing this will vary for each hardware implementation and is not covered here. The inline synchronization mechanism has the advantage that there is no buffering of data packets in the DPU. any network losses either in the Source-DPU, DPU-DPU, DPU-Dest paths are handled due to retransmission by the source (in case of TCP) or handled as regular network drops (in case of UDP/ICMP) + +The sync packets between the DPUs are logically structured as below. + +![](images/dp_repl_packet.005.png) + +### Interaction between Bulk Sync and Datapath Sync + +Due to the scale requirements for DASH the flow table size that needs to be handled during bulk sync can be very large and hence the bulk sync process can take a long time to complete. It is not possible to halt all traffic that would create new flows during this time. Hence the sync mechanism has to handle creation of new flows during bulk sync. It is also possible that there might be changes in the policy that might affect existing flows. The perfect sync mechanism calls for marking different “color”s to flows that are created after the start of bulk sync. The flow table is walked and all flows not the current color are synchronized to the peer. Any flows that are created during the bulk sync phase are inline synchronized via the datapath synchronization path. Other challenges include + +- Handling of flows that are affected by policy changes +- Flows that terminate during bulk sync +- Flow aging during bulk sync + +All these problems require the hw implementation maintain a mechanism of marking the flows with a synchronization status and handle these events as per that status. During Bulk sync there might be flows that are in the bulk sync snapshot that are affected by changes. The actual mechanism of handling would differ by implementation and is not covered here. When implementation specific signaling is needed between the DPUs for such optimizations, the control plane channel allows for such messages to be relayed. + +## HA State Machine + +![](images/ha_sm.006.png) + +**Bootup** + +This is the initial state for the box on bootup. The statemachine waits for external input to indicate that config is complete. At which point it progresses to the next state + +**Init** + +In this state the get\_capabilities call retrieves the local datapath capabilities. The SAI SDK call returns the local DPs capabilities as defined in the capabilities struct previously. This will be used in later exchanges with the peer. Validations of the local configuration as well as any other local checks are performed in this state. If there are configuration errors the state machine moves to Cfg\_err state and waits for configuration changes to fix the errors. + +**Peer Connect** + +There is a timed attempt made to connect to the peer in this stage. If there is no connectivity established with the peer within a configured timeout interval, the operational state moves to standalone-primary. + +**Standalone Primary** + +In the standalone primary mode all datapath functions are enabled and the DPU starts forwarding traffic. Since there is no peer connectivity established, no flow synchronization is needed. + +**Compat Check** + +The peer connect sequence exchanges capabilities with the peer. These received capabilities are then compared with the local capabilities for compatibility. The compat is done in 2 stages. The first is compatibility at the SONIC stack level. Any common attributes (across all implementations) is checked here. The next stage is to check compatibility between the underlying DASH implementations. This is done via a SAI-DASH call to the SDK. + +**Start Sync** + +Once the two peers are deemed compatible bulk sync is initiated between the peers. First the SONIC stack establishes a bidirectional streaming sync channel between the peers (Control Plane Channel). This channel is then passed to the DASH SDK. The underlying DPU implementation then uses the CP Channel to exchange messages between the peers. The data transfer involves Flow sync messages from Primary to Secondary. There can also be messages from the Secondary to the Primary to back pressure or optimize the primary->secondary flow data. + +**Wait Sync** + +The State machine on the SONIC stack then waits for the DP to signal completion of bulk sync in this state. The completion of the bulk sync is notified by the DP in a CP control message. At this point further states are defined by the configured Admin role of the DPU. + +**Wait Peer Sync** + +This state is on node that is in standalone primary and is servicing a bulk sync request from the newly booting up peer. SInce the Bulk sync is initiated from the new node, the existing node waits for a signal from the SDK that bulk sync has been completed. When the BulkSyncDone message is received it is relayed to the peer and also triggers the transition out of this state. + +**Wait HA Role Activation** + +As per deployment requirements the controller has the control to activate the HA role. Transition to Primary or Secondary happens only after the controller signals so. This state waits on such an external trigger to activate. + +**Activate Primary** + +This state is reached when bulk sync is complete and the admin role of the node is primary. The node then attempts to take over as the primary. This is triggered by notifying the underlying datapath to switch to the primary role. At this point the VIP routes are advertised to attract traffic. + +**Wait Primary** + +In this state the node is waiting for the Datapath to signal completion of taking over as primary. The datapath indicates this by notifying the SONIC stack via an oper status update message. At this point the peer is notified to move to standy. + +**Activate Secondary** + +This state is reached when bulk sync is complete and the admin role of the node is secondary. The node then attempts to get to the secondary state. This is triggered by notifying the underlying datapath to switch to the secondary role. At this point the VIP routes are advertised. The routes may be advertised with a less desirable metric. + +**Wait Secondary** + +In this state the node is waiting for the Datapath to signal completion of state as secondary. The datapath indicates this by notifying the SONIC stack via an oper status update message. + +**Secondary** + +If the configured role is secondary the node goes to terminal state secondary. The DPU then waits for a switchover event to switch to primary. In this state the node keeps receiving flow sync messages from the peer and keeps the datapath ready for switchover. + +**Primary** + +This is the terminal state for the node when the node is configured as the primary. In this state the local datapath is forwarding traffic actively and synching state to the peer. + +### SAI Definitions + +The SAI API calls necessary for communication between the SONIC stack and the SAI-DASH SDK are defined below. + +```cpp +#include + +/** + * @brief Notification data format for received for the DPU Control message + * callback. + */ +typedef struct _sai_dash_dpu_control_message_notification_data_t { + /** + * @brief Control message Type + */ + sai_uint16_t type; + + /** + * @brief Data for the message + */ + sai_u8_list_t data; +} sai_dash_dpu_control_message_notification_data_t; + +/** + * @brief L4 information for TCP and UDP flows. + */ +typedef struct _sai_dash_flow_tcp_udp_info_t { + /** Source port */ + sai_uint16_t src_port; + + /** Destination port */ + sai_uint16_t dst_port; +} sai_dash_flow_tcp_udp_info_t; + +/** + * @brief L4 flow information for ICMP flows. + */ +typedef struct _sai_dash_flow_icmp_info_t { + /** ICMP Type */ + sai_uint32_t type; + + /** ICMP code */ + sai_uint32_t code; + + /** ICMP ID */ + sai_uint32_t id; +} sai_dash_flow_icmp_info_t; + +/** + * @brief L4 Flow information + */ +typedef union _sai_dash_flow_l4_info_t { + /** TCP/UDP info */ + sai_dash_flow_tcp_udp_info_t tcp_udp; + + /** ICMP Info */ + sai_dash_flow_icmp_info_t icmp; +} sai_dash_flow_l4_info_t; + +/** + * @brief Notification Data format for received flow sync messages from the DPU + */ +typedef struct _sai_dash_flow_sync_message_notification_data_t { + /** + * @brief ENI MAC for this flow + */ + sai_mac_t eni_mac; + + /** + * @brief Source IP address + */ + sai_ip_address_t src_ip; + + /** + * @brief Destination IP address + */ + sai_ip_address_t dst_ip; + + /** + * @brief IP Protocol + */ + sai_uint8_t protocol; + + /** + * @brief L4 Information (TCP/UDP/ICMP) + */ + sai_dash_flow_l4_info_t l4_info; + + /** + * @brief policy results metadata + */ + sai_u8_list_t metadata; +} sai_dash_flow_sync_message_notification_data_t; + +/** + * @brief Attributes ID for get_peer_capabilities + */ +typedef enum _sai_get_peer_capabilities_attr_t { + /** + * @brief HB Interval + * @type sai_uint16_t + */ + SAI_DASH_GET_PEER_CAPABILITIES_ATTR_HB_INTERVAL, + + /** + * @brief HB Miss Count + * @type sai_uint16_t + */ + SAI_DASH_GET_PEER_CAPABILITIES_ATTR_HB_MISS_COUNT, + + /** + * @brief Capabilities + * @type sai_uint8_list_t + */ + SAI_DASH_GET_PEER_CAPABILITIES_ATTR_CAPABILITIES, + +} sai_get_peer_capabilities_attr_t; + +/** + * @brief Get Capabilities of the DP + * + * @param[in] sai_object_id_t vipID + * @param[in] attr_count Number of attributes + * @param[in] attr_list Array of attributes + * + * @return #SAI_STATUS_SUCCESS on success Failure status code on error + */ +typedef sai_status_t (*sai_get_capabilities_fn) ( + _In_ sai_object_id_t vipID; + _In_ uint32_t attr_count, + _InOut_ sai_attribute_t *attr_list); + +/** + * @brief Attributes ID for register_cp_channel + */ +typedef enum _sai_register_cp_channel_attr_t { + /** + * @brief Named pipe for bi-directional control stream + * @type sai_uint8_list_t + */ + SAI_DASH_REGISTER_CP_CHANNEL_ATTR_NAMED_PIPE, +} + +/** + * @brief Register the CP control channel with the DP + * + * @param[in] sai_object_id_t vipID + * @param[in] attr_count Number of attributes + * @param[in] attr_list Array of attributes + * + * @return #SAI_STATUS_SUCCESS on success Failure status code on error + */ +typedef sai_status_t (*sai_register_cp_channel_fn) ( + _In_ sai_object_id_t vipID; + _In_ uint32_t attr_count, + _In_ sai_attribute_t *attr_list); + +/** + * @brief Attributes ID for process_peer_capabilities + */ +typedef enum _sai_process_peer_capabilities_attr_t { + /** + * @brief HB Interval + * @type sai_uint16_t + */ + SAI_DASH_PROCESS_PEER_CAPABILITIES_ATTR_HB_INTERVAL, + + /** + * @brief HB Miss Count + * @type sai_uint16_t + */ + SAI_DASH_PROCESS_PEER_CAPABILITIES_ATTR_HB_MISS_COUNT, + + /** + * @brief Capabilities + * @type sai_uint8_list_t + */ + SAI_DASH_PROCESS_PEER_CAPABILITIES_ATTR_CAPABILITIES, + +} sai_process_peer_capabilities_attr_t; + +/** + * @brief Process peer capabilities of peer DPU + * + * @param[in] sai_object_id_t vipID + * @param[in] attr_count Number of attributes + * @param[in] attr_list Array of attributes + * + * @return #SAI_STATUS_SUCCESS on success Failure status code on error + */ +typedef sai_status_t (*sai_process_peer_capabilities_fn) ( + _In_ sai_object_id_t vipID; + _In_ uint32_t attr_count, + _Inout_ sai_attribute_t *attr_list); + +/** + * @brief Attributes ID for process_dpu_control_message + */ +typedef enum _sai_process_dpu_control_message_attr_t { + /** + * @brief Type + * @type sai_uint16_t + */ + SAI_DASH_PROCESS_DPU_CONTROL_MESSAGE_ATTR_TYPE, + + /** + * @brief Data + * @type sai_u8_list_t + */ + SAI_DASH_PROCESS_DPU_CONTROL_MESSAGE_ATTR_DATA, +} sai_process_dpu_control_message_attr_t; + +/** + * @brief Control Messages exchanged between Datapaths of DPU + * + * @param[in] sai_object_id_t vipID + * @param[in] attr_count Number of attributes + * @param[in] attr_list Array of attributes + * + * @return #SAI_STATUS_SUCCESS on success Failure status code on error + */ +typedef sai_status_t (*sai_process_dpu_control_message_fn) ( + _In_ sai_object_id_t vipID; + _In_ uint32_t attr_count, + _In_ sai_attribute_t *attr_list); + +/** + * @brief Attributes ID for process_flow_sync_message + */ +typedef enum _sai_process_flow_sync_message_attr_t { + /** + * @brief Flow information + * @type sai_dash_flow_sync_message_notification_data_t + */ + SAI_DASH_PROCESS_FLOW_SYNC_MESSAGE_ATTR_FLOW_INFO, +} sai_process_flow_sync_message_attr_t; + +/** + * @brief FLow Sync messages exchanged between of DPU + * + * @param[in] sai_object_id_t vipID + * @param[in] attr_count Number of attributes + * @param[in] attr_list Array of attributes + * + * @return #SAI_STATUS_SUCCESS on success Failure status code on error + */ +typedef sai_status_t (*sai_process_flow_sync_message_fn) ( + _In_ sai_object_id_t vipID; + _In_ uint32_t attr_count, + _In_ sai_attribute_t *attr_list); + +/** + * @brief Attributes ID for oper_role_status + */ +typedef enum _sai_oper_role_status_attr_t { + /** + * @brief OperState + * @type sai_uint16_t + */ + SAI_DASH_OPER_ROLE_STATUS_ATTR_OPER_STATE, +}; + +/** + * @brief Update Oper Role state + * + * Updates from DPU for the operational role. Current state is passed as a attribute. + * + * @param[in] sai_object_id_t vipID + * @param[in] attr_count Number of attributes + * @param[in] attr_list Array of attributes + * + * @return #SAI_STATUS_SUCCESS on success Failure status code on error + */ +typedef sai_status_t (*sai_oper_role_status_fn) ( + _In_ sai_object_id_t vipID; + _In_ uint32_t attr_count, + _In_ sai_attribute_t *attr_list); + +/** + * @brief Attributes ID for cp_control_message + */ +typedef enum _sai_cp_control_message_attr_t { + /** + * @brief Operation + * @type sai_uint16_t + */ + SAI_DASH_CP_CONTROL_MESSAGE_ATTR_OPERATION, +} sai_cp_control_message_attr_t; + +/** + * @brief Process CP control message + * + * Process control messages between DPUs. The Operation is passed as a attribute. + * + * @param[in] sai_object_id_t vipID + * @param[in] attr_count Number of attributes + * @param[in] attr_list Array of attributes + * + * @return #SAI_STATUS_SUCCESS on success Failure status code on error + */ +typedef sai_status_t (*sai_cp_control_message_fn) ( + _In_ sai_object_id_t vipID; + _In_ uint32_t attr_count, + _In_ sai_attribute_t *attr_list; +) + +typedef struct _sai_dash_ha_api_t { + sai_register_cp_channel_fn register_cp_channel; + sai_get_capabilities_fn get_capabilities; + sai_process_peer_capabilities_fn process_peer_capabilities; + sai_process_dpu_control_message_fn process_dpu_control_message; + sai_process_flow_sync_message_fn process_flow_sync_message; + sai_oper_role_status_fn oper_role_status; + sai_cp_control_message_fn cp_control_message; +} sai_dash_ha_api_t; +``` + +### Control Plane Channel Message Definitions + +The below definitions pertain to the GRPC channel defined as the Control Plane Channel. This channel is established between the SONIC stacks on the two peer nodes. These messages can be originated from SONIC or sent by the DPU implementation and relayed via SONIC. + +```protobuf +syntax = "proto3"; +package dashsync; + +// IP address families +enum IPAF { + IP_AF_NONE = 0; + IP_AF_INET = 1; // IPv4 + IP_AF_INET6 = 2; // IPv6 +} + +// Admin Roles for a VIP +enum AdminRole { + // Unspecified + AdminNone = 0; + // Primary node for peering session. + AdminPrimary = 1; + // Secondary node for peering session. + AdminSecondary = 2; +} + +// Operational state of the VIP +enum OperRole { + // Unspecified + OperNone = 0; + // Primary node for peering session. + OperPrimary = 1; + // Secondary node for peering session. + OperSecondary = 2; + // Standalone mode. No active peering. + OperStandalone = 3; +} + + +// IP Address object +message IPAddress { + IPAF Af = 1; + // IP address family + oneof v4_or_v6 { + // IPv4 address + fixed32 V4Addr = 2; + // IPv6 address + bytes V6Addr = 3; + } +} + +// L4 portion of flow key tuple +message FlowL4Info { + // key fields for TCP/UDP flows + message TCPUDPInfo { + uint32 SrcPort = 1; + uint32 DstPort = 2; + } + // key fields for ICMP flows + message ICMPInfo { + uint32 Type = 1; + uint32 Code = 2; + uint32 Id = 3; + } + oneof l4_info { + TCPUDPInfo TcpUdpInfo = 1; + ICMPInfo IcmpInfo = 2; + } +} + +// flow key for IP flows +message IPFlowKey { + // ENI MAC address + uint64 EniMAC = 1; + // source IP seen in the packet + IPAddress SrcIP = 2; + // destination IP seen in the packet + IPAddress DstIP = 3; + // IP protocol + uint32 IPProtocol = 4; + // L4 information of the flow key + FlowL4Info L4Info = 5; +} + +// Flow Sync Msg +message FlowSyncMsg { + message FlowInfo { + // DP-VIP associated to the flow + bytes VipId = 1; + // IP Flow tuple + IPFlowKey Key = 2; + // Metadata containing policy results + bytes Metadata = 3; + } + repeated FlowInfo Info = 1; +} + +// Control plane operations carried in CPControlMsg +enum CPControlOperation { + OpNone = 0; + OpStartBulkSync = 1; + OpBulkSyncDone = 2; + OpShutdownPrepare = 3; + OpShutdownReady = 4; + OpShutdown = 5; + OpSwitchover = 6; + OpSwitchoverReady = 7; + OpSwitchoverDone = 8; +} + +// Message used to trigger/Notify state change events between peers. +message CPControlMsg { + // The VIP this event pertains to. + bytes VipId = 1; + // Operation/Event + CPControlOperation Operation = 2; +} + +// CompatCheck used to carry the compatibility information for the node +// contains information about the DP-VIPs, the DPUs capabilities and any +// other relevant capabilities to be checked. +message CompatCheck { + // VIP related parameters. One added per VIP. + message DpVIPInfo { + bytes VipId = 1; + // Address configured + IPAddress VipIP = 2; + // Role of the VIP on this Node + AdminRole AdminRole = 3; + // Metric used for the protocol to differentiate the primary/secondary routes. + // Valid when using BGP as the underlay protocol. + uint32 ProtocolMetric = 4; + } + // DPU capabilities on this node. + message DPUInfo { + // Configured interval for HB messages + uint32 HBinterval = 1; + // Number of HB misses that will trigger switchover + uint32 MissCount = 2; + // Opaque + bytes Capabilities = 3; + } + // Compatibility/Capability information for each VIP on the node. Typically two entries. + repeated DpVIPInfo VipInfo = 1; + // Copability information for the Datapath. + DPUInfo DPUCapabilities = 2; +} + +// Results from the Compatibility check between the nodes. +enum CompatResult { + CompatSuccess = 0; + CompatFailure = 1; +} + +// Results from the Compatibility check between the nodes. +message CompatResults { + // Compatibility Error information pertaining to the VIP + message DpVIPCompatError { + // VIP this pertains to + bytes VipID = 1; + // Error code + uint32 Code = 2; + // detailed user readable reason + string Reason = 3; + } + + message DPUCompatError { + // Error code + uint32 Code = 2; + // detailed user readable reason + string Reason = 3; + } + CompatResult Result = 1; + repeated DpVIPCompatError DpVIPInfo = 2; + DPUCompatError DPUInfo = 3; +} + +// Control Message. This can be either from the Primary to Secondary or vice-versa +message DPUControlMsg { + // Control Message type + uint32 Type = 1; + // Data for the message + bytes Data = 2; +} + +// Wrapper message for all control messages between peers +message ControlMsg { + oneof ctrl_msg { + DPUControlMsg DPUControlMsg = 2; + CompatCheck CompatCheck = 3; + CompatResults CompatResults = 4; + CPControlMsg CPControlMsg = 5; + } +} + +// Wrapper message for all messages between the peers. +message SyncMsg { + oneof sync_msg { + FlowSyncMsg FlowSyncMsg = 1; + ControlMsg ControlMsg = 2; + } +} + +service CPSync { + rpc SyncChannel(stream SyncMsg) returns (stream SyncMsg) {}; +} +``` + +## Message Flows + +The following are some important procedures and corresponding control message flows + +### Node Pairing and Bulk Sync + +![](images/node_pairing.007.png) + +Node pairing follows the state machine defined in the previous section. SONIC stack does initial connection to the peer. For each DPU pair the sonic stack establishes a bi-directional streaming channel to the peer. All control messages including bulk sync uses this channel. There is also a parallel channel registered between the DPU data paths directly. This channel will carry the DP flow sync messages between the DPUs (represented by the orange dotted lines in the picture above. + +The initial compatibility messages exchanged between the peers ensures that capabilities match. These could be hardware capabilities, software capabilities, scale limits etc. As was mentioned earlier these capabilities are a combination of capabilities from the SONIC and capabilities of the DPU. + +The SONIC stack initiates bulk sync between the peers and also notifies the DPU via the SDK to start bulk sync. The DPU sends and receives flow synchronization messages via the CP stream. DPUs can back pressure or optimize the bulk sync process with its DPU peer by exchanging the DPUControlMsgs on the channel. + +As is evident from the picture above the Datapath flow synchronization may be initiated by the DPUs in parallel to the bulk sync process. + +### Unplanned Switchover + +![](images/unplanned_switchover.008.png) + +This is triggered by failures in the network or a failure on the peer DPU. This is typically detected via loss of heartbeat message between the DPUs. The DPU then notifies the SONIC stack of the change via the notification message about the HB loss and initiates the switchover to standalone state on the DPU. Once the switchover is complete the SONIC stack is notified of the change via a notification. + +All flows inserted on the secondary before switchover are after evaluation of primary`s policies. Flow resimulation triggers the flows to be evaluated as per local policies. The SONIC stack waits for confirmation from the SDN controller that all policy configurations on the DPU are updated and then initiates flow reconciliation on the DPU. This triggers flow resimulation to update policy results on flows as per current policy configuration. + +### Planned Switchover + +![](images/planned_switchover.009.jpeg) + +Swithover can be a planned event for maintenance and other reasons. With planned switchover the goal is to have close to zero loss and to coordinate between the primary and secondary to achieve this goal. Both the DP-VIPs will switch roles to primary on this trigger. + +The controller initiates the planned switchover and notifies the secondary DPU to initiate switchover. Once switchover is complete the newly primary DPU relays a SwitchoverDone message to the old primary DPU. The old primary initiates a withdrawal of protocol routes so the network can drain traffic. During this time the old primary continues to forward traffic so any traffic in transit is forwarded without being dropped. During this network convergence timeout both the primary and secondary are forwarding traffic and flow sync messages may be exchanged in both directions. + +After the network convergence time the new Primary enters PRE\_STANDALONE state and waits for a flush time out and transitions to standalone state. +**AMD-Pensando** 25 diff --git a/documentation/high-avail/design/images/channels.003.png b/documentation/high-avail/design/images/channels.003.png new file mode 100644 index 0000000000000000000000000000000000000000..fc29590b304085acc33dd33c80063a950d8d4368 GIT binary patch literal 26479 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 literal 0 HcmV?d00001 diff --git a/documentation/high-avail/design/images/dp_repl_packet.005.png b/documentation/high-avail/design/images/dp_repl_packet.005.png new file mode 100644 index 0000000000000000000000000000000000000000..39c73c5c488c7792f508cb033e52420367b29767 GIT binary patch literal 9897 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 Pnn9$*<;99c3_kx42s>`n literal 0 HcmV?d00001 diff --git a/documentation/high-avail/design/images/dpreplication.004.png b/documentation/high-avail/design/images/dpreplication.004.png new file mode 100644 index 0000000000000000000000000000000000000000..5a70e2d729c1ab7563872223ea648196bcd2d524 GIT binary patch literal 31626 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 S13#vHO;c4@rQ(@Q=>Gy7rk!&D literal 0 HcmV?d00001 diff --git a/documentation/high-avail/design/images/ha_sm.006.png b/documentation/high-avail/design/images/ha_sm.006.png new file mode 100644 index 0000000000000000000000000000000000000000..4f9bbbd42eb2775430b7cebff6838e22434f447c GIT binary patch literal 107090 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

Z1m1!1K`c#h+XwO>CFS_bGy*gp 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 Cl2C>K literal 0 HcmV?d00001 diff --git a/documentation/high-avail/design/images/node_pairing.007.png b/documentation/high-avail/design/images/node_pairing.007.png new file mode 100644 index 0000000000000000000000000000000000000000..565d649c8b18cf26183c5cd68a089cc78c08692f GIT binary patch literal 68386 zcma&OcRbhs{yt872`wTN+C%opNVbF&N=8XSva&Nu1KA`=NC*ib*`tt^tRx{>S=oF4 zu1EDg=l%WM&L6*XJDpR!#`Cf6_v?OL*ZtwHtSCdZj$s`I1qGFytfUGB#WEoZ3d-;` ztMC&wb6fl`#flpzwodBE77c3|#$pt|T*||H{xa?eWLZm5LC2n!3oL_kHebB;f%EVJXzklIUv1M`6D}Pf@ z>|*;QUWorr$c;7ef2Q(VCr-0MoaXNA&Sgx$|Hg2bwuk)QrP{##xXkb0NuOLH^!rUb z8WR?D^@Amjmp9O)C5x7ZhN9s1 z^3?{dc_O=Z?V9k@#1}*`e;u&?lBA<#Vsa!@$Vzv-rzW<(zM-}IQ)tKMxHB6V`8H6< z`A?6OuxuB!&`WT1m};@1->{0}ePQ8tAQ*2JIxL73sX0%nwxWqEsO`uXPLIX>(NPPjR*5a`NYn5N3ZiqR zX8DpYPOsbOD!b6+ycCPr|XF>+SoR>eS&e_flq_3r>mWix+ zZQdcR?Jy!Wld6?%&3SXun9ub4q5P@N0Ht>=Z7Wi7+niT zvh#P(t6N+1^*1ENoKMw1cW4{4T_>%|nKP7+IWMnjYiqN;d2?(ay>+zBmBnK6*ZEDG zH+K!uZQaUg`aQ>9?pp4658g66-YcP}#~vx|)$YDGY$q@8*6bEVOenp8+0KQzsjF3C zB6?S^UQW~KGN36iO2gCqGsv>?a^3mqkqykkk3}74ef|BH-D))6BO(&In#I94DvCYK zzHk4`LTidf!iF6JG%SQiXyMVYj$%web+z&;Du%mty-_!(26HC9T-ZQ=lp;-|65Gv> z-Tm$LrqK_Krbiv7&0eX+&pXQb8|CKt^v4^(3T!Z*Q?_?ZTgEo1yRIStuNq7N(l*`xBb28nlW^O1Q21 zK3^M@h*oK9JKgfo&fdN@&+(>WxTu#}eDv$rzKaWU+*d#CAe+i{BhzEvYuko$#=M0s zd9Q!tq3~uAQ#^5E+3|$+*W12*HcAs_|C)Q#CM7kMGQ(kpD^mo z8$2s3MVMHzYSpspEURnn?d=&0lTC7piXR#p=n~XCD)j@>(=`$-e52Smy53p2e%n#2 zzO(utAB!6r#?7BUeVX>h&yR6w3;w%LCVngFtB(&Bys-z5rZ?D}X~BQpEAvLTin8*~ zd_MXO4&ya43ZX)QRibkn0?Nj-=d|A#oDTI-qFK=<&BfsLG4xnaxYMlr-McHu)_P{2 z^*%zv)pj7QA;Wg$d2`)zv&DJ4O`A5!%F6EK=bw7%_$Vl7GYw4vzB3MIs_|-g^s85% zQXbnbC7(ki-O0)6=f%ih8zHe;u)6ni+~$MoiF#e-f$Y0?*DI~!VO@2HQb$LJA}2Q& zJD%;x5pO&xm(#rM8;$D;%sb-i53G*m*T`Khgq57fz8SrnjLGJ-9lmIiH>2-z=g#T4 zvqc|1q+D;}qd0KjfPmAy!1Zr$;)bFY<1j~NZSPlxIZmF})zy8>b>+c)<7ih!;~T@x zb5lb>t#f_xNti4AX#3HN6l~I-1x-yM$A)q?XSZxDz^Ol%Zo)LyT@{q>+~LJ<@a@fh zOxPjJJ%6jin9Y=y&gF1^jq~TX$Hm3z>Fa;7Z#7D@82%x?afg8N!F_pL`&MAOSdS+N z>TL74=QuZM-dXC$_}HRtDE5W+;%Eg&THo%oQ}l=wDr#zb^3^ppHLsOMy?L`GzFywW z&Msk!nnm;@c2^REwz*AG&gi<#%*+)lR#c~6Rr;vUJu@@&)tK+mq4V!?oF0ogi>}{x z$Tz<($L@yUPDAYQgoS~|RM+-)j9d3yvhK=Or@6z}Z@LS!6YP8UUgir4=DM(;G2 zhP8K@MeLt7^ix(F@J!Fllr61osM1Xy{(f`Fyh>z>;zvhE;g5HBwhP-Ht*NQ8#rA)3 ziqV_tnDmt^yD6I9UXQ%ikT~I=XTR1`_wwanA*%yx*RFLKE!+Dsgx|;4mqz1_fw--$ z05dbQt*z}dl{kvWc*$O+uukt|gFhl%ncF8CbV^!V^F{qGCkFrJ}m>@iC|H z()`$QtMqQ0R>zX;p}Y(ID;9D`WJ4;Y|NT#_-AHzzA6cWLrh<9zRNcZN@fp_w0%LE)e!Ne`h%-@O%y&7x$!_@FY9#R^VoUSfoA)UEm>bGp{R2m% zD^OkAZ)(JOY06pe%9UiN1$zq%i=*@#JQ?}DRpZtC{QXZjIOGV&L~%~{MEW2yP}7Up z^B|4zggcC`T}{obSN?GS^z3Xq*2Q<1gqcw2V}(6gHbdST36Jj3dPz$tD0ns(rXsQA zEzVwBw|;%*%+C;aH@AY464!!)8p4+)?e+FN5^YQ7fQxd!K^JB09&y#qD z79@Rs<-`ovTem1uQc^IQi|s}3l9H0c%{QtjtK-!@86#=M3Sq0CVnT% zk4;8?^~N2(_>kw3kxac?3j`!A)cO#c6e@njX zdRA3+cd)`9!>PfRT9K({Has1&fm~MCqYItF`IuPpVni8Pe|9;94`0OlBY1t>%a`)A z<8?~WsaLD`3ToDRRn|nxMBg0BRe$;Nr9b{eCFRY^mseH>A~{DRnvgm1FVpjX@ZdpI zMutF{9+%wZ51xMaH!>Z#-kPU{Pq+V-ToNVWx=~JSe)x_h(t7X0RBKS){OHNd#3kUL z+MksnjMK7OB_`=7SKSd`ykMHz=#;L7jb)KNd_mo*)qqESqpO64zz!9xPr|@Q{Zzfw zM)r`(J-rk5aVaS(7`=aCTZU04t2MDKH! zh4Zc!-QS#fL!|qDf2gRV1_K}>kM*x}y#Y$1exqY!WEsAGJy)imTGrHP%(tJ9PYrX{ z*OZ?01_#WrHVO;3z+X*}Wv7`y6rjdQOvYkjqjBPd2F;?nTD+=#PlRjKyF05-n&yn$ zAFtrZm$lB;n(Y=_+8-SiRoWyNs%VIlPz#KB$ZI>dw2~= z5@|pMN7u5wXzffkU&yIsIwzNBH0mpbCafD&FF$$c-AMT zVR(4hcgSBEIkTiB)ox557@fnE0KIJP#E*>8ik5WEKCZ5=4ifM39OrCDis=Z9FiO*4 ze&pIGbU@Bu)0K^l%?_xM;DOHTzpRh>vjcRVj!%@BFte$&<5=@P{KnFk*Oa-7v;7Yr zK0JEq{R+|PAItNm+t*{I?E2zjI!C(P+}3>XVNr5&%FB6vwQ@Q|E&j^zk9UVO-ndPD zzv+X0?)UKFUA6e#d-mM_6ndVx&On5>{XPr14a=* zvM;CR&C=q|#P|mX%K=pd3)^v_9N9ug$8Au(GjCz?f?alH2!BQV^<}6ifScYSb9TC$ zDz_9^_Eg`#vzoemNMvEWZj@EsMVSuO#?RC$(MY?op9q!raei<7`pSu*d;YC)@D5L% z471x$pYF)A>|J(N=V3FBHioLHN(u+<_{5}h$u2&kv$2aC!DnGJaO(6;s1^4ixm64Wkp1sh#oYHAql`I>xLc9LMC{Q%g zjEWHt_a8poRZOQ-WR&*2#sC}T;}c$w;bF7ciT)C7314>iq5P#Vl3Lf(9U1m&d)oTWcBWGnr>UImZ&KQ6pifOnb{py zc=70u-d^{27cb(Kckkcl8*lq^40XmGYSDdDcNsUV^7r>Ymua#4WYCf5%O&2O-Q9I> z49_4u%AgblM81T#0cmhyUxwWr6rACte$R5V(@*ATNaghOv~NH_A!g;8mx87t&YI<5 zb1=rXP?bMbBf~QCk-O@(?TD^Mx`|eh$3*>sK%@CU)6as{f;T4*DTz#Mx%TDNyIxBI z0`Yw%Pk66on6)jt@YeWUMTN()!HhcqEyG2dm4*R&>HzT(PAy(4vgRUJ@N12Pa|vphu2ba^uk$_5#3*t)&RW`4zUIiAc0q)yt*za6@ZjaX z&v62wilU3tmrqDYY)7@p;xJ69<219IT6mZOIe;B$l!lJCp?7g^=<2sOhDAk1Kg9F778e&s6K<1*4+{(9G5!9ug!$%%TL49o4gH+K z3OVDoC%0_dHd=dt3Wy&e+tw zR6U3TdFF+}rQ!!$Ner`~c8Q6JXxiRI+dISv7&$6nJ&&<9}M zA?olL2ih+@T*=asM_gQ-gst@N_8tf+B+J?PrI(hTOE;hxR3NweHgkg7`uzDU z5>{97vfXm+!)=A5HdL#Y8yXr?`48ToY$|)od-g#6(!5Omk=Ctu#h$CgCE9TpEZGO# zicPA2_YtMAU2k;I(O?CIrviR>>V-jTUT2xQ+FDy6+we`+94 zvhA?OYpZ^>BU)LKIHZR!yd|8+_+SeuNCQymVBA&r*3-Ri8c=w`Bj>d2J?7YMrYk7< z+#%zZtiT)HpJ=yiku)=Vonu{-JN3N+#X-;a++*EU;Yl}UwU~Q$9JBU}joo)dGot`o zzPB}BOi6fTg<{NR>^qGF=>)YgU^kRVGA~Yr?BQ6hbz`-sbR?o#iu01wHV*BNn1Wyd z^LEv_;qmc@t}M-M5#a%Qm41ep=3N3?1T+zV2gE6{11|WQc8!jN+Meo&ry@7Eg;ajv zt`c5;cC{d>+A=aSZu=YuMR*C7Xu!jVl0esX^CKm}JcgUHZHDrUvJ)<(m-Fx4u$}8J zCkrP&<&_m9*9&FyPRC;*dz8|eii~NADq!vt2tB5`s zgm+v8@&M08yJLrfk?ALs>&Z9ux$qK$IZ(?SQ{RCM~<1E`o*e_ncrt6J&G}ZwW@n&F<`I)ie=@g)}3;yhvKoj2hxdCO8<*%=PsF^Xd`wtzG zjI5!drnXEZex@E9n+nk6u=cw_9@1MlCzN5uV5QL#Rt zOj25U6`<$pm)&At-gJYV+QrWgM(?Do>>9ohFKisbsR&v29Pj^b3l$@jOzW`D~>M3-7>*Qx{Zqls;P95ZE~vr@!5YLH)=8W&L&MQ;eG2VlVZ-8ZOSy zfVrzh8TCdZq1k%r?LyK_<-xt(4LOS*BFB)0t&WU5sn>T_suX6JHvM67<>+YBRzpY# zH|z6w7`)~~TNjtooA#eqQ`?4<`x9h2nJwT86g!GQE(rqw(6aeX3lvZ*bPi<%vbsG$@vrPU#V;)yVX00hl&Qff`ro>5^>wQBBdvpTQ)gSptN4C9N&4O7^ z{bFOZhhOI!OGCi@{1d06zdvRi0S*9+$Uwnj2x<^^ z(<3E=9J51(X*=0?RZd>sXp4^xkz5$WcE2)J?~XXwHXHcpkuF~d_*3?yM}5J2W1SFN zEVjI=F<7&9tzWl*l%yoZMIMHl{t3jF%;L^#M8+|oNDPl;o9E4E;@^hPTk-CS$;a|i zE32+EFBr31y%}|ShaOV%yOfH(3w4|A(_j?~l#=U;a65h#92QmR3MrZyWq#JB6*jDW z@z>nv&u-ft=*qe*^hwFC`4)GFSVli*mt(XO^=Xn$2R!`CC1`JZ|JIb=d;R}Ykyxu~ z$wNidZ2J2~uSaVv$xp-$-fWo|w}|*w=p+0I%d}qnc0vwuyiWKzOo9q)ii&BZ%+VZ6zUhq2-1j9Xba7+Sc1!_C5Dz@3*vrD_5>0zyP5Hz)Tz|0zV*}X`)uPZfYage14%&Z$M3o z+Pb>^`}SS@QE(flb!GtpdEL5o^gISMKFmGffZ z;q>Mch$N8jeCCe-EMBK8ll$)4BsV$ZN6k%MM@eW`F2v(xk? z3=08m*)z-|5&KHne2zkbdZl)d?2LEs-cbef;^c5WXFC1oKr?af8vn2cXc*ix5Zy8W z08jbo_6{Gh4?y$eTWSnY*W+0L6RuDoVLp(KqLh~nmxD;YuPE7o#)LR933+|ypI9%9=D?Q#X=o)x0XEr@GSF#HI{c7B@)y& zZ`x#0KSzK>K}ALUmpR_tLrA5gH-$nIzwqTRc%%9$P|ZIx=5+k{t(>ZZQwNDYJt3|j z{X4WFiiik#okPKa({Vhej&|F&4^TWizwfw3>SL$*=~W65Bs?{rdyZpN@$q932G>^T zTK8OP{deajM+%gK$jxs|S~R{-Li0hjikh&it7~*FIy(B{qetaQ32O1e4bmhsKU5s= z;n7u#4+JbHk_!aCO6(P=ar#hKHZbtGbyM3v_{R(I<_*ucbknLcN+QLOn?E9d_TUr; z2L~&Ji-zJP>L#BfOu+Kh8>5ihTe5BHVw6~*rqAFMoKMkPOQ0C|3M$78jM&9&YfWTb z>0!+b->YGE_lc$oo&u@{DNxyDygS>AJp^`a1kQmDtC?l#4$xf(SrMPt`z3)9ay{q` ziysA)2ncRa)I>$Y5P*>38-dE9;ZQj~Cf_ogE$O4k#t#;i#2CexNQlX=w6Y)JDLr7T@+UZ^H;a(bZa-MdhN{-Pu3&OnzM3EKkY@A>#pfB*iS zf{3pa&xjg8U(%v?ePZ`0>Pvr{)AIe&O# zScd~~|*jcr>WHZEIvh)@muOcmh1M&n{hnPTX$lC=C-#>b5G(gkYWKrK{oYdYa+&X z-(N6sq?Mo~=~$Jf&y_w)g+^VcE&9a^|0hq7LA#Snm@k8O2hU@YJD~>D?5dIQ0#peO zu+#jA455zFTb(>wOi+moBQ6~vMeK>KVJrV1%YEf2Zs!fH1IW&#M(7$%+71{-Fe)+KV$Q0os|(z zZp=(8&8^g}<>l8QwNLq5m+0ti#J9Fk`0*{zX1jL6KVm(3Y1iTV@M8he6#7 zDkz3W5GBU@>OBC0gQBBF|Mh`D6778lbHIk+%i&G=xJD64)#+JFO#c#dyZaAiCyVr+nM+9P5=vu`5P?U7sdUtl$GNzSr zLy5l-XHrdCgpO$E$lBY_hMVMrVcEzebe4MmTMU8o^2>{$Q$DvsO+^|TPRi7T_cTS^KSs6E1T zQHxIR#BzamsZP=n3yRJ>QlxzAUk`{Codj97ol9>G@_++~5v(OB7sA|ws(W*-!MnCr z1!6apZ=iW!@cR1td$2JPsW`8cZ^6dYaTr;Ngd!EKl58`i4Nt_Mb&l*;#@X+N9w8LN(vKrSE(&KuL#?^k*g4yt#D?`)R+&mqp3U1tih zczmFVj)jETXj>+-6q zfjO;BCfQzKHb?@p6bdC{0;T@1F}3%Vxr0eRx_$e0#9u<-Ku|0UwfSBKNxU4A5g|;G zZuau+d>_$o;hJm`?o`xhAAaG}AXF!CE{={s;Fgm9@FD=^Io>liyOV9uz zwcNC++*#Zvr!C_C1uU^ca{sBu9VE*am^0I%eE23q_Np7n2Mj_}BW)I$yRL41MA)7%3Tia=>@H)0c-<6~mBiSMnlalwo&L|BOxLHs2 zE)*Ds4T($$O3e1TVaUUD2%T!L&fRV?=?0S1$KE2O2TlyJ-T5$!V2|%Qc+dm5Q5lbN z>C!GF?B{rD7`v9g#%VzapMjqSybTq|!(sy-;#h-SB8gy%eREb-dE62#w4P*_+9 zGXbic<=ELlaQ{U#^zT1#;5`oi1(VEsh=YVL!kUB0BV;g=^T^ z>;^1E;5i7SVG^>W_yGb2eiobpQa*qY!xQ0?37+BP#OAqm9c?Q2jbO)R)?rvfLs!M^wP3ZPk8)TiW*^lf`OroR2^_Ak_rkU7!Dmu z9eTt+>@d)sE1(2}3>CyoK}d_#$#()dMx0JKnm}^PpTX0(V&zIsNLODHwJ;Vi6LnWg ztPcM@5m}E6WFG!0@MU6uA}vAoc&fM;iUTyvRVeSyoueoJ!00JL6-&U$N??)z;E=U2 zT07Xnz#Wm|r>jc}yMfW5u)Pr<%o(~?pOv?=q51$`G zX2l|OHo)w-9H;$aWgfUg&w8UPsO;Wg(<+u&h!ky2A=$&~aE>d zlEu{bV%0*Ob)r?ue7s_*|C!b>GOhawZz8icAn;*9y;ftZ^O6V-K6EMSTy3AaUUpE- zsKYIVn6O`sn=@!}*x`wV5$QRA6N)AZGZ43yLRz^Sj%B*gucINcFLC!b+AF73?Dp-c zrrn#K6l#bES+GV48x-{TmTL4QJ(gi;WWf{FMLhy_@i>2xAbF;JM0rxBQxv{*3fN7Yipy*y{m0I`R5XOH4MihxfYjr9y zwS)^m`TqNz-Z$;+l5cb?B7dSXz}^Q$+_#jEG=V7{E?7=I45r8b@#B51qKTIOEZ5&t zu?4R{^m8O-7U8DXpT%t4l znOXZ#*gwqN^ueT^yjqQ@Kd<*hWkf%j?>{nHbp`81%zZ%FCOuI+LMSCrACPKE%85$O z@=Al(vCdYc-b@%yQA>~lj<77KDnTh{!ZAfyE}*Ta!gl@$-JJI028b;u0knu!1*BKn zWcuZjjj*A}g06!8ev?2fFej0aUx@3P6a_HXf=cocnWRV9fAQwc!<-ypLV==wIuG+9 zh)g2pXy@Ad!6gST1!lS!8KXX4of`x_gl@)t4Gep2Vv`0X->{WGj~b;(4?5_U@jjl> zrZgYSIgm8t?9@;dPA75Y0ch+&VX-vdErz(043Y@O3_**|H4umPz-eF7?wfd5sH~8JX^MWrfIB?&6IGo+WYrNkRr;D+NxvYObl{YeLNjJc@TMZ z(=mj?4t`jOfJXn6cr zV*s|>X;sx?up^lW(*(K#1}uAqWCGO?T1j2q=0N#ktUqCCVQPR;1^NeJJvvH!x*_-x zgah`IBw$$EnuNzbYGwRuwSkBvHQVZOzH~s!!a0Dogw^#x;DcQf_hG1o{45bu$7%fa zC2=AmWMtf&0fS zT<1gJx<%{_U~|?Z=nDxGCIY#I56aT@7{us%)xnD99WlXdhnmLdmVUd0=4)DeVuXK=EC!v619%e zy^u687*y72asLOEl$FYt``%~IO6iyG4F7*pIe>!lDKeRVlnPR+6YRj6f1f>ZxbOeI z8i}8EG{Qu3aV=pR8aBFGfgeo$}Jg__8);PcvL z#FGI$@d)DPgRzBGzqy}i!u`x!7dPY|B!l3c3G(xM_fj=p_TT`F@JE|_+@xj4dp@h4T7=GN-k*?;w|znqJr3CbDHW7e zN<_fE`O1WI$;-e9Bx&b%c6+Q%-1P?p09=TJk!$(fse=_+zG?&EU(xSy+)4j4>Td=i z_xG*ME-TlAdqS-j@boE+6IcKJ{pjbZe|VO&xyE#?3Z*QtdA*^ZsJK})@_fb8w(e|H z73K|rE^ZO=S+p~I3ALhi@^83B9rZtctStGA?d%zqVl$b)8WBE0YK2hy-K0JLYYhYZ z0w4aFek`N7oPN$6(Lx*Mh57fof(`q8`2hp}U+6}Ad*i;VAlv?~?lbl#n}N2rI1cTx zF{bP@z<8YGg(|-#Cx10%W7+32&&hhr>!u#--DXq4E2e%;7%$uP_wzpfiM(v1N@o1e z^Rm1Jmi`J|tBclB>-Iz^lDz_;(Xfe-eZLocUz|t$F87F_-*dr;xsdrY7s?9H*c5GR z*iNgHL9_M6_q+X}u?dpGkNKBQE~1uy0R4g3K3kuiUHd-GeXPampQ@nQYWJT>LoN9% zMWw2j`)XpQ7r=8;?(Bg*0q!VDLXaO3yk=lh*;-$JAR`9bkqa)w{_omPhg{4$_TxxV zIq-6htME4pW-2)R(gDiSx)Cx_u~c|1$;H)mH5lVdXkvO87V2rtlMhvnsMOF5%;WE$5_WtLr z9+!#TV{h3P1P!Fnm3l8&3ZzdyON+btyUg>}zxRs4ewFjnkpL-A#Rl+;lyhJ4{xCoL zCz}S^Ka6UTmO447-hD@dQ7IS2?VPW4!#owWD*Xn%Ka;XmxT3HG*p5>QSe~ate*m$( z9SJGv6Kb0!)Ln+BSpWNpTX4oUYmfIpoAMH9{b$8!0{pg0j`w8jh0Jv|+))}MQ+DKU z0R3Tfy~9!nz@T*KdrKOez=JtsiZfQ=n^ALKM8TZ)ef2&VIgo^!E$dFH55&BD`2hLt zVrnBW0qH#h53p!B>w`8PBsm0S)D7u|nqcf9YKwkfyLk^ROE2PUFVMl4N__a%1AQru z%U)eb_crhNkZBpd6yGn{s)S~tdZU#E0NPL!G#m1&!o`-do4yTL3kxq!E9JMC>}6wH z?ooUKW{#1`$rq?p@4TZpuB_}Ud^;cU9;7Ddc!HVqQ%}S4aPHh!tLQO%t$tghzgzP` zPt8m=hz0gPwk0S5Nm);_)rx^OW?L5O=SSw)c&UsrZdAtx-Iq90OMTRlDs1+BHB|l(&tSQ}eFATUSA|Y;27oaWYYq}{*U|=91K?>YmP{Z(f zXkf8GflPtcH3e(yw@(|u9l#9xtlo%{*eLM%B^Qs9HXQWD6d>JY!Zng$$-ZY#dvC8C z&bqv<&FLga-G}c6f{3-Q9r|%uxTpXp(8!y9wX^t2JLIkvoLn zG;!hrh#!9+egG<@?20BLhWv4DQIggh=r23OoHQ2~K{5(DOb@GeA3yaSScH5w>@ak& zB$75P3RtlSdt&i@>$YwFfHjbBpoUchahy4KPF6#M0lfj=uj2pl-T5~UQArg~@U9@l zV~Gz-_w+~yWQwP74{J9pa&vJd+9$=v_9*$ZLjJ?)4hRgC5*MdL3i$wI0Ay6}9fI$H zNX}=N?Lt2j%&FWqgPIUQi!d{UGX>H7N+*9Yt9Dxb(D{_2uDLCX%zw&?Y`;ewI*M{~ zYw?m_-_kr#$JNiyYe=Z8uVUi`3WTq1wyst4^+ifNR}3&XY4|#KuJqC23#2I#gZv4< zeK(}Z=jhH7yzx^RxC3?-z~24-?8y!@qe~07k}iQ0hkZ2DA)l%j2^0&dtfJzA20ZLT zL_7qoM$kiW388uA^!f8;DOW1cV}M7!OXdqe8G-(5>Q(Cf`}ac!#|n~GN_@~O%}jqV z!+A@KHzC8}Fhv5ppsVGL8bjXP;4x`W`gaIo^k@_WfFNknG;iiUK9Wo#>83#gmH?Vj zQD~6DoqV~5Mmciy*DNcd(L2Cbft5`Ks3crB>7Qx^_}>ZM6ObP4KAbH0{be2oQjdV( zM$ZTSK|G~6Hl404PCNfd|9+1ieSpq)KFvrq!SPeLSU8M|+m2|up~n$t3;k50bHBJT z0v+cCUVIFx4pda$qajoPK0gAVoF1)*a(9Y?9FYEdf4$O@F$V} zBD|74hU_U;lwF9NKM-zl(pY}hwMH|U(}5&I_VGa{5t{GTp@K(KFzKiTxF&WikZ<5r zc^IgWDGM$h1!g8~W?)QNQFvXcc+`fvBPfUt&yR3n0WVycxCgr&DPhTWf>#VozBCRd zx@isoup-HT(Zkw%(sR1N8{B3o)R^aZ4Am#HCoLVFD>Nblo^~?UJjqSw^83ERe zcZi1QM$!ZIi5+h?+9`)6hE$5KW#TM^+7JIiho21dr9U192CyeM`6!#=#^<**&v*!{ zB<#=>FkE9e2t0Te6u+R>cEQdAVI3+4&ik*XbRQf-7QBo+x}BXMdLbXW7Hnh@h1s$V z(*i9DzSz~r!PF5_2M#IN7-qiMM%L`3R)v^Cs>0tb8%wY{nj@+zh6&5Te<>#?*M@@u zeQ6Ud?K_;x3<#+33SoB;^#CoWawkt__t_rawjOQ1Ct~Vq(oJCrW6dMxG@4|5WN|0^3~v|;qoMs20B0V z;Zny;*1|Y&;>3y0u%9?Pn1YdQ$U;6n9PsKNF91Fn(PJyL{!W;V zJsEf(K+CPeY?Ih`pPJbp$@Fs=R!h|}pyEdci;Z~@4&HF98Rx}lG_Z<0qnnVgM#VuE^O_HqY@SuSN=)#g?bQca~J{ScjfLqaOxwnc29d^p1niU|9O zOiX`&A%sVGYarI&t>}85ogIQL=^q}RwCc>Q+qWqR2K4ldii}+DQz8L|3PdwfY+rxB zd8Q_t@ztaBs8?b3&~`iY}im;QzMRg6iFo_Gcy>c49-v~q>Z$+G(;wR z5;j;yi^-~0tIh!ygD>jS+@b7XKQnseI4uV#!Y-IsE};_>+-;nXB&F!W_?dYpF~nBV zCV;@0m6bL9E48X;aBvSI_yv@$d0RmpaX@8TJR`d0%td2F4vR^82r?5QQ_rtoXOpzl)k^>hD0lDE2cZDs z5GMn6f#}>^Es;ss&Bw>b(WLPnaRd!JL_S2*SzUd-6xtLpO}4q(r1b;9%*)Gbdcn!c zjB3rAXQ`X?ht;6j+~zU{>aSC?b$8fmHOzb-+0T@ z)01}0KW{8_Xt-=|_%QlXM$pxSiNh&6xsQXRJFP*R4FCqg0wn~c+wY2lwDAy459tBc zB1qu07%DnDWf&M4i5n0*iA{720u%0o5JG%8Q+xv&C|*ifL_DU|rjhE2`+HuSe0_cU z!v|^7e*gupUWl8U8-|D+bO{2suXQbqP_$)wd9&0S9Xr^JX(mV)z%E!GvU9pWhKYor z5HT_`a&vco*Jh?UcK$;EP!Jj^j8>JRFKxn}Xm{8=7-+KzKLwcCT8Cn_H~(dxtqaM99~v5eN#AJ&J<2&ehUlP4rO5<0ID-cp1@ z>|dkKzTbA?F<}e)-hC3;V znx6TyrBDlRe!ry!F*7=|Oh)_5M1cacW?a(35iT;MoTecJd$etZxgs+xRkWdf4 zx@`^Z{uq3xOz(Y{#U&mFqD}#ugopby4ea6IpbjW2LKh+>x&hes?OOxq*vXUY$*l-5 z)f}a_#p;u3B28l@CGp)GMiNXN`x%a*oC-stV|E-rjR+@u>eOywVNDU6(atgm>x2x& z^%)v`L>fhR1&fxJ7Qz9XiqD+_pudX1y^B^y%``2v)oa*bIK+QsWNip!0gc}Rp0nzv zrjyFbG>A%ou?|v7J|g^FgCg_8g|}FL5?drHz7y~oK{W-oW48T43AqE8sNgg|Z|G0f zNFav$XU}%NPz-(0VsaIag=}&I7tH{k7eUweF4Jp=jhB zGBcrnmSY2p<2WrKY|+J|)nC4R07FFXngFc?@9r55jRzH7tO5d$aXr8o?r9kYe5k{# z5Fd#X5tcu=0UvBVNE(UHWm(2O+1fWWbQQK|6!_t2fT6gBqW%UF3G#(gemLSW$$N>}a;Av*;Xd4^;mX;Q5B`EZTXijti z2Mv5aKOQ5d%AJB;HaM#=k-TNjz z9VKv*U3N{!NcFdG4{$s%=A%cCD=AU)g-}8JX*7P3l;krwXo9r=nL~D)$I4Je85xiRpjUXUSPK4x|j4=Y2Zq($Q$cXJ!WP(N#QgS zogY*sdXwY%=P*umGm@SgNdCw=KnZ>PNpIisAzZ+XMF=z0)!2jAuU{t;Ev|yW8rNU@ z+1XiLS9b@S01y>^1I%^Oc^On2uR$I`en5HBclT>V7Mv}}1UR&H-@hy3%h3w}A0u!4 zYgEHlgRAy!Uyjg%oMC8ciuMY0wj%d#HA%cH$;I4Unqd=NO8J>%A6obwqb?_(dwk3$ zQAn)Zfaj%82s%^j#qRhEGPajj8YgX|mGEH~8yb?J-*BIH0y$>FUc#kZHyLhBiqFmCl{*d#bS;m)>srQiInd!G*L^>9|xNK{3^Yl2#ov{&V~R-xwa>Fot{ z^*J|OX~5%6ubk*$;@D-buG3vEzG_<24_!@(+t0f8F=*7SyuZ32o|{XeWMjQ^msR4c zslG|C?aK}e9`S2lb2*JG1=<}yzl}oQlUN6>_EJf4c4yfLHW~?Q`u@O+`A1}f*@6v9 z%}sy#noAy%9Cf8J)soxNxs7I1S;Km}{FChbEW7S{%a)r8`-Rxcv+HnlE{Ix}3b1Zt zoskgD+O#IPX8UdnZ|}}+W4OZuvqu;Zm^SBYyDR1#|MQtAWS;L-DS7PXusxXjOEA;JpiZP$A+7I^A6O?KqVxD!tFX+Yr3UeM*Xs@C!6jrf3c`)+Pgo0>XSRL zkfS$)8+d>lLSPnbrk}8)o9WJ9^2?I;JuF~bG`ox9!@GvgGb$>dPjT(`PkPYMUu=>d z5Eix=%_S(|&{C3{I04ARP@+cUMrCDdJOihzM z3OLB+P37lRpcp&1&=X1Vc-iu`JYJgpSG(G08jh*5&d3v*AyR0mLf_K<=FOz+vc3re zL&MC74$UJCZeD`C9>XJ*K-2tCr-{SmU`9v9+2nV|yrR0a~{hQWG-wCtPp5vI9GKmQo zG>MtLdFJwRNZUV^oM$&9Jm}E>a#dS7I5ec5uAITFpL*WW;isjLX~w4rFTNz1ix+>m z35od}>>r<7XfWP7VmFXuf2A{idwF?Qi%D9j*ldl@^gC*&<2P<_gQtj!imLwnc|6UB zjdhobX3zOtirTx{7BX3sN6tD15D5<2NfC2yrH4miIVk|uBJHM&?<8D06>vvfm7mZ()>HW#T zZ!*BG=uUjz^!k&q<9$j@q`g@uXR-l7Vk&Pc_geXt9klCD&+q!^a(mO?mn*RAIWt|* z!_RRhJ*)lrb3V#?ZZi}slRPomkSz6qHW^4trDx6E`TP7rQ48#w*EZ^uY}+nVbb{S^ z%`Qv!b*xsN?rv|w^;mb!#Yc|M)S^ zn51}=HzzHgojgpStO*qkfnDLj(zBC2zJGrBpC`QMef)p@_--|&xtj70rB42wnq32X zgJnw>g(k^aeLhV#N$t7^9q#{Y0Bn|>R2&0GHU2X&LnSg^d_T?JV%{+FRgc{!`+Iu{ zK}FbM>`u<4*8Yjwh6Wj|G&*z`%v;dF$C)42`61YCLDiB>C8qdpHSPX?KEYtJzrVj@ zDt}1?y9^0xRA*^I$I`~erf1LP!qVTAOo5J`0lHK&pU)|ePJ7H zv(6@Og*O_32Pt=^E`0HBrG8{`vS0ped_L>WofmUXSzX|&nT_v}z4_pt>>|ycNVW&! zA2y?5^-N>r#pjJfAZ|WB6%2p}0x1r(O0gc-2%4ur9fI*9tqH`_+|&g0aTOvQY6v2J zpyI&wOt|LeE?n2d--vRfr?0OaE=aH@%L2-9c?abWV7Z@wbuSVUsNmfKa0E;s!}(la z&xw={neUQ|9-dNRU=J_~i43|oo z_tx(2>+3rQ0Ras8i`TDd(wk1fdiNvW>RJZ|eBkB2vMuX0^O>}f6sHDhMR;87dD+>U8>y2RKC>S0a zf-sVDt>Fk{1xP_rV2)tst7&QRs_1%elr{=)*Rlt(AgeBcI5f(2%4dnGle>C#FKnbR zv66w0pyE^3(c$=fW3tKXUwiQV#~Q!VGWWXYlB#zsOBF_V)JV);fOvAV^a1Ia5gO06H_r-9&ZZLQrV&^74W^;W~P> z0NV>7hFl7Ph>ubf78*8SoyZy@8=-gu!%QRzqifgjGU$WQVx)l#fs>w!IfqS7qMQxW_@*MjK%ze#;f#Par>`+Q+; zQMdN8s((vLOA8Frws%L94_rzR(2Df990xOj40D}22abMuXL|ACEqG+Fd0S<-fPcVq zqNO2G<3(MsfMpL2#l*yf5hE@?JO%IxV>62DY6K1JOhUv93qM5#inoM@hFV%%!?$8! zWTcWr$G}jI%V5w`771YpW<^xHaCu`?%pj*g(vZ8-&=R|(vRqABxtiDd7eW&<)BXMo z|Nh3B?y-n^rwP6B2?r*6`su)?*t*`&cFGc{5kKmWb%&Abh!&hS`%Z586QTauVTo_T zwUdYxjo1OEUo_k&Ha50Oq`{c4b^HgvMxx1O=!t~Txp&VodN#2^I=@v3RF!rToogX# z%%0e90vaawm`Xe_B)fc{U0mL7IR5lY*-XhBxWZ(Qd3qllpxd#7+~Y>_G`T?r!eYX5<*KX&umTdb^{B{4m_Y<$?qsDA+Z~qV{wW+L|ZOF#G^UKawpfADg zc9ybpa(gzV1fy8jc#KM-)vdK8+|tZ zlka|q+G3Uy=#3-Mn>@O^K|boGGped9kK5X2WbqcBJFTuBlNbpRvy?x7<`e~lF=B!H z+`2nG%>Ap5l=QbVztQA&CO;L;4tGtNtCk8pbG&?fLZ{BH z`}bEN$PgblViuIur$BC2s-4((pin5ml#%OH;YetknyWu0eo|hZcrA(VkOBnu&w6#8 zl|*SLjg8*k8!2!oW;50^rN|-h3?gFm z&5ACE<67K(8B(VUPgj zj9o)6=>ubmn*gEw3Zq(o3QGsNKZJyYrpLmU6mWjQ)}dL0v@YSE9wIDYT6COBHm7=O7cg^5Vjt)F4e5*uCz<@|x zL-s(PRXKlN4jv%{erWTLK<#|{_Duj12K<^(K5%F1ngT7G7Q$A7u|k~$s`D>@*gOjY8s*oD)z}*c@4X__sG(OzVF~&xHi<2+6gY>XeRc{Og4PW$ z+~H$WG(_y8*lDY8VK!r(ubG%Yl->%qOkVy0O|}E-MVG%=g1%VN{?T4Pg)P6V=hpaf zZv$O{5{&_80PV#Lby>UpL)`xZJ9d6b6-L5`uLHEojxqa6{Zxl&O|D&jq$tG%o{)*! z5+up$=gCVhD+N#^cOZjEMUVK0Y`Ju%Ke3NSx<{7%axtz~L3@6YEx!co>6w-xCmBeg zs746rLg|K_`FzCW%k_JIzPz))Ym>XAML-RDVLp8L?e^BocK?f-f1f@-1qa*$@CkQS zlw@z;S3NIMI(T`U%yJRL1jO&kA~0&JG-o7_9CyU>I6|MB(KVO?!qyD%jn0@B@G zA|*&jmq<$r(j|zbNP~1YC?G8*2uesO(j9`dK{p~@N}RFw-tT+P_s_Sl>)Fp%@yBAV zHRl}Tu0g-e_T!)8`=3TRNtuPH*YP>>Eu*BM%wj66hp&_u*!{2TCJ}>QF{SVP?;*^b zs0=7R@r(Ya_bW$6N96!-Q7?8IJ48N5UixKkPdX;H1E{>~ zfC^#n!3~at8UrZ~D-FOrWaS*4_M;6ROlaGT+&sUG;->swpa zz?lNbwg1hb5-R>y09;j}D}=ocaa{rBbAvQ z6a-oCUIaEC!tF}R$`&C(238{Q;AFrjAwLCFW58R&t3CDc*-aEE3U%m>4v&vV;UYjP zUO%nQL@E1k|AI7CtG9&yeRKe_Zfpaq1&|>yM~1N6;UBoAAlmJKM9^SBApmRzNfRQk zc>44fsGSku03mas$bcmZB@z;Rfb2{_oB=a}0v~{wppaB>ZV+`ry@j~SnwqjM zF8qO318Nn1fVdtmxJYz}*@oVz=Et%z6E3ojI4+=ljYwHYQhss^p|;>lThTn~SltImF$mHl>}!c=X+eV4xp|1j_b+Y;7zuC`4~&c;wGzH5EkLQ0n}v0C z8D~ zn<$o~UHO0SVwN3il;xlv0Kye=DS%RgkEOKbR{8w)q9wHJEYaJkzh|>WDm;iXH&>+ALEDAz2L;?eZrdZj@ z{{LtJzzc)uETN|b1QYC5!GN&C839l;;?Qn2LotJ>BCtjR!{asg91H3aGf-*6et<+C z!rO$L53stCpA*qSf!vfH&L_+GJ7LhVzz50V*(Ftq{D0qwu3$iE;RBUYSXo%W*O_~f zjkxt6KQ4bD3=S;_+y$jaUxa0)|FX~8kFo}VdnvD8m8XH`4u0B-i)?_+hISjOK7+~j z=M+|o@)Lpoty-DV=RoOY^(m7fF-H8q{Tz&zu<0Xv-k|h9Fjq42-yL%Qz6IK_+Y?1v zwK4w-tsof6|9r8!V%m=nLPA1_+6I=T=gE9{_eW9Ko7w&shheFsg|@>N{sfU71O=f1 zU@)E<#!5tpXdMLw-9BZy7%~3)(dO{c0(#Iv03i;vSRTA5AW0=OB3EWv92|FGyQ>)g z{~TpFQAv>+K>0|WuWKO8EVMeZU^ED(KQsH3$(s1z5BSJ7Y>RL@Kki!`p#CFi1$(KZ7CwQ&59)01A4j07n2Q z>R+}v+!+4^dH%q{g+U7;9&^L; zf18_RW0Eok3z(+B-h&`y5N8LNAV}1Lk$6EsA`p!pd<-BM=w^V0Agn2fn-IY?3Oorw zbm2C_&xdM#fyW{K$rO5=tI&VLRfEvL0Q644K7#?s8Dd8!$_?AWaE8$aBa_21pK3 z&%quHzCG_*(2b!SQUro42s#o3CUkd)0(%IQzK9!naW|%Z1{w(9jggrl(4j)8yBwUL z89#w~&CknwUR1;eOcn|VsqAX|2$H~-28#jyYLc5b%i@3a@lpYIq`WjJE|HfP4g^>` zV7vsI{sPojh$_7#X!7y*EWXeD9)LB7YQPspqhF>!G(*uJ1o0d=PfV1jA9 z50RrDbk;~k0QyXj-+<~4&bNJJc?}Os!#V{CS{EGNR8%T@dSuY-AOayiiZKUXqYp8N zdjN5y5D^Jv7bW|u{ZoDeCnSqB%s=r#@RK)g-@J2cDN_N;GLQfPJ3h1LFslw7K{%+7 zK+gk?aV#^aJt1xxTa)hI!$*sdUxNZ2Tv6Ij=pZJ?{wC*~0by5cV*!#9@r7;B)Sw_a z!ORs84Gkk9eGx!R%(?Hg7azQbAnxdD3y{ZZaNTUl>tzAXkya%C)#h*>Xh%8Z0|HT^ zuK4se4I<@+-TqdfADvt`l6(#Ev0ql@z>fe?Cxh=1_a3xHz)c|`yR~O<#bXl_kWGY* zi_3EJrUr+u6d@%MmHxhN=#nPcO25g+va)E{qq?!l z$@@k|{jk~*qySJ5Jg8ofO6g!t3kePBUWBnQ&*63=3U>ef%vlf?wKSi9Z$?ZN@Isuz zi3?>VXdkFF1r%U8BgtBTG4FnyJ;x8+*szDCak(#bDF>E3fD3#f#S$Js>8i)GXQMxU zsKUksfH{JQ?4LqE45}cYuUrQ)3?pyDZnfB$ug^qy<-fBec_c9g4+LUBRs*yJJI&0D z3G9@1PELrH8|rnaSU|W0HccV`K|zh+4T@1lQ1t*63ELBN{mAa}PnvU04J^awgp=YR zzXzz)caeIwWpzI>AtA8S0_3O!@!jnZklQ(Xu{G-o!2+-eK;G*!B+dztO=#K?zdIEb z6$J$a2%?OiU74-yOL%AR=x7b3m8D*#JQLyd|1KH`omaMAi-QR`7hG8#i@Q63@gl`6 z)I3mT{p&?UJ{R*nSF)nBWJ-qX;yfGc$#xOGG#0-+LGlQ$A$NP(@x$>LZ1uk6OoqRwk> zHpL5rtPH=hl8+ya?tm({%qb;?6+{luCqn6*`{@t_GsBzR6CnlbG@u*-pxgOm#~j)Y zcuGKNCud|p012s|pPwq=MeruVpTJZBQcA$AkOW_VRRC8D0+fE<8CZh>IGo4*(tuik zsKQo@_ec^eRJ-jr{dcbcG&p`I4Spn`M&YuFDJgrUE*7Qss&me91L1R|)7R|(RS$p) z5x^M`E2IO^TC!y;MCAo=JWO6H2CD#oViyK{`QDF7&N%Y~3 zfxZe(1z3@=UBS7rH(}(2yz{f$#h{G<`EOhU3X)BWAiK~Vv~C~o1Eo_1IeYwB_t8{V zcTRoZ5D$jc4|B=-Jx#_G;zjpGt@cY*}{Q1yYNU zo*qfeMLesJ_kcbJxGQFgY7#Ku$F5b=k2lIjEzO$&BSZ4PKt0=uB&a;Bly?=R7(C}~ zAmgO!lqEsP%_j#&gHYmt#{p;@aAn+uh>6R;0hdk)2zoJ3e}M|co z!;udQAH=I55P|=I9CAdM1?Y7HQH z?@&TR8wVR9ydbb|zpkxCf{4xk@lSyS9zw@J*#X-=0Rh2IXwGim_>*QFz#5SjnYpjR zw^l-2{BPr`T8`wo+a@jq)KNplaBEqPiIbmS>&8d#uTHSBf)=GRLzL=Uwiy(3IX**n z_22wKSPHMR-@wKT<*uZWne8NVD-Tr!&E}I`RYc4+h~owTJYc^3kE(NkpO%JbL+B2H zSp!NGizC?@LQSpVfq|BU6@1gsTp%MW5KsX~uOUDrd!XV#Ob^W`oi{yUe}q>X7FG@v zMY=D6xeMKVTUbwPmuMTIBm$e@3PCJ!p@f0G3*tET~>)V?xBJ}sLv z#7_pAtBspcAKx!|A5m}q%7(_}$CKl~o=jg0h$0Ox2rOu6Pxd%@Ay@*C!|mg;O3fEA zNCB!qAQ(`rtI9!d2lfTnPvF-`{s!zqQ2)%iHXyYYQfEQ81kV?FWe`Q4hsRMw?|WG0 z06HSShrDu7>Y)H60t*nDWsq<{mP9Iq<0L_q2Y~YW#s)y?pfB$N1<>Wf>R0>PjjrfA z^g8XOmMvSU-mTbQm6p*YvHw72CvW~*e;zmfB-4M?x`(pS zKLjsRfm;D)WPE%vh!`Oz2B0!eII2;t{Uh7wDHvT*07pXLH_(_O25rrbKIn0fO24rS zmm>)Dg0J8{A*cn+mV%1P{vnc?4r6#=yF%(Y2yKKi0$N!FrU6IQzd6xREQ@;WvA~fI zJQA|ff%^bSwTRWVQ@rgm=Ks0E2oeKUi&MFXn4wt2!UH!S?gWdJl<8oX@21gg~2t3=GHy3iv7t64?W{9DFz#NZK0gSO8m(HzFQ+@D@p( z_G%!yM=>!ffFS_S07-^95az(3BV7x$BEXD5llabcS><1k{zco>W;ujEmHVb4keG0; z%hYfR`^;xmMRrNai;TUS4}6gBYJ*x5Iusp!eI$7bNtG+ z=rJ#KBn~!&I5OGroBW%g%YuCo7U)HEjw5!W&W^nNzu)EQuY?aIAn)MM3mLMz3Ssg} zAXZUp>H>|R;?oOApvuh5L?#kKrG<19rlmvN0NO=5rw}EQYqS&B;1psW3D-?rBE32RoN;M^8C`<2q*>TTPBIo1f zcq;K1qX!Sh_C9}>G=IVyxpb3JoA2e?{{t`qZ##plrv3}0*>I{M0!Qdq0sL3|H7QhM zFiRd81yvI+W;?mb7htG_Gf}Ormp5GsO8~{rF`CrO{2X!fd(lnEd?`H(<4Nc1>Fu$M z{$I#?&uEZOE}1y|10Uj*1B~QO_#}18P?u)>?egFRbM?l^lr#BJ;vRC>~_X#Sg z-9qx8pd87AAwYiL9f2!`S12hv+y8#*=T|>C|BUq6n|_Kjc2Fet75DhR1^!>-`g6La3J)e`55KGazc6{X|OIR*LA}NI*pq8U|+O)f2v*aVw(|66y^Zxt=2_F2LBK1p z0BHya?}?x>0N)T~7&s6cAJH?Di^Bv>~p;|NNZD zBNn=KYZs}@0r_G4B{G9VDy#?`_0R} znag#Yd#|1ikuH9|8n<4YZIM*u%jRMp|-4;WBNm& zr-fn=oIRzP+4y)f(1k34-FFp17gFx_g0BOxd;}1K3KY&6=%Zs_N}uaCWU)OXBO^mn zdEks5tAaA&IynEqQss4iI0-ZYVq69DB(fF}CkV*jkgjIg715BvsSFhA_nFtmvetAlU~vfSYWx??D9)KNlbY|BaIZ z91WSig7}x=IEHv6Rd{&tn_!w~hNxx;WA%bziqPF7@Fw`BNr1<-u*mn01p*j(bYRE_ z7iIh6E&+(n!Qc<~&}5~^JWv>PxnbNxbmC= zjDAKtahd1TQ*fs7=3gZT*o zb3qFT9VR?uXiZLhKWhzEW@w&BU7yoUZ{2d~1qP~>4TkF=;qF1>FslO{RJ16uF5 z^q-pM)~{p{)_52Ge%`A3>uEo3?ybPdD|E|=%$R~}gM7nS=fS9oPI`S{{f_N7XtQ(C*IL(eM*^#yYYzcH6KxeN$VEE|5`EwDr4) z@BK~mRPQD~zPW`wAM)p%@~1`t?6{tuM@q9{DChyl&jN~Zozc(do-jMjJO((mWpOF> za^GRc-RyeRE^I%>4PKx6jC5`|stJjRRR5mWowGMz&Nt@c%3qppK4mW@;Zu?-%9xKv&iQ28D=P-EcqTf##(9Mo6o!w;`(9*?B`qGna?Y& zUu>@2FA)g*n1R_pVCKq^(>h*~vW~{cM-w~|KV*nX`?Jqw!gE>ix0saYtGkpb@DfNA zr#y-^yQgbP6uvkx{!7o4#`JSf)aCK zGkF+q1bNP$K<)F_9f#6$lUUfBgv@h`rVubu>I~fLJS{R|en)iPth@3{KHbty30)2xbQ5XMAa#5sW$ktc<#vqTg=UG+`bFi zzxY_(dFkoMOj=6=@iTB*$77m`aoz?vxB2zk4!hkw4S2vqffq&Kj6Z~``mh)~>qBy1 z6PAk6!SlZDEK(K2GaOcB@v^-22mv~_O05ue+t9DgC`9y{A?o_KglIJT*nYmnrnS8> zwyoD^u}?}kdjC54GcM~9uc%>{TXL4IW|uwimrOIYSJriXDJ2X!Ki2#0)UT`1uW!@v zUhCEQO|0?7IsJyU=Gp_YgBI+J|=Jm2Grm1?teF2I$L^j*NO6T_lA^K zm*86&La}T*J4yAIM?{=qW;-7D^3eP0oHIYTO}+b|!*|^yj4_lt1vibtdS~s8j##O6 zk^tX9t<3S2<@y$m<@(QhYZR)dnFXY}+rI;ks#+JBQmG4@9XuImsY34DX}1?<00})8 z?Wg6bo+@rE^Cm;l$?f1Uw3cG`u(d0Fv((qQ&})V;_@h&*`omMjYP=&J;ZeF@ z1lz3%DWnL|QAvtC7891E7uCudqw`92dOM`=;kjK(Plp>k+9IUikQk1cnv2n?KSOu+ zB0d+DuUp#eHmWy0>J2P&1`-~ZzCl>+jjhkSXhb>OKebyI4V&i)>e%2?k%_%H;(V_0 zu-@kV|7ZcoZ}Yfk#N*+&HJay*8t_SAhg%omw&lofn-SF5a(#Zn8}hr=srds5>$@7? zBHSdD2@E=z)%y#be9nS&E#@WhgzK!|F~8uO*s#&nb;;&nTmJ)n0Gx$qM2PQgbE2U= zI9TD`4wmPKVQa@_)3yjXbOIt@-6CE8y2Qr33qUdz&V1Vvu%9=?P7k{@B~X;fU^Wi z`b$VomzLiDEYtj@euzQBaffb`j`y0nE~ZPRLp=`%yj}j=JN0Hb^fV!U!NJY#*g1cyi$5l}hf66CC#h!^#jdYwy*9** zr_NwrI_6%b;_3553sj`64osU+zt|r?J~`FMX|+k0_ff*SJp7a6$>w$g)%)!?y%?GH zRs7V4lxtyq?)n3ZRUMp^e2b(`n3%=*{%PEFcSC1I&#YwyZ|^htvU&bpYor-K(N!^= zGMh!OJr9}5vvQTD%#_*9v*ru7s=>?7yyL4ujYY1Emn9~lND+)xDSnTTR6mDWVoj-i z&h~0=NUls?5&eJxRNwV>&!5k)Y-%W*m;C+^JeD-JexQKMk`Pjaf4)D&J@qIDGJA?hU+PdyXv;pm_x zReRU-T$m`dxKDCI+0em5Ln5Zu9&CQXvwVAUdESkA1s^9XjXTA8D0jGFh~Zb0D}nm` zCt=UIG3VzFWbzgpEC}K#$i%XO4N)z7-VLvpNRvvz^RCt=WPMP;<<5lGnEL!?uA9Ny z?VHj8ANMY&So=`c?De#>_-^-5lDLSlL{JQ%JQUqIb$a(pY_&^X={=WqT9OzY)$K4$ zs#p`wQM{rSnbT5y*I9)s8I7slwe?#b<>KC zD}r%+cizPgwbC@cUy|CwA{>h#%VlasZdxezN&T-r)Mq8CKAjtbBiB+;Wqmqb-uF}B zvjnqL(&FEy%Gwij87GbBj_Lby@)z@d6E0R@{l{=DXUlh0gpUKln7-o5P#ivATHz8t zy`1)em;8;x`K4P?e35d20F_~9lI{n%>(yH?Z7eKtF`xa2wrY4oUiKxXsBV_t$7ZO9sMBnxW8kmEzH;?Sir>VO z&0psgwR_iI;5RxB)nqPQYD8Y>l01wlT(jV5i6|)-)#>t?zgcD1dR?Z#Tt)pLJpYRP ztv+Asma~&Xi@Qn!HrHOb8Wo;=?!kPA9SERs+?FS>-KqjMHqJl;E(vnFm9(GmV}sM0KEBW4#t6_|L3 zwKA^WQlh?!Sq+owJ94!RcD>io;(3dM$Ov>Mf~V1 ztpc@o>ADvL3M6Jat;6!l$T!x=ESPk>y?DfC`Bt@1jE(AuB5Sf1+pt+;^W47b}-C zYs^A{lQ7A(1UKwOCvLgSGF@17em@o0s0}`IH7+wXTdm@+!Cf8z0h2)0DMU4B*z^RT zY@k%H14=qDV4f`!dfb_wkOg6@+v*$bCR`1vU_A1?}{$=TOOfSX0e^gzfGOli-Dp~=cMD8> zA7lx*N@5OK2>^m~1q=fB4LNc50CM7kVGy6;TK8dE4>2|dVw!=A1q=at**id|0zeNT zQAngdfWrXs8wZ>pp3PxN{)<30(1g_F93~ca-|~leQs^-p`Y7sVM3d2=xaXrFn15r%Bg~*!+s;F z9O8}zd&GP`$n@P#&^T>XD_?S)@?CZz8>lgT@)LCDyrKRU&eih2_KJ z8T}%nRi!pN5}C)-Hbtsg${-bSe0#(5)t#VE#hOuj@@+2Kw{SwI@Ij38484Qwl?s+T z13@xtLKpfI29iVH2=$ejC+Ws?M!ma75t}O5_=FK3Xcnc{s!{Gf7VVO7bx&Wo`0Vc$ zeb1IqEQY8T_5DJDX0N;}fsrT9(-fLbaWyvL-jSCIv>3*Ff)1*(BK-061pPZ)KOfCV zVCIFl1bUK15cgiK$H>9J@G{6`tXSPjt1KQQS>EZ2Si;P!Owd?q<{0h3nPzax=13Q% z!Fc9=YLrK6^sU`%U!G~sK5imQ<*}(;Pc%z7ij*+On)>r~g@JYO89Cs@8u zedPsv(Pj-{E`Nb#pu^2Q;H8NTA5{A_a`9}8F;>%T@I(? zl>viqXHU2eeI|*nV$^S38?QOMax!?6ZYi$v2J`Hk)z5y7-9w{*p0rpezBY=mnc$^# zG$4*&Cs6AzvZ;Pf#vrlCv>6&G{d9g-X(;4E^OHR*q}}|@s^0vgnYI;xaS!T#Gf?2V z?wt_sjcrj#DCJ2R&3udZ!s2|oXa6YXW%kA{a_s!V?{OnSbpWmWYod z9Y0=YN>a)~`K7ch_CAJuDMv$x9Y@(`LSHP0w)Er)q@Ym}vTj#)Af33%<1(_7epLs#mf%+$kf7 zZdMmZMh^JPrge(d6_~7`7V1Z!PEK=ZSgi<5XR;_h7|Q1PaQds;>fH7r1Ey{FUBk;X zm;6zDA)K2m1QP6SktJVVmc4FJT^s+&cs;Dhf?wLZu|qI;Zrdsj%aopMl2<_RMvBHO zC53U_v%LWSm>aGnV#Wtv<72PB=BJ^NIAmfglGMvSa>sPjB4RSV!KP>`-(PA*M?{D- zZXu16n|FtSt)J;BddNA(Io-Dui&$6cnc;p&AS3B;5BDZ9v1WUe z=MjS{6XWqFdY7a6?zOBo3W7#TP4Wf3mHcB7OV?{mmw^>DbrrY|b7`yZjU^k2M4|q) zt9h>e^%3&GpCKZPN^lX!J!Oq5mzBZOJH!1=F^QnV>+r3uzoIoiBeYAc+BmKm zx>c1rJ+bYoC*(*~vC+7}{^Jim@I98Mmz?;|)=&FL@8wx?>kkYq7CwtZ61?0@#5((! zhd(4*laoc6C2lecIsK((tb9ReNe&Zo`@Wvu7d<(|ySYQP66u3n*dNW8vsO z_)t>8T&3!eh?g~SXfY!`NX*^tl|rQEULo17j3dV$=ZvB*!A;dvZ1k?{OGqwmTXl~C zM@-I3p2`P0XU-Vb0YP;ytc}Np@7f8iFKfwlXARp$DJ-h6aAZbxve2v82|Z%Y4^vl8 zTd%T`E4I$!3mPk`&x2+;==17BO*)MoA}{t0R;H{KR-&h^Lk$EeDr-Nuo-LL4whga) zYY5}sSnS9hG37=s`9+`DX)MDH4cz*;MGFR$_p*8X*M%8I`}6r38?Dky4J7I+MOuex zP)Q_MR3oX z{|z)xA8*{jXeYY=*w4zYBXc8dg4dUkHM#uUY9r+N$AYG7`qFo;<7mrFDAdKp)#ne& zC^MHCzA&(@H)R#C?Y}8~cbk*%s+?zlzW5!w8_cS7uA?0dct;+8KG{FUyy?|t$E2r3 zeTNQjLWur!#LXz{t$Smw)%rO}dZ^2Uq;mxRqzg|YO6R)8@@mS*G-2C2>)%ic1VYOD z{X)oWiP_W=1fuyCfXAiUa-=5siZH_N=PkqE8p9o&tu2%d5>^~mX~@k=e-LVoKv8GcwWhw#^0O;K9;XeLRh)J%T0;An<>VV95B5$$-x$?e9v&m{rk}Ss zuQpo64L_8*{B~oe=z@#eya0cZYNi{1-`wM2JA;?ct^nbcsXwE%ABi4wlj%6+tEr|usHC;7|G)snt)=zlgB%RM){j>9vYaaLn z`)$gJiBeREQyH#he0&_{kOCQ(&BR=skP^Wvuh!A?j&z)=iowG2yEz&fVzkfXlzWAONrdX92Xfx5j6s7(u`S_vA5(=K7Av%1qAX=F47!n@mAj5YaE_VS!r1t~I;n~Vf=Lyp@p2fxlkN4EQu)4@4#b(hGBrv4)J+YWVr?@yc&HN%^A9mPsvxha#$h&F!(b1Cp?hMjYZnFWJ%wR7|J#${Wr?jUsUC1X4L0?(Dma}SS3%E_AP?7ldPF)fvK7@W zS8OZ|EbD2; zm@WdvdsIm3bFO>d;h0=AFC7hmMqN)o*21*Vy6o|c-R-M>6~nca8u*PR{e)ZnPA?AM z3=(SZ%F&_Rc*oJV66rJWn{P-e^9M<~lcj z>uxat&AX;T)L6w}CR?1efpSmh7NKXf+B}y(PHAX{oyY|Wj~1_B{SxQcIOM^^A~}3b zupTPxcP-HPr;bX^h;(7;ujMu(4gGBMBiEDo>-asTTTFb(uVcCgILAB^R;GgM@?Jc= z(Y9R8G#aVLDYlcxD@e%F$Ai9m!V~T@0Ow=D*M}5B7TR~dI<(PiCphgT6cJS^hNA{3 z%Vf7k^HWt9PN#>7l(2{lMjLWly+!x_fl4a+0E;q-!uUJ7Fs3YK)mW1iR{`oKTElHQ zMV>eQRk{{Lzi?N~u4nXWiuPzlx_u0uKDaW<&z-gOrW55W^}uU(yVer-#9}g;Uw>pN z-La~a@7MQEM#yy135-(q$W-oV=SE_FxR$xLV>H6$d$vCbK$d*T%iCCk5$W#FgbFsk zVHUsQd6o2~ja7;?OMD`6oK5tD7Ef~HHwN3RxGR5g>T}mDb_3e&`T4noG(Q>lP??gV ze}0{?=pb}yBuu4JLC{=V{zA|?-k6td=R=)!LEah>f4%$Tq}b;{(H$Yr>@y`~mT!^- zKbTY}>>-r*BdovfRvPhlX)CPgmaGj8r$yAs*6>bJ zLSZbyZeqWjq+#?c2M_{`?Fk5Y_t_|NGB9vrY1s#g^MdC_r;gzL1v zYtqWH@W6hz?osTkJN`dJ6dvaInp7l@h(vj4UnWU3q?+DjYwd8m*UYo=dKu4fl2sr3 zysl~RPaAJlwVSi`O_W7t;j={!sh7dx4!o%6$~8ylYp>euoQ>XKQ>cuH*$;~z zq0RNajGMhpHP}LUa4sH+!aHguyS}J}J67?wI)3Cl|tRGepm8|s7+{8n^od~RGg z8sZ!Govx+(W3>J_Rn8U`!ux_sARNz@5Wt^QNj=!BD{I5UsOd?m-4eHQa>;J>=n96S z$rTxqZ%#7!$_6Gy!*u>3$!nXRWA@{O*6s;;wa(v(`^7_VyO2Oddb4-;Rylg8GB~{^#qoUs&tgIR{ zOB>ph#eP^WILD`>C5KabG5t8-^=HNs8+}jdI}nArUsgvw<---s(-glU%jn>-F+H7q zw^2AyZM$RHb;R49{bSvST%7BHKQZuWl}B)wBDt@;AAg~2kk(n17tC|-*UR|?&&|8I zHe{5FWa7MpiPsZ5$+ji;8t7kHOJ-|5%uCWQB^haXtR19ErA|hRuM?TRTF~)CH-jgd zm0EX$*lJ|_W}z_SzOVb?y}U&0_o=*hZynseo6ZnD9+{$<7NR=BZ)kyOx6i?k!Y;;d z6+`B&T3&qM>Q%_VTSkyR&p2n;d8ag!JvRJmIB;&GAvM0|MSlbEvr~AGmD&E(mw|6Q5XtmrzPvm0h6Zan6+nPg6VDo;T>KQ%x*1yUYj*V zM$~!isrYM#jUNa?Nm8?7dLMJJjP(7b4jCx#wHQ~&Q(-mOxEw4UqU!?SI_!sWWAI<> zkQ~BB$(&&HjC*E%=)u;uL^SXAj#{g#322-N6iqPKNrjHBt8FfYS2o_nTMSqvYiTxcsRzWS|4 zC-C4&l>p9Hf*3!TUc7ouaQ2pB-mq{Hu;=9s z?wgiFzqpX}EWxX74G#zz=RUaYtubai(8$w#lP=;@^ojITD+`50OZGf>VE>UtKmQVG zB%h40esSbpXU`;8)6^ThQ){$Z74{FJZKyj6qBdM_r@XIYDa@c*RS(N1!q#atVDfB9{9KMS=XDdG$a}pfgHV-SZQVifR+Kz0Cg3qqo&s zngr6Clq4G*4H9o|-jC$?Sf)!*FSD{&|J}MGD^GLHAy+}2#-56`UZO%To#6==+4rj7 z9)==eOoZpNqnw+q3G{=MQ#UplZ)o`X`Uz<0=5WUye$Ts%nESrAk0JBJ=|%6HciB`F z9&V47vt!znI$opoMIxKr&X%lX>v?c1#_|mM$e*!jH)g`MY3lLjgFFoD;C()YZ+7Q7 zmOu*#V*K`KO^6Q(`~B>qn2BJ2CvmCiJXahV_MXOb~CxBTSI|Iq@t+%X-?R7z&7prjzkzQPbU`Z{{w!i3#EdCCFb+p3Z{ zmC!xi0wvx{spPBli&zz$f}`5e(fSwnANn15-zp(7SCl8#_YTGp`ze;9&5~XJm0a7o zuaJ1Ue^8bT`)|GuMIy29oD`#U;tU$x1BIG1y5W5wDZ%Lran^ z{fbTwYgG6Ra@ItM;*?1;eyrs$?RkHEZe}3!c|6?+o(rm+}5V}0MgXX5Wdq~v!jcXyu} ztBo@kzgoPt^<6u@M`%;|uii;khCPWVOJZ(1syn)%Dp!fq zN$mH{&pw0ZkzFcu@1Xky`t?9_>jXIJY zT6q*iPyFolXU>a||Ji^Kbc2+(ga}d8*W7>a>SG&fa8T<{MHrg1GjD*? zPDFsg+A_vHiP9b=*HkM)E-{?(tD2rN!RS_$@2@D|uS|Yc;qpYL;cbe|`PdIT;%>3f z2x5}xd6Rb9F{4{y;S*!u^Gr3oJ;qwXL?__aw%J!a&{DxGN9mEg?1_ca%$4lF7|Oxq zU$sRoKdV(Z>hLO*i4W*La^7q2@wTSb~h z6@8B7X!Bf`!#k-rnbtC<^aJ6wA*1!Q5;F+WT%Ncpo5 z=}7kDSz1fV3hu_o_uq|=PP;1C?T;Z=fZ0~U-DzMi#r8^7nqZ+eJ*b3^`35;JX;@tK zUA7ymH%Sy@%5;Z*Ws4|Lh-LEvoOefoLTtvwZkD6#@n&e-@GhIPaWy-9n9~dEG?zAm ztMyjt4LtU1p5eVFbV=J~(NuTkLwHCC+_YZho`vzns55h9{yI$Aq*lg+HBD?f0+dm8 z(^GVz&n#@qqVbWzl2Pn>G1%!g#H3Qgu*$x7xU_p&oc^(%Xp+W&2+2EWsX@<^@YUJsYg&DX1nuWDzN=^knKXLE_A z7t0;__hoQMgnY_kvJ}V8T2UqM(#+f;Vr)Wl*IkGe5-xeE7{p5*D-bdAu)Q=GYwF=> z3!$x~cVW&O9<9$N&CmVLnMXK+271X%_~UZ3A2zXa6!MLWwkeE~eyu7{BH$!{5E@-1 zQf}k$OcZ5&f|*120U9A|=C>>S9_l87RGchTFY2zkZhXzh#N{#%`J`p4ej6y`grXZ`=HFny2{eh*?2zo~^fulf>rn5F0o9Up&>SBf)Vtw*EUerfJr1 zX{9epXR?24JF2yIDfvFI#>4)HL&n$1h^+Rf4bC84(f5!<@0u?idAy8*e0u_yGa_^|9}GpT_N2<;WR6%GR{PZnnAM#$OU_(2XOq zhW{e2mVIxSqkT=Kz{E@P7B$sd4i-MWnuH3xxt&r&ANg{WDK??p6eiCgu8D~#?>@TO z2t7(R0=;)f2_?lb?*}RJF_*rfv$klm2TB`Q$Y`;XWtDuvV|VlnR#_o)@5bw?+i-Ka zqNB5X+(C;jEc`&LY+RLIzvWY;@TX#YqCGLur+u--b*RNFEZ@wqIhR^j_g&1oGgB1s z8fdrDYs3y?`kXtnuHYYMJfa`gvhwJT7yo9P-&tDRvXs}x#CA@6L`JpsXbRV)OX0h0 za6vj$w&j@gsfPJCgv2v%Pw3w(8v4Rg##i*sICkuC42n0+bjxm9&5>2d*RB2-OA=!PyHQ|x@aJuw-sLTD~q)6@`*PP0xZzY?hjWn30boK1QT&7cH5wz%jR zs}=Fvb13_c-w+FY@zGQgQANHK5dMKf{oxja%NN76N#4_zmEa6mvyvsZ;@xw%I zg{!~TN%`2EoDBuIK<2PQ^z!69uWDW(BZqf%6*u+KSJ)vcXjQDzNaU8Uo(pJ6N!mg|pMy)4I@@R}}EF)TfyS)7j#vhlu+pv&^n) zM8crWH0MG-y&&`|o+erMFnNvg7=A4|_5`!5M%Hrd{E`X-!|PI*AqoX?RAT9GBx`2a z-WB(T#Vx+Bm%0i&oeTvb%4sz480$&;s!WX1H)1|c5&d>H5lf8cpq^-F=el>W6X{jg z@yYAJtBO5JY$TKY+q`ZVhN1gAilupCTAh?ejCh)8U*pG`k>2Yeta!Xn3Geg1YOA+T z<_naSJatsHp5p>4vG~Hy05vt6bVWO_`ej+Ic0c)OsFs}57=d0%1B>v~;iN)SC<)KF z(w#_&pBmC=7cI)9{|n63ty}?@^~eQ3)JPrcXg}3s2O=bIZBX-ou8^Ox+c3 z>U}A)C3HF#-EziMUSduGX373?{r9 z&noql>IjJQzFt3KI=ikUprxJEw)qC^GtK8)PG^56o5_M^#nVw?T*%4e_gPZ z`b!BWEo&&(>DN!B8KgN#WJ`7O^`b>yD6<58VUMA%eGse7`NR6$Uy3T$ITgQ&B5wdv^m%61oyFTIV^PXN`*oJfhIA1&SCfZlpUYA=*BpKoyGWTOC zo*XBz(t}J30$Y`$pOBox`{Ei%2|&?NQ$tewU=RYnk)cj733}X~5+-B;t5*Qo5`ho^ zD4RzBrlfN#^VfhQRfk*_yZg2{f%BRM&F|8qCu>n$(mfw^3el5W{Yvg_{+w+&NKUY?%)x~Sq0%I!qJ&on_m!SjKXhwo?B@Zb-myzb(L**2xNH%x z$nPHw2uf<~cQ_s*%LpmY;NCga@W0s4>Bh@~q=flhPfZRI#Qy<$s)a*u$Q@c`mpX;{ zm%$K+09S~N>;vyCMz9Q+Xu;rz2yws|gy?0!!UVZS0EvSvMvH@l1g1uUC#qAkQ*bR9}=)3?pHNacq^vzsc>R_mgffoT+FMO!Sw!fl;A|n8vjgz zAHMtd+;+=5!S_p6y(3L~_?@~zn|o?Qwy2OA#||NTj1c(CX;LXt*v}#>P`mXHTD^NW zt?CBZy&t)d&a?s;w`>xNVmw{!h#iglPv_e)EO#Nut;%zEq5czOV}U^jaaR2wrrrad z%Xj}DM?ywsNcJohg(AtGB~(gfMWj?#NJWy7l@%c&Nk}D0g^&>%lI)e0C_8)qo>%9b z|Nna)kF)w@yzl$EUh_Ft=4-uQ!dJw?d)W=TeqU>^&&Yzm=+WcPbsVx-pbJ5U0u0Ny zlVA7dV@W}jen7<{TuK`-k|u^=T^S80%9LYSkn?cvF#7cM>zRg(Lm)$sFHP27fJ3d8&TwT9|g~Mz*}&m0k-95u)p!9owtR8Kem* z!-lE?eiqCA{eJBuV3>IhpI<-Q0cN;BdmwjM-v&k+5ZP8*Z1sP}eISn;|Eel}Y>>W5 zc<9fcg_h}O%|m*Ih619Ki^~wwD<0be{MczQx+YeBK*m`|r>d%8bzmcejUYF8pXe4s zJ1F%S5xmn_u%u6RB;YaqyIuK}i`#9zzgfKMbkKoo9{fuJS%pgsz~cf(u*yC!Dptab z^Qhzo=r2L<6(TL|LzQ&Z#I`?7gR zjCZ}P`|$BEXD)dj{#0GfEkkKyVnRfc!2g|ZdQF^FAGE;l2oFpT#;t z+!Xn6uW-SjSJbza_CJ6&qA~@~tmI~BV%MB0hkQK5Sg;U6Fak#vUXGxg1$4CcyLg@Q z0!t2}&k+7YT!RNz-+-ID`{5Jw6Z7uC!+|ErtTN6BtFr{TcVWl9yTDU}`s2Rl5A)$f zGZE^X4jl^kaex9U@P_67SUs$8Nwof55}A3VXAc77gbN5sVH?oQHNxJsUI0yu0{%aE z6mt;KkVbp}s7}CT32yR)bO;d{P)uFQndFI10?~XpWNZuHPysw zIE0XW*3bewO9-w+9SJWVMuF9kFv(x~`xz04nu>DjYLD_Jgd>0TiN)&{tV3ft8bHGid&$FtvJ#2j&TIOg7moIJUe;1AAM+Z! z212((en00AuUT`5&zHsRJpC5GC{mCF2R-zJ^g-JMOc)^-cwyuqPw1xcz1r8<(ScwG zHZjbGIOVTH9}MY{ur(3x6Oo#v@_({{aSxCu^e~}=1G&(UST6-p7ZGby_n@qkSYPfP z=(wNj4^7l3PoBK}^CXMVESZ(YDOOQk5D^IPxpD!J!O8CoVZ0ZRm!G46KII-DL!s@y z1X^Vu1b}355y%7)y6Hqz1;X#hZBbF=hvPj8ve3bK#we>%X`+H1)bm?7ozPN)%3B|l zM|7h!p;ZZnJDA_Ngyf0hAz?ZE7fwphf)Kgc&Bvl92X`TeTZV4ZhM1c*414u*%l@7a zi5K@>)f6p|5`gtJ?_E)U8|}l~ikV-fL}qpuf#!@?UowGjLuB4T*ax*ZL?E_W7OD+5 z;u_e(Azz3xUV19R#L~;{+oi_l=Bi}r*WSf&ZhXu7 zPilDY-ae(fVBiuCI@FQe3%!n;i{VWy5i&H$!Oq%>tA^#U5rOdn!Z;fpHC~qp?|R6* z?nuxw%02EKyxfV42J$ilA=z&bcU8Tpw*yJnh`T3(G6?%z5WGTg|Hpxa5-jnn>YM0x zQXsCQ^Of?&rQo^~2e=n6h>Ss{2?b>_G+$7w+?)Gk4IyxRm!;a(C1#Y6AI4^7q3%p% zps8rF8`qq^-w9a~P zJ?b-EJ4Ty#a^E)TK38B6QjIqEZdE8RJ+()bi(xvKqzvl+0{H=!EOjorz>D3)5ctcqngs{ z(j=k$<5m&oE}}1B6B8Z=L~Qs;)^lrEW)V#r*=9=_p$$3%!$P~lMY*Cfm7~hOQATMC z4e&&X!q4rW(lc}s;R$Y66~@;xG84{g^?hi1y^BQn#E!3i-9ykxQ%oG3UI^D>42!g5 zFFFLpPnGG$yOYyQCo+v81*isZf%Ui6pr~%N7lT-&0D#uMVTn*sf&%M9X#GI~Qr5Xw zlL#$`NEhqEvjk4cFh0tGxC&IL5WAt;0+o|Pk}(sF>eve(&V=p^B;?U%3%;bp zJu&AvQbgL}pu?FEQrzM4QC&J2(j?#!4FqW?{iBOg#@`1z-5T3aJm%wLaWo5Pmi26^4dBwHO@;@Pef!|A@ z>+2%^JX}=o3xaQTj^$!o^IV_6YBj_$4`mv6Twff4IN@JX+@j8*#HXq`(+B4k2n0|3 z{Va{#k>7vURN=~B8&7{nB1oHe5(+s`o(tD`U5r3+1yUa<(}%K4_+iQj2_HxjLTjEN z{eN5;-~$34w-2ThIhO{AAt>Sgqr$XY{$m1Md&Ryvp~^LgLhNc(={`g^m3w#37j{vP~biIIcrF3$4VBa@^~we& z(SqWOiB|#S2ViHpv1SCZtK;EAw+R8Lbz>EK&HR9L_|^CNQ^K{_50O)Z#?z z1dFoeshIc*1p&&)#F4{)K%Q#%&lEuz3=rrHZrq1qEKHe2`Fua+FX?aHt4@rNg<3PhhWZS8G#OzBa-)Y4{-5`|Q{z zW_cnkh+Ku@43cUUzN`M_R^)iWytM@%1K$>Z{KEPJJ?s~db2L(nfMWC4PPIbkgWm-A z34(rrY(b5T)TZ!M1QQGGGBkiwU%$SqcSoF<9N}2|)()J8pyG`k88Go6rAL$~G;BTs z>ZZJ7cbKT2#<9EPPPd(>-y$l@0Wpa5aGRG)m@qVL`e9Q1cLNbYbOHvh$`(0LFA8;p zMtc2+pmfwp{rCyLVoR39AgV!PEyS-KN|xOn3Vw?dT{$$^&~hT##?1M{h8ux9vWzyP zVnsB-900%l#4`!KD5$;sl=hxy!2E)`Vs{%spP}y|QK~PC0#Cut)^OJIs>Tn9x50@t zROc~G&h~lyTsB6U`47_9)!-V6Pe%-?mY`sfQdpRP4wlrD#PB>TyLi6>@0l{cbIHbHGw%`!y!|@&`8YuWE9&HgO7FX7?jP{cIf~4fH?o)Rba*fG40$$O`2o_M7 zgRs zG)04jR`N6sDT-WTu7o%TEfXR1W6c)VZWHw%6kwGfzo9fq!-YDOs{O%tZRPWQ=e|Gk z;7ua)4fHOso2gtk&4t#A$h_RWOO%7<_2>YGm$8#e9QB?XJUEbzI zGNgn~G*qkC;>W}C62dRYP%zZN9X-7?Hvwu;gZ-{3(MU`TB~nq}`{5jHPb##>c_mW& z`IiRJ(Ll-)PQ}sC(Vv{EHykeAmeK@s9v0 zWgrBFazo{q0J=qAw))Db$Ry_F?f#RS^h)dYSc<3T`sC(BCnhB9)jS6C@zw1Ums9Jw zEter28TdID;?eSs7E9MmO*g^CAn4jW%30=o_hZMJ9(4QW%v`VUKl^7K?%=d6(1FXGZpo&+brJ2mEd;2L%oX>w#PyBHkwaV zjp(|ee2fau37!%h^lK5U58f}C#H@;)-e0*nKkF-pKwi-(RKlTO%-NPN1d6XrY*u)0|H8{0|E-*L|Yo`Qgl;uiG8=o^L*IY&mfYn&1MpE-)=ESN_IQ zMkZ`y4XXG7I4nEM##VOo0!nyO>v?;7-+$wV;;_maGw@^5q)#` zzX3S>_{|%6+rj&k%J$bfF?^%-X1zO^O!gF}ikv9&ErUmq1g zL>39oK2Om>0bu7zlzc&u_yQRFEuh<^1R~r^3?aCPGcBi`b^Jo43IZXbPG&5KPr}f=XEVIF2<4jl z$fl5wCkdPA%0o1txTdr_mLx*B*wbE7U(=pnPfGN_KU!*AeJtSAAtT^vl)goBA}%O6 zm}ahZT9~7FS|`=c2e&l!r28Dd@gDORyO&h?@I}HT79-^W2(j*_z+~DAx4y%p?>2E2 z{(ybqcz3Bsa0DDNDo>y5L>coA2yvn}kF?;7;Sq7GhMBhExpNpD$6};?snf058Ak}h zfWAl)B(7m2A%fwGbp;*H|Je%{M7M8e!qf}1sZ3)Tt1@a_8PK_rjT{O`$f#XKR{Gul zjyR8o#EESsmu|;NAsttNVO#6w9L3KcPMco;5%RP+Sz;n0BBOlK>hvG|xGg2&86NWC zra}7N)SR&cmJ4jLW-cEE1?#Q!Zy}i z8_92Vu1bY)2Iy#fAsG(Gp4#VZDir@~<~ah^i`KF==Ld-DVMl@qWF_>=zLL*|QG#Z6 zGw}^TjIY4JpUz)>py0T(UwKdNiuTa#V(p(9vnQc;VaJy;G(C@REP4iS&-V=^}*&W?$k4_u)-LG1Q!GhZYcF!D9&(lYwt6qNcVRrh8t$OHW5x~r-sT=?z+Lz3VXzd$NFMrWXokyS zRYmi`XF)FVo=y~`b_DcJ4~mBLUw$4bT%SaCQ34XeRl+J&Q?pj>-WZW;h%e{voA)}* zXi{l-v*%OBv8-E6dgF&CPDD@K>Aes;(br9C3>LZl7X~ zR?{B1Tw&%cEM<~u>?}W}xlc0YlbW`Uot>RhBi#*)YylS-c57HzSeWt4s-7;9;Ez2{ z!?MK=-)isRk|F#5&McXu4}@Hsvh#U(F70I9eR5o(a7HGg;v zt>QvM)DtL1HYR^^Gps_S?_KAB-obuYUzkkfIRXsmWvp+fLI{<8d!x4nX+mHc^%bds z7~jDC!|q&C86h~xX-jLgv7(6PU}TQ--`L||5e@M1oQr) zZ&uY3D#?c>TxE41Z>Z(^tI@K$BI8dJ&Ep(?!?ZYizw~o1CoNmWLzNMhO}7tkP1?gt z;oXpSJd?Fx9c}5D!a+`|l6_Y#cb(PmJ>j)8o?h-uiiD-N@nhKap+ktFZfLj9bQj_Nz?uHhhx19)=1Dco=-F!cXA4rucK_aV_ig zZ-+ZW=Bul3F8}H|w4t^9`n55G@2&D|oaTZi5jr{8b(GAw&My z2(4Ee6kqc)wW@1gt2?u8&&oo>&3WO8&Zs^|L!Q8?vCp=9B%h}oR-XUdNZJqBl!69@-MRPBU%OL;sw{m<8LMGTr-4Mr(Fe z1O{Jjq!XdBy6~9Vsl9Ym{`mu+rDJ{TxdR!VRxMR+6ngjUY)8`#A8x^iiDx_Ril{$s z^2zs|=-1y>Gs6I3&_~=QdA-ZMF~dSM0BrbM~wWGSb+6nWOnx z4cBdo3a`e3Bk~T{;+>)dc`_;mr-o-P+f-8bm< zziu4OPq(f;{~Qm2Ykj!|tGyEIMgR4DF-Bgx)n#pgE_=5d#qhoKua>Lp-Z~p_LFkFB z#~+VA|7+^g{E0VdXsDa!@{6Sp6GbNwpF%<8(&T^Womqw zeK@9Np5^w<;N8c>-h=9^lDl5b)(XZfaeqI*n5C9hX7Z9R+gw4z@DrWUkWuUfo&KrM zQMYb31r`k38DF;>)Z?Kpplj$aG@2jzcE@ASV5-s4VV^ekxp&HD&R*lcPuCfb>6~U? zxctGUM^^m7>t7F^Z*Ut3`r}g@?N_jyEAME_V~LlWieGRv@t_Ql$^bc8aJeFU16qJuVHHD z9Gl{P?9^t9tzoixA2xdLk&In?I`a7D(Ve0_`tR6csseIO#YFt>a}sBw&1OHcLQm1b zBbzr-UOFK5uA80W-94v2QQ2&dqgGJ>GACEwknQKO;+#(od7ahNty{!N;nic3u{3RS zkY{Vy)&=^!lFlZ#;x!G5j8(CzGm9Ywui8~N1t^cn%B`&LjGwtCXXQNj*Ch2h>-G0_ z4r~S&5-|Yu1mKh-GSutA}@>H$)v^%e8=^L)~lzf$Ht|pti z#D*CjbaDrdtczKEU^IBIp@$`TZ6mFaMP1#3@_wXG-TzQ{n6~VtzeUD5tG^7h;1@V1zlT~3{*LP za9;f((PplCX20K$6_eQEYv!+1yf|$3N!ieH-fS0I`kGct*IIhnPueImrHeuRZZ5~4 zB{hw%0Rny)PGEjbWp5w$;OM;XgT5^F;;d$kGL`#tJWFos;ftE_E+(q2?n0mMt@|aH zlGQ7)G_bPKx_}{(lde#_PdTvGugtNhB38X=ggK%`Ab59qj-mh4$uXh+{m#qxZPoAY zUI($ezllzRd_qGzEIcK1g%-P36#1DF#c%GSop~o|b1^_QHdENBW6`jut5+%@Or9<| zspy-fA$l$oz9=pCn^UI#-k&TsQ$46Qh?svnIOhJ9v&uiuU)g)Dr%?P(%7q%XuFGH7 zCLf{xw&vHm)*mKX5s$x@KWMJV-*qLs zhcABme*`DFuJz9KO`?{RSI&1=-%@Wn7ksvR?WXQ=YoWry%MUfSw6Z<<=5C@<)uq-=eBr zt38d4N6$p&sCry`J9VzdSbkxzLYwm4H^f zi?ZK-?^{1cn1xwBE;D|*{gSRGxMw~#BtH%NrosIIg{l#k5q?NMMTVcyd`b6O}T zSwXtntUZiv`o!xsF3Sdjwi$EA!|NKIzxS8rm6uEz6nw$5ys7+3h&_${i z`aSRdTDdB2|K+|MSpCj7FH2c4$7Z9~!gRWNV-o$OYTaArg>1Y1Ed4VD-+sLdIhjUt zI@C$^#dIoj$;=pP24DMb*i1Hpt#@W@$ip3`)Kvr2f_~p+%K|OeLWp_|Dncfp2F@1@l!7S ztiKe(4AN7ZS~lL2T6ZTaV#lqPmS<(Lp+{qM-)7(E&fa_}uYl>;Q5kW|wayk+j>p{C z8lP~47Tfn0=@?}iD@`nrAs(;QmCZDSbY-fvurK%s{j1v zJmFWKRo-{R`Q5QE4X>E9Ra5`=XlbP!dF1?tAzL$xO;*v=r2{`vQM>(H)`#KJl>M?6 z0%w>Ec;Q>s2{1!eF0}4I^W&d6R?gYMqDwwjcS6D)i191!-Hp)DtoOR zq!oV`u)W~N0+)J9F_%t(DwpxNOzgh8;j(g*4|WB=^e|8HNvqsU z6Kiq#>~8gET>X<*G}au*Gk7KIX*4uzYX5ArY+z{=^G*fX`P}6T{wwiRG2G)f=qlgw z*B$VmxAXn8U%~a1idB!5X1c3{lF}>Aba=KxhB*$v3@$x}zsU(gioU_sTRp~GwYDD; z5O`wz@iz!Vb9S|##%RKIq%8)che)^q0r&`+F#B;flaIgS0cFCjCzN+j z)B&k{KRA-4)Sb0adAQ@`3uPW^#o#NhV$FkeKYJ@G58;=G0Z18IFmTvi2fz8GXnYWn z(0Y0)O7~9=1~saTXYs+l;GbiE4Rqu~{{u}|72t*q;F>1@R1o36h2DoocDt?0!)?)r z1%l~ZPhO2q6XnR`&foAY+foHu-f&Os0~!Lt*OxG1y(@KB^KTY)+bjm$fKSk2qM`JZakWHXhra z92C=7NQ?H$ddaOhwSLolZ%AW?*J#(*0()2SyC%^`&R8#x*?<_Ses!Nt{BcD~KJjhV zULiu-gI~_A+iu^i1GC$0$yFu%1Nu?BzIux{Ra17p#R~qniuFTFahV)Bw;1a7d(So- zOY~&+7I3+U->u?ToV_5ELlq=a6Bm@0xm~2rW5wdn!uicxzfCA;avrJER+xKz_Eq^Z z!_ie8nVd4E51NOC!)EQQt!kL|be#EEA-Oi(vZ+OXo9XqlDUYaRa(=0Jr*rRV==Uj> zJ!w{PiTBg>89QsY4T@VWS09sT^D~m+JV_k`=XAowgjg=Ew9ZV zr<9>!bD=_mjl#U=`hP?)y~$U1^*h>{;{QZ%jUSVV0R3;p6lp)Pb*4sDPoGai?{TVsV7N9Vf$A zHBq^_cMof5Z03hFB{G_5xKfV16|xyhbYxrQH)V1!S-I9J{c^v7=Y~I7^riX%S5@XNBAZLM!j5hjPj1lg>XW!VWFl_S4 zt*tmbBzUD8&nW*XOXI<49iRB)lXg?u&sr(LAGe`NW2(wK6%pjnj-3$wB>@ zc5*&AR}!LG$w7HT0!%VFicOx{_g~Ywo2-@1X<3wZI!5)xNc@nU8(RwuqpZ)#QNq<64{WM@NU(*;@Y=(Ry&iOYo;tUJ1KTSbz1$_~Va7 zGd}vWPvejs@hfMlJ{%CB*mh&vZ#_b;zP}nb*T3@gn|LuG<>Agum zGh?~T`$ztN*;C$E#I1MmjX1inM#D>IJis@Pe%s2SM?a`6WGxPejmnhp&9jxV(%e0q zG4)v~r&~tjHq(+bh2kb7%Di1d@sHOxY&ezM`@|*4C#0R~hj88Vt;?zB(>H8pQ!`in zl|h;3&A}JZ*m(0bU5A^;=aF8mXEc0sVIh>-&Zpcp);{SIj$2p#%HrGHnsCWA-Rykc z-H~Tv_+#ruDpxGLcO34aH0vQjo2FTAPveu6>qdrfh_K3EBj{F7*N!2kQ9)X7W z+L|}2tyURszBSTYGkk)}PhASI@pm(F;~sWXKNIRJ^Nj9whr_tdf_FOQ(_0@Xqy@7W zZ?%;R>(1KTG8{c% zz@EI|TD*mWgLcrvcdjA5d{^(0bmbtg59!J|MONcwcWi%!JgCi;_*`~` z=ac>flkGxvKy&>)o=?Vq0%XS1qgT1s{Ibf*=zjKQ?6ggJNz!GGNVlUWPJF}^@iV|- z($r$6-S78WNAI}sG5>9vHBb>u#3-Hk^&Q|!JIeO0>(#mX>$}b$%xc{2vGwiee#N1x z0Lhp?(T*KbTet4b8cKW~3d2sjxvgm!sOGGSy6%P^;j4_uSj#3CW`ylMt=y85SY?kP;%u`FZf;<^Q=ZdfRm z(h5{3Ms85`y}rDZ^5tn3&Cp@C#gN)n!M|xq2Spx~bbUG*5+3e2zI*7`=+eDUnV(uX z3`{EH;^K0Pf6YstK5}+cCW#5N5iu+ukr=;Yas9wdTtMzN83e+;EMPs~r$!UY8tjQA ze0lvJJeq!ttSBlJZNvL4^2UlymCzwJK(v2s>3>-y5A974k+~wkAlDucJ|u&`XmgsG zwMAz@e~Xk9@C&JjGg10IdK9>g__@G&6bnlz)3XQ&7{d8%dw$jR{>bUKm`$xKgW%Unkp+S|>^n%|>zuU%9| zd9W?oSU~36A@18=uDbxi1C|ThC{!!h|Ea^kkw9R`#1Xdiuu%Np1}7^!xN!liZTJ-K zu&HJtpjbEs!j}bmID$~gsv<(M;@HONSAUP>Y&LSPMOA%fTh~!@c>#@cUEa+%t2~d zPjq|GtL9%CGa{eV^`=t-Rdv`N=7_w5g$E}3S}ra!?Qb0IAZ`OGpKxOL2O~PT)|0I} zs*i4^H&U zTf;{_%4gU4NZGKi)W;bVNmtZ7I45XetgCCL9?c%$dE>fU002_GZ@ZmC8 zr~QUM?g1`6;e5eEnh#PRRcEK23zk}#`mJG+)MA(hY#5-fMzGg`MUn4i#kHe3nEjGU zR5es88OTZ?E%D4Gm*Az82uUZ*Lqe@xd!mf)cMhn8^`}N@w9^*qp$@(t2fS{vf?8 z9#l2{*6~93?J!EBG-d09D3yW%%m4pNIHK=j7y|3gku= zxN&fE=wp3blcPtiWa23z)m{NOQdU+Lx9=MK<~eb!+KDH(bCfz5aI$1_0Wd#+=A2lw0=+R0OPwp&Z2>?CP{7pF=>eDge~%Y`4*N&Y zbFk|4I@WxIe*G;G1(7p5xNlCInVa8k9@2Vt3@}>&s;mVf>2hRqv1JG6=k483);TyG z*u*n^e`|QFc3`n_q+=gH;W`0R|GA(3M|tCk|1c+xgJ{WP?iKE+_jLxG36_LS@2Gp z8SOk^Y|McpPnLiHT;*biQs6!k-05Hkhzxi;s}F!X*A5Zk5CuiCn5rwP2e0g;3a?a$~ z1{1SVV6cMQM}7h7CxYwBD4={Fp9pje!h-l%QzS>gz+Sj98N+lz?$a zc5D6M7gY64I1zzmu)Y8)hm|S3qntmA#j+rd0XMvB*9I6N63<=G=)hJI6%!*N91cZ3 zfcM~CVw#}DUwh7NLtKoL;)k#TEV*zx@U+1CQYMRctmTE9sTaI8O$ScNGBmU1z zKmyo&j1nuY5wirQ-NK`1EwWA-R;(cW;t&!^kO(1-f20n;dIwu_M6!!!cwpitzHQsK zxVs6_(V8$o1D+JW1iT#y91gHb!dU}M9^fCqu~Xi@<&N2}G_ow1_ws?e{d5*L?IJ>@udF@=Zf?n`-7G`cbvrpe0M6Db=Qv^( zZWFEp?u^oiR29x6%x4qv4=KMDdl6n`ve(Q;fUR&FpBMa*BoM?Djay)vh>DBD*zqf3 z5Ge@4RaO)*^sxpD$rHK8@7Aq){Iyf>8FzS$pCa!X7Xe{W2xf|?%?RZIv;x3S>|ibq z$X@L3i)}C5M@|+4y>cmA$=_vnarVK4-Aap3TPnSAEVjX{-p`Mk;OB7oA&cGtR2@9d z68|otPKyLm?R$y_Ey?xBtk}eo-vQUOF7LbvDN&&sctBH=8o)GAH?Z1u0lEkIwq?W} zOJH(CXqov%;ewm>yg(@MCvzr zZ((OLkSth(Qu=3+d|V z^@(-YcVp~@d^~k^`P}9B+kt^|HJRt~PV(K~zv>96Fmi!LY8?R?BpF_K}_ za#LS?6Mid3Gy*t01X_;&gZoFhhUWhxZ7A^@I-N;h34@jR#@pKE;FVxxB#mH7Ak1mr zt1FD$J8ld;FAM|d`w|R^qu{HC+72Lga%Ttxk~~-BNuUo8166s$SyoSm!K0<&!sqPh=lDRlIHPjq_W%3t{v)=B)G2lzmwKOTLH8g z4h&iaBz@A2y$HeSAn4MzH;#tjSK*?PXLF(Dg^)tR>#NiDS7(OxP-384!Pm+0Ovrp! zRps!|iSBf$Li~)5roI7$FQ7xX2{ff=@i!6N@Rs9n%_D$x^Q)-PB$yE(N!}w#lXwX5 zI9!@Jy?1FGxU_rb&-7JP%82a1ZR_KFQtYfJw#eBQMT4!m5@5ofUd+Fg;O3-Kwxesf0il?jf>+ZcL45%fO_`)r@?K(XeFfP8|Yf zk-)+3e7e$j)FcO(aB{kS&43Nv1Ar0Uzbp{)C}MD>fVvXH6G+)8CmAWH$?6jpC0ug% z@d}-^n3(@2hqpfXcaQwnDC)OHm+##U3;TtenTkh%?giKFCKicdUxs8s9>D?7Ojh*=vD1dbgNwq9`9tvW(T|DIeBo>l^=EBFdBW&j=H6b>CP=IwEU6U(z*@~!LtPjAch zH?(5DTfMQ1P#uR~ex?Y7Wp~)qWRM(as?eguq0&JwLMRwPVPQ1gndwQwz=C6*K;U=~ zkR{M(u&W?oOKe*k?U`ugVHzoS^4adWv%}Cnr93q^-b3c{xOEuR2h{(5goKyT_~+E) zPLMe$=Kw9#_ViQ=-#5bzL(@~p4Jej@YBq)gCh%d)dzurY_H4RV^y}Vv@?g;X6KEt3 zV6sbTaqETkQtNl~+7qD=eIxl^5T1R=%(*C#JukN@1db z@VF1P*+xJ$ahw5oqzSL8{~4SA>AL2L&6&zy75rxAJ(qoI1|G7YNFX!^zyuRRKEIJ9 zUZlj#5?^z&VDmG!OqG7Zt%a~G?lsb+tbIeqU8%z%6D1DWgj<8!%W8JClgJ^I6x=R# z6k24pt-Cork+MInAg5UME4o02>AKJJ>VFL9@u8Al-I(`|Uv;~-yx6sBfTV&n&g^jW z%IoU?{AM-}Qg=u-=tvJRWUA<$S8vNY&d|jB-+$Jy-TVf{{zJM4CQFpd&PyKlj%xD5 z3_**etu17RFyOsssJA3iM4zoYm(BJuU+2GZKs#*wUO+?gqg_HHdGr6L zU8`obsE=5<^Gf_t(QbkNu0ph^6{A@8%Y-!r{^tvh3h$XEtzC8I@c(|t7~QY?{ta>B zKS781ZRe<^TQmTo$+ee1#jfOcjvo0`8!el^IW2grvPi@Frf=*ppeTH6EXZZAO06(jD5qNIO@r7l7iMlgWMqL7Rsi#Ca5 z&nSTA=nyShFPs4v1HBX)dmRvd2rty(4LiCAXauAkwtCa1-6iN8A3j)X;s{qKFyDAK3y z3}Nr zF=aw+3gk4EDja;k1ZCjIH1JTqDs>ZM+oE^;}Z`Ud41goSZE+uxmq@*pDgV16lxkPn3szde_Jk$D#eDP;OV zSWRMLVoHm{xl7d$Y&tgn?Jd>ifD+V zNCv?I9{@$WUKJ-77n$8w^`(ICjP41XHb?vO=Lw^dTkb3i8iZc7OJX~BvO;tPhg z$Wo9-0nU^Awl={qBW^1v!@@WWBq8Jv*Ws2(v>!kebC~TlhJ_Vo2j1nbTU zFlONFY1Z?$STCI4f=+>ue&u+|%FEX=Fr0S^#k|Ev27lM^-o(p)1D+f8NsFeK>-D+h z;~U`}BMsKBRO#N+JpaNZ=uw^sir~7q%nJ}r8 z=inU>^&M9R5=r5JzLX`q`M~kx+=#_E4g?2{HqQeU03{|w6d0|d%0L@IOqm6)&-tKI zPi-D*ed{cO(jGI^iI&sh!~u#lZ4cCZ$FCNZ`hOQxJc9-u&w@NgaMet5m0#OGT{#&{ z%kM#fA7^bXj2CA6ry&!k1K%Hy4=;ys0?A|>yqWl2=Q$BqAWebESk1!p5US*U&`u-rYS&QJYtc) zvMP2kbtft0aB(w?pVUh&Ft-?Xw@o*fto_=2R?aR@O3F!DaLDrelZd7#I~we#HyYY@ zVNGA^ra-7$@XfYM_PR?LXXn0)B5i%Ft|r9?C?6pRI%M{X<3sKj;i>mHjiU!(`!{}l zbb0It7TUCL+G~&kY2F_-G1o$&{7x&1#)F4VL7=#k3 zQe-3<{7ec`;9&241@x)oIo4}Q2?+G>_Qxf6AEL;Cl~uP(KG7S&5}_Z%XV;-7CPY0b zV8Fl&Apqz9Mf(T|VrT~bQ5!*rAhys*@r2%lUf1>acYg>SV4Q{`0y8;IP;`;VVS`Qz zE?fjK%`iRaBQ4n}{APrWMG7U9az~CH)qRQ9Y*w%8UZ=&imP@=j9i0rt)Nrfp z=0fx{hKj$?JlXyI`SAvK&h$t-*9{!%MZp=hljvYnmZ#Xk(BLIR6+#9h|4r&S`@DO2 zf%nN>!ItWdsYAYh*YfD)rRi+%esmf?LAd*c(XbE*zi`XzaG2GzjYsgu+e<@l;|Z!R zP8EydV(Dey%n?NV-7%J;w8Bz_|9vmK`lrmuI#>IO(r};w&7oi}cgRCm` zr6pqfC|otN8sRjL_Xshkzo`GBFs*{Z11=-@CuEEd6SD0KGb5kTmCci)M_pZg2g}Qo z&q`muHIqU@#MMIsjG-K!Ir-H{Dth%w4nb@qsyvd3kyfx@K)sAMIIA%jBNCXK;{u#~ zw%!8DS@MeSqjc{Dlhl1c%D@x!!jnIXYxK?^@5rqGJ=l>ii?0VyI5IYt%k$@W*CvHy zN008b`^rm-L`;bY0|+e{ywH;fE6H=N=a%cAh9E2?B4T585TAczxV1V2Fu zqdJAL;*B_~Pc=2RkN_f6DvU)><+k3G%_a{H3%C#H>pbV29E#_OS3)^Te@$@pkh-^G z5Vjt>oU$@?l>Ow)6SgykjO1uw2qBkBBNo-Aea3tXW4=O;Gs^Ts@S*R>O5ZgojS&h) z0e2!J)sPH8lu}Kv2QX*9m6eqflm02$DgbO`poN1Tl}Kmp1J|Sur+#{Z|4;zph8+Y+&*kd#xXl)L#u`v))o9UvVJ0) z62YdqXLw}Ty>`17IxFxZh>)L*+Ls%71J!{LL}XA0mG`_qliTBxPp&f#EqdVB4xPc; zsY3XmDAX~v#XQ&s@8&{h!7c@nmiq~Q`$bFq5fcJ1!NqI=XDC8VXp*U+vfqgc#Z4`Qk%cqR)i&tQEz zGv;69oDq;<-brQMi2IhL2B-b_zv@9ji zCW%2=qX)A_MUz;^U1-7(_bS0YH$|U+6SHz>NQDsu0QxP`^#Xm5nov<(s&wH=;)7;jEVo!cZgW=c6=yQ4qce9HwPd6vK2{KJk6eKo_( zYF6Pys^gm|wf=Cu~9j!lDp{O_KBb38Pp_G~(N zNcn{OlRkr}-xXCuG})6=GBL-ZtA;4ESKnmh^}g}g*F914#^Bl7+lLw=+og}3Q$5dC z^7-Q8hIpP=R=sTw3Ex;HSDlN$?W2;RFgd9Ec(Nq_$I(sS3#F)vxtS(n%e0zLe=qou zchX~#3Rq6APs;1xe>5;ibBNwHIOX}Ho_9dLvVPC^2b16F;+r+T(Rm;IHQ8|K2PN&5 z$1mS|d0mg!=H+tYl)T-gmbCxZ1|}t^eR(t6Y|A2_P(1s@04GTb{%aXsbqltm1rZjz#GP*+`82HhKA&fKeX~Vv4~kMVOe<)FO&QDN{TMSd7wV+8O?NI+yOlM$*XqsOb|)T*ryCaRL)ljxZ*7WL zd(-zp`MwzT_0=o}+&qeBSZ0|9EjL{czWTS>{6Ui0v2Rs$`x-d?M%k}K&egnDcRK0+ zr9&;c@HsW_QFYEbPFL0pUfWmea@8Bv=nU5uZRE8*mCaHjvTfbeq3#UoYw-%r(R2Z4 zUu;lKYw?fEkm^--`(TvQY#5S(E5;ZP z1jO-oKlhJ%)~j$@sbZSuG86BzW_4Lq%E;NejRT(DDpKp)!Z%DOO%_M|P6dCUV)lmq zCYp2B%@@P2i(b%qcI)dAzu^|U>xG9j7L0}Vj*GW^{xJKrijs-t1ff>%MTQm0lIP+^k-? zkLB`C-c_o+`Pme=DFGC9J`aVAroz38;HZAdj*S}_^hWn1xt*7xu3Cx?8 z6VfYf)w%}WAENB~A#PLGnX;-<;n?=~#o0?enGw^}-Rv(_JEs%G0)tf(DJbY|^fc9s zi?d6#<|w^57}=$7_Al-&J;7wZCUoI=OMl9RYV*=AsW(AGv~4FCQsPu~vi=6#|FCh7 zRm|M#Igy@)^|L1ToxJS$T+8fu_?j=5*{|j+XDDwAYaSGmIk=R+5HXja%@CRB|HXy- zorO`B|0HEYUj8G$=D@zx!r;EA`6+b=T??Ev^RA?30`4Ub;})^YK@dVFDQF+{c>OO(hRK=3K`nY`*b>PGqb9GfRpPkiT6<= zq5H%&q6-%y&VCVmxY&|(Y9GCp%3Sv4ofWphe>olK%%xMZ2Sxuj)1NR_6lJ2gmgyuX z=z7m{twL6Ji=+^PBSU7nQDN4+d3x%L^I=X#=8uB|UN73NI%k%p%$xOcQyigk<;vbm z_i5@-nHtsb6|EM(ChDS!p$#poj&)W~^b{Fk7_B zu|PFAOT}$%wMunJnj&@uLKEHXD_?cDk6Mii@_KyabT-ST^}qhI%a1+Fe>f^#C`W+T zf?h|3^JR#D|8Cz8tIUguN5VILbCA0~NA;46{=}QT-4D+TdGie~d#g9uO1j=-?BCn{ z-c-HGJ$mrflbO<)l3;`9%ex+~$>^YMuUNdJ%O^Eu`_ZSyo9*S#t%8#~Q|{cJ4H!6=wFrb~s&x86)%cChI2gUXxJGxr`s_7!^E%1*J)~DbIYt_hH`gydda%>JuCTV z?I_~IH8l5Dn~L0|xnbcQkYQjnF0i?6uz6KL=rQe|sDq(HaSYciH!OtLvW+|*=ITjp zvs{x?^k6}dB2c7J^?so`=9&Zu*YW%3GJHDqG;w}jTSMO`s}Sbyn+ z{}*ln`oSWHjLDMAhG{~&r`)yE_Q{@DuHsIQ$<*vz8#pMqWU;K~q+W8h_{4UZmQeG$ zjneAb^?eib)0>jlo+%k)TDsfvgQdy9vw2}nPaOX#eYURY$lk6;l)cAqywF_rT2wcd zpXlU}UOBjtY9e;d*15Oqrw>d05l{IA?*r<|5w-Gx&97K4=e)3ES>e)56gT^%S21&Q ztHt@v3@sOLWPD|^WgX%96bc||0Ufv8s!ja<&hcW3RONG<8K{-imMD+7$|sp0`}mi0 zy^E^aUXj}3K5PEMQp<^b0xYZ-N7Exl!kr4c*78-BPDopIm1w3XfY^1LRV2*UF{H2U zw$J*$6p!3N4~n*Mc2>`M=@%npd3A0d zMs@>Z+kBFfnD!)mw&Yan@_D22GD%jmeBV2{pHBCo)>RLy8qL@K)mhMC^#ZLRD9b2_UC_6RXSi|xgydBIQ z(^+rRQBQQeAU%=8f6Kb$Qt+raug*oa>P#JXPQJ_LLEO_+eqyS|CMl~gE&aZ5ZyoJ< z-dFpE(Fy|7Wj+-%Y-&z9-o{Vl88ClSjqJMb_Wzcs*dF>qzx$d(9k;_rH3K!ScFBuj zC$c{M*_`)p7kl8l13Z&&>TecpI&QyN=wg_KKy+coF%_lI5`|LLg$GRc^cMX2W>j#q z&`GPb5N8o_qNuF)fp1jUJ%AlUwkyPdu z=CeR~`#V0x(u?5vj?M;9PckHp(`*v3Z&C2!fg^C(3V5t7Z~$`o{5mc1^6e^d;RW0L zG#mRi9gbtwNt)!LGU;>U8KE2-V2^t#@QiHGG#}`Q4d9&oDTU=r0|T~&GCXCoikn_x z68L}SS{J2>8dE15Ek9=?ygKpP)s=m}*ZSz3GkE>#(5WL)TeCuyH?5mxDf~JlGW@x= z@abgn{iZwqeUV8?nrp_Xuwlag>ysFcG}SLY)+-bcx8U(-j-}84yXz>(Zr``m`-+W; zlCbuRALlHRy${Zeuv=fy^4w6^8(1BP8LldQw4iP!i@(o1UGF`2BnYTK$Zu}v)ZdaKYd+7f zo@czV?5tq-_uH|>c}5#;N*8Wj{eN!f(?X8j@^Ac;eoXaQ)BgL%_2O*?r?^UL>?ZF0 za5q+|Skva`p_50rbe7mQ`>eUr5jFASlk-OoRk7IQCB~#r?o74RsSEZ_NxCZ9-MSCx z&DW>OTqkVyv3U3`y!*|Xz5jTc(oP?#3hlWQr6ugWw5>Z@Ls6u+t-9Brc$ICSfg?Vdb8-99z`r+x-F3X>-5R)y);V(QO znVO{9dC>vrE7dr*={8q&W=70k|6@Yobzd7zVeWL%1(Rk*2%I`n6z05hzwyfHonN0v zw|B2uT?O22^G~HOd!5gkNoy0l#CrFu0=NBKpR}dw$)lgooL>b+YNQ%&+Qc-s!O3fT zcf+zA^_Z=%uKVv{nAp1&G5NRBJ9Xg{2Y18%b$+)bEf@Cx@K6C>1z6M;6JY%&o}=XulJP4?JG}Y%fmmN!D(xf=NuWOP4J4 z1S(%rssx-gT{z`efX{-(Q%p=$7l=I0Sc@_vx%5gqP`xL|QVI8LS9nJ%T15E8iNIcv z)w7!3xKC*fdgW}`*e7!p$fVQOq&AthJmI{ffoV@c?N?gI=yN&)GmNL1@e9#&|u)*qg$7DFOXQGhcqR+ zD@4p|WxsJB(@2x5+IO*f&!0- ziiV1uhK!to{8uMP_f65!(6KQvu*vap@yY+MpSuC=BxGEqyLJHC z{ZIkO_rpa3{C?0-P|=Z*9$?&m)q4U!LPmaogpBzF;}JSC3Nio*@BkSF6%F_4b9B5{ z_*C4YO6mp6PVo|9yG1i<%`8c{-J*h%($6fXuOHLq*1OKS; z&A^d`3;%4J^1|i{?@vXetk$eL?LxX_%r}=>AbrY;n3QrEQN#r$);e zQc3aVImC?UGC0qMYW)QX=?kE?W_Xg0(e0q+j#XXl{Ro_0CI%$jC%Cx(pI(w{e7d?R z&!IK-(}USbR+lq5?$o4_pR8~}+|k14WCQcadeMZ^bpz-O@mxtHy`~0G7HFO5o37J$ zPMhh^BSvvYN4tW|ar}d)f~vecsljjp?s{3v!47MvpX-i6o%uQY>qFP-K*9#OpunSo zGZ=C@iEYi6|b%QWb4z zTHc62g@pK}4}u=XXgD{OxaU5LQ{aH3H!N9?+lsCraSDLX8WR!&B$Fqy+2@Vukq z9ISPGmPYc0>^W^&d|N7ONHI9r)dj4xCnkO9vrS(`NLo;*zF^i*HnoJ<&zXleZsd2c z9vnE_n$KqZrhC8Z|BT@Aqlw<+5woItb?a?6X+_qEn9g<+^%)n<=Gs!nBb+znU*x#Ysh8%cdSf0aejLc+_Zc}G|jXn97Of4rKNL|*L;P?illZM*e2571>+O+D~{FPce*XIR6PtD(%Bf7 z;lSacg~!Y;xV7-^v|#bFnFz;Sz{9%-7A7zB6^Ca~$Hw)AS~?*qXCS#8EQk5LFg3gH zJymS(DPFbQLit=QP;}|@Q!(f&R6*yMixL8ug#vA7dcfO7rDHnmjO*j|@hao>pSgMG zMo5X#Cimu{JhRsuHbAT4f-2*mxud%*@kI3u=5t(;LXO4krWeFZEuOY$bURR6Rr*3F zR4FMf^ULNeDf|AIjIu^-Nn^pl?`Lj^cLn?ElPbgP1@UntCQl~cZt6YjKOjLW+XH$7 zNcXWn*G(}+HoW?wP))jek#B4R&4|pF$=Pv2rXl&fz_~nFHUg2~_w!fW<)QOn4vmeS z5>+8mf2mRa!6>2XDZp*A(v)OgH`5somLgAB)Acc`oa~%61NoIR8Y=cOtl9*n7!4TM zQ#=k&gFohK>t@&Ld3Zn#iX4M%kQ)KGWESee@>QDGx;SJDl za92LZll-0MJ)oj_ZF+X;rG2P725KJA1wfiXdD`L+hlXIW6k;^1=&+o|%`Yq~cqTW$ zp-sdz?p*IjvMxBl*_mzgTA*vG*Fq8brRPKk>Ll};gc&mPYsz=%!Bk+Xkhsr!%dGI{ zN79q+d(e;=xETOxR*N*CgeJd=JsHD}o^8+~qCxfH+PdBpIoSy7EWDmD(bg1Q7er(t zPNp{Am~-mrNj9R<{Q)ba%C=jJks3@ju{(m`+DBT7K*HV>tQs!uE|^tN8F$b~))J$C z73TkaZZ%`PsvNjSa_%q{LgEL*1vvaa1m#{)ZU_{p=$h0k%2`=X>{(c0MPh6?D8$(e z6TLqB41wNe`x>WWj*bt1k8NLU&SBpBD+m*N{83&0;OUwv4(s#+X zOX92eQ$8R$n{j4V?bNJT0Dg?9H1&9+KvQl6nPg5Q=jnVIY(#gTSNG$nY(nRl>juiJ zo_G5Adx5mC1|M%^%~$U62fv8i_n%dF70f*^6x+noPzh?vX-Kvxwn5h|0sCT`ZBp0G zDyudoOUWp_z!E%zkuZjOeaIuuh{)`p)2)J7#niy5B_okDGJ3M2FnWLrRyo;R*twCC zrQc`_^1!szQIn=Eu8)}~gjg%5BcArN84MV6iIOAGX^5>!+UvoItse+Ew6l5H7 zA|vY)VmKxYBZfBJ1B=Js96IcglaSL3uvOT(t9gHv>)aA!ao-3Hluog=HOw)KIg+B0 zb1|?HSSIa4hV{nQAQx3gnGv~jY%&?Se~75sGmCwFxM9I!!(Sr^EvEEaat~8<UHQd#2>*KnQh9 zFr>E961uV{gL1fMN}3(_{#``%yBYWF#}=a}tqGn=Ot}_T?&o!b_F-r32YTLq=%$Q) zy5IaZ-ZBC+V` zj;bWzGDcl2;`&-U#0Hfbm-`On}Q*J61)%LR*2HXnk_72T*V;Qpakum^0x#WQIdZm4{ql4<8@%WSMUGK40<722+L@Lt2x+zri<_?7rn--MHR_& zRoH#Hb0~LdDf;%$DnO4hdy_qq$npY}yUoo_Ec$^@(OS-tu0(_j6d6*X<+}=~99^ViZv*mI6I$Pzh^6&4ce-=&E+%O)>E$}*X z!xk$)k4|L8Gls&{mY!kcZ7QOFRLitnSqhtYq9uyG*^Q_C4)C<6`R$yyjUNQRE8Csz zh&ko^K-c-h&4s>eS=tK@+naBgj=)}dKHV7Yt(A<>kdxQvgvno=0=MV+ZF{F&L``bf ze-xESp6Rb>^7N!c?cyNiD;yk|8-YyH0 z&Ul9yEz(*E*NU>)wps(Vf4&Kn^>F6-*1c9>G~}nLgEY~p{<7gjVaqI2)`a#{b%K3v zy+N9_LcLj|8NK?6p;wBpJN4724!3y0z+x^n@`&B9?d8^SJQQ2Y3jdEmT;K z6;W&c?|bE*lx8$5<}96*zAzVm-@CzYJLi%n*dp(1A@%z6|1eAWP{Y60@~=v$Acm;_ ze!=m#P2z7`S-+wz=1rXZX&msVkAm^tKn0#7mM*IlSrP-PAfIO>?DDkXec#Kdq??7(s?St+j-)=bwq*;!^T2i>vS{e4I{?Q1#T3crKjXOS(3hH6p94 zweeINXp|$4c9gC4IFAQdAN_9n$C%Uu`9dYPf;Eiq+?WWMkX1=qQgR@75NC`Gzn;T_ z)KlcZWb#^McrgD5RD$3Z&Y^%+VkQBrCY-L`Gy>KFQ%^ zb6EUC%i(t`A3fe$#Ls;%pOlt1b&x;|(megDuRe!F0^l4AT-ph)%c=Cpm=(vbtjep4 zk=E+TL5ZH?7OO)vChfflM{3{6gGS*l+tnUt%RE}it2s5w*biCZot}EK1pxcZw^Wri zRCRR0tpWZ8RDoS^SFvLkOCBBxYS8D2abC&E&$V?~)R{{wvKWG;U4=2jyxafLF0XJb zkH0cU!BiNz_=4T76E2KAmA{~p{A;TJa@GFhHc(MQ`gwJ2?XOF{3KjF?*FWwBa(X9p zO>C%|{zqB)S*0H*=zn*!76j#}*m@}!3dAUEKx|vrNMi_YeQjD(X)itlu19nwYdN6^y2p4qst>iUhL#Js-!SerF!W7mKptP zxXG%i(5T!0ZG&j&8Z}Pug;K?|g|n%7q2)vZ*?L<&pZ0hOf40j+39=2kSUyu>zD4zj zyj{cN#G7hZZ+%_=M0|8Rt?jlMz?RJb8)UQNyX3dlgoMA5c~wTj!`JP3=;yz`b3!iY z@_seV$j-e~(K~=0Q&mNZw60m?e0_!%(t_ZQ+V=HIkCyTR_{X*|=YKO~-em9*J)Z@_AIN9dyfi6P z^WG8dE9};Uv3!K*eWfu{Q*0&z@t+#6SG7clI7FIl-9DkN$5_gESwy~QT<~?~eZ%(? zF$p`1x9$fM5$?0&;~Q|?reYfKSO%$smA^#2vbCTXPfd~?MxAGM(4o3vWU@A7Z?^!J z_{_*lk2j+27CA#- z%A&#VIT}BqT}WB@37C7>Q)|w<1^WRl%!7<_V+Q9s$g{*0yYNfXIL;4JMva$`u@EKD z98M^UsmU?X`WbUee>be*+M`w!-SguI4^*k{Z|KZqQ_&?#iv@;LnmY=@Nho_H)`r^6 zIz$pV9-6v%?bn#C!kap-LUt2rWk}nm&w{vGwlM@zC~yAe;)nfxGoQC^)vdpLQ7Y&k zn<2iq)i6m;Q2Ol^Kdk*}7pL_7bK?(Kj9gUj+vYb>gWU!HMkxM>$plI28c`XahjG#l zZbr5^#{XgX{PXvZU7*?vj$deHO-EbId!n56kK=QH-o(RQcnyM_xv-`2lbpIqp@cd(hF3dWd@&Skkv%o<*GGF@f zyffdO!Zd?X`tiMYr-?Ofo9;}EmQCKTj1&;v!hCJjZ);7FvTYAb?VVxSA*@F{kCu92 z$y~YXUQePoI_!oq7G*)ufAyKu{=}CQQcnWYIWOLhyLU8(VtMces$znKOlkw8Z;)(3 zy&?#}BSV><&w2Gj8VWX<%*iHi4ASNY(e@LiA_X=|-rInI*FfM{gXDMhC62ClGsVuK zlhRuq;s>#r{T#A`D%&gFZSOqaJQ&i3k}u>Gp}%)!e%TDti7gkUCh0+`VN4UW>3%Vx&c;|R;*}pHN(3Z*^)48P9m7H=gDk4*Eh-b#30NfHYkLB+>JWTbBAGbN#Foo`0=H>hFWMe2<~K$KHgRdmXF*Z z`PK$c5k<|O;ta}T=~=aa7eWgf#ndL8PUHqc4N1eq49#9NblYoZfF&Vd-5NbQoqisi zA1s<=6}km4uyQyN>`7lZtn4}2$!%v50}a$9SP`~XP+g6L1Dv|?$<-5WE4!8*OQwRg zd{5Q6L)JvdzRk)qZ59z{5Cn7!iVz*gmOmii818YX3(-bSY07HO6RRp8kzSeN4KhDh zZfZB@WOrzY%$$%CS(2&`Lnh6E)vQ({Ft?M`)W(!09-q{$b!t@k@U0E5I8s6s@L)r~ zO~8AXoIk~j{hN0}_K6+i3%-;)!1eQ6wXn^mf5c=&n6_L(_XXa*Qn~4TRZCTC&cS0! zez}|=!HlgP8NjB$TiDa;^29`Px2!CB!@0?Q`^uFK0QwFM&Sd;)Wt@W2W5>rH(bCij z8JAszL1tGN!o_Hxy_9hRCl^7d(s{Ho{_!rS?vmAC2k!v+>bkU2#zl2~7SLks!iZ7M z(y{@R(#;z(?J5KiX-xN_Xrsi>rxgl%3lNaTMyhdhQ&TenM^&F>X*qvWU-8~ckUx%? zj=y~+cN#qL6ml=Jpr|0|$x%iY5Q(Vsa%BG>)4p{E9lH;0&Re>e9S4cPPsZO zF%u3>UEkb$x3oO^NC!Dt$^y65xY`s_V-)Umpq*W>=>A)WrLOUm%0gRlatQAA4^yc- zv^6T{i4xCbl&z=!=Q{x5q7B>VKSo0Oz}}dy?KTX9dV}I6vI&S-hie72-UOYqmsPMZ z&BsNjg?3(u=jP;PWtQY*)&%!kL5+tu+ftVl(Duf;W-CpxCNj*jhV_p;5KIG+(GzYE z3GtR!RldbIoS9I$cYCCh-P{q`QD9vu7Zq29kGwSzL#M7!b1)9 z-%IE!7TNltW?||oeC(PW(N$1!oGVabe-J-nUl}?6TEs%-$t|+dNT(q7SO+vaSWxtd z-RIKl(AYvq)tIQLfTMDcidJtlBkPk|2sNEGe0ZB|-)|&iFUqy3F&C3a2J18{cZ@HO zP7rPi9Zsw?CEaeW#LM5D(tF|XLloAzQrl{n8@k8C|86qPaejeL&Lxe~Y*uJXTWR zg22J9mGC6nnJ)*+g`7;aeg5;xf-ukchVEkrxXD~wc6?7y&J?(@e6mf#q-uabOo9N< zFg?Y?57OWh%Th!mc_XWZK?#&!A$V~>n7HOtqr>!}YGO!=rlY(*#UdiSbNR`Oj_-+e zh$M5QtzjlkCAF?1k7SJjlge4vkq%h`GI>j}PpYx?QucBtS|~_gAyd433qUnAVDQv* z1*rZAmBaLV;Jf~kgz_QU5(8uSdh#(Rx{do{=9pE)IICZ<5RdY(f_&KaUq{S6%cKr^ z6POD3mU@R~t9%(ME0(%YPv0Vtyg$e=vA2ArY#P-j#^2iEC zWOUyi8XL}ySeue+JtqV0;|R1ldRyBr@tTc|pyOH7Oy-{ij;hXW6kCj2r{An_f0f!i z!@DW=**kC*NugkYf9EQw<9H3`#{jjE5Fa((33qGErh%ZU@K zQo>a>Fn5fSEa|CeIi{5Do?b5`ZTXEsPOS~%;d>?fezs~Kx3WQGA0^o5c|f)lFBXxi zIElcU0W7~h)N-Pra`x5y`I->AVr=^`DRN}nr5fK~(I@-^dPvClwV-f%gc8GoVgnxR z=R1L`CyEu5IJTZTgJY4$P=zF2R!6>pjBt5$j7G8X!QovmEgy<@jKv|s|tz5`* zE!vlL-tl>?AKAPc2BGJLg`OMms3wG!1Ff#h-E76;we;B@VvlRi4Orsflmx+fQGH2F_e#S|{U@S3&jZ^f zylS}>!S{XJVFfv`8C7bW@7$wysORGLCqyjWxi9=WJ^dh#CvOSi|j$>xL=ZZ`?ffqsFx{~fSsp+W`mS)baI>Xv_UsxbD!c!doXjTVXf0k zVd%Vlo9wDt$K*dN3BrB*XC3~U0H%Wq@L$p)f5!7G!trOCf0|N4RXlQmFTn+%TY3j9 z?@vUle|E^UBJ}M{EyTT${jr<5E%63*XcwoI%^Zl#d=7n=UYI=Pb2f*u!Fu|0$G&8T zAXyd}08*D|g?rEz7u?!fmjLgCUlxECMYY-%$gk&p2xIhampYK@|7uD*|5*z$Fp$}u zzC?&Q>KscO<0ZF$)DEfizYpJayKlDCG9Zwq(>!zG}Xo>33(F!x29tBQKjY zf6+UDU8QqFZf6B+Cshh*qc&o@AV`oiJ`#%-J!sdMV#tM6l~oAJ{R6g%KZ{7W;6)RqZ&)(H63Z(UI?OT)^P17ogkRRY7E|ZgQq%|i3`BmFCxF}0Ut>5-2wRSm%)Bmh(u5CT77`J zo+~yY>f&2s7a!>RZQfNZs1Utl8wl(v4sRYouEvH2AdoA9o+|917@n)1u!t ziRJwexQe_;6E)q*$sfYHhdNYrUAXw7dH#8wY!5`RneL@xqp{qnQs$g9MydkX*O2pu zbwc>+_3axt^oMXu5zN}K>j1sKFp8q`z#At~C!MZov>rBO{cZmx*A6(^O+$3d|Ry@>z==4%lIOp8ny=p2l zSwp!4*sE^VZW|U>?4OmT$K%}$fEt7jz|Ss3h36(flrR5xu$iE4GZ zC$%!_$0#)Dq2nx3&6 zZbsFow@I}`Ehxmp--Ue=W!rN1IgbjzRzaUpkex$s^e|cZEYzDX z{;L7b|4RccoxX={EI+TS9C#CjW!3OYL429j?OmlO{hQD01BT=80Q8XHiL0L;Cr_-i zu2lp#^>Z(Rj^3VUdPV<^MgJX;#lNrL6rgj9;YpeQs|*R47ec>oMLSNK9&v9yVUt*s z*?s4^>h)|zQIj`(Ospl^aIxsRW+)5A%D{Re*j-!XNlt%CJ&6us1`OTtq~ zM*~&QwU=;VyI;uPlz)xp?Ua6DPQ8M4sn!?U`K>>Mc-IO-+4dK_=lQp6x zPoJnzC0{cns?>PuF~}(n4buT{^MuBo5RU>+I?5gT-X3TOuVymK)q}O>*%A2y~sIA{k9@=g# z=dfEcjeQrOEVT=ev4It4*Q;?hKnyiG51ZiNbk+6fNAjaQtjlWAe}BG2pmv_S@8K&o}-+a>2Pd}%+Ios4i@1h$JHuf`cUEMMY2WSwb{ z8xYvE-i(|XZkSJ)%RXhM%?pHs{7CP2kHop0`^3$kaO23;%g4V^WJ-<~kNZn)J6ZPQ zP#(R)_l|`cR#=bc+muIIz+I^b_tci_mHG!8r947bYnY@4 z+QQVn!K<$GYIt*A%|h*GP(`4q!$h)A+#ObHide~JoVE68BD8pG>O}P3hj-7Hu#g7X zY;~aT{fCo&v8-;0y8BO$9fAkxYmdr6Lr!dfmGDA;d)2TuOC z$RrCoy>8$yet*4Kj6*LNq;q>;#2O$fUHZv=-8bPfe1(SNZ{6SYujI(BH7~B}2^?^) zN#`9eT9H_DtB(sU za+om!<+ukl>EC;e9lTjSV{T(CH;5n1!_|Na$$W>ilJ=jCG{U(&RZiZo%bt>6ItONwk*6D00Mt1sS`Vm}#KICF1U-(IH}aYVEYeXn7(OtC2qDAd!2!TJ@-1`?wdo-tPhx z@#+qc?ciG!{S#$4Ffhs!FZ9O`#~}Xc3yHk^+mBo-#?C)93-tX{G<~KD?9ihI!zfB( zpr_UNPZ}Hb;H=;CPGlUrtnk_SVk#Bzz9`9W*hg%-W3NX&n(k0i*fqV`yoi_dPS>p1 z7iDLHWJR9H;*k*Yf8nhUgm3$f6YD+8GyYR_Irs+YrMAw@>MD(8ZO(< zD3*fdw`j0U3a!Jd2EgwHjTc;7J65B_6u>2l&7)01V&6twhgdm@dKkBK#rQ4lKnvY_ z<(*UVGqhMXi(R&+VMT%qz^WMIh7I9QTYIsJ6`w7&Kcr=uKMdl*bDh_1{0i>#r``!d zJ6L(B&%mLRIyTy)6xuYZhH=JDB#@X?7KPZ;p4{YHs6CwUaj5&CeIeSzxCvCf)=_3> zM~O;)y)-`NBwKd7ZXN5=~W?Wx;(2h}w9M96-`&?)Iq0Y-vPF>q4d*&Ss%HU2rP> z-ky$4V1^w;sfS)N&DZ6P;>CQlHG81aOK?UaC4FsUUu-1)4M@Ab4<`G_>Mq9Dq^HG0 z2+`i(!z_eiD=~XL*Zh&G+RK<$4h~ccRaaFOigXLp)rs=Gv;#}3k)dt>PQBx-p zN(~ZCRszn6JDY24gYDD9$9~fJb=4imiP>dvqD@%k$I2KOm8y+Dr1JPUew8z3tuv$! z;+F%>dps(P{PfN;LPi0Vi_=D>gG}*NW|5I0SPNYQ$ta8ROOuz(Rv$mC^F zyFuIDLQ6+33$)P2hh}RQ;Zu&n0PWUy|7zD^JKyO5=h`9OiLY9ZuSzfP0B%Eh~xL3yRn%pJrI40>oHY#l111kuG zM0kq#2YlKpoC8dq-c~-7F4I+cOA{#MCOC%m!D@NRhii%7gSSZ5N%TX#+K`k*<7^?! zY%oqtLA8g1q8YF~PO7SvOuCm??c5>eoB@l8nqC)E>`H8?br2N5oW=fx@=mfkE;-o> z=F|14kH$6Hv#T)yFU5Dp7`b)wS;GZI3W;t8+y|7uBV<&R z40HD7;Ypp(Pehd%`kl**l9rcFL{Uj7|4l&t$+nA&KW)ry!&0X=gBchN%jm!Ep^j-t zJ~UrOdEzET@G~h+PaX{;5_W-xke3HxAZ zX2}rya%qnkv~}u!I-7~XBFJV#esq)``u>XHj|r@7x7L{1@wUgHgH-QrvS4vmVrnT` z*&vBvd)kWuY%=VL%X+orC>sw>%bdU`;K;}zNUk;ah$6tFIp2Yw%Bk4;Fvt;ABX=Kp zL5Sn%Eyc$_L>PsFXxFe~A(f|uW{j?((p8DF9z)487*Y1Y2GdS;L#P?sV$N7n$m_db zL7&*y?5Z(&85rJ9C}KW*HzPS6*6lu@;rvX@@D$+-ug~bMG9X^ZN3F}ndU*$sE+xJ!DDRgCf3oe;cu`(9T9#G? z7gWe6M>Y1doX~7F(KP5vKET>GyiGuvsf$vw>Po%?P<)Q!EWkyXcCs>D#RgFvR^a|n zc{|tDspBBLlt;aF?+J5L4L>@oQuI#1W zlHls9Fn;Tq%IG=L0mZYQc{t_%T^yZ^B?;qI_%&!s#FgOr0bwuSRVwG01jM-&RtUxtW5WX1ly#-%*>|&mC6~ATrB0z@UC``?nm;}m z^bfb7v^OSCHPzn&bIE4gmdrBUXP@mL}NHc&w&>|uYho#yOe z-z8O%5~Wfkhvkh1ad@6#qxMHq{vK+y^NS>O1=1An?7V=AFLm|qR-Hc56A{jQwaCyX zWavIcwS4UHGS3PcB{-<&vn7~P1_gdd-!|@0?(x?a{9)n0AkR%r*(6PlzFnf;$L8s=MPDj$M=C?tNsLr2b61N)n~6~|ERH$V3Yb`23dd=;`ZaxVrAOaXhO4lL-Z z?k`K+Zhqbc!Tp`n?_~4sxLtrzlW{jnl!+gqeEG$W76}t0AmSXbHgn~EqzTbBX;smb z)jV3x{?z3UK3XpCitp7Mn#+N)v3dJ?D6A1aex!NFqE5qn1KepSKWue@UlKCginF^< zZ|t;10{tli;q!LkvMg$OrdgmGJ#2foMcZX)H4>Skp`u}3Q!`rq zl$_=pYF9+73J(ACbt7!|&OAQQ$~Q8tF5%oIQ^H;na@7tp<#AmjhxWSIPSUrdhNp65 z3zfcfE0rr!^7Thd`N;XGPwa?`u5)+&BH~n~WScd*XL5aFAANV1ap!#Al4uTK*$48n zB(P90D8!V@+Q-s%5l`~DLFRT5rMy7WpIJP6fFNfF5b78%N)6rN+AA#@D>dy2ft7fW-{|_TkorXN+YIqg|^cp|<;d<@(+V>%EvXBG3x=T*s{L z?FI)M8P%=TP};$DAK8UT2y$A>Y9@%Yt|8KgoSt6E9%Q9v8IB+C=rDm(oVtr0N;OGj zg@q1|Tq0ZM_7A=TI46Y+Tb+c(&*YV+%Wt;f2$A^WgjJCRR$q*xJRL~JXuo&VbVULfx}bV z=d%<);Mix+&0m_;vWx6NrCb2dyFq^RjPi=lYYi(FEGJ>r!P^XX&llL8rqIc*?El|ILA~hLm3cLbvgA6TDqk5qYgC4g$h!Rs81<3|H{|<*~ja3 z&a5$cPd!&P|Ev5DjONkdPsE`Zf{be_^d{?J%G4Sj@QCCNkOom<`1{Yl=EsQ1e6Wt! zqw7{{^{{($dF@dD-dx^n3PAs*{rftDreAuHdVSpeZJhtc75BAJ8kKN;0y2^1OHj0r)EC$mzIhjYMx51jhzuV;0i8_LT#-1qnC*xtCJjU(&4Gn~d z0&Al-VG}%GuGrhw=!ZQCT&ov|Z-pD=quS!kPSuVQ>INZR{E;~Bp7-g(9Mxby)2a0V z7j%+xzNYfN@t}>oM?bD2btbo8rMO=|*!AvwAsI}kY2RCo^|P2)u+`q|4nTEXeiU~= z^;WPoJEM9PcS4!!VS%+KwFp+5dCpW$c{4UeRo|I)Qp9oQo|fI1I^W0xwz0Zn3FB-fU_U8!BL|Mjx?1;IS0o z^=aVKNnF0LhaIb?%ilwfx800S#+~NfUiNIkOz!{~tLiRWFeb`ehiE;cm|gbX$p^&S z#yfe33Oa-b@%$xA;bvo`78k1_uX-n&N=)q?M+R(ID4j(CJ4@OF?{ZEbuhit<)&&STGg(zmZoT|jK;z7X zOl?ma(L!$jdUO++w3@qVg(vYVI7+(&xvcDayjm@E8Bydmi{&v6PY#UO^}xxu&qV2@ z5O}*J0(Qn~ljHYca!avnE`)4{lE{e1N>N`-YwZmhpu#~>I-^|HHa_Zt*j!PwdndD- z%uc-^P~dJF27@M*qa;?c}fXwfR+dKn)|NcdMtTX291&#htVQ6}Qe z7IRn8%MnbB-RgB^biuhcvu73d$y%#5a$L;z$?lo$PE$o^VQS)ITg|6kMw=j|#n8b%%5^)T1ShC9LBOpDJpbimrL&$_4H&d?e4o0*c&YWuQSsoo28IIU#+_dapms{GwvtPT(QsY(GgdlFIx|Bop}0N^YL zyw&Q;x$wwwRrAFaxYYwEfj}P@ok&AxqKtQ(pDL0fEIKy5ey!mZ6tAY zMaJ&g_agl;#Z|2u@$bX|9#2UxE&mGF9Y7G2r=kJDp?`NCGKI6_ ztNgE5Ibs3{nioR3_rBEcef!s2hv?T&Eb|5Z6%OStlFAQjt{$W>rJSJd|F_zz>RHf- z^Lr&VTP$xd-O;rKJfZ9O}v#Fm2V1y%vbXB$+(#$emc@v$jTxp#jGkn!%Tn=8?}GzBTp!8?O%m{>oW)q zgk>$O&?HP@rac`W7^}z;Zylb*UK-Qo0zuwDsf`Xj?7kGwK!lWj@{L&2()i|CH8?i{3$jQh||ewVAi>W4b;<-OYUXlfs z=r@&u#~|sEyoen;JJ`1S_d~-;C?;Z)X$x8qOU|5ap~5aj^fj|&q@F7XP7@(Hufu{a zvUwvr*szKgfvoEQWcoky^Hfy#d(Qt%2y>hI4&eAS8;B%t7c$*&O%QK#yZu6ZQA@C$ z;#Z7CcH>74s1Jw3!qPAg@6~tZo~pHMy_jaffz64`T_L>T*O^32m7~Wo)@Fq>Doncl z=t?q5WSPZahPJbM86I>9?N)Sz%MqQ*GN(XZAMMtMx^_lJhIMztv?S?D{Hv6mDy(Ip zrNOunc;jot>C74b%7lMEOs$;_?>MVJvXut^gIj5D#D_u$tZ}p!J<>9SCF|UPLZrZ9((n|x#pgmdcIC!Hw1cONl{q;Zm%|h!s?K##lf5L(o zHSr9ZZ&d5%PCNi_H9!3NQg7$m?4Bb}E6@6)`CkDme0_#WXIP&Hg|DWKM_KoZrkpTO z33iQBocIdYzOd3PdM0WXt1ji5yk>5WBj>B(z)}e&+VH-XN{Eb8qhz)&ziyMuh02Is z1gEO1{kZOugCiEZJWUP@uFpQrk$nir{E@5&*%L=2opFU;AB!l?%wrCH74KIA(jXGz zdvJM|eORr{NWBBIYu1{4!4#&Z-cKs8;>dSEg?3BfFgmzZv(&%muR zFapx5?i)yIN&p3#j?`M_C(83T*_t7>Wt-_$;jF2bz^D=f;fW8qb_&*WHb~q>bK6bZ zX2+A9$^46`;=W(PE;Qsce!eg3hb9#)#T2j7o9?9VO){%5yovhj#$^n0F=NB>Y_UU%zc@>CaPUOR&$RHnro_$i&yM9C>EqBSH%y`gIEvn z1WCndwz?v0>AQE`nI4PLt20-^VL-lsJmX{|`Nzn}>y zI9BsD|Hu-2w5EZr%vvKX?qs^dke>~uJLJscDOYKbYf{F}Xy*-bx+E+RGO4!KTg_{u zy;iH}&Hv!iT zIK7Op0<1pTiat41BLanwf@#tVC-}wDfOFLbIVay?wZl#A0n^I!#~(^Q-{43;K75b+)GU1(a1QF>1G}h6D}uOAa5-FNs=&>W@7_I#_-7 z6M<8i_W2!-H}O#CuxAbdM()kaQu5nZ=@A)MGFt&Y=SSh!mgopk#s8rJMZ>}4MWFDH z?VwZ10u9b?cCf@bUHQlgpBF#ZaEICeUqyM*D+EVKL@d|f{SCc@P{f5sUPW+8T_l&L z)(fvKZ=^Sl#w%J}mg0s!!)_z{X|X_5{4OPv{|3qem3Z|Bt??InkR(5@~}qCE`}Jb%lwOHQyU|tYu#4 zr4Z2;c}feBWy#W{#Tm974+-2~e6o%+A_(IiHBOPNLlZ8Ed2uxwL6mwKN4k9nXd~{A z@CzRp2xGnn+9mHz!6G5Rj?uliX4tH(3ZY1uy3=D3dwi&mU|(d3AA1nFjlpP&MD zm-a!C3jd83dl(<`1iOIE)hzzN9YDQ6>0{1e?tt*cwfBmq*N?^kZueU6PTQ|67bvZ0F1ffcotDSv)c*0Tf*5WZPzdTyYAy`?AhXYEYFq%T{`=`#RrMtyJL3%^VU1SUeYcMUzCgH%R)0$HWK$z4KM1L zZI*7pDPpqUBOUdd^&E^wl=m`x(OMJS6>>OdO!1RwErD;5+^*-oHjiu2rQ@4mx&S>h zsNoq-LMhB(KI-6wb_eo{QVJq`Q3JY7}2_ObH2V**bP>&fiu2AI^N*aCik ze@E-l$J6?w+2ML;dXrmuxDfHsd4$p�k~l*n>iZO&+r&X26;y5n29{?Ax9w&~h{{ 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 literal 0 HcmV?d00001 diff --git a/documentation/high-avail/design/images/topology.002.jpeg b/documentation/high-avail/design/images/topology.002.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..ef78f063e98bd87e691598f077d00bdef31de924 GIT binary patch literal 21907 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 S_HQ?fKe^lg)0XMi%zptuE}_T( literal 0 HcmV?d00001 diff --git a/documentation/high-avail/design/images/unplanned_switchover.008.png b/documentation/high-avail/design/images/unplanned_switchover.008.png new file mode 100644 index 0000000000000000000000000000000000000000..961687676a57cadba944d8b4570aa2c08c284b82 GIT binary patch literal 29221 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 YRrp(H*LlD4o<|LZlZWFmd;f3#1I9L2A^-pY literal 0 HcmV?d00001 From b582115b4cee6cbb271275fa59a4db80da32eebd Mon Sep 17 00:00:00 2001 From: Mukesh Moopath Velayudhan Date: Thu, 1 Sep 2022 10:11:24 -0700 Subject: [PATCH 3/7] SAI apigen support for tables with no action parameters and a single action (#207) --- dash-pipeline/SAI/templates/saiapi.h.j2 | 4 ++-- dash-pipeline/bmv2/dash_pipeline.p4 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dash-pipeline/SAI/templates/saiapi.h.j2 b/dash-pipeline/SAI/templates/saiapi.h.j2 index 6506f68ae..c918cea7d 100644 --- a/dash-pipeline/SAI/templates/saiapi.h.j2 +++ b/dash-pipeline/SAI/templates/saiapi.h.j2 @@ -34,7 +34,7 @@ */ {% for table in sai_api.tables %} -{% if table.actions | length > 1 %} +{% if table.actions | length > 1 or ((table.actions | length == 1) and (((table.is_object == 'false') or (table['keys'] | length <= 1)) and ((table['actionParams'] | length == 0)))) %} /** * @brief Attribute data for #SAI_{{ table.name | upper }}_ATTR_ACTION */ @@ -113,7 +113,7 @@ typedef enum _sai_{{ table.name }}_attr_t SAI_{{ table.name | upper }}_ATTR_START, {% set ns = namespace(firstattr=false) %} -{% if table.actions | length > 1 %} +{% if table.actions | length > 1 or ((table.actions | length == 1) and (((table.is_object == 'false') or (table['keys'] | length <= 1)) and ((table['actionParams'] | length == 0)))) %} /** * @brief Action * diff --git a/dash-pipeline/bmv2/dash_pipeline.p4 b/dash-pipeline/bmv2/dash_pipeline.p4 index 2bb754182..6b21408a0 100644 --- a/dash-pipeline/bmv2/dash_pipeline.p4 +++ b/dash-pipeline/bmv2/dash_pipeline.p4 @@ -43,7 +43,7 @@ control dash_ingress(inout headers_t hdr, actions = { accept; - deny; + @defaultonly deny; } const default_action = deny; @@ -175,7 +175,7 @@ control dash_ingress(inout headers_t hdr, actions = { permit; - deny; + @defaultonly deny; } const default_action = deny; From 66671be26f56c431208241046ce96d22d022e666 Mon Sep 17 00:00:00 2001 From: KrisNey-MSFT Date: Thu, 1 Sep 2022 10:43:55 -0700 Subject: [PATCH 4/7] Update .wordlist.txt --- .wordlist.txt | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/.wordlist.txt b/.wordlist.txt index b1f41e5dc..82f618ac7 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -46,17 +46,22 @@ bm BMV bmv BMv +bootup +Bootup br breakpoint Bringup bruh buildimage +BulkSyncDone BW bw bz callout cd centos +Cfg +cfg checkboxes chris ci @@ -64,12 +69,16 @@ CLA cla CLI CloudStorm +CNIP codebase +compat +Compat conf CONFDB confgen config Containerlab +CP CreatedHalfOpenFlow CreatedOtherFlow CreatedTcpFlow @@ -98,6 +107,9 @@ DataCenter datagram Datagram datagrams +datapath +Datapath +dataplanes datastore DBs DDoS @@ -110,6 +122,7 @@ DEST dest dev DHCP +dir Disaggregated Disaggregation distro @@ -129,6 +142,7 @@ downcasting DPDK DPU dpu +DPUControlMsgs DPUs drawio drilldown @@ -149,6 +163,7 @@ DroppedRedirectPackets DroppedResourcesMemory DroppedResourcesPacket DroppedResourcesUnifiedFlow +DSC DSCP dst DuringPortTimer @@ -199,6 +214,7 @@ gRPC grpc guid GW +HB HD HLD hld @@ -207,6 +223,7 @@ hoc HOSTIF HSL https +hw HW ICMP idempotency @@ -255,6 +272,7 @@ kvm lang libsai linux +liveness LLDP lldp loadbalancer @@ -318,6 +336,7 @@ OpenConfig openconfig opensource OpenTrafficGenerator +oper OPER orch OrchAgent @@ -336,6 +355,7 @@ params PAs PCI PCIe +Pensando performant pingmesh PIR @@ -384,6 +404,7 @@ repos resimulation responder Resttapi +retransmission retransmit retransmitted reviewable @@ -420,6 +441,7 @@ sdn Sflow SHA sharding +SInce SKU SKUs SLB @@ -443,6 +465,8 @@ SRC src STATEDB stateful +statemachine +struct subclassed subdirectories subdirectory @@ -457,10 +481,15 @@ subtype supportability SUT svg +sw +SwitchoverDone +switchovers SWSS swss SynAck syncd +synched +synching TBD tbd TCP From e2c1101c3365007673b4541bc24fdd99c3df0cfb Mon Sep 17 00:00:00 2001 From: Chris Sommers <31145757+chrispsommers@users.noreply.github.com> Date: Wed, 7 Sep 2022 09:08:39 -0700 Subject: [PATCH 5/7] Doc dash as submodule (#203) * Document third-party workflows using DASH as a Git submodule. * Add URL to sample project. * Incorporate review feedback (typo; missing file). * Spellcheck fixes. * Spellcheck * Add .wordlist.txt to CI triggers. * Spellcheck wordlist. Co-authored-by: Chris Sommers --- .github/workflows/dash-md-spellcheck.yml | 2 + .wordlist.txt | 10 ++ dash-pipeline/Makefile.3rdpty | 66 ++++++++ dash-pipeline/README-dash-as-submodule.md | 146 ++++++++++++++++++ .../images/dash-submodule-git-hierarchy.svg | 4 + .../images/dash-submodule-workflow.svg | 4 + .../design/AMD-Pensando_HA_Proposal.md | 4 +- 7 files changed, 234 insertions(+), 2 deletions(-) create mode 100644 dash-pipeline/Makefile.3rdpty create mode 100644 dash-pipeline/README-dash-as-submodule.md create mode 100644 dash-pipeline/images/dash-submodule-git-hierarchy.svg create mode 100644 dash-pipeline/images/dash-submodule-workflow.svg diff --git a/.github/workflows/dash-md-spellcheck.yml b/.github/workflows/dash-md-spellcheck.yml index 5cc9bed4e..9b73265f8 100644 --- a/.github/workflows/dash-md-spellcheck.yml +++ b/.github/workflows/dash-md-spellcheck.yml @@ -3,9 +3,11 @@ on: pull_request: paths: - '**/*.md' + - '.wordlist.txt' push: paths: - '**/*.md' + - '.wordlist.txt' workflow_dispatch: jobs: diff --git a/.wordlist.txt b/.wordlist.txt index 82f618ac7..8ba0fc2b9 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -64,6 +64,7 @@ Cfg cfg checkboxes chris +chrispsommers ci CLA cla @@ -99,6 +100,7 @@ CurrentUdpFlow customizable Cx cyberithub +dashsubmodule DASHOrch dashorch DashOrch @@ -109,6 +111,8 @@ Datagram datagrams datapath Datapath +dataplane +Dataplane dataplanes datastore DBs @@ -136,6 +140,7 @@ Dockerfiles dockerfiles dockerhub Dockerhub +dockerized DoS DotNet downcasting @@ -236,6 +241,7 @@ InbfromLB INIT Init initializer +integrations integrators interoperable io @@ -281,8 +287,10 @@ loopback LPM lts Macsec +makefile Makefile Makefiles +makefiles MatchedHalfOpenFlow MatchedOtherFlow MatchedTcpFlow @@ -392,6 +400,7 @@ Pyunit qcow QoS Radv +rdpty reachability README READMEs @@ -548,6 +557,7 @@ unpair Unpair untracked upcasting +upstreaming vcpus veth VFP diff --git a/dash-pipeline/Makefile.3rdpty b/dash-pipeline/Makefile.3rdpty new file mode 100644 index 000000000..684f75572 --- /dev/null +++ b/dash-pipeline/Makefile.3rdpty @@ -0,0 +1,66 @@ +all: dash-p4 sai thirdparty-saithrift-server docker-saithrift-client + +clean: dash-p4-clean dash-sai-clean + +# Submodule location relative to this Makefile +DASHDIR ?=DASH + +DASH: dash-submodule + +.PHONY: dash-submodule +dash-submodule: + @echo "Initializing DASH submodule..." + git submodule update --init DASH + +# Build entire dash-pipeline codebase as sanity check +dash-pipeline-regression: DASH + $(MAKE) -C $(DASHDIR)/dash-pipeline clean + $(MAKE) -C $(DASHDIR)/dash-pipeline all + +dash-pipeline-clean: DASH + $(MAKE) -C $(DASHDIR)/dash-pipeline clean + +.PHONY: sai +sai: dash-sai-clean dash-sai-headers dash-sai-meta thirdparty-libsai + + +# Build behavioral model code, needed for SAI headers +dash-p4: + $(MAKE) -C $(DASHDIR)/dash-pipeline p4 + +dash-p4-clean: + $(MAKE) -C $(DASHDIR)/dash-pipeline p4-clean + +dash-sai-clean: + $(MAKE) -C $(DASHDIR)/dash-pipeline sai-clean + +# Autogenerate SAI headers +dash-sai-headers: + $(MAKE) -C $(DASHDIR)/dash-pipeline sai-headers + +# Autogenerate SAI meta, needed for saithrift client/server +dash-sai-meta: + $(MAKE) -C $(DASHDIR)/dash-pipeline sai-meta + +# Implementation-dependent libsai library +thirdparty-libsai: + @echo "Build third-pary libsai" + @echo " Put libsai.so under $(DASHDIR)/dash-pipeline/SAI/lib" + @echo " For use by saithrift-server build stage." + +thirdparty-saithrift-server: + @echo "Build third-party saithrift-server" + @echo " Expects libsai.so under $(DASHDIR)/dash-pipeline/SAI/lib" + # For reference: + # $(MAKE) -C $(DASHDIR)/dash-pipeline saithrift-server + +docker-saithrift-client: + @echo "Build third-pary saithrift-client" + @echo " Expects saithrift-server already built" + # Uncomment when saithrift server can be built + # $(MAKE) -C $(DASHDIR)/dash-pipeline docker-saithrift-client + +run-all-tests: + # Uncomment when saithrift client & server can be built + # Can add more custom tests in addition to DASH tests + # make -C $(DASHDIR)/dash-pipeline run-all-tests diff --git a/dash-pipeline/README-dash-as-submodule.md b/dash-pipeline/README-dash-as-submodule.md new file mode 100644 index 000000000..291906634 --- /dev/null +++ b/dash-pipeline/README-dash-as-submodule.md @@ -0,0 +1,146 @@ +**I want a [Quick-Start](#quick-start)!** + +**Table of Contents** + +- [Importing the DASH project into another project](#importing-the-dash-project-into-another-project) +- [Quick-Start](#quick-start) +- [How to use DASH as a Git Submodule](#how-to-use-dash-as-a-git-submodule) +- [Third-Party Workflow & DASH Workflow Reuse](#third-party-workflow--dash-workflow-reuse) + - [Recap: DASH bmv2 workflow](#recap-dash-bmv2-workflow) + - [Custom DASH Workflow](#custom-dash-workflow) + - [Reusable Build toolchain and artifacts](#reusable-build-toolchain-and-artifacts) + - [Required Custom Tools and Artifacts](#required-custom-tools-and-artifacts) + - [Custom Traffic Test Harness](#custom-traffic-test-harness) + - [Custom Tests](#custom-tests) + - [Third-Party CI Pipeline Automation (Git Actions)](#third-party-ci-pipeline-automation-git-actions) +# Importing the DASH project into another project + +The [Azure/DASH project](https://github.com/Azure/DASH) can be used as a resource within other projects, such as third-party, commercial or open-source DASH implementations. For example, a commercial DPU vendor can incorporate the DASH project into a private Git repository and utilize many of the components, providing consistency with the community implementation and definition, reusing test-cases, and avoiding duplication of efforts. + +# Quick-Start +This will show you how to import the [Azure/DASH project](https://github.com/Azure/DASH) project into your own Git project. + +A minimal sample project created using this recipe can be found here: https://github.com/chrispsommers/dashsubmodule + + +1. Start with a Git project, either a new or existing one of your choosing. You might want to make a scratch project just to try this out. +2. Copy the [Makefile.3rdpty](Makefile.3rdpty) into your project. You can put it into its own subdirectory and/or or rename it to suit. If you rename it, please interpret the subsequent instructions accordingly. +3. Choose a subdirectory in which to import the DASH project as a submodule. The sample [Makefile.3rdpty](Makefile.3rdpty) assumes a directory `./DASH` relative to the Makefile location. Edit the following line in the makefile to change this (or, set the environment variable `DASHDIR` before calling `make`): + ``` + DASHDIR ?=DASH + ``` +4. Import the DASH repository as a submodule using the following command. Modify the final parameter to match the relative directory in your project where you want the submodule to be cloned into: + ``` + git submodule add -b main --name DASH [git@github.com:Azure/DASH.git](https://github.com/Azure/DASH.git) DASH + ``` +5. Commit the changes now or later, see [DASH as a Git Submodule](#dash-as-a-git-submodule) +6. To verify the dash submodule was imported correctly and crucial steps function properly, execute the following. (If you rename the file to `Makefile` you can omit the `-f` option.) + ``` + make [-f Makefile.3rdpty] clean + make [-f Makefile.3rdpty] all + ``` + This will run selected build steps from DASH - those which don't depend upon third-party implementations. This includes compiling the P4 code, generating SAI headers, and also pulls in several Docker images. It's a great starting point. See the detailed descriptions elsewhere in this document for next steps. +7. *OPTIONAL:* To perform the entire dash-pipeline build process, execute the following: + ``` + make [-f Makefile.3rdpty] dash-pipeline-regression + ``` + This will run `make clean && make all` from the dash project. You don't *have* to do this since many of the artifacts are irrelevant for third-party adaptations. +8. *OPTIONAL:* You can also `cd /dash-pipeline` and run any of the steps outlined in the DASH bmv2 [workflows](README-dash-workflows.md), such as the following. This has the benefit of verifying the function of SW traffic generators etc. in your environment. You can use this to confirm functional tests against the reference implementation. + ``` + make run-switch # console 1 + make run-saithrift-server # console 2 + make run-all-tests # console 3 + +# How to use DASH as a Git Submodule +A third-party project can import the DASH project as a Git Submodule. See [about-git-submodules](README-dash-workflows.md#about-git-submodules) for background. In this example, DASH is imported at the top-level of the project using the following command. (See the documentation for `git submodule add` for other options.) + +``` +git submodule add -b main --name DASH [git@github.com:Azure/DASH.git](https://github.com/Azure/DASH.git) DASH +``` + +The effects of this command are: +- Clone the DASH repository in-place under the directory `DASH` (relative to the working directory of the command). +- Make an entry in the `.gitmodules` file (creating it if needed). For example: + ``` + [submodule "DASH"] + path = DASH + url = git@github.com:Azure/DASH.git + branch = main + ``` +- Store the imported repository git index/database under the parent project's `.git/modules` directory + +Importing the submodule also creates new items for `DASH` and `.gitmodules` which need to be committed. For example: +``` +chris@chris-z4:~/dashsubmodule$ git status +On branch main +Your branch is up to date with 'origin/main'. + +Changes to be committed: + (use "git restore --staged ..." to unstage) + new file: .gitmodules + new file: DASH + +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + (commit or discard the untracked or modified content in submodules) + modified: DASH (modified content, untracked content) +``` +To commit to your project: +``` +git add .gitmodules DASH +git commit +[git push] +``` +The resulting Git structure is as follows. DASH is imported as a submodule. Furthermore, the DASH project itself contains multiple levels of submodules. Via `git submodule update --init` instructions in `DASH/dash-pipeline/Makefile`) these repositories are cloned-in-place. + +![Git Hierarchy](images/dash-submodule-git-hierarchy.svg) + +# Third-Party Workflow & DASH Workflow Reuse +## Recap: DASH bmv2 workflow +The figure below shows the traditional bmv2-based workflow and is described in [README-dash-workflows](README-dash-workflows.md). + +![dash-p4-bmv2-thrift-workflow](https://github.com/Azure/DASH/raw/main/dash-pipeline/images/dash-p4-bmv2-thrift-workflow.svg +) +## Custom DASH Workflow +The reference project contains a `Makefile.3rdpty` to serve as a starting point. It has make targets which are just wrappers to invoke predefined Makefile targets in the DASH repository (e.g. using `make -C...`). It also has placeholder make targets where third-party customization is required. You can modify it arbitrarily. The intent was to reuse as much as possible from DASH. + +The drawing below shows where third-party customization will be needed, using "exciting" colors. + +![Custom Dash Workflow](images/dash-submodule-workflow.svg) + +The main objective is to re-use DASH artifacts, Makefiles, Dockerfiles, etc. where possible and replace (or augment) certain resources by third-party implementations. + +## Reusable Build toolchain and artifacts + +The following toolchains and output artifacts *should* be reusable as-is from the DASH project, with no (or very few) modifications: +* dash-pipeline P4 source code (for SAI header generation) +* P4 behavioral Model code compilation. The primary artifact of interest is just the P4Info file used to auto-generate the SAI headers for overlay services. Both the dockerized `dash-p4c-bmv2` container and the output artifacts should be reusable as-is from DASH. +* SAI experimental headers describing the interface to the dataplane, derived from P4Info. A code generator script [SAI/sai_api_gen.py](SAI/sai_api_gen.py) produces SAI headers derived from the P4 code, emitted into [SAI/SAI/experimental](SAI/SAI/experimental). It also generates a SAI-to-P4Runtime adaptor layer emitted into [SAI/lib](SAI/lib), for the bmv2 implementation.Third-party workflows can ignore the bmv2 adaptor layer or use it as inspiration. +* SAI metadata derived from the combination of standard SAI headers and the DASH headers. This is done by makefiles and scripts inside the SAI submodule and also uses the `dash-saithrift-bldr` container. +* `saithrift-client-bldr` base docker container, retrieved from a docker registry and built in a standard way. It contains base tools and packages. +* `dash-saithrift-client` docker container which includes all tools and artifacts needed to perform dataplane tests. The artifacts are generated based on the outputs of the saithrift-server build step (below) which might need third-party customization as described below. + >**Note:** The community dash-pipeline bmv2 build workflows assume that saithrift-server is built first, then saithrift-client is built next. In principle the saithrift client is target-agnostic and should not depend upon the saithrift server, but the build process for saithrift client and server are somewhat combined. To make a saithrift client for a third-party implementation *without* depending upon third-party saithrift server (which depends on third-party `libsai`), just use the dash-pipeline `make all` and use the resulting saithrift-client docker image. + +## Required Custom Tools and Artifacts +The following will undoubtedly be developed uniquely for each DASH implementation: +* DASH Dataplane - this is the primary focus of third-party DASH implementations and can be any mix of hardware and/or software. +* SAI adaptor layer to translate SAI API calls into the underlying dataplane configuration "SDK." You might want to adapt the code generator [SAI/sai_api_gen.py](SAI/sai_api_gen.py) to produce your own adaptor layer, or a skeleton thereof. +* saithrift-server [Makefile](SAI/saithrift/Makefile) and `dash-saithrift-bldr` container to run the saithrift code generator and link to third-party `libsai.so`. + + >**Note:** this might require significant third-party customizations to compile for certain archtectures. Default is Ubuntu 20.04 running on an x86 "device." Some implementations, e.g. the bmv2/P4Runtime implementation, use an RPC between the SAI adaptor layer and the underlying device "SDK," which means the saithrift server *could* run on one processor while the dataplane and device SDK run in a DPU with a different achitecture. For example, if a third-party dataplane has a native RPC such as gRPC, it could serve the same role as the P4Runtime API in the community bmv2 archtecture. If so, then the saithrift server could be compiled using the community workflow; presumably the custom `libsai` would translate SAI calls into native third-party gRPC calls, which means the saithrift server runs in a different process than the dataplane/native gRPC server. The [SAI/saithrift/Makefile](SAI/saithrift/Makefile) will probably need modifications to pass in different `SAIRPC_EXTRA_LIBS` at the minimum. + +## Custom Traffic Test Harness +The community DASH bmv2 test workflow includes SW traffic-generators connected to the SW dataplane via `veth` ports. Third-party integrations can continue to use this method, or others, including: +* Using physical NIC devices driven by SW traffic generators, cabled to SW dataplanes bound to other physical NIC ports (high-performance SW implementations relying on NIC devices) +* HW implementations of DASH dataplanes, e.g. "real DPUs" or physical emulations thereof, cabled to SW traffic generators which are bound to physical NIC ports. +* HW or SW DASH dataplane implementations cabled to HW-based traffic generators such as IXIA chassis etc. + +If test ports other than `veth0/1` and `veth2/3` are used, some modifications of setup scripts may be required: +* PTF tests using scapy for SW traffic generation can be parameterized to specify logical-to-physical port mappings. +* Pytests using ixia-c SW traffic generator are set up using docker-compose topology files under [DASH/test/third-party/traffic_gen/deployment](https://github.com/Azure/DASH/tree/main/test/third-party/traffic_gen/deployment) + +## Custom Tests +You can use the tests under DASH by calling the appropriate DASH make targets from the parent project. You can also have private tests in your own project repository which you invoke from your Makefiles. We recommend if you write new tests which are generally applicable that you consider upstreaming to the Community repository. +## Third-Party CI Pipeline Automation (Git Actions) +You should be able to adapt the CI automation files from the dash project as located under [.github/workflows](../.github/workflows). You will need to modify them to suit your project by changing the trigger conditions (e.g. file system paths) and steps. \ No newline at end of file diff --git a/dash-pipeline/images/dash-submodule-git-hierarchy.svg b/dash-pipeline/images/dash-submodule-git-hierarchy.svg new file mode 100644 index 000000000..8c3716e11 --- /dev/null +++ b/dash-pipeline/images/dash-submodule-git-hierarchy.svg @@ -0,0 +1,4 @@ + + + +
Git
Git
github.com/parent-project
github.com/parent-project
Git
Git
github.com/Azure/DASH
github.com/Azure/DASH
Git
Git
github.com/opencomputeproject/SAI
github.com/opencomputeproject/SAI
/DASH
/DASH
./dash-pipeline/SAI/SAI
./dash-pipeline/SAI/S...
Git Repos
Git Repos
Filesystem directories
Filesystem...
DASH  submodule directly imported into "parent-project
DASH  submodule directly i...
Git
Git
github.com/p4lang/ptf
github.com/p4lang/ptf
./test/ptf
./test/...
Git submodules used by DASH project itself, indirectly imported into "parent-project."
Git submodules used by DASH pr...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dash-pipeline/images/dash-submodule-workflow.svg b/dash-pipeline/images/dash-submodule-workflow.svg new file mode 100644 index 000000000..96de7a3f6 --- /dev/null +++ b/dash-pipeline/images/dash-submodule-workflow.svg @@ -0,0 +1,4 @@ + + + +
ixia-c
ixia-c
SAI
Implementation
?
SAI...
make  sai-thrift-client
make  sai-thrift-client
DASH P4
behavioral model 
(source of truth)
DASH P4...
Standard OCP SAI
header files subset
(underlay)
Standard OCP SAI...
DASH SAI
header files
(overrlay)
DASH SAI...
Saithrift code
generator
Saithrift code...
Thrift server
skeleton C++ code
Thrift server...
opencompute/SAI
opencompute/SAI
make P4
make P4
DASH/dash-pipeline
DASH/dash-pipeline
Generate SAI headers
Generate SAI headers
Git
Git
dash_pipeline.json
dash_pipeline.json
generate_dash_api.sh
generate_dash_api.sh
Containers provide the build & run environment:
Containers provide the b...
make docker-XXX
make docker-XXX
make sai
make sai
meta/make
meta/make
SAI implementation code
SAI implementation code
meta/gensairpc.pl
meta/gensairpc.pl
saithrift
server
saithrift...
libsai
libsai
p4c
p4c
make sai
make sai
make <target>
make <target>
LEGEND
LEGEND
make target or script in dash-pipeline
make target or script in dash-pipeline
make <target>
make <target>
make target or script in another repo (e.g. SAI/meta)
make target or script in another repo (e.g. SAI/meta)
SAI & meta headers
SAI & meta headers
Resource comes from external repo (resources assumed to be in this repo otherwise)
Resource comes from external repo (resources assumed to be in this repo otherwi...
Test scripts:
PTF, Pytest
built into container
Test scripts:...
Runtime socket communications (RPC commands or test traffic)
Runtime socket communications (RPC commands or test traffic)
Tgen Commands
Tgen Commands
Build step produces artifacts
Build step produces artifacts
make run-switch
make run-switch
make run-saithrift_XXXtests
make run-saithrift_XXXtests
(Git Submodule)
(Git Submodule)

make docker-XXX-publish
make docker-XXX-publish
local environment
local environ...
Various repos (Ubuntu, p4.org, etc.)
Various repos (Ubunt...
local environment
local environ...
dash-xxx
dash-xxx
dash-XXX
dash-XXX
P4 Info
P4 Info
Reg
Reg
make docker-XXX-pull (explicit)
make docker-XXX...
docker-run (implicit)
docker-run (imp...
Python thrift client  lib*
Python thrift client...
DASH Dataplane
DASH Dataplane
Git
Git
opencompute/SAI
opencompute/SAI
SAI PTF Framework
SAI PTF Framework
Scapy
Scapy
make deploy-ixia-c
make deploy-ixia-c
Build-time container
Build-time container
Run-time container
Run-time container
Test scripts:
PTF, Pytest
mounted from host dev env
Test scripts:...
make run-saithrift_dev-XXXtests
make run-saithrift_dev-XXXtests
/test-dev
/test-dev
/test
/test
/SAI
/SAI
Custom third-party implementation
Custom third-party i...
socket or in-process
socket or in...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/documentation/high-avail/design/AMD-Pensando_HA_Proposal.md b/documentation/high-avail/design/AMD-Pensando_HA_Proposal.md index adeb868aa..048b4be73 100644 --- a/documentation/high-avail/design/AMD-Pensando_HA_Proposal.md +++ b/documentation/high-avail/design/AMD-Pensando_HA_Proposal.md @@ -145,7 +145,7 @@ This state is reached when bulk sync is complete and the admin role of the node **Wait Primary** -In this state the node is waiting for the Datapath to signal completion of taking over as primary. The datapath indicates this by notifying the SONIC stack via an oper status update message. At this point the peer is notified to move to standy. +In this state the node is waiting for the Datapath to signal completion of taking over as primary. The datapath indicates this by notifying the SONIC stack via an oper status update message. At this point the peer is notified to move to standby. **Activate Secondary** @@ -715,7 +715,7 @@ All flows inserted on the secondary before switchover are after evaluation of pr ![](images/planned_switchover.009.jpeg) -Swithover can be a planned event for maintenance and other reasons. With planned switchover the goal is to have close to zero loss and to coordinate between the primary and secondary to achieve this goal. Both the DP-VIPs will switch roles to primary on this trigger. +Switchover can be a planned event for maintenance and other reasons. With planned switchover the goal is to have close to zero loss and to coordinate between the primary and secondary to achieve this goal. Both the DP-VIPs will switch roles to primary on this trigger. The controller initiates the planned switchover and notifies the secondary DPU to initiate switchover. Once switchover is complete the newly primary DPU relays a SwitchoverDone message to the old primary DPU. The old primary initiates a withdrawal of protocol routes so the network can drain traffic. During this time the old primary continues to forward traffic so any traffic in transit is forwarded without being dropped. During this network convergence timeout both the primary and secondary are forwarding traffic and flow sync messages may be exchanged in both directions. From 2cd5b446a5601ebd560f81c2014ea44be1037c45 Mon Sep 17 00:00:00 2001 From: Marian Pritsak Date: Wed, 7 Sep 2022 13:40:04 -0700 Subject: [PATCH 6/7] Split SAI API (#201) Make APIs compatible with SONiC bulk infra Signed-off-by: Marian Pritsak --- dash-pipeline/SAI/sai_api_gen.py | 8 ++++--- dash-pipeline/SAI/templates/utils.cpp.j2 | 22 ++++++------------- dash-pipeline/bmv2/dash_outbound.p4 | 4 ++-- dash-pipeline/bmv2/dash_pipeline.p4 | 12 +++++----- dash-pipeline/tests/libsai/Makefile | 3 +++ .../tests/libsai/vnet_out/vnet_out.cpp | 2 -- 6 files changed, 23 insertions(+), 28 deletions(-) diff --git a/dash-pipeline/SAI/sai_api_gen.py b/dash-pipeline/SAI/sai_api_gen.py index 3c77f27ca..062592963 100755 --- a/dash-pipeline/SAI/sai_api_gen.py +++ b/dash-pipeline/SAI/sai_api_gen.py @@ -271,7 +271,7 @@ def write_sai_impl_files(sai_api): with open('./lib/sai' + sai_api['app_name'].replace('_', '') + '.cpp', 'w') as o: o.write(sai_impl_str) -def write_sai_makefile(sai_api_name_list): +def write_sai_makefile(sai_api_name_list, sai_api_full_name_list): env = Environment(loader=FileSystemLoader('.')) makefile_tm = env.get_template('/templates/Makefile.j2') makefile_str = makefile_tm.render(api_names = sai_api_name_list) @@ -281,7 +281,7 @@ def write_sai_makefile(sai_api_name_list): env = Environment(loader=FileSystemLoader('.'), trim_blocks=True, lstrip_blocks=True) sai_impl_tm = env.get_template('/templates/utils.cpp.j2') - sai_impl_str = sai_impl_tm.render(tables = sai_api[TABLES_TAG], app_name = sai_api['app_name']) + sai_impl_str = sai_impl_tm.render(tables = sai_api[TABLES_TAG], app_name = sai_api['app_name'], api_names = sai_api_full_name_list) with open('./lib/utils.cpp', 'w') as o: o.write(sai_impl_str) @@ -393,6 +393,7 @@ def write_sai_files(sai_api): sai_apis, all_table_names = generate_sai_apis(json_program, args.ignore_tables.split(',')) sai_api_name_list = [] +sai_api_full_name_list = [] for sai_api in sai_apis: # Update object name reference for action params for table in sai_api[TABLES_TAG]: @@ -415,8 +416,9 @@ def write_sai_files(sai_api): write_sai_files(sai_api) write_sai_impl_files(sai_api) sai_api_name_list.append(sai_api['app_name'].replace('_', '')) + sai_api_full_name_list.append(sai_api['app_name']) -write_sai_makefile(sai_api_name_list) +write_sai_makefile(sai_api_name_list, sai_api_full_name_list) if args.print_sai_lib: print(json.dumps(sai_api, indent=2)) diff --git a/dash-pipeline/SAI/templates/utils.cpp.j2 b/dash-pipeline/SAI/templates/utils.cpp.j2 index debb29d96..683182933 100644 --- a/dash-pipeline/SAI/templates/utils.cpp.j2 +++ b/dash-pipeline/SAI/templates/utils.cpp.j2 @@ -244,13 +244,11 @@ sai_switch_api_t sai_switch_api_impl = { }; -/* TODO [cs] This should be auto-generated or part of per-API, auto-generated include file */ -extern sai_dash_api_t sai_dash_api_impl; -extern sai_dash_vnet_api_t sai_dash_vnet_api_impl; -extern sai_dash_acl_api_t sai_dash_acl_api_impl; +{% for api in api_names %} +extern sai_{{ api }}_api_t sai_{{ api }}_api_impl; +{% endfor %} -/* TODO [cs] This should be auto-generated */ sai_status_t sai_api_query( _In_ sai_api_t api, _Out_ void **api_method_table) { @@ -260,18 +258,12 @@ sai_status_t sai_api_query( *api_method_table = (void *)&sai_switch_api_impl; break; - case SAI_API_DASH: - *api_method_table = (void *)&sai_dash_api_impl; +{% for api in api_names %} + case SAI_API_{{ api | upper }}: + *api_method_table = (void *)&sai_{{ api }}_api_impl; break; - case SAI_API_DASH_ACL: - *api_method_table = (void *)&sai_dash_acl_api_impl; - break; - - case SAI_API_DASH_VNET: - *api_method_table = (void *)&sai_dash_vnet_api_impl; - break; - +{% endfor %} default: return SAI_STATUS_NOT_SUPPORTED; diff --git a/dash-pipeline/bmv2/dash_outbound.p4 b/dash-pipeline/bmv2/dash_outbound.p4 index 59e7c0292..8bec5a5f0 100644 --- a/dash-pipeline/bmv2/dash_outbound.p4 +++ b/dash-pipeline/bmv2/dash_outbound.p4 @@ -31,7 +31,7 @@ control outbound(inout headers_t hdr, direct_counter(CounterType.packets_and_bytes) routing_counter; - @name("outbound_routing|dash_vnet") + @name("outbound_routing|dash_outbound_routing") table routing { key = { meta.eni_id : exact @name("meta.eni_id:eni_id"); @@ -61,7 +61,7 @@ control outbound(inout headers_t hdr, direct_counter(CounterType.packets_and_bytes) ca_to_pa_counter; - @name("outbound_ca_to_pa|dash_vnet") + @name("outbound_ca_to_pa|dash_outbound_ca_to_pa") table ca_to_pa { key = { /* Flow for express route */ diff --git a/dash-pipeline/bmv2/dash_pipeline.p4 b/dash-pipeline/bmv2/dash_pipeline.p4 index 6b21408a0..f138c6c8b 100644 --- a/dash-pipeline/bmv2/dash_pipeline.p4 +++ b/dash-pipeline/bmv2/dash_pipeline.p4 @@ -35,7 +35,7 @@ control dash_ingress(inout headers_t hdr, action accept() { } - @name("vip|dash") + @name("vip|dash_vip") table vip { key = { hdr.ipv4.dst_addr : exact @name("hdr.ipv4.dst_addr:VIP"); @@ -53,7 +53,7 @@ control dash_ingress(inout headers_t hdr, meta.direction = direction_t.OUTBOUND; } - @name("direction_lookup|dash") + @name("direction_lookup|dash_direction_lookup") table direction_lookup { key = { hdr.vxlan.vni : exact @name("hdr.vxlan.vni:VNI"); @@ -132,7 +132,7 @@ control dash_ingress(inout headers_t hdr, } } - @name("eni|dash") + @name("eni|dash_eni") table eni { key = { meta.eni_id : exact @name("meta.eni_id:eni_id"); @@ -166,7 +166,7 @@ control dash_ingress(inout headers_t hdr, meta.vnet_id = src_vnet_id; } - @name("pa_validation|dash_vnet") + @name("pa_validation|dash_pa_validation") table pa_validation { key = { meta.vnet_id: exact @name("meta.vnet_id:vnet_id"); @@ -181,7 +181,7 @@ control dash_ingress(inout headers_t hdr, const default_action = deny; } - @name("inbound_routing|dash_vnet") + @name("inbound_routing|dash_inbound_routing") table inbound_routing { key = { meta.eni_id: exact @name("meta.eni_id:eni_id"); @@ -201,7 +201,7 @@ control dash_ingress(inout headers_t hdr, meta.eni_id = eni_id; } - @name("eni_ether_address_map|dash") + @name("eni_ether_address_map|dash_eni") table eni_ether_address_map { key = { meta.eni_addr : exact @name("meta.eni_addr:address"); diff --git a/dash-pipeline/tests/libsai/Makefile b/dash-pipeline/tests/libsai/Makefile index 38fe7ac12..b605d2273 100644 --- a/dash-pipeline/tests/libsai/Makefile +++ b/dash-pipeline/tests/libsai/Makefile @@ -1,4 +1,7 @@ # Call make in each subdirectory +.ONESHELL: +SHELL = /bin/bash +.SHELLFLAGS += -e SUBDIRS := $(wildcard */.) diff --git a/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp b/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp index cbb2b9775..f450ab199 100644 --- a/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp +++ b/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp @@ -49,8 +49,6 @@ extern sai_status_t sai_create_dash_acl_group( extern sai_status_t sai_remove_dash_acl_group( _In_ sai_object_id_t eni_id); -extern sai_dash_api_t sai_dash_api_impl; - int main(int argc, char **argv) { sai_object_id_t switch_id = SAI_NULL_OBJECT_ID; From 6d1c50a95318dac31d2054f66a4a7e6e2ce0e0d9 Mon Sep 17 00:00:00 2001 From: Marian Pritsak Date: Wed, 7 Sep 2022 16:38:42 -0700 Subject: [PATCH 7/7] Add APP_DB to SAI mapping (#102) * Add APP_DB to SAI mapping --- .../general/design/dash-sonic-hld.md | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/documentation/general/design/dash-sonic-hld.md b/documentation/general/design/dash-sonic-hld.md index ff5d6c967..35337a4d5 100644 --- a/documentation/general/design/dash-sonic-hld.md +++ b/documentation/general/design/dash-sonic-hld.md @@ -36,6 +36,8 @@ | 0.5 | 06/13/2022 | Chris Sommers | Schema Relationships | | 0.6 | 08/05/2022 | Mukesh M Velayudhan | Outbound VNI derivation in pipeline | | 0.7 | 08/09/2022 | Prince Sunny | Add Inbound Routing rules | +| 0.6 | 04/20/2022 | Marian Pritsak | APP_DB to SAI mapping | + # About this Manual This document provides more detailed design of DASH APIs, DASH orchestration agent, Config and APP DB Schemas and other SONiC buildimage changes required to bring up SONiC image on an appliance card. General DASH HLD can be found at [dash_hld](./dash-high-level-design.md). @@ -372,6 +374,85 @@ metering_bucket = bucket_id ; metering and counter use_dst_vni = bool ; if true, use the destination VNET VNI for encap. If false or not specified, use source VNET's VNI ``` +### 3.2.9 DASH orchagent (Overlay) + +| APP_DB Table | Key | Field | SAI Attributes/*objects* | Comment | +|-----------------------|---------------|------------------|---------------------------------------------------|-------------------------------------------------| +| DASH_APPLIANCE | | | | | +| | appliance_id | | | | +| | | sip | sai_vip_entry_t.vip | | +| | | vm_vni | sai_direction_lookup_entry_t.VNI | | +| DASH_VNET | | | *SAI_OBJECT_TYPE_VNET* | | +| | vnet_name | | | | +| | | vxlan_tunnel | | VxLAN tunnel won't be used | +| | | vni | SAI_VNET_ATTR_VNI | | +| | | guid | | Not relevant | +| | | address_spaces | | | +| | | peer_list | | | +| DASH_QOS | | | | | +| | qos_name | | | | +| | | qos_id | | | +| | | bw | SAI_ENI_ATTR_PPS | | +| | | cps | SAI_ENI_ATTR_CPS | | +| | | flows | SAI_ENI_ATTR_FLOWS | | +| DASH_ENI | | | *SAI_OBJECT_TYPE_ENI* | | +| | eni | | | | +| | | eni_id* | SAI_ENI_ETHER_ADDRESS_MAP_ENTRY_ATTR_ENI_ID | | +| | | mac_address* | sai_eni_ether_address_map_entry_t.address | | +| | | eni_id** | sai_outbound_eni_to_vni_entry_t.ENI | | +| | | qos | | | +| | | vnet** | SAI_ENI_ATTR_VNET_ID | VNET object ID | +| DASH_ACL_V4_IN | | | | Same for V6 | +| | eni | | | | +| | | stage | SAI_ENI_ATTR_INBOUND_V4_stage_DASH_ACL_GROUP_ID | STAGE1..STAGE5 | +| | | acl_group_id | SAI_ENI_ATTR_INBOUND_V4_stage_DASH_ACL_GROUP_ID | | +| DASH_ACL_GROUP | | | *SAI_OBJECT_TYPE_DASH_ACL_GROUP* | | +| | group_id | | | | +| | | ip_version | SAI_DASH_ACL_GROUP_ATTR_IP_ADDR_FAMILY | | +| DASH_ACL_RULE | | | *SAI_OBJECT_TYPE_DASH_ACL_RULE* | | +| | group_id | | SAI_DASH_ACL_RULE_ATTR_GROUP_ID | | +| | rule_num | | | | +| | | priority | SAI_DASH_ACL_RULE_ATTR_PRIORITY | | +| | | action | SAI_DASH_ACL_RULE_ATTR_ACTION | | +| | | terminating | SAI_DASH_ACL_RULE_ATTR_ACTION | AND_CONTINUE if not terminating | +| | | protocol | SAI_DASH_ACL_RULE_ATTR_PROTOCOL | | +| | | src_addr | SAI_DASH_ACL_RULE_ATTR_SIP | | +| | | dst_addr | SAI_DASH_ACL_RULE_ATTR_DIP | | +| | | dst_port | SAI_DASH_ACL_RULE_ATTR_DST_PORT | | +| | | src_port | SAI_DASH_ACL_RULE_ATTR_SRC_PORT | | +| DASH_ROUTE_TABLE | | | | | +| | eni | | sai_outbound_routing_entry_t.ENI | | +| | prefix | | sai_outbound_routing_entry_t.destination | | +| | | action_type | | Need action type for future cases | +| | | vnet | SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DEST_VNET_VNI | VNI value taken from DASH_VNET table | +| | | appliance | | Not supported yet | +| | | overlay_ip | SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_IP | | +| | | underlay_ip | | Not supported yet | +| | | overlay_sip | | Not supported yet | +| | | underlay_dip | | Not supported yet | +| | | customer_addr | | Not supported yet | +| | | metering_bucket | SAI_OUTBOUND_ROUTING_ENTRY_ATTR_COUNTER_ID | | +| DASH_MAPPING_TABLE | | | | | +| | vnet | | sai_outbound_ca_to_pa_entry_t.dest_vni | VNET's VNI | +| | ip_address | | sai_outbound_ca_to_pa_entry_t.dip | | +| | | routing_type | | | +| | | underlay_ip | SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_UNDERLAY_DIP | | +| | | mac_address | SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_OVERLAY_DMAC | | +| | | metering_bucket | SAI_OUTBOUND_CA_TO_PA_ENTRY_ATTR_COUNTER_ID | | +| | vnet* | | sai_pa_validation_entry_t.vnet_id | VNET's VNI | +| | | underlay_ip* | sai_pa_validation_entry_t.sip | SAI_PA_VALIDATION_ENTRY_ATTR_ACTION is permit | +| DASH_ROUTE_RULE_TABLE | | | | | +| | eni | | sai_inbound_routing_entry_t.eni_id | | +| | vni | | sai_inbound_routing_entry_t.vni | | +| | prefix | | sai_inbound_routing_entry_t.prefix | | +| | | action_type | | | +| | | priority | sai_inbound_routing_entry_t.priority | | +| | | protocol | | | +| | | vnet | SAI_INBOUND_ROUTING_ENTRY_ATTR_SRC_VNET_ID | | +| | | pa_validation | SAI_INBOUND_ROUTING_ENTRY_ATTR_ACTION | use PA_VALIDATE if true | +| | | metering_bucket | | | + + ## 3.3 Module Interaction A high-level module interaction is captured in the following diagram.