From 2caa91044d27aeb90eff9da0e1c86adcb4fd6fc1 Mon Sep 17 00:00:00 2001 From: Lateefah Bello <2019cinnamon@gmail.com> Date: Tue, 8 Jun 2021 18:50:06 +0100 Subject: [PATCH] Chapter two (lesson three) --- .../3-automated-plant-watering/README.md | 25 ++++++++++++------ .../3-automated-plant-watering/assignment.md | 4 +-- .../3-automated-plant-watering/pi-relay.md | 8 +++--- .../virtual-device-relay.md | 6 ++--- .../wio-terminal-relay.md | 8 +++--- images/counterfit-relay.png | Bin 26288 -> 28870 bytes 6 files changed, 30 insertions(+), 21 deletions(-) diff --git a/2-farm/lessons/3-automated-plant-watering/README.md b/2-farm/lessons/3-automated-plant-watering/README.md index e8b9d4ce..e854da1b 100644 --- a/2-farm/lessons/3-automated-plant-watering/README.md +++ b/2-farm/lessons/3-automated-plant-watering/README.md @@ -102,19 +102,19 @@ So far your relay is controlled by the IoT device directly based off a single so 1. Add the relevant MQTT libraries/pip packages and code to your `soil-moisture-sensor` project to connect to MQTT. Name the client ID as `soilmoisturesensor_client` prefixed by your ID. - > ⚠️ You can refer to [the instructions for for connecting to MQTT in project 1, lesson 4 if needed](../../../1-getting-started/lessons/4-connect-internet/README.md#connect-your-iot-device-to-mqtt). + > ⚠️ You can refer to [the instructions for connecting to MQTT in project 1, lesson 4 if needed](../../../1-getting-started/lessons/4-connect-internet/README.md#connect-your-iot-device-to-mqtt). 1. Add the relevant device code to send telemetry with the soil moisture settings. For the telemetry message, name the property `soil_moisture`. - > ⚠️ You can refer to [the instructions for for sending telemetry to MQTT in project 1, lesson 4 if needed](../../../1-getting-started/lessons/4-connect-internet/README.md#send-telemetry-from-your-iot-device). + > ⚠️ You can refer to [the instructions for sending telemetry to MQTT in project 1, lesson 4 if needed](../../../1-getting-started/lessons/4-connect-internet/README.md#send-telemetry-from-your-iot-device). 1. Create some local server code to subscribe to telemetry and send a command to control the relay in a folder called `soil-moisture-sensor-server`. Name the property in the command message `relay_on`, and set the client ID as `soilmoisturesensor_server` prefixed by your ID. Keep the same structure as the server code you wrote for project 1, lesson 4 as you will be adding to this code later in this lesson. - > ⚠️ You can refer to [the instructions for for sending telemetry to MQTT](../../../1-getting-started/lessons/4-connect-internet/README.md#write-the-server-code) and [sending commands over MQTT](../../../1-getting-started/lessons/4-connect-internet/README.md#send-commands-to-the-mqtt-broker) in project 1, lesson 4 if needed. + > ⚠️ You can refer to [the instructions for sending telemetry to MQTT](../../../1-getting-started/lessons/4-connect-internet/README.md#write-the-server-code) and [sending commands over MQTT](../../../1-getting-started/lessons/4-connect-internet/README.md#send-commands-to-the-mqtt-broker) in project 1, lesson 4 if needed. 1. Add the relevant device code to control the relay from received commands, using the `relay_on` property from the message. Send true for `relay_on` if the `soil_moisture` is greater than 450, otherwise send false, the same as the logic you added for the IoT device earlier. - > ⚠️ You can refer to [the instructions for for responding to commands from MQTT in project 1, lesson 4 if needed](../../../1-getting-started/lessons/4-connect-internet/README.md#handle-commands-on-the-iot-device). + > ⚠️ You can refer to [the instructions for responding to commands from MQTT in project 1, lesson 4 if needed](../../../1-getting-started/lessons/4-connect-internet/README.md#handle-commands-on-the-iot-device). > 💁 You can find this code in the [`code-mqtt`](./code-mqtt) folder. @@ -122,7 +122,7 @@ Make sure the code is running on your device and local server, and test it out b ## Sensor and actuator timing -Back in lesson 3 you built a nightlight - an LED that turned on as soon as a low level of light was detected by a light sensor. The light sensor detected a change in light levels instantly, and the device was able to respond quickly, only limited by the length of the delay in the `loop` function or `while True:` loop. As an IoT developer, you can't always rely on such a fast feedback loop. +Back in lesson 3 you built a nightlight - an LED that turns on as soon as a low level of light was detected by a light sensor. The light sensor detected a change in light levels instantly, and the device was able to respond quickly, only limited by the length of the delay in the `loop` function or `while True:` loop. As an IoT developer, you can't always rely on such a fast feedback loop. ### Timing for soil moisture @@ -146,7 +146,7 @@ Imagine you have been tasked with building an irrigation system for a farm. Base You could program the device in the same way as the nightlight - all the time the sensor reads above 450, turn on a relay to turn on a pump. The problem is that water takes a while to get from the pump, through the soil to the sensor. The sensor will stop the water when it detects a level of 450, but the water level will continue dropping as the pumped water keeps soaking through the soil. The end result is wasted water, and the risk of root damage. -✅ Remember - too mch water can be as bad for plants as too little, and wastes a precious resource. +✅ Remember - too much water can be as bad for plants as too little, and wastes a precious resource. The better solution is to understand that there is a delay between the actuator turning on and the property that the sensor reads changing. This means not only should the sensor wait for a while before measuring the value again, but the actuator needs to turn off for a while before the next sensor measurement is taken. @@ -156,7 +156,7 @@ How long should the relay be on each time? It's better to err on the side of cau  -For example, I have a strawberry plant with a soil moisture sensor and a pump controlled by a relay.I've observed that when I add water it takes about 20 seconds for the soil moisture reading to stabilize. This means I need to turn the relay off and wait 20 seconds before checking the moisture levels. I'd rather have too little water than too much - I can always turn the pump on again, but I can't take water out of the plant. +For example, I have a strawberry plant with a soil moisture sensor and a pump controlled by a relay. I've observed that when I add water it takes about 20 seconds for the soil moisture reading to stabilize. This means I need to turn the relay off and wait 20 seconds before checking the moisture levels. I'd rather have too little water than too much - I can always turn the pump on again, but I can't take water out of the plant.  @@ -181,7 +181,7 @@ The server code can be modified to add control around the timing of the watering 1. Telemetry message received 1. Check the soil moisture level -1. if it's ok, do nothing. If the reading is too high (meaning the soil moisture is too low) then: +1. If it's ok, do nothing. If the reading is too high (meaning the soil moisture is too low) then: 1. Send a command to turn the relay on 1. Wait for 5 seconds 1. Send a command to turn the relay off @@ -206,6 +206,13 @@ Update your server code to run the relay for 5 seconds, then wait 20 seconds. 1. Open the `app.py` file +1. Add the following code to the `app.py` file below the existing imports: + ```python + import threading + ``` + + This statement imports `threading` from Python libraries, threading allows python to execute other code while waiting. + 1. Add the following code before the `handle_telemetry` function that handles telemetry messages received by the server code: ```python @@ -271,6 +278,8 @@ Update your server code to run the relay for 5 seconds, then wait 20 seconds. ``` A good way to test this in a simulated irrigation system is to use dry soil, then pour water in manually whilst the relay is on, stopping pouring when the relay turns off. + +> 💁 You can find this code in the [`code-timing`](./code-timing) folder. > 💁 If you want to use a pump to build a real irrigation system, then you can use a [6V water pump](https://www.seeedstudio.com/6V-Mini-Water-Pump-p-1945.html) with a [USB terminal power supply](https://www.adafruit.com/product/3628). Make sure the power to or from the pump is connected via the relay. diff --git a/2-farm/lessons/3-automated-plant-watering/assignment.md b/2-farm/lessons/3-automated-plant-watering/assignment.md index b4639b60..1df28c26 100644 --- a/2-farm/lessons/3-automated-plant-watering/assignment.md +++ b/2-farm/lessons/3-automated-plant-watering/assignment.md @@ -6,7 +6,7 @@ This lesson covered how to control a relay via sensor data, and that relay could For this assignment you will calculate how long the pump should run for a particular rise in soil moisture. -> ⚠️ If you are using virtual IoT hardware, you can work through this process, but simulate the results by increasing the soil moisture reading manually by a fixed amount per second the relay us on. +> ⚠️ If you are using virtual IoT hardware, you can work through this process, but simulate the results by increasing the soil moisture reading manually by a fixed amount per second the relay is on. 1. Start with dry soil. Measure the soil moisture. @@ -37,4 +37,4 @@ For this assignment you will calculate how long the pump should run for a partic | Criteria | Exemplary | Adequate | Needs Improvement | | -------- | --------- | -------- | ----------------- | | Capture soil moisture date | Is able to capture multiple readings after adding fixed quantities of water | Is able to capture some readings with fixed quantities of water | Can only capture one or two readings, or is unable to use fixed quantities of water | -| Calibrate the server code | Is able to calculate an average decrease in soil moisture reading and update the serve code to use this | Is able to calculate an average decrease, but cannot update the server code, or is unable to correctly calculate an average, but uses this value to correctly update the server code | Is unable to calculate an average, or update the server code | +| Calibrate the server code | Is able to calculate an average decrease in soil moisture reading and update the server code to use this | Is able to calculate an average decrease, but cannot update the server code, or is unable to correctly calculate an average, but uses this value to correctly update the server code | Is unable to calculate an average, or update the server code | diff --git a/2-farm/lessons/3-automated-plant-watering/pi-relay.md b/2-farm/lessons/3-automated-plant-watering/pi-relay.md index 89cb39b8..de40ed80 100644 --- a/2-farm/lessons/3-automated-plant-watering/pi-relay.md +++ b/2-farm/lessons/3-automated-plant-watering/pi-relay.md @@ -78,7 +78,7 @@ Now that the relay is working, it can be controlled in response to soil moisture Control the relay. -1. Delete the 3 lines of code that you added to test the relay. Replace them with the following code in its place: +1. Delete the 3 lines of code that you added to test the relay. Replace them with the following code: ```python if soil_moisture > 450: @@ -89,11 +89,11 @@ Control the relay. relay.off() ``` - This code checks the soil moisture level from the soil moisture sensor. if it is above 450, it turns on the relay, turning it off if it goes below 450. + This code checks the soil moisture level from the soil moisture sensor. If it is above 450, it turns on the relay, and turns it off when it goes below 450. - > 💁 Remember the capacitive soil moisture sensor reads lower the more moisture there is in the soil. + > 💁 Remember the capacitive soil moisture sensor reads the lower the soil moisture level, the more moisture there is in the soil and vice versa. -1. Run the Python app. You will see the relay turn on or off depending on the soil moisture levels. Try in dry soil, then add water. +1. Run the Python app. You will see the relay turn on or off depending on the soil moisture level. Try in dry soil, then add water. ```output Soil Moisture: 638 diff --git a/2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md b/2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md index 85389d7f..c06a0455 100644 --- a/2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md +++ b/2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md @@ -1,6 +1,6 @@ # Control a relay - Virtual IoT Hardware -In this part of the lesson, you will add a relay to your Raspberry Pi in addition to the soil moisture sensor, and control it based off the soil moisture level. +In this part of the lesson, you will add a relay to your virtual IoT device in addition to the soil moisture sensor, and control it based off the soil moisture level. ## Virtual Hardware @@ -93,9 +93,9 @@ Control the relay. relay.off() ``` - This code checks the soil moisture level from the soil moisture sensor. if it is above 450, it turns on the relay, turning it off if it goes below 450. + This code checks the soil moisture level from the soil moisture sensor. If it is above 450, it turns on the relay, turning it off if it goes below 450. - > 💁 Remember the capacitive soil moisture sensor reads lower the more moisture there is in the soil. + > 💁 Remember the capacitive soil moisture sensor reads the lower the soil moisture level, the more moisture there is in the soil and vice versa. 1. Run the Python app. You will see the relay turn on or off depending on the soil moisture levels. Change the *Value* or the *Random* settings for the soil moisture sensor to see the value change. diff --git a/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md b/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md index 99a7ca46..3467c1d1 100644 --- a/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md +++ b/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md @@ -70,7 +70,7 @@ Now that the relay is working, it can be controlled in response to soil moisture Control the relay. -1. Delete the 3 lines of code that you added to test the relay. Replace them with the following code in its place: +1. Delete the 3 lines of code that you added to test the relay. Replace them with the following code: ```cpp if (soil_moisture > 450) @@ -85,13 +85,13 @@ Control the relay. } ``` - This code checks the soil moisture level from the soil moisture sensor. if it is above 450, it turns on the relay, turning it off if it goes below 450. + This code checks the soil moisture level from the soil moisture sensor. If it is above 450, it turns on the relay, and turns it off when it goes below 450. - > 💁 Remember the capacitive soil moisture sensor reads lower the more moisture there is in the soil. + > 💁 Remember the capacitive soil moisture sensor reads the lower the soil moisture level, the more moisture there is in the soil and vice versa. 1. Build and upload the code to the Wio Terminal. -1. Monitor the device via the serial monitor. You will see the relay turn on or off depending on the soil moisture levels. Try in dry soil, then add water. +1. Monitor the device via the serial monitor. You will see the relay turn on or off depending on the soil moisture level. Try in dry soil, then add water. ```output Soil Moisture: 638 diff --git a/images/counterfit-relay.png b/images/counterfit-relay.png index 5557c14a595cf6620ae715ecb00a30680c7e8686..00ee5b6366a9289f45ad5cbc2ea029f1524603c6 100644 GIT binary patch literal 28870 zcmeEuby!v1w=N+eD4=vVh?I1f2#BO0UD6=kU7~=r)TTE|NjFGi(OnzZq%@mNciy$} z^V4&lbN|2hIX`$dEaqCX#vJn-*k)-l;0f-NhoqLPA2iEC2L~8WIx9H1J`^L
uByHfH2%%k+BB=i^d&AIKSG> zG`R)cKojrW3E-1%e8WXWN0k{JlRcf)6yr{36Z?qpL%Ou&!56OlOz*-~r8l}-8B~LI z{qQfr7>&9FCfVX9hL#}}%&@Na-Y)r&oj6>Hi^24$@BZmE7Z>{j3XoERK8^D}r}4@; zE%r7CLssxUN!jt_DmcJUuXaC~26oicp!k@E7?_;?fgll}0AWFa;(Qf&@|K-p-oq?N z8B&GlKjkRh5>CI%`t{a}`JFCrkqirS0%aI{FP?332} zGe%VaaDP*803;nR4l?K7%)K@#9!_7V(`>*QIhsdgr)<-&cCdPTz#vJ^TqtT0m z#|&xX#gi?2letRs)45DTC>-06hZ{W{hM29QNw~iHnydi6>?>u{HTOaA)d6!|pDhqC zq(;$SI0||~gkTLpW|(WPo>~TOi5I&uTLVUetW#&iynPuWS_rl^6nGWRTDl{)FF&|1 zxPN^HX(jSQ>Icroq&M~k+*#YfzU)cz-;FTp{PaA#(%cl#YEMkZw@}oOz8j41BKW-3 z09yi_{63#Wx73!o>#JjK-xEijYOCk7Jszy8)J^-q&9Uf4_nvsWv}hv;vm)RXW^Dni z$*pej>CFI1u-4-DseE^&TrlMaS8A+=9& PDfqlo^1Y*U-V zW1a3cuCoV(!_t7m%qp2|_9J^b%WD)6Z$g9XbOAnHuf5YLz?JgaZa!YhOS8X!DJNB% z;|58SyFM%n80#@zuNsTF#3V?QeCH%Br&OUK3_h$uU`>kH=no_$8e7Ew0?7BUhW)~w zm4Ykxs&nlY-|^r|#2S3YoXB^os_Qyys&QZqG4~TaN1%0C>s13H=(Zv{-k@aZF{C4Y zppuX8iasGc(t!xGA%f?p%|FL9@2&xn31gv)oo~&ROKy$IMkjz!dRWVv= !+cc|K032^xT#}ze`*|ha!=ZXY0j#Nj pc{%7bFU(x0HOw`B_UU9OTdt>2qo}E}0*If7 z14)y{FyRPbP5{3qXl Js z1_Kw+cn4bm>)2Ot#*1|Pj8(HZ77>p=kdJ}Z+U<9@y8~nS42 XS>e%o^ze%A8;#pBn4=VnHs8&C4}+;diVf6U%u1JQ42h^x6ds( z#n}o+3tx(Y3NfaRppxPR@XY6i#e)@|FI?1+fQU6vJ?{-VVze822|$VI_OKon0a0wM z{o16ZGkZ$xr$iP2;72eYlGPEu82=Id5bWHj4cPkP;I5?29s_CAyKvt3_8TjfAgr;> z^qy$7>vw#0kKXI&r_lFuy_b)Js4!)@4*)ES$3X!^eKu+Hiu(xdiwog0h+GvA=BYmG zCwk`qhZYnA#cbnksdEX>z_yJ1!M0u}dV|0bqL7ve@7imSa%)zRI9Icp2{7}Ndc&kM z9}Zvj0(ktb@hc2KF)V !@V^%^8;T&>SfQ^YP1!G#*GzV-g+x6zhU 9TL>; zR3-t1a<&!{63Q4Q0FzAh?&knXy}bYC2A`O^lPLw=gp^z(Eh9q{a;1v16{C&-l=lLT z^WaBJ674R!Um)RJMISo?=@U>Gt}|=jJI`-`TO90?0O~kbpq|S@{Rz^yosbGO^AxZF za{MsKcH=%}FVF}3X~6AxUy+s_Rl- j_ $OUJ2w1R;nSceO= zM^^5IZCf6D1BB%ai->}}c5%#_HHHEBwQxcA?DkTOkZI;57H#(+(4eXy@GCs(-WF99^0%u)n?wXa z;1{nDJ=ObCUJwCUu*Yjku)Ddbc?kSc(A%d840Lln0b5|yLk}c(5b^m^ngl|~*eHW8 zzqc^D iL(GgxV9r%+#tj)^;w+bz3!gr6$(ic1_pt=Q^lra^Z=e9`*to{7Sj z mit-qzgz=@G3NjrE$_y52yC)Bf#6wagC>6&cHqWI(Ng@v;0 z?b-UvZ>CESC)V3rwO>(a`~+kYifHBm$zw2Wbs_(87Qd;8#XsfDyG@9J;bvHCNpyk5 z`<^znxR%uB19^Fkfo}0UO|Y_<*f$|vDH&Dnyw?(fNe3TL=Bh9P(S;Rt=7KwR{!FqX zF2ON`4+3)j1I2DcOu(YAwfiq~tTk^H4F&Q7MOtt rOD;6(A)C zJeR0imbczmXLx+?dV3X-`Dd@HiAhhb+mFH-< yIbt4gr-d=J=T1XoVCH z2QG=Eamlx=Z=-~T7v7G~oAw;)?ikBpx>0XJejhgF1%DG_GF*v{F*l13Vj&Zv!CaUM z`8Xux@aX>l?)+7*BIxGo3aw4Dzbp(JZ`M~W+kftcgY|G>vTT1f3C|~|DYnEXa=|Ad z3irY@>sIg5Ov$g2XE|;zRBwwC02+A~-vEgE#(vV{PmB$z^%q%b?zHv7N@7Q@x64=0 zI$YLr@Vcn`^!Msgr_s-OB~FFMuNyYjZHAe{w9KO4D6K<+Iu7+EPBL?ZYmSTWaoPCF z%(J_{ej|-=k3J`=Mbf^ZR^1W1YR=v^jRZCBzogPetGL$2Sm9k+rDn{7IpxG~k}vw8 z)}HqvY$v)sykYI515Xbh4G-@PNmkOkFMO#vk3rnBFh;U;qG7-j@xHK0kD%o}Y|-nj zFx_r9@F%xN%1ew>7(UQPW#VF9Kd}J08p5U) $ZBla`}?DmdMasdj=2Tk*obe9g}IhJKmubW`|oOUJUs?lSjP1 z{Ozr2$$Y|u>-!epqu|x#f|owapV(9iJ}g(wWlb04<@>Nycw@DjbgiIM`6_i_2ox5h z2I+m&X3G#&XcMFN_t|7={|*r)`((lAR5M5T2)g3eUM^(oyEs?h8(jP=EVCXV&B>P^ z<(l8-O`hUM2lh?91sW>AE(9Eg$l@MfuwDZr<`&|%o~@6+PG`*>lk%_TLp6kT+|+$! zelIRAIgyb0nP4%%ui8;H;EwGble3=~Cc;atf;`^XB0c&|NcIcnh{1T1q1)ZZvy7 06UZA!M&*D{rpWCjj*Rxg$=FTJ@VJux-Nn`03DH75z4Vwu{m_;;hW$>hn= zn9@w=Uc$8sQ{*A><^0gn%TQMz>I`VKR5qyA1wo1cf>sU;a(g-^Zqg)<=&VFmj};xw z2wK9!SD2T7t?<5NE%yyQ#eaGC9J)>Agwm0UHP3HCSy>&+zvjqnKdLXMPLx~9h%FZN zJ_Z+zH3XgjMK_-2oCH8aBzvwMK`o0vkiJh38=fdK11G<(n_u=-cy5TtBM7l_{`R-) zZF};U2d@5oSJblI6zOc02c%HIxh;kBkQA2o`2vhqhw)6kcwAZT$*C-FFM?7-g>FZz zh04+cMY_6jQFqU^)guj0ImKNGu8NYOGxnremvpr@cbvW1 ;7($&h8b``F9uF` zF@ZKe+qA9< CEikV7i=s2$9>7hV0*nMwzrp0 zJ1EQ3osw<`(u+CTF)S>rEB(fdjrWim{%upccQYb9k;xTf-q!29wvs(v`i#l2|5LFE z#3Rw2ivS+Y@Jv1g$){9%kydDok{Q<4rI1A5*ebf)l(o6Yq(@9Hw=JS<80-Lc=TP6& zD@Z4en1K@z4YA933jV%{60Q!^3m_v9QC<72cKN|a5vdvpu66g+XmY^D5w1HoUh$f5 zlV}_*mQ7i3?3Y}3cgakm=Rh~F$&vL89!r&VGrhYwbkw|zXhCi+%P^ric>>+-d+SaL z*)Bb|>y6!sSV(blK|ZTp<^pAZU5Og^voB@Ne9+EH3L3?KHK~S26S09qy;}Mh<`swd zv1e*WNyzCU`G-q3fB_0(I~l+Xa>zC#Y0$T)fRa+LG&)p{NcCFxMZAQO?1(E {dwN(O`{gM!afZCSHA=Bs$R}PF4yn zM~ea1#it) z?JKpfVVTBeP+-9*mZl($tp2I__2&E+ycXBUx?ewWaZ0fQn>;nlC(YNU_QnQnFp&gT zduL0yCB#y`I^wO})V)9-^efs?=^Yl+-fCMaKH~!&Bs2Q4+3vk8>D_M@-Q1u^1Kf84 zsVmv93$)pKfn0k3onU?FWLs5PNpmf#Mh=ooW|Mz(wBlE~d$Y3hC&@Dxtd+R@>T2)Q z3^~JYbP-FZJ=eNLUoEw|lO0F9p1Bc!Nrw2&<}dO(f=M}gLIZyujx6!8-&?@H )nIf!nI<^@+l~$fhyz z%x|+puAs&=%j-8QnCQ|XfA5=E|CxX%W`#EHvus%YG8Y%n=g9sj6v$6yCDH=KV4=Zw z);%vZ8W~kARTeQ4tG!z9I*)gTT3b0`{pWe$9+y9O6mJN)MnCe*A_2cNK0@H_jFT0x zzY$~K%h5yZ4LWJ8G(hWtwRaso!nBeDZ&dx!*yNI;5Vxp)rTYbC!UPTNDRwZqgIOt3 z7&w8ubg~sa8b3?LHw5(OZV6l~!n$DkiKgTBzF3S*q1mdzg_AFruzsHxrVt#-WKy9h z#(T De1S+uXi4RWA85<_L-}&9&7bz07xXq* zjHb)G+8uFWR@Y6Qmxf(AbW^Hk&A?iDR`Tn~6*{ id6_w(f^La>;3`9!x-Rw>GuQZ2P-a0k>jM|ns7BT z86L+YTBDE>Fey`QzEmO0$=Tb )RK^b@JMbxT z-j?lIXAxw5B1*s|XH3b60g%-AV4qX7N{RcYV+*+UMdr~#5DxOZq{Zy(ia9yCKbMv= zDe;(aE%)prU&iho$uo7xS#-~K2z?F$tgiBD`fkU|e?fp1Zaq_OJ6`?=;tGfXqVNYP zY<+<`d 8T3jds?5(M1HC$1UF_ zLCCxkATnmUxdy-w-TT@x&lhdEy8}&d*FlD%O$s_@OzNrslVeR3n_VJyU@`pwRpcCc z4wg%Y3;b4+ZHa#Q;ugNu=Ym?8!&t)u(()>x4#r>8qb@$;qQUzL&G8X5qWC(Mu*> z#x4LSk_x@{Di_X(zR2pYS>?7Qir1~s=yC6AfjX1ebs{u$UxbYNrQH4T)lXn+vWb3s zF%;XlHzTs(8>%gA0`7ruEoW)nc35yWRMB|MUgUf{uiqGccjBvG>RpB?_J;Gpenuck zS1v!hFy1km&71k=N873T(wY3h$dkLMi8Hv{50HuY5ziIdoRNT)A#F_oOH|2arjI`z z_r}DabyrUtpnJ4g;{F2-xq-WVLjOSzwUR;#W<|So6y(Ux4(UJtJ}cS6FeC2dZo_q} zG&kr0r0-okb!MDv0ypIT(pkX8PhPU!%0*F{OeZrl+y6>pqZkbIAz%#5;qjyglq78$ zm(g`#4w_-!YE)4|mURwT)`@%)Tw?2)V2yMTLNQ6ULOyVFu>-(JlXGXYi#OK+OnL}% zS}FXQ2};$4@}N!(@c0>(iSH J)7{%#6A#mQ6GH^t9|ki( UcVt!ECda|KW zY-{K2LA%0HvIjfjp}D>N*MwbpaZojNRw@IL@sv~+r^R|$jD(zxVpw0xl&~#-eOw{& zH~W9?y*~ZoRKz>YLw~^C&ZY5HrGmNQ9KVWw9=;-HZ$A?RdXWySbtcly)@)p{uJC^> zE8;4^z{(?WYpGwW68Tj^5@z<6;a==-R~b?p0)_}Qb~wrWC~X_lx@I-gI+@%7MyU`# zzdoX4ZJhu$-v%A>CvR{(a~NEcjQJT1vj)?jZF)3d1naYYPUh&UrE%r?^|zwqNI$*u z-!l1jpq*wVVs}VG?tX2ZH}mr`4zS$_@!E3QIsY=XAnehP@)B|tJ&yFl7Dets-D6|o z7EKt%h30f2{qQj`x+Ssx+mS8h5s;$g p{Ac zIB(b29Zj7P_$V(c7vGbKYgM1RLGUK6aW6Qm|8~(F#9&TY7z)48&2t^LTGroFeBOXv zZ}GjRXj#L)ZiPpC+C2~)1or`z)l(LK+d8&nSN_%lY%u3SpS`alIrX3epDB!+Nfby+ z^sqgyZ$x%QT9Hsdwg~p9uH<+lyhSk>QH|jifkn8FiRZuTzUH*Ig74?bo{~av GZ|p!Ug~X A_o6lYkK*2bT6Dd!=lalL9c;Tu+x!H5e%9xy!XYZP$IV z?n{=dCEbFqiDj(?Bmg(tUY *59Z80WqWJ?Z{5IEsg_5?mGrtI=iz0<<1Lb`~T>Fr<%XWBj7yF z#w+gKGDa{361bu0fdxF&UqtmpX%N6de`Q>7i}BFd7XV~$UZ C5;Tju&d6NTDft9XZd&gOIi{KteeG`i;v&J}7p-1{#Urtf6{ literal 26288 zcmZ^K1zc2Lw %k{mt`6%Gmt3cmciH)<#-s3yqr++$4Sb(ne` z7kNW WhEjpdoR1QIJ;@Qsnt5#0mxDU-&-A`=8?-@ cVtt^cbr zpo!x@M1PI(kBkz3BoO=Cp}KFZ>@4hEkoo}lcm*Z?%J%<2{ztoiqty8yN`689f2aI6 z$bVAGIM_Nkt2>&QSpazdMe=V||AzfXSuq_o3l|4lw?Ebf2=nnE4{qK+R|)R_2mGI; z|3j&1Z{-T$`xnW7RR1TH?*G95w+8 !9Wo?^vz9NP2QNeS^)TX_;@*a1UUJGG1+MD_mR z@PDEGi-iRDpP~D2L-`*+`CE&06aWsA^uL@AfK&M@(jEmx8b$uiD-9s(Nh{VDb2&Gz zk0ioY@mf=C-!p<@10TN*&3Ic8iuuOt%e`$ywp|6}%yJ70aTZb;g}T(ik7*l=jh1Km z=7~HLw!gG4)4QC=uJ`PA(bfFZh#RFD?d#>krImW`PhOwgi}Fs2#N67%3fhYF4Gii} zGf^$OdXs&QPTCvy9_EgzmfSACP*cSHKqcd!{DMON6xQ;q_-W&q$@eXB{sh5K-~3(g z+-%slhUXAnTjk9+V;9W1`IX+2`#;19Bw;z@8St-rEip9*8n?sZry`rx*{%E02F)JL z2I3x#l3OHd(Q$n!g6R%fA%&eO@92dUrky_E_fa}fe*R=(f02BfzAGM;tsymf9c`(2 za+6C2&l%v?BtN?fJ$E5D_oi+edAb-e@%ZF;*{@vLZx@jDkYDLwWrL6l4q4e`iOBrW zcj{ISoSf{Z^;kaX{ $1h{Fb9> z#6K8l*O2kcRZ?{;VM iu#s?Wee#0b!p;`I=HW3>hTj`9rpT XQn9Wl_G(wX^JLFLNdLJkg5dXUESaYQpE39 zqE3;z!9X#{uW`&p1+#tWVB-^Sc}VIe=G!lvYm#PFSIt(_+v_kGj7#H*Ht!>$d>_w| zK8#(X^%8VfHa2;tEl%p^D~~{!n$MQj?WE=(UUqytB+J$k7zZ~QJ~6fBkFE1O@1yXk zY@r9v%k0mz$z2l?dT)o+5zSrEH(g-IxLF@Mq&dv^p)ea_l02kmWYAD!NTWYZu_rRi zp2RFS$_Y=HVVmlyP7@6(pY*FTIzYVc2q`;mymvuW-s?@C0+#Me7*?GG}17luoA< z*|l5x425hT&DV>~3enVA4A}6z-sg|FT#cTqtLn_c7jAR5U{>mii_Hmq!GbB3O{7C; z#*KeY1^Wiz&o>NRTwu+c@_TVi#cfx8rMWS!YI>#m>7r*^I|?0?pnD&g?R{67ZMtlM zcuPa#LdgwSgnXWMZ9jo!Gtogy6w}MhKw{uYrA>td?T=d=3ipZ^MV4R=BSBuG=NmjC zPn>?t2%Oh2IjQh}`$P#*L94TADQu+&nkmK4u8Bd#H#jYYGB;C{PxK=d)w6krp+XW% zAt`n>eEGUbb=f 3 zJ@d`Ut46eLIZ2m3Zs6TJD 74mJm09+z`NnWd?+qhOxcJSQvV`4tONtl8TT*UeZ$D5%>hONH-S6P`9)7?z zjI60&^SUd%CjcHfq}9P{B2OHW$cdL8UJoTmy1v&H&EoQD)Y?5 Uh$guce&8^u03C7gzb!E|mcl;{@xQ6aAu!~3F2;_n;3gb@0%L?#5*yb{WG|5S{5 zn|5c(+A>r6-qNS@Jt^X?l^ffIHh791w9V5?E?BRGnhwdzPG}b}>NORAfIe?23xv2? zWlewH>=sI~Qh0)rAnYH{cj)A(mhHT&-}^h=2B!6(rUcTzQEt_$>}4MHVZYZ<@|`yV z0~x>g V~xLBp6BC9+DQvFq>yrKn6 zNQM|zH}J}_=VRjXZI)s3L@7OTsC=j0kXH0L>!Bd%f;PLZK(kE~u76N)-bxk|9P}if zG=M2dHPwlO2i`}i>~2b975*(Y^pX0`ILCw6X1iRAm9p)7d^jnaUc6G*i^xPubg~{- zb_4VXc~b^sFNa=_&6vCzYlKf%HK)*NA1K1C$q2Y;HsYjvr4VcJyEMEo9x{3yo4)() z_3KQfJIyG<5xwa!OM}a?U8Kw2{_5T>hOB-A>B!W!>S+*QYX#bJT+DCAzt>{zBp)Iz z1Z)%>A|f~NSqkxG6m1^hk;=XTyXih9=b$>s?3zI4t=0}Gyz(Zp-u8EPXsBN3-Hp7C zzI{l#3X?8zR|-|6{6~$*uhtR~mbl8zkq62Kh%hq=JD85D=&M!AX|Am*cb909z8+qC z*#wpz-sjOyy3L|;G-jI=!puX&n-nDd4J9iX%+XE;G&W4pPTW9aGPJgE>Y8SIxcG*u z;m_{2BDQMi9^a~RS1^ZAFupW%Evm`0pce!jyWh=tg-YEp-yRk~UiStV1sX1$O=24k zJZc{j-;xFn!83Xy)YZ@1amIs#DX!viL)9K$R`X8bxk2h^dze<2z_uj)H0PQbucKq@ z))XRmBYapTc#-yP>*ZBUAK n0$LYz5Jb0=s3K=A--OS-5&E+Lx7{$>wWKijw z>OzeuFpKo{RW*ALG}1nUTH=mJ|FX%x-Oj!tHpI~-Xbk?EmJ(&bl!`+)Z`G^dy8<(s zpUXdx3lE9LPl|r3Y%t`X8|h{)kqTb^Lht;#j6!BQKdyjl*j98pvM?aUm|<)qzUG>%~neJ0v(dGD-_{YAJQ)= zcJQpI#3+p-)rV6RwINsw8Zes>OUlifaR#%`7W6xs4|BkA(e}dl5auRE~BL3CP^BpEvj-HVca2{yUM$J8`k;#6<)g9yNeeeAhDWP z*+USMuDlmQ+qbfjSPa3KSSvYq#SwCvrN?GCQ(lp+O%J&nJxjN4#Iv_K#%yKpzdFE^ z1opMd1BxfqKphHs{=lfW4W_+-b1bmzeGop&*2MgLL$?tMB{g+?nEC@|R!deEOeIsZ z;Mdb)Uk!Fz=lSngO{zCGOoU}1ox>G^m$${fj{!d)*xv 5`>qzFL|6gHiPS@F4HI- z UOneEGCi>p3{%{k5s`}I>CH8~>kXe_ z*KVlAIzCG}ss4SE)Si9=4vsqY$C`^MN4Kv4dOH-hPMgqkQC+{cN;>c$TO!^R!LEK) z^o&v?Nvsb$C77aGsTadIv?kQ6N8dM374Q MZ5&+^V}NtR_xoH<*M_1;l1+ExNUfY;MD zWiI5tH%ERJR1=|U-d2X1OW+ty?&k}Z5<48%zpJy?q59S3yZ%dccFoNX`Pt11ZTANC zRu^OjJ+JKT80?DcEhc6daI~`Wn>+POvIEhnh*;k%Vl71;4uoR$QN3;>@yoVQSULBF z`deG*v|9i4?qS4gR#y`1^u4>oUGAn9ZZx?Y;aM!5Qt`i+pP_YRW@fh6X)EQGw%re` z-y!R-;gnmfTgWfW?rYuDy Ju2Af>zV;x|Kv)CFx2GQ>ce{QdiryZP}$y z3HVKw>$H7ft?!K>6TM>(+2MP2wx{I1Eq^K{g#cM}UMj4d>Nf%7#7|RlY0Az>qQzy+ zO>8>83}zDvvgjW@KH|e}2YZgYj{DuJKNS|L>zBL)cbmGT-gOzCj`?+MEq7v-x*?#0 z @8^qR`d_@{IDA%;$Vyg(sm`v8W_O^V-=guuTjXoo&Rl&X zF4t|9Qo=7h_&a#H?p78I#$Q812 0H2mzNB`c39x-iz_$ z&dT0XB+IIDG^bgJ49kXbUx n56CGEpdJsLFZepoVF9pjE?h z^!Oy@A&>HkfU>Ar5_*h4_gH50io
lZoj*oAjLN)qoK zuLQ>u)34PFmE&(QTf1NOjk)oQPX#(GV=7r5(M|21zpmGoI2wVm`3<&PhI}L~Ay0wc zxpgS;o~h0^sfx$qah`Z|Xm7lC!<4Xidwf#gE#uL>t9Y8_eHL%ys_|Xt_p;+O_wqfV z#J(X^f3HE4U8_MZ+p7w``*Y2so4NZGOX@ZZeo6=`nVZ<0d^`2NQLDe-&BrV#>d4N= znaQxA!TvHhjiY1A*tfejjQeYW)J|B#z8m6NJ-d0L6!ba3HUzIR6Zy`J+wK~M9DBQT z-nWJ4XR1}1HzbgIzpGy7lM`2asT1ZboUD_nL>~5^6Ma12lGKxirX>!)+iPZOt>vS3 zDU&IE)O#LJA#`5}ijb!e25SxCe}(5w?-c7iACtfF6gX7!*$yLMx3IObU8+-r=AXK> zH|)%X?>xiFrckM`=L|V9e 7eJbKIa` z>h+^wqA@l>b5C3B2HL %nwd{q<{3$<*Jl z&lBV%)u5@@alYHlmvrL?RcZj(I{KBE9;@(_{mqQs55$+sjU{8z&SyUBem2XhAyTh# z%VQIT?CZAj#V;#Ry5HYaof&K>N!~oG*Qt|L650LiaqVy#?^O){a*rl~b^*|)Q@2W; zDGvx~JI*9jPZlz@#g~3LDl<96#PiHnmvl9$Kxf-d6f81Rp&*2ytf0qxU%@7+avI!r zXwkkCEqVKntRE(Husv>g$>M=%y1JcyNtV)+_n~9h0 AVJwbq8{u5xZKhfT%$SGq!ouMd+mkF-klHvF8gYQ1Ds9W(;d z)B$OD;S6@5W}iM`{)y=F!t*uTQr)RBziRhtbFPh<=HK7H4XeG#JB_1u*Ksu_He_2O zZsLhM+MraHT*`Djo;)2YE_Z2fJ0Yn5{P}n5dgHiC>yg7< vgX#xNvDs}fnj#+2YVBVyd$ili)9gmar6ZE>*Kza> zEYg5ar|3whC3b{P0}INowXE?XM1~Z2@%VV~(F=(V^LTk<`RyvTvP@G$9s+%GX&K|` z(Z<++R97;#$K3sfIh1<_DRt8FEWSw0SOEU+ocTRmsu2HF)0_8*+JTD!8J};IIM4 zd^=q>G46_&>^;^VP6?MuwGDTK92VGE*~prc+x9(A8**b*mV}392cWd#HIfAb;p74S zs75$)bT^OdO?R9nqc7r%%VRL=t)(hUP0t@mOpVk}DewFq2h#G@-YCEoZkSUAtrzsc z6v}?lp;5{qDZ5VH-aF197vGSN^bG(aM*}9<$?LnM1Z?k^ >D@jmuR1ecYCPNQ3cp16W%R(%0gU%{z1m@JC2h&Lok8L zcN~YCiF>Bh-{6bjCI%=ZM$|xPetgRMv lQQgQ1Ufq-}sn&s}Hs78U*|a-|RJtces+YM(Csh z*Ut0j4)8;!m3{NzK|V{S5u4ietEWoI*&6e7jhAq#-=vLe-zX+ZA0IQDogFAaNa6Z; zwj>v&ro%?;neOM2*T(`7MbkVAdCvZjIP_F=#&brp{mg(z{xOOKCC1}qa};H?ADbJr zShwf4x5h;b>JDbvlwpH0c3md?FSRPesojij`s&>_0tKGKEdf{Zr#tOeK9aItmvJG( zg1!bHH }6IX5F(kF3Sf;bcf0k6=lLDENuhtfMpa|;kQWaC-ApYvDjDJB+>Ed7%>Uyp8d^d z59@M@_`Olpndge0ok2#ktwrg6PSt)2E>cIIL`$9E1|CO~BFm5Z{N~@7bs4zak1t!9 zQcHypNEl1CraneM7c2|K4;svBErgAGIndFC37;(1X44e@n0%X+G5Sd2zMA*Gn(r2e za(G%uEqiB#`IOy|=AG}+(1T%g{r%U=A=2SXFPgY?dy0!;b0&!cnAz1cv~&G!8iZTb z=$CjBvBo^olsn1m6;|&$sf3`RSi_@~`SP|?%xhQCnJ>QP-n;e7auk9}XO9^BhN#%h zl)CB=JSa|el&HeT>(|klKm5a#zm9>@*Z>@KdIMWVL=t2-tKhchATuSK>rbB}weh2- zXfA@7zY#NLeh%V3(6;z2J>>X;MoP7)Yo)z$&i7<#%}MxvQ~S0WUAf {9wYW)NVut%vJCx31` zYTOxM^C*H6gX1$-g3-4lIv*ax2)!qOyR(qj&U*&eFrzZ(0z5%u;uX&J*OmC8Ha20) zAJF^e3{RzgSJ~8qK4ZkQvl`FR!R3fQJ~nY{V_kk1vx7QOgi!ft0V)Firq=FKRE%Fd zP_dQ}q-m9j!oyxQwM{z|>U(~hsBKUnW%hjAa$HqT;`KP{Yb+^vdE@ExmE7J{cBr+S z+#PRfL56RBce@rUR=v~Q(-^)*6cG3%LY;IxvD0ltRjy&DsyxWyQb3v svL9xNX moh8z_=WOT;g;2CqZ?s~hf(A9 zlD+F>sGm$(Vu52tL9_MF`x~h5kCLwrVa57uujnGo%#U`Kd6ZOp7~aBydjJ 5 zBs^`6b{!Z#>x=ixXRQ#y+tCQV4E5Cpt9ZZSvxE~2TdQMkITO>zr<>2a;>W#Ol-7ZI zkH-tMfp@$`!P#bJRaCPM>tuJ801Y`M#%e3U8GJ+66UyJ7A=%dOVlcxD#zfeYCRMXx zPrdx1-CQm}X}so$T+8(W$nS(Y`JkJMxtot9;umB5bEvsfwa;s=_a9vzH~hYPGm^y2 zr931yFH>oV#j`OAEL6mj49$r!s%+SO;z&lpzGruCLn*vk!xgtRHpP^xK(Gt~%`8 1Pfmqw4>W-p2NFXX}lxpG`pqe*~W_zo4ZEE(Tl3YXyi-` z>aS=Te%8Fe(sKLtE0J{PX*V}$Tvv@LkcJOq=KBxwUgz+FuiVEN#l%4xoNz_hx(lNv z^Vf^~mO&*I`JFc3QQ*7x?ymt`!!5vvj&MTidfPasb|v~*u#M8o_#<2rYO;at@t8p# zOj5msz@lg8E=q9)0PlQokk};#E|)F(=I=*zG@a%1OFNxhE!x4grip$z%N!CKV+_p8 zUQ3x?qb|hxq_gtWZKD9o=~$f=d&qCO;`e7HP*%+SItKx~4SMNW>|I8TA1`Evu!cBR zlM3^FUKpAsg)7>9zkVdYoC1%N$b;mRI1^>PL{5Sratoc(vSfKG)B;v$oTQONXRthF z`WXd QSHuItQ^F6_0ZEIS>fkLe1ryb^a%@h5p{mk7ajye03 zj`NER(7x=K&^T7w0_AOKzv_}9`qc(i?VUxf88H387QIM}73b?QEY9S-dO0i6H3CA6 ziu;b~BnNzF!0%c@yL~0v^28oOn`{Z5V70X8Pn u;E=OBwOn`Rkl-SF*rO-$oR{Kt~9IzwQhEeD_R0LR{ouCMqptZOXAMuFAi zJ{c0F^%8Vp-I7!qux(a=p~L2pu4&_Bw9Qk0_Yy22McPG+lJ%Ec_wc~P+TSnmd1O6{ za`|pLgfltKazo#iG-*kvb}otK9I}cLqM4-E+qxwCo#Bv{EO;1ss!ydhy Ys|4+ Os{NChwoC-%`umWE#c+aWwr2PYI2-m(LtYh)t*iA2gJOYc*hWYrxGc0 z8 w>NHU zqcIT9? z@uFGIZ&PA3HsErMyN NST7J9HOy`Uhj^@ElIKIkLjmk3!wAXgmG?E^cNAT98>EJ TW@C3lN))JepveQ7tHu+Q?HFUUY2Ixy@^(e zpZKIG%3adiP8q#y!5>zg8XHy_z{7KbmuALc{V4tTd=jbw>O>;Rp;*Ed@9E;Vp6?ks z#vPL&bgoS+t$Vk^QodB4x5{e${PSJuP(gA^7{0ZK(?)uBJ1TivZPcQZ)v%DWmL)e7 z7P%D-P^+f~Tm&J`&-|W%F835af4SxMJBc%Mocjo3PT%o^4(l&}^4$LBtyK9XsuD={ zp3?KnKz_)rq&Qfbir9g z_$r(J)9Z45R`2HYo&3xU-Xw>a%m(xpt7@eOTV?|PY!>CM){PeJeexc-)SZ(@f2PN9 z0R6)*iY-%~9b{^=x@dXGwn_Tt>CltU!+S$Qd(2rU(#sJDN+TW~!3VHbHKQmZ`skBN zd3sU7^c19E)`Hl8g;0M(`#IgmMYcJbGPC8m&Oyezp&q09&adG>SU6UVV>Lc#1XXOg zpHojGFDK>^G1=!7AaWjI@LfeAbT5r(E*CioY=7`?Jt{(xKs$kdym7I 9~i|esATbutAD+KICoJbAo<^oV@zT-7tH3 z8z)HO=XUsrdyWL^?n~Pyn^&2cL(#dETrvGz_WAUL+{%1ij}1p9%R6tc`)=8kFJZ4D zQA+BgXcXeOuntvnJtX4V9)_;5_024VheX9>e3ST$gnFl#lpqJ=*IKZI4~sIR8IcfQ zxfad>w-4V6ePhTAeYQw&DZ#VC+mNUTk9fday5AzwV}xcqQI-eX_p3X%_#wVUO8(Gc zFZblukKcB^dgEgv>&fXCSP)sX&b?|q3AKCW$bH-s-P0d_i`T@9Y(oL}1TZ$5qlv07 z1tp=a_wQSbr;@jxisZ9_)pWh?*U`G04W10u;k5KtKtK8FZ%(Id>zi=Wx%WmrdkT&J zn)0( 3x3A$qjo->zD1dix%;Tkrf?;){`#RV!M$l?kBT4lAxp7S?PEq_-(oy|rk zeBtLjT6-HT&~oj%wL5BGZL2$<*!5vCy9hyfh81~|>-u=1imk24ye?V^SgfD8nhrsF z7yZd%yYTwL-h*&;&AU2vSMT6QLb3srDRmg%@y<1pOn-%l%-DrkO1faj_~wVWo*kI% zC|x({+1@Te>o&*hD%lj<4$l*2;~-f?JA~#H%xXWrN!)Nj$iXcRvC{7s+<_p{8jojN zk_wu4%EF-SMRx`Z7Pu-SUSMp2Jx3CTg;u ~LPqtr zhy;{*Ya#|dxcYQoZq}}i+`)I^h*UOxW5(DS9v5Zt$OFLgp2O?|D&%Ee!WjwRR*R1- zH4VD7p= Ld`zV{C~Exx0*y|-_UFsf;%`cd`N{qd#pe`x^i3I zhxlr0emWVq@W}|=c$O*KZL3F(@+wxlHxo<~_MPgJS&ItfeUZ=Q;=}uv*bFFrn9@yl zJkZJd{e$+#!o-tYKW9|cAt?(X*|hImt91c7J>Jw=c4#qpni*9bc2YYl>tU4;*YyqR z*Q|(Et(*81cVIDk>#Li1X|J3~LNZX@q?UBZdfeQrLbnN fXm6gK~PEd2|Nx2 {L_kw(K1JgDmQ~KpR+H2AzA1-CSSgc z+EJ}lgo53eo5Uh7DFWH;!4xe#^8)6j$JKb1z4HQY4AocC(Gy{yLyfJyd3a#$+kDj# zW?6JKQ;p~Jw?fZzKd421R$4EWdS~O^1eWTxX~SPVb7+y5tz$_rgDv~pB>aTh7W zMBlmJ`hsHX;+gR3xy(}N(XG@PSR|+u(gDrC(K^AZz@fhm)by{d3%yBGKyJR{HpLY= zzc>teeK_(`;_>0S6t(u>1ghx&PM|W~zKvFful>RtZ>8hs_pf(@nzmcE2n?A{_K87D z$27nlrzgOjA!5vLEIslR7dvrTKBmAUysnz=lryv(M$3zQyALrpUL7tHO~_Ujf@x zc_kzOF>;29nD37ONz9W0_mRSQm#I=_3#`pGYq(h{Q}aJ6f_;nJqsViR);Y2j_bUhu zkwm)Q(R?<6Pfa|Gc&DrVs#ufiwyp%nVfg+TjTku*tDd4 +U%X)O zXUxKu@cG%^I$z$!YTs|0h?owNTe*~?`aoPW4*ih=-D6w5U5r4uf!9sgPR3z3gY^A= z<@a;qZ4&*Xh1b{tc&?T+y}QFh*$m$sfI731S?}oQJUJug^6sA!dS>$I1Bbb%gW7v} zdtYlQ5lt5(F3`{P<%~Gd6KWkmSS?S-o3F94h;8AV+<=pQLbtTxdqG@L3TuKZ$f(Y{ z!>tXoYQp>OX~e6Rp(zrrtjxk3r_Gnu7C&x2-4R#uP2(tgvJ5;fOkONl{-yQ2aE`!; zi(Pvfo6r^n0sq=>KRvPZ;Rm&0EzG%NsAyd}k%DN!YRhzIoKsry$aJfH?{bc*g4(e! z*MJ1U18rTs-?_lS*A7Au@MkvY9-1FA*8|1SLbPaXfPP&jK$>SuUR0TvVb9r7pnq5w z2Lp}OkO3Uy1&D^daEK`|=%b{Eoej`G08J+yvf5FFU%J{LMipA_MtP#!v+l|xu=HWc z=d3`=HHr o>sAZT$xF~o@14>LG;W#FCJD0qH;`+Gl~?{>EX@M?JODSEXp8)e-| zBKvzwYNHJ`GR`NMpS+JP;Gd%Ax>J_YVd99d5vSDY%bxS#?e*=PJKclH`<)og-B`*2 zJabGw^m`NI$^HF~?d|RL^*6bYFSfT_XE6)5Ed2i |gI%dM1D|Mp*G zpQP=t2=MGEZ3U>z9?BfrX$PQu=&AlA9cZ7Vvtp^KsMZ8ufbyJaJno$TX(-kIfsf(L zB|DNEd{BO1%lWqf4oA#w-p0W}mM95qZm?5qdNz{(2p4*QI2P6obZFt~nf~}+F>%9D zGrW?nvAI(-MyR`Ri?&?M_>s*uc7DnBx^VAV-j6zd`-y?SVx8hKyGhLwD>)5%V<%D^ z=}*Q`ir66V`udoE3vpH}*Fe%Ax)EuJ@Gc+uUjzpJ2{}x2Tqb(eBj&XQ4J4OX%6F8Z zOGG!oH}4h4ERjY^^-ulOkr5p$WgIK>7e0WTIQ$!E{o7OG{<|U$^)AdC+e?gzI}rZP zM=0^Hr8>TRXz^4QAq+xF!obgCgBM5+TVEl%af;GC3bGYJHl ^G#)oL;4cDF8hyNh*CK!tUVVUh z^FOxw&L68R$8kv%yY#ms2+*q@5gD!Xi_@7G|ASz{|D>Mz{2(+)@`>}&A4@J6BMmcv z6eWsaK -Imk-sk@d ze=d c$q--4P zC^Kj_XAwL|;xZ81Dmz`3+;u-&-3bm3Uaqnj{ #j~y~xBo1|VT3c1YrJ$>oT6dd zCb ?YlP0Tyic97VLk253S2j7&G*oy zmGhn9l~l{D14G2^T=Sm9p6Il-4Wm}@$>Vn7F{~hRQ^cOoI6r2c-O}#Ew(>)d@7)$X zx2NC5sBm)xSJQy+E`N3+_QlredH^9;;&s~1B&n2hIjH++rL=yPsu;NcJ!Bb~6u-gM zu#R>Ot#4mx-IF|XLZ;hPO0YH=Gqfu=;8s;x{~2GO2aF717gC6eDU6nJ0K9>eU0Zg% z4H8w}ER4L`_eayJ&f1`noD>`07m1(}4rH(C)> z6kHuuj6JL=(P;UE%hF zHsD5(y8SSG4T0)$z2adbDM#y;0N*5U|FuM y99$$MXUCvuv5vJogF!Z}2bVZQMuHEelHzQ?ioqV9b zpQLXL3&UQa`vS(TGP-M;YnwH>T2z>C@vMd;CHX$VqL8$I2)9!9PTSQkH#`Ac6)HD+ zTa?4X>F) Iy3AuuG>))P*gQ}M1tW7{8(^CeS4Q$y!Tcfgey}@a(v{qeNfad=N8{~C zhbw=D)pTDzo3QPCPO-_;$mqx>|ISrzI~p1Nr_aHe&UggE7}FIdTfrK?=X}bG@7lx` z26cehj;qo8Z#1~Z@hC7IWy!oNn)}^{GoN0#&<~0gMCu*Xe#2UtC+Q2r2#oQ8F`s&l zduJ^ rTQzQ<94uAd@XOS@XSiW6f~<+Wl}Qws3Yo5hAtyaLA2d)ACqx zn>(<=!&$wZt#4wsSesYe8L#vBEM>>oR~~y0y|$}Aze$$O&AgENy_ bUvD?P#{~%=gTj0Fo%xI3)=e9d|GH+9{@~qiH)&EN>X*YUa3gz1c}_o@?6` zJZ%MCdz{9~5QLpKVcQC4c&vJgVQ)R{X?~b%Ugict6g*~iEe{kMF2<#d?xlSTGTqbQ z9aw TbbvGti$mf*{y7;+p{S4@)j$*Gio_aey=18 ^DTqDExDZf#e7LsQtkvB%XMgyY+2!dFwU{w-X2&E#-pTYExviy8u4Dm3r8cx_l-( zgWo2Xb^dPU8}N2Id$lg><9sw~J1y^*M6gGB!=b;_?Y(gA^q2*5R_mZKLD_R|hg>-{ zP&+iKD$CILUQV7ij{BC0ALPaVmXVOWwsiJ6iWWbMq}x*60^JsXoMXI~w| yXSB?-@B zS&zB+2<_J+&&1bmlngitl{PMWGVCrTT#k(%PU25Trj-FN9OOo-qlZsFVIJ~)DOd)8 zI`>xEefDJt3TU4Q*)Q*}LhI@q$=hMQ=OX8JZbgG){3Fsn**xxRE`LG{C>JtD!d#&r zfK)12uy+C+A;?*DLGmJX+%da(-NjowV9&&6vzgh;r^$& xZ@P(VmTh)uAKSRcN-lId`GS|oAvY2`|+c;&ykB+iZ3QuElb&F zljKxtXHd8eh3<^OZ?1WDXH0aD#$zi=c&sfRw-a6WaSZZ5O9VqM^L+Gh3&`uw9`Z~0uSO!S>Eyq9@rE$&%cn;M~xk2@4l$n2Bri|}T zlbV>|A6baoa_+|V`0EerXZ?(}-*RnlVmzVW^|yVywzimMs#se%5S2RsaHgU;<}MpL zkmH8-3>eZfaG!n}$v-v`B5DZxK|ZGGan06_iAlxW+J0tV{)0*Qk4nHUlC1T%i_9~T zJC+!l+m0_S$~tucAt52bb$j?5|6+-b4kS_`xHmPHR+7Vu43^yRqa1br8(&I)$}!I2 z{kBG{S`nxI&-xsLC$J3bfc Q{uLG&OGm%?V9L!@9rv#Qx4K^%K+EgBY&rbLUC=D04QV#C zyFAr_{xN~ecYgvbGKyGo*>~V2qN-OJ{~ZLzqardsBIiify#=km!3hJp2}HcXa(qC= z&px$e`%lD&3?9Q!Gon*yI&MM@a{t6eOp^Z!Y~uWbsVOKjkikXO9bjYNz0#i$9T_?E zFmMwQ6fnys?Vf}_IA)dpQ$2tTE~5thcg{B_`ljS>)U&s?wr=ONOTXr)D=8Td5xgE- z1#-58M>%su2nGkT-Mapc3vAJkpRqRK7>4noYu<$g6M2jq^=Y452D?mR1%Hk&iR$-M zd9Ydu3ax*0HTBSnA;qwjGntYwD?ku`Ehj+L?0({Uz3N@A)Z 0|_?a@kTzkC6(ogQ1H$Wyq(s@X9tmP6R2Y6Dr$Lj&F(v zTq{9OLBhc4{gmS`$c&Kl#Pg0LiEbCjyak+`lgiDkx!*jRR>T$P?Ckh?@<;EVncCeO z8i`BPrPf>^Ed66Ith=1X^6u%)QIA8&xwC`7p4gQU{|}Bq7<8+BM9YQiBKao%#>LgV zCu%?{)gdGp(u1kfc}{`gLG729#QQ$ggi?Rb6Kh-XB{G`{ z?o#T3D0^j#Q&4T~i6&hbmtt A1RvS!ak8Q^U5C< zI8}!u(ZbEz1XeXZOFx&t7buG rgt=^lS?kbAUL+(?y=K@IBGm z$JwTy!#X7N8{`pssjjtwTF%m_nG2EB_VWCCpo@YpNg7tEogQLJ{SuveM;+S^Tx*?m z1`|38)jP>%hgH;6$b3&i9JlNC>yP_3i6i&{7CGE^PIuZPuvvi6$dl(-n9#UHN3%lC zjPtJzUBLIUOLrO&JNEG)++hEyoYNmOJrD|Aauv-?A)or-0KXckQCQQQ1v?z~k@Dgo z`i0^NIjT9nD653XybfAxXc+d7=16qIqcdWhD^yYPxmYRhg1vnvx b{APwoDvyhP?>WRj~a6%9fIB;Xh<>e`Nus>9zygD;&u~(uKI$# z&(!z9t1q{Fd*&cuIH{?VbogieTOKaz%HGgWO=i@XCp8fy*FM-%-(T4c;mBJ`*y7<0 zZal_N)qXQ_^X8zsRG39kJu%LsV>q=jtohVkU&`e>HGE;z{_X+mqgjlE>bE+g#0ZWz z-(ITm$Sys2*Q3#7owBREweDQ6#AX?V9$!v8+(gP1^ZJ>>Cy$8H@E=jX9b%_oS+4|u zF>Xx*LUMLsx%ZK0+@Nk5`)y=4?*3qZv+tO9Dz(@-4=bT8tW5zhnaG>K_bS{^yO9=! zh-i-?v8F>GQc>bBqc}ra_p9m2oRV%e_GjRH)S7#UH*6eXBY{?b1n01uBvLZsHivn;%4HDc zJ*nC0Mw~*Io$9G$`)_oTJ>*;BBOX~dV6@<6k-j|P9lTZJ=3W#H05&~|)LbIh{@F5x zh`g4u)w`+I3=Z#<(mFeUS#7SFK@Qw38mamy;pG!gz%UkR$!<%d ?33|DkY6t)Vb}zc(J5W{pqs%})LkwgaJBr B!Tq)s+>Ut%lvkh#+a+D2!XV2bQp6K$GDEh%3QY(mqE$|DHr#xb(Een@_Q_=H%R z&z=KXohRI7zw}ve7MP8AFnPJ@AC6m1@x0QBPVH$A8`Mx@5s(Pg-iW_lJePVTQ7)5e z>2Bm5zjQHd)QEaR3ebPG5+`q>f*IknA{?*cULxZevRQXE{7eEefhk<+mLBQT& |`9p4%6jKj+w`~&%`docu^UE{WyGtO7PiEU15lo z7Zt?m<$Ufv27NV{zoC#z_$J0#H5A1`>eJEY%;N;{jh_ E2&G-KV zG$PC0uPNZFd4kPJV%DCBYiBF*!GB!|`$1P$E48ncsWPOb)eRmyKL1)#001HMNkl =%N+VN7SwS_eQ1(!5Z9r _v$ RTLZ5E(F?$N zfhP~M5C=xV*TA5hQNy!D5(?V-?o;&0TCNc4idp=ms}(9m4HbnmhNnY?^*HdYsHOc1 zJiln_;JKw?byGa(;4coEBSi}V4{nn7M~cvXazYMcp#r^h+VGzEXrgQT-Qdx%&^Y=Z zCgpne_g*}^x*Vqip(t%#Qs_jktth0c@R)yxCmY-s<`r3i?uV#kUNUxIvMjbDB;sB0 zSP(p|gBP6$i;0=RqgJ#bnn9w2{X!Y&_V{>l(Ll+V$Hz~j!{nU9!&y2P9S;f04S!Ak z*TZ|5)Q2iTS;;1TB&rYvCKUE(7Ee3Iv?eK+GfkS555!IWQ*S2m!A8&aXBS`DznD|N zWo%QyU)5+RN|_2;9q{_=Um%!&2j$x^ej#c#abjboUB|+7f?1u&gKCK8 znSHh+Hls`bEAWOQO-BCGf{+j6IP#aO%{bm0?A?Ap@F^)KpN>CMq)Fv36`K4^<8gt+ zFK=U)Gc98lwd@EgBymT)Ov9nhLGeSA5yO(C&f3|4@7Cv7zx>f9|5X${ibe683q?%^ zf_{Q8*Aj9WKM(lx-QKeQCgoLx6L=kA5@P>*c^PkXo5oKl( BPH~$v^ zzGz~-R52v#>8Dy1c&=CV!D-CHc1$8&fk~@vnYVSdREh;+$pSPT1UiC{h7M&B=;bA_ zh~^?**`9*`^9nED@ba$KhQ1~cqbRgH^o#ygZ@e@`UM*M|*v}|r|Cib?b;`S8hxT0~ zzvU*}guHvYG*~<0gH`p%_(x}|@bUL4e3~6R9;k{g!-bg9L~sgnlP7=TbUnN@ZeHWN zXumSX&MfFdiVSKgGSzCKfZ9O%KuKr3*Pk2j6UOQp9?L%*SM!a4KvH&4c%KWFR5R#> z6?ot9Y8IY$vJa (PEYyu2E4@uN<3%b)oaS*eN 6h}p=m+KHDKZh`CH|^}82umE;sl~%U#1FD&+vh3+#w%%pPSsg+1>k= zceu$Ny9Cq$AG!&8jXh(oF*Yu5)EX&X;G#|%`|MZRk9hF{vdEu$6&g8n`1m~p+dbH? zhxb2`waH2Q=Lfzu|Ed2vyuzFjdN4*|DENFS6I4Ku$~{vN7!oB&DO2FBxOjz7)nr$y z-NH%*H8ZX7p&^Lmp9}+^@EJ)bxY%y$1@o~Q%C)kY!=qQ@j1gScD77E_V?_V^fu~Iy z!@jy$!+(oox&yv3zQ-*->3FyDwXYzeDV}&>z1wo}*WAWWe%?*)9+P)R%VZpQiT#i9 z2tSjc?-`LdUkx2}fWGz=t726Q<2O_z^|ipu3Vr!=pW&9C{dl+S>)&zPe|V)E7?rp8 zMf)@uYoeft+ww=Xj3*OKapX_>PG?8a=!yT{@$zSdn%t@_h)_5kGqvIV`U~pvBSl~8 zuAJ1bqEfR*ceF12SSo_=jlw5Mg~_gvK|Ays;!;5$@oK7*eQ`DTS8@}6&oo}^pMw2f z@!{`y?f%&>-R94KN!mH6tIiRbIF~-*ac=a) zt1MIWPg`kLei`8akN5)qJZBOMhC1=5Hp-zSF9yV9jUe}) %lE<9pmOuYl zZqIM-b=$u41HT%M_7&zDSj7VX=%D|S09>*m_&POHE(jv{t;=Pv5BrkJcu$8X7K}(J z6B9&r_?s$TO- 3rb%Dd4 zV*H)2kA23iI`1WJ-?zNUEj#DgZp95hcbhJ_*g4r6Kt+wQF*mqmu^U>o#tq7A1}C;{ zcM}^o%e$tf4w($K<}g;gS?OzC)d*H@)D6fNz|fl2ZeX$e{o3&{H@;z$Y(L1>gRGu0 z(GTpiOk? $b)ChK;@secv^Z@WM3OBvFc@ z0o))= +y9Bj_c@yTX@i*W7gBE1O{bmo(dK-Jtzm@#Lp(c q9fo}OrUg(yedyd=km2d0h+h|O<< x9R)~ z-1aN4bxTe?(XD;wpUPIof$Hyym%Y&K^UNo^oj<+Ct$+VV^=9J8AqPqwuXalwe}+!x zc<=1)U)(HPC!cdWum6Q?U0?@K9AH0bP5cOBF@AxjjzTZ+HE;1~!&KT|g(pvS_^W}3 ze_AE$1;z%Ega2U8mh>wfJ(Cs7+<2cbTCRl12PP&E6d4NcTEdWyt&pFau}l(sDZaFY z)vo=@B@{@CCu-*K=r0&Wkc7>KyhhZ)YE=4Y^F?3PiFfpvquj`02fN1Z-EP%Op6}Ma z=dax2N1v(_=!C3dM~*qtt@@qUxdYz$cA1oATR< !W?x=pLC`>@csXvTYCDVbT!++)`IRM3ly=ef_2QuB#!NpgFf)T-SU^d z&<*ap%8lPAb;zoG=~K^k2a0^j=_mUYF`8;!VA~+q&?JakpVY|s$b=a`l-1;qYK$YP zQNRk@^B=WZCv11O)@ohS4lhq@U|6?PX (K#7%E#vxlEK%C<&SP#^mpOjjxjv67my& zSSHPp!wzw)-})vk+x+P-xVvBeW_R~1-|W`C?XTR#!yDbQXFtvD^Ykan#Ld5u8`_OX zwhvan_GNC-Nhi4Rd+v4j{?4Dc-@M{?+&!=UUAOJ4-*SV?m%BB8^k%Vnue)-dUI*eAo={z@j>{0T!4)1dJz3GqL-M{^2ch7nM-EF`0`?5W; z%B}hRH@ZQY*!_NUY>?JfjKfs!i%acSQL4v&OywC51}gb0QKbVxG)qEHUM+l7txRa| zu!|}++6yc3!PWdeVV(3rVA6S(aHRRqa!qCxYVlH_WkH!(D?^dy $H~wCRjcH04PNKg|HFr6A9$0S*u2ec{?a$xCfN!=SoX9h z$_AROWNk$<0S~TP;g&t?X>x3A(yjlye|9^5e2tvC*zI=RdZ%0e_y6K19$fDhpLU8H z#h*FXJzuTPPo{bk4|~9?+_EP>QOnoA=L2rXRoCmuja~BBc^{Pgq OJ2 zO*>Sf?U9eze`XBWwj#}c-n9Qz9r>75ytpzY`!j@3d1}dD3;P}Lq~5C8wCTx0Tq!Jy zZK_h$3Xz5r@;>3>h?=b-lqVveRbVKwl_tvC$V8^ucKB9hw1aZh2`$h_K0?+HreG8@ z2B!Ol4?eZD9}3j(pljQXhM F9qbfE-H%jU`RJS;oUn2Hz~>V=R;vv;5T8Am?^R zk3LD0gDY3K{onSMu#YSvnKUu+A&eYykQ-dI$d7^0Se%d;IdH8!ys@vy8?st{l3V)t z#|RgJ42kuRIm$7(QQ7a^b?wizE_`5HL`jpIXd?%&b%U!{Y8^Pjw(Kb~A%{Bjgasyl zS+!#?d-u(^dH(<>|EMsA&|c<)D{&%beoo-UN%}*7Ta6!-`wsP*>c1ps0`Dypc9^eg zpZbWce<|MTnRFbcMy5%NPs>ccBc2M4!A6*bt(T^zm?YaG=%gAkHqj0*>m*( CDbV5-!ADli{$`~?}z z8#5}clCg?D;;Y>dY1?a691Xy^j#t{@WVa#huW7)CNw||Yoyt3T(hiS3L@7t((gteY z2vH3NqQ)XOMKRqZGlChzOT`?V#+>)b2wK{oF1)D+U81JDu|ExX*ewOI&&h-Bmj^VK zJ>>~ wo!X7m2AgDV?NPUyr @dnBq2`&?y+@5YFU%S(KjF&Lb*or!PRqL@Gy!X#%MqA%BWyM6oUWJH3ikcD{hYB z(HL-^wja%!r2tnn;D_4WexGnL6uiSBuNSpQlvLlA=Ff^kULezsPyAG8y0Kq@mq~>e zL~L6t|9MeIMM m-Rd{KMxEI4gCDu^ z2OoB0ci*G=AvxtRCO5|PNjjVh#?iAi`?}G?AK~<`amlLH2AuufBY5l~5AU}|Z}e@y z`Uc&$(5LIfnMEfYE9Zt6$wMJ>ju_4b2eBQ22_DOUJ?qxX9`qJjk*`occU _{p_ ej=PRm{JGbNYS4Y+Dm=p$R&e$uN}>iwpysp%O2`e&OLq$<5GF?d ;=QTCB};SQyh+BVy5in2|{s4|8mnC*N@7Y|T6Vz%4uLF>X+{D2C;sja9Ea*B$!l|Kkq+$UnGY znPBmy(Ac$G9bA0MiE=DW_JZX>k@1H%xE=Bcvy&~2{r=*Q-Ll7?F7}to#J<|?`}*IO zI{wui{Gs={Az8iSJs99GKKdHyEOU-oxhfR=x5q=TD$FH(@UOD{b^M=Qd~#8GXY`ts zWQF_a_0Az^b;Nr;%)i6(ZHO<#BEShdffXh7QoZ8oG-B8fd1k$F&G{sp=E~4Zj7lAR zp=05Gek#h;B0e-|&L@qJq0p!#c$8=z3jmMFT_#3^rB6P~9rox)Y1$3T%W`y!!Dn~h z@H07e@Ikjn-XnqYyt`#fV#ELW54Yc+zSXUG)l21U?h|EOVXGWnJJb!x>4`luVQ>2E zMbhOmxq)7s@70qM$T)c*;|p$yoG%_d?ihFQN8j)E+;*o<;=?leBW(QeC*0V*>jXFA zcKzZOC%53_4Dl1(q33_Z?YQiF?!ga!%x(PGr`_UHPI4nh9_|kQ_y_c;8n#S^4?ali z*zj-XyFGGt7*7D|m#S~3mNk8Ziy11V>x+u5#t+Lw-5Eba{OKU7=s VvKQ0(8y`7;h3N{%C!>lc zs$?jb7JN~8Z}t}ezT6v~bGSUF5-RXqbnA^d%) iYP(?T>I@P~7NF@Mh$9Hz zP-bg1a*A8wxoR#otWS7ldkX%~BRp2S+b;W|OmvrrC5*IN{MR!HGGXGR0$#qO?}E^G zG58MA?vbs4t>5~-+xFcb$&oWmjKexn N~D~j-S}0t`grgcA*erQj6Ic` zys=*o4-)1x9=z1_A6#iiYNGVP8qhn+vnEO^Ayd(R0Rn~2cwdc9!m4fznWWd!Pq {c~ebnI;5v0aJ#TfN$Ei}%g- z-}2IKZMsY#pb6U)IGT=8hrEU|e@ VNYrr@_t~YJb@SYC=b34> x6WgQ?l&KGBv;@iO zzsR3TWBnLLP>FtNMm|C_d&S4^Vbq6zUD~gQ_dk) Of4Zvv~`%^1A6(_|OnU@-J*a zFe7n-i|wwE_Y;p%ZCz;Tf5H#_?*~3Hty$QI-*xQwh}R~j 3Obs`dY!tgPLJ+r z75K4Q1Yc7jkyOYOGHBDH#HE5h;?-0q`{HUV|7RNSsp#GQyu|yFq?GH(4*aLxWUu(r z_#s{Z#6y(v9LAoYY2mN(!qED4`>G@VQ^kj-^c+ C}I %8nwgX>C_LIemG)QRo9ol}0ejlxr>D6FUJza3qlNw^ zv^_E@=v&m9NNw^ZAt^2IP+Y5i{(RNRI33kA$PSQlwOOIp6`u8)c)IWvu6d{7IQ(xx z8twOrS7HR*H+ mLz{%hca zN{c~M*oV1U3T&~AwfsI|+4S=lopy%w3cd_ BwS#@WslogMIZ64$@)o z=*;247mOl=L c>T*7$&dHeHO*LwxTs#@LkQ%m*xHM&pe_qZIO3o*FYs(o zJ^zb)7;Jw#Jh>_2nZwhD<=>=3acld% ^E zmi)J{-vQ6AvuZYNda@8#3X5W!s#LW?q~V0TPgs6SR|j>ns>l}DN)uhHRw}XuDZW)1 z^r)*kA%loZ6pMvH>NCxJU+`j#_A2c|C;>W^{%3sO`O^;JM-TiHs_}fnmmCk77XFLa ze{mIRrF^Vv8t}0$Nx&}u+3P&@Ct^@w0 ydyEGh60Bq;mvMx6A(3$XWkus5hxp;KL+b zO<7Svr}9FxI@Jy@Uhz&V9JEeq+6c57`LOylNHxZg_YE&T(Jtez>`xco)YFswxrj$Y zLJ;@#o4Kj~={Mt`Z~G!ZtMNe}--; @Tsq_~U;74?`a7tIq;w>GnP$`rv3TF&Y zhYIW6`CozOL}ROL XbEIe?;K5DO{zwtpPfo~TEL5PEP8;46A5C;^ zzZ*On78*zY!?jh<{$7CR_%`j=$I*4pVTUtL2Lk1h#X?Y-s)wgm@;>3p8fRRHmv)al z;$Sx|yCQds<;q1{sONc;mn5O=yCC!}$Rji!@OOFFO6g!>5v)@V|q7UO2=t*7hZM z_9!uGEC@?DfFYmjc={=EPyW}#$46HK9p%fc)$NjkznR6uPF1LDzaRMEA53XKS(`R( z+X1-;#5vJtgPgiEh?n @o>(oI zSv+c=iv5hAI)6nE`;>mkCw*^q!Z>cJG2?jeOz-ylfwzPu>EL*K{}YVO&J 9d~dhK@N>|8k2p8^84Z99a~#Y)GL}N_E8hmmL8!WA76#In*J874V8Ty~a&E@Sxi% zuQ9|sV*O7?-}3S!)ntRMO!L+lUk5~8mH|Uq#(P%C2RTAK7x=68tA77kJo}xoZ=-Lq z*TdY)A7Q@za|7=^rr(U~``;VB%(8!;0DRQ7-#wmdFyANL;>9m4DdAoS>^=1uMe+k@ z>C?_~D}ML2UY804w2JHMb%E!4RbOR^cN!SKOBA=Nvz?rE)%IH^UHk=uec$!}xSdb^ zp&PsQM*TZu4g66@{_!sUcHz1mc_rLhLt3ojD$=V7UIv-sQ3jcWUhuTtEne9cKNbXD z$N|Te|E}6UgLoYq=sXEc{qM#4*~ }C8}masP=eNQ`Y3BK7uw5gi0k78AS+B+2{&X@L@HB@z7~@- z)uZa_5~HNaYOVHo{ezJ5F4?8ef0kQv&NKbXzqKNd!`FnbH`Jb1*D`PM# MQK3o1Y_+;e8>o(&Jr)Boc N=2P7e6LHLfc~mQ=;1s;d+_$ZFu_o8GT} zLshY{o(q%hU@PO50YezrH`xWrUrIoY5ve@IpWz9C8DDQ0%^m(^n-h!QsfO6`$$+R^ zFE2*Xmnm<%d^HSgH?q3bH0i;eX%DfnzUCy`*<1qXx}6zc;&{IES66Lq*c zI}~@CqC3ps!c_+Y9g3%p@6cTx?RUUWS24Sgakupn$9T5z-P)youYMDs d7bn ?IZ5eDWOdT`QjuWMD1Lx;>VO&slI zyfQI0{)9x~728FmTNC6Q7MQN&zcpS@^35RL*WbJS8Nri8a4Kodru;!jE;a49>r_`i ze7WLFdLUE6wBn^Q_$vSPW`B<14L|kxOZ=bjc$t8Q V$N_S92PzFf}< zKlhnWef>ojU-GGS>(*~P{@9~dFIu!ndR@95z0N^~#wS6G<-;EXm4O=0F+z^e9bQc; zZdUN{SFM}x7Hwb L9qg-1P4+WB9x1EhFO`u$iNo;qlbz|$QrD+= zDTD|g(}(v)I3ByV-veHZ(4OC#Y;l*!R~=mP8GItt!h6;5xfkH&;%~nGeY?m9o2)C~ zvEA<1x8Cv4bvOR}u`hYSbKm@zQb_*XuYY~VQ+|5gbziz~-Gi6!+C8>W3J#D-TV`Vo zc*&3UiVU;?Icq0>rFl~RmY!%xkh8{WPd*xQE*ftshF`I6QRy0wdQBa(hDW>6u5Q~; z|9i!2+Z+0%iob6v9D?0W{L`M;mjjWl@u&_eGGS@cg1?$Ud#8$*N_7k%M%@xh{?k5U z>X7FUcf`wNAyByLLy8xveF4N|Lp%@!VEPAcEgo3ZVk;B@48RZ1OM>^+gU2GY!i$Dn zFuG3B>&LdgK>HNxplwKCU!vN0UyHT{S0-8vCu`%aec*)z_|t&@T6f^Ds{JUh!oxoJ zSG>$0b=yz-a|u5%I532+#P~t1Z89He`@z3x?H0ucmn>Se>cF-8Klw3dJnE$<9COTf b0Q>&|a*OztDtY(b00000NkvXXu0mjf6^x*i