From 178655cb941442e089ae65b4363a073f194023f3 Mon Sep 17 00:00:00 2001 From: Andrey Khomyakov Date: Fri, 31 Jul 2026 12:55:42 -0700 Subject: [PATCH] 4.14 release doc updates and other fixes --- bgp.rst | 237 ++++++++ .../add-server-cluster-selecting-servers.png | Bin 63231 -> 0 bytes images/add-server-cluster.png | Bin 59401 -> 0 bytes images/server-cluster-add-per-vnet-vpc.png | Bin 0 -> 80460 bytes images/server-cluster-add-single-vpc.png | Bin 0 -> 73537 bytes index.rst | 9 +- installation/controller-k3s-air-gap-ha.rst | 4 - ipam.rst | 33 ++ monitoring-observability/healthchecks.rst | 58 +- monitoring-observability/looking-glass.rst | 70 +++ .../visibility.rst | 14 +- nat.rst | 71 +++ netris-architecture.rst | 4 +- netris-softgate-HS.rst | 48 +- netris-ufm-integration.rst | 106 ++-- network-policies.rst | 553 ------------------ release-notes/4.14.0.rst | 71 +++ release-notes/index.rst | 1 + server-cluster.rst | 27 +- static-routing.rst | 52 ++ supported-platform-matrix.rst | 8 + switch-ports.rst | 2 +- tables/bgp-advanced.csv | 6 +- tables/bgp-basic.csv | 13 +- tables/softgate-hs-perf-amd-1000vpc.csv | 6 + tables/softgate-hs-perf-amd-100vpc.csv | 6 + tables/softgate-hs-perf-amd-1vpc.csv | 6 + tables/softgate-hs-perf-amd.csv | 18 - tables/softgate-hs-perf-intel-1000vpc.csv | 6 + tables/softgate-hs-perf-intel-100vpc.csv | 6 + tables/softgate-hs-perf-intel-1vpc.csv | 6 + tables/softgate-hs-perf-intel.csv | 18 - upgrading-netris.rst | 251 -------- vnet.rst | 2 +- vpc-gateways-with-managed-fabric.rst | 4 +- vpc-peering.rst | 31 + vpc.rst | 13 +- 37 files changed, 798 insertions(+), 962 deletions(-) create mode 100644 bgp.rst delete mode 100644 images/add-server-cluster-selecting-servers.png delete mode 100644 images/add-server-cluster.png create mode 100644 images/server-cluster-add-per-vnet-vpc.png create mode 100644 images/server-cluster-add-single-vpc.png create mode 100644 monitoring-observability/looking-glass.rst rename visibility.rst => monitoring-observability/visibility.rst (91%) create mode 100644 nat.rst delete mode 100644 network-policies.rst create mode 100644 release-notes/4.14.0.rst create mode 100644 static-routing.rst create mode 100644 tables/softgate-hs-perf-amd-1000vpc.csv create mode 100644 tables/softgate-hs-perf-amd-100vpc.csv create mode 100644 tables/softgate-hs-perf-amd-1vpc.csv delete mode 100644 tables/softgate-hs-perf-amd.csv create mode 100644 tables/softgate-hs-perf-intel-1000vpc.csv create mode 100644 tables/softgate-hs-perf-intel-100vpc.csv create mode 100644 tables/softgate-hs-perf-intel-1vpc.csv delete mode 100644 tables/softgate-hs-perf-intel.csv delete mode 100644 upgrading-netris.rst create mode 100644 vpc-peering.rst diff --git a/bgp.rst b/bgp.rst new file mode 100644 index 00000000..8b45192c --- /dev/null +++ b/bgp.rst @@ -0,0 +1,237 @@ +.. meta:: + :description: Netris BGP + +.. _bgp_def: + +====================== +BGP +====================== + +.. contents:: Table of Contents + :local: + :depth: 4 + +Basic BGP +--------- + +BGP neighbors can be declared in the Network → E-BGP section. Netris software will automatically generate and program the network configuration to meet the requirements. + +A BGP session with an external to the Netris-managed fabric neighbor is defined by two independent choices: + +- **BGP Router** — the switch (or SoftGate) that hosts the local BGP speaker and where the Netris-managed side of the session terminates. +- **Local endpoint interface** — either a routed **switch port** or a **V-Net gateway (SVI)**, selected by setting either *Switch port* or *Connect via V-Net* (under Advanced). + +The peer-facing port can be any port on the Netris-managed fabric; it does not have to sit on the switch selected as the BGP Router. When the port and the BGP Router are on different switches, Netris connects the two automatically — it creates a dedicated SVI on the BGP Router switch and provisions a hidden (meaning not visible in the GUI under the V-Net menu) "virtual wire" V-Net to the switch where the peer is physically connected. + +The resulting combinations: + +.. list-table:: + :header-rows: 1 + :widths: 25 35 40 + + * - Local endpoint + - Peer port on the BGP Router switch + - Peer port on a different switch + * - **Routed switch port** + - The session and the port are on the same switch. + - Netris builds a virtual wire from the peer's port to the SVI created on the BGP Router switch. + * - **V-Net gateway (SVI)** + - The V-Net's SVI on that switch is the local endpoint. + - The V-Net is extended to the BGP Router switch, and the SVI created there terminates the session. + +**Adding BGP Peers** + +#. Navigate to Network → E-BGP in the web UI. +#. Click the Add button. +#. Fill in the fields as described in the table below. +#. Click the Add button. + +.. csv-table:: BGP Peer Fields + :file: tables/bgp-basic.csv + :widths: 25, 75 + :header-rows: 0 + +Example: Declare a basic BGP neighbor. + +.. image:: images/create_bgp.png + :align: center + +If everything is correct, State, port and BGP will get green status. + +.. image:: images/bgp_status.png + :align: center + +Advanced BGP +------------ + +BGP neighbor declaration can optionally include advanced BGP attributes and BGP route-maps for fine-tuning of BGP policies. + +Click Advanced to expand the BGP neighbor add/edit window. + +.. csv-table:: BGP Peer Fields - Advanced + :file: tables/bgp-advanced.csv + :widths: 25, 75 + :header-rows: 0 + +**Effect of Remove Private AS on prefixes advertised by SoftGate nodes to their upstream BGP neighbors:** + +- Typically, all SoftGate nodes in a deployment share the same AS number. +- All SoftGate nodes advertise all prefixes (locally originated as well as originated on other SoftGate nodes and subsequently learned through the fabric) to their upstreams. +- When the **Remove Private AS** is switched on (check box is set), all inter-SoftGate path information is stripped from the AS PATH before the prefix is advertised upstream, thus each prefix will appear to the upstream BGP neighbor as equidistant (ECMP). As a result some traffic might be forwarded to SoftGates that would then have to forward it again to the "correct" SoftGate, thus resulting in suboptimal routing behavior and increased load. +- With the **Remove Private AS** toggle set to off (check box is cleared), the AS PATH of each prefix will include the full list of ASN, including the list of ASNs of switches connecting SoftGates to each other. Because of this, on any given SoftGate locally originated prefixes will always have the AS PATH shorter than prefixes learned through the switch fabric from other SoftGates. + +BGP Objects +----------- +| Under Network → E-BGP objects, you can define various BGP objects referenced from a route-map to declare a dynamic BGP policy. +| Supported objects include: + +* IPv4 Prefix +* IPv6 Prefix +* AS-PATH +* Community +* Extended Community +* Large Community + +IPv4 Prefix +^^^^^^^^^^^ +| The rules are defined one per line. +| Each line in IPv4 prefix list field consists of three parts: + +* Action - Possible values are: permit or deny (mandatory). +* IP Prefix - Any valid IPv4 prefix (mandatory). +* Length - Possible values are: le , ge or ge le . + +Example: Creating an IPv4 Prefix list. + +.. image:: images/ipv4_prefix.png + :align: center + +IPv6 Prefix +^^^^^^^^^^^ +| Rules defined one per line. +| Each line in IPv6 prefix list field consists of three parts: + +* Action - Possible values are: permit or deny (mandatory). +* IP Prefix - Any valid IPv6 prefix (mandatory). +* Keyword - Possible values are: le , ge or ge le . + +Example: Creating an IPv6 Prefix list. + +.. image:: images/ipv6_prefix.png + :align: center + +Community +^^^^^^^^^ +| Community field has two parts: + +* **Action** - Possible values: permit or deny (mandatory). +* **Community string** - Allowed format: `` LINE``. LINE is AA:NN Community number in AA:NN format (where AA and NN are (0-65535)) or ``local-AS``, ``no-advertise``, ``no-export``, ``internet`` or ``additive``. + +Example: Creating community. + +.. image:: images/community.png + :align: center + +BGP route-maps +-------------- +| Under the Network → E-BGP Route-maps section, you can define route-map policies, which can be associated with the BGP neighbors inbound or outbound. + +| Description of route-map fields: + +* **Sequence Number** - Automatically assigned a sequence number. Drag and move sequences to organize the order. +* **Description** - Free description. +* **Policy** - Permit or deny the routes which match below all match clauses within the current sequence. +* **Match** - Rules for route matching. + + * **Type** - Type of the object to match: AS-Path, Community, Extended Community, Large Community, IPv4 prefix-list, IPv4 next-hop, Route Source, IPv6 prefix-list, IPv6 next-hop, local-preference, MED, Origin, Route Tag. + * **Object** - Select an object from the list. + +* **Action** - Action when all match clauses are met. + + * **Action type** - Define whether to manipulate a particular BGP attribute or go to another sequence. + * **Attribute** - The attribute to be manipulated. + * **Value** - New attribute value. + +Example: route-map + +.. image:: images/route-map.png + :align: center + :class: with-shadow + +eBGP Importing Non-Default Routes into a VPC +----------------------------------------------- + +In multi-uplink deployments, SoftGate Hyperscale (SG-HS) nodes can be eBGP peered with different upstream networks. + +By default, Netris SoftGates only redistribute the default route into tenant VPCs, regardless of what other prefixes they receive from upstream peers. This ensures a consistent routing table across all SoftGates, but can lead to suboptimal routing, where traffic from the VPC is always routed to the SoftGate receiving the default, even if another SoftGate has a better path via specific prefixes. + +Starting with version 4.5.4, Netris introduces a mechanism to selectively import non-default routes into VPCs by tagging them with a special **BGP community: 0:7**. Routes marked with this community will be redistributed into tenant VPCs alongside the default. + +.. warning:: + Importing additional prefixes into VPCs increases the size of the routing table on SoftGates and switches. Ensure that your hardware can handle the increased load, especially if you plan to import many prefixes. + +How to Import Non-Default Prefixes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +You have two options for tagging the desired prefixes with the required 0:7 community. + +**Option 1**: Tag Inbound in Netris (on SoftGate HS) + +If you manage the eBGP peer configuration using the Netris Controller, you can mark specific routes for redistribution into tenant VPCs by tagging them with the special BGP community 0:7. + +1. Create a Prefix List under Network → E-BGP Objects + +.. tip:: + Do not include 0.0.0.0/0 — it is automatically imported + +.. image:: images/prefix-list-imported-prefixes.png + :align: center + :alt: prefix list + :class: with-shadow + +.. raw:: html + +
+ +2. Create a Route Map under Network → E-BGP Route-Maps + +Add a new route-map that + + - Matches the prefix list created in Step 1 + - Sets the BGP community to ``0:7`` + +.. image:: images/ebgp-route-map-set-07.png + :align: center + :alt: route-map + :class: with-shadow + +.. raw:: html + +
+ +3. Attach the Route Map to the eBGP Peer under Network → E-BGP + +Edit the relevant eBGP neighbor and under Advanced Settings, set the inbound route-map to the one created in Step 2 + +.. image:: images/ebgp-advanced-inbound-route-map.png + :align: center + :alt: inbound route-map + :class: with-shadow + +.. raw:: html + +
+ +Once applied, any matching prefixes received from this eBGP peer will be tagged with community 0:7, making them eligible for redistribution into tenant VPCs by the SoftGate. + +.. tip:: + You can verify imported routes in the :doc:`Looking Glass ` (Network → Looking Glass) section of the Controller UI. + +.. warning:: + When configuring an inbound route-map on an eBGP peer, an outbound route-map must also be set. If no outbound route-map is needed, create a dummy one that permits all routes without modification and attach it to the outbound direction. + +**Option 2**: Tag Outbound from External BGP Peer + +Alternatively, the external BGP speaker can set the 0:7 community on outbound updates before advertising routes to the SoftGate. This option does not require any configuration in Netris, as long as the incoming route already carries the community. + +This is useful when the upstream router is under the customer's control and managing policy from that side is preferred. diff --git a/images/add-server-cluster-selecting-servers.png b/images/add-server-cluster-selecting-servers.png deleted file mode 100644 index a1e07cef9f14e1f22c61ce9b8824f9f636ed76ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63231 zcmdqJWmJ`27dA?lA_xM~8ziKaZZ=4_bR*p%-6AxNjBba#t%=cY>1_oV1Tv!1H2B82323`;a3HXNm zu}mfm3|f)dix=_|FJ6G;?QD$AERA4b#Dk(@kd-34a68s6hF=KX)0SM9373VTAuETG zEK0+Q01E{@#}xkdmcFoAL;j(lkzfotS|MV11t?8T?GcXrOODR8)cjz?mnHQWoNs15 z*BYGX_)P4)*H-(zcY5QxYG8fx+p*9T^;}_w5%AOGb>++*r0H=u(4K*DFnzF!^-D$q zek?42eI^ob>Kb<82g{o*o);YL&flmiF4&Gt!hl;)sBMQQ%}`QA+X*Y>Kf%J};s$LM zbz#cd<9(GR&j7!n97$yD+0Ek8dpmR*m$)a7^fex4L4rQ|DJo0^Dps~}X(T3b1nE~5 zxCgpEwzyxd&CK#RQK~?ee#o-UQ51V?f=f4c|KXc z_l2u}S&T7iJQ@r4SxReoyU3FKhE6q{?!cL&XU1B1^mR023PUw)*9OS zVf@C>@D!&O)9zU!ido~cR>j)rXKZTm12RWZ?ISF$8TKsUJzN4DYHn}4=x-LdknX>_ zx9vlk3QO%XGkD)xrTquhx zRA?FKaFK&44u0XMxoY6S2BSg$aV_l`DN8sExC>#ygGQ6SJ2B*Qw!kwVl;!Ywc*j)q zAHJx?Fzn5+)i4+f=$C?+D9F!WA-;kq5r-!)Mq2ji1Cc)ROM1oh6dq^c*%!o)7Ky?8 z{k~EQwAHBA{yNWKC|*6TNBF+L7wZQ?LHpe*B83iY{9}3Y|jjs>BJ`|!`#MO&^CZYr)z}600{ARdhtWQ(o>k@GK z?o>roR8+2Af=c);Q<+4T((0RDwm8AKFba_f{2;;iPl6<-CD=09hvA1cnd2;lk3k&~ zES=L`j>|pE)XNy9kJP2qv*^W~(k*K&Be#hsRqYVCUU1dUpw(E`VAUwvRV}wKqaKJJ z+;@$>L^`uOD?7M4z(#w7Xb}JkU=1J-NJoRlv`=xK;ABbWc0Y)U zr1hjtQL0ed$kiIN%0KH_=H5uAWtywSHU3=lm#MA;LcK!S0e%6> z_bwR3aUFuCgWZA!rEq${Jz71+J*vU?aoZTDD!$kcsnWUUDdjy;fggWAem!0@UNCNB z*=sq$zQTTD*;UD3Nob{MsXHAv{TljUa<(daf~jQQeBSz|tz}4Xd2r#`rs=}tU6BUR^J&Ry%aD{zRa zemT1|>*Wwxy;WN_lQ)y%w(f4ro6DCxBD2x;!{CQ%vPv@f084V@eUo-K(FDBi9!Oqu z-n8Zr&)2%%i=eP%xd^$2f$E}$UG8~yfe*Sq^NdYiS-6pX`39jEJm*CxyC@*UH;A7Q zdC^(#JwmKx^o==Xnrv7eQfSTe%j^>by~8i(S$|#pdT(<(c@?+{@k%gLueG2{%oFAO{;ov=OXoN7+dmU0w7SShfNk_1PgF`+P zgeIx2HdyYKE^=N}UsgA+wD*)n>*{_kA$M#$i?X9rr;}?lSV~_CYxg!rEXh^FM(uqA zkNVvb$({6qvctbDkfqyk1=l`>x|Rx;I+UV@3MxymQgbNjV&H+)^x=kklBtH=m6`Hs zCe@0jxstg70Y3vjG#~sjoP1p^vw_w^Ic!iXmg!TzlTL&4QT0=>QqqG=COMlfc_D%f z#*&~@p8Z!@n#QiHfovZwWQ}MHQA=yb;|pdhk6kO}j^(xnw>cdc*X|c)7ZuIG zScy*zHoo*Wm}_5@X-qKZz~;!dyk>*YR&k!pMt@-_aMf^4IC$H5cvZ-+%dY!rzG=+J zqU~gT_iWzTrfjy-dl~{K+Y%y__ch|{fXH?lp@7`yTj7*n=T z!c+0ic{nO={=$N1lW1!*)SP7YB?csTODwF7xXyEC%SFmx~vnpi1_thIqNJ&c#sNa-93m6Mbyh<)JR}*(?4i3B5 zoV7qYoppOq{o}SEcD?C|%nYd)P`YVkMlsz+$iv|wPs)YviadT*Cg))uCLQ|*r=8lv zqcRRtj(8jH8OzPmUGBrYt0I$H;@Sjjt~v7>s6$ zKF^1qCl}w(DNndg#7HvuU9O%TE{-;5iN%T`hOLms@D6z>93^bngkT|eoe37T6lUwm zA-|n?!Q?G>b9HDt$8t~>vBo{HC2A?!A9DU-&Z}g*ZBJ^kC#U36;L$bbUib3Yh5+C7 zHbEE(sTYIW6;x(O^Qek#cYCfv4ndCBHRagLymZ0;Ja8(kJS-_Cjh`?7udZ^AHhqcGr5LAQWu7|fWy<1rSbzH7W#vb_|S%9G^h z$S~$pFevi~%?_I7q-euAnH+#>|X;6rqyaCB(7=$y6yI+t9*MMB9-y&dD z8FM2wd-DUFd(LsgRQ?IkbWdSy2=HK4jMOBIWn^GzfiemVY@ito0#Jeleh7dcz|oC( z3xf>&#sYqXQ{n!3icpXW|4$iS@b*PP#TOD1z;8tZJ0l}&ds7>SK)^g(Z$O4wh9cd3pY@-GIG!Zxma0R+jG0{k^l7uH&DL)nu#3r*DDSd zeB^2}@}L(sc19p}#%GMr$obJgAP}#ep)t3Du;|~_flqworVb9a+)PZ)&d!X^EQ~gG zCQQ${xVV^}F*7kUGXQTe*t=Rg=(#Xh+duiAkbmR|8`&G!nb|s+*;s>a_vyA}`bJ z(C?_?e|rAwTR_qLXuM4S8jT-~^z*_9I?Y2dUDdQZIY*wL(htU35J3F^*_5{pLz8WyPg(XA{3Ah4BW5( zeF4Kh{!=~7PAfQs0=sFPMVCK4?kr#8`GYi2_ys~|dABFz%@d*D`*P3#BbeuLg9FU^ zU%QFf>3Q4SJlo>C-<$LGU;+=)&U+&Qs{E~{T?!y{##x4w{5P3k(EL5j^6nE|SeQQu zouLMVo@ir-qWmTkv-1S#&B2u_fM$QI2|7Uqg#Q0wh_I6k;V!Em5@jSlrlx}S4-XGb z4{40g)?*)|V%)>__V%vYaw+{_(Dv<{@FX4%Wk)D+%-4W>QfCJ%8L!0O88{_-j~z}m zn1mr9Ac)5?XJ#4(VdeBo6!gb#g~wTho5Oqj!CZ`G;7X(dR<#3fIRUzC*`$cTYsZvw z)4AUCk>IH&-DLL-9M|I<>I|oXcx%YMA-?wOp@__bKIi#qP^`g=mX?;`mCd~6b1zTc z2N_)BeKJKn&d}(Wq+wAn0x`0=^F`4KI>TH16I&XCke(v%-k7R6e6phY)5J&gYR@`CFJd-ER*D#=mz!)FqYW-z zwf?$NLE-L*tdH4V4-Y70+KFro78XpyYZto&ZBI3*T0b5w zI8#z$mb=2RC5;jb8=G!%Q4b#~pt;7NR^I6lbng?7O`Y;rp%>7~dw8@IV|lZbA1{u( z{Mv#K4F_pyXe8Rb4+|bKCAYO9O5JG=w*+JheJ#>2PG{O3bd>lEEm*UVZZ_@EhN7`PonatUg8cs3?g@!(#g|!ghQen_GnLbITk95j3=#YzzSA)&U z8lNmLGaN*RH|pq5vOC^ZH^CDuXky#QPBCie!VC@yiPT`rl^P(Kl{u;EcDiyzI$P7t zito+(%{JW=Cg98CDfSI@>A>=o&ff zKCxQL>k7&ESe^H(SKc!Sq?_WZ+Hfgz*>!g5DSc4s;U|0|YZhxTseJfq2O<+9UK>r>83b;H+M2*g^7WLo1hK!54vOIcCnd9m*W5)y2bY81P@s zj5iOX0+Vx2;<&c3jzOU?P9ouY#!`$tUn?hVG*45NyV7Qj_kp&qzcR2@MP!qBE3u|# z7Bs+mZ;U|erIJgy7)ep&9H28eR4CUNI9BYN#wvNX#{BJu+v# z7z|Pmd1sFqvE|(sCrvEJBWA-BbdfPg%8#nc^9*F!3gU1cl34reBBDJC$IW6?%S6Lj zDJsx}GP31awu%<0<60H!n(#2x4UAZS(*0d4)Cj}IT4tC%&lz}RL7L13$J-&S_=@f_ zNV0@$&$((Z8FWf}xvait39NkBh;TN_e$a1ro@H=Bmzct*-dlkqa$F|fygpGo9F4u!kS3}$B+!Yp+(sX^~cC65) zbriJ?R&?u)%Q33KbeX!|0uESWF-T*tr6#=RR3BqHE)f>_H7smDeaVODhEZ1|$(TwN z()b}%j(DFGC+BU;!jVDu9ZBa%!0H=2@9=*g-!4Ka<%ncie!0x)j{8WGr2_3Y5vdsN z;1r80ZmYIn9I1*Ap$BWG$@JgV*c()5laU6A1k0_mrst}eno9AN3Z&cR+t5~4fOEud z>6?V>@=dZ`U7X8^^59T+6y27Kg>IfwA;n5hR3uK;btF=*N|8F92L080r!_yPWXtJ~ zpOp(OH?6X#hR!fnx<7qf$+}2JT3{vY)*jgj&X(DehBr@Ug?4XDxt(n5!M~o;erchJ z7z>JXO4uIh8GXvqHaA}J7J-XLYCp`BUx#I?mP=KcWfxkOG^g}3P5FABH3 z3ZP!=%so4GF*L>3A9IK+IGBf#3WV`S zRaNNEc9I@{oYP03=&5nI2r zzgaoD4!Mx!N#Dj(ABa}p* zSEnid+E+%K_m3DY;l-t7V7eZ@dmU$m7MjvSPph8xCMkaw?gSbf@oD){LPG|=^f?P; zbn*N=VV7|Vr${?NCBm{6rC+yt!YSJxS{65ERYy|QXfs|OloO+@kR_dDTvjmLpTgx{ zNZeLbz(wWEFf%$koOVzM-EDHN@%kj!;Ym}r+FP+!kWPIJ9aFT%cSxt8ppYE(h0lq0 z^yu6c05OnJ)IC2Xv_m96z-_kA5cSBdA#5NRgvi!>tY$?}An_!&-D?uKKCdRppMh>pQ3 ze!GOs--M&i%a&`Oms_N;Gfe3;k2asTe+bQnO}h1KzDWp7F}~5LztS%d|47bWXFfb2 zAZ2S?%*qkaL(Gsj?PS@pPw?mwh4ZXe0ui@^nvU0zBhS*p4xhVa$=U1gP0?Lcv6%t8 zn(Q{KYLsIZQQc8iR}2h(P4ft;UYD-#_vMH==`CtOo0r;k&eM(+{Sb1+GXYLcaoX6z z@Tsq@Po$wmk)_{vlPXu0ol>%AQJa2u$suSIu>=!!PP-M_aI+y;rtqp+b*YT$J;s?v zHSVd#8fMzm1-{FL73M=ijTd?m=(1+7)_gyobYGBqQQV%_+FEssv-W^XFxUC=xGW`Q zUL@vq6=~A=QGA}Xc9tRbw>ZYU@%-0}S=#gQ?AG*E=#7)=^4k8a7_$OO{8yLvTss}~ zMsfAgk}c4)t+neoA${v1PGciq_f?(Dzt0phrVvld*3C~GVceHt^|^Lv!~OHe-z|+@QJB0enG3!A8>_ha)yo~ zP~UH`S76qS&(@yw^CUi@FqgNSe2;U`y=BuK8OBGBz6t3m{d@@H;{O}itI+|eeaD19 zf8Uq|Dd&i%f*6)dyKU9Vp0H?d^y9GECB?VyI>rEwU|e%2{!l)ZGc1!_w8ZW+Y%DBk z(IG*=JOsHeK1D`U%|GKM5L6h^H^U&O?Rs=>;{*iF__Q#+J|$M{|s9-Ydl z10lW9)=TZ}YKI2EI}b)e9idzG>gVmYy!qnzMXj+OeYwV3Glt7+>CGdyIAelWqtV!F z8?|zCPku#~;A`w^dcnNQj$ZuVo&lpY6b1FL6)=~vM2q~64>7^b*sy*o$xln}|F&_0 ze0)?9Q8Zkm5|YS%Z4;2|LJl76#-@xG{DaiJTo^&RBD*q{-&QLCdgKrQp=sZke>;SL zMs#pMrYp+UPH%rR4+>}@2oNgwN$q!k4;V!r07>h+`}%*I{Xp+{9|A&yuzLQ4@LiOB zQlnIBCh`9?d}=@_?@N9BKaHXY4YT}!mV@WTpN20C2&I;!|9z4HqfiF)t+Qfm@~7b^ zqX0sMgN*((ih5c=-+43J_kVMD|GzOJTv}QhuX^Yo`--_2@1yG>w4`1H4I%#1SVx-H~z|D$fffNqh+>HYpRL$m?i&K()s{7JVYx4MN168WQU=>Xl< z&26LqNw@HTP!doH%AaP4^X&qGBsBbKj4mKRC_Dx39~Vd=Fqe1T$~gWse2m)#;`5FC zPotQ-T_D;v$A4TPzJO4Sa5aQKjiT;$fo%27{b~5Tn1E1Ntl&Q`5LH0m&JB}L4yI^|bW#OrMl@DJdxkNSHT$J&;I)fdn{-RsPY1*YD4o z)P#lKoL*e4^`XP?9!TxC*!| zkM;Yel7sY=x`*hUCGX422!0sO>jleo+4Ce7p9B$AO`F8y_`OfCkJG@I`^#O4pFGmj zXuw4CwaJMgc!)pr;s7hg==!+tALzn|-W8e%7$gci*An{=mIO%wmMs0&(fz0C!9@np zcGOCfRDZA*I2xE&MnPdwcNO%p;q)Y7jU4-Rjrs!;ZVCc5C#%}9@)51I zLy}(<;5!4t4A(|3X+tO)FVJNQA!O?=lrc8rK|Ur8*Y&>9cG{VtNeQ|5N}}5F09sZq zqaq5TgWF=a{Pd92zSWS!*NR0%5GBK^5=^{$zWp{rdaP1RDyT$C)2wJ zvls$X&1zj(Z7YMHTNMg4lxwz*r!(p&ZM3u!FSiyumL1EyuM(pw^~cO}VSgS{GY3K` zgXvhdGt=4XbdW-wiWPv-o$~D0_w<0dntWN~T6W8Y0Ay9Bb5Zir+L}q(XVFjs2G5Hh z5w1g&h=jLBIuxdCIa#adwt1$5CTUypCi|{E0WRl6ZI4p}tG%74< zw2Nw{cIt!z4isvYXv~H)O13#*^PQ}wtNEy?$QNW_0bY~K>++58&a??Uf2b!Zzn$>0 z2sEa-8QhT}-6WgvT+z5cj;?CXBa+o-O8D#7ua@DPc{Yua9P?fs2)Q~~v))b>q+XZm zZVp@VR)Ta1_-FfST&|m+e(bm=HDq^qo<$J}xGK~-L-jG-$KoqWO?GwSm>p}ihAJJM zlF+7q*(*B(;M8|W);Y83rYfS+M1s2q6tg&~wD-7=BL|i{OVXK7qZ3x907A+yAlR^P zs=}$pa3pEhCK8A3IuBJL&sfH6vc6{h#pxbo{!?kDlvGorr{VN5lzE!>6VDWNN=PI+ zAxAv&nzfx(3?sA24sRUq3SNgL&C9emGtBE$8+xVBBO)S_MqK@yS00%f!{ziu7fCy! z^r+@DPx_!|f_?3)mg60_R?x9chcCVkRa#C{#fN0hUJO^NMGCT=#h49eo5*cUT%!>d z4;u-+cwyAZ;Ggm0!pZI{g7 zZVu?|78V58csmki-H+cJr}LdJz_YK9r|M|elq!nFvAGwP@qCwzoOK*D48x((nkXSC z`eiHOrws>ecQgbubcuM+2vRtUXKMz@?2e+1M_$*oe5*V{B_r&uQlJxQKA8-0jIk(e z>^6Rd1NgLtuRnc+y}FP9Sjo(|E|MV)zNzE*UOIG_+1JyUX46>}<(5NQNDtPTyy?{z z=+Wk997@noP{Kvg39}NeqRiJkz@R`x1!+vlro0}NeDMnEtC><)7A|)$uz#*HZ4d5< zh^#k})kZ1K@deSNN6WFx9wE%?8bK!g;{NAHi6cZdz?Qv?WN)LCFW>UK>n!&q(%6e@ z3coA_%5xo^u}neujL^t@cr0JN)k!^HzA>@>;u`t*dia%sn%WoCa<=gEqkgC&yt)O% z=9#(zpET%9V>-ZQSS}Kp#pZ5aQKKtxqhCLoqpkV1^(%3mL!%JuK5$otOuQt9b4wYJ*SYvzSSeAtzlX5-{ zA!NrC>vHI$$hBgAz&5BjFauBUW9%ZcXhU|ZkeJVHRF-iSYwvZHmT?x8wPkI6{ju42 zbxD^7J!6IWXt+XFPr(CA`D`Z!RMZD0zRwCmD%=N1)Xm@qnfNb0C~>frmv1}|OW7;< z!J_R|vEg~v9Xt@XP;ucCIX*wk7*Z&6lFcxMP*5)Q{HNm=6AZdRF|-(zoODarkzjg2 zXk52h!@LQ5b z8+9rerZ4dE+0L8(KEr8)*+~W4cRiwEAti$+h^}D<0XI++RZJ1pna$<~NV91hA}8Dz zMYlDpR5)Cf5vhY~JnFw83hn|&2B~Fq)@)NixnrGp`Vm>qME&KWq@Bj4T6I|h784}W zk&ZI+YMN%oW`|*7Wao>`A}wcrWY0#DOE?%ya6eG?pPfR( zqg{^uM)&in4Ca5>d7K)Bt4GTD%E#mRHQjVU=Z!~5azPf!z+9&|KL0kQ=7pr^%~WaI zCI5+hy!!4^Tddmr#18$Pg&N%P*!{i z4U0`KMX_Axu$?R^Yl9ARYh7*sW`bvK#~aj!U8O5ogu5E}NBe3t#yFb%7Y-Gq%N&m93&v%toINIp-@b3fZ60T=xq+fLRi3cmrs$wv$FD7!XY-ylFd(qY zAu=fK31)j+ThE)_#z>YRlZXhrMOJ=KhhQva)9IqRL#;shE1}4)@%~{V5;w+0XN!RoFfi8QdM#D1R zxAz+-(~s0qe0yk8wKw8p-K?=2FXqOpC5xnVx1t%APtNWwr{Y`5A>)b{nW>CIs~%LI zw7#*Sp89xI{_JAvXlq4L@v{EK1)a2f-Zo;M1s^T?JF|xl=<-+kqVNu^=+DB~o;d7G z5}HwOn9LgEv&3gtrlx}HLK`6q<;I+{aopNVGJBF@xT9%*t$_WJ6=w4a^YL&jDu27B zj1)_dOj+S-97v0Wbbc46u^$(Ka~5K>bn?vu z4rg2(h7C@tXsqd<5ff6%r(JjEbAoG5pd&nE$K~P|2}Kw&PZbmS21h$+Etq9YQI>IF zq2$#LHTZ0U^#GX@J&LC*6TWJ^+*>?2_yf0WgspXRu5KsXhRTbnY_-3P*yc+5WCmcS zI(-^*c8NRQ)@pfX=7g~cCA(fz4l%mT)@m8lJ=wg>Rn8S>Q-o{==oP&WUBWZj?9d*n ztgv6^=i32-Nczm}`c|uuLHFJ0Ap?PrXZP^pG#rBz(%sluT5Ykg7<$mj%zl zav(>|>0wd|3Z>;%vywj^oBeYBp2;;c@skZbf2DrSe@EOE8~~~A*aCcf%h|bM!}^PxR6X%zT{5Niww1)w9(SqN6jA9p>xz1eJAC@ zL0D&d+gwI>Cas4m=zF&MJfBVfeP1mm+wF!=3@MGXjx}K;wUsM-YZyI}6El!< zC8MQp^qR_1`!~YsR0cDvYx^M!$^g4L!?3vzH2B_lROlyU1o8o2;{vFssYt*iB^Ysz zWIvhsYitDFg-%4=>eyp)EuW?mr*f zxBh9kK|1oP$o)|K|GxdV1abywfo@`mZ~A|@^uLnrEpz18@;lQGhVh-bg<8&9$f0){ z`&VqU2!JNu;BW6BHDT zh>cy(Y$zcFFsnFtSEPaZr|Gev3BW&(EjK%M9V`@d^r-675iD#%srIOt-br*gGep)_ z$z8z)yrbldyPSlN4eDtdHAV7Kf#Q-S=3XdRQt~~(txu#-)S|f|CpCZ;$bSXvjI8x{ z2*YM-06d<3Gg_wj1A#D)wUCnKdE2L7CNl8RNA8w)3F_&T_{9&p{n$teP$X4_)Fyvm z%1++^P&uXgLn6Y@r{*p111JHu(UCh59c~W$)erEldKops4C*ttR34nHJHuY!f%`zR z&I5^H*-r!8*_8^5iAlMreL+A*mU;!Vugi2$Mu(8!9G5{MAub*sJHZ+B?j0rofDG>r zu{jXIW%&4Wa956t9Eg!o_UnrmGJ~|e?mR|vD4=jjuzwr-D-RXnT?urpp`YqGBYZJi z`MYg>{j@i4aepk4Oya~|lgb}RhH|F2X6z!yDC0B8zdm=k>@&fYuOMIemZB%fBiuoq(gK>h!E>2XVb7U`(> z-}`ss{`*pAD=^Ov_S(J={(&ygy=9^DRHF~?wDeESgW}s97Jx(8F8-bzy7Y*Ukgm2r zvz!HR((UZ*vQ%UwCA&ut=s$p+?isF<4DDKIY0Xd)f6bgBjVXVk@~c2lAVMjd>22=9 z%4adsm^P_s7l&#&{=@w3S;CE>QZqb){cCXm)5uPBSqo58QAr93`PB>9eImw9T8Pr5 zqH+^ls3WE7;yV$bIK*SDU7s7bnW126JeU%Rv9D^@+zkykV==BtX#2?;w;RC08*n9J z0js~^mhRXzG59F$RY?F#HTFYXZ7ze_y5qaFswXe9b|I`2fN}Y6Yu#=9dgwiVFK21$C z9^XR_+P&u@3_3!kO7umN5+IEJBgVa-#()e07h&L3JEvXa^*lV{n3o)*Rim|lu4*1t*;;SZ z>8T4(gX+N6cBz#{RYX8Ao>b3jA4QrxS&sgAI@yAiuOpC|0tWlsuURq1XTNmha@&r5 z#H7;e`j}cSiTR|(nX0-L;vq&S(MQ0Rco?1F{tAeHXUak~n0q`r;Njpheuhp!wiUho#o)2+ll>IZL+zmi-P(SqWSBl?v zhAP}DPDLsjxR67|nbDFJ0idl?oSd?PEZGF>xv<#{3A67F}<7Ng5`^`qr_eJK6-uq%?FU5tXCU85VtF53I=Zy#GfylaMOE`wvvP!yWYwl!3TupzLQNYu*_Q{S-@_zK zMxaNbWL1(^wT?-LMH-<`M*H!ZGAf)KAhE(b$U9YFl`9t(tv8P5!)mcMbRqRHbS6L9KPA_-l6a? zl)w4{MRS~bq~r{FkHEDiE`o;lQ8B9y2OXdqQ{#N}R(To#j!Io0u9g5CGUeTD ztg^9x)nF0xiT);O29#~b6|GH86`lAGs*Qw$9v zGuy#PBDv*Mk`}iRPXcZI4N=;qi%?8eceXB$K4J)v&|zF}>6lGbm&_I+Q~{6P6vwRgvDw?Pt)d5!OKmq@SVMm6K*&9EOXm5}Qd_^w{Qk*& zR>E9OU<8mLRX&?!7lnlE4}O4R8pGFD?6%eiQ8ZGJ;Sd=z>5XUbx2~R(O=)`d8H%=I zgTy+RrT&x^!9zP$tjYpP6MAX-f!EUM$Kx|j}&of>r+;8!C51iofvTUa2eR2 zXsXEI6b~O-57p-+GM{uJvCyW5TIR6j0cl!>609S_TfnIgyh~6`Fj!UffrxD?PEVwn zRzS6Kte(>TaLpw7UJi7DvCs&%U{Bl_oG%@IaD8LD9nfb{E1Gr-&3Z_a{dXS zFvtXfJpFjBlP_X!X!BY!w&lL*-FXYRUFzNC-SqyrIz{WuLa&S=Ca!?Nz+!!)U$=ih zXzRey78)zg;C|BoH1=-^bOA)zjGAaPh5zv{?piht$Zn>GE9Jg3xPLkVKE8E)yc8?n z{UJ~oE&{k)>IjC8cc9Hba(%b)02p$WWqHSd|8*z$Hu!?lxp}6#usvCJcCyT6kHAPS z52z}b{-bAE4PMzm1j8K{G&}+Dn^&^(T1uAjVFd)5c2iD( ze($tI5S%L*Tt@smU;|)N!B*F#i^T0r>%Wh|1dW&lg=gO`J$I-J+qC5WQ*06acl9h_ z-=fAPW;?9kH0J|g!@ryQ1482mP;NIh;}dG%yTkvVkbi@je{OIRw_H+EGNQB7v(y4& zEg>OM1GCl}#}bj4=+W|{S9;KM5VO+)jyqQ!Ku6OTLQNx+M-5KffiFi7ra0bwzpFT4 z7THpVGYIAZ;hJuHrg{pSro%#y>lGK*<1;*??d+7UA%l*@3!?u)fzT@=LPBbQM?B_y zmx*x+gwqbLJ6}4f9d5gII+G9qw6LJB0LKmG$;?gohfC95MEA4v>7aw_FGG0J&KzXy z>?+r4#m{ChR!4J8>r&v6F={lEeuCh)6K)RR}`{0PeMWbUfyzWctb z>&gn=N^cwmzEu{_)ZcKSm^6%3fKk_rt;INnbJgTWt=*XUndJ;#DL|d$oA~JiSw%+W zoQIg5QE&-WmLJC~Ale5d#C%R#{1^HjwI?#d!qxR$mpC-)X{VIC{y2AipxcGj$p8nd z&KK?<_+Y9x>|muQ7zm%wYRSuo-(R0s9WT(dVM%v5pK(3Ruv_U?XwXoO3^~fww*H3v z#He#YGsC0C&h9qac-l%4G($*Z)Dso8196JdV6&K7nJTxYyeDI<@-Hx`1pZJ#5$gT* zX|Z2*MyMCt)4Ke>Ux#Z2MhIFP{D zKmE4zG9WlZV~n;^b7!8%x!eDyR<7~V&2I+CE>i$}J0FR%& z*+_L256)FO707GPP%BA0Xq6MF<2zViH^o1mN>FH?*WG!{td^@F-+0+zA7hHE z+;I$r0(_xU$@J}+I)8H-nXgqQs!?fbZEipr>?9&BE?(Xv6UQwRO2kKXGVdOyHJRft z&7Q(xeLezhjQjPhy7l$#vXs@-VtEht{F&{?E#pqFCchRXl5rYUR&|ONqGIW; z2zY}a1)#9)jPs*SNkQzrbJv4Mz^?WYaEmp{N`drolTtBq8LBR!9EHqM1SBL$AcVKg z%^+O~___5@Q(fOx#r1yGYt@Z$vYMKpr-2;Ca+xG|HKRob?vk4C`U3&Fi4S@6*Rf2_ zv;4y55bhY)i7$el?(^%lu-C8$t9h;42h?)OcC(53&*MU8i=gCe(tA?gfPYNpE9jdO zy$BB%qXa0ii9`3v+5Pct*jj;7>U|UH@=pgF=;qdY%ruz)SxlWF$boZoeZ40m6;>=aOheMGWL5VgfIRxwNo_w- z`kmCb@#<3`AEI<)z+OAFJR#LMa7J$vI^#T`eH)b>@)>Q@01^q*zYQQYuBvBLwAJ*mX5t2li#B+xLVLa_%)=B3s#dm>B8Wx=n|BPI zlH`F?(P?7b#{BP8_MIUQUy;rOk`}s$S9(^CRCOgBWi?_XHG!QwcVmbD5tEM44`0s( zpX>g~Y3FU*@zvL|%jj_Ypj43wh~?g6{4N@zrQ z?84>tMuJP^=L*9OW=)RTjTU8W@7 z1o!49XYEae_1LfzomQ2XKe3f<-Uc)CYNXuCM2P`jeh&hIhhS>RS-*u<6*^aRga9r^84RxqFO9T>oGyx8T$``zmvko!GrSG~=&|x=57!amJ(aWm(f&BATAqM} zcwQi@J=d+m{2-O)X@NSWSpx3(7`GY|y1R0++tN)2a9v|~B|dK@J*;B_ZiL`+bF{?2 zylH9XslORyjRmd|WSf^Wc6ce(nwXu&mhE8Je8PX(8QPh1GNhcu6X(7-^Tn5&+yvl< zmgfhWo(|kxn60_(%$bJgLL6sTf{Um+~2 zprpmUGgQ;wq5FD$=cK8={9m?K+4pBaQpEDY=ND-K>1=hhpoOLV;@ews9O)RF{_okL z1de+PWGvn4`}ahNdqWKj2~iAVnm;}f%Mhw5ovf%)ng-IVDvlP)>s~E>%@La)MNCgm zx3ZmhJ)fb$)rYKo>{G+k^NGBmA@_5$4dnj3=GZ|-+4z1Aymwa31EPbh~+HZ~p{IJR|}3R!&=1wp|m>%gf7-il$4m z&OiWQrG5Vh7y$l${Ak&-o&pm{M+dwjohiaPK^Wf;2tRa2-GQ6hce>w5iMgPe-8uKVYI2sz7V_$XB_{eqIbt6xwKp$}*Zy$s}gy8={i`d<}6n`TX;Bi6 z{7qnhBybPluQWz8`^qq|hA)eR1aN~4^t|LX*29Nn*Vor(c#AA|)Q+;O2b)}ecuTr7 zrGSBB;!WV&_*CVI6&{r14`6=0!B-{dk5h1l+!f$ef5Opw#IWWXXZ;n+(m=E;HumY~ z&xj4xVom`ta2u%q_jr@ZKr#-%Rxv?C0BmvcKWveD^oI%YccA9`EppcRW~_>02x@MK zg?&(VM``~rVg>;02a!v^-7C^|(^a&mIJmDihs8>W_S7|6f{-YIu_8k#PWs{Zs}_l|IEICZb3 z%X#-*DO1x}-XG0P3dAY=d;Axd!NcWd*fnQaghu@{t_LH_H2s0PNxB)fdS>JKIa;1$ zQ3~~H&+8ibN99hP((=`66uy2Hl6giC*4NhulEml?fkQXVm(hxVUbDn53jIxm*{r0W zpWn8F7g;zVqJH1Wc@MCU53kVmo^baf_+3(RbBl62Z-Y4IIS0=g`gaU;OUx^jp6cp! z$2Z#;Pp2f@L{!ZYll3LAM+K5TjyFFl>f>|!G4b5>auHckW)1%CJiOi9CMm;LQk5;R zpTz?%C%{IO2~u_VTFq9<$cl(bC8!h-MP`_OBtKZ)YK5AhYb0^LR%m>D6Xn6XitTzF zmu+d>@$N(*d|?68b@?-LhAeR1veR*WknAiajs%DZoy<69qbr%gNS}Ph*Se4vJ@1Js z`sZ%}j2~THtW5Yf9U{2+H&ddlJ6{zzUsIEjk^SZI-14g@=RipNfRu%=-J^)KdN)~W z;-F3SY_TIHQ>>~m=25wwrRQNZL#Z2-+iX0e!~pBpY!j5_YH+l_3c#FK3FcL7jd$Zf zr?@a&GQ0MkD(7Y><*AHu^&N#c-J{nif5&R6rkf=lXKuovTk_Q@iGY9Gh(;yOEIBXUuGY&9h$H8YhxLg)=yPfy=d;vX-k-)DmI+73;HlaZPW04Chp~z z4z*ebnwoipyzy9{aIYdr!ThVn?}V9p{^#s;`z_wH)VDYHCe?xHOk`xX?Cllh@?oicH z>d_`Sbm+a@asf4$>bu}-x;7TTW7d8WMl8Tc8cISZ$9oa@eoeXwM%QUXgf-0+UsjBA&<3zXjY-@7usev3` zGP}!fs6*SdR;o^$re&mr9Oj^-t+BEZ*6@mPgpS*bh0Mi;Q9!P4XGRLuwCl#z=ENcz zq44!$w*9nBomP3*7oxv#A425rE$&OOKi_?KvSNd+H11PoY?j2@QDD_qdsGT!ZI)V1 zJ6)U=F=$dU@`w6FjV<8)q$(euJa9BifrEk7ba}*c;AZns*6}A?X^6GEMxdmHOig9% z#A8?Q<)=I}G+Yu+34v!UREOzuyK_$Q#@de<&gI@lZPl91$IxlALn-*5gwr90lJFVB zsU&+Au~i=e*>(~ul2O|=rr-@)Y>(T3%SDY!2!Y*AYgkuSUqa?*R9rmz$NGL%9Pzb^ zGTR>Lk1dF4p%GuyRmrmQtlH3UERRQk%V~xyn`{S5Wdq_zhxp;OGpDHY@jkXiO0asW z;sS?@l`U1B#fwE!b?jERXuhz_D60!@B){MmEh4L!ju!j&Ri8t{&g|B#s-~Jyr=7Ne zJGWl5D%knCih0qNvyIyE2?Lsy)=_WQ;LUT`y8}JQQs)JTV^j454y*^9fpCvPuAxK~ zyl1txZ_wRowx9?%iB)bsk?IR&&zMvu<|+R_?7ekVlxz4lDj^_92!fkNQIJ+Tq(ntp zxH`J@g6uGPm7Uz zw|U;PICt!Nejm}a@5ggHEwI#~~wBw}++?-s%lH`pA`Ft*iSi54x3~a5aU~Dd$ z*50A8E#df9ajStZajAsxjuF^ZVsn{nxY9ciF-+^!$yD>v87u4j5(J39zC`=Dh^~4E zfe@>fK9$y~=&zB2o$}xckkW>cc#@=cJieW5ll-E!_6_gNL0@l`F~NkeuH@5wNaghN zQ4g<2OhQDF+?skMboZ9_o;Q5!L2P}YP#I|oOAes2cH^gae3CG!KKioz8>-t(Fj|Ni z+X`heKvZ-&rXeh>a@ccY#d8?F?t?bDgq2BT?B!Jt(LX)Cn4v#p-DUaeT8Q!f#+bfx z(%VWyLc=OX+H2MU>cO)pZDOYio5?Qj!Bih{it^E?W%*VE`Cz^#*NqYD09)B$x{4IT zs7qnx*siYCsG*0&U{3hgg|^=}&TrI!QMFRO^_=wW5YNRzNA{c8bsG%l<-5 z)L=0ZeM=#-Sh`AD=yHEZC0MBG#V6b&Bff&q073p3jNMbA)GN=&UeP(U6IYg@^?sTB z>Q!eSE~Bk)=Q5j!>5Gh){kCOc_eRjYK+Z0_<0CtT@M|?r88WS zxZ9iz>(n0J*k#*pIQ_QBR@(Kh&<)juWv3!1+io*a`m)Qo`f+)s%GWqP!A^A0H)DlR z^g@;r{`JT5@|7C`7hud6tsrI`co#2<2BofKznEF9`_`H;9Tm)({cuVoTz100ncpvLMS%C0X(TRb1<#+^1Os0@Q-r z*SIPJgoP_xtWPO>n+7gKwC^`(_u=MmZ4CMGonyI7V?!~H1zgsZ1N~ssge!5qNe^0a z$)fgcqQIH=;eoLCmf*$%!nm$?_<+j_1h?E-%bXXxMr-;N)`^Xj#m=xw($orI>C&D~ zD$YcsC|?8yp}vGjMEk-wOA*e5BqZTS>op2*ud+SUMx$0lX>SkGsLFw!1n4WBqyU29 z$f~pbDMORhLX^0lWWcsZQDG= zkZ#nCO#nX(!{qaLc`B?ohr5cE>Bq!k`ud0jzAt1CX^!C*_z1ilrR^_TF?c0(pbx+g zH21`PzGfhnwmIL$!x6&gAt^6I43+TPM{Kp4>3oW=fDI@P{w>aXUGM6(x@Hwa4IGx} z?n{ti=!F`$V-Bux?mnllIP+_FCoIFEbPu1&7*Ws*HMCX(3#Ku5b~NWx>*&2}NTlwS zs>*8SC zvGa+U>;BJ70Z7?+$$^|YjAZ-#F~3Sr+(AH+(fP4k`5dV6J9+$n_dsuHObw^efhG|L zTjWQzkZz=~?!6OFt@_jREJzPy43+?YmDp@fwz<7sclo(_43N(!U)VSEme!3r#Ltk~&rjw*IfK9Ga#t{%K>)+P65&7z$nv0ALMX4*reqIA9EaUIoUuw%d_?QO6EbJ!){RkGF;WuSlooVT_+G4m37^mN-(2Tsq$c z{vInp<@x8O{$q@#V1%R;F<}wE$JL)7{bsrT=LMmD`H3%s2b~wX;w}qaxq3Bn=6E$Z zrzII55ASVCim|Kxs2vYbpl+nPEmhAW>*wu|ewZXDFHe5bjT@`ljTB7E>RhVN_bPH0 z11bxVnA{0a@WC|N!*kXH5*vk($uU_eyY`PCF~iLVT2ZsT^ZifGTmdDi1*k&7NUP@v zfHT!HoxyVaBv>H0?g5Fx7PR=ERi{v*i`-uR-JhhB?|G;t`|KTD9{O(bsqSk*lO_N# z+}rb2>FDGEyzx4t+c&G77l0TVXthVnLwRm}<}O&?OU6JJkAa2~1`Fz4jTq?Zi01X6 zF0_IjuSq2$fx=t|ZBe~fvt#3bN)x}w{*or92I1wC(2H^o5aWL_3_p zN6|>=XsAaQ%%N2fO*r4FFv1HfE2UnnwLjfA9BG`jUtBD=U$5DA1$aBQqwOMF2NV0U z@(7v%nDK_uwFw_BdY~r74lt1nv2n2HeeL0FJ@B2kJAiGEb9LIp!+pfLfdPy`DIc;g zYQ2DG%?;ke7ScrJjS#w90PHlsF1F#I+?n%^b&;fW6SOw!0*H?oLj1L8vJb&qS4V1X z6NvTJg5HL&9PO9s8tMw;Y9Uy$<7*(t-!Huxuj;|`qRa9I43b8!RY)pKr33MI2T&25 zA55?hUrW`1hx*_xbs#rHkV(Sv>p+V!~PimD>>w+|^y6~p~ zn1P-b%>@He>M`cm@83s-r9V=bl4vlSEP}@sD&c2n22mkD$UHyzr|!~b$gteKgig{? z&0i^|1z@boziq!$Q`sqiEVNDV?fx>Kx`Z$hU$DdJ37h_Q^H3DtlM{S4o8^$@aRR$;rCtR-^CX9-l
S6~7JGrfmVWF2U#40NjERl-3-4rp>5rA3wD0Vs!$rr8rUV%o;cH)rS22 z@B5OcHvySqOlYVH*t(RgF5yUVjE3T`LB+CH#LHuF9DrUXF-FQGJ}Q2_Po5NYZ9J&OCWLHm1$v~wiTp#C*W`98)I1pkT>a{ z7FC%hH-gGHZhRU<< ztD?Adm7+xriq(A8hIoUaHN7Fjf60}<2w;mC#iAp6KDXmh@GtijBwV`V5+(v!Y@cI; z>s&w>9X?-Fral|M&Cx8&EVr37;I}sWzG5%0t3C@eo{}iFJ#vk+Wq4FUFX8n76o>EW z{hAR_bphfv7)C61)N6I^@wUQ#MK5lxsLK+Qj9tS+_Eq z-AQZw#5(WKJpKFcl5SUBrZKa|!K6s5I2ndb$F=6YN>1BKLh@K}x-7_QxHco%6cq0kj=Pj$_FX#M2C^I3jsi0fH{Hft3Hk zRVpegY+K?)>bEpay4L=74NAq?ftUQc?(8pNa2O?P?}DFjkC1fAC^-Yw`Y^1mh}zaT zz*Zrqs2EF-*u=WmW^U>3)^62Q+)-mgIe0+6@x&(_;eetC*v>K%r#pPK?zKn3V_jR< z(MqPhvXrWkzka3-nq~5gb;fnnmJ_pWF;t z(!E#Q%uox6(vuC}S`BW)#&OUJTJo}Gs_kCA@%(4#P$!Tem=vLX0T%F@Xs$10S2X0% zJ%7oqwDO=%;d~%~h3oVK`r#EVX<$*edhcQ4y^zD&)#6TBmpwRj;QI9edSF|0F;`rP zK1Q&h$J}eFMf=;cR&zhJXO?ZC#~l>DjqLV550l%JW1aVKzIIjNlFX4ki|O@-z&%=g zl1P^Kv?Buo&!4`?(M@kl9bwkX7Ukxi1SKwE(M&?PThfFW23#UW)|^ics=4b<*?<-@xLge z7<%|9Ar98L?8C1hR~4rlSl&9YyAg5-zT%1~R~X|Rt)j9mdd8_;q{}Lhr(M-nX0@wF z-CGnwtf(Y30>e>ymF-G7uxB#=+g?J7II`;H9`bnq!JD^2`bk z>^ca5R`V(mNvWiA>+w{MLx=YdizRFiFE8FWWXeApN(Fcw`2-m2Q3}*UhaB{cY-x@) zn&B_F`TSy^D}dVgN7o4&o68DVZS`Mz_|Dk=Y zCK4749*J1H#$(ilm+wrEz(!?aN!pGgo}9h1bQtZ+P2g?|&IHBFxlT`CZ@ame2hst% zE|yc5**M76UC-R#pMBPrV<^0vLZ0$~Lr_0#pk8x+Xzgu7_hcPOT=#uYMbX zKmC@alE7I=(~YoxWhBCPr}gv%KM{D=+<01m;cUgU+5BN&zHD1su+0&yHSQ~0Z(mnq z6sCO5p{=z3e6;OnPnZ})Gv8a&8aEvY_w_5_NSD5T()TXFx(mla$`1}H0y9oS{jXYA|2b$C&NBbP=W-fhTC&jTyS$yK(Yg(tN#iJl!e%_H^S zqY2F9Q=`x~ssVhR_SnIhSg{UD1(#V5}cC6dOlF|4q9me! z>N>o%m}L11-X?^VkaxiktyLEswtEZKGTIw^(@=*ZqN1Xx;`qDsqm_1Jc6Hn}%BcNA zCefj*8XIF-RnF_fecgkFZ_xq;T zB=OCcbE}mrH!A9)21}gEaX=!nC~l8YSW#KKMn5CstH<8U81vTLfy_r53T@B!Dl*U# z?xW+g;?JF{paMzR)LMB6N9$BBTZkJ8IL7fLab&HoFk$lfTKJ-+UZ;Fn27g(51$rt( z7qU3Y?W}D)GSZEle&V_ItPMT<$aAGmdEaa*z9G})VAaiR*Qy46yr1@>T@+P0V8#Y! zQbF^4G$0TW@fR+-@E1XV2UxIoFFzGmJsF$8z7BBia~w0GxV!8KFZOVwNG ztfWYserd|v-r4|$;B{V21x#eOj*c%n^_n3qtBQ8wCuOUqM29CSC>oP2W%p1YS4F>0 zWMzJ@33f*pQY8$kBmH9W9QdVngQ#u0`}i$+_sSeANg|a|J+(>&unev*HOV-zUj{tU87uQ`ZFgU3b^M?(KpzQE}ZNIE?I`xz!Xx& zv-#ot4g#t6_G0mzSb6-yUgzlOOpL$;pQ$OWuCTB!wjQb?$!Jk`8y#RTpw6=hP#z6< zYX(2ZJtZXeHGPDyz?*IimY%7!)iW*@C)P0>YDl1NUA3U~LYm{pJ)LBYe>yXDG%e%N zb=7XrPJ7$uMDx_P_DRFRXkMoKw+jc~BUI+*wFAdgzxW6E&vWyAjHPPJydG+Z>F%=i zs6JejwVuK<5npa56>6|6;$1u*+j_$a$pPr=K8u)TGD7hi-;^)cqeAEfw}Q?A?f63- z=DD~KLp>?wGQhsBh0 z5adJLuy02#zDIH3ySEPb#C-Lf{;s}Jc`L8_OT*0DX5u>yrZ%YOOE2Pq9Wi`GUyw7E zzlbKYVv6iFypRAw+1i+nKesQv*|~foX+I~PVkVd6#|%`Bfp}17f$nwQNnR&Z5h9sqA-$J+c^s=!-CiVoXR&eKEGQJ>Aumz9x6c>eDN2f1W*7A zk`r)nbB&4hy$KRPpVN(rLMGjmxw*q^d1(2>CYrt#vXcDfcHD|oy)lBrZ{M_H2 zG=hXFygCVZ9P*IW+;yR%ProT9{vAz&j|~Om#Oe;W+%nb= zmQMfbFw_R5Du3{~a(ie)%%ZnD!(pJUN|hL{r>VA5Qp&@#*RG_I=n`Qp4sjBCswLd~ zorcq=xm7yXwiz!%E6IAFmdC$=N$W0hyDN#15Gy(hG>>FbofKxl1nwE@KYCQVl-`&Y z;Zt|*q``@|WIX2iN=4P!&|W<6_1ej+AH@l>#zcTK3mJ>LkGh#w9vV7Gu76%GCHd1_ zz$XF?EI8nT=CaiXx?x4n{Xm*2_9BDN@uj}@VIKHg+M_Z*|B)u`#b|(|6K1Az_%_D% zd?0rLtBCNsxqGU1NbF}aV7m)rQqs$Q>T_gdmQfd4aP(W-KA(FDOeVO;l6{v}&;RQ; zcg+2V-`eYe|N8P2&{fR)LiYYm1;${b)6xLL37<*p9KrDSIllwYanu=N1S9kz+rf^T zsKq-Gaq>TZiD`WR)@$5_?J`jk5D`Uey?x6hE~ZQb-Mf_v4>}Z+J8!-Ood%F}N`n+u zi&<7EfETlIaqXfehXLG#pXEP){rYktY6g&&he!c6z^hlU4krQ5_>VPi!sSmf`0^^{ z55gEF6{W(nXJ02N>(2{)p{Zn;k(5XBmT%@J*=CuPre@ShfbN-Pp-FaX%I*j~_KmPB zVSvn?nMRm|l-2Q{gt2CTFvdPC@t?de0&Fa9CH&^VFKmDM=kHJdn*;r|q&KfS5uSg8 zf4^<1Vn8rKSg8`Zeg2L8>}mc|OuPi$P<5%M4eXLWRW)5*wuh~)d#Xl8GyA3{fxy|M zm@WZyBzZ4`L~o3PO~j6Sh36`-y?#d!L$51#i=9^u(4ySD zk(kk1d8Q$ZjZ0>!0PVbgYff~$#4Pe+<#hT?&>km z6CE9H%G|fYR(Jl#;21-AvL` z8ITUqT$w(5|9-ld@b@52)dij?zV+dGON!qJvoFSIAdvUyKd@&qOTc$859Fx&UltHe zjKE2cKXgg_KGV6-DgGAONdBk``^p5gqqB2`v*1KfRJ3*vd-8k{{`VW7mQK}_&a1D# zcYr#Z7+m5$J^h}3e>zw7hSvF9z3}cv{SIkKYaMIe)FqBsn@)Gol()?>B`G%FkiTj z(?AqFdVQj{V=Be-QEqOo|2Aqm|G(NIUn-BUfCkc^s!^0IJ~wxX;-*MVL_w`tJMRH_ z(o1C1565hVC&3Wv8f;(F2hO#5F(jNRKwxaKgE_z9wBHy$w`ey z3!2RTwQli>)MtCmZO=AEqTyEAbGMp}=0L?z>x|3vybppUmLI=)`_?IU`<+xBS#N$b z;F{+dqG_)|MoX)|Axib{u0fWIEdjVyWeylKo+ivC*yLPk35+|)-;4P2OC|iyZ&~rN zOR2&U#d6R&;Z}PpWmM@^Q$kS20B|U`23CvK=rm_$1W?vs?<||~YPl`fjp&xoAyuUG z?CwJi`|b4yL}pz}s>%Y%S1g6FPY?(^JvDxH1$({e_i0#n7WWafYkhdXCyt+kqmgVA z{b2RVl`Cl@THT+}qKZ!zOL7Yf;~slgw>KgsKW8Z>vD~@^d;aQ*&zfjYN3OgFI!fCd zm5FfG)zqwrOn4Xd?wzwXy%7@`Cw78jlWWx_WT7$KC^})fP-10677Wg@87XaTG%5qV z7oXVLavCXq8c_`t!KanGpjA$#-dkM_dmpGc|vfw#wu+o z3=5A2JgWGmqAl&5Q;+)mG;5RGxSL5-x)6w6;mAI3-}>|Zr?M5EA+Oi)oj%2I9t%WxgoIBh_U|hg^N>*W*3xD?9x8*UafEA-#swQ+7Ng$A6Z>JDkSU>J+z;X z#g3>%UJq36RaikkPZFMFqq%3TT-WV-@82<8FF7VQr4hYDKM7cES+wIbDu?+>ocZ63 zzZ@Y$O3yP(DpLJHNhet92~j`2sLoWo)g1-Cv~gCKp_(E+HRs1)0iEB&Kq^tJ9AG9N z&g7?67^=HQY^M6}iF7kiDgm!x2bWaBGSOSO1?R*Oxrzg=B=1dCnP`e^bbGZd;B25L zyBLd1i+dYS4QttVzWt#x2V#JBXa?$z{QWPiYbxi>9MBtvW@Z^2CNPSMx($oP?j%~Np>Cc0i->5>jwf`19-#@@f@Jjs!?Iw8W1@NpirW{K%Gg;A8P97AZT zor2R#OwH;4J$+369ZbU`qu}Hu*SPx<-;F8iWa{<~*)_Z3EbK#Yl zeIcUoXXK|`>OX$DT($uI3k$cNZJHqwnHt_LGvAn>bA-GQNl}cn<-aqJ$$Chr`%{OP z2l5_nC}vCN=jU@8K5Xh>-^BSH<@_M5G!0>6@!jhkVwFDv!lQdw#0D-KlZIPB*Kd-? zF%x|%b}keB`^ew%Pihk35}o#8>Yu3K?@!bASg-I8^%GD2YpHX;3gjJOum2<5y?~7| z=9;&6-1~>faTT5W#Rkp@rwBk1IBXuW*YW?ofD3c3jCi3{Gadi|Fq!$>7xI0F#Vq~`2WF4Mw-(B zAuxpdZN$;)Pm7*nW^WbSJwWjV{8NgI$iQVlbE}K52lpGb)BpN+p@f!A%QcJ1M98w) z@;{Nn=zV}!r=MM>^7rcI|Jct@lgv9dk?_}?OC|-R%-BmU(@#c2qySEi1`uIe73M2rN^Sh3d7!;w{iqdW`eoc5jIcKHF{1@NvVsjQsk0S1$Nf)#}S z=jVSu{cjFTjp}(bg7xdYo}0L(Ai!ECp#ARf&#C@=lE8q3kY}#ve*X(pVCpph7Ec6a zy2O8+)UOA#Kqki0pIdBypMxLR=|L0HnjP}{RKLGsnuY);{r~$TLLb|&J~agg*TEsba{|&dNiC<#PlG7w`7}uI;LOt@N;HGrby+(3s5S8{JZc#$+@B^ zwh^NFBgsR`sq8g9;J)s!Y%kaVaGf_{ zxu@gFY%~8ym-QpX zbY`-c%s+7DpD9ca0EKhS?QH&@5dYbur)4mm`4bF$ZkG6UBsBU`xo&T6ZmqmLdnYWn zc62r@Mq5+f=b>D{?pyXw8+~G}I~-dbL1xnHq9X>8C>?=6z!4T(>PhC?nWFI@bXV4|xRV<`-0QAHay5n{!rsltA zoF^$wJavL!TBpQs;b)OVW_>m=GLF*g3_e=r*+MoCb%X}TRYb4Qs+{DG=yuNW!0VY` zM!~|L9%?_Ngq8X_*^l)s)5LI!zz&?o7k$G*f{!DdLlj1`ynQ(>SLp<=nRm_=F<5Qh znf%K){qkyWMe{Ckfn`2?q*rj4%k6kl{CFQJcDw6F zc6M|CcPi68J^a4nU21I1f7o#y9tM>=!plnQYVEA#Z1202hLx9zcbu&E?TtbIqJzJd z?ZJlg1TIj1ZUo)0PY3(59*$u+@k9OQ*LRN z3fw1#1guqk6ME=qm7Sdx1F}9 z<+hOVJZ2BFjGP>&m=k4Ysj)cjteo)N{9u~)PBix$=Y#4W1I6Dswg2+Kky$6Uhtm$s zsqJHxS*^!Oot)Cx(z+smMA$L?P8hJ zJ7)sw_F=2sJe4jaDvX@6nWQB}kWRw+8x;3~_+>8I^J!DbIxn*gAv~J9XHzN5(|2Ga zZ4E(_S8O+$A}6;3Mv5|*#pX>>(0=74z_4T}W5C*CcJOIdXLqSr&GC`NL%yz^5{Dtr z8uMmrkkMOq5hhp&3b%(q2g)-U#|HO;KWR)7)L-y9WoG~Jh}XF{U!vhl7pucSuO}}V z?#JZlFAR`-bQ?T*K7uPiqBN#b?h83f+qdzR;qX}293^;bvSDii<^OYw*>E zjce^-Uurm>xz$G<0ey6<#9Etyz_gBTxpg}6=~DdeOR;%U77m5La&f2Wm%RPB1?&9H zmHy(}5rb>mE^mXYu<~9VDkH=LHQ5TF8mdBuAxW_B9Td zbrhWEY`Ad0e`?%}+co!KJW*gv402tq47q+dZ+r0BV6J~_V<4rIb_E_ryPv=m5>h+d z{m`|d#xe)uh;H=dr-snHK&D}p!DA&dxrc({JymyAGN*FqcNk`YeLuQ=D)C_?#hpJZ zB~rI9eHTZ`ixHK%aYn6>h);@&CGo6rTE-<+XlNz))@RWjScoNV>@b)rWu-sSTClHJ zIV*FGZaCckl&!G(yur%t)4RIWl|vuPqn9A=S7)~0Co}6-G+UbKdFS(!@!Q)cNFxa- zvOR4lY{WD+!*F;?lS;mU1I%8IOx4l)gg$L~J`56|Jlp*y6r1NT0i2K~OZ&>c%DQ<` zCOB|w6v{g6693uzQIDh3MDqS<`#q}e=)T@jKbf)B3 zU)tx}Thit)wz)t~8+wqAESuZ!L?p8e#HZb#+Z`J5*mU!HYj7!{?X4KMPEUFwaQP-a zHD?;0DDpoM$b?8z^d8FlSeL>QS4-i+^-?4$j#+DB43>v4U4r%~1y&S-x*;xy`Lc?| zwlNJlxhP%Bg@j<-)P4eugrM<}F;{u3p~FSo&WSK)dNH@~&DVl85ccP@Fy$?%#5 zZwddchLSWWkM~j%jtlo|HjoiP15IV6L!gq|kl-%i!gihnL?9hnn8fmA{;JZVE8uFX z7@!9 zW|hPQ*O&Gf#poO!A4_A3>aSuyYQxEXpi3vA4M;PO{fZWB&D4NPoJte-R0@T>Ly1}P z(-@qG)#yTgR`P^1LHKe1vfhuSq;oxu`x(hpTm*~6nif082bn(cken`Jxl=>^TRltFFsw4WV0d2Kd6PGY- z+bVHJS+NrudE6t@p6e??rms@Pz=p8es--++4pAb z%=@djbWj-N+Sp}|eZQ!}6|r)-VzqlXJ$p5H;8B)n&)*aAjXSNlSzm8Fn=^&<^`OPj z7wgaq4I~MjJUk`j>)xzu+F+_sDwPv<{r0uC#MJ@UNoB)Gvr&<*9s6~9$Ka)Ubs7iV zdh3Y1O3($7R`21|ZaGinHPYC|39lg~do?AgFAdfEdG~gc;-8ar`|uOMB9iJPmz7Nz zP5tF|qcV4dTu$%otC{2NJ$w;Zmzm~prdXcb-JAmgY*iDM>O>fWX|YnV}^Wg6&1$a5?XUB z1?0|`fdE^cuTA4c0dJ4NJVd_gyO|jJpoZn4VbJL;ys1mBx2`*izYcl)J*0-Wy3b4p z{3!BypGV$Kbhln@LLK3Da84L}dV@p^H}E6jO4TyH9q^9RYF z;29Qz< ztuapSq|D|9OSoJRs_>|`wrFbNdpdphUQdbksHSL0gwYr4Z1-g`fqgofQ58rukSElX zSXvaY`0}0%B!A06y7VAk`g9xGFaCv+AI<8&?7O&~TXEf9@8+~ws){#SCe9t5Lr!t+ z?|t0+soN^El>~oKZwT&T-m`bLN8wUE-sph?Pn+50GPe1tHG`*%qP-k}jInhEmVMJ< zd~m-;$($9eEyF>=1aTNWYZ8RXz9%ETw$VV$%y8xI{rv5jV0=Ur97azdmJje81Ftn zmp)0I*_dbfzM`kL_e!tGwPhk55o}Qlnb^3H_dj4HGEr=ro!%MWHaBY3m5d5T7{q#+ zOuFHyv^y{(Zk~n?S(D~`J4M}@BV2F%Ybsz#r4YG|dILS(Nt32d^{Jei#c8?}kQex@aJ{95EkwPjaS_w0J&773(y1EA za&@iRoT*vBEG-Iw5Ub7ZOIzrSJ-IMP(A%K+gbM>zJ+Gp{XLq0X6t})wezELCY(VdY z`~V{9-JcidyBX@Ine9U%45SJKAS}4K9(W=0v}IkfdObKETu4sxc-d;>MmB}sGX4I# z{!Zb&vajlFcasu>ju@`fY$DS}6eJTkUT5|Ad~!{$jSo(kEP;J+(uFhI;;(0>7*)pU ztIk~6GYUF3r;CeEV&emzJpNQBK@@6`z8n?7(O*6T8`a zpD%mlw-ci91WZ>#h)$U;x=#~o5=`DDxveyw^i(AMl~e`&4c@tv_cr#to=XG>EzRbE77kes*iW%^M z`LKv4mUZm}xV(ln4*Gx~9gdms9H=DyBeVp2s)#Kv#E{qk{j%X>J+{bkf4cvHh6rX4 zR;HU5KfYDy+6yHU!0ej>-hNPW)h_0g?H`09ld%*h}91`0DN5@RY zKC+Lbuw7ubwd@S}qi@dX?bx}4?~1;^eVY6^)+ zwG|A_I#F;55yE2IPoqAKcPWaq8{KzapoSEo`iBlhmM$Wry-1WMWK;Xor>@>k!EM7# zzPPWXwx2Wkh}sczgIRMvq(xW>W-Xbmb$eYVwjGKTCAQUft8r~}p7du>;~RP~v0MLJ zl3sr+6)Q~I&TTtytT4+*bK;PO4sFj}Tame=)RkRP(~Uo>^R3^_YF&iCvM96ATHd!z z`~C?;d6_QDg*d);s&;prwXmoz_$QAPx6IFYv78X}xckpWIZXVx&ao+zu&`g8bERRyK!c4XV1}NoQBz`| zyeeglyW^(n%X(mF{r<+7APd>xusnc0`N={Tb`tIhJ_4NWETjBT_EwtAHb0(qS{&SIAsot4W+*^4m{B*qEYwh z)B6scJdF5a;6Uv4lT1fB?3yx8A<2CcZBc3v4XFwQC{OZKviW_M-4FMq*}0BzSeb$fM@6OffBx~qI?Ub zZh)W4MaAL{alMDYy^Zou`dm!(K_%!;ZH(Dl!LwS!n0xJTU$t6v)MQRMyDmBcz#$^* zGZaAVvkA+EEj1fhBhnXgJXM|rdT6ybNdA?1HFt`$n-&Y#-^j$?tD`>mpeM16qS`4L z5v~`OpK39Kdmb)qQo!b-VW<`|fi>q^<>c~)EVFMLm4q^s|OPnj%#epw(?DNvwrV zPb*dH=;l%;YL&hJq4ruSy+eO)-`AH)SQv?y_ zl(Z~YShhPr251wO4UD$IUyX^Kw{#Frd}#lY@3Geg{JONqa^ltVFs!?7s;)E#Z4NKK315NYbZ#lq zOiwfN`9Y}V57u>R1JM%Z@E6^VIuzBs7IU6`lRd$+zh?~0+wvvg=dm;o{!(LQ$7&)J zQMAH%>u2d^{Nm0OUW0VtsXjnW`jj{B;{J!%3cMMmE0(Uk9jD)(>J`SlZdj;c6H6oc zF_$h8RG-nR@^OYXLqBYzA(=l$^51{lWm69*N>+UKkJnVUW#w9YU)zk94v5Lhas2om zi!F4dz`CJLb7czu#KK=6e{ki~{c~+fW~q~EF3rJeWj;D^AWy^b=9}ZfE7ju)WbBm{ z3;?*tk}93!pY|1xv~CYh{Gfp5#j}g&Ul;%F-jAtKBt-p!h>*{wTIAQRvCb?+FX9%` z9ADP?5&4QiJ32ZZ1!xJJ3Eqj(tUEFhF*$dA?8m7Ofy*n;-xG3`0EltqU^}St4+1g) z0~VruOCyn{yDSUHQ2#VE@M-*_-kmFTM+<+Gwg?_#m0HMrQ(sIxHwZS1q*na33?%k9 zvRX0QgG2XjHo>o~p;2FT&i#r&7|IedHftZ^ceE?lA^{|dg98KO6Jb3g#UeV^=fpXjM283BtybvIEh9i+`+qc8szLgKz&H2^63CdZq z?DrDl>B_AL9<$EE{+@%UxykJ9K8BgBGtg4l`fFX85pI<)}`?`k-e)ap!GC!dsCC{Y- z5G`f>OD2NFvO=mccDKS=SuU*5kk{+WW7N5!`Fr7ovh-$_ z`4;L{8DTb4W`0E+rpmk@Q$4IBRwYx!5a;x@M0RXw3fK-aHO}$gf1N;r$`X}2u(u{= zW0Ko=-S68%q3FrsUf7zh?l|FSn=y9$KZnPU2f$WJRSM8DpP%1z?YRrOk35w3kDJOx zj>BaCo?L%*pr6w_wD*c7N~8dZQZt`PYb_lg7jgLBd%dEcgPq+By%mMbQJ1A1&aDU+ z`gMOmIo`oyp6S#%LQ@_+c!g@=V(qyC*0!?j?CkPy738}%o7msHwnT-!19;)nT|b)=(5-lR zTbL7T*p8OV5fTwSJbFsQj|9^IjA>3_3kM%J9k@@!guRtj?$kcw*Jeyin-@p#kw=a+ zBp5h!$ML%NO7-RWc*-_AqZ~z=$Hg~?nL|Q1d}5hV5=l>Sw4puiSAKJzxvp*QCPfLD zP*PK~1>loLW8vU^NtF)B0CqnsecFPTFf+NuZ1J0A*K~w!8xNjOR91VIhNyO$tdq1@ zqho_C@)Se!F10brevT3&Df&5SF=gY%J6X(EEMTXA%+STP3(@2e&B@{6YSxcUoSe2K zgc{mAJ0n(CZ4wTW0l|-9t@B;)VuCuchA-JGTie^V7Zisq%*=*eYV!foIJwf4-O=6} zGF_H5p}hjKs9g6RdA$sp6OfoF- z-@oHf(fc(yL-#nRSHw81?>xqNEC!e(rlsAWJyzqPPhK2H=;CPUSK5?7S&6yPp&u)( zhiU;(TmeUWqRy>qY<^*(V|}7-&9fk{NXUNDrfMj^Ffoy?uBXtjZj>n+ubcnz{8e!V z;*Vex#l@k~YRB}lx4+oQ08zq^R1dv4i(4pYH_ADZIVK_H}E>(`NfIl}> z=;+w3&}Un*bSj__^edV8z|~vmi312*jygL={*L&`R=?8iGj!8pkg$23v<*JY;xixHqeqU@_6t)ai#4;i zsRk%3OLer{A-is~R>O7ydM}P%{8Jc24V{FabRmY@I$PL<-(;bFa7`dcA&~y>+B{}4 z{|wkQ31qg2{)!}0iE(Kf%1Udbl@!+V^C=3f9pqW1hy23u!uZqW0`ZnJRsk>k3(+7= zaHxD)HvhIlAlC9dZ5(`(@x|bmz$VJ8T>CRV>jtCAB=r65gU|O?!P+&XV$MaK*1xY% z2-NIrZ~Vy(v2~;t5BibeO`0H3W&__e;GXheF$cNIL9A#FjIcMo6^2P0@*C4tz}CwN zBN)c97~&%`5HDM+&;VRDWLwdQ_tDwOjaY4fOZ5M0?<=FC?4o}S5EKO!QE3ze0SQUT zL8V)|Lu$yOhK2!AKoL+%X(T0v96%aHq?@5j8iwu~xX`_#G=}u6y#>GBE>qaoXNJztk?@W$QDlcpmD8OPQID zM2^uU!esOI5+GE^2v0nn1t3V5 zHtl>M)<*Ab6;)q=mY*w$PS~?yDe;(T`>^Q$%OAaU57>V89ONcT{?qx-7BUA&>qTP{ znC62u=q&|wZvV_+;yhIKE`Jc+7s1`=PW)3zVdiIZcsMy%Bl8$21oy$|#Y{45%JVos z7Xmt%5(yFM$djAqep;pFKmaO!=|RV@;;dhu6;McW1KUk76fi^Gg!}?qo1_>D#&fa$7*0?pt+Yh z=}tMMGH_gm{F%9}-y>uf!3!oLCMTb7iT+g=tcNWrC3UBS=zo914N}q*H$49&r0!fi zapRh}jYQhl+S($u$3;jk1e0aRPkF}0io!Tfa~*Rpd#P{Ve%Ac%pUryUGF7aURzeFl#t5;2;g~bEdJ>CekA}WP9&HQ8ru8*=1V`^A}>bLOt!Thgd0~p zm%tr|K+hg54nNWxH%usX%tL*CJ&WoZcw@PWisO6e&!2wIF2?8RR|5*ONMWbuDNg?S z<4QeUAcV0OnS=G0bMXN{g-pQ;PSxTGNB-9$brUFQE66@C_5b>n{rAAiPoCT&<+2Lq zH1Cm6R#wixiSTfCcFr$c5it_*1*-1`5PRmj^Zs0a4$Djas-J~_2-^8O%jy@#Y)J`; zv?LnGyw>vVQ!P;}z7)1Oz@ADD zm4abtkl+qM`?#RxDvb?H8)EdwHY<#naHv-;Ju3$5Xuer7^pqw>^=DnK`SVIro?HIVp7Su=Xhs{e_mL zO7Cw$1zZgKJ;P$ffQ|sscHP8mkb_nQZEeeUDC^Rq5qG&M7PY%THKgtGr(D~P^R+#$ z{jqb*I(bUN`y+h8F(K5|zW8C|fjk<#G$#Y zJ0qn_ONv3*CsfEU*MFF3*)>J^>C{GGb_zxTYL?HV0#4{keR+9n1>+*I0fWjY2V*+x3gP z>x)c1x{d|ch=}T6DQ8U7@__170c1KkV}*6s#WI=hEKL@mmUXpptR@eG2nlS20N^Qbv#=mNC z2sXe>8hI8GN-9c`-(4Oruzr3^E$S!uEr1v(=qPen;3bS^2o|^Ft{fYC+S4Z{{JimH zEhXdIw*>@!irSa#XZMwv=t(kn!Tt7jZq>=EtrQ(SSOYq48z3grSC)U1{m5JLd}q2| zU((co_T>?+Ham_qjvTna;Iu%OGxHJDhu+QA#i!2MiVCn2bPl#p-_`rrrKF0FinY5nt}Oq{D^B*p8JU7|ka0N@iJdX?JT3 zkjdz{sbX3)M=*y$MsCSCfuQ(xCiSPjJG0v7K#{yMDw$e$W=&0}vR*tXjL>#2jhQkN z@b!Hm^#VwNBs|Qg?-VS|CcX_O{@X6sZRx6|2o(V~_Q{4u=G>4RIri$Mt07mD5lKqB zTT67@L(8Nu+3jRai+39sC;DIlEEw$sL~@dTAXhA$y>jD54|s?gpHHb9uFC=|+i-BL zt$MxAQTz=-PEO7QY$A2=fNNTnKDH{IlyjhL!3VZ_Plig+HAX=ysVSrQZkSb}zTmZl z^fXVb5P&wH@6S#}MW_F42jj!4^v!!!9o@QXoNcw6hIl0&n zlC-T>Ki^%T?wj&39zIYQ#U+^}m#wqcq?{aJ8Y2@`)GN_f>IxoF)NY>YXvzZGXt)Qm zgFqw3<}Y5nSjd<4C7d&y$3SqY>y%JhW*GS5?{)oCOz2sc0s!7ueiZ&;{n~lXQ#ZXh zwRfntcG%~BDCd6?=N6YLCtD~A8@?%UE&NF6u)G1EQE&Si56(|75@Yvts+R0D3efa+ zSbyUcFTmepXan5}B>27$f2l6`P5PN(fhW zR#xH0dU1NXBtvr|0wKNXFfFCvRzzFy@D64Oz&^IR#^$#<4YmLXb-3TM^?B}~oE%oy z)fPLjxOMnRnzbo-)maTiUboJ>#RzO-iw`@O352nezhc1?#>X^EAcgF?8X*YsCF@7JUOr~;b6)Rf(k;5#|=pEg;C&~IHssu>I($hr`*V&~HA}vON#jXZ|KuA_&n>KdLH_00AUn${hFdAKrQIbY6E6K&*?-l6pIO@0 z>)yV*SE2jFP?N#pX$rD38$~axZKBCS{%Rz0XB53P`9)WoicpsS$zu65MFgKo;K*ik z;9r<>^X}+Yd>Emp*@bSRT8Ho_?&A}|i3%1QQx*fEo9HLgi3FffR92~q&m~e?Sn-k| z(B|bWH9kn%WBb4rHXrN$muXl~09+9~9XBB!J%1&^~ua(V5rZ(e; zjF(i<2chY?}io)mM5e2QG0vA29>>CP4{c;nL`bUMaC+eqX^b9~1KPa>j8 zHjn)et6iO~b%|5&5n#<$fvwDWw$lX$L3}ODb|^ZhyD z@h05a zLCDNL-NyI11`CCN!*AOu!`)z6G_uJ1HNTZdb+LF$r^nU(K6Fm0c>9a4guecVL8s0o z8g};lZkOS|Fc|jP+i-{<+*>o62a6w;@@g7|6AyXJLmTeOvlne=*dRvPFG5*%7#r<6?7RuJvI+#N zbT5{bTZ)K^HeBK!yxacdNfzzZkYKHB==O(m^}wELbsYl!?RYYe?JKK=_4^5bn}RNu zHsc7DMc=jlOf4R;-m}bp4F-r?x#Jn=7H>egN2{UGB~n4H#WEE0-gcFtn6|_09or1z zyi_}-$*GA3Zvue{v#|k4#oI3lk9zh>SX%hkq)FFzm%RySY7L*naOgjSca%C(l6vlX zM}%tU7a=SL3Y9q+rADTghArO}AAVZxQLR%qR@g+z=rz(0l{kjTL~-#zeg+MHGx;B> z+fsm`)~*grbJr6p<`3TB+}Vicv76Y`gm6CIFq^9CDBZ^3A8>fjm94eBgH)nLQ)DBa z(mjgfL@^eR?ynhD?_Ro8I8tEF&9k0UJ&{5Rd7~&J8jgRy%QiZKUm)4eguQF|G-*60 zqN?TC%(*(uw-k9Vcb8s{XY!i!Mwlv%c`bfgW+umDJP^^PycoSjCGlUu)f0;Oqb|mm zJb(YYf|`c%VY`!B`ariTbLH3tp6{Owk|A-!4$tgjtkJQqhfjU6Wh43fjCo?*yCXUP z%#L=??l4uIJMVNH)ZJx@!(-exc~+xPS72VG&-B1x_cb!Oe(L5+dWg29WwBtYjB@V?J4yKP({=W zEh2!v+I6F!y|>arLSmR0RkK2e-Cd+aMc=u1bDKN_us7~$=LtWRKBwZomp%|atZxmV zkZ=u1(z(b49{H!xdDX(9_58N?J%GFpx>l>qU`x7p8pQ z$NkE@9jW!IM9&d#l_E-cBkf-9~ z$GgB@NA@7KmwtX=YsvvzJfqz~D4TnWhI%ni(PtO0!ly!8hCHUylsu;PklEnq(avgv z+YWK79hlDSmr2e@f2AOaV>kIl1`b+z{WB_j`F1q-Z|PtfB`~mYtQi7vz$64h>B0qn zngY95!rg?Q`Vsj;EgpI$*Hn}Ig_B-Be<4-yobwwgE9y(SlyLeg4fE5~GHByUa75%x zzQI~QcO9DGdK@{^r4v*2k6R}sbYWs)nCa!p3N3hYU_Q!|-?_-ULoeo1ud@F~iRlT$ zq5@8qxNW`IOKQqu4t*xt@hl(l{W-k~)$I0>3DYaflfHZNZz4JyOb{IZcG-nya4~3C zZf;sL(K){C%6Ob<*=|MlQZhcu?u-MCY$3OdTdRF*rP>;NKXLq4mjJk*LLYIJRHIH? z=`R@gMS%nf3*(sVdisW$JhJY~8wb zXJko#X}Shej{K7gj*lW~fGutk(n@~~3a0`=VVGGy%U|yFq6Of~%&roK9Y5;$XrKP_ zY-a}2qxFBncw)Fs@JGOGR-pm3e)z9&#B z;Q3nYtEjJ(p>XG-P%pjUqc7E{Y*M3s@mK!1bu6JHitjj1B~v;*dh{$QDM{SI!XlCN z&Ye5KF)>UcA|hN)NFZw_ipszGn~}g!u>W0EKNMIvP3wjNi(d&1v-F9{$v&sg&ePF% ze91VnWaNyydq(Q$*g+vUi^Ul-LDlZl)Gjskj6GYSkass43JwP+D$<90*q7$$ZlK-0 z@AawWweGHX6HXAMCNe!C0)SjDpVypJ=h0C^_-dZ@^cIhlZ{rOsQ>Pon->31Q;w>Ke<7Hi%%Krkm}`RdnUE54`bjI>q6ZZM2kjWJ4%w>mC}^ zird)anuBA%VF^a^YG1#nbr&1^Mczof7n{wOm%;j1wGn0ebLMPL%N}_^d;5sWQ4Ck*xkg^Xxu|>~xgmZx|8#J6n_ZB9WGV1-U;jJ&FanJ1F0Hks+w$JKA{qn1~-n9W? zA+isKv+xj<_uuN5&FI5ob0Ib=v(NJtlLSUFg-3IrZQE8KVMQe>ixn)?fa%{nf3b|@IF))Q*^ z?tbqwRZvsAJ00U5&ao-NOwRmednE!N=LEYlpB!1so zpLDTT7=dl)YEaUg>K93*PQ42U=5veg0#G=vmYu2j3KKj8$FTE`MSVPn&82- zka^J4Py7aKCH8v&_F8XLRr$e`rZGY_H`=D3J`0W0;GgK*gO$k9yFUADh|NZ+R>LbT zBS;Zg%*4+(AoI z&AzRT<2aoTbtq4{WyZ0Qy0d1~G}8_=a@@J0+sA@XX=B+miG$H=m)hrUZ20f5ebJr2 z;r#5pxXhuwPubcqj)QiXgsxVBO8`H5uu@o;fP}S*xd(R{kEN2~ownQC=caYXd7xje ztwRe++xQ?IC>IJM0T|g95c)d(ae~~JcL}9wL-B8QRSv|k#aBj@&OTe4ta`iGh^(x5 zbfNj02oFzj-stp;1lXajBQo1^3i&leHnbXmWI}OUa0Fdqa~yUnUd@x5Y00hW|o2=Up zpo;ZTDLs7Xbsij$r)!M9J+cCW6{h)@Ymi=zYoA z5+qi6w2{{;*|mp^GB=|2eQ<_drUlsMJm1<@)m_Q5Ni&xbRSqVu-TfYF%4}Co{bBfJ z6+MX;lr6ra8Eb{4DU$opgcPw`kCi6+UgDbAS2AV`$LE^6y6RYWmNF?$} z+L(sL)Hd*RCv=!a=si<`#f9IIu;DyAS2(>8^S(SjNs=MMEU(=jy{YZmV@m2Q;>E)u zAH7Q zbE{?*uU<$c`DZKA31#;@sfv|-YYi}|`PAWKV`Ez9l8uLFvMYC5Wc{*2a$szBDR8@{ zCu04)yjRoH?r;|5&-gLQFtkey7nB`-zZNwaX54LR>)!%{OR#8gRGSU&V`ptS=%3nu zZ|HOGz)rNVY~Lsl1ujVzu19F@HOw5W;AHxl(2MRH4EtH0~=Nxcxl*hrI@06NV9xZYh|=irG4bV z4U=c$BvrN)iTDqM*w{GQC=c|kwwEsLJ*^#jAW6oMl*1!w^ zMO`><#9r!n!yU*?_wn7FG5;gA^MTnqulQ_ypq0z=TQQ@U2r6xeX9}!9(~r>bx z6*=<+r~j6hhU3x==k$nm^tJYRxN6hTxrT;DQnG{8w;Edsj(6JzY-D+hH*L3g|G*fe zQo>3|OqfVPWry6*-3c0WUP34EJS5TUhl~mpFNA~og|8K~CB5Npmg%u4p}1tB4LEhH zyQGl%>L7tzu#z2Gc!yql|zVij4AmT8lj zXofh{k2XbKG1hD@+^Q(owgNFe&Jwt<{IvP&0*m`w>V5~Ra8|;%ne{kp*7k+LY3WEt z8I9PKuCVtnJ8YYJJ7(%|fvgPjF&@x|Bnq68va!KsAh#ja5vpMI>=CLP&fZ>SZMRkF zv1gIsi08KaUCd}}acC;=EdAzVp0)K(Vd^xEVUKBnh}{*stB{V1QqnFTWQQHRiqXlU z(v&XiHtnT&(Okt2m!;^QcIw_lj}Z`;#hJ(Xhu&=xh zOS}_i|3L4Mxjnd`^pWj_&6s=!dgezi_JP630jXp}nS}la7Xs?ciP}TRlC0ssNVFa-|-DOg&Gn%UHbLbz2O|}0t>Z}Qvh@* zu1N6h%XQf2464MWuUHs(=azq~3!jt73e z+Yu%?dmcSoEBwb5LV9IFTiZlBgqRQc{q6_7XC7sEYoA_{`}Y~DoFLCOGs>%s|9tuvolsq3OW z%WY&gKY!JpPe0SZ5hyGBC_{FRm+RM~j}Gn%>#dB5wD-=`XM0KRgV=PWN&m&r;AiT zK%l*Ih46fzhVk=&mHPAtJE;{pCW z({}#!2W2`X@{r$O4~U$eD8QM-D}51voB=)#V4RPe2Wc+#On1z8Yns~SmElqI2#DYB$mxUu;mZNHVk(M##uqQRn5 zSqO%;?5dB)Ec9CIK60+jPy)Wz-AW)cfXJ%oV1R>3xJgslN8;R5?6fQ~>RWFSj~_aA zMWY#QMsoTWS-sGNH{-}Tvo)vX+#PPZW{kccI2*S(z>VWxvS)f^57so}c|fn5UZ|{< z_KS-BlvyBmAhgTR>S5Mh&>|+t{rXa7heu)&P9UhxUWXeeMppCao$+K|_8#IRyZ2X{ zDIaCnGC-1!Kb!Uj_)>;KBdw+xH)Xkib;9G6m`I#FZXBr~6G{@2ox;yk&9wa^E*Oct zE2lSqUJR@}tm}E@*nZt)Y>TAiY=p1n#@!OlDv4x6m<``vi2jm6TQ#?sbwDKGgMx`b z`rjYj;YGu``J5WDs`~Kw3pl)J-;jV7yEmFwds_+QhG-w?gToxakJ62K%Ab^LHEWx4 z#txZd1^~v2)I2*x(d+lm!;YwTSCeW|0Y-Kcc zS8P1`*!c7Cj$&%sR$BD2i#lA&nhIRDDO|# zGNZ;Ym6yYr*|PgnCXhr#%L%J4M0_R$eRycBiE`Utec#4l8GSd$Y=}!qV1U7WQ5@A# znG$tmvxPFM>MXsQxp7N6(vjcTj_3URf#>DBvvVZss*q*>BQa4rGrQkDczb432zK>&9&r&DI6fW;#J}EaH5r zVKVYammFjF{FX44fagczDoy*Qh0?%dlS>vQePZOHcUb$TkKW2YGA)_0Vv(kA=c{%0G_e%9(KxqG#xYB8rPFXNg{D`@# zoV?m|%$7h_9NgG}pz{GEtw$XA!-O|n0dMWZLx*M-yqcLj;iRM~4iCfI(%bJJvC7Js zSuKFP5O0U+_bYoYGQU{eQ;6pbp}VL!3dIP&TC*)G zd`LTBMT%j!P`Wp=tiZFcHcccc$0nQ*;Jad&N4K|`@jov82Dgl4gr}JGlmr6m#^;rxC286qYF+c$`Md*vwx3Es2lK9G8+?t3cKIk0WUV}=PE|sLnk!( zj|w$M1^Q5;paWp&p+nouA&fF*?1@*^538N zrogj}0kt|qcH$e3Mi?&*cw_&4$S-?-bnxGd{Kr}+gz-Na`A=(|)bszT-~a5$31{d( z%l@B>a?;uR&)53T`#tGqH~iVy!KG9wr#QZ(_Xuibx(LNS1-uK2T^8XN|rxEoSWjPd~bF!h8^AgKNL(_LmYXO(*kIvg9a8b88dN3_wq zjy*{6!2dlyFlsLquei+-Zo0D>-S;nEBoHO>{U^2a<9ZwoAuu$)rkwKhnHpUFyy=(D z_q%u40-c{+^gdp@%fA5`zq;D1t1x_M?}S zbjjYG^4g(h<=`hPJ-7AMnlsLfz3fBCgj!dtfZXTObfCyfB1w4u$eJKU~~R@klB!@=pV!FQy14=T2-KCvuTOvip&O<(#tF2_H- zvbA;&3%5ze>+|;ypIkc0ZTeqvt_%e@etjVpC%}!9fEnp8Ht3b}^1iA8fOPSkOJ|G< z6mYO4S4*zg+T8pGsrbHOv&ICh0=n`(vF9sGJ;z=~mSHVY(hN1qWd(0T68>-JM#PRpSHo zfjvs6_zI$>O!n5-{v-Q1xv3Yb1y|dHY7<2K$7*h9$y2htkn^SVPy_a;F&(U*J!C9# zbs2Mnp+Mj2>Ee`@qGC(KQeeC9vTKM&%Gg?X_L?4SMca*KA5K9GK2COjfg_a-LFFhD z=zv3|$Lu7Ff6>8#$ja)wiliZ96fmjscy6xamMeLQu|%m^4;Z@d2_P!w(mzOi-*L4% zP{?9GIe_4OHfCt;E+1}7~ zU%1(k*6)Fi8hHh5+2tHwF44`{lB#t*!~rSkLZL1Nf-)v?JDIziRV=WLxVemyVTTn> z)bjj%eoJQdr;^=%)Kg0+QFqwLf$V<2xvr+KxoM?+O&1*qt!kPZt8nwq8#9ik^Ot)m zz38^){YWW_`2-z?S-MIq4L8^`G_fE-+_Ba==v^PNrNB!AlrLK=W|(qa>KmMp_otOq zRW@pO&9oy^`gOQh|H=FP5Qzvpvd}h$h-jxT=T{03_q%77mV!#V;r^sn`}%IEbVw~h zM*JN5T?KddNa?NX%vv`=#pumX3!8jq-z*1;#9XX*0TI0K0|>>I>WIA4B9EK^f$_>% z&C2I3T@6ZVcUOHBqM{_hY$wlXg+;gYsr^Pv4Bz<6IROBLjSPTr^NVwxnoS&tb^fN< zn8?Tkj7sm^8CBKR9F0P2o5B2r@4Km`CEB|O6->E{^)g7fr&x_P(rqL7F{&!vIm(Uz zPgS#J)QjT>pH3$!S%B4w>!i<1^-` z-0EllLeT}+rDT;}X7)lx6lAA;2IXS3VV+)?k!~=Q@8RCb@37QINO|}*bu1wJaHAdC z{N+l93R2Y$?aN*9L7m7EZJ|BiU(VQJ(}A!W8d`}qIoz*X9oiC}%f?vS{98E{6(weC zGjLe*{mQ)WKHGCXq~lw%?xtkLPDWZgqwu#C`Z=lQG#r(dD6~u`eNhk>;x}9K8XLdi z&ZAb>#e4(Qcu?)TidAH9fw^jPr|J;xb`1-R2R|*VjQ9KVaa2Z5_(Hi1M2tu$8G_y$ zoUXjgeXu;$j#I#$HTw!)-(NAazcyCLx9BHE;fy#C{Q^Vp5w%!5QFQmY|o<-~OmR0ZNrGt<| z9hkxB9CeW2p%Qs%Q4zNarL!U04G!{H+8Zl}?Tf8M$AOAUuvdsyZoGrt?tsJiGUS;A z)X;ZWD0ad>`+Mxk*!1bT@iTku@nv{itYxW~Pu|Flk{v4jUU6hFAqU@3QOXz&d><}U zVmlW(cfD%L3kBzcr^V_+$MUE%AXmx+hTW&k#|c`UjNIm17{?)t6@m`Y&lFL+(YDl68=H+Boe zveTwJ(VVQTmr1!TvjTJ3W%&=b-D8!*0z>-wmq#COJnjpM7~57XkWsZuW-P^rIMXV3 z_E-)SB2~?y$^`tfotq2pxoIxTE+yKm?os-vP%9j_(a$*JZF8gqse753-DoC4DtVtO zq9Am9;@Jh#ULw-HqHi{hDk2a-xX#^2Zl-n?_mCYtGv$N<<$cgn0^QBGYGq*kdmm$) zkwZg7)Q3g^?pdKR-48i$A9HxTxR*OaQ@8$qdtj+$Zi51&|&Kt1;@tTUpI9YmG#EDqt|Li5@)t-jK^UHIo52;XDo51IGjT?Rlvz0?aNYQ=2g3 zPGuESUmY I(tGy50DWq!=>Px# diff --git a/images/add-server-cluster.png b/images/add-server-cluster.png deleted file mode 100644 index 6fc9ca78d1aabf08c2ff45fca319cf7d780ad6bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59401 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

d?$sefCI--i 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 Jc9 diff --git a/images/server-cluster-add-per-vnet-vpc.png b/images/server-cluster-add-per-vnet-vpc.png new file mode 100644 index 0000000000000000000000000000000000000000..e8201830c42bcb44e0d071eeefbfb10c2f9a72d9 GIT binary patch literal 80460 zcmeFZbyQSc{5MKV2r4O!NJvO`BO*O?w^BoQHwpq0(%m85oeI+34N43RQbThO&+iG0 z8|%I6UH6~sTFA`VXP?;L9iRAa0_8wr=%@s!FfcIa65=lvU|^-^2Y23~|Xf~$?3@lAL=f-pIsD~Ob*{bp= z5@hM^kCFRB>5G?w$jN22hqK@Nn!y@8e~*Y3{8~hGo-Ek6oB`KdZQ-5@`7po#V70Zb5qCWWLQ4vaXSQBd1uqX~1F4cnZZH!Q6;f{Bn{fA>S?7cYEa zURPZ2o$NAr=UhGy&eOQLzVTugWnlD!hr#x>Cg=2v4BfXeXk2^W9uJd75MJx)m}3&; z_D}`)DLOfQ^7j>dPu{PAqaQkCAur!DKbk;*ku|FL+6@yf6VCNKIP$~TlZ&V3&sR|2 zB16cwQ&O6JgRObLP>F{kf6F^RYHt~nxYq1{sV>98tKPxt7SGXGLnac{F>oaqw(O

C8u?DY*(d+!tD6SvJEA$&9}ynBP?-n_|z{qBKYEA)0OaW)l6A8`i~3>jv5 zU>W&u^TwQB!KEsnrFUBA6ng;PX6AGl|jk~rDHq(n?IU7}0MrGbb{Fi;~`Q6`!bf2OTV*z(BIIIor$JwdvrSK*G zrOYMkC55n$p1AcB1gzS(S}#z(!KC|HCo@UMQP5(B1X{KuzecrzFY}#}ZWMPHcNZc5 zcqBfMB^TjcnW7}j^P*mwfWm`OEyEwYFO;`KubMmOV{T)Ln!)=~x>_1F^%qKy0ESeK?31o}Ji$r%qXQ&+#>cd>~&mE6Bj>QN}&{;#|Ld-+>3GmoE z*60SEk_Y2;*>2V^?Hg>aW;o5S78z#QA6vinoNNxNEqoMDpjoWbSL+t=Uq z%SW;%R;pt~Pr@y*xtIyehB8Z0pqc@xn3oD!kWTj{NJ$h71d(iVNqKbLlu zo0LDURI0jP-dAH@;SM&`!!fR!&!62asPc12IELMVC8SJ*Npw%dNSv%TswSE>ot<^W z=GAR*aNKb$+3w$QIdR+G|y7zVgh`+>ywE#ahxj-)1wHZd7Dlb3Hbh zc|d1iD@m5y%ihMm+n#&#Ah+P1S^k#rh#g6BrHNUOE!A& zjV}M9!6Mb7jo`f&WzXd6$2USZJJ(nA&v66By9gdwqpD$9KM5y#OrnN!O3_6xPBd1A ztb<)@(wPwujE;wfSA*!Mr?MZqB=)4^37v>1%2$8?w<-Yw=oKiM#1q6IbX^iprc3R& zsxKwlg|Z~FD9Y(11!x8GnKwNuo$SGtY#p>lGJREQA!@?rZbS?Ww8adTuLB1olBN8Y ziNB*Q?=i6JBvc&ru!Ib*OH(XLAXUs& zfh0mlX^&_J@{7mo3pfi&wA$1vte#hL*jP;RTsa_a z`A=RHSxpJeh1Y+Zblhvzt+P`Fr(V88>5Ux$>%7&}-)=cfr_0EJa zLXr}0VSf2B)T*`W(3&5!SvzGr9@Ow4M~7O+q|>hlvFD2Qx%sjMNetW~e2Ug>V|N0mw^rSFuuZtJ!?-qi6@ECOun(UhshdoZpXIB+fwThD(C0k}3`+sPd zg^3IX>JoeM4{uG)y3TL7UZ6t=i9OIR2Ih`xU3O!jMN&2DH6`=v?zwxGEAwtwKdwgH z=G>k_M|WFX!;kfB^{zzv+A_pY!+J=~1d6Zvk7{u9GLMeZpn8Lm`_%9vN$Gek#+TPF zwM#Us;4{`_+h*|OJ9=M;rTmQPE_Kh^iYpjvY#pP0VP|&U8O-F!kpst5o z(`v|h;(5)9RRh%vDv}l{FV3^(b-(if|FEO5`P2+S{=~lP4;NZLz8*<+PPUdjXvy}v zpn4rVJ*oin?mia{iudF(jNI!-Mb_{z-y`s~`7MU}YFgQRZrWLA+-4rGDlDQ1wY$RP z7|2t8@lSzy_Jqjy6j>H#cDlQx5GiG1OA*(=N1RH;3__ObBcrx2n>c*nwQ-S3(v^SR ze}g7rfT-t{)q4)$R~17w2_qR97+T;nG7M}07zP3O1PlBS06zfCjqr!L2mHnaeqN@* z{ZopNn+E^SXLz{V6NME;BqV^}if?QU4K3|Vtn6L0JphCZI|)`&vsaUm=6Pdf!Juzo z_1ciZ*~0p^3Jjk!5Ae~#&|aU+*}~k?j>nmw{I4^3fX}yw8Oh21I>p|MpIl8wj!eYL z){u;Yfr){MTmY4fjEv9Lz=%iT<*UD|1K;?`P3-Nhc^Da;oSYb(SQ)HrjTxD_xw#pc zSQuGYo&#q*w{x+y*LQwyY4`MhF7nTHUK-lHu?1V(gRLydZm+BV+RDM6pPc;mM*sf% zpXW4m2LE>_OS`{c3wS}s+Y&}*1}4UTuMJe?yFJPy2X;0zSAPk%0GbE5hX5xh6W?Fw z|5ozf9q-gs`>!T5GdJ_ys&|Tht*UHiXe(l60o>DG;J?uPUHNX|-xc{7Z(sdRQ~Xam z|8*2-XaQ6{#(#q*fVwWNFa-l61S9cMSjic7d;Xp~w&+Fc4{H7_IgtlV(1l=BxFBCL z^4EJijE-L!9NUYh%F@V#N)Y9Pe94Tl z8$wcDoQ)zAATvg{R&jt`@>=H|G(1T?fAdi5T}sNk71;O41s}x-?z5tU}0goEm;HvbQJoV z)1N$v-;Ipq85p>Ll7?%$IZBys+T_VKH!2k?4NtEemq@`1Z|s zhUntyubt347L_8dJu9uXm3~lw+F^t!>C};4e_Yc!V_5k>`=8t=le#hFjIdwr6Ru(@14=B}X41Ni$`3x#siD z+6=_jfv0gXkOAGLh33v!hq&3zDzj{e3q-sVV<+2un#ECE7ZOUma&A@}kx5msx#y+g zcFD(Q;~igN)a!~BSAX6^w~|lC5Uas%COOSwn57vzV0$y~6#vcR5k~>-@cpyQ-v%@c zTngsU2O4zg=elP#CJ$*nh8^mQjE+s~P^H1V#!1}lZoBThQ2CM+NOzEOfx-0`QI?f* zVaID4DAxE{TJzN+wA`gvC6LLE%3)({*rP&wKqC2wmzc+Ws`%iTn}1*;!-W-}Z6A}c z-DYub@tANWSE8jWl$bYLtFC+`UleV_%SLySyM_InA3RYR_%<%xE;1Jssl)F!C0*!o z0qqrm&Oa3pAn@mvH@f5=MOq7r=CRa+9@_2UI!?&8B}i^ zn{qqvhhMTAhtjLpYhlC*=^7X)x=Lr(oLDW<)CIdfT=-QJbFK=glPI3}F?YhtZfo)pnO2$aJQaXi0hQnfk z{J|V=pUSL}Kb7f_*;e(=Nb7y9LbY_?_4e(A?n;|Oqde8z(9tAmPCMaf2JIOVUTO={ zkkD$_`kKWHp_83OYHgkrlC05=ht3B6^KV zFPBoVWR#fpQgFd%#Rja+WJ|Dar^IT>7=!*L1Qvq`xwr*DF0a zZkD^dd(@NjbBr_o@pn5%wS?kHmk1J8EN5OyYKNry-I4?x`@K@$)n!@1*dJKU6@ol1 zO7ry&S$^E998|R#vZbRLvW$;~8?8F=dE zQWpnv{5FlW+QET3qOj6T4Kd#(Ik<3d-u5Q()B&HdPx|m~<{k-&42+u1TA0$fp{z;f z(?K{HBHNY4ifmJv(_El#3F2JK^T`f$!XC4yx|P$iW)sDc=!Bd-sD~>8=oA~wq+Tme z2v?>p%l+*iYg)0^oql{Orrp1;1!`_?=2-4U0gbZ?)1trTrkvB#JT#IqECbuEulnt5 zz6*|>qNhNgS;?`OuLEW&BZ9b*ozUc#o50qD;@&-ldV3nTB;CG!VNzXEuzs;@MLS9J z&4ToU=*7wS4WFrBXLT4j<99+Seu~3XZzLgcBkB51a~`Q^QmkeXk&za9;;Fkivk&6* z-HSAktkVkTnUowHDn^%QvF8W^b~n0@r^jTL;!8EL2!MI?=wz zf<{0wVm4#Ew%Joi#AC09%cyBoK1Pt(S1cK?EL9;uN%{3y2VSp@v{u&h(j~&9{2Lc* zOVoh&c(*jYmqbhO%K*_F#xsxPjadl)&j<rCdjv$$DDsFofM(BDf~=Y^ z7RU-KBZJJCI%(3=(~WB9->vcCb~)M+J*Sk6DlMs5u=nftEw`HU1c%cU028hq3VUQ0 zqeeL}A=Fs4*f-P#YYU84kCLhekgGh?T@V1vK|*X>IC6LGS@9c;`1u9DOBgH1l*|l# z7736hW_6qH&Y0HciElt6oGiXjWh2~%=u%4oYwDGGvg?2u(1Ax8N`8Zlaz}_-J~YXf zbL}2Uwp6hBio-;?RYc93;muw7%GrB}O{+ffuq_kryyg7uYPpX4GP6x?VTH^-(MO{2Z@MMAi>aqYRq|dJn6t@tp*=veyP_bH z3U}&5SS94J04=^ufF?+crE6=lR$ArtC*&LWQ%w{p&Q5Rx?@YA5l8Dw%vFZlhsfaAj zT`aDySnI1w_3^~mkcvYY01u-qCTCzZHh3WserOBM)TxRr*(&{dvNq#C@6w(I6DOwc-< z?wX*Tz52ZwZ-)C*GfP{CJ)FbU@HXvDBvv$}GSq^8zGPRsLA=h^aL2k~+78m4!tX}O zL)C%Qw%`oWJ~U{BcT}*NFLFOa-k2-%>&G}ZJ|>W06M5*MLyIoGv9jb~IzDEqj@yqk z`XNv7Cc%&-Y-(DWQ*g$S-O*M!b!>7<`lY~bBFe#8?6Ns-H0Vq5gQ7wtN>7&@F zGE0uLl42cVGc#+7@7!wr?05EhohViH_vszO=WYAT>3WL*^cU0AC)vCf)IbYWT3Sk` z_#cBOqKqgv=3e4QQ-u&pyvM)haJq)8E0wk49X^Q`K?=tBoT%@g0p2k1eW@*D-5K8| zPQ5%(96HZD&q!=^GUNg6!qfG5{ziZ>(Wn5a$g=)gV{#P1VYx~bJzBQkx?Od_S<1c7 zjd&?1GHuaokZH11uqal2SehpJf$8G))kyZ6PPXxZ${n_lWOuuoZiDmd+|;5(r1m6W zr6Z}|)49MFHcq}UtLhSu9G?)&kxr%>j2DUl-S_ewJT$0_f3`paYxH<|N$TFz(&Ulg zb)}v3Mw0%y`cX@5Ns-Ez``u%8)kgjC#_;O00z8)=(36)BgMRBh3r`+mKYkYbfPm~g zL46oT`J&pQyfAXOS%9i-V+`RX{&-iX1JAcwft@0SuR)H*c^?u0-1XsP)ZwCkf%vw;_t!a;zdAZ<8p8e zw~hX7=mWDnH%`}Rk|MW7lIx#Jkqsz?tZC_ptDpS7ARs#{c`rqYxqyj&CnrK=bg;gP z>Kmo#e<*9sghR;X>ycXi(;d|T3fm(YVDYCi5*#wFRe2o(v0v!&?bj|z?9eq5YKqAIg^GfmS0~&9?b%ND9ID6e1vl471xf{!j)R zhWaq+;2C4cZ)^;>$^Qo-JQWiaHLObhV-S&@rCX^5p8Tlo)X3HU)4L#)Kh#sx#pN=8 z@uyH00-+o{AL02!xP)+TL)og2^@lQV0Y)Pl5yu}#qY5w@ zjXl7`e;9FOXt$$rsTAc8Wvvyrqj5`W>rW$29T^ynZ~-!ZDoeQ?jq17@e;kc3S_OkG zfC&27!{z1WMTCdzc>zdq)ME8H9I~@U>*AoUudg4)vuEP&9%oP-S+`MvJ3&KyvV@fy z?%YU*(a!vE-_a*33Og_~6jzt@5h*Dt%06}V)=nx7WX}Vxdre@B%qIVgQPtVG_Vnz` zWl_|+(n>mw?^04T`GkOgFa@K$RyFMl5bTFso|m;0l#~+E z=7sD0d9bvocb){X#340Q0-gb&1j>csyqDv}L; z&TDUfDFFfr?C>3JNYocGNtv4FuRlQiLtjcWL0jSGV!te-Uil_Q8o9o{&Zb)H*@lGg zxOWv16%}RVA>1_FI(3PNW;ihC@{WXp?vvRXm#C&tOJqEvd9t46E1!iqopB$(d#kDJ zW`-A`#1V13*Q0tC`ty->O&FWMjEN*|xNBqEx=zKg-nTa%jGXh&A=yjppe75VhF;rYM z=Q8^oT)leKA5)~c+QyvPT|D2A?f&vD5x4D2Uq3&?_3+Olb#Ly?_7!s58O|KxA4G5m zu+nJOSg^uwJO(t9?szu4ndV?z#*a7!*VPu2#oCGt^=V-UNJu$(xv-5;!Rwa*?SAfH zIw@HZ!g;p~0PE`lo%O5Fc>+yt-BEd?2K_TtBen9G_i@^*PEia_k%1i-RgsL3Pa2m&gFY5x zJ#~!@Hz7^hSxqg$q0Z${cZ|VhH(P!rS5+2&;>?loa-?v1$k=>|4 zj6*Dg=95GjCVD|XMX&ypr&!H5pAnMJ<654gi^4lT)%DO$aksBMJw5IEm?>sh)r~xA zrcv$w&Yly>^-GsZJ4Ie`QA@>)V$jw&*LMH-f$+v6N5tQgbDF?ztv}MP-XYSgq)rlp zRDfJCew!-SBqjhU(de38)AfW)*4Ni}C6hU|tA;8uOA0bD(riI^b{#-U*<&CK9_6Fst5yWY0AO489vXT;)}S8-szj1`9aDKg!C#33W~Va>E7yV&An#EmIN|~SE~?R zs$R;qy)IF_laGMB*kuTRZ_0zia>l%Xl&uX%^{PSxuG_oseVD^fJ`0 z%+tAq2yaNHjebeE>_-sM{(QNp~V33*2|iB=L9jys^pVVKeDs|&*f{QS&#avp>sex_{RsOOq0FJ8RZ zZXPHwdIcWV=l@J8Demsxi2ogr@j_aY2hv{>nLD*}PB*sQ&})!pQX1qdB#%7=qf`*{ zT$;%^aO{)Ld`gCq!ts_{da_wJH{`@(wkJ!Mde-e_%Y~E-S&hEmIVK6ou98iYsY*0b zR8P$FWsO);v|iQX2(*i%h4-Sd0OR9WHvT7#cn$nq|}lRunz0iuy19u3^l^MB-Vc09?lA5m$yX(DIZQwcT-O~|2&%u5(6lox3}cXcNi z)?R9E@eoZ+2nkB<@G9O%VpWQoqwSuu3GdWx<*y#0!oIr9f?UN_N#l0oE z5GdCqXr$S7hbMA+Txq7#6dbUhW2L(%hR#LGF1ww?wV||T@ILbv-cy-Ea3!sIuqPzl*_Z&SmG6W`#dtHRqj0?j;N-lW-GDuFF?AN`e_g04V}s- z6G)M*Rh#+*S?s_M$4TNE?gADM2e=lEZ{&wUzB5!?;FP)&PZr@^n?>pHZx0rnW=b2? zR7<(W5rSnALLF{yO_lL{Wrty0;^OtFqe;0Dt&*54D!+W&Y)KG%AUo)zr9~}A=`UnZ zZX4m?ITw!6+B*X0ZpvIkQ7{t?CHL1a8%ey1xmT944koD>nmsbZfhkp)0-e%5g@>ve zb8H0n6S+3oAQ@3l!~H4giZO@taFivU0JimzN-`yleSZ(*SyQ z+g4?JqQo@&lv^==Xu-5Pf!_7{=wN^89DXihZchx&8^5pTS^XrClx0(^fyOgO9ok9M zns-N&X!Mn#ZZhOq*JVeHO)Bhfl5*t9`qLh;ex|HG6qRy6z z?osAddX>h608Fsbhhx0S?Je0TN`^q!1RMIXpCj~Q?93P`eXZKfXvUl3o_v)+eZCPc zn5=gx$eOh~&bi2;uJZW=7NNL@8ZSTYNofOgn|WHDZfEqe`QjTjx2LUIGDcZ4-!W%A zw^=p1G#Ex5;#Ocz!jvWoN#Sv2n;F2${`{K1Mcr;~=1@jjGJ?kF@!k|;=jv&<>x?G^ zh``X|qD4#`Qcv>@I0HpsvTD-dAj;(z>-t#-oXbFx>+-mKZkdVL;l}_{=?a~IMTgC) z<1A)azj4WMgWE-S#B;^Gd-h8%dW#iqZ#*ggcE@C4+*8m0KR&5#J7$JfJgy!^^Li z`}WgmGw^A!5gLWlTt=x**b?Jaq2DZbA;q$}V};p(L@v<~DRMqn)4+HyVei_*=_WNf zY;yymgWWGW2GQdv)YVOKKGLVrhf~^+g2y@?mY7&1xJu!_*S}`#1tZ)N%n(%u=um>! zm%-re+I1|ZfZU-b+<@iRQSAnnPN4K1}mL`3YdsF^c>AKDc` z98LARxagIhm>l@@tnTKU*iKU+R-@qg($%iA+N+;gE6^$eKTrZ^VzU9QfdlS*th)z? z?!D1{m-<^gz#UpLXT8JDEf6J8x7X_9x0dIMLop^TnW8;>&I3_?1zTvs+I_a$E$}O?J@X(BsifZOf&SHlf!U)Y)T_elm4$(yeWLN|KrEUtd*6DHP<>hgrIWo zg7`LnQQ-~^bKSocT+*N!3y}be`_FOS_XOH#;RfFp z5s~5{CMLPfk4_3Ij+p!Ta4Zlekllw zQP3sjL3Q~yCRac=Q$f$GAk zdJBC<*{^K&tymLBHlS!7J!etSC%*gI&w*o&7l+H+XmVtfl%g4#nUwTw?E)PFt*KL% zum^U}5DJA9Y|8;CEG})H^fn+MI5m}&<-c}ACRfWEwVA#F`t zxrEX4@u3h|h&R$Z3%%3Y_Y08(X&L`^9N+@pPH0S!C?_w^BoA0rAf}Sy;(>5{5J05P(<@y(ES^4fFRK$|V5;5>Bpcq}eZX@NE$OpH-wOhdWm)12{QRvaYmr zVOCDg+NWYS%48yqur`X}U0V8IxHh(fk2?xzHD@_FJUkrI>17tcPeVhan$z9gU6(Iw zh;X2(H@enu+ne0B5>g`u`LxkM>MUMuvG_5wem6RlB&50%u!>49Ok;i(;GT`Z851SV zG#UoqZ-9E@UtQnht{*CCCSh#3TGy!YsIF{&T${yuhoIX8U`m`1;Sq@1D_Yz z`+}oy22)$)OeYGTY)xFziG`6wM^H+ofFt8~fh-j_@NlDg&g?wr_Cl5BbsV>1b==Z) zZfY3&1$*r7e0{wtfd0bJOmY@|MT1v;-2A)6Qr)Qz@fae|TvPXWiUA|!w6~<(xtoOs z>??(Lw7WW!gZ8F{h`P#bGGd3{ag53kjHxeNPw<9-} zTeW8%Dp;wmpz(yIJYT6$PFSPbTz}%L1O!B^y;JHfB#g4|#K%W3y*Xa=lz65ly6zA! zi~C4c@P<6H->F{oFlVG(6z%M?z$RjogL52MQ}H>kH51P!Z@xE|+bmPLxVKl78_sgz z^O>YYJ(GVSaBW{`!OG1oIuW;B`1UQEI&C#J6Eodf!2)#gnSlE$?V!e6*QF)+qvgb25^!xJjelVS_$_|1lmO zbl&6)XgWHaXF(Xeda?3T{n1E_zw z0A`lzAc-vqYB{p^J=lDr8-taCreb7qZ1|fi#Bt9OI{Hlt1RkxAKE1e*IyCC1m_q1! zhK!xnDvTwq-DFe*=(N+{+|T(j&{1p*Wp|i`DT#w7Yvti5!R)5arqk-`nXV4T@-IY0 zvJ$#c>G4S{C*Qq|DxH3h(ivK}S<5(9s6KjJEge5%%f>TvoPvmeDk4;2TydV*YzEyW z5}Yn)8c2OZeutq5UEhk54(mhu>J663JI-6y&B-^S67M&h8;oTw*hRt!I6m$1Y^Ajd z<*iPrPoNw2TMNz01|QDs8{C`k>=g6uFQwdRHC8cID)}~}RBsOs%sJdS&`Y;QTpQ3N z`%FbB2Z>KO+QPobRDXMjM_&$`U0aK_xW!`FQww5icVG1I7+r`-kYCqnROPuh5XJZqk~Q1RKXM6VdzFvo9`jI<%gBrTh5|)kfhId#&8JAFdn^@ zNx-+dLDuZ#by1@Oh)?Vh9y{5Zip(p*T1uRh#4R<%S{^4KlVW?A5*CUL+mz z+Z>zj{3d0M__~Qo6TMAL+*<9_{G28(+ERVYEtWB?d-`ReQ-^+oX@oUSF za#;(JxE+9pz3?Y7ZXI&N(Y5EcDe;G|f-xXN5(#w5h3hkbf)bS3io|*ok1=azwf4@I z@zJBztXIdTEQ8V?JP*+)rLJ5Z4A%;|PiUfeY;MLDa~o8R@qJ#?3_*PbPU>H^+FND z#TuuMQ%LgA<$&8Rz~bDr@>TNavn8XYThR6%J#&O3NF!iNYiWE#k^pG_Qyz_45ARIQ zb(md>Yk&+sR;)eShv#5gOa%E5cTDw2Olnm!dSw+ah25_Dikinb0c0-#r2G|YlagMCo2lb5H1ES*EEkS- zk93Bf4Y?$4l&cKoUTr);^vNJkgQX>g^IYG5gwJEZgs&*N>i3QB4uE^62b+5Ow!Lpn zVW38F+RFceGEr<^m96cp^63lVRzk#+y+y{4R26{$K*dM91vhEX_auzuAn>3<)`u+hPlb zfvbBoegb^0^|It>F>c^R@h;LfBK2P{9Sno|JDq($yUBIYy8vme28v6Mp#Vc ze-7NeINwtMUb7Zg{+@#Y80qk^H$-FUKocclFM&PWaUMR?f=!uFt-U6?>w(H5?^g=Q zei|_^lL@NJ|)qlc| z{ujgtQrZd^OND{_V#k@|HL+av*&$L?xCJWfJ-@cq-FqZ4nZv_ikOyF^tj6#LNW8{? zmkf?&h}3R?W`Wy){Y!$zJ*knVY^9>C+-8)DMpxhk zCMM>scX!0o5>RQfFvr1rSfb8iyujzO`J;3D!mu}1YMfR%>-ErKE3=Hth4nOC3Q3duhjqR%U7i6;Y4mST$RhL_+ag$LvM^JqFl_eJ}SF?o#|laG*- z=|^|_Ebv5t!vQRbn~{S8vHSbhE{Dgel7_=+Oiho7LF&D}cJv1ub zx&VKt*qGnCBtpz(BRgJhPqk2qVYtD=p^Vk$kpn=3)=rtXkUU=P`WFF~jY*nYY(7#c zu`Dg?^f}|}!L4G|HJmx}N#CRH^}Zeo8d@~8|H^)8N%+k0KnV*51lTkV(efoNG^!YN zTAuMN%9|5;&!hXAsy9=;ZWH^Wlr^E00e5l$MlTE_qqm8ZZP(L zAmH9qcG>REHQ2_}l>l}q%&$Qp)bsU@A7O4_Xz+CucoMfC0v;p>ZsW@|>5UPVQZK<< zQV@@^JlZ;z`=%wTBZRQ$cv6QlAdDy)?^V<5fQl3+kP`|zI`i~2^F%#bSvygp#&DbW2Z&A)1VH(XNzt#xqbb7vo#E|@G&)~t6DJZ zn)Y@Z%-5pKvenhf4y`u__x6bB1 zT$`0fPkxXekHVL{m>B>7lC8?%Lfw`W1Vls$gYkTYI$O$yTTd^m0Y8VW)gZ4VDpm|M)n1tN-d?gswz_8cWHR5wMePEmL0bdAmeQ zJ;%GZ{*p>#41|TYMfRE|^DN8UIc%ewPOOD{KXOx}If^tS3u5|Lf$a6U6N5)SUvP$8 zrq~XvH4Mh@%Nk7X&MN?Z_wcs*Ppe@PF`NrX43$Ry1(L2~-UrtWMEvU^_>oxyX^Vw& zWwt{J*1U2$n;$>Qt!_Ml?2(VU)UsuQqq&1j)5=fE%_fVt9gTV6bSUKp5p;N+w#iaG zeq`exyS|<(&=D#`0fC396*|6l)_L+cnKLTOka1Q3X&*`7sFK+{#?S^Owp5-Qob@QP zd_RjdxO}_EQrIhb%R>U(1h3}M%FWM$Mlo9Sm#Hq2$J2{{(gC^L5P&?>5tIaD;IBUL zPAA|1;d;K|^h5Mu?tO07%RoK#N@s~`-vs6iN_O_I_Fc=`f;+P{6|zUY)v&Z=ONMYF zNDo--gmxk~y!z~uU4VTgFZa@Ka{z{V?=^VZKh{M&#O|Am`6?AF5mc9p6koTP;&zUL z?+DpB=g;3H2HQD!7`4s0}AlhJIp&E9%U5a)W_U(-MLE_s{CuNeI& zFHfipuS?NdlDB>tmu{~_>&hCwE0Eq@LH~?G~NU)^iNuptMnFYx*Unm!)y4({B3=J$B$Led+$g!v4&ElZGP`u~k`*7V&m=sHBhcR>UMqH)% zTyqXyQ8h8}(gXE71sBpC6o!nA@59&6tz4%-iS;(0cDW^)j584>_GwRa1y%;5dc6`y zg4dNmjT`hnBU7t=c^C=*aQ6hL4m8DQyvrBKt{~eJO-ILilR$|@eMLSf$V=XKr5@;A zgO)VfRDk}{f<>4j_dYSpl>LZclvpa!6CN$bXV2s;8&;`kEZ}N2W~waSP%DOo1V>9r z`@dEZg~Sq^^=#Sh!9S3iE;szjmnp=+3d`)F1`8l_3ILfu-)n^WoSt3GexQL<6y3o3 zu5||wJ>&Wdnk!;0t$eR_JK6p?*mBy_$6EDOVDoya3?WacEQ2`I#&eLQI$Q8M2}~uO zN-fKO9p@qFvdI>I)LSyL+-PT!Gd7$#eDE!fxg0!dG)nWJT$Ziji~X2pm3e$HYdS3) z;?vT_zK^&YC+&@weE9<+*;tvK9UarHC6Vl_L{AqCgb?E}8e7h~iz(u_3!brBCAN48 zB~V`)){xFV;!^ZUHp0A_TX?FNb43+^LHY=NWR2r(e&^HC6KO&AlRGd!Z6EP~D9ILd z)#?MEVJD}|Av-auFEx!rjQNS!JU6l^**5tx|A2i@0kETuhb{cp`QA6M&VQ!E2ze`H ziFkmS)U(4pw}q8tJE?cqeci+95AFb9IR2`S-rl4f(A1-!Kf?LzKDOi!)w69u`SSPvd7i(X zLmYt0wCMM&9(HN90;)wsL?mlTD=v^p#su4hcl@&k^b^(uc!z|z__MT3o5#0lv_gN% zPP<<4LeYW+y2!0}!OYBjq6hd5m`j5@icAMYh(3yN3C!6(c~iB{0Q}&s@}ay7(DpU{ z>b%Q3ZYO}5fJh&nkYLK&F~bcqdanz+Wygi^^787E@)?&no6z=_)B)on%AMLlen5)l z_k9{$^xuO7>@?gT9MC!cY%}wFp^y!b)TvA)AX*IjQ#1Y5R{IJ7ANgOb=*7ry1tRo$ z@d)4?@4gHOKe7g_3;{euv^&p$O?XR0%mpMF+DG94nH-at__==ilN06>*z0yjehbhA zVEOz*Is!ugre+P04k_JtcdfeH*&eVkw&9oU(PZyf82cdKr%$b8&`ji}ko?1f|CqCA z2XcWzI;Zi{gkHbSc>6Z$S?g2VXFznN{}|nWau3CqPJb+a2MDW>*fJBcb873rCv8N> z5m&}deue@@zM?Y-^N)Au?y?vkRv&8e>v zz!>tqAbjQyNX9uz4w;QDo=SdDjFou5*IcXpK)&FGvK9HkO0@SD`@ zHm%N%f*DtVX&k_Dl^#W^HKAIb)7hBv#agc#uuple5}B3<;}3RjJWG8@(WQ6h8)Qu< zizzv^y^`7A2M0&;?l#M^uypUBFzVDxlNYE&_e9gKIjWv{bfg{}*I=>Cmxxy6*xvBB zvCOBW65cMoqd9}&v3*dA224UiI;oiFv4E`SaI;zQ!vN`5dpB`devWJco_3M zKBW@?-%pcy9J}n@JgpvIE!?}+&o`Xp7tIqxLqZ~P=v0Bdu*9}wby6Jo=*?97#|!sJ zyMY7;;|fBSp10j6tx8;U03c{H_?Gb%;0)K`Vy|!CDKSZKV~n(otT0G;D6Cp8n&+J7 z*>BSk3Ez)zXF>%Dp6)eX`0yQ$EywR@q-}X6vnc0W3uqVD9iW0o^RsVL8Idx9Ezm_D z+*jGL!d-d9pjsf=^S`NDa_*8+st$iPph|A11I&}E=0St1|GZ6NC3wE4m@Z$|m)Ckf z-2FBwY_U27a2LpPm41zRrBI6Rgd)4`KYt5A@qwUo%T~tPKq8~A2fxk&=~cCvw*1c2 z1_}ua@fBn9xrRoKX>{hmyd~?0&9Hb@V83*S$N8BWU?rKn0A@-ie*FYZGJ<+Q+rrA-ztW;$U_^k3XJ)UeJ_8yMzTr%RZP)5SFbcUSu$bQN zEKHAm5K~W8S|G}rs^hZ!e8bLD_K@F-%I#z~`j+O-I&D{~%i=+sh8#SX`_5;oOnU&c zXVr_G`b28$>0f`U7~@` z-vFsmhN}RstH_aA=?oO?)uwu=ocF!^1Kk_rU>Ap**{W6q9Ip!xf8vy>zxl2kh?%+U zpo2Ga2a=61D=*(rc3o0!vwGTCME_CI<|_VO+PAARvb!C(p&ws zIQx*(h3A$z&G_&h+kKw_H3<$6Yc?9>eIPo{=Q~+ZWSOv^vgZm?>(YoP z2^7edEVzSRV?O;wOC+gZ%clBAkdPx>2qAmaQ>vwMiwj59aZxI@@eFm=Nv7eYB|YBz zj==WuVxGSQ;x2~g@8BaX|McVX|UC1#EXE0MBzE;`u1C{@t{?o!)T1w zmjLcs>EHm$3`ykZbtCnp&ofdFE16a$;IivE4X#manOS?TY2nc1#P+b-;LH|mT<**!6lvmr!C^5n1s*ugpL9A)1F{(@N2&(Yr}TX_ z12Bjk7iRRsT~oSgx*bV!paSP=o8tv^ZPNQv@TMg#SD_|LyN!1BiG76+v0j=1e>o|Y z%SdIiGW*gbi<<$4fJThHgc#3LyCjA(~1ynQH694zS;Cws3?wH6&V@ zN-d^&d!eEe36dZGEyyX+tXR7u$K8Chqq8&E=$pfyD>;*=@ScuBwK+avT+cS&Xifi5 z8wP~ZKB2DAa7E951-zDC8(k@p$p3@2_l#<4+xmwUL=dGYqS8T>UX&^wL_q0C2LX}Z zmEJ-`6cj{IdJR4FPLK|wfBUu=Edg6=7*{u=3Y~xlIa@l0Uh5`<2GT z%S12c>2gyI>8f2H#1p&f`>z(UlITz8MjEuOYUfWvSMvZGrHXqK)?Vht{)BK_ZAMdN z<#SQv-gmBV08PJo%5Xkr(?*{787yDe>Y^ecqBA@#%Cw|5XP-bf+j zxnwxM)d9d;HQiu9k6B9l(km6{D@8_HXGDQds>Nizn@f0FxhH%P=6yt&mVcF%)xE|C z5Eru+JtJXDt=iwV(dlWSp_c5(hG@>N7rLp1SxH|XDwCXfy39HJ@}0d3JozYTy>%p# zMN47~7)J8Rj>rA|i6MM^EKTxSZ9t^gIYO8Mkq6UkqKDEGlgWC1vu($=1vQM&zW z!@J8b-u$p15vYVM?M=7ZM3j_QR6wTOPgtF{%i9=2N+B`*K?$v2yV&BQ`p_v#q{1Ji z>s$b$_6=z;TES%;)fNQcxiw8uvJef+5wVp>e+N#g%8H>u0J=ui_1a1yM@l ziiy`SwQ|oy3KLT=eDtAa#d-F5Z{m|nUukHwHu;vBaZN7hcy0Lj@>sPr`ndVX(PY%v zb$!Sv2y4C18gQr-m;ZRgePm7xt(nYD6p|mh>%EliG*g;F$Tm@BS0hO^73=S75?iR& z!02!Irg0-zE2ZF`p6X4oGWe7xIyw8vr0deK2wnP`L->%CN?V%WDH`KT%?*EUR_kBH z;3;8|nEGL z3s@UOowp6dZG4>5$BYV=tRwb@G;3ZwZfJj}PYlU^Axh}A_zlW8fU+B7Vvj*u5A=Lwy zAS3T1fKt^9iL#PiNA_Nm8Tp&_!Bll4-L;j7*MNZ0-M{8zU8^_cd$Eysvn}TZgK@ zpEJ_e{GQpLl!uG#H_TUHd=f~+3`xZ1p^d?!=X4^#Qr`v!5cUU-LE1y5%FqW7;%gWT z0NQ!&p7^(~sRH?N9VHW=O_=;6qhh>@)8^iMeB5Zjiy*ManJ!*s!581|xm54=d{^EV zwpxkoQj_H;YE^30bXW6jE?0zBbcHMMNKd_3t)};V_{=meTWt5pLHpv9g$4X{gNg!yazq}M=%j7e`CZHRL_7mps?iAcf2jZQ zACwZ^(sSBav%S^oeXG4XfJBx2VY=vpXOQT7l?as7ZP2ppwrzNP&2(!j*xE1BUcccw z=HA-#qg*L%_wJxMRxG( zJqhEARnk@Ip`dS(+$4dURKz2ME1`boL zo9s_&nl?X=O)+tkBx*k`c3IYj+ILb$NIn+sB`JK(crD=;WqR)`}^~%1zvu950@;B zlX?^Qxi1vxSLmpC^&3Kt^HbQZ3-ooA*cE=!wEK`=uGcg*=n8uZYn?`VE)gaLMYUeu zugOWzQ9jvs@{m5K18Ib+)Yt>sG8vgIT`ke8nl;7ygyPQapKzQh#1BLlc^_1PA;XeGDt|qy6P9Z~-A2f87;~gTH!LLoK7uPp}OV3fNkAVk2$JZ(f;w>k= zGpn!PxG|gR#b1HgV(ujxlG?9TD6jAD4ce?N?Ea#rF`OTo_UpGb741pCu=UHuhx&!K z!dCKTG19#Ye!6caeh0v(9vvLwEu$=Ju4QCR(=9tO3BR<$*M3nV#rLk@6s};O)BMTC zIJ4Z&@q2EcwL-BFv=r}~?0s)IyB?(Glbo+{r9d5>?8D_-Ei~GH^iS*U?F(gisf!xi*9z}h z;MI4#qd{tF1tyf;y3K_Qs2Q#w0Ltw*v-WN~4Y8}+clL^PK7wpQS$uHqZ{!y@$C)bX z5D!1N0iuuTmpe0lyxa38S{ za`7W~X5y#Yor|w5mz%h*RM;&ci`|wo0(VoEH7h?i!@q6}7lnbk zLt*)66{u!bXdl40dwQ`B-r9}sg#pDgj(d3nYFY(}A(l!?p`Me1lJEM<@|9|*u4QOA z4_D|fM7@}I8!Rees4if*zp62?*PkHSrwg~nDL6)WI**&w3uV}qB6UO;#T?6pV&r$? zWp`G#1qMVxlPZ{&^M$p|do$!e9jeL3!rBe=2=VvWeya&ks{Wzf9-U~AW%ern@%eDr zJ6+x%$AXwqi&5>3u=zd#-Ck`LPzqJ@e6zYy=N#}Xf19E zInE}>1ZCs_W-zKfCBkjC%h`cHi!K8qF>z7hQO3B0MH}g;+pdXmqIySZ1)|1X-d_nR zbC0D3905B1MD`t^q9$RZ4B4#vV*66oUD_*^SKM>7#9pY_ZFf72W}<%!RkywXfUosR z0`O0R)H~4#3zu~i-OuYJs!!WeGz5oj@&47n==bo3;58A9JTcR!OZ$#U>No6!C+rM&x2R`@N)O0Y0 zR4z6nwA}!NuppO-JpulD?JA%z@E5t4-;qR0PTdWduf%a{(blD22-l5_cp3D(*#C*% zlJUo+S%alAyS6v81_!F6zm@pfna=HkOdwuEjQc}fp;1TR5PA@!sp{Ui?Pv)8j6Q?t zkE);-T+zPcPD?62aTzK~07tIibO*{nDPtwXCKlUnU>$shRknco!f5u#e}HQM@cy1m z_F8(+;qw4g=5YS1{)c86p4W0sPZ=SFC3EbT85{@n`(|EKi-=*JI0-_L&c#S1`l7~)K- z@%t3b*8L%W(af2zV`JmC9Q@@50JAC0n718yQ~*qT2PKfPY3M$WrJ^O^KOLJ_;+cQ9 z3>g5pLA&qy%l@T+OtGK{$QSzmzY&LC=}Rf*`~yz@6Zm=Q@T+G1J;CT7m7YHl1W&+3 zlaKtN!9Qx@e?Ecj_W!G`D<-uUIuFE48~^v3N(cR z=m#^q-oKIP+C_oVyX?Gr$-iAx>X)Mh>8;}b!dbulk-us?S`-cp^qUp?iOH)6U0)yF zzn{Y_s_=uC_aKKzJic|0NB32qj=#ywIP#3a+Y5>b6x1-cuWT}0FStpKBVxWkEZWvBGHFdeJo;FeY_s6X*KY!0=X79B zP~Is@85gklV$6y$eH=K>eJ`2!3e#_^8rb|df#*|95loT(3P<7i)Oo$%A_u9r*qiuC zB>&5|F7Ek_bbwdYo6R{?y)}C|&CpP^TI6i;C3$C`p1wO_Yr8|oCVO;oLj{)*($qUX$)LGn)lV?ySHzw#+Vw+tk-dKb1$z;xui8f|7jFs8=siUW%RgY;%R~xZAi&3v+;1c&AR9qcwZP71# z*w%mSlGq1C;F*EPRl!mNfa!%PP|c;<@Yxu&B)OQynI_C_smb&Xfa?xz-T}P@0xrrMqR)G4l)%$aPw{I|A9r6 znpQiH@dW_23*TuV(8bg}@mZw*Wq^qU>Q0(?yXxTM9}d4r`p@guTWK9s*%eNMzK0f- z*M;S`UQl#0ZIgVo?Gj@Ykn9FY{TWXjicRHv6Dwi?DQo_PhjQMhpz^-={v&fE z?<4EcARSd%?CW3J5nsTyG1n4g@yo=)eak<}p!~^?^R~5RI`YK6lir|pBdGM3a?)#6 zWK`^Rjxz#Q{pzCdko3bEfLhpL=BTz+twC;|{3ceIJny3`88yp?#9{jr9+sY@$sEGU z!YWEtJ4`>Y!tvT1fJ+I}_axOvlG=KOmj?jb{ z+B%BjRD1MZsvz#D+8Ze{qzvD>HVw374Gp;6jS5PwEsA z?59q|V_g%%sTd!c#+i!aTX2h&7m|Ouej>-P_<8h>C(q`-RDt{E4Iu=KCaIc(yIPzk zRoY4*GV$)k91Fr)NaLxYn*_gZWhliGlDY?=e@8A(xif=G3z~2 z*A~&Pl6bq4{+`igTU(sjICH+jG^-2QpI!tcwtg!gWez4aP89w@Cpdhp=2 znDfNo`P^&5rZ=UJW&ziig(;vq|Km997B`yA%}8Mc;9yRc4jFOjtGAJB4|!!ch%Ag2 zfe5}5LE80BPsdWi1Vxq0uGhIF`CO1>Fv7P8>KDAfFaZfEH%s~l&3Fa?VrJv1X@<1n zpYnUZ%H69A=~M-xmBbG$q66N;{q8b!Q+PCuLJwfY;Pza-hQfKQm^bV^_47w-u^ql{ zlW%vs>pZ&AeneZW#cdApO%r)%l(#Z646USW46}Ee1K##FQ~qJm~fm~K5d-3 zLB*n7>o(~-`EhHiC>QhETq0*qY)iX(D>h6|L2u%u55NSBBR$2lv ztd7@3xgx6#?$D&E%U zU<2twYH!zv3&fy&Bor6V6{Lgqryw9a?=r@zqAiVk&&~i~Xf;}d88o_EG+yGHR;ceN z+VApeqnMHUJIiitNPKbZ3g<%ZvkohhJX*QG(jvLae)BCA{n>S^b1I6LY4!5L3g7O} zn6C^gUle?OEAQjXzw>UkMI0(`tuCdJU9pD~>%TtQ&%9 zCc6(5<3fCihY<>uRX{=uDET+fej%Zeh^7whxlU~63-ermF~0%WI~=@RMs4qDEo+|@ zD9fFTJ3U-(!|dy~*_j7~KMvM^x!bU8RcYZjEp<-R%6~^iW^2ldFo2|j@hw$AG^mJ{ z$#=a9EI@Fdf~=I2!ROdIgz@B-*6AVCtp#f|M?*^&+?EuiS{5#{MmSJ&2u6n)WVnbQ z|BPbrC2C0`LkOEpBv0|C0YAQ7A761f-q~UOo#ujqD#pD6{1T?$&IC?^OB{6kE1iK? z^Vo@J=KDoVJ$E=$>54D`07GFdxG7O&PE{J(R@Au6j6S>t4rybzwP?W}$b{%0ROp&7 zwi9upaPVN*Q}bw+c_QPDY9{X*?`|dX@Hw@{N3EEHNx7F|(zb6`xOUzoSstW)9rFFM z(}fbCc{=S&V6hHjj5I+X)AJimTpEacn~KMl)AZ^WAm4E_JLuryd3e9E1mo8#`=&}S zE7$@aeC{9)xYbXpZ|xysWMxsWGdy=Czi5Hn&NfcGYIb^Y*3SQ`?@a8w(fAA}3%A^C zErz=a3d;f&;@DTyhcV{&m)?iJ!qnh0EqkH%T-hX-7}cS8{mForYXioX48HjsUOlgm zh8PqmAn4t79W-J`t8Uo4?6^DZCgp2pB9>D*OR3|M-S91#MQ|aeDN`_iHa>hGo+;Xe z1F5=J-K6Px0-DCo)x47IO%$r(q)`w!$K{>jy=5dS$_Mil^e7N6dMM4^lN<>ta$;P% zuFzZo!_Ff#f~^oQf)_fVQkKw1%E^Xd>t_az4SXl8Bbb>bYWi!&goyLs#;PBRD=SIa zMXWuc-gD(AGEaZ6dDVIp9rq=WQ4po3LATleKl|G@;E&ewyWm#54hNRq)#c*Zo@qnZge(%N8)@EC=o zJn{{iN@Y-Cp&9wW6@yCo)(Xnm;osx$EaF8mseAcml084)R&#rg5Igc7g@{)1YViJS zIPD;pJFKz32Y>bEBGKNr;Z!^rQrS9gUgzx7z4A8EqtC_A(5_G~_kJ&tfUVa!4SvIW zrw(Ts6n^Opz1fN9W;1QN*|OwT<45TpkLEGeOKh7Rg-O9TM&c*nt>LM`=m@>l0yW79 z$~!F!NJ>iWqA^JYfvdQI?vI=s3(=Ap#1@{NE#Z?~njo{wBosYQ4-3d4z6Wzc&OHyK zXc%u@OaCw_;4%4-9jSbV5peP?oooYxWiaN@*I8lCNuaA}XeAuliv=kXGj=s@$tsf#COrfjEcZNKLgr@B1yyv|k&T@xdJ@}N6@ zG`5whvr~e8%IJA)Dl0X~?FcC2k}pz(aYkvZRH5U~t^T ztJOJ|!~IgF!rYx%0?PD_giWX^QPhHmN#u?Ly z2SpAkg|VNjv-ev{*Hx`9%C*Z(Ln@O@(50|hgvf&+zwMBG`BO8w6NdkG>hLa}o*(^<-h z3X`^`R5VtCmfm?_cHDgY_0im3(uwg2`mmCTo?$$&CueQkO&=CFdeVn;Fs3)h)? z5%Q_4uw=K=xvB8m^>m?qc8lG~{;y@b4T9&cJ{%jtr=n`zl|`I#F#Oxusm_pKX{pq! z<>K^N+RZ;=1Y;MXGsAI39?EZe#w;T*!c?PhJJwJ6B+9Jyi-~#MXHMp=PGL^0=Ss>} z@!+9|jy04amz{DNtU}sd#~;K$R;aIExz^vbbr5LWWYEO*v%Vn!vQXtsuV8$K&sk4t z|BwTeYCMS_3XBFB4(;%)KkBOWg_|`U4}dQ)q+#9o`T1q8Dj+-=Re2rA>h|*X`@(AKYeB$FA!iybebc^=k!Js!Eo6 zv|@cr3)Hc7jHjz(2umEd4OOkx@kV-OwfjP3l%%bpig{G{!UKrmf<;G7A#gmJmA4`? zSt)c0&%XCfz|+IKU3=z=JudcnxP@wGc2uJv&EqXD)^WaNK6TOIFiY0Ld&Jt24F$`% zhsajsePPBFy3j>mJ5dZiWel*{rc5uYRVzvPa7iCs`>@pbnI+uKco5 zPLkj&(DAY|x3+0tR^3K~@04|fu5vkS@spPE5Sae?DK?-Dn`Pn$zK<@B9r9YZoVHeW zyWDSfg@jAoyZIo`;U~;RPzno%k%z>D#`0WQc@IdDaZ8QJLuCdIiWSjdo?o}&I#m>!@WvgvM zr54q+?B+zS4Pk5>jzCkL-C3Qk6VHWqnKbtcDIc z(hRhhySNr)2+9Jw22AXoEQrY+2}p7yHiKq6@J2QvOqBa8GvAg3pFFd;C?hGYSm%i~ zGp}-vb{lWg$^D?HGdi*@M>XShLtlj*1xlWYCA3aev{JwcyU+5 zMKcDH#lDYgBV_2Fd(wGi(B71l**<;O+^=?WhPOEJHhmksamHl=GVY=2(*1(@#Y8r2 zYbGc{I*{_f@pFw?vr9FI&uhaaMB7_ioOv%v;ncL-xwy1+8$wRBDftSqqRMWXLzUR< z)kd#8%1QlPcD=*6tVKMtBi}Cf+UdEk9_ilqc`VDbUo)OB+ad>n3yZQ^);<)?B$3Ed z9a#>taSI({0_K9$L&fEI?>G{_9&Ou`%NX=16EE$~K6eo( zdzfSP0*k594@o2*w3i?Bs!3kbDfKuyJTlW+uYaJg`l*$1@(S3}xp3Op4R865M)UTh zC89hnTxgx>dknG@qkI9vVUz0x>f-{F<-!) zli{-z)2ZJRPfrUbEt06_TWk&=j@%tO@a!rT~i`w8tXY=add~)d$*NLpN9ASBaAMWco1fd}XrW-yH zu!(2! z3Zak;+Hkt!&kDc88|P?a+l~9vo!wQbxSduRZ;~Fr1MLVRt(FMi#!@1!Bm%9_$Bqq+ zmZw3>83ibPH3H{w!t`!3jVSYCjClpd>4}e9R6rSL*4!gX5ka7Bg#CcIZOQo6qY*AS zLRUnd&;Ev_IDM0_rLnV%tc`l-5x{wM4LiT@T+<$p&*R9$t49aZ~wG zz|ruoYrMqTkFxgUIgyw(B?x`&}P#>{~k9*G2qEkv<1fPZ)buZ8!MhI4z-jij&RW8JyZ8= zk1uPg;Vyz z6_wd?UT&IgvP_f021MWx6RnYr*e|??17<6rR|OcjWN9zpu_eKcdJB2jH2}do=qbzvtfn$%(oj z0?-~q07}a7_b~ZCFetk?fCuG&56HUy8!Yn|R-_6zcJ*|R^eg?#9gBYXe~b5%w)_UC z{sp**JO)5W)l6UNzwHJ7`iS-+6)>2h7pyB}zlVnZxnt}{07nwpt@RrGm%%s#_?vq4 zo}%#YiQb?1 zPK6qZZ89r<6pVjP^C*B17yB|T{rx2V{;jqWcqZ4*+wcAF8aP8z2O!wR)8SJ8_L-mn zaM3rRNZJ2=mM;}Cz(hFLTmP$F`9KY@*8nY@31yuY{Mj(lD%h)Gd_EcIR_n$Nn%zwsms0e^YiVD9zT9I-Q-u|)ezpF zE(y*CN!t~()S@lLjZ9&|`7JvKO}-1+IGRZmWr<^Irjf18hXH%#5VQJS_3XeBP+7;LNX!JxhsfbaIgSnKWXZHNPm=PxQ68-t_=@9tjp-Ly@k zT45tRF)(mt14)1LMOm8%Vc_p1?4#fS)Cjw{SGQr=wB-trM=6oU=F!tPVXPj13>+VH zM%pokhruwbKvQ0uhXzbCO zur)0@_WtOHZEOheuMBd)H1%G*)7k?W8W^G8S}T`2#B5dtti^;-^Ih~_nN@1lREci= zer@S*3pYg+Wvo;J44O!)As%|y{5_>)m|j}}9=>v>jknY#IXe6Tc9%(N`eA=YTRZHA zoQRp+LE!!zIYVgC4M6?*P%2bM)@2uv)z?!Fc;dI`fA|iN#+W)e6_uIQe7E#J@(Bw3 zqQUyy?D`Da=aloHiaf8kmwzKvEweg-RrYbv$s%F{=puwYqyMhVtOd3CdCMAYX;)`s zu{;^PJp{c!sIkWyys=6fJWM<5IpAGfTwGmUy<6GO3EY(}_^`;($OtJq(BdlGf>*6` zQ(+U6_4pEXdhu-0BEK;TgOgnW316&95-@ikXxmSg1&LlV*4}V2Ne2JDXNJvy zJyR>+!u*8q0?+y?#&4$nSp{LZ$fk?7ka7KN$zg#2iQWC8)dDd9e;@VM3xDH&v+354 z__tONKz12xMv{;zxZj3A!#HVV*he!^pd=Oy2Mr@g0vi=8Xkcb!PuQvn>VDqS-(U5^ zvTHS-F6ILHUGUsZ^A+r3&Y1)1N%utteWnomtAv5qz@njINEy0Z@uUHDfb>GdGUPi^ zo(IWeE>7A(S-#YYyF|)1IT>_&59_wG1ruxsJbPd)u*n|xqXCP|goYLeHJ|qq*Izx^ zYCio)!znK$aclxI-Yzw+VC5L}nbM1RGdt`%`Mw5xinBbGGL(CI05o`Fx*Pl!(}vr$ zZXzY$uX$%_RiU$$c`%a~gPBCj%GaAq2~zorV*uJ# z=8_~dHg1aPBu%)S&G9S0eJB`8&wA(a8Fi&hKca>f@&Tp13r`x*z;3!^ad{cp{@J>P z5r5rI+Nm`ht)jKwzdsi==`JUcYTH8WpwN&@Tm8t*?f={%x(sXGG3hfYreLN^W1t%} zniOT0Xcy3CWOz}V_jCSEs*BUUdw`a#+Gycj$dsv&xk`sw$i=6y7Alz+`F88SP}ls(O=6Z zHJnr{LxOXvU1eQsm;0zpkgpo9Mjgeq16VBa-pYDe^Gg0=^GZEQH;WuQF^@ccIWTnR zJFIBLA>8olxm19u;9%;;lgR3(_U4;f5c@+Nazi*T6(K71m4@COr|qn>+2`X$Qb)O| zm|6)ZYRa^HW|kFeL6QTb235Y|b}vDzXY=MPN1te=81hY(7qqV4yC`EUJX{XFR-D|p zqD-`SOfT)<3|7M|v)?R1#;=}0NB~Ml-DTd~7fUNp6 z*qSL&ZG_Bdn)%q-nA4UG)Lp$;qoD`%_v!ouC77Jt1y&c)Mvzg76S_s+p` zn`8kpfvQuPd*_!c$;P_&NW9?s#pd&4z$s(hox@9%Ab6#_?BGh)eXG`)_ODKAXb-%x zudhuJx-vDDu3N#2Y(&L4Yw>D4D*Fl{DVziMs6M8Bw3j>gCa@8`Hs(?WrTNwiFC%&w zGNS6g5XuAnC@Z-o}%f3&KOWgw|Ll}Kgi8qm8rxOvW?Qw3`a7>^BxoV)s2uVBd7 z4NC^Ah49?T2NmfCjK+VXAM+a)BP*lC8&m{c7i2muZZ|Zjl?w^nmk$B=l;gMKeq`SZ z6tk+R8~dsczCx;RCSO&Ns`_{O`p^o&zfB^G4%;$f1h2D!a<(bL)AD#o1sP_ckqc+{gaEcVAxS8J%^F z7O(p;e_!FR-$LI5gujHl&{WcYVf;P*d{C~3ohF^{nfYgrsU)p^ND(W~o> zQ%#!Ge!9Oh@K;B3%;TqPqeYl%wD*6~+|cnWK(jEHM>T(+4}T9R^j9|N9DC=# zDbau5cfd(d2h2)cq8Q=d$ee{ho?U$Y0^MKF?C(ng8Njb5O#lDiFxK3L61ZQM$~iuM z{<6<`w}KOrjBC5)CxE97q%}!NE`adaM8g3sWZ?Z$Y`P{4!b(m3j}Fjj0>8cA5+vOwgX*+I?E#?Bi-IvMYRNB zYo~6V<+CUOxLK9`8PaA0ta1XvNvE2yaj9nt6c0!i>FJHk%$zldW*cKQYQrw#W{H1w z8GJ}{He_8pX0KZ>?{ju>7x(E}`cJw1Ac{QbOOh|nZ{CDZ;ms}LT4WF7C&Vm5 zdCSKhFvxQb29i)xs)f#>%E!jnse=CWC=4B^%~~>W;i-vvf8C_Md{o+dC3c7U40|jk zN#iviEiRWQB|i+3!xbkfMt#a)S}_xUAzihA=}J-JC%Yz!uNNF2>g^lPe*V#{0vvU; zgLOBk_B5vC5Y9OikjsuTp^fEZuyy*NKWi4Di2zY{>`Jlg9}=Q0Jrb{FVaL&30bseg zakkf?BsMqxV|Ezo4dmJhn-0nI%4b?AJLdoL0{DGp{IOadn*hs$62jd0Fa7=UntmM% zIMKeHznA<(&Nqz>fH(ou;ntyMod5ozj)jG zcTe0-A|f+`=2S|Giz%%JTDI>e7Xol^leqpxXe~eo++rAUDYW)&U&GL-pB4x2) zj{HixH()u1+8;mGH8W%E4+;qh8J;c%&+&TuOx!B}446^(Vxg$ptR6o-Q%+3LCC)!K z?8>)dHa0e%rmPwTW9Ft6 zi;Z(Z0WGelLoww%b??;ULfcL9TPOe7+F1$b4uw7Vm1>yIG4gF6M+r|7Y2<`UC-5OlOf}GkhZ`Kl!3}HHHgduc${{jXfhq<38A>Sw7Qc=5vr(#_f@me%h7{?=!90SOU+i zg%-UThx&N{#EJxZ|JYSqg_CJtWCKe6r$VVo)v!B$xy^O0c6A&P0g5l@r>clx_Rhjo zPQ$E+l1^~Nz;veh?vS-bTh$q&(Rj2>Dd33iJG|4yHC?eJYys=*C$w2{WkBxj;L|*I ztc4-S6o8oIG5npYf5|JoJw<`2LZN7ZkBD-u2_^lxlq@%ofXe~0BN+m2K1JbJsV)G% zV?DlsoI_0pmb`#hNx?!D%`P^JQxS1v`iS<;i-J;m)oP!o5}!+ov`nz@1xR$ZbZ zH@JPK#M*Ejx6<|&lUQv7dwkJ#fwapB##S{1*|)wE9pn+1HPt6d`4{_TByD$&S9ja| zeT}kNf@jZ;cZdeEhHShb)RRBzKiQ#C2Cw5Ca29@5GFuG;kiuqt?QiNM{_MWZsdE@n)kB?Ud7dA-j^qW zD&$H5m+u3#%ocS-o`UM=*k&v4|PTi~E$KKWo{P&k5|EyVU0Fh2bLQ-&Xk_Z)Nv zduDnjX!G)9{VOga{-6%7_TjBo6gbz~F;#L<)a06g$qjqnmlB>|pAYa!3&9G*FKvp1 zaO-D$bWDEgYCn}Gyxd<$JeZcbmOLzgh1yO_(;R;jT=AeU4cf^!E-lQP7#J$|-T$ce zn#_9&Kw-TPHHbid0b9J5i=h}`A9>+;Zw9b0X(C5xixC$sLBpk*7OF z0Sf?fTDLgH0Hg>cD|pRm_NLiPnDmh( za=NZb48UaOKHHRjE}W1*K8&M16L2`xwIM(wbbuLwj@vjpDhxX{VCttOo>c5~@KTXw zv^`b2asMi~G!Cj+6~P9Y>QV1?Jw9X+gW;E0 znYD^{ih(9^fJAz|>`QY>jeP`4eJ8ZY@iy80tHFhWck&lQ4vAZ+m}8e@a^at8BJl=o zP780flyWRv0>c^gdTRN$1#+$MvCTl%;Ir(XrFJ=^P+}mGo_}MnXym6PQ;?O(gcNfa ziMO79>~aPUT|a$AW;YY-{kqbD_W3+O6!-?O`eJe7nVAbaJ3Bo_B7d!Z1J(77uIlMWt)nN{eU z4H&sBPhP=Ze(TI^=SuN0@mj9x(Va4J-yMihy(>)?Xt~w{`A|W}_=L!qcGt_uM6L5i zMdMQA(^Bh1$e}*;>H}BDsDl7FR`N~uJ2lpjLajaPsK(Ish0ce#882m6rYjzYaVU}1 z#}FUIZH!O4n&vbGln!;`Vjh z+IpodF<^U6&2=tE#kww`mCB+mFg00(`XZ(D>!))W0BP)1PSblfw(tx68Il7)(XmH0 z8Z|}wrUlbZJc#xM8naQ1a%6GL7+d<(omyx0skd0B&+rps|B8X!gn_#7B!o2Zr6N^m zg@#R)3BxIY!}N<&GP&dePcM`Ec<4 zseoytfUOtL+pFSa4F=2VpvP5MH;MDzVy8C3>V$=n0n|wdUD=tpsjtNG#buaHq#7dV zTFfhPRA%^o8P?2nM;TvR9WGIp zsL0Kws8g2muH?5X1s^0*PMq#KI7D!~?RlAUjC9BzPkd$0B6Dqmmm6X$4Rv0NtIq#f zli|DLqdno@9}myV`YPpc!gDDmK3AmBGH?;hQMj}Jdf9DzR_S2RtDkam#1|agKhR0| ze(bfOrxvI;YthN4lF1_eLlo&9Oj%o4G;UB|ZqZ2qP_7#{@Nic= zJ@Fm7os{aFzG^mv>x-&rzS7Ee)c~`F^a~se6%lj-_Fvn}@~#*;8NgK`-`ctb!3H!L z{QI#1y^o9Ch)5ZdM`TxT>9X9iGvc|IFThM@={wmFIL%F^6Lp#&7=fv$>3CCk#|yV< z;WpDu6`GbOgSw~J`7ZN4KSfEPp${2DPp_nGwx;Cpjv&8Gi5V>3J$(x_%Mk>RU}Krb z`it3?Wos$1%kgU0WqaF{r-AGu3$p@(_0QZE89bqx@?e|nAe9)3J2aqq2)W9-s=7wa27^te;3hGw)19$HjxAq}$#6OC@k`c0BNLepX?y_e#*liu%xzkb9kSSH?G9_NhEz4zpn~(HvAnpC- zekPIzy>?xMEw>f)^XI%eniwL-AWx`4s}YkA`>$l=4~V6V3wRu3g~-b!(R8}uu_CTl z7m^P*n`MpxC^bF(e3h}u4$Y?0dZ}T4P9e;&9PFMv?Dg-fmrLkNf_Apw&>#Ye2U5!vSKW<8+ql!a9%#{3672 zw0rNq>ym72Lw%pdO?&VOWF9_{rZUtgvXe=u2E0_WqH^modVJZzuK0ltrM~ZAsSuZ=^6}<=ix4C#D`x1W)2sOts}`UZ5_yoC_9 zqD6z#CBWk+P9=Yp#P8#I={oDp>j(qwwD?o2b}l|G${VkQPvSC{Jxltso0icIaD`!) z8*!?44#tnXAndv+eulZ?4ocoAu^k~JX&PVcF#Ft{MCEO2S&65Yc(LJJ_beYh!yVO>h*yNKa8HEVh#Q-Uy|Ujy{U-D<5mV+zJS$BStA5aff-N&W|`0XqDt~$yairjdXBzW$B|!kTF8$Fwi98 zXH-xC)$sg9x55yK(96uu&m?ozj~+R`RhD%3%@F^n^f)}xeqZaAZpxFp?VblCBjO=u zqI@oT>m7Lu2V?u2SW1K#=M4uf{ftdtX!_@h6x$s7Uc)1qXCc@PISvvXF(RWynOFH( zb*;!oAcX0gN!M+6IoKBz=R!u+tVP5IO$As)OCtRV6_Y*yF}0cGJ1{NUOY7{dxgW{`o^eWN`BMY$N|j5*A#V0$#Vq zABWaGA_JveuC!m2Azc$**lQHyJvJW{cJBaz(#mei{?Lee=Ccb0L)P0g1JwvyZ^xZ) zJNg23)~Jb>k+XYiN@nsdM8kZ|bUFY>K>y(Gzp@jTe8c(o9Q0vOqUR{#k8(W5McG zNC&2(JRL~zZV)v*h>IJJ>dI#0MIKofJI8;Hs1XyGjawQuP%HijXk|tZYR!k+3@Yo( zZmB`BC9p-;?Yi{MsOntjY${bM+PoTTN`0qzn&a)}I>wQpJMW0cH7k?K_g(A+7z!Sa z;+I_FeVWFCdM5Y0fEc^Ek3cZ9c`nj%Y@`<0*lk4hm^6=VH-wdm9o3bV_Wp>qS%6Vj zj1A_g*|nB_57P-W`&CnJWd_wI?j;xJ(s;JC&Vra+yGZRM;pi|8brDv!i8x*mmU33SJKRDz3RND9QgIe(Dx8%B?f^O3||94QomF+Jabw6YuuyB;s`yBrD z9ooh{&HX;8St{)-?$#jckj{J9_ZWS-Fq9zY6O=DSCA%U zy8WU#`3G(J?4onwOIexu!j2nQ-fLp zrk5`bK1j=PiPlmdgx|hQ{~-?tNGUC$k|=1d4Y$s;t^%Zq7nh$fs~uXCCtZ7<^|_o` z5|CJYGA4NSs?yb!Kqb|?5HINt^2HZgc>>A>r`n$| z6K;AiA`woz{UBeiO&QDvN?y~*@%w3{k>fe(IT|h#1-vJ3?P@C%tMk-#lnG(ifpxZb z-1-q)HhJatt3<+?*;!qngKUPzO`}Z9AvRF=9@_7^`t>jHzy;q2!#CmdLGynO9tdxk z`;D=rMW109+>hWL&o3Om9?vd)=xtVvBONZWbopfw^Kfs$U;87lJFdv!u9~j1HG$@I?xz;SO{RdiP0A{%#OaFiJd>5e0Tb%qYw8U8vD7--V93Rciu0lVz6pN`Pr?}p>ibLH zOO=HUNBf(4ZUnaf?$L8LSiqGtD9V^AsrlF%2l&bySyLO?{r;BLM*(?iIp$+r&JDi? z=Y8sL>=V}aLg)Wo1{lcvtV~##WP9cRU!+7D7r08Q%&+DD|04gu=>mOY^K}GAZvOvA z<}Y!EqVYWq{T=ZBg(QKSPtfqs+2(t|ME!HITlU~+U{HD*8qt3H1&EwG{s6ErwJ_6h zgVmQSteyv?4-;pTaCqe8^7B%NZ{!vhmJ^Z67cns-CAcUg(`Ip>qmv7cPIXS%`$h|^rCNHHR z&}^2S4YMB?dQdW@8}=OZs)OQgI5`)kr8NLPWNBfTg;$ zNP$yDg*6z)Az~*jf84 z%6Z?^d83q8wMq=^09vinlOifF&<5}fOZ^LYfpVe}wZH)ZGYYlI70$L%M_IT%H>!5^ z`Z{sGof+`zn4kx4;=MaTgMk}{{H)G zX{vw(Q+sw{UKjL3YZ!r^KwZqt#${=cE8#0Bg;b{hjA$yM2+d5Z+TR8u5}s#N+Fwwa zf6%=(`sEwqGA< z<(vM(Xa9*wR2<5H?il-g$HHqRkg_O0pVeD*x9PHR!d&0^{Mg~OCRywG?SxAtKPc=@9*!gM|wm^z$troUG4A^ zot>QI4ZDzAn-c6N2k(m66$YS`(DruO0WBK?XXv(+kL=KHZb_IA(igy+Mb7hzt|uac zV)LBZH+MvB7d}{vg^gSIbYKo84l%Z8;Dv=t#x<@DiVmE!+-P zHtvpQkoP(ctFrBvrW+ws5;c)L_WF~(rzE@RTUbSH?b0dDWuE=>77V)b{-+zTo9xt2 z(-v`R_WOI^c+tIL9$N!6;^E+X?{9LA)w>^5*#TH2p?+OxD2dMtR-{ug1e>saP9ujD z!&o4MP)GKC9Eh10n9*!G+eVgDC1^*<5%5o(c8y7mrA+Lm#vO$>fR<3k6?2_3o;MA} zj~)uI#ASZ!wpsYHXR`qS6j%?$+g|Irr;P1(kJ#zhiTA9A+syai(e;+wG>N{4`n$u@ zbbc@V;6KWTD-sUD`*9D+ORWhhq~(Tz35jmigBp5qBLAXf3poT(^H;`KCLsaF~6Sp zTIJxK186uaeRDiDflUk5wb{6vrIrXH|WN?%YINN(fc56>x9}y$^ z(A_+^LVAvlW#f*!b#D8HC)Tki-=AQvQyy9MD}E~6nmCNK{Z^=>K%!_BNmMvKE07_6 z(75|)IY8!8R%!!KV%xTW^Dz|xMQWS6iTOpQFNTpOE$_=>kAw8$qrjPiSZ{BbM-uQz z&FTD(te{hagH{7}W5Zm;V{+I~(Y4-tZo_v7_?RD&+euxh*k$su6t=Ch<6V4!;D^wG z^tIHc7|~aMb~9D_?t~*6?Mt=mbf=XzC5SeTlVdGXdUn0~rV}4DmfyFf(vyUwWHBQhiOIED&o zt#6dis?eu_r;pG!5#uJ*n8Ccr#n`!)6z_J;VqNmrYVA*Na(TyfB@6eMcP3fQpDa<{ z8CW_AriGC*`k3P3(b%GrThQqQbT`o9_Ee|4qZs~yH_FXHB+xpy$*y`>^Uh9tLCHu# z3Bnj7D~DZ0jT?yzV>(N_^~fg62z%SIOfg?M8EEW%J*Q@}svz1gH7c5qE+gpkL)izEP^MQw2x zr-FCJ>~!9gUJ0k4K0wyAFN~_6lkhHE#XHO|i{mdUCXXCsFn?(zVX2 zo|`&4FE8!W!4|-BD?g@W=NW~UC-cta4f=81c4;`#t(|Zi>ysYA(q6p@pQSkA$)#W1 zNL5NU-yJ*k?@B~8;BR3pTIjr7*qBrHoQnzwe*8Er+f)<|wCj%FG#l=*^+WbF0x66O zW?7tx@<4fkh_3(9tF^S@QgLDjk;T8JmjN<;<$?=wgh7Q{(eZ9L+;$_1Whh;e0PS2g zzKj7V40pO_k**zT>}6*1@id(-fWMkgCSGCe)OuH6l0Kc-Sk-IhHG6lKg#_*%NQ+Aw zdM}bcU}YiE(U1oA3bwQkx>^#=o3PzK@=o+JArde2u^(G#Nh_cv=c$6Op^;j^yP-(| zuRs3?xR0}WY+lrfiM@Y$dEx2mm+5e5;~V@yzWIIPT;Fxy-8ZDRIbn!bm>{Q5q*i?j zG2B9D__-*E3C8<@p%f!fficrJK5^ZkD&G1O;MG-Qo{4!kmnkx(M{-pXz4Qwv+@^dF zgJ#L&R9{*y53^&p1{BxRhOG|=$o&WdO(R`I<(Iw-IJI~mKRfK9aSxh)279jWGuSmN zyjoAGIiLWwzcl%36RRvPO*Xln&g+WT@(CMZb*VB-LZ(ef4W{@bw)_$@#doLrYUQv) zY8}=qC)NCcW-+fBjuf_xDWx*IBL*FBan!Ig?xo~4DE{Dc;wuH#waR!yIMIjPqAl!# zMZ+GAdu6&LeqwpPL5CoPo}17PY=y5RUU6I z*@!lXJz$Fgs|Myf=CSI-Kk8=>Lejma8d8zZcP??6t{JI4JPk@bz4h82h!aTA*wx1m z%>q~+W;;6v?mlil@pao#TE0QrTDL5@Njtn(QC^!d2Dtb4G)taQ_j;&J!d+Ol#BVQO zgL#};cbFgvj+cj&%Oy#~dSR1p=rw74;^wUEaQ_o#=UELcuTp5ItZ1U*YBan2dHx1F zt21GHE{IB`B{YP*v9TebDK%_u@&s@u_I}Cw^~oj7^k+wtC#g5$`pfgHvab*zCvI_h?*(<@ ziQ`k@+bxv|xS9OqFH&DGGwa07&W|Ed*#S6C-Y4tM~Mx z$p+o7)E+XdC)^e=mrGn~WP(PB+{{jkdJQF_^;y19H12aV@wHYW@oh_hZWE)F^~K4| zJt;DlIUG(=Ax)^fS7M2&A_9g<&A8am}+VI3TI3RqlT zO^Yju@-(WS%J5YW29Z)zaf_#V&glqu@I(*(@GD+)_7;yqWL>=!*Qxfro3&GWEvdd# z+?@hw=u6=)N&G+*`G%2q$}Grdl7f_g&jX5Rqf+el4t}{ zlsT_b(~2wtgwgk=wLd%Nyq_5K(=f=7`AybEPPj-vzHBDXu2Vjk;(ef_MiEh-;lie( z_I=iC1sK=VtJ$K9s)!yJF3d|*%5UYfeVZ4#3Nd!8DH~GzItbf1P(@81MU?963#j;4 z*JBi#cY|Ir&IQIEwVmnIuiC2o0Rm~gEH(G54_L&im|FoQgA&{IVjHhuYyoL9)km^Gp59vN0Uu{-P&+wqBEmj}gdbR!B&!sMCk=(0`%qNdF zdPKD;*>c8ji6`rm@nrP_u>0OI#uAlmS+T|N6UsY{A^ieW*leA4NQd-WUjK9?4b4EI{ZJ;u{y z_=E~qV?#NrJ9%$Fp@~5s7V{iK3{`ryALm^@c^Tp(=x)!R9BcS91B(_hex0 zuMTOEt4E>EJykt93Zdp&UgQ05pw>bYO5{nS+FQ?2i9xJZH8`p!qRp~JV0L^&PR9&K z2wP}PI_g??i3KKK%%7h87=Acf`jPR(xsWnMtKpes=yW2^k9N~{4jPyOg4Suj;;)>P zr(*Rf8m2}2fJ;y8I9NSmpJ=!Ie$|J`)QrVna3Gj;X$f7?)>-vD{>9&qb+9}~Q12|EmRQjVsj%k4#w4~J5P2x)h zDIaz?OKfsd&1!s+QN~%GitFN9Hy-xCY?`xFgUCZslinRC2lH|Tc8bk$$e97SR*$lY z>}sY_)j`^Bo#%G>3(~Z_=tE^hF8fA;Ph}9{eSAp9>Oh6BcaXmOw0P6g)->xl2Dx8b z;{yxGOU>Hj=N_TM{JH-C5k^n!%B()T1CzbLqLCk%!Q^w?5gNI=sI*4?$Vj4pdSn!n zdc*VT5;zKQk8fFz>-o@#;>n{mD3G3~srIb^0V@Ul;w|`))hduT+{wJW*7M13S0w+4 zwo99hy5N{7uE2>1ko3KARk)9bdt&o7R;8dMLRV4pli1b)7tMz7UoV>TQ!^n`&-I%L zo1Yv-4&l_Ki+1xk6~ouf4?*4}2~ocB8xpd6xz+xtU%BQ>iBu^6jUV0J?K_wv?k)Mo z7ox|C3aI#UJM}j*Uq8FjED34MO@oxJiF+Mo8aH*y{5JcJPkV-{GOP8pNN&L*RXw`z zqNMeb>DXHC1|2Cioz>b-^EVuPDvW?WyYvM21R!#=~Ctd zI(@eOQblH{UX@c2CpGll=2M&8+Ei#}jdsm$s0mV5+_@8*PfWqLEv-Nrl7_tTs#$+K z_zI{k1+cJZKUo*w|4#bkyN4*lr*obNU>hg;7KB08K<(F#BaQ7Mv1DIZ8c_@;NVwxP zql8Iv@mnnnLM0#$ygb|n*iWxKW8+ z*lu{8|H0c2WxU_3DZRD(Jlv4vvB8A|co(`i<%!H51BS7~nNQY>2+firy7htG37d%C zSWffqE0JfrjA};d{(#zHMkm*JDW=Xo?U47O&4YTi$kV;!06#8XJ7jF|rQUB#SU6J9W zSW33`4=JQOEH@=G1t*{0O~p~=60IoDcMsC=uslAAVjo6+n$=Z~+DH64w{$(ZCrf$| z4HZ$IquhR~->->PI)dUxID6zCV?A9k&2#szyJo>D>*E8GTw6Kb&&<-r^-Bg*+pDTA z;*XDVECL&nU%O8N8>JmOQW$1$h@xow$A)B6572jW8FUdsCN@cg&w-FZd>w z@U;UoH3lDzsKMqu{CLNt@xCFW_WPPsNpk5wloLj=q!nJ^Gjq>{@Ea4l>v1%1CQ_)bBm)X5M=9-}8 zC82>`M7c+eE0#)Azrs9>9SFVBpH*4h{#NzHhTGRbauVfU$I>Auc@X6qt*vaJ6X!vT zJJ>^KW)?oVXj9giAG9Jq;`BhPcx$)F;q6@+^PkiId{s_72$ zD%&&_7Y7zm;-ng0B^EujeEd24)Jtl}q?|z4iKwD{;B(J@GHMlOGIX+q+mTCd+o>BW zhT8Q!S>+@OeGX{1P0f6aO8X)r$(m%*8X`lfkX+}Ri09hr@u%@ZuKC2b_-o^<+UI_i zQ=ZWQ#IAq-xzl|s=ClK*zO|HZw^Qt!GCG4zF%0;HKOEX!OsMc6mBsco8F#U5Fyx@s z_I6nw+N`eg+9LqbjdnG%=2H8OFCK~$$uH7x4SwEZYWYg1{e$n8cuD#y20j768Jh#y zp^Sz;(A7=eubGWmxb49CR+Rbv`a(3{=OF~3FgASA@jjOUXr6%{ zvc1c{aE*W+whuCrsL@T2j8!BaiRc1-&)X%dl2?s~$bv}9Qo0$^@!{VHUSU1=xk@Mv zc?Q)`@d^J{Gn`=}3KvAP-9R-ZxMXOI^YC2e@Qu(^z}_+D_m}@&e*IPD+CRe?QW^CA z8RZ|W!Sc*H;pywLNB;#-Y!U)2QcMo^AJQTE-ZM9fFkBNy+yvHA-{S*Fal7ZGth$D@ zfQ!1=n;19+CUMf5#!UKBR+YmiaKeRsDM5b7 zIx)po2f(2c9hYA!z-qa?eqAg*Igt6JlWko9x(R0H1*5NDziJLwJJ-;$wggMGUtRz( z-7Tmssk(+;r|oiY`WtfceWVW;u~E zADt=76=1Iq9|h>blM*4l6d4j$d2dC|I?Qe;Tjp!pJ^7JszY->_Mzu;U+@l5GV zjdwRNcg7#nALDIoI2Eb2gn!rVT({x2J}YBu zK*dazSS-hi^aLJkQcs(8Xli>%c~ssk0m3#}Ab+8}aYI`RK_Ll?;-)?x?cA`5K7S1^ zvH;0o@pE_G(uWOG;Vq#P2xcPsajI8mS zWIuWdHiMCxK@?(u06{NmU-&s{)_gwhiCX*X`!PqUI>?uA!$)NTU!+n@ zuJ0%NjWAj!fUO6qE~7ZxdJHuSIv4)DIV2vxxiPc6#;ib1duJNhJWGTN;A?BRvTiddWgAE@ z0+Y(0GyvYSCb^Nr+CL#0dQserWfnh;m+h(j;LZXD$$FuAHoV?}D_psp+uheie?<%c zK-~D#p@zohC-9W@#(#1xf6;6joh8lZe)2kNApR`?I+-3?PWfk17r6N>UHsY`Da3W{ zXA}z9IYU6}QUnji8F4n}dmJK<%hf;_^9^9WEGZeN{!&M2Nw3T^4C&@vNPEL=>1GPm z&{3Un=p|DappinqGC=RL=~lM3%f4e57w-XJA{+XRnhrI>T0i90`Lx=fExtrGDQUIG zX%?$udA-C3VC{6#U%jjdmUSSif`$D7G=I6~v|_l-M7m=~dISTB13ROODeVtO{l+}| zaWCy%+VMh3Ujk5k3fB+D&gwpgyV-3Tm;G)#-LIUsGTAh+<}Y~v*W~@c%V_88vpK5$ zvfDn~+BGYl9Kr#zH9p)78(vSlFrRYL^GT+;K$KAx&g1nTfcn*EKwQU4NEG=qFmfyV zyS%?5vUuAGetn9{PAez0`xnsHdnSH7N2UWRuTIeluq)mp2=I4g-&FX$N&bcc|CU<* zemLOYv1c|ua1p!T`o{nDasYBWAX{~$6(suquy>k1(VEDzo5$$FPg@;{d?Ix~kci3~ zumvKmGZYsy4v)1Hw2pGc4Do5eE=TfSUFaWgM3ctjq9oFKooR(8msLS7h=y;LLZTxAD#Lhl@LxS0`WDyf~(Q z@$atV-11-&f|6g7RBhwdGbcKbYa%^`Z39H}PK8K7d2Eog6tMlS`pfdWl&Iw>p6NyO zDosOJn%|vA@SpRU2v)jX`4kP{6_nP#aILT}DdLaeXzA1RT^4Z0ZEx>j7Z5-R?J3ur z7FD29fp^^%!?rn|^FlnBp8$ElWB|wElxcg%0HOlhb)U*_B>l6GberG#n8G9`#p;U2 zE~=*HaR?rWr<)`^ouPsjEVQC#lVBk(; zFkNuYwiGo7J3CZ>sounM+&8f(v+W$S{)sL%JO#bXTdIEdtnZ@#kecd1uu=siY@N8k zXePMGAysUsLfSo1%ml*X%*x5xBRd3`)IJ(9kW4rX@S|ukQ?faX(WNLYVfpvEyji4%42Qg#~(mETt;Y;L&mE8zjhtC8Q?rMP4th|mEE0E zG{>}^G^uje)_YdGT;4Ac|C&Du$Yo%|vN(C+wqHAudXb^StOj{ZYO)QGO}g$>WaRhD z`iyi}x6v6Ripx98kNjwyHkQUnc&FHW+ssPPvuiO`}bZj$uC0EY|>}-Zqp+C766e%@As7IpBq}(>= zIY%jNC`RV=4@ZXW-{fy&j?F5T>vbGP5;m@*p{vY#tCG0ql$O6Abk~ zMGNWph?q7%+Q5*Tk3aQ)bzD6AlB`c)?$w2;x9~1dYGX$f$zr{Y4~cJ5itMZid<)+3 zp{j`gymdLT&Mid0{5Zs|)f_!KVnPDLdXj{8`Muf^=C3V{(EmK{2wU|p+sUC(^LX(z{$xa64v&pgGeR7S$iV2#UFLR4wuXR)&&R_lD8?AbZWl1mo~gDnu$OWIPK z9{-nCMjwsank1WD@z{`CS0Y}S^RTy$EEucWZ0wJUqcRvqrH=0A9eWns!!EOv!fbLx zY}~!q6N(Dhs-}a(s^;hXt`7;@R$xWctm~84=fsQT?4>d2vI6ma2iq_^?*Gei1dr>? zS8`g=AnzsPf@J&U&Un6opexi9Q@-_|caHHn(NTCBde#9J(!?ywcKaiI)19HRnmRff zfy7H=17MdMW@EKJ8^4{>8o|fh{UD3;UECYv(_7#Nyhe1)%%Y1PutUioXz9c%;_+J= zbp>DQOh(X0lLXY$e~7_>>U-I|L+JqIr7%sBprfq~mb7f!u|W{DCvLcocv;juJUn?v zH%IF?TPI-fTCRsQ@SDnH`l*w9msKF)X~%wI5x@65_)mZ#4pPK37Slh!`}-&GL14OO`X2^~AYb_b&ab*jaWwyTRh$hp z$SCo6>->Ws%5X64?L0fff-nEIn{@SnHPaAN`tqus6^+}v^*S9XE?trGD??IKm1;{^5T{MeYX;4@9+1o1upTH zG_)QCqzEJHIm@1}BEsMNE5QG}a|t;@<*RjoU26aBvP4VmG2Z3Wq=B3KOhNfupov~mW?82V`w&z{|BQiF22TkQd@KTRc zZ{b()C&Dk$PcW0or?{w)ukwFC4qyN>B`|$vP28RlZzg_ia_671Dk&@{O~U&R24BAX`E2tz zUN-YQcw&@q;@f=coNq?nS=0DN{XCWZnVdhIR)Tp`{+h|&KLe^D6v2FQ?Nl*>*@2m6 znXc63m~9LSO~+ZswwM9%R|K|vvs-4K&-90dnpl-$ve0Pn9m(Ysuhpu&ft(TddY=Sh zTHaRk&NwUgF`ue!>;THw<=bxaT#E0Uju+qITQvt0+q806vymZssCeSR2?PkO zvB2$XG@W3@L`iJ(b=ahp7iOR!hkSp_%CNJtzubwM-;@V~s#2=J^7u;j)UUn6!ZyQ) zvP+$hO#iWp<-?^q$(f)k_`T5sIw_c~r(V{Z%7*D^HRgG2&Y{Zz0kPEC7+NwmR%@E* zuvQ7UM}4#&%j>1ys}priz7WM^3NfWru6y1mpdw#bTPq@e2t>#*%f1(ATcZKGn5&2$ zeD^3kYWB4yY6tXZuFPgnxfpiR`O?bD&J~XZ$3zjc1dx!AlJ(SEt|}d5^`Y%siA-QO z%{UPU=8_a&r8W{1LT(^Uo~YQZ&Ht*z~Q>>Vcrbgz@QxV=Se(Fw^2ewwc+^ zMn}moXp~UozB9{E=aJ}%^pXetY5 z2;=^Iok*&ORYIIOFIPy}{e)q1>UVdUnKj<|yTp{sq4kF+I!=$eonlA$;ljcd!n0m3 zaq)WHb-T_M?mb58VU-x4-||EIKc;?&bR?^37e z<(}@Ctx8_O)1ys!3Pl8mo%7uLMLSwjGC0%A{L*KNGvslFd2^4yB#mYAM=tW9^z8(C zIWtQNb?Xcu3d#3{cb6ki=6rOm-zDe7YXy_cw|^)M_~ala8A3={e%kO@=3%@W)hi-W z(%5(JWZMLt22D}h&=KvA*RHu4$jeviuO4d@F!bPR@W@X^o;#&ns$>F^R4;D%UnP-- zP#nW#lyvv4YfOeU_s6Go<>X{%n#8a|6vL8%B z_sJQO%>MD?M_BRlMFLw1**Ds{CmRbU8zmO0kB&S1D_cuFIaYxVqhq@{Tf_uy66NBaa(O}IvXqRAVQTLQz>;L3acJ}d$d+EfM=q| z`kV5R7K$UulYylo*v!`}+HWTfl6xwf<-O@pUA{5Uuem8KdM zmfD6}jl1)avf6CZWsVP3vGw;j>&l1mquzyv+O1jT>#VfzZ_a|298NO}Dt&1~DErfQ zw)-<^Zrfqy{bhCmv?r5795Y>^E`wlowbPG3Q)skUAJ}}j&HMO$emg6?^9v!_ebiuu z)uwrMgQ=X)`es!Ke(}oT?8WjiQwIg!#s|c&z~ky7c`IOWt=C`GTGpwcCTTs@r86&k zwJ1uL>{;#N!8f*iLPl!q^+Y){`{O|VOHi90-*_I3H?>PXf4s+K%Ff8)xSR1Jj!7cx zgPV+)Vy=hzI$ppkB>qdw*S6O0%`@?ohIXU&p1S$_wy#pyht;of{yvG(=Ynz--uB|` z)X!gdK9RVn=5B}{PR0g&W%|M=0iBV)H&dj*psF?5ThtIm+miP9;%s<{4|L?t*LZ&k zZSA=C)B>8kCQH?n2A@Vpb>Z@FM&{!BG8yjOYj*oSVDAkm@uiPhvA#&nzJ^cuIW9U~ z`BeNaxjxIo)oLJ@Wax64q&BLd^sRM_)c48sn5ePyQqvGLw=Kj_=%cgk_=`F(mk{2F zn;P^doE|N57<_9Cdyrx-U3avkx3Owit${W&9Qqevy- zpXCz&*I%#5(nJ{hAcrY#n*%_;v-erM!T@@_yfDwr&L9O#EcUx`{#t5C2E8!dg*qi0 zq$FB~as{+Pn$i1D=F6EmuSwAVg=e3d$gwNp+)3nZ@jV`%CR%wPfo4@vQR!dZic>6( zUW`+YIGQbC?6Au9p4Xe?H6fmDo22z?;>fu0dUbMJKXIh;ctA-(*(&o0Th?ONz|#Dl zY_R-2wXo*h&eiH|YO$D^8B?%MA7+Fu+Z;1} z!+ls&(*=q4_|6yLNfuX_Z{6wQT;y^XKF;6D>-0rgMn>_|CPXPRqRW3lh-1*d)0f+L z%u?7*-PZQKPtm-pTpgjhkkp$Psjm#?V`bkO_qJC}ys~Q`y4NL-?0sO^sc*TW!jNBT zovX6o`1Itg{5O96EuU7PoSfW!K?bPab}2W`CEQehb6KlzQTUMJ_>{ZwaP_wLD(g<` zU;f;mn2cx@)|0Ju>P;ZtEU`$j(?m@*zAQw!r+xgM#kOQgTT#1O>x(J<&Ca+ zCCqrNPcJV0*Kj4betCB-qEOlU&4py`QfQLVptRqoN{K`8m`2b1g1c~42l{8@Zkb3C z94N@j^6THCf(!8Ky##vHA^ z>~h6y#%0bAZIM(h?+z@xs02@I;~76!YK7B^GCFgdysyigNOY)UKj?*Tv48&IG=MGU zvRT5ZSY85sqv@1R)qL0L;C4u%scQV3O1adS3+8DqU2pp*{StJt8MwGq>`ymhXI4*N z>G~cXiVs^^D8#c-#&ebMHp{L4KtVl7F(oL7Z_bOPp%Ss(VR$+cUvQXTcPi}{{ z=+h+PBg#63=gu9*=P~2LogSEIi!T5EP8MPkC|kn5s)mLYxA_6u-o1DeqeO=o(CBeB zkS=jmUKSY$d)SCu@Ts#Ix@VnOjGl5u<9HgRygKlx-iFvDetYAjUq0;8H%Q_|<+7A( zN+-f*GvpAZ=TNIj6#CB2T_Ojb3U{@!!OXPz)zMdtdneQ6w2zms%vn_-li|D15(tx| z64#6G%2QUatvx&xT-88oT>HPJMy}TA%?gPB8du1gYa#C#Z z-H`zD$HmcVFo+hUN$PJ<*VnI8Phbn)UE9ITHZ(mZUl?Sj4AW9w8 z*(_vIek&>Hui}l;HF95#2=e(Y^dZ1oNlIm0XS~?X_Ym1P=c=PW-@TtMN}?pK*tuHY z@Ws(YK1OX?TXj570e%3Cpz}L4EUOTCYE&)En2q+r^CasIgG5#R2chxXKjmQlM3u3E z*%zNNeQj~8(Muh2Ei4^+|3HJ)!GQxhEx%Z~)1KRDS^dH~c+kYAG2QY%~Rk%?r(NHH*L@1x!+7Zj_ z+*1F{nKCPm-yYZ);m_Um_eWg%jGvPP-(Ku-byWyMEZ;r+`xFFrOe@gp5XGx?1-NOY zwVJAb`Sz#WbKAl{;~S#t0$tr7nE8M!A`cicQAEl_wI$^j7h$50jWhq1-2PP#l4)hJ z!`oi5z|XIMYW0TcYc*U*&7Unzm-dqVZC1YqpLwe61&kE=t z6utHmeWvnwYqv~M|LAOf9xjf6yfaEXg?y*Y0k1V~1FhB^{!fwfXE4Rh1>gUNsN*sK z$Nq25e)S3nv#-CiIbHdG|Ku;>59*0Ty<{!+|6#A*NZ&Ai@XrSg$lr#AZ&>@N|F4`H zd->IE@I;DZT3eqHlJ2tY=htRD$;ixP=x;{5p@xPM;C{i5=+&JbcITh>A_8=8#p^E> zH2-FWfL{j`6TPC);nv%4^gDhwacX3yRfVbqO`04LwiC74i#}S0B3mueGhI~^D@)dF z|79URC5=N%kaM(fbC~@9ueUz}{vcobtY;|QqGxExDJO3}z=Vd$=vc+Szr~|FXXseH z)zNCH3;q0AoAzMfUb&wi>`H5Al%9RP48DaKUzZ``yNS-ugcAz~OH5g2OKX_Gb0$JU zLWNCz!`dqEK+uTxF_B_Q6lfmVT2wX0w(jUy9Qu2|{4Y31qM--ZJ4SH38{T1xl%{L@ zT4CNsDRwHz!p8PVivlsayk_WWR+g2M-KK@uV33iOjhZ|;Ayw7UF^lbM7!*%A$vHbR zin(KoR84Vo5C>fjQf~~{J3w0_v%Hasrh<}BdSaWm1V6?yan^4+b$osGpAX6cN30|1 zU07IjqC<@gB!%xQZ8?6lFQ9t$_x2hQaHB#hIBI&?oHLWfL4LTuqdyrLA>hkKY49?D z4G_NKMKO1ETtFSyZ!q`c1`Us2OSe9^W78|)u6+y4kR5+3pRxD!R=`F4))XJFzeo2Q zWlstN5QS~*^t;9;RBE^0J(1HL>p&Mp`NNLt3z#dmR0;; zd#?mNw=4^$2A6dx+r1uWww@ku&GX;nH)}VIcl{oyfLX^0n7Gc&&ThwpR$6t62YP!G zILPVEcJCFxDK2((byWpgH11oGHMI@^I=W6qX0rNYWHwso0$50`qB{3d{T^zy7wB4S z!(5+H)s7wx$#{5sq#sS|>2NcTTlfW`M@0a~>FY6_Vh$-Vj0%|!u0NovxlytkVLDgMOMka)q!d+bnoCwAz!((i0 zPS&Seq%Nx8z)pE~=0c0>p3Zfq*pYe-%yku!7$Q1_vWHAj?xdqVmqQR8O$EiDhKJ)Iv#$aq94?tAG@e98Mv9JB znj35{4zy&t>Hz55o3qs1y?XqahTS}Oj*GE{j>UNQa`p+wUe_vJRBkKt{v7HwlVwx2 z#eNLt1NS~HhKn3{#d^)Wr6F^wy)~(Fx+1m_E6s5C?(=%LL#@#GR zx?`@D+JQat)<93pd$C1THMM*2on?V(4-oRcOWv>WLnsaoZA(oU?9@MhxcOX0*7nex zU%%ud-|rPbuZ<_EqXQS zwm-02py^`?zo;PWm2Y)Zy0v;V7AzX%!87`tl5AB z>KmM*ix<>wxb)x4Gg9DP5T|(Lx)hc4(6EUYZVfa;t&^TXd+8Alt#kTRRj`P&QpP~YQ>A2*I~A$|Jo7QFR`SZc=Z zko`I2K|pfba#YJgtmo2S2@*O?@J;A!f3)j%hLZitHNlr_X|)Fj)C$POo*cyzhXwDK zg;r*pFBXM6W*UQOW0sb_m6h|N1zQGDnmSd!Z|X*#fd=($LG@4i2L@&ooV6yT>AW(E zzQRSY-^Gt*47jEhtn-TV`4J{0vfuNXI8e<*7Py+em70vB2^^i1P-Y`I#9Gv1!03-b}@>Ac+AlCu4a3#r`4IWmKkx{+`N%|dIZszx~L+4xbJhFf|ikZn|MdIC|opq z7D8?RL0tSGckD1Sb+n+7tB=d+Fc!g_$G9+9zR<9Q*vGEU9*Q412tNdJ!rE?AyTEu0 zBAhz*v_?i$TH#7Wcvn`cEAfuy2Q4^+gqpt-KQKH_KBzBKy5oD$23f&bq3pu#gQ-m(Z9?>Qf>$kD=5U zryH-w?*{K+EI;2LkZF}gG4(i(Dym#6dwcV#qcI`$)U6A+qZE5+RB$Vnl+N1AoC&h@ zH8FbbMR!uD1-dgkreJ}_VbW(+bQ69THG${;ZOhq?qMRdV9P3&L2W+yoAv?5b{};jx zghM48&q%j3XWd}^ke^$^A6uhP41*wp4o9j$&(Tp!XgE!t)G39{(_H*c+LM7)h2GlX zlZjs7s0u@T!7bl%pUeii>vrMMnq(prx|aU{%Y{TDL^__ z_&CRtzqy5zUc7sfk2JsChtswoNAWU8@%H6k2d=9bXU7cR!v@arPm9Sr-Qo_A{p-(- zsLGD*E-tX~D0_H#1nRHmoVu6z48gap4(j=1ppU1cW@heJ9|}*xE@s9ie(M93phTbV zC&1zLJDWAtpSLz5=}t?!%HO?z&uf^(lQ?(wcB1H=ii(V$T9(UStXaZ!`OzhDs_2fq zvZ*uF$wbV*XrXhl@E}krmG5TuEnsm>L9A;v^jA1pwxKrEvNt#LaSyaOT{3u-Go*%w zSi}lH)~2t<6@DP4x{LVydDz@>F;?YRb!j?`IMn@Af-t^BYF20u}B@hcS=fW1lo0q0xH$uFB8~vLxLK^W?>Dzh0L{L_dD> z)~-qj;oDUno#at73b4^FQsqXIN8R&^9VnEGR09bS!}M-dim6 zrc@~blo}v_5Q6lkpwg5Mp(!QOLJ!hG1*De%p@Y&1O{(;>X+A#Xy}p0vy3TiAe|Uvt z@3r@ywPyCLduHx&ni*8&%v*2$hL}z5x#B!s&sI{Xy1c!k}q7@u5owfDd&;%eS>TCnOz2-{nkW}z{3gT0twwk*+Wx4!!B)5)p8nq&}txHgcKYYm9q`^!nn@%H2Mu=>o0FwKXw>PcxO$ z{!GZCfKK#`psR@3w%1VeL{tmk(AkR(aK5?-I9FHa$c_hQD=pDA7-qH&PZiwj;6b6? zmZ6k_)*k`FMTD}~?Rw5s?`8Ty_o#}J#x{>qYGDN?!8x zy8ONXVb=t&S(n|F+`ySUm#^mYZ%}vr!^<9Z(@CHU zpy_4Xd^gz(^h|B#zcN(Nj1nB0`4<6Dce?A#N%9O~v6rf^dW~{@$Bp&^d@8R_hA85) zxDPd~q+6oKsv?*n2`l1Acmrm^OBYF8R)|Yb*X>C)l;bZ`3?N3qB#_h5j{%&<;=Iz3 zJ9MmVk|03!l@&lU79#Ua5229K3Nu_(F=~9409nv4+u7Zi0BFE1;ivWH8L52?~PVVhDH2!k$xvFPLf>13)8qwjCz!X8g5>N?Iy>t(jt`Ei% zGg0@LpQq%+b9%*RD@I|?-ys!*7%5bVTTsxs!{6An&CDj>Wv6vgD9$$So-S?mn%`pV za6IK??w)Xo#L;_TN)Ya;?!U+`9=5gJ9_p6UZc&#Ee=YUIM@AGLuD+_`q{}a+5U{6@ zYs()l>S;j1BJ<7_uBfIc3L*<$^{o9+d-8|o4BPr-i?3wpY_+0=J`e5d{Hr0#Hnl8sA$CltuuEH$?f`_7pNC>5{T@nrdkn`%f z-1|3x_>&E>GT|no6SK$cvPVc^uSZn2qOZQE>V$5Fk zAgf&C?)K{~uq~D`wPRsTU3WY5BEN{pn%J)2-P~!xBHH9%?208d3F9%*Ht)nx7zk8N z-8zPsO&8)m`lee|Y&UOhb##acCd`cnzj-Om82Y5={cqr7fv~mk><~vSz*)T{X9N(^ z+h85$KOoOpw%4zn`*6VyWjGzjMd~6e!F*1!tXEjOP!EN*Pj2_3|GYW2F-2XnJ2m$>}?g-&pjP$ZrdWoa@cD@*2HUJ zc!N(Cnm6i!SL4R+9CP+$nM!-vPfG^3CT6{fMb%x*-cATl71wI3H{4CGAh&GZ(4$YE zZ@nGQc_yM3*t!@wAlsg-bGo$(a&ikj(t#37?EB9!{p!=RdB(Id_r7{G3lBcJ9GPjQ zElx|m|Gi4G&$@>cYXB)*N{!CDi|JIGBYN9~ahk^vg@s<8$aWeL!r(}MYP zv6_~{m#uwUUej0pU{)r`fSy%`qkAK;IeA zq;6$B&t*i5>(BN_8<~^K!gr6twgdN~h|PO~p^$ zE7q*nNR5gd_jG$6>*+D8?%{|^<|lD;!kQdYPU{tWyBsVz)>Ip;H$UqO^H8YHNk)^S z>Vo~_vx9)XLWf)XYI;DMm+K2YOCCChgfFU{jenT-^{BmmeLgCqpYLvltz;}_VNVPI zl`HS`&uf>B!c&EXB&O#?W2O5Ho&mRA2g6={Jar}7QWb55S-aQh%$L?MsfunQ;%l4l zZ?uWD!Cmm0=ct6%bBeewf3+b>>(4~YoNQ$D@z1}a(?6jDo4)HUHieWgZ}74wRdOtJ z25VtU93;npfDH-MW1 z>P7>cC35)~^dT$9FAVhE7_>JzykQB3q`PTthH;kk61gIRf1DT}t9(k7;$dCR1$OYfs zb$UQUcJ%N=wI=u<;mF5BmG z0U-M?SnB8#5TGSddAZau)&39E88{NyhX7*_n0w9t1r7bSvNsO0j9;iq`v2{2j;;z^ zkl@3{I;GL};oo>14*}p6K-ktF>FMFtAK$!ni;;<`PV)1Y63Ovv0e`@LHx7CbnVj?> z8ijh7mWl%SXtC zCQ>C4orh1JJh3UBBFy6-P{0DgMf);wAZhnEHb+7Pgb&`^MT*EAiYAdnLtA^mMeMAC z2(=TqRRn^bvDgwkG(-$&kI?Fpd zc^ev9BJg5%85tQ<6><5wo+RNB+TUVH5vB`sD--co=^G0Rm=qEVHPX}5BP#k%r+$qa zd+&Q%em_uBvhVvuW>4d40kh)Md*!OLNVVg+BB8@0E+<(Lg83Y44;6U z&9kVLhK|EqAk3?-#*1M>%)E-@9n(*Z;mORuND~f#zP;y}r*ey$Ml(XR1}5r)Xm4FI z8+8OvHEu>Vsa&yWlzc9irV?`-At*##!dW^hF5+=h6>UAlIs<|5ny<67@PRKBTMwCK zc8zuc0H}$bR%F4M1OiY}?#IW==TsV!`gRfX(3Pn^>fg~!nXF#6Jm2qKtyT%YH3g~?QJ7ee24xx%} zc8Rtr)kI4Iby0QSm?vhj7g`goe3V3FLz?2wnfI>27lxUUZxn6|3d(3jbGks%S$O%a zlIFNEA#`nFikz{KGGdQh7vGfI%#GX_X}f`ip~;o!O4phZP~0@OIAl)D?$u~`_vlGO zEelm3a5vw;eazP=b)~)f^IISdp{gOe)B0mXez%?Qe5VpxDZy<+&oF9#t7Zt!(^5A(!gU{Iz&%o#C^q#}WIKz6 zBXhJO@mw4~r5cO;>+E$k0;Oa>ArG@cw(0zfT20@c_$qVrwVFMm6%IGX*9vk<97MRw z)dkbp;64hDX@H+KNZa?MJhSgMbr^rx`Y1g!Q%WL7X0k1w(Ofl#VTCK+lt8=HPhCAU zw!$fG<%Cq7jqAW;yq)#qo5jHM>Nl;pl%C-PkdMiX{)SY>u3dHbOsyQo7TK-VHJM z!e#e)-OlFt-a=QcyfY6)7`dcIocm_`))u_8&3JDl5%CLm4b$F`(k*TvPP7529W%vd zf&|8-XL=t2z@=bV<7S|64U=>SwwBRUFgJbCaV~xR%`hdmciCD|{Xy>Wp}iF508Nt9 z6CM49FK0CU_J*KvlGChJU#e<>HbB4sgjj6kW==)Pg9NwPMEm8gbWU1uG(R!bXO+`5 z_8~OyF7rJWWXvV(R8Goo52WbMACKip%~!@&uyIy=3zkg-|BAD5E1k2r64xjhZB_SL z)WTQ2bqm>i3fHgsu*v&=3A{ODwX4n>6K~q@(&OE;9qs<7&;KpX9{J_CP0fxHsNmt2 zsY!3%2Y`FW5}%kEG5@_t+mL17ZJkJLY4h8qFQ#AZ!p;~IKXl?XiscyWL15&$@3-`7 z0cjjDV*AvQH!=kUqs(J%R^$s*H;5tCOOJ~Ty}M;Fu`1X zSpT|n?#_JZRCvnQ=gzjKW1y{mW!2NlSkCvf5g&eBrWEHcNUn`OiN@XFB-47NIV3!5 z`s%*jFA~`8x3;Bq=ch;7;4w26I+M4&ygbkKO1Vuo6?@?2@Hw$zo<*`|W=xnodG|n8 zM$U)wK9VmL;NFNA3^ZD6VSjD0c`@5= z)6>bb_{-XWE~w1!CBnPcQJhs_lw{g`E+%Ru9G6p>1rfiay0K@}dTI0d3S2MB>>eW{ z6O6T2$7=n%PQgVXFyBa^Y4q1)V2p(VJ=(1%9wyGfQIhXMF0QWSN5t2Y!0e$!aWT+@7QxD_SHGQe&^vI$T?W0HU z%qpJ5>x7?l>}L2%G~Gk-gZ|Wosug?~4p)9v@#g3v{_t!MvOe9Lr6r-$AD-->U1${t zFTwc3Ba(p}gZhI5dtWgg=@JPH$PUKeJ)ggSbgzK7lJ@D7@b+{!?US+N=Q+sb00R3_ zP=eL3c>{lZdH50rhU7l*as3Lu@f?5gr;m#Vytr6Fsx)OM(8C|+6Z!&9wUKZD4Z(jn z)kz0J{C&ZMb1$4LS%KP8FZwe}1#_~@zTo37Yt+DTrQY=!e~l|~8+1FvKdJ9HIbVVc zs4bmp>AU&wi+EK-0I$o9{7@G6bdy*plV_ym9PE}zer0>D+?o~No)6A9J|4N<6gU>l zWPE6Nyp67qgw^Ggxy_KG`I>$b26^p%=a)*~c}v{FG66c0tsUSHPh`|s9T+O_c5-gR z=TNUVww3Rl_e3nKDD3dR1&JxVXk1jiE(Vmw0v7>M5Zx^MBpz_&LPj1_M z+GGY|h@G9CKDg^5RD}4ClRnIT+Uz?YWykzn$(q%xjj8O&^#u(8vgn6DVLcp8j>JMz z#&?F5+^lLxMn*=#Su=u0!b5*{cJ}@~FW(2%iA0}2e@-nt$ddQ~U3%=PMQyD9;N#9_ zd7kaj6T=QDb+v0B(;XJNJtthqy%GApNQC*rAHtse}K~T4mk2Wdk7FVi- z_g1MW0AfE3RafiRdoe=-QyGOV$rq&DR6-x*FWzQmlvgSwM&7h$=!1V|6zmpJ1scO1 zjt&B97Ky&Sekye6>6No58Tu%<%VW6tsc(ID`xzAUIx;-PWJOw7#?sO<1yxze!#zP2 zcT=Hz_CZ%SRsim=lqzPzM#BV?2YFsAvan+nzxmljNm@Z)De!A_qB5yg-^2VX(V`XB zQG(TNBtBO~V)w|SF>)-*qDHbuo( zjjGz7RAtkp9zWNkC?h*Pa#aJ+ou$=HEGNP%Y|mN{UIaZ)B^%8U5ln=XN)Gz@v2Hs2 zO7e0Jfzb((ZuJ#l4JCZcJM6ItvLor``b_nKSBJ{w0g{jJ^A{X6sS!Sf=?(YGgYhUJ z@TuZDtqUH9eZP0N+8FN&)c&&y+?vJR769nkSxJ@p%-yrk^?8a9UuHYrTzVw}Tnx(v zS3WNsYT{~~mq&fk`*e&UOaRoK)JJJX!%8aGm&Gzf%M41*VaX;8S1o9Tft=6c4_&eg z5)mN&*xZ)9XHKBGl_gcALY66}_w+c8ifoA)Pxsv(Ot6>Ya5>Xav~!hFy|CQr%rx{6 zxYKq$#d5B>+sGZfy)zwNmK;tTdimG zMetZvi@&&>%!TK{Tr9@r${v0p!EQvLVTOq1>R!$69j-Sj#2QI^F0|km$`|$HZW|(X+#zaK?z}^Ik#7@u=-OfVATyo{Ajaa?-V2Ll=R7 zMw(Oy3MuN3XJ?ZahHD^3vu&Px1+?M@1a2mUu(q(GflCZ`x-Xm$JKAypn;swa8V631 z%ZKg;7m4uQjNpv3Yn&cVJKI%Fx0tw11J2O#yV|(bSCPQ(fS5G=AFv-Kzk%dPdJ$J% zetl>EmIS5_;=`ZC;mUN*WdcOmxg^t3vk%=Zi~u+^Zmep1p{yn7!WYD_7{>X+P@9~2 zn|tn#gF>a)b35BJ)!}@aBm1-7 zr&H3)#5~+JqIKVGljDV!wJbq9(hN4r_=BM zs<$86-53}N+7kPn%?OCmiy8mPRn6}AlGc9AHd$AE@bfwz!P`fc-<<7`RVLNJzwwJ_ z^z9{3wKM}OtJ;sTA9J^E-n_?}d1kO|Y3cIstfQnbV0uN*)IL3)m?Hrlzb1w$lJpWc zl+%x>0DhlyXcztuCj$1>UET7KPU5ef^x>!J1I7}SdwKswsqVD_?9iP@!m0k)e*ZpQ z6yU(f2z$u>x8$d_Yca6$b3&szoX=Vxz|2mB)=?obh*8v==Q|F=IP zLnnsyqW0Bq1w^>dfyy$R2K!j?QNXDB0*Aqm z)p9S{n)J4Lj|Vb!8}Ib^%vN{k3Z#Kp8Pifuxnq7#IVge7LAGF~{Ls4~Igi(`d5}EX z)J~QJzDhL}lMF1j{VPir&FN0(iu(dt_Qhz{NdUaEeNK8eCgpIl3DZu^XH<*Z&N@EF6W46rb%Y0Um>(f$Gmj>2u-)Bo8p;Xp&HgMdm4A>rmf zaIcfgku7C|LQW%Dah56Q_b7E)O$~L>9*l3yApY2b1Vh%t_ zXEd-_1xHRH1d@1{-|9C(qedNk^@H>Cx$nf_xF1>Yi=N~&_ruP)I5KW~B&ky;J zJqjl%`<}Dv5!Y|LJBzu~#M@R(n#ky|rEF0k$@Ckh^=4={g4=hTt_t00yzFeg5OSN5 zb$H%p-+Dl?lS@!~&tc9-FbZdbm_<<2h4t;$HATrZLkjj1qNf+G@4c%~+sn0*N0jmK z-?(p(;O>N25sjU;LC|L7ME6U4GbbYA)|Tg_N8s^;lUAg!IHW4UC^~-Sn_q7B>-)Vv z5({B0D1;bk(6alODfL2R5s_O%JEoSmNLZCs?)G$^0$BfL%xpRZ7@0R0#YWHP^#O`@amC8<_ex93nz1w7} z@idJz!`*48o0rk?6}Y7G{oTsE@3!{1+yE1;I$;s(QZmWhF@Zj?+XI=~>rpv@7PWo?|((+v)V@K8|By0^{oW&EYA&)yp5MUEq=VzL0CeAmd(eL7voqvzQ0?RS*X*h zN$=it9slXxl$x8S#5pgO-p75W(o$VB#>PQvWG^4GI9EtPQYEp#ia}dipN13{)i>{D zH4of)**$@FPno~nVq@Dk85=69Q7Qc6Y4Lmpiq3b|l1!nZpKXz5fEA%))}#ZuKhdze zsF)7nGZ0y_E-_v;gkEU0r)f54KPp1k!!F$Y`Tp5FM#Bf)%q&cq4VK>>nErr@t zL(R<9|LZYmf-jR)Ul*tA;f6?&VgA-t_{6@}t6)6n7B%9=ZXcm_!eG@sPTsq8%IEes z(NWUWyeh!V6~wK$*(6>PoL+5TC^l(I_l3u0F6DA>?kx53HmBHH0m;Cs=*l~M+kv6` z39yQB?Wk|_R&;p--B3@p=MOzTZ9)ocD)f78<1}KQ(MHBP#^t9jd1W0CF{=?bv0z4j zeU`l#LoD+N`q<(W4u_);gG&3){~*##&HtQYv~MyHfPNoIH7~h4+(+DYVkx{by@D54 z6Cm0UbjuE&y0pJ?`{*lmcx-^l$lk9ruLA-3-0bVZYS-I zd4>$uzEUi4Zg%PwF1`f$cR6M1k~2Wjbpt78ST(z9eO;zYN+=@Vuv&RAVxH zm8L1Gl7PxLl|w)!UYLc&U5!!vL;cfl98TUxxQNG{B#K7j+SG<$<9FeUevIn{ed;QH zZR$*9{QV}FoxM1&zRjrB#5)vK4ms}gnSv2oC>^zp=<2Y@OJ<2Sk2kHTNoH;9N)=uO zMl1$Z$-oQ?EkFulmAXAQg9x#1M_RP@*Q!Vf*}&kIyUgrJkq7 zqqf)DS95yVU0U2ay*d(pBv1aBZC8P=w01-dEWmYj!W%lb63(s!lfLLX!?|BrOz(2nQCHVku%9R`JH|qvB?#~}e%(H>yxtt`w`y1_ z6pGMBAxeBf*XCQ1jD6<^(;?F%yaWz(tW7{6J71@)07OMdJ2S4c!_8a-J9T@dev1=B zv^X$^3RexVSISuB)QKy&JFK_D>-T)k zI22vCJM2Y<6E7u!9qW9w0kZ*OIJ+vRP={k8xk_>AmTin5#+b=ifxiEt?$cqbFDWT$ zo&7UlleiDsK0t++2nTJ8Q_r)6kXWhZHd-TKp2%qLtF$nYpnbZ%2neM_Sy!TYtCxXEOh&rb(Srw1dl1)Ok1XFDx61c)HIBlIpCU}FQ%#gJYOMJIq{RX*)>#W9 z8Gp8KJa}|SE<||%0VH}r)l2fghkEH@(5GE;dVk(lSd8De(#qI5Rs4!F9_z-a4|2Qp>oR* zqjkgFpkIBiKTx7uWwuqQ-9Her9%)`mGS4bWbRa^bbE|TbUAW1!BUqW12(IX#34pv_ zqYR!UPM>-!dOhtL?O22SMh})sxbwr^8yxd3#eCqsj=L6S+zYkbzi>@D56xSiY^`ZbLOC!k~naBK(EeO zh)E9!?tdDkZnUyGCzmorW&KQ+~qyzQWAH?L=Uqw!l+@g!&UO zh&DIlxt%oc0mo)`r&@4XMrQq}jaYmvRa`MHXK8G|w{LY|uE_+^_lMq@!XTd7K+Xj3aMR?>6cXEUv#3$RYjlF9S&k6?3| z+V(w7-udEUsE7+a=}s{a=c2}R?L@97aYgvGsW-vzi>e1}YFV~)aXneAP(mB-yTyyP zF1q{y0X|-0cu=|cs?nRyyFY7}^Jf}mjT+;xtpNK4@Aj+h)(#b;$oZ&9X}+Q;y4|nn z7Gq-et>nM zUlS}rjNG&2t4l|B>q_#!#Xg#u6LkDYBB9b^?fSi)s^sH{a7RG0OZ@|AfMuDsV$n=1 zlHjZ16XHVbCYVJD4CubdxX6^Yppl42B!#SD6;_R4>V2Ei3w81(4a1#3uU<11FstL&tUgEBPuA|I z5nX~X(Rq~KYygv|Ry=BO#n45xYGcRTOgq6z-M-_KSZc8}cCjq-TSj@j;4Qa+hVW94 z2?BUv8{VYPXapxkms>}gy^~ELIE`|(YG5;sG#s)tdHM=PLyl9q*@E?s&}MgGTd{6M zGF($TxF%h{9<=+0(zVdEV|~OwYCmOSTx(IRpv8iZq!evxrNm(AL#aMn)%?t|W3*>q zsr0Ug8K;kA{syfW|BK*`wV|KdMg1zWSNx*a=N>p9r>P}>6^VQ7#VZSK%~(`Cj8!dT z4Q~~!2S~ANZXU*pJp4D{!MrwW+NNWL`w(-~RM^^V!UaK;uj=g3mTqM5WU;=%h}Fj3 z76Ym$YFXfVJiEwlUu>qHwAp#qiUMVz!Yl3{?WkJ)@Phi zz#w(u_5DQjPiD1ed&v@cEa=1BoKaIe!=g-n*YZ+S4}8j@PQ@NRL;+<*F03c4sd$Ut z*~)$4F?sK4bPHW)Ufk+uLsvj?8^eq(Yyrg`9u{**ca{6`C*f6l_M-^h{en&~CmGNkI$|?X8t?4>o zpN1m>RXm<1Z{fA4i0+&iEXouYAvPaKkaRLbP;o0n@Hw4=4Mkp{l4>xKa853C?C7Rm zQ#*aMgFCP#JV=+Zq+X_zEgfKCBp8#N#xY6ZFCNgTtET7E9sp6^4=*oeHm5)InR@&e zwB>W(D4de&M@7j7VSSAq`H>^N>H`p^Rd}^B{dL@5&;b z96-?vOx!-jt5p*UPtkGW1K0@O9V7q6^Z@{1cIN`PJM2D)FRc)7&83EU`A4sR`)Vf~sF>22ss7Qj%o%m)-+)8NDGLSj|;cL1kyMjK^|BZ_6v5mPQ|L^$9@BSgql zYu>;?$v460Zq_&&y=v3-^(YWk!2y6z#cihsE;<6kzTZ1D`U_y_D<%@Zpt80eT<{kiDd5XRZ}e_53ag zcF|WdZqv`BVo`AP^t75^vTR>;}1d9ox8GCZ#`*{e=WER&JmvV zJ>f7QA^hNFV1ltu*A1gI&{yjp^9Po4eFMb5@U>MEwLZ|pb{b2@=#{+<4fa&B2 zI0l9|{`TmTmnRUOUJhBQHaNn={`UKg1Ip{$s$!@ABRu`fAC$u7lw4V90HikEk`1Aa z0y;hdHKiee)DpUCYN75WIq~ObhK;n^kT4AvFFupE*Majis z(QC6uaqdId*|7|$a97F5$hghQ+9>Iw4%(0&2tKr*2f9p)mq>`@e^{_OG@&-%BXM z=+c5Hm@KGmu_!PvK+I-vG1T!%u@3pMKuTFg!+4PE^ul*!gK5K9!kE5^sJDd*hxMfd z#lQD0Fxe|toX3UqWUV~M3UFVgq+}VZ4~gnXLyQ8|#md?>J;c{S_ zf5mul4QRS}&jXFYmFHPV&yrH|epP8|Yun&E13&4J>7!ZA9HU+j#0&90qDvQQ>+73< zv>V0&!rWDbB;xE+UD!?rEX;YLKM0_sRpuuhEV2*`GdRT_t&7}5cmFE1r?QR&=g4V{j(?92M}=p&&pq&;>`?QA*Y}aDrzazOXSn=L1Wh! zM{K$7SR&+orTdvWL1B@>09+u`iSpI0Lcc4VUN0O5ss`T>m%=IyxM6P$&UdXxwPNN! zp*!MCpC4w7Z`$Wo(YLc#gph$Kjx(5(;E2@gO+;!bt9#*0B2 z6u3T#NDqMeZ9386==4I46mK^3m{tHRQ8(~^+K!GvV^?n`^&p|F@smnU==1^LD-|r7 z3d$<$cf3-3)T^0?wq#;#T&=L4>_GWOgvaC?ZJ@?aOI5ud>t5ag4=7tIr=$z8yd_5f z+G-~bHh{3PvlrH+e*fY>00SD(dc@X@lPjOby0`m92*UZP6>`>R@>SX!b+i)W+5EP2 zsij?r+F1GlAi^@-J##y0W(hSjN%g4{MDv#m8|;-cph>mU;g1d|lt_WHwn$>v-(7fv z^1cnlenO}7;~F4Sur%cf6Qy)tG@=lfWK||V0Mm^Vb^Jw$w4hep2s(ME)Ub_)jfM*f zbC$t^%lCTJoY!lkpkAy%>D&538#?F$)I=lNNEP75fkeYNoE52=sRBFw-d=05?DS7_ z#|?q`w;L#h?v`zrz-hZOeN~KQebxHEb)E`W!K@YCnAGJbnIzAyU#s97a)v{VL@+0d z1dp(kZL|pUSXPK*O-+Ss640y{^;`CfQi0TCt@s@%@b7{LhK^<>?|GQo%* z`7(v8K<(neTjE8qmnzV;G)llC$!%eh+O(yV)PA-1S%+B5D&I_BSPSjW=P#d48^jhH zdHC$MBBBg?Qcpz)TEJ-VneR-*u|ijcy_u1D<0)^%nx-Q_%yy|Pv%o^~(HFhoQ}zK@ zRBnlMBJB!y_^mOciU)h0xbybVD<#*U<|4)*2(=u6x(Ymu6JTuuCXX7*nteaOKzDC;!s$YW*R;L`X!mRA z<`AO`IZ_?1#FPs99N8b9Jm`zGgYw1&IWA#|$#7;ofPtKSfXEi$2N0asqZW=0MrrTH z@sO_0CJ3egL;zOm^#bntScm+KII%Al4;832s7yM&uy_s|l(d8urX6)*#8vBaea61( zE<}$`n=Rhqs4$f%KjK#eJcn|QQAnA>!2SNT4ly!Zt%SS9fDD10O0FD%n#;3=_V@Rd z=Q%5`e*~W@`eda}%I73(qf^+FfPN1wXW~?T;naC{(r^)Dl_GurBiI_C0vkMzOiMf< zojypIWE;bCD>RF@9xhe3(T4?5A~LMNv!FKqGMf!YVAv-P1yQCeI3SunNjPPEf)k zJI*ghLK#*2HC&!ODo$T3!UkKFT>SmC`xHwl%H6mc7E=yZRzdBi&|Sl5iR1hT@1(0s zDK{oa&)WjUw7|H|V_6T6x0pbJ&Zs;BXe~J{K9oVxbBlX|=t0Ksy+`0F00$&K@w6=P zJubza<>z0gIDW7Hu|EV=ivfOE`IsEX-#oBmhm7vP4?7j4`R55Io0#&00Jd0g*NMUS z^ZZe7AlQ7d{qb+Z^!v^LlvE6#jtB`PvK=J8h`EA(U)YPD1eoXnVF|E>_FAFvz==<9 zc=mbcfzNrBmX-r31gR9i_LmRmq5&EZ?5~@dxmT8ftnE8l^}p1TN=r+dpsc_)_UF%^ zYL9e)s)|%Ku=-e&@dumVuXZGUe`JSX5E@z-gu%RoYpMnmNSwIBXwd!pzSGGmDH@H9 zY^8%o8-*nkB#;sWUDt?!eCzJ%sBOD)zvtN5^B$&n6&M&E9esV91y6Ry1qC9^DM9rwf_^XpM|C~H= zfXjOVk1F%eQ%;=d=K%R}xD!qKe+r)f*geuE<(=sDpXYly0ozsQ`ggkjd%-`~^1*B6 ze?|I#!=hnWHt|SsvixxE!~mR_vcm;mdWWpXNPznwR>YsG_FGkfMlp?71Ws(o-%bTO8`iM=?*;#BGX7Vj z|MQ{&rD$8eKT3W5Q*g0d- zV%JIJaJ5%0DvPUXxh`=>`I-_v=ebr|rWnW>gQ1FCV)b&}TM_@tJp*VEyJD*~3_QGV zGv1bSb1Q%G^0jlc=e>^>7ShRVz;0VjO^b=reOu0i8ZRSmM{Tp2D^fukZ1`@896}O6 zN|MUWa~k`QOD&4|**oU(5_-Ft9Rl8YD5 zl~ji(JR_}}$;U0 z)Wb^uH7t*JV(Q}=np%s(H!r{I=*g;%F-m+ojYBSeJRon)#83QqDWOo9r5=3(YV);A5rBga7$nd65MA7{oKN zK<;FHY5M*3#nV`P@YkU!Z|8p=cwjs{I00kPrb7EDc=nPe5@H z%x>k?E0U^S`k~j;-?$4@Z)ysV(k`gGDShff)Usyc2K3R%n^4qv@@qn*8=+#+zlLtF z1jU?D*xgO{Y>aipF#;r2Kvge*zG?teag2!-n@q3Yys`A0po?BXoTd-$NS0}I#InzM zXFHakAywem^ZdeiOGIsQs7&>26K)W-DkZcYH6~rOT!vlg*GK&yE`8|M?JQ%fB6@ot zZw@={0e~Al^Y`!H?RS2iDH&1X;$REQ+26+Y8;CqWwqC!=#q;QUsJ1>^RAT(?HuuNZ z`7Z;7S|j2!bnx(AjC%vA!z$UjgF7K}FN?SKr}?dgY;gw@DEZn6NA{DGh_RVF?JRoy8PN?XCWZ zongs0QP0yraJp+Jh7Ga`JMQ%omblxLrhJwC=BlTd9fI3);vaGBOYi`Qt0g#E*Z-vu z&%6PeI7Un$*929xy&O=ccSC5%E}j&ieU*}2)^2EPi{kS9E?8n;b2Wd*_oB&{I%W9J z&mV5;tbMn1wwfukANuf;iNGq0-DBRd!z&yh>JVA3UZe|e2xDr9-(MF<=NXgR?SWx4 zQ7Az$iQ;&@RGI4MmS{EI4Y>j^81A`_SB8?>4I`uGbU@y2z)`<}dRaEM3sVjXl|m@$ zN#DFXZA*W9LURpZoC>oaj(%R?_7piK#L=tB^(}6e@ws5YZxuLF7SPAD2U!UQ1Y}~h995!BI#R+@u z4?7O^7g;r-&Jqab-*|Q5Tgr7_?2ijneJ+=fIj8mFt z^Hay__mfczIzTyN=A~GLblq2(}@K zp}qoF7gvSuD6lA7zpkF*l=1h`e3LDM?YO$$yecUh#h!51NF8-tvOC;Zyed>Q|nO`NVI?$4%wu`f&d3gnpW|Hgee@N5RJ2S^cR{U3cskJ5enTtV(@mQFuw1c_> zzkon(50tBJLBjQiSmxqumVE^ACsQ06^8@($gd|ijU->=r2Oqp+$>n74xR2i#stcj} zCBL&aquha*%g4sBKitdor+-}qbzzb$*ulgog7Y6ci2#Gd%sszsq>0CPYxQy5+-wvbQj8$2t#|#0V&3F1ecgLs ze>TVMwC)hadugirSgI;T_>5SA_}=HdU%j6j9vN!CTHBuv++Z$SOHIz24Mk|N$6SUg zJErQfc1KYKcY425PbOT<`*R61fRZAKIy)30cVLU|8?yFfkioA0{>x5oYwIRX6;`~l zY*Q^k>n87)#TIq11_cH2IMl8F(&z1*F|T@lhi)HpuKmDNw*7;Z}^!%lp|&X=4EiUH#TL3 zi$6Up9By|w^OrgvP6`j(l0yE(CD2)vIh2eKu1(RKJv$KeQ zjKcsjdW`qID_5NLAI}V^k&GHhSRk}?i|NEP{l5BjE#MdS5TJX)ABO8tQt!ygRDyu| z!+($Fca=N^i12okG6D;;tu&)9=ji3^>*0Wc30E_x>EEZmRTX6 zAKI2=oSW2r@{y}^@mm22a=ELE;vZVi;|*Brj*$^VV?+1#Hf0XAFniOV-4wFt;gOl8 zb|_N1pgA#nH{Vn0@#XifUqq#w)8Qh#*3 zA*=&4fY@2Bt*!clgxj7?Sb|BKgs!pdbb5c@n3_z&GfQk)mDkWbRxvx lW<=u_LtMuH8&k7GaaSkHs84=&`V{a_URvb=>YkC${{vSmNDu%3 literal 0 HcmV?d00001 diff --git a/images/server-cluster-add-single-vpc.png b/images/server-cluster-add-single-vpc.png new file mode 100644 index 0000000000000000000000000000000000000000..f71a1e651b85fab5fef94123a80fe733be1ac825 GIT binary patch literal 73537 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

2Vu`2 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's Layer-3 gateway (SVI), and the address pool :doc:`DHCP ` hands out. For a multi-site V-Net, create the subnet and assign it to every site the V-Net spans before adding the gateway. + - Tenant VPC + * - ``loopback`` + - Loopback IPs for Netris hardware (switches, SoftGates). + - System VPC + * - ``management`` + - Out-of-band management IPs for switches and SoftGates; a management-purpose subnet also drives ZTP. (Since 4.9, management subnets can also be used in V-Nets and VPCs.) + - System VPC + * - ``load-balancer`` + - :doc:`L4 Load Balancer ` frontend VIP pool. + - System VPC + * - ``nat`` + - :doc:`NAT ` public addresses (SNAT pools and DNAT targets). + - System VPC + * - ``inactive`` + - Nothing — reserve or document a prefix for future use. + - — + +See the :doc:`V-Net `, :doc:`L4 Load Balancer `, :doc:`NAT `, and :doc:`DHCP and DHCP Relay ` pages for how each service consumes its subnet, and :doc:`Netris VPC ` for why loopback, management, load-balancer, and nat subnets live in the System VPC. + Add an Allocation ----------------- diff --git a/monitoring-observability/healthchecks.rst b/monitoring-observability/healthchecks.rst index 0d766c81..c53ff1c8 100644 --- a/monitoring-observability/healthchecks.rst +++ b/monitoring-observability/healthchecks.rst @@ -102,7 +102,7 @@ There are three main categories of healthchecks in Netris: * - Node Health - sys_service - Monitors service status: - + - rsyslog - collectd - switchd @@ -165,20 +165,58 @@ There are three main categories of healthchecks in Netris: - * - Switch Port Health - check_port - - Checks + - Checks: - port status - % of RX/TX bandwidth utilization - - laser signal level threshold breach + - threshold breach + + - RX/TX drops + - RX/TX errors + - laser signal level - transceiver temperature - transceiver presence - Bit Error Rate (BER) - - - OK - port is UP, and RX/TX utilization is below Warning threshold, Laser Signal Levels are below Warning threshold, pluggable is present or the port is fixed, temperature below threshold, BER below threshold - - WARNING - port is UP and (RX/TX utilization is above Warning threshold or Laser Signal Levels are above Warning threshold), or temperature above Warning threshold - - CRITICAL - port is DOWN, or RX/TX utilization is above Critical threshold, or Laser Signal Levels are above Critical threshold, or pluggable is absent, or temperature above Critical threshold, or BER above Critical threshold - - swp57s0 port is UP, 0% RX Utilized of 1 Gbps, 0% TX Utilized of 1 Gbps + - OK - port is UP, and all metrics are below the Warning threshold, pluggable is present or the port is fixed + - WARNING - port is UP and any one or more metrics are above Warning threshold, but below Critical threshold + - CRITICAL - port is DOWN, or any one or more metrics are above Critical threshold, or pluggable is absent + - + - swp57s0 port is UP, 0% RX Utilized of 1 Gbps, 0% TX Utilized of 1 Gbps + - swp9s1 in-drops:critical(>=0.1%),out-drops:ok,in-errors:ok,out-errors:ok, port is UP, 0% RX Utilized of 200 Gbps, 0% TX Utilized of 200 Gbps, Signal | Levels(dBm) per lane = N/A, Temperature: N/A, Bit Error Rate: N/A + - in-drops Increase percentage is 0.03%. - - - TX/RX Warning threshold default 70 - - TX/RX Critical threshold default 90 - - Laser signal levels thresholds are taken from the transceiver \ No newline at end of file + - TX/RX bandwidth utilization Warning threshold default 70 + - TX/RX bandwidth utilization Critical threshold default 90 + - Laser signal levels thresholds are taken from the transceiver + - TX/RX drops: Warning threshold percentage ≥ 0.01% AND Δdrops/errors > 50; Critical threshold percentage ≥ 0.1% AND Δdrops/errors > 50 + +RX/TX drops and errors threshold calculation method +===================================================== + +.. tip:: + You can verify the counter values on a Cumulus switch by running the following command: + + .. code-block:: bash + + nv show interface --view counters -o json + +.. tip:: + Only physical interfaces are evaluated. + +**Calculation**: + +For each of the four drop/error counters (``in-drops``, ``out-drops``, ``in-errors``, ``out-errors``), the check performs the following steps: + +#. Read the counter value from the previous check run. If no previous value exists, return OK and store the current value. +#. Read the current counter value. +#. Read the corresponding packet counter (``in-pkts`` for ``in-drops`` / ``in-errors``; ``out-pkts`` for ``out-drops`` / ``out-errors``) from the previous check run. If no previous value exists, return OK and store the current value. +#. Read the current packet counter value. +#. Calculate the drop/error percentage using the Δ (Δ = current value − previous value). + +.. code-block:: text + + in_drop_percentage = 100 * Δin_drops / (Δin_packets + Δin_drops) + out_drop_percentage = 100 * Δout_drops / (Δout_packets + Δout_drops) + in_error_percentage = 100 * Δin_errors / (Δin_packets + Δin_errors) + out_error_percentage = 100 * Δout_errors / (Δout_packets + Δout_errors) \ No newline at end of file diff --git a/monitoring-observability/looking-glass.rst b/monitoring-observability/looking-glass.rst new file mode 100644 index 00000000..84e64183 --- /dev/null +++ b/monitoring-observability/looking-glass.rst @@ -0,0 +1,70 @@ +.. meta:: + :description: Netris Looking Glass + +====================== +Looking Glass +====================== + +The Looking Glass is a GUI-based tool for looking up routing information from a switch or SoftGate perspective. You can access the Looking Glass either from Topology, individually for every device (right click on device → details → Looking Glass), or by navigating to Network → Looking Glass then selecting the device from the top-left dropdown menu. + +Looking Glass controls described for IPv4/IPv6 protocol families. + +* **VPC** - select a VPC. +* **BGP Summary** - Shows the summary of BGP adjacencies with neighbors, interface names, prefixes received. You can click on the neighbor name then query for the list of advertised/received prefixes. +* **BGP Route** - Lookup the BGP table (RIB) for the given address. +* **Route** - Lookup switch routing table for the given address. +* **Traceroute** - Conduct a traceroute from the selected device towards the given destination, optionally allowing to determine the source IP address. +* **Ping** - Execute a ping on the selected device towards the given destination, optionally allowing to select the source IP address. + +Example: listing BGP neighbors of a switch and number of received prefixes for the Underlay VPC. + +.. image:: ../images/lg_summary.png + :align: center + +.. raw:: html + +

Figure: Looking Glass BGP summary

+ +Example: BGP Route - looking up V-Net subnet from switch11 perspective. Switch11 is load balancing between four available paths. + +.. image:: ../images/lg_bgp_route.png + :align: center + +.. raw:: html + +

Figure: Looking Glass BGP route

+ +Example: Ping. + +.. image:: ../images/lg_ping.png + :align: center + +.. raw:: html + +

Figure: Looking Glass ping

+ +Looking Glass controls described for the EVPN family. + +* **VPC** - select a VPC. +* **BGP Summary** - Show brief summary of BGP adjacencies with neighbors, interface names, and EVPN prefixes received. +* **VNI** - List VNIs learned. +* **BGP EVPN** - List detailed EVPN routing information optionally for the given route distinguisher. +* **MAC table** - List MAC address table for the given VNI. + +Example: Listing MAC addresses on VNI 50. + +.. image:: ../images/lg_mac.png + :align: center + +.. raw:: html + +

Figure: Looking Glass MAC table

+ +Example: EVPN routing information listing for a specified route distinguisher. + +.. image:: ../images/lg_rd.png + :align: center + +.. raw:: html + +

Figure: Looking Glass EVPN route distinguisher

diff --git a/visibility.rst b/monitoring-observability/visibility.rst similarity index 91% rename from visibility.rst rename to monitoring-observability/visibility.rst index 53c898d5..c9b8813e 100644 --- a/visibility.rst +++ b/monitoring-observability/visibility.rst @@ -14,12 +14,12 @@ To start with Graph Boards, first, you need to add a new Graph Board. 1. Navigate to Telescope → Graph Boards, open the dropdown menu in the top left corner, then click + button. -.. image:: images/add_board.png +.. image:: ../images/add_board.png :align: center 2. Type a name and assign it to one of the tenants that you manage. Later on, you can optionally mark the Graph Board as public if you want the particular board to be visible to all users across multiple tenants. -.. image:: images/create_board.png +.. image:: ../images/create_board.png :align: center Now you can add graphs by clicking +Add graph. @@ -39,17 +39,17 @@ Description of +Add graph fields: Example: Sum of traffic on two ISP uplinks. -.. image:: images/add_graph.png +.. image:: ../images/add_graph.png :align: center Example: Sum of the traffic on all ports under the service called “PC06 V-NET”. -.. image:: images/add_graph2.png +.. image:: ../images/add_graph2.png :align: center Screenshot: Listing of a Graph Board with the explanation of the controls. -.. image:: images/graph_board.png +.. image:: ../images/graph_board.png :align: center API Logs @@ -74,13 +74,13 @@ By clicking on each title you can see the details of the checks on the right sid Screenshot: Dashboard showing details of “Hardware Health.” -.. image:: images/hardware_health.png +.. image:: ../images/hardware_health.png :align: center Port up/down state can be set to “Save as normal.” So the system will alarm only if the actual state is different from the saved as the normal state. Screenshot: “Save as normal” on selected ports. -.. image:: images/saveasnormal.png +.. image:: ../images/saveasnormal.png :align: center diff --git a/nat.rst b/nat.rst new file mode 100644 index 00000000..27f97b69 --- /dev/null +++ b/nat.rst @@ -0,0 +1,71 @@ +.. meta:: + :description: Netris NAT + +.. _nat_def: + +====================== +NAT +====================== + +If you utilize private address space for your hosts, you may need a NAT service to enable internet access. Netris SoftGate nodes are required for NAT (Network Address Translation) functionality to work and support SNAT and DNAT features. + +Enabling NAT +------------ +To enable NAT for a given site, you first need to create a subnet with NAT purpose (see the :doc:`Create subnets for NAT service ` section on the IPAM page). The NAT IP addresses can be used for SNAT or DNAT as a global IP address (the public IP visible on the Internet). NAT IP pools are IP address ranges that SNAT can use as a rolling global IP (for a larger scale, similar to carrier-grade SNAT). SNAT is always overloading the ports, so many local hosts can share one or just a few public IP addresses. You can add as many NAT IP addresses and NAT pools as you need. Adding an IP Subnet under Network → IPAM. + +Defining NAT rules +------------------ +NAT rules are defined under Network → NAT. + +Example: SNAT all hosts on 10.0.1.0/24 subnet to the Internet using 192.0.2.128 as a global IP. + +.. image:: images/snat_add.png + :align: center + +.. raw:: html + +

Figure: SNAT rule example

+ +Example: Port forwarding. DNAT the traffic destined to 192.0.2.130:8080 to be forwarded to the host 10.0.1.100 on port tcp/80. + +.. image:: images/dnat_add.png + :align: center + +.. raw:: html + +

Figure: DNAT port forwarding example

+ +.. list-table:: NAT Rule Fields + :widths: 25 75 + :header-rows: 1 + + * - Name + - Unique name. + * - **State** + - State of rule (enabled or disabled). + * - **Site** + - Site to apply the rule. + * - **Action** + - *SNAT* - Replace the source IP address with specified NAT IP along with port overloading. + *DNAT* - Replace the destination IP address and/or destination port with specified NAT IP. + *ACCEPT* - Silently forward, typically used to add an exclusion to broader SNAT or DNAT rule. + * - **Protocol** + - *All* - Match any IP protocol. + *TCP* - Match TCP traffic and ports. + *UDP* - Match UDP traffic and ports. + *ICMP* - Match ICMP traffic. + * - **Source** + - *Address* - Source IP address to match. + *Port* - Source ports range to match with this value (TCP/UDP). + * - **Destination** + - *Address* - Destination IP address to match. In the case of DNAT it should be one of the predefined NAT IP addresses. + *Port* - For DNAT only, to match a single destination port. + *Ports* - For SNAT/ACCEPT only. Destination ports range to match with this value (TCP/UDP). + * - **DNAT to IP** + - The global IP address for SNAT to be visible on the Public Internet. The internal IP address for DNAT to replace the original destination address with. + * - **DNAT to Port** + - The Port to which destination Port of the packet should be NAT'd. + * - **Status** + - Administrative state (enable/disable). + * - **Comment** + - Free optional comment. diff --git a/netris-architecture.rst b/netris-architecture.rst index df5d9635..ed2ed969 100644 --- a/netris-architecture.rst +++ b/netris-architecture.rst @@ -127,7 +127,7 @@ Netris is built on the following security design principles: * **Customer-Controlled Security Boundary:** Because the Netris Controller is deployed within the customer's environment, organizations retain full control over the security perimeter. Netris does not offer hosted control planes. -* **Audit Logging:** All requests processed by the Netris API are logged. Because the web GUI operates through the same API, UI activity is also captured in the audit logs. Logs can be retrieved programmatically through the controller API or inspected in the GUI. See :doc:`visibility` for details. +* **Audit Logging:** All requests processed by the Netris API are logged. Because the web GUI operates through the same API, UI activity is also captured in the audit logs. Logs can be retrieved programmatically through the controller API or inspected in the GUI. See :doc:`monitoring-observability/visibility` for details. .. _shared_responsibility: @@ -140,7 +140,7 @@ Security of the overall infrastructure environment is a shared responsibility be * Role-based access control (:doc:`accounts`) * Infrastructure configuration enforcement -* Audit logging (:doc:`visibility`) +* Audit logging (:doc:`monitoring-observability/visibility`) * Tenant isolation orchestration across Ethernet, InfiniBand, and NVLink fabrics * Device management hardening via :doc:`Inventory Profiles ` diff --git a/netris-softgate-HS.rst b/netris-softgate-HS.rst index 472359e0..08210370 100644 --- a/netris-softgate-HS.rst +++ b/netris-softgate-HS.rst @@ -70,17 +70,53 @@ The Netris engineering team has performed SoftGate HS performance benchmarking u .. tab-item:: Intel Xeon Gold 5315Y 32 core CPU @ 3.20GHz - .. csv-table:: SoftGate HS Performance Intel - :file: tables/softgate-hs-perf-intel.csv - :widths: 40, 40, 40 + **1 Netris VPC** + + .. csv-table:: SoftGate HS Performance Intel - 1 VPC + :file: tables/softgate-hs-perf-intel-1vpc.csv + :widths: 60, 40 + :header-rows: 1 + :align: center + + **100 Netris VPCs** + + .. csv-table:: SoftGate HS Performance Intel - 100 VPCs + :file: tables/softgate-hs-perf-intel-100vpc.csv + :widths: 60, 40 + :header-rows: 1 + :align: center + + **1000 Netris VPCs** + + .. csv-table:: SoftGate HS Performance Intel - 1000 VPCs + :file: tables/softgate-hs-perf-intel-1000vpc.csv + :widths: 60, 40 :header-rows: 1 :align: center .. tab-item:: AMD EPYC 7413 24-Core CPU @ 2.6GHz, 48 core - .. csv-table:: SoftGate HS Performance AMD - :file: tables/softgate-hs-perf-amd.csv - :widths: 40, 40, 40 + **1 Netris VPC** + + .. csv-table:: SoftGate HS Performance AMD - 1 VPC + :file: tables/softgate-hs-perf-amd-1vpc.csv + :widths: 60, 40 + :header-rows: 1 + :align: center + + **100 Netris VPCs** + + .. csv-table:: SoftGate HS Performance AMD - 100 VPCs + :file: tables/softgate-hs-perf-amd-100vpc.csv + :widths: 60, 40 + :header-rows: 1 + :align: center + + **1000 Netris VPCs** + + .. csv-table:: SoftGate HS Performance AMD - 1000 VPCs + :file: tables/softgate-hs-perf-amd-1000vpc.csv + :widths: 60, 40 :header-rows: 1 :align: center diff --git a/netris-ufm-integration.rst b/netris-ufm-integration.rst index bf3c0d30..82d0689b 100644 --- a/netris-ufm-integration.rst +++ b/netris-ufm-integration.rst @@ -79,18 +79,9 @@ After making this configuration change, restart the UFM enterprise service: Installation ============= -Option 1: Deploy within an existing Netris Controller Kubernetes cluster ------------------------------------------------------------------------- +The Netris-UFM plugin manifest ships inside the same air-gapped installation tarball used to deploy the Netris Controller — no internet access is required. The steps below assume you unpacked that tarball into ``~/netris-controller-ha/`` (see :doc:`installation/controller-k3s-air-gap-ha` for details). -This option is recommended if you already have a Netris Controller running in a Kubernetes environment. - -1. Download the Kubernetes deployment YAML file: - - .. code-block:: bash - - wget https://get.netris.io/netris-controller-ufm.yaml - -2. Edit the YAML file to update the secret values based on your environment: +1. Edit ``netris-controller-ha/manifests/netris-controller/ufm.yaml`` to update the secret values based on your environment: .. code-block:: yaml @@ -103,7 +94,7 @@ This option is recommended if you already have a Netris Controller running in a stringData: NETRIS_CONTROLLER_ADDR: "https://netris.example.com" NETRIS_CONTROLLER_LOGIN: "netris" - NETRIS_CONTROLLER_PASSWORD: "newNet0ps" + NETRIS_CONTROLLER_PASSWORD: "Password!" NETRIS_VERIFY_SSL: "true" NETRIS_SITE_NAME: "Site" UFM_ADDR: "https://ufm.example.com" @@ -114,44 +105,32 @@ This option is recommended if you already have a Netris Controller running in a UFM_PKEY_RANGE: "100-7ffe" UFM_ENABLE_SHARP: "true" -3. Apply the configuration to your Kubernetes cluster: +2. Apply the configuration to your Kubernetes cluster: .. code-block:: bash - kubectl apply -f netris-controller-ufm.yaml + kubectl apply -f netris-controller-ha/manifests/netris-controller/ufm.yaml + +Multiple UFM Instances +----------------------- -Option 2: Deploy as a standalone Docker container -------------------------------------------------- +If a customer's InfiniBand environment has more than one fabric — each with its own UFM (for example, separate compute and storage fabrics) — deploy a separate Netris-UFM agent per UFM: -This option is ideal for environments without Kubernetes or when you want to deploy on a separate host. +1. Copy ``ufm.yaml`` to a new file name. +2. In the copy, give the agent a unique Kubernetes resource name (``metadata.name``), ``UFM_ADDR``, and a unique ``UFM_ID``, and update the other UFM/Netris connection values as needed. -1. Create an environment file (e.g., ``env``) with the following content: +.. tip:: + Here is a quick way to update the YAML file for the 2nd UFM instance: .. code-block:: bash - NETRIS_CONTROLLER_ADDR="https://netris.example.com" - NETRIS_CONTROLLER_LOGIN="netris" - NETRIS_CONTROLLER_PASSWORD="newNet0ps" - NETRIS_VERIFY_SSL="true" - NETRIS_SITE_NAME="Site" - UFM_ADDR="https://ufm.example.com" - UFM_LOGIN="admin" - UFM_PASSWORD="123456" - UFM_VERIFY_SSL="false" - UFM_ID="ufm-lab" - UFM_PKEY_RANGE="100-7ffe" - UFM_ENABLE_SHARP="true" - LOG_LEVEL="info" - -2. Run the Docker container: + cp ufm.yaml ufm-storage.yaml + sed -i 's/netris-controller-nvidia-ufm-agent/netris-controller-nvidia-ufm-agent-storage/g' ufm-storage.yaml - .. code-block:: bash +3. Apply the copy with ``kubectl apply -f``. - docker run -d \ - --env-file=env \ - --name=netris-ufm \ - --entrypoint "/app/servicebin" \ - netrisai/bare-metal-netris-ufm-agent:0.3.0 +.. important:: + Re-applying a manifest with the same ``metadata.name`` updates the existing agent rather than creating a second one. Each UFM instance needs its own uniquely-named deployment and a unique ``UFM_ID``. Configuration Parameters ======================== @@ -214,6 +193,8 @@ NVIDIA UFM Configuration - Whether to enable SHARP reservation management for clusters - true or false +Before assigning a PKey from ``UFM_PKEY_RANGE``, the agent always checks whether that PKey already exists in UFM, and will not overwrite an existing PKey. If a customer already has PKeys configured manually and wants to preserve them, set ``UFM_PKEY_RANGE`` to start above their existing range (e.g., start at ``200`` instead of ``100``) to avoid collisions. + Agent Configuration ------------------- @@ -234,6 +215,8 @@ Agent Configuration - 10 - 10 +Starting in Netris Controller 4.11, the Reconcile Interval can also be set from the UI (**Settings** → **General**). When that field is present, it takes precedence over ``RECONCILE_INTERVAL`` in the YAML/env file; the YAML/env value is used only as a fallback on controllers predating 4.11. + Usage Guide =========== @@ -259,6 +242,11 @@ The first step is to create servers in the Netris Controller inventory that matc

Figure: Server Custom field showing GUIDs

+``hosting_system_guid`` always corresponds to the GUID of the server's first HCA. You can cross-check this value in the UFM UI under the server's Device view, which displays one general GUID that should match. Replacing that first HCA — for example, during an RMA — changes this GUID and breaks the Netris↔UFM mapping. If a server's first HCA is replaced, re-establish the mapping manually: either rename the server to force a fresh name-based sync, or set ``hosting_system_guid`` directly to the new value. + +.. note:: + The server's Custom field may also show GPU UID entries. Those come from the separate :doc:`NVLink integration ` and are unrelated to UFM — the Netris-UFM plugin doesn't read or write them. + 2. Create a Server Cluster Template ------------------------------------ @@ -268,6 +256,9 @@ Next, create a Server Cluster Template. 2. Click **Add** to create a new template 3. Configure the template using JSON with specific sections for different network fabrics. Use :ref:`infiniband-fabric-example`. +.. note:: + Netris Controller has no visibility into individual UFM NICs or ports, so the InfiniBand side of the template is just a single generic ``netris-ufm`` fabric entry — you don't (and can't) enumerate individual HCAs the way you would for Ethernet interfaces. Per-host HCA/port mapping happens automatically via the GUID sync described above. + 4. Create Server Clusters -------------------------- @@ -301,12 +292,8 @@ To monitor the status of the integration: .. code-block:: bash - # For Kubernetes kubectl logs -f deployment/netris-controller-nvidia-ufm-agent -n netris-controller - # For Docker - docker logs -f netris-ufm - Functional Workflow ===================== @@ -456,20 +443,10 @@ Monitoring and Troubleshooting Viewing Logs -------------- -For Kubernetes deployment: - .. code-block:: bash kubectl logs -f deployment/netris-controller-nvidia-ufm-agent -n netris-controller -For Docker container: - -.. code-block:: bash - - docker logs -f netris-ufm - -Alternatively, you can view logs through the Netris Controller UI under Telescope > API Logs and filter by `ufm`. Please, note that the API logs in the UI are shown with a delay and require a manual screen refresh. To see UFM integration logs in real-time, we recommend using the command-line methods above. - .. image:: images/ufm-api-logs.png :align: center :class: with-shadow @@ -507,6 +484,11 @@ Connection Issues to Netris Controller or UFM - If using self-signed certificates, set NETRIS_VERIFY_SSL/UFM_VERIFY_SSL to "false" - For production, use valid certificates and set verification to "true" + - Certificates typically expire within one year (sometimes two); plan for rotation. When a certificate expires or becomes invalid, Netris logs a connection failure in the agent logs. + +**Note on log behavior:** The agent logs an entry only when it takes an action or encounters an error. A reconciliation cycle that completes normally and finds nothing to change does not produce a log message — so no new log entries is the expected, healthy state, not a sign that something has stalled. + +If connectivity to UFM goes down, you will see a new timeout message every reconcile interval (every 10 seconds by default) for as long as the outage lasts. Once connectivity is restored, those timeout messages stop, and no separate "connection restored" message is logged in their place. So a timeout logged hours ago with nothing since typically means connectivity was restored, not that the integration is still down. PKey Assignment Issues ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -532,12 +514,8 @@ PKey Assignment Issues .. code-block:: bash - # For Kubernetes kubectl logs -f deployment/netris-controller-nvidia-ufm-agent -n netris-controller | grep "PKey" - # For Docker - docker logs -f netris-ufm | grep "PKey" - SHARP Reservation Issues ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -569,7 +547,7 @@ Synchronization Delays 1. Turn on debug logging in Settings>General to monitor synchronization operations in detail. Tail the logs once turned on. See :ref:`ufm_integration_view_logs` for instructions on viewing logs. 2. Adjust the Reconcile Interval Settings>General to a shorter time period for faster synchronization. Tail the logs once turned on. See :ref:`ufm_integration_view_logs` for instructions on viewing logs. -3. Use Dry Run mode Settings>General to test changes without applying them, which can help identify issues before they affect the environment. Tail the logs once turned on. See :ref:`ufm_integration_view_logs` for instructions on viewing logs. +3. Use Dry Run mode (Settings → General) to test changes without applying them. This is particularly useful in two situations: (a) the agent was disabled for a while, and Netris and UFM have drifted apart from manual changes made on both sides, so you want to preview what enabling it would do before actually re-enabling it; and (b) your change-management process requires reviewing planned changes before they're applied — Dry Run lets you generate that preview for approval. Tail the logs once turned on. See :ref:`ufm_integration_view_logs` for instructions on viewing logs. .. image:: images/general-ufm-debug-dry-run-reconcile.png :align: center @@ -587,11 +565,7 @@ Synchronization Delays kubectl rollout restart deployment/netris-controller-nvidia-ufm-agent -n netris-controller - or - - .. code-block:: bash - - docker restart netris-ufm +**Checking PKey/GUID membership:** To see which GUIDs belong to a given server cluster's PKey, use the Netris API (v2) PKey Ledger endpoint for the ``netris-ufm`` integration. Useful when troubleshooting cluster membership that doesn't match expectations. Version Compatibility ====================== @@ -613,17 +587,13 @@ Getting Started Guide Quick Setup Example -------------------- -1. Install the plugin using the Kubernetes or Docker method above +1. Install the plugin as described above 2. Verify the plugin is running properly: .. code-block:: bash - # For Kubernetes kubectl get pods -n netris-controller | grep ufm - # For Docker - docker ps | grep netris-ufm - 3. Create a Server Cluster Template in Netris Controller UI or API 4. Create Server Cluster with the servers that have InfiniBand connections 5. Verify PKey assignments in UFM: diff --git a/network-policies.rst b/network-policies.rst deleted file mode 100644 index 881c833b..00000000 --- a/network-policies.rst +++ /dev/null @@ -1,553 +0,0 @@ -.. meta:: - :description: Netris Network Policies & Protocol Configuration - -.. _vpc_def: - -====================== -Netris VPC -====================== - -The Netris VPC offers you the ability to operate your resources within a logically segregated virtual network. You can create, edit, and remove VPCs as needed. The VPC acts as a VRF in traditional networking, providing the flexibility to employ overlapping IP ranges across various VPCs while maintaining secure management and operation of resources. - -Netris Controller ships with one VPC (VPC-1) pre-provisioned; it cannot be deleted. VPC-1 carries two distinct roles at once — it is both the **System VPC** (the trust boundary and anchor for infrastructure objects such as switch loopbacks and SoftGate-terminated BGP/NAT/load-balancer traffic) and the **Default VPC** (the VPC the Controller substitutes for the required VPC field when a value isn't explicitly given, and the one pre-populated in "Add new" dialogs in the web UI). These are different concepts that happen to be the same VPC by default. See :doc:`vpc` for the full explanation and for the list of objects that belong to a VPC, before creating additional VPCs. - -The following diagram shows a VPC concept in the Netris Controller. - -.. image:: images/vpc_diagram.png - :align: center - :alt: VPC diagram - -VPC is the highest entity in the hierarchy and it spreads over all Sites. -Take a look at the VPC features and services. - -VPC can be created in the Network → VPC section. - -Adding new VPC --------------- - -1. Navigate to Network → VPC in the web UI. -2. Click Add button. - -.. image:: images/vpc_add.png - :align: center - -.. _ipam_def_vpc: - -====================== -IP Address Management -====================== - -Netris IPAM allows users to document their IP addresses and track pool usage. It is designed to have a tree-like view to provide opportunity to perform any kind of subnetting. - -Purpose: Users define specific roles (purpose) for each subnet/address and only after that are allowed to use those subnets in services like V-Net, NAT, etc… - -Each VPC has its own IPAM table. - - -Allocations and Subnets ------------------------ - -There are 2 types of IPAM objects: - -* **Allocations** are IP ranges allocated to an organization via RIR/LIR or private IP ranges that are going to be used by the network. -* **Subnets** are prefixes which are going to be used in services. Subnets are always children of allocations. Allocations do not have parent subnets. - -IPAM Tree View --------------------------- - - -.. image:: images/ipam_tree_new.png - :align: center - :alt: IPAM Tree View - :class: with-shadow - -.. raw:: html - -
- -Add an Allocation ------------------ - -#. Navigate to Network → IPAM -#. Click the **Add** button -#. Select **Allocation** from the bottom select box -#. Fill in the rest of the fields based on the requirements listed below -#. Click the **Add** button - - -.. list-table:: Allocation Fields - :widths: 25 50 - :header-rows: 0 - - * - Prefix - - Unique prefix for allocation, must not overlap with other allocations. - * - Name - - Unique name for current allocation. - * - VPC - - Select a VPC to which the allocation belongs. - * - Tenant - - Owner of the allocation. - -.. image:: images/ipam_allocation.png - :align: center - :class: with-shadow - :alt: Add a New IP Allocation - -.. raw:: html - -
- -Add a Subnet ------------- - -**Create subnets for devices** - -You will require two subnets for your devices: one for loopback IP addresses and another for the management network. Note that device subnets must reside in the System VPC. - -#. Navigate to Network → IPAM -#. Click the **Add** button -#. Select **Subnet** from the bottom select box -#. Fill in the rest of the fields based on the requirements listed below -#. Click the **Add** button - -.. image:: images/ipam_mgmt_subnet.png - :align: center - -.. image:: images/ipam_loopback_subnet.png - :align: center - -**Create subnets for V-Nets** - -Create at least one subnet with the Common purpose to use it for a new V-Net. IP addresses from this subnet will be assigned to your servers. - -.. image:: images/ipam_common_subnet.png - :align: center - - -**Create subnets for Load-balancing service** - -.. warning:: - - Subnet intended for Load-balancing should be assigned to the system VPC. - -If you plan to use load-balancing services, you should first define subnet(s) from which IP addresses will be assigned for Virtual IP (frontend). - -.. image:: images/ipam_l4lb_subnet.png - :align: center - - -.. _ipam_nat_subnet: - -**Create subnets for NAT service** - -If you plan to perform network address translation (NAT), you must first create subnets for this purpose. - -.. warning:: - - Subnet intended for NAT should be assigned to the system VPC. - -.. image:: images/ipam_nat_subnet.png - :align: center - -.. list-table:: Subnet fields - :widths: 25 50 - :header-rows: 0 - - * - **Prefix** - - Unique prefix for subnet, must be included in one of allocations. - * - **Name** - - Unique name for current subnet. - * - **VPC** - - Select a VPC to which the subnet belongs. - * - **Tenant** - - Owner of the subnet. - * - **Purpose** - - This field describes for what kind of services the current subnet can be used. It can have the following values: - - - *common* - ordinary subnet, can be used in V-Nets. - - *loopback* - hosts of this subnet can be used only as loopback IP addresses for Netris hardware (switches and/or softgates). - - *management* - subnet which specifies the Out-of-Band management IP addresses for Netris hardware (switches and softgates). - - *load-balancer* - hosts of this subnet are used in L4LB services only. Useful for deploying on-prem kubernetes with cloud-like experience. - - *nat* - hosts of this subnet or subnet itself can be used to define NAT services. - - *inactive* - can't be used in any services, useful for reserving/documenting prefixes for future use. - -.. _bgp_def: - -====================== -BGP -====================== - -Basic BGP ---------- - -BGP neighbors can be declared in the Network → E-BGP section. Netris software will automatically generate and program the network configuration to meet the requirements. - -**Adding BGP Peers** - -#. Navigate to Network → E-BGP in the web UI. -#. Click the Add button. -#. Fill in the fields as described in the table below. -#. Click the Add button. - - -.. csv-table:: BGP Peer Fields - :file: tables/bgp-basic.csv - :widths: 25, 75, 25 - :header-rows: 0 - -Example: Declare a basic BGP neighbor. - -.. image:: images/create_bgp.png - :align: center - -If everything is correct, State, port and BGP will get green status. - -.. image:: images/bgp_status.png - :align: center - -Advanced BGP ------------- - -BGP neighbor declaration can optionally include advanced BGP attributes and BGP route-maps for fine-tuning of BGP policies. - -Click Advanced to expand the BGP neighbor add/edit window. - - -.. csv-table:: BGP Peer Fields - Advanced - :file: tables/bgp-advanced.csv - :widths: 25, 75, 25 - :header-rows: 0 - - -BGP Objects ------------ -| Under Network → E-BGP objects, you can define various BGP objects referenced from a route-map to declare a dynamic BGP policy. -| Supported objects include: - -* IPv4 Prefix -* IPv6 Prefix -* AS-PATH -* Community -* Extended Community -* Large Community - -IPv4 Prefix -^^^^^^^^^^^ -| The rules are defined one per line. -| Each line in IPv4 prefix list field consists of three parts: - -* Action - Possible values are: permit or deny (mandatory). -* IP Prefix - Any valid IPv4 prefix (mandatory). -* Length - Possible values are: le , ge or ge le . - -Example: Creating an IPv4 Prefix list. - -.. image:: images/ipv4_prefix.png - :align: center - -IPv6 Prefix -^^^^^^^^^^^ -| Rules defined one per line. -| Each line in IPv6 prefix list field consists of three parts: - -* Action - Possible values are: permit or deny (mandatory). -* IP Prefix - Any valid IPv6 prefix (mandatory). -* Keyword - Possible values are: le , ge or ge le . - -Example: Creating an IPv6 Prefix list. - -.. image:: images/ipv6_prefix.png - :align: center - -Community -^^^^^^^^^ -| Community field has two parts: - -* **Action** - Possible values: permit or deny (mandatory). -* **Community string** - Allowed format: ``< permit/deny> LINE``. LINE is AA:NN Community number in AA:NN format (where AA and NN are (0-65535)) or ``local-AS``, ``no-advertise``, ``no-export``, ``internet`` or ``additive``. - -Example: Creating community. - -.. image:: images/community.png - :align: center - - - -BGP route-maps --------------- -| Under the Network → E-BGP Route-maps section, you can define route-map policies, which can be associated with the BGP neighbors inbound or outbound. - -| Description of route-map fields: - -* **Sequence Number** - Automatically assigned a sequence number. Drag and move sequences to organize the order. -* **Description** - Free description. -* **Policy** - Permit or deny the routes which match below all match clauses within the current sequence. -* **Match** - Rules for route matching. - - * **Type** - Type of the object to match: AS-Path, Community, Extended Community, Large Community, IPv4 prefix-list, IPv4 next-hop, Route Source, IPv6 prefix-list. IPv6 next-hop, local-preference, MED, Origin, Route Tag. - * **Object** - Select an object from the list. - -* **Action** - Action when all match clauses are met. - - * **Action type** - Define whether to manipulate a particular BGP attribute or go to another sequence. - * **Attribute** - The attribute to be manipulated. - * **Value** - New attribute value. - -Example: route-map - -.. image:: images/route-map.png - :align: center - :class: with-shadow - - -eBGP Importing Non-Default Routes into a VPC ------------------------------------------------ - -In multi-uplink deployments SoftGate Hyperscale (SG-HS) nodes can be eBGP peered with different upstream networks. - -By default, Netris SoftGates only redistribute the default route into tenant VPCs, regardless of what other prefixes they receive from upstream peers. This ensures a consistent routing table across all SoftGates, but can lead to suboptimal routing, where traffic from the VPC is always routed to the SoftGate receiving the default, even if another SoftGate has a better path via specific prefixes. - -Starting with version 4.5.4, Netris introduces a mechanism to selectively import non-default routes into VPCs by tagging them with a special **BGP community: 0:7**. Routes marked with this community will be redistributed into tenant VPCs alongside the default. - -.. warning:: - Importing additional prefixes into VPCs increases the size of the routing table on SoftGates and switches. Ensure that your hardware can handle the increased load, especially if you plan to import many prefixes. - -How to Import Non-Default Prefixes -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -You have two options for tagging the desired prefixes with the required 0:7 community. - -**Option 1**: Tag Inbound in Netris (on SoftGate HS) - -If you manage the eBGP peer configuration using the Netris Controller, you can mark specific routes for redistribution into tenant VPCs by tagging them with the special BGP community 0:7. - -1. Create a Prefix List under Network → E-BGP Objects - -.. tip:: - Do not include 0.0.0.0/0 — it is automatically imported - -.. image:: images/prefix-list-imported-prefixes.png - :align: center - :alt: prefix list - :class: with-shadow - -.. raw:: html - -
- -2. Create a Route Map under Network → E-BGP Route-Maps - -Add a new route-map that - - - Matches the prefix list created in Step 1 - - Sets the BGP community to ``0:7`` - -.. image:: images/ebgp-route-map-set-07.png - :align: center - :alt: route-map - :class: with-shadow - -.. raw:: html - -
- -3. Attach the Route Map to the eBGP Peer under Network → E-BGP - -Edit the relevant eBGP neighbor and under Advanced Settings, set the inbound route-map to the one created in Step 2 - -.. image:: images/ebgp-advanced-inbound-route-map.png - :align: center - :alt: inbound route-map - :class: with-shadow - -.. raw:: html - -
- -Once applied, any matching prefixes received from this eBGP peer will be tagged with community 0:7, making them eligible for redistribution into tenant VPCs by the SoftGate. - -.. tip:: - You can verify imported routes in the Network → Looking Glass section of the Controller UI. - -.. warning:: - When configuring an inbound route-map on an eBGP peer, an outbound route-map must also be set. If no outbound route-map is needed, create a dummy one that permits all routes without modification and attach it to the outbound direction. - -**Option 2**: Tag Outbound from External BGP Peer - -Alternatively, the external BGP speaker can set the 0:7 community on outbound updates before advertising routes to the SoftGate. This option does not require any configuration in Netris, as long as the incoming route already carries the community. - -This is useful when the upstream router is under the customer's control and managing policy from that side is preferred. - -====================== -Static Routing -====================== -Located under Network → Routes is a method for describing static routing policies that Netris will dynamically inject on switches and/or SoftGate where appropriate. We recommend using the Routes only if BGP is not supported by the remote end. - - -Typical use cases for static routing: - -* To connect the switch fabric to an ISP or upstream router in a situation where BGP and dual-homing are not supported. -* Temporary interconnection with the old network for a migration. -* Routing a subnet behind a VM hypervisor machine for an internal VM network. -* Specifically routing traffic destined to a particular prefix through an Out-of-Band management network. - -Add new static route fields description: - -* **Prefix** - Route destination to match. -* **Next-Hop** - Traffic destined to the Prefix will be routed towards the Next-Hop. Note that static routes will be injected only on units that have the Next-Hop as a connected network. -* **Description** - Free description. -* **VPC** - Select a VPC to which the static route belongs. -* **Site** - Site where Route belongs. -* **State** - Administrative (enable/disable) state of the Route. -* **Apply to** - Limit the scope to particular units. It's typically used for Null routes. - - -Example: Default route pointing to a Next-Hop that belongs to one of V-Nets. - -.. image:: images/static_route_empty.png - :align: center - -Example: Adding a back route to 10.254.0.0/16 through an Out-of-Band management network. - -.. image:: images/static_route2_empty.png - :align: center - -Screenshot shows that the back route is actually applied on Softgate1 and Softgate2 . - -.. image:: images/static_route3.png - :align: center - - -.. _nat_def: - -====================== -NAT -====================== - -If you utilize private address space for your hosts, you may need a NAT service to enable internet access. Netris SoftGate nodes are required for NAT (Network Address Translation) functionality to work and support SNAT and DNAT features. - -Enabling NAT ------------- -To enable NAT for a given site, you first need to :ref:`create a subnet with NAT purpose ` in the IPAM section. The NAT IP addresses can be used for SNAT or DNAT as a global IP address (the public IP visible on the Internet). NAT IP pools are IP address ranges that SNAT can use as a rolling global IP (for a larger scale, similar to carrier-grade SNAT). SNAT is always overloading the ports, so many local hosts can share one or just a few public IP addresses. You can add as many NAT IP addresses and NAT pools as you need. -Adding an IP Subnet under Network → IPAM. - -Defining NAT rules ------------------- -NAT rules are defined under Network → NAT. - -Example: SNAT all hosts on 10.0.1.0/24subnet to the Internet using 192.0.2.128as a global IP. - -.. image:: images/snat_add.png - :align: center - -Example: Port forwarding. DNAT the traffic destined to 192.0.2.130:8080 to be forwarded to the host 10.0.1.100 on port tcp/80. - -.. image:: images/dnat_add.png - :align: center - - -.. list-table:: NAT Rule Fields - :widths: 25 75 - :header-rows: 1 - - * - Name - - Unique name. - * - **State** - - State of rule (enabled or disabled). - * - **Site** - - Site to apply the rule. - * - **Action** - - *SNAT* - Replace the source IP address with specified NAT IP along with port overloading. - *DNAT* - Replace the destination IP address and/or destination port with specified NAT IP. - *ACCEPT* - Silently forward, typically used to add an exclusion to broader SNAT or DNAT rule. - * - **Protocol** - - *All* - Match any IP protocol. - *TCP* - Match TCP traffic and ports. - *UDP* - Match UDP traffic and ports. - *ICMP* - Match ICMP traffic. - * - **Source** - - *Address* - Source IP address to match. - *Port* - Source ports range to match with this value (TCP/UDP). - * - **Destination** - - *Address* - Destination IP address to match. In the case of DNAT it should be one of the predefined NAT IP addresses. - *Port* - For DNAT only, to match a single destination port. - *Ports* - For SNAT/ACCEPT only. Destination ports range to match with this value (TCP/UDP). - * - **DNAT to IP** - - The global IP address for SNAT to be visible on the Public Internet. The internal IP address for DNAT to replace the original destination address with. - * - **DNAT to Port** - - The Port to which destination Port of the packet should be NAT'd. - * - **Status** - - Administrative state (enable/disable). - * - **Comment** - - Free optional comment. - - -====================== -Looking Glass -====================== - -The Looking Glass Is a GUI-based tool for looking up routing information from a switch or SoftGate perspective. You can access the Looking Glass either from Topology, individually for every device (right click on device → details → Looking Glass), or by navigating to Network → Looking Glass then selecting the device from the top-left dropdown menu. - -Looking Glass controls described for IPv4/IPv6 protocol families. - -* **VPC** - select a VPC. -* **BGP Summary** - Shows the summary of BGP adjacencies with neighbors, interface names, prefixes received. You can click on the neighbor name then query for the list of advertised/received prefixes. -* **BGP Route** - Lookup the BGP table (RIB) for the given address. -* **Route** - Lookup switch routing table for the given address. -* **Traceroute** - Conduct a traceroute from the selected device towards the given destination, optionally allowing to determine the source IP address. -* **Ping** - Execute a ping on the selected device towards the given destination, optionally allowing to select the source IP address. - -Example: listing BGP neighbors of a switch and number of received prefixes for the Underlay VPC. - -.. image:: images/lg_summary.png - :align: center - -Example: BGP Route - looking up V-Net subnet from switch11 perspective. Switch11 is load balancing between four available paths. - -.. image:: images/lg_bgp_route.png - :align: center - -Example: Ping. - -.. image:: images/lg_ping.png - :align: center - -| Looking Glass controls described for the EVPN family. - -* **VPC** - select a VPC. -* **BGP Summary** - Show brief summary of BGP adjacencies with neighbors, interface names, and EVPN prefixes received. -* **VNI** - List VNIs learned. -* **BGP EVPN** - List detailed EVPN routing information optionally for the given route distinguisher. -* **MAC table** - List MAC address table for the given VNI. - -Example: Listing MAC addresses on VNI 50. - -.. image:: images/lg_mac.png - :align: center - -Example: EVPN routing information listing for a specified route distinguisher. - -.. image:: images/lg_rd.png - :align: center - -====================== -VPC Peering -====================== - -VPC peering allows routing between two VPCs. It is typically used to connect a tenant VPC to a "shared" VPC where the shared services (like storage access, DNS, etc.) are located. - -Consider the following scenario. - -Customer VPC A and Customer VPC B accessing common services in a "Shared" VPC via VPC peering. - -Customer A and Customer B cannot access each other's VPCs - -Customer A VPC will have routes of the "Shared" VPC, it will NOT have routes of Customer B VPC. -Customer B VPC will have routes of the "Shared" VPC, it will NOT have routes of Customer A VPC. - -The "Shared" VPC will have routes of both A and B -Because A does not have routes of B and vice versa they cannot reach each. - -Network Administrators are free to define prefix lists of VPC peering, if VPC A is configured to accept routes of VPC B from the "Shared" VPC, then Customer A can reach Customer B,but if peering is created without defining prefix list (letting netris auto-populate). - -Additional details are coming soon... \ No newline at end of file diff --git a/release-notes/4.14.0.rst b/release-notes/4.14.0.rst new file mode 100644 index 00000000..11517619 --- /dev/null +++ b/release-notes/4.14.0.rst @@ -0,0 +1,71 @@ +.. include:: ../_includes/links.rst + +.. |version| replace:: 4.14.0 +.. _release_4_14_0: + +Netris |version| Release Notes (Jul/31/2026) +============================================ + +What's new in Netris |version|? +------------------------------- + +Netris 4.14.0 is a feature release focused on fabric flexibility and multi-tenant scale. It decouples BGP session placement from physical port topology and exposes InfiniBand fabric path visibility through the Netris API. It also extends DHCPv6 relay support to more switch platforms, extends Server Cluster provisioning, and ships a substantial set of platform bug fixes. + +.. note:: + **Apache CloudStack integration.** Enhancements to the Netris integration for Apache CloudStack are landing alongside 4.14.0, delivered as part of the CloudStack 4.22 codebase. + +Features +-------- +.. New capabilities visible to customers. One line each; optional 1–2 lines of context. + +- **BGP Session and Peer-Port Decoupling (Cumulus)**. On Cumulus, configure a BGP session on one switch while the port facing the BGP peer resides on another switch, giving you full flexibility in how BGP sessions are distributed across the fabric — independent of where peer connectivity physically lands. Works with any peer type (firewall, router, or server), and existing same-switch BGP configurations continue to work unchanged. +- **InfiniBand Fabric Topology Visibility via API (UFM Integration)**. Query the full InfiniBand fabric path for any bare-metal GPU server directly through the Netris API, with each switch hop identified by tier (leaf, spine, and core). List and filter servers by switch to support placement, blast-radius analysis, and maintenance planning, with UFM-sourced data and freshness indicators. + +Enhancements +------------ +.. Customer-facing enhancements to existing functionality and features. + +- **DHCPv6 Relay for V-Nets (Arista)**. Extends DHCPv6 relay support to Arista, so V-Nets can relay DHCPv6 requests to an external DHCPv6 server for both L2VPN and L3VPN configurations — including across VPC peering to a centralized server — completing IPv6 parity with existing IPv4 DHCP relay. +- **VLAN ID Selection for Server Clusters**. Specify a VLAN ID per V-Net at Server Cluster creation instead of relying only on automatic allocation, so cluster VLANs align with an externally planned numbering scheme. +- **Per-V-Net VPC Selection in Server Clusters**. Assign each V-Net in a Server Cluster to a different VPC at creation time, instead of the whole cluster mapping to a single VPC, so resources can be split across separate administrative domains within one cluster. Default single-VPC behavior is unchanged. + +Bug fixes +--------- +.. Customer-facing defect fixes. + +- Fixed unnecessary VRF creation on switches for V-Nets configured without an IP default gateway; only L2 VNI configuration is now applied. +- Fixed the disk-space monitoring check on Arista switches. +- Fixed the topology validation check on Arista switches. +- Fixed BGP ECMP paths being capped at 16 on Arista switches. Now configured to platform maximum. +- Fixed ACLs not being applied correctly on Arista switches where a trunk port reported its allowed VLANs as a range. Note: with this fix in place, some switches may now receive additional ACLs. +- Fixed topology diagram rendering to use the inventory-profile fabric type for correct switch placement. +- Fixed RDNSS configuration incorrectly rejecting valid IPv6 addresses. +- Fixed bond interfaces being auto-populated for V-Net members when Automatic Link Aggregation is disabled in the inventory profile. +- Fixed an issue where Netris would return “no V-net” to CloudStack hypervisors for recently created V-Nets, thus preventing workloads from deploying. +- Fixed ARP and neighbor entries silently not being programmed on CloudStack hosts using EVPN/VXLAN bridges. The interface list is now re-evaluated continuously, so interfaces that appear later, or that flap, are picked up automatically. +- Fixed the CloudStack agent creating VXLAN interfaces without the intended bridge-port settings. MAC learning is now disabled and ARP/ND neighbor suppression enabled on the VXLAN bridge port, as specified. +- Fixed V-Net search by label returning no results. + +Security fixes +---------------- + +No security fixes in this release. + +**Deprecation Notices** + +- **Site Mesh removed**. Site Mesh is no longer supported. The Site Mesh main menu entry and the Site Mesh options in Site configuration have been removed from the controller UI, and the corresponding resources have been removed from the API and the Terraform provider. Automation and Terraform configurations that reference Site Mesh must be updated before upgrading. +- **MASQUERADE NAT action removed**. The MASQUERADE action was selectable in NAT configuration but was never supported by SoftGate. It has been removed. API and Terraform configurations that specify a MASQUERADE NAT rule are now rejected and must be updated before upgrading. + +References +---------- +.. Link deeper docs; prefer permalinks. + +- :doc:`Supported Platforms <../supported-platform-matrix>` +- :doc:`Supported Switch Hardware <../supported-switch-hardware>` +- Schedule a Demo_ +- Follow us on LinkedIn_ +- Follow us on YouTube_ +- Follow us on X-Twitter_ +- Join our Slack_ + +.. End of file diff --git a/release-notes/index.rst b/release-notes/index.rst index 708cb8e3..f4e42f12 100644 --- a/release-notes/index.rst +++ b/release-notes/index.rst @@ -8,6 +8,7 @@ Release Notes .. toctree:: :maxdepth: 1 + 4.14.0 4.13.0 4.12.0 4.11.0 diff --git a/server-cluster.rst b/server-cluster.rst index bb8c490e..9717a62d 100644 --- a/server-cluster.rst +++ b/server-cluster.rst @@ -254,7 +254,10 @@ Each object in the **Vnets** JSON array may include a combination of the followi - **postfix**: A string appended to the server cluster name to form the V-Net name. - **type**: A string specifying the type of V-Net (`l2vpn`, `l3vpn`, `netris-ufm`, `netris-nvlink`). - **vlan**: A string specifying whether the V-Net is `tagged` or `untagged`. Only `untagged` is permitted at this time. - - **vlanID**: A string specifying the VLAN ID. Only `auto` is permitted at this time. + - **vlanID**: A string specifying the VLAN ID. Accepts `auto` or `specify`. + + - Use `auto` to instruct Netris to automatically assign a new VLAN ID. + - Use `specify` to require the operator to enter the VLAN ID explicitly at cluster creation. - **ipFamily**: A string specifying the IP family for the V-Net (`ipv4`, `ipv6`, or `dual`). - **serverNics**: An array of Netris server NIC names on the server that will be associated with this V-Net. - **ipv4Gateway**: When `type:l2vpn` one of the following values: @@ -478,29 +481,37 @@ Adding a Server Cluster To define a Server Cluster, navigate to ``Services->Server Cluster`` and click ``+Add``. Give the new cluster a name, set Admin to the appropriate owner (this defines who can edit/delete this cluster and only servers already assigned to this owner will be available for selection), set the site, set VPC to "Create New", select the Template created earlier, and click ``+Add Server`` or ``+Add Shared Server`` to start selecting server members. Click Add. -.. image:: images/add-server-cluster-selecting-servers.png +.. image:: images/server-cluster-add-single-vpc.png :align: center :class: with-shadow .. raw:: html -
+

Figure: Adding a server cluster with a single VPC

When you click the blue ``Add`` button, Netris will create the VPC, V-Nets, and IP subnets as defined in the template. It will also configure the switch ports for each server based on the NIC names specified in the template. -.. image:: images/add-server-cluster.png +.. note:: + + - A VPC will be created automatically when "Create New" is selected. + - After creation, the template, the VPC, and the site fields are locked. + - The same Netris NIC name must be used consistently across all server objects in a cluster. For example, when eth10 is assigned to a V-Net in the template, Netris will assign every switch port that corresponds to every server's eth10 to the same V-Net throughout the server cluster. + +You can also assign one or more V-Nets to a separate VPC while assigning others to another VPC. To do so, select **Per template object** under the VPC mapping option. Doing so shows a drop down menu to select an existing VPC or create a new VPC for each V-Net specified in the template. + +.. image:: images/server-cluster-add-per-vnet-vpc.png :align: center :class: with-shadow .. raw:: html -
+

Figure: Adding a server cluster with multiple VPCs

.. note:: - - A VPC will be created automatically when "Create New" is selected. - - After creation, the template, the VPC, and the site fields are locked. - - The same Netris NIC name must be used consistently across all server objects in a cluster. For example, when eth10 is assigned to a V-Net in the template, Netris will assign every switch port that corresponds to every server's eth10 to the same V-Net throughout the server cluster. + - V-Nets selected together on one line will be placed into the same VPC. + - In the screenshot above the Mgmt V-Net will be added to the existing VPC-102 (Shared-infra), while one new VPC will be created with the EastWest and the NorthSouth V-Nets assigned to it. + - If you require a separate VPC per V-Net, add a dedicated line for each V-Net. .. _server-cluster-shared-endpoints: diff --git a/static-routing.rst b/static-routing.rst new file mode 100644 index 00000000..c05cdb7d --- /dev/null +++ b/static-routing.rst @@ -0,0 +1,52 @@ +.. meta:: + :description: Netris Static Routing + +====================== +Static Routing +====================== + +Located under Network → Routes is a method for describing static routing policies that Netris will dynamically inject on switches and/or SoftGate where appropriate. We recommend using the Routes only if BGP is not supported by the remote end. + +Typical use cases for static routing: + +* To connect the switch fabric to an ISP or upstream router in a situation where BGP and dual-homing are not supported. +* Temporary interconnection with the old network for a migration. +* Routing a subnet behind a VM hypervisor machine for an internal VM network. +* Specifically routing traffic destined to a particular prefix through an Out-of-Band management network. + +Add new static route fields description: + +* **Prefix** - Route destination to match. +* **Next-Hop** - Traffic destined to the Prefix will be routed towards the Next-Hop. Note that static routes will be injected only on units that have the Next-Hop as a connected network. +* **Description** - Free description. +* **VPC** - Select a VPC to which the static route belongs. +* **Site** - Site where Route belongs. +* **State** - Administrative (enable/disable) state of the Route. +* **Apply to** - Limit the scope to particular units. It's typically used for Null routes. + +Example: Default route pointing to a Next-Hop that belongs to one of V-Nets. + +.. image:: images/static_route_empty.png + :align: center + +.. raw:: html + +

Figure: Static route - default route

+ +Example: Adding a back route to 10.254.0.0/16 through an Out-of-Band management network. + +.. image:: images/static_route2_empty.png + :align: center + +.. raw:: html + +

Figure: Static route - back route via OOB

+ +Screenshot shows that the back route is actually applied on Softgate1 and Softgate2. + +.. image:: images/static_route3.png + :align: center + +.. raw:: html + +

Figure: Static route applied on SoftGates

diff --git a/supported-platform-matrix.rst b/supported-platform-matrix.rst index e0cb4647..ae5681b0 100644 --- a/supported-platform-matrix.rst +++ b/supported-platform-matrix.rst @@ -540,6 +540,14 @@ Netris and NOS versions compatibility matrix - **SoftGate PRO OS** - **SoftGate HS OS** - **Availability** + * - 4.14.0 + - 5.11 - 5.14, 5.16 - 5.16.5 + - 4.5 + - 202211-331 + - 4.34.1F + - N/A + - Ubuntu 24.04 + - ✔ * - 4.13.0 - 5.11 - 5.14, 5.16 - 5.16.5 - 4.5 diff --git a/switch-ports.rst b/switch-ports.rst index bae89db3..3ea85007 100644 --- a/switch-ports.rst +++ b/switch-ports.rst @@ -5,7 +5,7 @@ Switch Ports ============ -Switch ports can be directly managed in the **Switch Port** UI section. Both physical and virtual ports (extended, aggregate, etc…) will appear in this section once they have been added to inventory. The Netris Controller will automatically sync the list of available ports that appear on each device. +Switch ports can be directly managed in the **Network Interfaces** UI section. Both physical and virtual ports (extended, aggregate, etc…) will appear in this section once they have been added to inventory. The Netris Controller will automatically sync the list of available ports that appear on each device. The following options are available for editing on each port: diff --git a/tables/bgp-advanced.csv b/tables/bgp-advanced.csv index ca22d28c..b77c51de 100644 --- a/tables/bgp-advanced.csv +++ b/tables/bgp-advanced.csv @@ -1,9 +1,11 @@ -**Connect via V-Net**,Select a V-Net if the BGP session is to be established with an endpoint from that V-Net. +**Connect via V-Net**,Select a V-Net if the BGP session is to be established with an endpoint from that V-Net rather than with the switch port directly. **BFD**,Enable/Disable BFD. -**BGP Timers**,Keepalive Interval, Hold Time and Connect Retry timers for the BGP session. Netris default values are 3 10 10. +**BGP Timers**,"Keepalive (Hello) Interval, Hold Time and Connect Retry timers for the BGP session. Netris default values are 3 10 10." **Neighbor address**,IP address of the neighbor when peering with the loopback IP address instead of the interface IP address (aka Multihop). **Update source**,When Multihop BGP peering is used it allows the operator to choose one of the loopback IP addresses of the SoftGate node as a BGP speaker source IP address. **BGP password**,Password for the BGP session +**Remove Private AS**,"Strip private ASNs (64512-65534, or 4200000000-4294967294 for 4-byte ASNs) from the AS-PATH before advertising to this neighbor. Enabled by default. If multiple SoftGates advertise the same prefix to the same upstream, whether this is enabled or disabled affects whether their AS-PATHs end up identical or distinct. See the note below this table for more details." +**Local ASN**,"The local Autonomous System Number the BGP speaker advertises for this session. Three options: Site Public ASN (default) - use the AS number defined as the public ASN in the current Site configuration. Switch Local ASN - if a switch is selected as the BGP Router for this session, use that switch's individual local ASN. Not applicable when the BGP Router is a SoftGate. Custom ASN - enter a specific AS number for this session only." **Allowas-in**,Define the number of allowed occurrences of the self AS number in the received BGP NLRI to consider it valid (normally 0). **Default Originate**,Originate default route to the current neighbor. **Prefix Inbound Max**,Drop the BGP session if the number of received prefixes exceeds this max limit. For switch termination maximum allowed is 1000 prefixes and SoftGate termination can handle up to one million prefixes. diff --git a/tables/bgp-basic.csv b/tables/bgp-basic.csv index ccd136a7..78dc8829 100644 --- a/tables/bgp-basic.csv +++ b/tables/bgp-basic.csv @@ -2,14 +2,13 @@ **Description**,Free description. **VPC**,Select the VPC to which the BGP session should belong. **Site**,Select the site (data center) where this BGP session should be terminated on. -**Softgate**,Only if SoftGate nodes are in use. Define on which node BGP session should be terminated on. -**Neighbor** Autonomous System number of the remote side. (Local AS is defined at Network → Sites section). -**Terminate on switch**,Typically used for setups without SoftGate, specifically for connecting with upstream routers. It instructs the system to terminate the BGP session directly on the switch. -**Switch port**,Switch Port for the physical cable to the BGP neighbor (any port on the fabric). Optionally can be bound to a V-Net service. Typically used for peering with IXPs or systems like GGC (Google Global Cache). -**VLAN ID**,Optionally tag with a VLAN ID (usually untagged). -**IP Version**,IPv4 or IPv6. +**BGP Router**,Define on which node the BGP session should be terminated. +**Switch port**,"Switch Port where the physical cable to the BGP neighbor is connected (any port on the fabric). If terminating the BGP session on a V-Net (See Advanced>Connect via V-Net), this option is disabled and the switch port must be added to the V-Net rather than being selected here." +**VLAN ID**,Optionally tag with a VLAN ID (usually untagged). Disabled if terminating the BGP session on a V-Net (See Advanced>Connect via V-Net option below). +**Neighbor AS**,Autonomous System number of the remote side. (Local AS is defined in the Advanced section) +**IP Family**,IPv4 or IPv6. **Local IP**,BGP peering IP address on Netris controlled side. **Remote IP**,BGP peering IP address on the remote end. **State**,Administrative state (Enabled/Disabled). +**Labels**,Tags associated with the BGP session. **Advanced**,Advanced policy settings are described in the next section. -**Tags**,Tags associated with the BGP session. diff --git a/tables/softgate-hs-perf-amd-1000vpc.csv b/tables/softgate-hs-perf-amd-1000vpc.csv new file mode 100644 index 00000000..c1eeb024 --- /dev/null +++ b/tables/softgate-hs-perf-amd-1000vpc.csv @@ -0,0 +1,6 @@ +Cumulative number of Netris DNAT rules across all VPCs,Throughput +800, +1300, +1600,8 MPPS +3333, +16666, diff --git a/tables/softgate-hs-perf-amd-100vpc.csv b/tables/softgate-hs-perf-amd-100vpc.csv new file mode 100644 index 00000000..c1eeb024 --- /dev/null +++ b/tables/softgate-hs-perf-amd-100vpc.csv @@ -0,0 +1,6 @@ +Cumulative number of Netris DNAT rules across all VPCs,Throughput +800, +1300, +1600,8 MPPS +3333, +16666, diff --git a/tables/softgate-hs-perf-amd-1vpc.csv b/tables/softgate-hs-perf-amd-1vpc.csv new file mode 100644 index 00000000..c1eeb024 --- /dev/null +++ b/tables/softgate-hs-perf-amd-1vpc.csv @@ -0,0 +1,6 @@ +Cumulative number of Netris DNAT rules across all VPCs,Throughput +800, +1300, +1600,8 MPPS +3333, +16666, diff --git a/tables/softgate-hs-perf-amd.csv b/tables/softgate-hs-perf-amd.csv deleted file mode 100644 index 236eced2..00000000 --- a/tables/softgate-hs-perf-amd.csv +++ /dev/null @@ -1,18 +0,0 @@ -Number of Netris VPCs,Cumulative number of Netris DNAT rules across all VPCs,Throughput -1,800, -1,1300, -1,1600,8 MPPS -1,3333, -1,16666, -----------------------------,------------------------------------------------------------------,--------------- -100,800, -100,1300, -100,1600,8 MPPS -100,3333, -100,16666, -----------------------------,------------------------------------------------------------------,--------------- -1000,800, -1000,1300, -1000,1600,8 MPPS -1000,3333, -1000,16666, \ No newline at end of file diff --git a/tables/softgate-hs-perf-intel-1000vpc.csv b/tables/softgate-hs-perf-intel-1000vpc.csv new file mode 100644 index 00000000..3b9a6e16 --- /dev/null +++ b/tables/softgate-hs-perf-intel-1000vpc.csv @@ -0,0 +1,6 @@ +Cumulative number of Netris DNAT rules across all VPCs,Throughput +800,9 MPPS +1300,8 MPPS +1600,8 MPPS +3333,7 MPPS +16666,2 MPPS diff --git a/tables/softgate-hs-perf-intel-100vpc.csv b/tables/softgate-hs-perf-intel-100vpc.csv new file mode 100644 index 00000000..64da4e12 --- /dev/null +++ b/tables/softgate-hs-perf-intel-100vpc.csv @@ -0,0 +1,6 @@ +Cumulative number of Netris DNAT rules across all VPCs,Throughput +800,12 MPPS +1300,11 MPPS +1600,10 MPPS +3333,7 MPPS +16666,2 MPPS diff --git a/tables/softgate-hs-perf-intel-1vpc.csv b/tables/softgate-hs-perf-intel-1vpc.csv new file mode 100644 index 00000000..e029a248 --- /dev/null +++ b/tables/softgate-hs-perf-intel-1vpc.csv @@ -0,0 +1,6 @@ +Cumulative number of Netris DNAT rules across all VPCs,Throughput +800,13 MPPS +1300,12 MPPS +1600,10 MPPS +3333,8 MPPS +16666,2 MPPS diff --git a/tables/softgate-hs-perf-intel.csv b/tables/softgate-hs-perf-intel.csv deleted file mode 100644 index 4d46108e..00000000 --- a/tables/softgate-hs-perf-intel.csv +++ /dev/null @@ -1,18 +0,0 @@ -Number of Netris VPCs,Cumulative number of Netris DNAT rules across all VPCs,Throughput -1,800,13 MPPS -1,1300,12 MPPS -1,1600,10 MPPS -1,3333,8 MPPS -1,16666,2 MPPS -----------------------------,------------------------------------------------------------------,--------------- -100,800,12 MPPS -100,1300,11 MPPS -100,1600,10 MPPS -100,3333,7 MPPS -100,16666,2 MPPS -----------------------------,------------------------------------------------------------------,--------------- -1000,800,9 MPPS -1000,1300,8 MPPS -1000,1600,8 MPPS -1000,3333,7 MPPS -1000,16666,2 MPPS \ No newline at end of file diff --git a/upgrading-netris.rst b/upgrading-netris.rst deleted file mode 100644 index 1970305e..00000000 --- a/upgrading-netris.rst +++ /dev/null @@ -1,251 +0,0 @@ -.. meta:: - :description: Upgrading Netris - -.. raw:: html - - - - -.. role:: green - -.. role:: red - -******************** -Upgrade and Rollback -******************** - -Netris upgrade Procedure -======================== - -Backup current database ------------------------ - -Always have a backup, just in case anything hypothetically goes wrong. SSH to the host running the Netris Controller and execute below command. - -.. code-block:: shell-session - - kubectl -n netris-controller exec -it netris-controller-mariadb-0 -- bash -c 'mysqldump -u $MARIADB_USER -p${MARIADB_PASSWORD} $MARIADB_DATABASE' > db-snapshot.sql - -Ensure that SQL file ``db-snapshot.sql`` is generated and present in the current directory. - -Stop Netris Agents ------------------- - -Stop Netris agents on switches and SoftGate nodes. - -**For Switches:** - -SSH to the switch and run the following command: - -.. code-block:: shell-session - - sudo systemctl stop netris-sw - -**For SoftGate nodes:** - -SSH to the SoftGate and run the following command: - -.. code-block:: shell-session - - sudo systemctl stop netris-sg - -Make sure that all devices in the *Network → Inventory* section are ":red:`red`" with the "**check_agent**" status being "**Agent is unavailable**". - - -.. note:: - - A stopped Netris agent has no impact on production traffic through the device. - -.. _upgrade 3: - -Check your current version --------------------------- - -Before upgrading the Netris Controller, take a note of the "*Netris Version*" by navigating to *Settings → General* in the Controller web interface. The current version number may be used in case of the hypothetical need to perform a rollback procedure. - -.. image:: images/netris_version_example.png - :align: center - :alt: Netris Version Example - -Upgrade the Controller ----------------------- - -SSH to the Controller host and execute the below command. - -.. code-block:: shell-session - - curl -sfL https://get.netris.io | sh - - -.. note:: - - This process can take up to 5 minutes - - -Afterwards, make sure that all pods have either "*Running*" or "*Completed*" status by executing the following command: - -.. code-block:: shell-session - - kubectl -n netris-controller get pods - - -The output is similar to this: - -.. code-block:: shell-session - - NAME READY STATUS RESTARTS AGE - svclb-netris-controller-haproxy-6tkgj 4/4 Running 0 38d - netris-controller-haproxy-bcb944b7c-qcbf8 1/1 Running 0 13d - netris-controller-squid-7f6fdc6cf9-7fdx8 1/1 Running 0 38d - svclb-netris-controller-squid-58rnp 1/1 Running 0 38d - netris-controller-graphite-0 1/1 Running 0 38d - netris-controller-mongodb-0 1/1 Running 0 38d - netris-controller-redis-master-0 1/1 Running 0 38d - netris-controller-smtp-76778cf85f-lw5v5 1/1 Running 0 10d - netris-controller-mariadb-0 1/1 Running 0 10d - netris-controller-web-session-generator-8b9dbbcd8-8snhd 1/1 Running 0 10d - netris-controller-telescope-notifier-647975848f-fs5dn 1/1 Running 0 10d - netris-controller-app-b9b8d8f8d-4ssqb 1/1 Running 0 10d - netris-controller-grpc-987669fb9-jjskp 1/1 Running 0 10d - netris-controller-telescope-777c98c5d9-mqwl6 1/1 Running 0 10d - helm-install-netris-controller-lqmq7 0/1 Completed 0 20h - - -.. warning:: - - If, after 5 minutes, you see pods with a status other than "*Running*" or "*Completed*", please reach out to us via `Slack `__. - -Check the upgraded version --------------------------- - -Make sure that the "*Netris Version*" reflects the version change by navigating to *Settings → General* in the Controller web interface. - -Upgrade Switches and SoftGate nodes ------------------------------------ - -Once you have verified that the Netris controller is up-to-date, it is time to update the switch and SoftGate agents. - -Upgrade the switch & SoftGate agents by copying the one-liner from the "*Install Agent*" option of the device’s 3-dot menu found under the *Network → Inventory* section and pasting it into appropriate devices by SSHing to the corresponding device. - -.. note:: - - These one-liners include a unique identifier for binding the physical device with the virtual object in the Controller. Please make sure - to copy/paste into the right devices. - - -.. image:: images/install_agent.gif - :align: center - :alt: Install Agent - -After all the agents have finished the upgrade process, make sure all devices in the *Network → Inventory* section have a ":green:`green`" status and the *Netris version* for each device reflects the version change. - -In the event the "**check_agent**" status is "**Agent is unavailable**" after the agent upgrade has finished, perform agent restart on the affected device(s). - -**For Switches:** - -SSH to the switch and run the following command: - -.. code-block:: shell-session - - sudo systemctl restart netris-sw - -**For SoftGate nodes:** - -SSH to the SoftGate and run the following command: - -.. code-block:: shell-session - - sudo systemctl restart netris-sg - -Rollback Procedure -================== - -A rollback procedure can be executed in the event the upgrade introduces any adverse impact on the production traffic. - -Stop Netris Agents ------------------- - -Stop all Netris agents on the devices managed by the controller (switch & SoftGate). - -**For Switches:** - -SSH to the switch and run the following command: - -.. code-block:: shell-session - - sudo systemctl stop netris-sw - -**For SoftGate nodes:** - -SSH to the SoftGate and run the following command: - -.. code-block:: shell-session - - sudo systemctl stop netris-sg - -Restore The Database --------------------- - -Restore the database from the previously taken snapshot. - -Drop the current database and create a new one by running the following command after SSHing to the Controller: - -.. code-block:: shell-session - - kubectl -n netris-controller exec -it netris-controller-mariadb-0 -- bash -c 'mysql -u root -p${MARIADB_ROOT_PASSWORD} -e "DROP DATABASE $MARIADB_DATABASE"' - kubectl -n netris-controller exec -it netris-controller-mariadb-0 -- bash -c 'mysql -u root -p${MARIADB_ROOT_PASSWORD} -e "CREATE DATABASE $MARIADB_DATABASE"' - -While still connected to the Controller, copy the backup file from the controller host system to the MariaDB container and restore the database: - -.. code-block:: shell-session - - kubectl -n netris-controller cp db-snapshot.sql netris-controller-mariadb-0:/opt/db-snapshot.sql - kubectl -n netris-controller exec -it netris-controller-mariadb-0 -- bash -c 'mysql -u root -p${MARIADB_ROOT_PASSWORD} $MARIADB_DATABASE < /opt/db-snapshot.sql' - -Downgrade the Controller Software ---------------------------------- - -Downgrade Netris Controller application with the following command. - -.. note:: - - For the version number, use the number collected from :ref:`step #3` during the upgrade procedure. - -Example: - -.. code-block:: shell-session - - curl -sfL https://get.netris.io | sh -s -- --ctl-version 3.0.10-031 - -Afterwards, verify that the version of the "*Netris Version*" reflects the downgraded version by navigating to *Settings → General* in the Netris Controller. - -Downgrade Netris Agent Software -------------------------------- - -Once you have verified that the Netris controller has been downgraded to the correct version, it is time to downgrade the switch and SoftGate agents. - -Install the appropriate version of switch & SoftGate agents by copying the one-liner from the "*Install Agent*" option of the device’s 3-dot menu found under the *Network → Inventory* section and pasting it into appropriate devices by SSHing to the corresponding device. - -.. note:: - - One-liners include a unique identifier for binding the physical device with the virtual object in the Controller. Please make sure to copy/paste into the right devices. - - -After all the switches and SoftGates have been successfully downgraded, make sure all the devices in the *Network → Inventory* section have a ":green:`green`" status and the *Netris version* for each device reflects the version downgrade. - -In case the "**check_agent**" status is "**Agent is unavailable**" after agent downgrade, perform agent restart. - -**For Switches:** - -SSH to the switch and run the following command: - -.. code-block:: shell-session - - sudo systemctl restart netris-sw - -**For SoftGate nodes:** - -SSH to the SoftGate and run the following command: - -.. code-block:: shell-session - - sudo systemctl restart netris-sg diff --git a/vnet.rst b/vnet.rst index f18db661..edceaee9 100644 --- a/vnet.rst +++ b/vnet.rst @@ -21,7 +21,7 @@ To build a V-Net you need to supply * a list of switch ports * a name -* parent :ref:`VPC ` +* parent :doc:`VPC ` * :doc:`site(s) ` * Optionally IP subnet, gateway, and DHCP settings. diff --git a/vpc-gateways-with-managed-fabric.rst b/vpc-gateways-with-managed-fabric.rst index fa95891a..c2b8e1c4 100644 --- a/vpc-gateways-with-managed-fabric.rst +++ b/vpc-gateways-with-managed-fabric.rst @@ -5,8 +5,8 @@ Getting Started with Switch-Fabric Manager & VPC * :doc:`../introduction` * :doc:`../installation/controller-k3s-air-gap-ha` * :doc:`../site` -* :ref:`vpc_def` -* :ref:`ipam_def_vpc` +* :doc:`Netris VPC <../vpc>` +* :doc:`../ipam` * :ref:`topology-management` * :ref:`topology-manager` * :doc:`../netris-softgate-HS` diff --git a/vpc-peering.rst b/vpc-peering.rst new file mode 100644 index 00000000..c1a9dcd0 --- /dev/null +++ b/vpc-peering.rst @@ -0,0 +1,31 @@ +.. meta:: + :description: Netris VPC Peering + +====================== +VPC Peering +====================== + +VPC peering allows routing between two VPCs. It is typically used to connect a tenant VPC to a "shared" VPC where the shared services (like storage access, DNS, etc.) are located. + +Consider the following scenario. Customer VPC A and Customer VPC B accessing common services in a "Shared" VPC via VPC peering. + +Customer A and Customer B cannot access each other's VPCs. + +Customer A VPC will have routes of the "Shared" VPC, it will NOT have routes of Customer B VPC. Customer B VPC will have routes of the "Shared" VPC, it will NOT have routes of Customer A VPC. + +The "Shared" VPC will have routes of both A and B. Because A does not have routes of B and vice versa they cannot reach each other. + +Network Administrators are free to define prefix lists of VPC peering: if VPC A is configured to accept routes of VPC B from the "Shared" VPC, then Customer A can reach Customer B, but not if peering is created without defining a prefix list (letting Netris auto-populate). + +Peering a BGP-only VPC +^^^^^^^^^^^^^^^^^^^^^^ + +A VPC that has no V-Nets — only BGP sessions — can still be peered. The BGP session provisions the VPC's VRF on the switch where it terminates, so peering works without creating a placeholder ("dummy") V-Net just to bring the VRF into existence. See :ref:`How a VPC's VRF is placed on the fabric ` on the Netris VPC page for the underlying behavior. + +.. note:: + + Additional details are coming soon… + +---- + +**See also:** :doc:`Netris VPC ` and :doc:`VPC Connect `. VPC Peering connects VPCs to one another, while VPC Connect connects a VPC to external networks — both concern connectivity beyond a single VPC's boundary. diff --git a/vpc.rst b/vpc.rst index 1a941267..3a774a8d 100644 --- a/vpc.rst +++ b/vpc.rst @@ -31,6 +31,17 @@ VPC is the highest object in the Netris hierarchy and spans every :doc:`Site Netris VPC concept diagram

+.. _vpc_vrf_placement: + +How a VPC's VRF is placed on the fabric +========================================== + +On Ethernet fabrics a VPC maps to a VRF, but that VRF (and its associated L3 VNI) is not instantiated on every switch. Netris creates it on a given switch only where that switch hosts a Layer 3 service belonging to the VPC. Three things require it: a V-Net with an IP default gateway (an SVI), a BGP session terminated on that switch, or VPC peering. When the last such L3 service on a switch is removed, the VRF and its L3 VNI are withdrawn from that switch. + +A V-Net configured without an IP default gateway is a pure Layer 2 segment: it provisions only an L2 VNI, with no VRF or L3 VNI. + +Because a BGP session on its own provisions the VRF, a VPC that contains only BGP sessions and no V-Nets still gets its VRF on the terminating switches — so it can take part in VPC peering without a placeholder V-Net. + Adding a new VPC ================== @@ -98,7 +109,7 @@ The table below lists the objects that belong to a VPC, what selecting a VPC for - Same exit behavior as NAT: the frontend virtual IP is served from the System VPC via SoftGate. * - VPC Peering (``Network -> VPC Peering``) - Two VPCs whose routes are selectively exchanged. - - Commonly used to reach shared services (DNS, storage, and the like) from multiple tenant VPCs without giving those tenant VPCs a route to each other. See the VPC Peering section of the :doc:`Network Policies ` page. + - Commonly used to reach shared services (DNS, storage, and the like) from multiple tenant VPCs without giving those tenant VPCs a route to each other. See the :doc:`VPC Peering ` page. * - :doc:`Server Cluster ` (``Services -> Server Cluster``) - Can create a brand-new VPC for you. - Setting VPC to **Create New** provisions a VPC along with its V-Nets and IPAM subnets in one step. See :doc:`server-cluster` for additional details.