From 54b61c1794aad09fd8674ae2ffa10a58d7a35ad4 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 17 Aug 2024 07:26:56 -0500 Subject: [PATCH] Add blog post about why meshtastic uses managed flood routing --- ...y-meshtastic-uses-managed-flood-router.mdx | 38 ++++++++++++++++++ blog/authors.yml | 15 +++++++ static/img/blog/route_plot.png | Bin 0 -> 42265 bytes 3 files changed, 53 insertions(+) create mode 100644 blog/2024/August/why-meshtastic-uses-managed-flood-router.mdx create mode 100644 static/img/blog/route_plot.png diff --git a/blog/2024/August/why-meshtastic-uses-managed-flood-router.mdx b/blog/2024/August/why-meshtastic-uses-managed-flood-router.mdx new file mode 100644 index 00000000..f0ed04d1 --- /dev/null +++ b/blog/2024/August/why-meshtastic-uses-managed-flood-router.mdx @@ -0,0 +1,38 @@ +--- +title: Why Meshtastic Uses Managed Flood Routing +description: "Why Meshtastic Uses Managed Flood Routing" +slug: meshtastic-opposition-to-nextnav-proposed-changes +authors: thebentern, GUVWAF +tags: [meshtastic] +date: 2024-08-17T12:00 +hide_table_of_contents: false +image: "/design/web/social-preview-1200x630.png" +--- + + +Designing a low-bandwidth wireless mesh network to run on low-power microprocessors with limited memory is challenging. Arguably the simplest mesh routing protocol is Flood Routing: each radio receiving a packet will rebroadcast this again, up to a certain hop limit. Although Meshtastic is based on this, there are a few subtle, but significant enhancements. Most importantly, before a node rebroadcasts, it waits a short while and listens if anyone else is rebroadcasting already. If so, it won’t rebroadcast again. Therefore, “Managed Flood Routing” would be a better name. For more details on the enhancements, please review our [documentation](https://meshtastic.org/docs/overview/mesh-algo/). + + +## Many of our decisions are based empirical data from *Meshtasticator* simulations +![https://github.com/GUVWAF/Meshtasticator](/img/blog/route_plot.png) + +{/* truncate */} + +Since Flood Routing is not very efficient, we realize that this approach is not perfect. The firmware has a number of measures in place to limit traffic in order not to overwhelm your mesh, but there will be a limit to what the mesh can withstand. In attempts to enhance the efficiency, we have evaluated “smarter” routing protocols at times in the past. However, we have yet to find anything that would consistently outperform the current approach in the use-cases and scenarios Meshtastic is currently being utilized. We’ll go over several reasons for why we believe Managed Flood Routing remains a superior approach for Meshtastic. + +## Avoids Route Discovery +First and foremost, Flood Routing eliminates the need for route discovery or centralized control. In traditional routing algorithms, devices rely on predefined or dynamic routes to forward messages to their destinations. With Flood Routing, you can start messaging immediately after booting your device. Furthermore, route discovery and maintenance leads to overhead, which easily becomes very significant with a low-bandwidth technique like LoRA. In order to maintain routes, either additional control packets are needed, or metadata has to be added to normal traffic, increasing utilization of precious airtime. In static scenarios, this is not a signifcant issue, but when the topology changes often -as we discuss in the next section- the overhead quickly outweighs the benefit of a smarter routing protocol. + +## Seamlessly Adapts to Network Topology Changes +Another significant advantage of Flood Routing is its ability to adapt to network topology changes. In mesh networks, devices can join or leave the network at any time, and in the case of Meshtastic, nodes are often mobile causing the network topology to change frequently. Even environmental changes such as the weather or the time of day may influence routes. Traditional routing algorithms struggle to keep up with these changes, often leading to message loss or delays. Flood Routing, however, excels in such scenarios. As each device will participate in the routing when called upon, the network quickly adapts to the changes, ensuring that messages find their way to the destination even in the face of frequent topology changes. + +## Inefficiency is Limited +A routing protocol aims to deliver packets at the destination in the most efficient way possible. Indeed for packets with a single destination, a lot can be gained by choosing only one efficient route. However, for broadcasts the potential gain is limited, as it needs to arrive at every node in the mesh. Since the majority of packets in Meshtastic are still broadcasts rather than messages targeting a specific node, a smarter protocol would have limited influence. Additionally, in a wireless medium, even if a packet is directed to a certain node, all nodes in range will witness it and during that time they cannot transmit or receive another packet, meaning that even with a _perfect_ routing protocol, nodes that may not be interested in a packet will still receive it, especially if they have good receiver sensitivity, which is frequently the case for LoRa. + +## Provides Scalability on low-bandwidth LoRa transport +Furthermore, Managed Flood Routing is certainly scalable, because nodes that are unlikely to contribute to routing won’t participate. In large-scale mesh networks, where hundreds of devices are meshing, scalability becomes a critical factor and minimizing airtime is king. Traditional routing algorithms often struggle to handle the increasing number of devices and the associated routing overhead, due to the additional control messages required to maintain routes with constantly changing topology. On the other hand, with Managed Flood Routing, new devices joining the network integrate into the flood routing process without any additional ceremony, contributing to the overall network resilience and message delivery efficiency. + +## Functions on Resource Constrained Devices +Finally, Flood Routing in LoRa minimizes footprint on very resource-constrained low power IoT devices. Traditional routing algorithms often require devices to maintain routing tables or perform complex calculations, consuming additional RAM, flash, and valuable computational resources. Flood Routing, with its simplicity and distributed nature, significantly reduces the resource overhead. Devices only need to forward messages they receive, without the need for complex computations, resulting in more device resource availability for other features and improved device autonomy. + +To conclude, while the current Managed Flood Routing is not perfect and success is not guaranteed, it has been proven to be effective even in large meshes of more than 100 nodes with proper traffic control. Any “smarter” protocol will lead to overhead in several ways which, in our view, can quickly diminish its benefits. diff --git a/blog/authors.yml b/blog/authors.yml index b6eecdce..67440764 100644 --- a/blog/authors.yml +++ b/blog/authors.yml @@ -5,3 +5,18 @@ crichton: image_url: https://github.com/rcarteraz.png socials: github: rcarteraz +thebentern: + name: TheBentern + title: "Meshtastic Device Firmware Development Lead" + url: https://github.com/thebentern + image_url: https://github.com/thebentern.png + socials: + github: thebentern +GUVWAF: + name: GUVWAF + title: "Lead: Routing & Mesh Algorithm Development" + url: https://github.com/GUVWAF + image_url: https://github.com/GUVWAF.png + socials: + github: GUVWAF + diff --git a/static/img/blog/route_plot.png b/static/img/blog/route_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..b490978bf2f0c407bda97ff0dc6fdf0207f3111c GIT binary patch literal 42265 zcmdSBWmJ`6*Dksg8x#bQ29++6R2mZj0qF*jZV~BHNlEDjY3c5gM!LJC7QN_>J(s@U z`1T%S?{Uu9zs~W8z=Egld&YHLbI#}6TM6NtH;8W_5Qv*1uU|+b5Es)ChzniUuD~Zz zvIpew<&woS5!q|-&*7T3C;UwG>80W)88h8a)|wx65PGI&COXU(S|4?EOfB@yKA|vb z1Q3XO2$2_0Wo@EYC#)SLhA4h*b_MNfvnV~df7?(d@s;nr`}LVW9XV!gVXuN zq%v^R^^Jl@BS#Y-7&hGs_+qR*IYn_epC;_?`dz;UHN=<`hK#mA9mXCvv<;OZV>6`h zynK4?zAMf%&j+tkb1`t9p?`S58~F3azYj%l<mhAwY3*QL>o8$)MN5eNwo}SD!GUz&kSa%xRH6`BzOkBknCLQ-Dh6W`~Z;?I`nkcu7;4qMm z-#OR#xVNgLs-|WzQO+qZFF#&s8-&j&pR3h;t22hzBQa4+)8haZS+m~#W@%|@uH&)Q z%HJ9}I2dXq1Sjh)>`WG5NVr$wRjvs2bbkM2Er5+1^+u+_#=^I>;+fb{tA7*(^m zvGJ>+!PVs|_RP%87O^n3YYQf9f(?d)gTqg`jJpW*Ml?0K6S3>&nv8MrSgk6y^i-(_ z1O&)tD(2D7n_VpXUH=<9sIf4V>5Qcd94D(N)v^S<}8yXt)i_Fc<<6%pb z{7lA6S$#Gw60&f_5+@Y z!=U$)q@?7*?jL! z7Bd=%6L2JEVPP>gHh#p$RyQyZGFfGhG{So38Ai#T{_M`z_DgN8t)dwxV1C-*Qed8J zAEt$}Rm4zdtrO zk#=vA$l~InK5huuRM2RV5z=OzRx-A`)LbiDt)l7s{pa9xI$%XRt0O_-;e_rtNnW|# zz*hv zyIyA!1QpUJAA~H7)th%Vn<)xxw{_jIh@Lfi;oBZ;-1oqySb#_9|0(4%H>X`$S@~L2 zbS6krptiR5i~at39{B6~_wRFaa}n>BdXr_-WxqiTOH55|-dh_Z;?T!gT3U)cxX|QB z*47@uZZMFJudc2h&1-!N7Bg1BF`aX-*`ES!s8#m+gpb}KsKr9(7JCwX$aq7K_fhQ5 zXD57)``8o$RLso2yw>ZFbXxBqU~ANERMnd?KCF#$j+U57!sfs+S2N_Z62L?HGnInC zeJ5Ah`$yW*8%qn4-e0EIQ$4fZj0mA=cFX6V&jp7!_%elGWIIF-3NSpq*t$A z6|XQEE50yie{%;yiT-FIy`7yMm;lb>$B(m)z=5vX)b{oUs+5>+!U`iZ zDDF3iNxS0YbSw{K;0ukEn8o4Z<0reiyE8;RHj_6tF~KiV&VnBeM_;{q#c<`y718a5 zj*!Aa4)H@UbbKMDBEyiBOxZMPQGas&{2k=_dUk0=g^@rUkEQ5^;DHPUqara$Nrl!> z<_sHKTYB`8Zo#rKW@l%M7U*_-BpW(8+{PE$+}|GxrlzH3g!m`(MqE6kwDd`qqDrBD zz{(-p1ux|+dDF?tGPW$jAI9+P zLpBr;*OS}Z+Qh)43KuMFY)TVSQ&S5~#^f_5!Ze)H5Xw`t3L1{du(osxIqCz3yt?g# zFBKFN$}Er)*_+zZ83Q+dAVl-tHwL?55-cp0R{97_u~o|mUB|-e4}J-2VOXS0#QiZT z#rR<3&y63^Pt2cX#JIV+4O)jqbwoX8{EUl>n?UE4(9qaO50R&}(ssLWR4zwdEiX5> zrSA#;ODVgZ#rVaQ6~;zy0tHesvI5oZH#H|)-WTaoC1P5)%iM4-qoeEQ6>!M+Mn>KR z1?+2MCC!i%V59%c%_SKWm`w=;1_cobI6UFuIX@X#9m=6tSXe+u#LIUj-@e7UfB!xN zDL3$gt?60}ay}cO_wOH&lapV%a%I8J-U{N!lP6EQ%PjQ7BdV(fAT3bezyC$>>|i!o zYkOm(+s-o?q95Ym@X&x?C`id^w#nDQ|2J3<9<78v|K+pHcA~zC3hV8I%~?_{M=RY& zTwI}7vB{^wB_POih+W!4O-ULWGPqp1*~_yBj`#axwRjX)Pp;|)qN?DO-jA$<-M-#6{0 zOH9?WMr>77RLZT^B2#Vd%@#XnDHoyRJVIAjw@|<5LEG9nWM5;7+*WaAWnye{zF(uG z#3Uq9#$$@g$`{euT3T9q%hKt7Lq?Fw`LoIkQ%=XssLJhId3kx6%0*tkehKv(7Rg7A zm6&0?%~s{k`iOynAsY5DD~;tEtSmx_{I#t-MAgvb>k+0?)#4D6i*OBF6ivS?o#(^- zr|ojH8+@{|>MZ8t;UR9B3fJw776C8$U}cq}+YxzibktjAZ{0Ea0<7+p4`J(=~T1cDsGHJvk5k%OVMFxHDts#tBhK8*Wc0ckzWSRZFbFzPlNKA>X2D{~ezvTqG zu^{%GtV`t08!U)U+AZJjt5#Tv%c$2lIYNA?1J|`h##n#$;r!V}^V?QaTf1R@%2{$K zTg{*+;WC8J#)gI$8NL-2yiQI|fR-X`w-ttLRp_DD`|Ks_4}zh-A=F@8mJTP%(g&_YPlf!|`0@dN{|vp6|0 zkB*Kmbvoq%gAZoWhy}-p{+U z0L+iyC@6%%efK4a;N4|W&m3X<2|-n;sh+G$z!Dy$9b(Gn&Q5=@l9H0n@tu7L1x0=x z^zj`I?;6I(RaYu)<@Ob~ z1rCl7d{Z#tVhyg5sZpaI^t0G-zzeo=8inctlitQh0`#}tS-d^l?4Jr7cyci7ue5%* zKT9R7+;WA@WRzntM+0qhhmhTuU`eZwaG%ZjXG-BG-~g5jhkJrN>(CK26&o8%NJyCb z;m@-yr8LNZxFjTE-glWfbWBZ6(HI{9fcS_X8Sk~5HwTt!x49O!MNDAl%`Ggn_Etxz zsHn8Ru`n<&3>`Q+I$p=d)`M6Vncv?pdzV?+H7$*PeSMv!{L53`2S+g26kz?=U`qujJIe#!Mnl==GY!`fXfP4NAP1XE4A*G;SbcC{Q++Vw zO?rGhL)y9%7k>SPt!;|fdO5|`%f!_;ugkJ)s7=z*^`r#pH_zhR)%tB zQK&c_BQii7Ow7!O>lLU+?CkZBuXrq%rfRKfj0Lu0_LBT2PqC1z!$YS_>=>-JHX=!QU ziF0f_7OEYOpI9yjFYIl7!MKWM0KlxKW2`6db8?1Qt_;R!WO&ELQ6Rv7z#l)$XDPG3 z`-OnyteE%yG9dr)8fOi>FrXJe*0kWN5PONu%*=quH3MkP&CBbF+&zP}L4#3dmEwNm z-Qe)>7T75CvzM4ov~I@7xw>A8j)^(ksK-u|O~a+3p@|lBj)efKrKwr#dL8d$m6I)* zq>~RZrx)DNpS87)T+MopF&UlC7NqX!(Jr0Wvz5WDf~@`B-ItP*{t#Z4`_o(?BcrJq z7&eDtzbBZkG(_f|-QBVee=fpeH@CJjG*`*q*D4bRFbqJPe{gURz@iKAqkKTg0teF= z&zLM4A`K?{b9Jib+)c~d)AOy}?sD?*@Gu=3PJ%h) z8@nXa9ZtnAADSehVIHD2Q>mb^6*6}C+FfZDVi{@az^y}M9OFQ`oJ@Or`yD(yykzAf z!`47*F%D#@`K)_yg|%5@M~65o2ZwBCR#pgPK|1h|zGWi_Vxn*u{`2S08yg#6MzCtR z=Nk^BGpVqE+cDtLym<>$?+zs;WwJqEN^7!MSTGPRdJ5;0yg_crE+OCp3_#zcu&}W1 zfRZqOx<93$+ZCHdMN5mcSqlsd42FD7FP9-N2Ud&^!6O-sg#p!X72cF}Y6|MJj+{Vg zeE5(%1IU<=n3#cDH27`x(K4eBghrO}*mPI`QE)2@-xBlLCSaE_aLxpJZ$CeI8i{Ch z4tUAR#U&5aFa+{BBg7B6^{JX1gP}xWY{b^l3h)=1iK$dOb6k zNl6+u3Vp)fd>yg*ou$6ACK^{dLWY<0zd}%;>1e z^uMwcT_BYd{$G9SWgz<8pi3pZ4tyc^SH8L<^8YAV{eS6XRrucw-@UsBD7CJq2cS{Ytl6a+h2hLA!3l9CenC}Dr{o+2X!u%*1h!X#jakeT$0uHU+q0%iv00|=%a$f(Bg z@Lyf-#onaX3r<$n05IvzwUViY;ij>%C}5vPPOvvW0J9w&9V7Vdx%~Y6E?v6x9gs@8T*jkEkA46axODk4tM$5S zmaF{VlU5R$y-bKC@VG@*2k8?`5A>AQ{xlhS`Ak9tB(3`1Ug@Bui@1!eVDgU+e4Bfo$PM_9|c_ z=d~=a<#N)Y1w^!;%0&!l;KB3h8aB57&>#xjFM`kZW9U|Q_gmOp&=}FSe6at`+q-^b zgovHJpzc<3%Ygz_dKV)|KwMm00LE`(V`D>f^7QfPM~icQ?24#)2i)(UL(C+%Y}GoSFcJujSJ{UF{gbY=F-HI%5eBdiJKj^s{b3pb zTpSi(xR2)1qwm4Ncf_MW$B+iuhjb`4eZWv$n&EdE+6Q0M+A-n|K#KeN_3O18H!eb`M9U$P-85#&?))qCo5XeH91mrBeQ zh?8RZCwd?e^FZ@KR-9g3d<{l?xSWy0f&Khxll%E|cPvea`XE6~BazK@ZkVi`oCAg6 zJh~u6g2~>104{Jihxf{#JO=q>c4h{opL-BobrsN84PXfr*4~w;N;ktiy!>~2+XDF> zWR%Pd*8B}c2dIGmf5x5v4zE>pw}im#Y@(8ql5p_xUw-`fQPbnWnGUGa7fKzExqvvk zk#iCRa*WRez)!cm=e5rK7A6h-N5flDK5ge`n{p%%|~fmnnqux8cGC4 zQF(5?t(NR(Wd(7OV`&b9{!3_l9P>A5zaT%UKDL%n<(Js}*qF8`djX^9sip_jnNF;L zt=F!AQTnlLb9YNF`UJgwecv1j+jiTAY;xBw#Ee-sL8t(Ngud-~uw+~Z=I~xlF_}v3 z&AMB{Ct{$#Cico{{@^<3Iu&l|{*4ng!xcU57`Tn>n*Hbt_DYn=HoM)Bt4025x951C1e-8u)xlR3l%2qFKcPBoTbWnBNj6(68CgUr*{59$*Txz_o#oYWyCVWuBudvD%C@w8|9va@n=cJ3Vn&)wO% zxf4-pTqoAN@xL5zM(dCvA}!29Dn2W}jyNgYp_T7at@rhQtjK$O^@`IWD?jlL)s{My z)9Hz)_qW+al(2cmT$9huDgEX0TPx2>{!Ab|{eAT|3B0-U&Z!m#7e0{=2mB)Y5-n&R z%V3%QXuFvRF+v`tH0UH`A4o1Z-@PZ;-7^qx&S-t)*n_RcujZt5hdZMf%lX}H{q@yi%So@HUJ|4Z4FWzoE0HFvBZUN?w`n`^taz~)RT!fuqF;N8PcN<~`mAyJ%_Yq_>~14F z>sQa`5pW)CO7i@7tIu9p5_kBDJ?fA)r1|Q=mulfD7J?O9>u`BCr_^DOjYhZWN%<383Np!QGv}=*XPcNS+w4u1>MNBE z%s2en|5o`}=vQ^a7jE(-GlmYP_x1GD7FA;YiT~5k+<y@Rv!KE&N1Zmz&ho!O^-qD%@ggSqxbrW!K7us$^9jCvEo0sG{j2gg`*eN+;zxn8p?)KXd8Ur^@`RzX;?H~O`ECBAGB!Rm}v% z&wN`*(H;ufTpQW`S&7WwH=VXu$II+gwvq14#22Sm7krFt6|zqqnY+vfHZxtmm0d^d zb?(8_{fs#Dt|X|fGsi5mJ*1Jui!$(g2y(!=1^Ft?A zSGGk%7?TgT^Z14771qd}<#>GD-s-sc?exfPC5c8alOU$piUHqHb{b+uIP0fZ5KA7z zwVozR$J5>D7`5*$R#3S|`K9{9@C`Gs^O-U_7dBzSMas_Rq=h znzWvuy4kx7WOA`h;X_6-L!~ck|D|o4%Py%{GYiQiFWg_UYAs?7wyQoj6lK6ZcUCEb zMPMm1&9nJE)4%T&M_EImGaDH9r2LprYCo~NZ-|na^Vl-$P-;0w8ocg%Y-r~}EMBff z;k=aW4rAP77OyZSKWkbuE0f_y@XwKQI}-OMceo7r9xJ7;qnFWTh4&OqkLt{*QtqY< zKN*G*|JE@;a|$al-VCGP-H@DCAZ6&MdN7j;F2eF* z#pOA-f++U5&VxHw^{z?>$*`8>zia>6lk=(bgpkeh(JAdtb8<8$gdJR>yWbqI+mG%Z zqQl?Cce*;S3ie_ZM-*?HKZb-O^`wHkZ+n~E#(K+6)6wbg+J?c}O3`;^Gu+Lgdid}b zCMM>4EiKl^k6Bhf06Dqy9pGyI{)zgs&45$l=_|LFno{i-F)Uvt+_5?qz^J+s7#;kk z`3u=1XZjF{FLElAPIV*6}JAu&cf{PyRSjQp8pHPq-4p? zPOk|*JPTk8VIO>@{>1UiT#|OCai;!6qNS$Ce$IoTa(z2S)6=V0uJoqMF_MyzNu|l2 z9IfOi?|LPmOP5{*EPeq2w?SBOb=5cPJzngggc^d^Kg0t--2Rfl@xkFKoe+&!BZdshcr|$8zTXiq8E9_S~pdF<%jU z{Mc-g3M!CL#}SWkbGvN0-2VrZT?8qw6_%Kon0Vlg>7}J_etx%TC8E0v4f=oHzH;T9 zZv;6%-v}zLr(dU2g&$Njp~s=n=^v%7wOPR%*x2yt2wq!TD{6)RI4yyX4UZVqFh7%& z#5OWA%HkS{nH>>`eGG~Rx*#Ih+1Z&Ra1Ykv*|iHNn79LV9MBE{*2pOc;=CJKAmF=_ z*9{Zb0Ev}3ZQ8~9k5t&QtYuiy?L3*hbbfe-wMQmBtm*k|M?O=k!`H>$ zsxsuaZ`W3!sxu7mh=|fGRiT;%M5LD#H9al#;)SbxRC`y1No=Zo252pp*>T_w%#tB_ z4R-7!+bQ%sz5VJ(2fge%R(f>w3EHzhPRWd=l-|5RdzzP<-(unHtIRc1)r6`t9G>9@ zWOJx9pQFlc?bdwVpZ<^Z#hNoG4wJE@+~>!V_A7d_YHDi0!QTPNip+=Vs6_OWr%?Sx z{8Y#xhh_sPPQ2<{05u(&3}jLz$i$<7FhhNd!(?xLLaglLd~SZe-SfoT06e+MoRI?0 zRj?^nbqNy*e01k)QAB`>o(gxdCQMudRBFM;Ma_K~u9s<&)dR`GA`YNQC|Bs^+h@+t z3`GrNN7eW&t`BWJ^wBuFEM~ac7kJ2}~j!&DX zmQdWE2j@q-yAlO?2iLm$b=12Atxjr@6n+VoWn84=c8?@yS2zxym;0|uG)Cf^Gs#64 zSB*;dRnZ7rQFIJh;$B|KD&2KH+A)aaIMiF_XSZF2h69lKHKFPS8XyD`XQ;I5cmKFh zbADE#i!JvV6liFp`0C+tm4}B1%D;IKx5TT!yY2T@HGxY*n*ttiX%HysRAjE-cWse( zc*Cc6@jRhfZ$gU1kOiZlxF|&=issV#HSHD!7l^+Ias^{>}<+FazYGk zW%JpdxLR7A9vc2qaHz0g<>6t8Ehr~;2uTjAncXgnlZt601GsBfk|7pc;3b^E_=6k*s>#q=<{wmu3V7 zKiA6qB^i6?`EglBB~s&uaXOAyo%mbIZO^bG`EW`^O;u|?#9Y=QNZ{g1ikK3tIM0mD zb9d6%Y0L_YS_t_mkX`K)zDwUR`q=)D4Lfxc?aV3-wkSbL$pa~LACykTVzx# zR~a7c9wQq$Z(A3|`3{#k5lAG9bz7@aAfm^kOC9I$3OZG=4k-emCSo+?B87 z;c8xa<cmApG^Ut*-olbG6`U^`e*~>Im`V3GWBmxmy*3s9sUou{~3$nEg&G#B0)} zVIeh20T!uxv%0n0Aa3rEP-+9zO*A#5OaB-l{5!!oB)@EMs>(bpUv8?0fl(oA9J9*^ zrJW-peIau#6J&!75a<^82RpWrqTTrK6Sbsz*}wW>dAG_WC|5nTTqRvwoS%$R_B90O zxQntMsPAt1eq2)j+Agr6)W5o$hlZ0Hzr-uKs8zMC!m#lg&i1`46}VQe>X?ls-Z}Ee zH#iw^9GD1O!ttw}j|H}cS>DwSJFk1DB&TR@sa}knuvE`;KE!N}SQ^i>XeZ|Pld`BUSPlq#ZZ>7PJu{$b@Q zaglM7Qd}e$T+FrWw|W>Vh#huAW_-N;X4icyK9To+Ti%^Y){Y2lXr`Gv<}0@=moxf9uO>s;KkLd32Wg??3OFuNJaiWcGwPesTG;K|Lo+{NF;$sj@Qah#IZWbB!{biKdmeA zr!WFqg|u`HLYo<>Z$$ow6Egf!{_3VeFb%3Q{i0WNY-7?wFRgoiZMwqmBi)ixSS zW)(Mg_l?!6Lco5z4K_TO$j_ON3{MH-?vX%r_fdKhi4L4vIbWWHK%1%v1$+7SB41p6 z!+0=dh5t;=z0bi(cYvW1RlN(=J=F!)okyozD=FsmfRBR|&jPPimZ9Fmg=e7*dp~r2 zyoRi^)l5DhF!&kxdg0>e*P4sxy@i|WbH1amI~L|u4$h)N2#JYiq&wY;tH!D~POQzw z=gl47`|YCjpd}GplCYBo2-*g%8U1N>0HNk=NfX|s1y?@2b(`f50f7f3A!yGDk3ybt z;iA!&|Nq1?W*yBGPbhhZP}&nc6q7bnGaYtEbM)xCZtd60gv3>`yX`M0s-pI7cC0xl zulNc<-;M5H?Jq&QxtuIG>*&^kysj#rV*qnoNq4$^Tiq=&&u91lYI{_+mgSe70E13F3lSf&cQaexBH2LtycE6DT-W*_ zj8elNSdsi2wOR_^iy|Tt@w$n`Sg~w`j4BzA$-Qm1wf{+8my5=Ya6k0MaXM!&WN^y- zRL&u8OJUNIj$;uK6SvQDRJmJVLpescw7mS@#K<>0cHNtVAXi6&8QJh9$miIKiQPH6 zw%$`10MD*(^Zgqh|HP#np(!B>BNZcrF{v?~Oc~aEMwpiIkooFFB>_re5<%5Ky>VKI z;x0x#q5n-^DU-}}+Pt3%92|l6NjN+0oWr%BKU~GG3q)|aruxUR?Qh#64oZ(Mc3UbE zl;1?X^1s4wFjm1#apGKW4`9k&oTBx&OX>mR28$Q>oy4iq>V6Y>g3r*Tc-K#*p)3*U z>F3o1q&k$M=!Z#;&+IAk*htrt{Wvo34+$v3Xo%+Rtm3Nj@-gD8f1KX@PRMwv0|q-L zJBUt8toao*5o7}f9NF_~tZ!GgkDDgI6KBT;JWT5=<_||{nyB-Usr){Xf?n2B&IF%t z7YHQRAQ2B^s@}LQ&uc6&;+fr!_*=ugF+_cdbO?o)~s2>x`L1mj2q+GlRz@cg?yDOHfEhLShoO^Dx^T z^1i5D%*Pu;ap#o=hG26<1N6wp+HNOgzy}xxNGdbvEvzh>I(tIfoYh*_7;(;Vp{WFI z)>kAJ&AQ;)SvWc&O+4a!Jit&=m^TA54`z;=&GCQq_gh|H zMU$ZnmQ2DY?$GMNS@?Ke(kZh2lz0Dv{ty!5u8-2MFB-SrR-ILFY?ydzrOh0!4;EEs zEOdb?gx!&-7*2gcC^MFxt3U2G2sFYdl&=%>peq7VWoZwrFw)qRS0 z3U%w}d8PVfdM0|}?e&BmNcBX!`3#NCDayaGX_I)o?5>wf0Y5^LT(GgV(<_2RSKC1E zz3D|Ekm~iv%UM%z#m@A{_hm+*y29PGexi1rs*eT+hMcBF+-|)59bUv&c#2(pZbyyA zXotl3kGNRhZ*MWHUN7Hbd*1$>Y1F`7G$iljUQVWQ)@yMI>iZ9$8p(4mJmnbN>OXh> z`me-u0h5QgA&ar(;D=<>b5R|JvfE_%5HTJCjN~Rq%8p)7?UiuoMq*SG@wik)?MY9q zIPUE1zV4d8YpbpXG4}>1WA|2KXk>mn(Zn0OBfF&J`N=TYHen~huUqYzn~m%QtZbZh zDWx5Z%@JwF^ZAQQE4M#Ud0r8?i72%{eHfrA72Kt}mU*xr;E@KF=c({LFuD#BC*L*a zUqv-Jo3kY(5xwV(Xml&gi;YNs{8Peh89y98>b!LJ62yUrv1KihN=9WsB>?O&MU=Wu z&(^*e_nih&8bGO+MTF08Iy??wthy1(rwsyL^GiXgEciy(351_@dVE;$XCDV}O0jVA zYhXG<*#tsMndKpkb zkinD@4YQt~6~WlpIo7Lp2A&-}5TpdfoCV)V;nhS%*tef2>N+5jb@%k#e@GKMLW#sV zy+@46h&j1$r?EXP1J<^=w%qnO&f&T0r)XXK^pmZnz)h>Pr8oze?WwCO;$^NVn%;?L zkK~$+sk|;g-rmhs4}$!Q0{(#l2=n3jhBu%Hq8)~M*Ur?wvAp;ac|T?wzbmmtAIel8 zP1xT(bN(dDka8<}@BHSu5!*q=)5B%q$|_l4L5_KzEpn==q|nFR(A4za)Kq==4;u8} zgJuXF)L~WsX1dyNyr*;Cf6Id#uhi$>-ud6jgK%8r|I3z<;#6En((1h+&F7o73Eb04 zbWjmi;TyH>Ht6$!F*cX%D?Rk@ZT|of_ z!qc%V#Gz-^m*7<5r-343hm0Foc%hPWvkMeR;x~&Yl5jx2fBLlhop{e-2fWBcNoH8B-NHJ&XM2|E+m^G&(<|t=Iky3sjkkIx9Ym zKd>?z?+Ax`1Mxo832&C7K<7}`Z&g6_Am&5=D??IIp6>3{3zIQbtObuS-pQu+KnYKv zZL?a<;Xr$owoI*wuX$E*D(>^;l?zb8t8J=v->;fXJ@)i}#KzitBA~}sz>)Z7o(-KI z*g`&@pN9S`)S_X<)>5XVh=}MPh&$j)m-zYB1W0%Oh{do_b0>eMbYQ=0tR`eOhE$7P3jrP1DQmDwK+#eLHzRUhoAeBXC06*ene8}Kt3ST^87Soe^Ymj~ zljv_UOSph{hDb|v4!feS^VJWX^>OIX=+fAFjkNT8!a=>ImRjN?v2j*fNd2g_v+OQE z+8`ZPF$9qP@V2K4ga`9Nq9M#8s-H*+x>O%Lq#^$db+#tQoy$OM2+t>MK>xDAIs4q_ zArXWV_S3R6iB{w!Zx(wLdqb-$g;qm{Jqz4`-~;lZdgu|e9BDxbv{+r)*S9jb5f z8s|Y+&THqKP$2s40%cy)EjF6H=$5V1wnBCPV{|(;Ivg^ z{Uo2X47c1qxn4o$4!_H?FKo)u;O*FiT5dyzmPMVZoB1ac>$3g8PeS_LR!*Hbic^4MipC%u zMpJLtD>$us2%!!q(Q=3bwVlSFwsAp(=iz3wOf)-3Y78|B-vTTI>hr^2#%9+SthF<- z>uxidFcpYDd($q?F|=yS5aK1NhlSKaeL1UrIETUZmNdx3|djaY9`}p>EhvyYh2c z#XD0JiceXO-$#D5r?ofaO0V5knal9)XR&l-J1yJ(ki7}xB46yqtiSq2&mL6IDt}8a z3n2pUR2)<81I6W4@wpG9UXJ#mWLtr@FS@!f^%-h09Y(^>J3SsbwmdE^F>dHp6IP9AbCt>Btm@}CnXZ+d7rc6psp0~?BRoUw+G{J*S1RN%|vQN#=AM=aMxfedm zqS{qr2w|AoMCx`mO>j2_;T6R{EzX(h(0&)rS|1xIM)EIrB?v*oYj?mssMy6@`VS&b zDz^yIt2BHcKCeJb%Z`5Iy>C5S>EJy`+-kU+ZqSkcYEieHQm0dhzpZ~f_-WA91nB4m zU{DlQDg3Y8jAVqNg*6U#B@??M&8BXmH`oWt?DfcjyfXQVnOw57vZG5OgOj?EterdWC7G+Tk^ht!Si4Nx(cUdE_PLJ?(op`*ljXu>CePs+WluP&`>DaMbXrB8A^04Az z2gAj?S2iR<@@2DBLTF5)-d1XxcW}$#%9PrzGvI|uB7Q7g6<1{4wdZl}B?3ukwO$c- z2KNKQS`vO6ZI=7T{U$ZUvQ58cdtFat`P7NC)_&8(=vu1dv%X?+bsOLHiOS~rAB;Zd z=gy(A{s6tafUuFfD@ z{tQs{5||?*e&|`+P-eFLu@@)f*2;1gY;$}@RKO0uz4yUO(JC2H3)0U;F`OmYZ-z-YTS#Qj0P_h7!XRm`3mqCtn z>Wz$Z#m4!9u(E?8>aTv6@<3Ju>X&}#FPgEQwV{uEy0N*fDqtT01VR_8wc&;DA8-;6 zBJQy=1z3|*db?RRNqg-R*EFB>U|!>~^8-by!<-bannV%;T!wDugF}Nrd9@%e-zARH zAo+;-^O|jfkpcs3IERfUA3W`hi|E>GNilSH&3K%_$ob(JOeq3vn%~p%>qp*HgpKvo%qwvcu z3TvUMds?rChx^0JV=aHKD0z^_St7mHXGd}mgbg_|pTg+PH_dO+WsdH5b(9S|qoA}6 z_Wo1-T#d;~>7AizdIWz*FgJ;b_WL*QRlmx|N5Ao6(7#OUM&oABv+ zwJPg%=<5L$mUGr|F#M$!ol-Fsh$&_2&3gY~O&3AoBn?6!**aC9I7(%#&O~?ze_)R1 zWIU>Dzna+F*Sk&T?^blVC%~U04mD9J+#8gn>PKfc$f7FgV9bZnwBOt??n+tV_sF`R zPuDEc%}=6MKs_-d)f>P(7t2_?f>Fwy#WJx_W)WpW;@=|lBQ&NAAvg3M>peUT+2q|) znAS*2rEec$BcYsi)-^R#tLmuiLI&W3eTKG;n<^Z0zjCfFu@#E>t;k~5rMaY{xmP3a zT?6I;8v$~JqvI(7O?|N+*OO3&SfeQ9?|*G&Ml(YtWJteQt<$<)H1r2OG4IraOnF7B zKuf6|7y6O|nF~iXm6);gZGY@T;s!Go23a^a0YXs@4R3-@cC~GSCo(mIBgu)8D_>ZQu1CiWoP$ z;k?e*zV@Bhb>ap(#sDexD33kYLRHVEr=LIZs~NU8!?~mSSw*Iw^rnnOaH7t7NC9bt z0axK0u{O4>IA%_T&VJG|VpDT$*|+1yBllDvhP9!vx0cruzFyo{KjEXmCim~$kG5Y& zj$W8_=-PLvd0GG5D(e`J#MjvG)6Yg$#_r-cW3 zrfy1}t)A`5-}i=HU|?d5EQcXB^FWvT8>`5>i|S75J49n1>n;@mR_wl7_I`hG(|N7> z`}>1K$&~XQcW;&Nt#~DRQ(8QB=!irO<*s{JQjNd<)!%<-%CNd{sn>norQD#(X{^=6 zSfxxnBMWM9Z_ej~?41S+qYOyTj<2Dd_&2}o2Ga)Bol6u`lPl}$(m?;Rwzl^4q791m zA@CueHW;HBw$-K8B#T_CxFhwA{v*B*5xYB#&%HO1*)nen5m^mUl&0(@6#U2s4Wl1d zG|)=tGeVkwLZ+wayvqd&9P>Hjykm8;Lxvn*yV7|R#;A~~?DqrK8D0|#B?e>yN)D*_ z3-~X;{_XN-2w{!$eVX?6ZUt&@EBhkP{`!lk&MfZu6N-85>VArW5R zY_=$Yt05o1S+h>?;5o5J?#Tw*D(Ncu690l}blY|nk702f_G-fyva6zwv7VHAw#UgO zw#hvim4xHIU;(v9aYKUACNrBd2BxP&X)+#a6;=kt9UUl#LKyeR(`ma4&G#-rL3kiz zrvTrD85s&XUX!dbiZBRA9?CdV-uU zPG1BKM2j>Oz@hSrixyS`3LMyV$mO{PKiQogve{xw9m;u;%hBCPfnlvk7VG_lO?o0C zq7&%dhG7B^y;xg!n3zE~^TRtKe#JlcKtKz}RTvM}g26rLg87b&bB>i1ICM3uIlY^l ze^5IN>+`~3^;nCdeiS>^XpLZT$`G;QbRur#jNXCGjvE5@D;DK$R;iNP)yB&CX${D8 zGnRGeD6>sFYjZs(>in+f-picC+b8Vc^+2Jv)3O462A0P*Zs+1^LQiXBL{3oaMQiXG zA`UC6bNfpS#~8I#qJ(9v-5>h&!E`SLe3sayGc55@jz6mbp15((Jw@?kS=1{%b8=Xq z-C$>ZA_|72Fg~mfvum=`tYoj*@{-#n zHs@_Vb@DSdOo6l5S$luMo#O@it>MxGYnqOz23l{yg*OL80z_OfiOv*%W?xdUYj%zq zpIR~=pA9Rlt{_dLF@GJ5%qlwBMCkIe(gYwec+HQxmvD!09rtjN{xPZQid7zGd|*HH zrl(N+$g|me5974r4i0?q9)(00CwuYY#rN;uKPM+scXp171;XtIeE*IRdiLzA{OhW! z^Sx?&XkMa$KW3bjq;$op3wJ%Y3}3gj(=STH>{lMEIjxMn!c3wc+Lwtd>$XCWQ?Tb@ zsoa(}Xn@$^G1b4RBpn-(73&-*ICS2aBP{<;OYiwW z$ZfvM{%RlhVR$N+n_q1A?xv&i4mBkwMvEf4}Hmg44*9<%s~zr>*?ywpimm7 zC>S)V+u+bwkL&3ZHY$1<>+^oEbR=?(r022zrm97j*0U(re9fL$H*Va3`9q9*rRJW4 ztoMCgMsh#QJ|EK6(MrCahUi>>Xd|~-*VMU?&862X!zOB}4$;NwWZMIm?6`4xWNxyR zdh5j^j_&t@Ny!T^ z@~{AJ#!*I=@-zNg)AG{N(QykIa5;~JYQB`M(wOqBN{2!QGxvQZ$pQU}xcz;oaQ1P$=g1tLKwKIik($1uI41%rYxcK>yu!`rmJ&}=FeMqQ5f z*4kk9Yq;8x7gcjE0Ix3!B$oll^3OzmCy(a&;DtYxd2it(7Vps7`@X=A9ny6E;$6@@ zGnI1P!`oOPa(t^&+3z*^<*nSDM3wYmX`DJMC(|eMW5z^VS5VMZi2yrxxov^p*MDO< z?%hm~cr~$Y85L?g)1Cd{eNF?eJ$2|>MsdM z4A{UJQzJyYjg1Y&bVg2f9pu_re*3_%FkzTeI)EWoj-1Er>{>8s;zP*#6~=+z>FEhW z6V~B@)`UnjT8`;Wmnyjugp_>0q|kO?c_ymLue!*d?LX)ui{N+PnFgTCbgp~3c(1sU zRfkS|l&gnFcfx-~aetO4tJr$s&98}6htQj3Y&vv;PDhku@}~72ZN3_N%qc>0LhbW} zTX$^t9b%N#T4qMPMM?ucN0bo>ToAyrv;N*5&mh{E1T!per(Vk5g$VY9n;TyL^99B? zs@tH^OX?Lmns>7EUSH|X9G^^d&baXDf3WwKQCY3s`zT@{qM*_tY(zl1yCejpyA`Cn zJ5@p&6andOknWO}mTr)c4(Wz7pY8AWzW+1E`Eb6RZ)c1>2Ez@{v(~!rx#m6Vx-P=u z5C{<>r`+zgWd2ZQ1kQ`)zJ#Fikn)D^fuM1k;&jn;CeI~j09jIZ6nG)d^}F(?;&Oi> zcz1FXg8%Jg1?<80L4BE27a@Ru~|uJ<#+zo0z4XQ=<;^cblzwcVm`lXw;GFpJy{ zXF~kXR^c<-W+KOesoRLh*q+@k+a3;VSUlG?G05TChUzjR5Q^@5O(DQQ!ePZBMDUT( za9LALO#|sqN8!|XnLg(37=lNsrF$-jJwbDS{fFuewWC93^li@8O3f7kg7@D`lk#s~VscN%yeaxif8+9-aMTHHJB zhIdYHM_)FLl91VW@Sg&`E1GQ$UV+||0C;ge7xt_KuuJ1HIozTrrVl%ap=dawhl?3k zB+SI;Oy$!H&k_c!Vi$^WSN>%9cL7?-oKr0@+k1({1U+xylF{$|_TkdeZT|Jj8>z~1 zmz(7N$vfOLCxa8Qmg2ICr`x8q=hx$58n4S(*N#SbPOc($@OKBS*L_FGv}5`sf6!=! z)Tk^UQrlv~ku!J|c_c-`|Juk4V#(;IscURCxPqjD`UZykmu0u52)RS7Jg-IVw7hW+ zT^xq$o{D$xp)QpEX1SrpZA67wguFvLMmCSK zxVk6W8{%`j9?1_M>qVSgE$+ndZKE})v7CSEqdAcLHyqo&OG`^bbswQ2cH~k)%}o==23iJI#_z*wm9d*ib}DZjZIBpL=c`x!5 zV7tt=lXrWsMiVq_-20gjMhxbBi{oDA+ipMJsYP|^e%&3W`cwTA`#WXC{@TeTq#?q_ zXTz9f>%;4bm8}K&1=)|4ZnM~x+FrVM@sgtnXp2nYPMWUQZ>{v>l$dlPq}*N8Y73pZAt%dZ4*BiTD=@WHWcIKQ2=i~8qA^2old z?b$DrH~3e!0aqR(r=N-c9SC}a2oS6)dsa3MwFkZ#@g%zCJSj-D%9yY+G;D{6OWoBP z)tmA`^GtV$@?3$g^T+vgiVWnJmAQ>)7UE^?eaArAGksgtYt3a${Zpi7SUet#^D1=!J`w`gM@rBjV{Enlc6~= zRN8fy*Ck$9-Rpkm0*wm$m3bvS)|tW`TmEJI2D{9B?t zbha-(T-b+toV8`0ICi@?Or6nb=f{Ltv1w->BnZhkhK|}mpx|U`>(t)WE`g~KG^r&n z`>OF;AUK=xZz{}-3_}?1d8f#XmZNHbDQY`Xo+@vTL#}eG-8T<2a;fMjJ@BYy5KhGJ ziu$d&#`7&~`KxJpo_v8LTg}0iQ0pg|y8SMmcvJylZ=44buT^``*iIe06Y!DaXA&e2 zU6mUG!2scnZ8f4XTtCP}=B(zPUs@N5Or|~=yPK@t?J1Jz|18}`ym-ZYFq0|Bk>MG{ zek^t@n@_e}>P@WNYn-FETd-S3n`HK{n;^{66Ce@ZG4vQOb-@4!l+D#Qy&!{877&2C zygVuYqxIIkk+zQ(^1JC`|IP%GWoBm9aqlT39J@gDfUh-Pc^9YEnS#(VY)J9!)`a61uA|dAf zwY?>?-pi`eca078J+~tn(S+cIpvp%5O_F7hFG!O#M~ANJ4)^Q6x?&q z9!_Ux&o24sQyhDSp=vi2R68{4^`c*x-TDRlwY0lWdvfAdgRw3exvm^oFansdkCw9G*YYA(ZHLh4hV4rJ{; z2|UNe2_0-l60|vwOoB-& zfHL608U3q^Zos-Dh2_Sh2{61>_P0&$QMA1hdA2-Z=;P;OI%(iaP3pt=5CGh%z!8L? z3L@rnU9Bau!3Aas*Sc}Bz4dv3w`KLSKX$6kd%U(uQtwe(=r6Xz0%2 z^iA%g``+0V(C zhK9%hDN$Vea~AzKF7yz!i%@bw{!w)2$C#2oc3?0Dw1KeQq8yi6(ArF9$ z1=4#&4Fi!9i;;M=LWZL8shp4~27I8rf<$EOP2A5_p5~OQg<2^^MGt`(#U0tbO6l@x zK;`2fa)!wY0?r<%7_naBiaSO3vNi6?Cq5Hft+5I-g;Z>Hu2BH;HZoS$vT;3IJG+UZ zw>P!DF4;INr*)crP=70AgGJQ_6Oq$kywOt?LFQ1fLs~Vqxf$Vgj&=_Xt=fj{Q~mCt z%^%sO!K)@x>|ZPXNvDflBqx*S3p;X=v3+c)*7v_pD~URxk_JzCxG4dRi?y8{&2FcJ zo4Wy-7b+_0)kasZdDKp0S3~x*LA&jIeI=UR#|(+H?Y(Ep;(Ldq2iX)kPq;Mjkl)29 z6QJMVDK3+BUOld4E^Qu}#8x%qsN1UBb-Me{j~wolZz*cA0-}V6rcwqeAafVV&8>2mF*_dZt!|`>|~EW2cTrUsQA)>~4j9uTPIn z{8=`kKE7|ZqO4JIMPDV(Ex3ju4ol2oo{`Z$v7WJu}9JZvKh82VKYJ7 zqnO$dzr+yd(t)oEBi|JA{AFr?#C&1Vk_e)p;PFe37s0w6__%&{q6?ov(+ZjBBIh@O z(9N(j=9f_q4PMy#e0z+d?B(U5OTZ@Ht|ev^4pSu^ZVNQ2>kDlhbz%s!GcyQaF@ z2FPu40faZphEE3zlI;#8u3ky93u8A`gX#-Nei=%x_<7b5;k+wQmj5RR4K;(2Wg~H= z%)Nx1I8SxP?)ozSL1SMf4?}pIcCty{f^JKdOcSqq_kK#B`eW+yz#tP`fAN5SxVN4b zPZU2}eip78e*Aq*aAY-zd7u^wVF~}cHX}fWvH%oX>8~QXYAMpl z5i28hlA#~9UEe%Flf!*p7oWd2_#$^j1lqD+$xQyxwcLn{nJ@QZSiZV4P}x5t8&m(I%8KtK?O|YP z+MGw1%e)yAs}{Rql^vx}uq4vVgicAkEHrsrx5QFTPR+W1v7jgau64GAzvkWEx|Zw> z6yeC8NWq(iDYR%qu^O?m>+4M_CxB(^{Me2 zoX)yk{`vzs+@av#I|SM@1XvJg@w#g%>d%2j6hZ6*M1Kg{Mg+Yh&~l+P$iQ;mS3RR6 z4?5B^JYVB1z)nSyl1_dpjd7>4K*kt5OCgEJsar*14li?}!t|K-TM&+}sj0+lvEFlb ztEROy43blpFQO7rAJpUeOL>@I<<-|@J;CJuIG7!4<~ypW!IeuC+DfvlHYneVrQth$ zJ{Fmlf$1>4{aH=%ZQrB5RkPhwqMh>crK8k+)idnDeHrjV^{fK@S$@sAaHH7z zlvPBnZMor;$#T~C@y7Ab6&kZZckF#9tzVU79A)h@H9Ts}XVn_^=D)HU7bK{}VuYO+ zNJA-!$+-Dqt2W2o{8Ysx#e`H)R@U;dIIf^_vszG==4(LsKyCP z<1Qa-`9Au4JRRCR1e^y@_MxB?A&T0uN8tQQ+>R}qTUyFP`@6fz7A)K?aZydkyBDa)})MwiJDup#IyUTC!Q+;IN{c6?~@YK z0OhxUOk1gQzd?fLIWf9Q-OuzcKFS5J^kZpBvYd?|EUjvVVI4j1j^(-H`{?vT$2sB- zc~wRFB9aS3wkPiUT<9-xr3V|Yg_s$7CZzq7$S`?6K3-5gL+QEiTVBo9ue|ZyZiE}@ z82wvJmlS#%$&%cK;ENA=5B(Mz_;P{jSRWVxS*>O-8rm6x?EiNbfU>izYXQK?Ewi(U z@@Wzcj^!y-TLoTF`bk}QmcGL5wQ~E4H}1QamudO8t)|r#Q~7eNp;wWj+azA$-1c9W zRT^Ka;ce5X>X@3~*+oP}n)?P8UUBwEMc8O;&B~14H^yv53+Xmo^&zE_4l{dQ>1v-d z8(Fh`NL?kdTNO^M{QCGoE`p*E5xYVc*?wy>k}}a5SzB8hIQU*kN-hHEcXO&TtU$AJ z5J-lBHc$G+ix)3PwU?Wln~g{F@u8@GGtkuvnsRu2u4NFNi`-Vs8!_j{?_hAF$Bc{0 zEAQ{_jOCZTGgwL#jiwB^xOyg{wxg|B_K%$r)2V&stP(tNg02(|XI(p1Qn+A?z z12TTPkEcBJf5xgs5;{Ll-f?5D@hGrOs(RzHj>VzviETN9{JnMH(edF%@R`bW%eXzS z-^*HtN73JYnjSlq8|X~^!_CH;xK=>izV)ky!II=r=cA>(NbU~j3Fm?7N^%C39lzSG z7Fh=hAMhp_o?ofS$h?8{6{0u$%?z!*xa)9sS`{MxKZubvFEsZ2$ z2AvJvtr;dCpIT9xfwN0@i`d)XtJiEV3+ud^7wfH%uEe!TJeJO=-Fi(>Y{JzuMcgK^ zQjYtOk?sA_p}TXb2i-IgwGqR{%tGnngtH0X{O(6_`SjJzO7_ysPeyt*Dqezqcl{M2 zh*BgI&lrT^%JQy=@0lZRo4ZDRfh6ne%)DN`x5HO2jZM~=_Ty(%vq2eiJ$BtIL4HW&@Tk!V9Y)%HFwUEd6)j3DvozFP%Ff%i`1 zEe8X|K~m(`A8Hi((;A4WvHZksedtkh4aDKVwa*zb^@If~xl|SZ@pGH+(5^T|d*eH^ zCR1*i?e&DTY2%fgTv>W{P7(<*;h5g`zVmbqJ;p$Qde7XWjF^Z+b~F~n8ulZDlTtRD zG8cDO^%P_O??-u4CoAo9u!hso|6Rjr8?xUx`;H>TlnUn+f3~PXMFmvRlJ0H8_7$i^ zT#e${j#)t_g7M_T&~Vs+f~-M0wOpzFHMYu=I#E}dhS7#ee)M4H3Y=au{=~}0FiK*h z?%&e!H7+INq{vrCH|){Zh0aZ%=%>8z2>yFEUY;Kt0jM0P<1*{am^HwDZn%*}oVaSH z_tj-7YniXkQTX>g@Hjj>sAFD7?woOxJK0fk8=qV#c4UisK(Jbn*+tJx?+q`Y^?^jL zN^N8{)lA|aqj46tE_ZS!y-(IOi4O({If=ad^!L(~O6mGfHqWaS<_Q;S>DmC)vb>Gn zxc(7#f7AsQLodOjF*~-Y(I?!$_F9modP(}jl?J|0vjrV%=}MnClweU8c(Bz!aVDpI zvE%h)H9{!k*RdqwxQzqPtLmCk9o7TmR+@6{NRvWpCa@_9hmC8X*rR=2^F`b9)E6c} z27tNn4hC@#Xg#QztSHevK-`n)r^1D)1YC8e6Ylj|&(EAw8jPDU1lU(gSM}MSBVKI} zM0}8p4kD0}vcB}Z!JfdgR$0_B9S(vr4X@>VpDoN#iS?;AX-#dp&DFceU zG?m@{kj5WMhNfFAEKFoQS+@&O8fD(;Df1~m@A8J-!r&7<1h#itjWYiv&ofk@hXrYd z79i-&0b)?~F=N&xWX!OjxR`r}R$N&uSFAr+~iT>R*!O}Z5>!ibcSE0JWH9eebY+>i4;T)8UG#n%Loem7jkvUgz2cDy}d zVbc;82|hS z81TEwjfEkt%g(>zivG?qm1a+|vZFTl5ms+e-%M?2?KwKpKfe$8!?h2}s&ld^i3vSh z>T;(k*l;)$EO&?IqEF7DcE|R8 zK$i%-0}H>{a4zivG`o?2&50WSl!qErN?9U4&1fXCNcY)$rtu#FB2{WWd!XX zxPHpIO!~BQ^Cl&ikZOSUI?O$|06l4O#prcJt)B!vqdfleFVxFhRo~CjILe5_ZOcpb zooi$3epUru1=faLbgPPQ&)#&{YgD{YQ=h-uxR>7?yH?34pLrxoQEYyVErY%PP(|5E z)0O=}vY4Wm_c>W^YW6U7#hZy{lIY5ZZZs-JUQiXN)7nrbaAO-4c32QZl$21f5hbPO zujB^Lzn1?dI!`Sl3D4a&={S)gWkt0gQZ&Gb;=0x>G4zDA$2FJk-?WFSl9z_2T%#94 zDv0Cz+I(meE=fH@>t<64`bT$N&D|c^DREsmzNPbeGnY{soR^V9zLn>YENd-bPIp-P z$L}XOmr(Sr5$0#OUl~PL^jN-@pAxMsmSuf6Az12arBAtY`74l`J!)ypP4S_}tD$Ay z9l}jl`!PM`)KscH<$NxC?*|>0tF){)USgadnmsX=E0tF&V|_`Tm#VVYAL8{xer9k| zwL1gnQV2zEP8g^DC&zyeHKx;jbL9OBu}|SCm+zFa?lc5@G*mPdb|f-gDwbSVz9_X& z$)h0N7}Z@~&xM4t!C;yC)L;j@A~Be3D{6Z$-64;2*IihEbXTEff(PicySrWtoCu{hD`|y(iL$kkD_MEVbiLWINFJb1$kj;B> zrvjDvq}ZcNF-v@VD6Dyyr`v{GIxg@syva3R0x#9)KnrKPq4k^pt%8k9c5NdwC=w0i zy=3!N<0?p{QkFpYknTvjrCi&xBi|}N=H$K?LeoNrN;8YE{&UE_&Bl_z*0u`MT^zvM zzVdT&D$>`l)vz};KItaSQ>GpiZS>V0qL7YzIh0v-T_R4ggNtDgMtvp+j$117-?O}CUr=UQ{*49$d5H^Hm0yC^aLXp2&=Rd`T)uQ2UZ)B|{en2m{wF|c z$hkM{UP=}?^6{Hld1dZa6Uxjw!Sp?a33bcf4^z2VX)T!1U zzK?D}zVF&qQSv3N=WXYy_PC1$%BkrV$}oX5tG-S`(=9HPwVax+m;c$n6b1;ccCPAv z?0Kk`wT~2o7|kk3v5Bz5vbUId+#!w6uBn!nNR8F zw8A%i)4~^P`oDXEMrsENM4fu1N&2yyyAT=t-|#Xu6%mEadc;8RZc^~{5RMQM$3i2e zN~#f4HuWK+@XO2NSoYH7f2LJwTc+o#Q>-0EN`08n-E|nFQ^;W<+oER!kv$~LQ9)4Fo62TD=K}rq`dLXOh zly}f{_+ryjMTCCEb(F2(C>MPMZ&ZiVVP<13hk5b;xY%79jMu+w6L8C2?S(v^oMwyh z<+_e<6qgLr#M-V)W5uzXP13eBTWcPaN^y|~`w8Xfw(R0L#)nc;(+7QUyU-}uY+`%; zsc)ea?ex4|8*7&BZs$l>WL zvyzYGFkAKk0}7wYk+pqhd`Z!FhocryOeg97l?z1nbX-3bAPXNxUitWy;9^i>S6 zpDM}(baeIhOf|8^{HT(;HykNYC7Ky;)U>u!6>p=SSD&NGBFc*ATU$_@NXb8`Lo`5bV`i^vz z=DUSr)yZFzDTx>lkmE!4+$iT&c&~X5pHO}dH7g&p&1w5{mX*%CCmA;A8Lk$1DTnncS zTcj*|JSn|&iiurCxsJk^T;jdMQ9Xk&ik)#Lg|i1g6Kze;I>s@Gvf*H1+R!ANgY-1Z;km7 zf&GuMNsvL&C(JA8m#ai*W^dDEyi<+OU_)XUF^wB*?vnoCES}%L90HQP zEUG}Rn1T9}H?E?8aQ~9)9^LkF(DdwNJfv)_+3Q`3q=~~vHjF?1R9>z-MkQ)WWil%c z85-(}t|Wgu$QvS&91_z;c3tj?LC7(Qh>8Lmop5&)9YSU!=XLE7SyC5-J2xK1k{iwiRF^^!1_ecP1})F#s8^OW?ZT$17qx_4MLG#Aert%^319~))RZS6Kb9@?9>Mni8gNYBJFFs$^!m1PC&T)Mn6F4(S)$r~Gi%0cWkTFy%W^wzB* z)55LCJ>%_qBveJBVq%J=hSDGkA`IG(B;~_m6#sF{Cxv>d3SUdku-3Soh#wojp7J)~ z+t4#JsEe4w4H144%FL@ZWT;X=@J+xo%)mICm>&w2v!;}GkQ2UbRL3M0vKxy}Z&{B;TD*#yopWa>0>b}N^XkJSJ%(F+;gM5z%5 zXd7g>Uhh5o-yIrXv^Y#LbFZiST)VPNJWk=CBCG0WliecM(P0L5Vj8sJG}pzcMCv1| z;P)X-Re{rvETQ|=L~G{n@c0b(KWH};F|CVBTW6Z?F;JQzPj6+eGA?j^YNZw43ybMz9t08=4}3YwST=qQvvk_3Ctm#1v2-carKh z|FdaF&fMSxsq$n^=v*}L+f#7TGe4iTTYo{pFrAdjyYuU)1w(DLAg!az=V7}@j)EOK zMFQrSLO^i$lBfi_jY;)Vj>IUMTU5XWruZQhx zc&!~{!uenZyUCeS$sy$YjNhn(1j;)xT+g?#n zIP%aoLLS$MnV&b7uBYxx*XC^5@~m!d76RwKbME?<6DD}%p}LZ}JG&mCu_%|6|GSBj zLHPriooF(z^@|}xf?r`%VFLf!T~lcZV;j8vBu0eDe4Ft02T&r<{IM??<+eQCQ`D-l ze>If0zOs^)75LJmv*4Qf+3TZ7S!kQRqLH;-{$`V{JY#;EuS!nz(bObhAGfqXXKBjmk`Gm!sC^+8&dF9LV|jc>+yDP zYXIijOl_s0pOQT9V!hER3CQg*f%@QxIS(hN@f8mXO9UuzBJ?_d3HUqk=Hh`ECs4fB z?Y0vlf!^mkz#lL{@2|#wtr^UE6>4`Nug2kj==HKqozOFZi+fS-CjODsgEZogv9)?A zYnYTN4K8pxkJKm+a4O;A@~Ke3WII;j;4NiP&aA5s@>*~OF}LTD5;*i){s5&xu-L*J z0)V5$FqHrYB?)sf2sJ#UlcfmR@oGCtkQXq5J|p%Km(P`!f4~04o}LD#l7M=5f(aj? zj+I5-9ChG~n|R!x&{1!NOy%5PM?>&J=Vc*YXd(Y|mf7u;>yypWei(>JgF;JBA|K(% z>!A&VW-GhJBus$im~22FLS9}T@Yp7y2>jA07mxkw_oiA3p6kN8I$jt*D{t`GmB-GG zso7?|#335?QSwsNR0%fkjINKvvk>p)vG+fTlKs5rY9%esX5-Ly_;F_!Rp2=(VtTTP zrEl*0^)5`NAT;|x76pOsh@h0E;O9>Su45#C6eX8N6-Gx#8zzAa7xaK*D{8}DiHldQ zoWpsDXpBYfW_ho1*aW7R*Y$aw5ME$BFZND8XJ2ui)2Oc}b!$YJw&}Z!YMWVOInj9X!vZEOk(VZ*vsuYEsD%V45XmcV|a{#|npl4|{ zM?B_QsJG3wjs3l=D_6_A=sC$osFu;u@_wv^8;xDV`p{R%;7(tBf?BkRUVAb(rcKts zBth2kT#M(g7nj%w%i?|N{U8@)2c4ard56tp6L|w*pbhw@kr4P85YP=zN(uuaJ0yVV zAjTD{F3!vBK&%dd>A?qC(`8=7FQD}qcJj(6MO?h!U~^DUOS&P$#4W=GNsniky({Z< zpFx|{qDO5njHGeM`0e|}bSE1;ekp_pfSJ2i9dFZDPr#V|{IO2-JTn0m83gPN8n|ho zDHQwg4Ct^yFPIfkRfYzlq=?8Zi2HuSblG6M5lk$WSxiMCbh<$WtE}F))MyJ23(r1jXcX%WgOuV&N^YS^Dt^biZAoiRE%U<5b>P z4*mOCuWOHQZ|WtWR~N%(hJ!$K+R&Ax`pm;&r~~VgzOrOC*>0aLT^KcTpgJt9K>qAA zzay=S+wqJED^t@|?*L~Viy$&$I+6qo3#Y{ zrJ_tim7`HtPL?oljG?}wOipR(E4P)`SdG`;Ml7fDaAk%B+J`4KWFrxKiH-Oa7GnM> zsK6;R-nNK+C9feQN3+d2GhSh3DV+b5&vxwFkZI-G#Lbm{LtRs|yex#1xqBI&OdYH- z@I_IqIyOGd#I4*#8J5X_6$3XXQi3_t{Y76Ow#L@z>)Kz;8+K9#@d%RajxV>A-;=DeTa}2F7*WkHMe;+ zKCD+~vqVoHZ|#fXX*B&O{x!ZYDCoxJntYd7ecE2W)wPh^B6M}`2f;;Hm2R5?QH$T} zM^4gQzjs=r>j@W)^-g5J(>U&sUZ&+>Y1L(qSk4ra$t1~iOixMvT?{`M?_|6O-63bI z!&iG~ftier#)AGiFr)e@PENY)=?f!trBc%o>$BCH=986UiUx>*)7?+W)b~R* z3YLQkR!+CXgEI@v$OI@FADR}`hj(S8=}UQH7&up{)EW#?TF35EMWv*;=1Rfm7~jCi zsvv~oZ^!%RA(*;R#KToxBy3v(&pa!M{-xXh&H^kd zx_m$Yv7K+hmoz~E2z%MGF?quC>CZ?8SB~b%<|2AU7;)~e(9r;KoyN|tcXZ?f+V*HxZ9b9-uKItkTY-SJYkL$yeD z1AYC0n@|D;L-J#zaeYC}srJ_v!occMn-jq5mQu-)17FKHZ_+X$}kX zkCRP1Ta^O8I^F`0sNT3m&fk3b1RR5s76^l?5{8d*K*g6Mn&@{=$bIQ49~sg*ES%(M zS6ip8r*@;b*?oy4rW{a0wS3`4G)qLcpM<#EJ0kEoToi^`{pP(ztP7s4FO?B&0{78d zhH`Yhley_ag8PlI4-=^)HO^@@D_Ym;JJr}t)l%3HR-dZ>EIW`nLnZHYwUT9%HzL`@ zt>C3{yJP-%PP}cU1?7GagM5NO;fUqJ!iUS`_v2y2M4W0ceP%|%53N^+84_fo>W-gUosN$vOenpfs!~K;z^zD0r47ha@8M1 zJ87q0Izut;jbF&xI-P%!^tJzT5ret$t2Z^XLf%a42=;lCcM%DfkgF_W%$p40hrFMM zH+lUSczX`N5Ftsu!!Kn2wI;V?>oNCXSc%yPt~puGU7w|5p|Qwma4*VX4qyzCmq7A*R{=G5;E`w>IdRqV4O31kd#Zj>|>Dp@uuXg3cKcCj!(|q$~9Ok7d@;Or`ELCPgxatX`CvGZ2?R(mx(Pm@Cms>IxSq+?S=#Fd? zbCqsZ4T9#*#}iPTy2eT7br&&80+IXi<2COY zLgDmdCB%O8{IK%0(Z=VJ@Vmh43mHz$IxC=)IyEu2Gj-5qjvt*LEsc0C=<87UHUvf%&+>}_MWI>?;(S}Y8Z|a#br$()go&t4+(9Pc~AIb+j zQYu{PBrlb@su}a&cz4}I=^+kOsH*z@w$;ws-RzF}^vuST!_%ivP4D0-p&}I>uDVp2 zZ9STuK|?CyK4fjU*iKdAC(p-BML7|$t##^4`1rP$KxtF@1~rW|8XJMJ-vjTX0*<$k zuz1wS!oYs-L+{*3#5BFiH?4q$1>J+q2~3bk75+4cw$X5Ujf7O-O*fjJ*nVo(cmrve zUE<={$Mf#Nw{!B7^#vM6_dhqNk1jA%%ZAH-j^Z2%H_so8-p{Uev?$twTTEU4C^!;` zkZbe@=|GqqOdeV*f-uPkBj80=K%CA{^KB%?MJsiMOG}IRV*X5wO$(BSI6O(ow`!Hd zzpqQt+VfPU(Xj80KXAp78Omyr87ma53;;pFSO(vRUe2F=iR0cBegv&~&^b;SF{PV% z!or<^4ii#s5S!mX`dyj#bFi0?*dxjNm?cemUFJ;S3FBM24wMQbS_ZKRFR$RahKtAT z&Dy{l>KAXziXZ3%8>eK>?U4_*}>m1}!~>60o?V0fHkET8*Ah*x1+* zplu}gq8-+I^n^N7&9||~di(vhxolAPKaMp-4XY{p?lDxRU65%1>XQ|S8BxA%@3&ZG zW9{rfyTVNlYk8+d>8)?W`ETxqA9c=iwniazSA+dGGiX#&7m}_q*jD=EM&v6jf^hWS zKztn_H#x;&=mcx^LxL$=0~Oe#vz4ghtF2K)fAw5roDR(t z%&!e75hzPJIQr0%EpHvmjx90EBMi?F5)99fJz@$h6@)?j7s%UQvG%ZDrkCQf&Bg!lC0rDT>>LXr3=G0DBml0lwy~); zN`Tsh$jg_I;oks-Yfv{w&%OQ=*aw6LK0ZF*L3s~G4@GQkOVoJ?+09?nI&SG$Sz#o| ze1w691}65k0BRbV7C`S5>$csqA5mINh@yYadx1gQJMDduJ9Sc5PBR@JuS0U^HGeij zf1*Y0Gj+ZBBIpwtz5-$uQ}w+>%X4$@G1MPChPk`lwXCGr$g$z!f2gVNL9&Dp{sd4$ zFz}=_jgI1gsQhgt&{ZaeoY+4kqzx|nDJsejW<#61yU}1(khb~oJt2_+-iKeaK68AH zM*YO`d~OhVk7wUVT1jl#^|<~pID{FS^2j=#7oWYMA!?ffKKChxf@R*z)|PqJb%XB9 zmoHywWu>LtAO)3EQhFv`4`WFbJ#icufdBE%B)(C<*G2Q3imC|| zsFA+P`dP6OAaFY%;;wgfaq6(1Mnt*(8bqc+Ry@6*fRL~!k;(fw?lJhNU?Mx847O9V zS^({@&eqprDctzy=~HCadgAKpYK4R%fx0JD@Nf7n(iIE-)y@V~CSa`Zl|w8w==waz zx`*^mDCM1Ot>b+JK4|zE>uIuvmX`Trg&X3Ktp|~)i4~3kHAJ&H^Tpg)^;CQPbb|+> zYyIq!n5Aei-h1>X+%M7wlA+=P5-L6!weTGxN|ZR&Vh(WMY7OqEH#e46R>&9`|DYbO z?mnZS&;`Uu)OPz#E^cn!&GF)>?K`k;17xM*atV-A3`LLl_|Y^?E5AJ2{sjN2;s2ZNab?GYnL*v9jF5Fo}}E3D>1p&%tO zhY2&vVFFipnib}Po}T=fQZXOqJkK8hQ%U6yM@+b|I?sfxEH);lH;9IRr4z7UeR$^q z!7ZdJ=iR4>KZaKfiUG(20|ROm=J@93S9Z;ue0)z>jQT|0ydegyChyy5IA3Qxi=cv> zuT}jR#H&|F@^C>t3N1lKb)~^p0~JmKSFN5$%lafragVokU=t6jzLNEHUJVK$o?M;s zjxzko)6eAp|Ihz#*MU&dDVgh$5E9aXYrU_V5Nw2W@63fYhwMXdQ*UOx`$$MI5{-83 zgE(cWy_=ALKt|F@7zgV^aeWhBh$t2|c2j33>OJ4)!I@9k^=~lXuMv7>KTXS{wq;6N zb}h7s=Gxo-{ul{gr15#zr1P$_lH-fSYy#?^U{h}e>PX|E%#e&)QZtQ$D3mVI*8lrw zh_VcyVzTBFkP0SHbZT4`0bzXM+pI&e9v z1+{#{&^!4v56nG&LMh)>wLJ_J=zYF}e(*fV7>9^@10~VLUN-}U1BlZHfFQh3-biy> z+ij3=d!eo#^D3c+NFX-tV~CZMRPe+V5k9_&!pFra@munIv|3ei&&bIGK(1>ZT#m|{ z*RSbn95yIm{Jpg^g7T$=M4+{U12$k`6%wHSh6=^#N4U6@dwYAW@Mk^}8IM8EIAYy= zszMr~h206GqyQNEW&%Cr`Gtk2Al1AlQlUr>@>w*q9>=e3PWKGfvhwq#s2S+!u%Y~j z@YPQ#DaG8O@Gq1$;2*|+CZ20|uqqFQ&sHd$gQrP!hN`wtK|#UE=}HnEtatn6_Abx~ ziG#v(%w`@OdJ$cEdV0Qvg@xjhl9-e-@egJB4!;0&v{C6zwBAQHP^)_ctY8)6W}E z;Ge6!0JInuc;_$eAWsexx0HZGNbiTTXNiAcAhWt`)=&U!5{LW8IL>XSFe_+Xr5g1o z9@ElLQ9Y`tsL%zw8!WlFaKG^a2*d7?t~+iPsd(L25KWVJc6AK|aIr+UgoK1oLPEmH zLJ&gZW9j#ARHTKEB%a~x>6w}Le1%A_E_b}p;FA|ccaG6=$wY&zcDUhPZ;`wn&V~a2 zK)st2)R4uy!G9%>ZG4K0qZvU(Lt{~A_@C(DU2ZP5zJWo^usn6-T{N_ab+rh1Pf~yu z>@GTbdsiflG`%ly^yvaM6HM3-miYVM#lph+1+kMt0!j$S$bzS;SL4MV8W2~_@9czu zZKnc?7%4n5(ick5UxO_`uO2!_>BR-z#ond~5PiWpM6tNGxp_Z9#)vtQo}PYnC@V|} zp~4Q<3SF4!b>7XBx4ob`HNU+b3PNI1G0e9CQ5@dI*%0!vP%c>%sNT)@1PG7@S0D;N z86DU-%+AjK4j2(RMMb-Q?kw3P%huWM{y3|Kfbj5#Wu_zdV4;N}Xg~ymz;1<9t~b%( z;TGZGDKHDWSGVIlcex{2{!P2F@A4b5J@*svCXXIIdwdY0 zg`@WQ&T&f(5l{B$%&zm##tlf%s%mTFzD$jeCoAWvP&g37W~hJxIz!)f0Iq`wA+Ha$ zuYG|e>M3*~fVX;a${$auvj+t1irr85P)0lZ`#D?~KM>EQ1v_bJ#h2wnTN;-8D=?P< zuok8%#>QWh=a#}3NOLJdM$w7eD~;h?0n+P@v+!k98mAQu8nSkT3T8^ z0h|NWVRt}fF*`R`=+&!$PW6$wFpJlrPn0&conZ?2_M10v2KQ)Gza;}GRv{rzwJe}Jr*k77f`^BP zP$EO2W(fVW@DfiEd4FK5G_ z`tSi68srjsn$dbFBc^i=e7t;o((Q_cV~fyypjcE_Q23CaPn*-%1uWVS7+B5)l|Ag!&ATlBZ)L25D5r^ zg`!ANs-Y@9MhT)37(quVHc$dG1f)qDR8*vhFfb^V016n2pnzB?1|6k}jzV-4l%gQR z>^pCMy!GCCKi+fcLf48n_ulV(=j^>t`ND1lA37wf<&yK)9|@k-ywP0k-8eLl&Mzyw z2SN~&mDO!lRCIoge@aVRn*!)l<=ZhP;vL<@#1oDnq3+vnx`-n8UMCE^`GCrBpK(za zCKGtU-dNw@78C*l1ATfbL)^1}`iX*-Q6n&FdPasi{Ff&3IS+p>;@`MIMtc(F>({S7 z@J<(UMCO(KX0^!KCIDWB{PFE*2%J4xUS1OkzI*U_u`(4;Jn-oR^fx8Kna2Z1la-Wo zN_P^jTwhVDb5t(M-qDdlJeY#+4q0oVv&(M?H52cjt4B@^Yw7#kjSqKrk)u*qBAv53 zg=#`aJENaLgu8bN?NJx6=@~~a9@Q90=+67=`!T?hOra1T(g0U1Tn8t>vpOwWW@^eN z=}ns)8cJinMWFQ=YQKmGH4mIxA4U5iZy&2<905(yz$}SnI1*rFa#8`dwr=_=T-$sL z3yX`a%Qkh9Gj~J#Bc8Q*Y3X`;dRiAfnGa;OD=0`8iDCMg)!us#c%&=kG;w82ySH z@udkctRxs=#=5|sO0}kwOVp_|va9ZSTmn|*3>q^49F(eF2icq-k#hED(L>$;3y!UKJ~^W@25?5Wddpeac0tx&=c z=}GS(oCK<9&aJ%9KYLd3B-Mn1PsGN>Ny00Q03qbVbsc>3&`yP zi^By5hlV!4Y>X2lLADA$a->Nsmm9rx$59)$5spsAcDsw{pcJwqA^!E9rcRZm^u3O( zQg&=$Z}l!jKd5EZLH6QN08k_x-&^D938(|npuVwj4l2_!%r7%_$^(0q;G7LTT|n(& zzO`9aPzFZ81v}J@!zWfICMI&$Duujkh?RW0zqi^@c7Zsq{yl3q&eQ$mdC|4!;JJ=~ zwVp>lzj3OpsxsU0HX;7JBA8>oX-P>*12V&j9hdB0p-8Y1j(i`Fjveh!{gOy)4?U1?*y%Lfw=0QCC;j z4mtjsovM}$AycoILhiCc+#@F9;`LIo|9~kFFiZ>#46Z{4n!aj;ag+rG1$pJ=<$ahF z<-Z8vWV7l+D7TNl2rbBN>fytMnKBegGzMiJtN1MRaC!O2sQ+&6?6X!RSdH ze9Eipz%p#YcU?_rz!^muf-iF3(!v!m*H=saCe1l+PzdRCPaoLtzy2It0s5pA-x0uY zb0c54a3Rli`O03Eq{Y@Sx%%$z?$?KJ;OPmQ6k6h)54?N#!*F2BWAu$CqOxOKwK79E zS09gRD5IsNMY4>HtQ`yeVYi-Qd*LR96mhcII^vy69GE;%hpE8j?9$k9b(%mrI$l*F zNQt%r?XNJ#jNF*Aq` z`oRO1=ICj!oC zFY|YK-&5tGQ+N2Cd{c_bLL(!ifVE18M8f%q6cQxnmMyy=ql|p|6b)ub;4Kt*?CAx7 zBu*U$#fieC;J&a|(x*2?7lPv{LotT(F2x=a@ zm*nQ{J!9{SdapS+@fvRE5<Yg9@-qZiY-b&Nc9?b z<>ck_5wOGFob$)VYQMSPE5lqc{?x0pzq{gxxXJ$GG-6iINaG?g5}vfN{o+P_#3Yg> zYP3QyCW$*U{;cyD4pnagI42_(kAEaQ7Rcd^fR6lQsU93o-u;;ZU|#@^M)g}6cs*eE zOctx5ql1hFP#X@1Q!{PH5cXh?daA*uAdjn=m@KiLhrc-ZTYtpR38~fx56G&jfqX$p ziDR`5r}dO}*vnXj5tPRIKu}aPIiN8$`EgO+#GO*q-(a@XQUe1D`sy0f)HW6z!K8&K zm?EJlLILgS>MFi+g>m$#2{4_jt7{bMV9s$vfo(QNi$Gt4v0xc%iV-z5e;3BdG`t?q z#VltcuBldKJ7=4|L`hBiyYXLpvfE0Q~JqdZxx6R?9<5EYD8l-;^@ zykN946I2;vfouDIhn6wCd0%j_UgWn?JJctVY1|R3nr=;aacEOln0|g5h&fn)88Uen zs}CdrFp3y&1$Xg2qC4c^!HpQcoPX((KBOQ(GfCX*KS%);?31cyO5p!ZXq1g_X|eAS z99;}xsHc?t<=xKN1%>n|Ota4=;8O}s~2hAcbCMGX0j|4=*y`mqMh5|_6{@Msw zanQ)kWLsa}<_Md=O+ov#<1(l80{34Ywq{?rpa-KPcBkzna@&T_QplANNE>&+u(R_; zh#l&^Z4@0H9SqwiOme8RaADMoqNy5zK!!?{Ds)f4H`W6W5&Ri0;zLgr55RU8L@489 zW6QDq{XWg$W}0!HJ26EHz~L2ku)UL$VU=th4&x@qH$_H95*3{nnL32X0^c(*GueOb z^ET$zt(Ph*6>)2z-2{&$DyZP`7XnD7i%NIasiG>@md$2ocRSnLTfzkpYBQg20JUfi zro#UU7Mk6?l+I^yMY%1Bdn(ug6)&dG)J^tgV#nss?{4%4tAh?<3WoV`t$ZLGsi#lYgWQ&<$ zmsH_*@Wt*(bQi9-VlWjlG@Tldz5)B+HGH)vyW^T&*1G+!Y_ndEYzBUmuuLYv`Po+qcsY0V9H*>?Y8dJ8bvAj4+$H3R3vLj=>Q2l;F~#B z$`3(-d|u|XB;l*e%E}6FTQQu{tVgzb16zRQ0szki{D82!DYSVoMn+Fjicmk@@2`Ip sKh#0M6XeBKj&9vf0FM8fKq#CQ&pfwW=Ev~0ZY2D2uyJNwwdO?s3H05X@Bjb+ literal 0 HcmV?d00001