From 78b61cf0175d2fc3d6bcddbeb272fbd51ddf00a4 Mon Sep 17 00:00:00 2001 From: Benjamin Braatz Date: Wed, 23 Aug 2023 10:34:38 +0200 Subject: [PATCH] First version finished. --- .gitignore | 1 + conf.json | 14 ++----- controlpi_plugins/readjson.py | 73 +++++++++++++++++++++------------- doc/Test.png | Bin 0 -> 84462 bytes doc/index.md | 41 ++++++++++--------- 5 files changed, 73 insertions(+), 56 deletions(-) create mode 100644 doc/Test.png diff --git a/.gitignore b/.gitignore index 6ece8bc..4cb81f4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /venv/ /controlpi_readjson.egg-info/ +__pycache__/ diff --git a/conf.json b/conf.json index 559c702..d8d6c1d 100644 --- a/conf.json +++ b/conf.json @@ -1,16 +1,10 @@ { - "Debug": { - "plugin": "WSServer", - "web": { - "/": { - "module": "controlpi_plugins.wsserver", - "location": "Debug" - } - } - }, "Log": { "plugin": "Log", "filter": [{}] }, - <...> + "SerialTest": { + "plugin": "ReadJSON", + "device": "/tmp/serialout" + } } diff --git a/controlpi_plugins/readjson.py b/controlpi_plugins/readjson.py index 72284c9..e8cbf0d 100644 --- a/controlpi_plugins/readjson.py +++ b/controlpi_plugins/readjson.py @@ -1,41 +1,58 @@ -"""ControlPi Plugin for .""" +"""ControlPi Plugin for Reading JSON from a Serial Device.""" import asyncio +import json +import serial # type: ignore +import serial_asyncio # type: ignore from controlpi import BasePlugin, Message, MessageTemplate from controlpi.baseplugin import JSONSchema -class Example(BasePlugin): - """ControlPi plugin for .""" +class ReadJSON(BasePlugin): + """ControlPi plugin for reading JSON from a serial device.""" CONF_SCHEMA: JSONSchema = {'properties': - {'init': {'type': 'boolean', - 'default': False}}, - 'required': []} + {'device': {'type': 'string'}, + 'baudrate': {'type': 'integer', + 'enum': [2400, 4800, 9600, + 19200, 38400, 57600, + 115200], + 'default': 115200}, + 'parity': {'type': 'string', + 'enum': ['even', 'odd', 'none'], + 'default': 'none'}, + 'stopbits': {'type': 'integer', + 'minimum': 1, + 'maximum': 2, + 'default': 1}}, + 'required': ['device']} def process_conf(self) -> None: - """Register bus client.""" - self._state = self.conf['init'] - self.bus.register(self.name, 'Example', - [MessageTemplate({'event': - {'const': 'changed'}, - 'state': - {'type': 'boolean'}}), - MessageTemplate({'state': - {'type': 'boolean'}})], - [([MessageTemplate({'target': - {'const': self.name}, - 'command': - {'const': 'get state'}})], - self._get_state)]) - - async def _get_state(self, message) -> None: - await self.bus.send(Message(self.name, {'state': self._state})) + """Process configuration and register bus client.""" + # Translate string in configuration to constant from serial module: + if self.conf['parity'] == 'even': + self._parity = serial.PARITY_EVEN + elif self.conf['parity'] == 'odd': + self._parity = serial.PARITY_ODD + elif self.conf['parity'] == 'none': + self._parity = serial.PARITY_NONE + # Register message bus client: + # Can send arbitrary messages, receives nothing. + self.bus.register(self.name, 'ReadJSON', [MessageTemplate()], []) async def run(self) -> None: - """Run main loop of the plugin.""" + """Run main loop of the plugin reading the serial device.""" + reader, writer = await serial_asyncio.open_serial_connection( + url=self.conf['device'], baudrate=self.conf['baudrate'], + parity=self._parity, stopbits=self.conf['stopbits']) while True: - self._state = not self._state - await self.bus.send(Message(self.name, {'event': 'changed', - 'state': self._state})) - await asyncio.sleep(10) + line = await reader.readline() + message = None + try: + message = json.loads(line.decode()) + except UnicodeDecodeError: + pass + except json.decoder.JSONDecodeError: + pass + if message and isinstance(message, dict): + await self.bus.send(Message(self.name, message)) diff --git a/doc/Test.png b/doc/Test.png new file mode 100644 index 0000000000000000000000000000000000000000..b543de65c4dd286a1d11f071c8c2eee89a946daa GIT binary patch literal 84462 zcmbSzRX`luwk_@i65QQ_yF-xR8r-FEch>~h;O_437J|FGySp^b>+Ex~@BMi1=k-TJ zRZ(kA9c#`}s|Zz)6GukCMF0Z>Lza{f{RRdG#%28NS84mRE zf-?#M9pgBCRd-UdHF0t^a4-flwXwA}rgsE57#rI-n%O#CKz0d$ff0jAiV7*arJt_3 zI-#3p9=_VDP&qe|4r>sHrn5psM8b0{_H$$!oYwH)FV@w0nsTHsWh{73w7FhnIGVbe zoEN$-IG$gPE~Cx&E)EfV*+Pj=NQjAz{l0M0x92dmxEL~VAOc4c zfGYgYR|J0An3%FMdQMKxq7}#I&z~ivrFT+HGf7xk(Nt6vRWQCP^1PimwA^OK3Zxcp z0iWIX64bby4pE1OhSCLnGaDN@ApC#LUAI<7yJQ6ZcThNzbLy~MZP{~mI!r4LyqQAT zy!Q6=^mP18?|Th8%#j9B1xw2^AHcTw4BM&=XV=RfX+b@43a%GH1kt@g#5p``$F#22}vdQLESN~jI)|7nvUy2!= zot@3j&wo=_mtex)#p-(Kn=5LbtsH1>rTXpzY}=TcpBK~BC1gmFCcOFd?{wI(PC5g7 z4lzkd!3!rKRdt1C*hV?W!9bSTp3D(x)@I-%oG=@p|7$-u5}3iAD+N_mF%c2SGPNo( zb2GC^c3CoPq+D~{_Z#0gc{bUd%dMV{@t3PdullAYJsmg?E}F3KLq@Hw*)jh$SP1Wo z8%}ss5?9}uydrucoyPYitMg>=*}H?`1lstdBqb%K835UwGeOfzTKkAAFlYr4aj5mDY zgo1=*>*;Iu&Gog14shV$#(*US4jGwXOQ8xL8M)7hW$Wfqj2`B1e36;9M|>TSPTwBi zy?LyZ2b-IppPrnY1Z>^kyQIq-{0AkyuDxVEWy~>+3$ED zC1%(_k@M$<@IGNCZ2bT04FJH-9jjlvu5A@OvChIkukg39T%_mE$Ny>)^mpvIfgPc< zCvi2%m>|->GsD?GPddLYBN6|VUKq~a^V>7y|NH?-KP&6tj^01R^+>@}IM2(lpk>Sw zt@NdMSl5$%5)N5OU9vKn%KbW;$)6Sw00mZBS~@r~vU50ylK?IUVoas1PUi-g2Kn9w7n zx3^b7FYo~PTvA@Xn-?vRTUu%%0r(Snz3Qf>-K@R?O+_i5^dG6+l6+rY6<5h_brNu6 zi_OCSkdkFEpI~%e7b{ckM82Mc_^Etq$sT5+0ns zL>k<`o@gXyhzUDklavyv%?auH(nL3lbJTM2XCB&7am>jpJ!(YlHN~=-5-!2Z*)7;z zO}eaas02vE%9zuw*>T=j-`O!|$q#RFo?my!ObGUSDG|VTS^)l zb2APQ^vh8A48MgyaaR@+Z}5|8@CpLgv>-Cl(3F!*Vuk04 z_NAE!BKFwZBMtK4L#SnKH!qTaev{hWsiG;o_dp+D`T!r|ua|sZf^_C^W5TnxsM3msZFrSbbbF#WxTb^2SnpA{>tPnhD)SFM=J4iJNiBJ{jLVyvlvb5kdE-V4t6jsMMA9k zcf$OZpd2WxBb3mM>qWqfkcp?Z`pG97tygS3$gQZ8!5Q>AM+IMJ1Y=TDd5**N;s3y# zlc|&x*%HLhes94?*z=QnUVaCNn9mEJzAX66*vmWisOhu<5enFGZ-g<*IcUws;`Pjh zN217j4a5W2(Z1-^n@EkMPSqOP2XONWYPHVFlq^q3If{XilKXhu_3 zQ;SPam$A3E&)SQPiz}(DB+M!Hpb8~mjvejm>w7s?>)QSkI=;_MzTqopgoy;s6IL#- zI=F3rVCt!$xESnB>iRybNVn~tcFi%x1epnEP2Epl0Tx|Z1)3Q9Q09>uK}?CgyHcf$ zR}hWm)u*%LGorW_4Xhx~ps^mQG*N4KC?-?8B1q+?)7zsN5PY_8Kuuonjc~hP@4|hh z5Z!34dYrj~QwOs92ZcTMVd?D#V(Ajo(_2e$dgWCbMe{*`B1JgFA5K+G0V7?!bt$xf zCYnFE)NH2vG~zdoS+4u6-b}$KT!Kg)fBi@MP64~`s?IDaz^YRTFz`d3)I!J)q-56A z6xS}yBmvkT#G?s~-(DWeH5qj-JC5+ZL+lJV@!)b(W@JW^E&GG*;?V-q4Vr4G|AX_x$QefbmKeg%J|4i zHwZq9p&`I^z3)^qJ&tKWE6d>6SVt?hlav&~ND?CzNWki9CXlECE~kskrB~}8EWsj! zp(f0_&dNB$azW6&nl}G(^z;nEPj0V=%gGKHABjd5FhI)|0?71+NYiWSz89P?oi_Ys zSTdB{%b{e8V$#OkvO=r~{)$<$JMa6fy3dQh`}bxfv2T!2eLtE6%rjSu80m=a=F~E$+enn_Bx->$*8Dc z^_Ankum}+P0Jwz;PIwr*UL2y~GxNlw9ZnZ(NW78TzbPu_xQ>A>*BVP#{Zntm{QRkJ zmiI$r$CNm$q_mWjg=PA(@o#k-ArFZY{-HMr8E-C>#MTX8Hza&#NHL z3-;&upObLR?d0I({~p<=#XKfWd374lHL$pM!?k7r=sRMY+Xo+ z|DOG0ZTVQR|0(#J$5OgpuBF-jl?r6?};4JxHtCRGie)~*Id-sL-3lp}{NFsgn z+WAzJLxIzrZ4|xlE`Oy$$4d^vzYxfA7OaHS(wco`e>oMzH9r*~R+ceZ z#Tdy02E=>qM!bNES0oX>zu8L&svugfOxMu9l;+SwrGAL zF7*FEAOVgWOra=+q@wn!oQlYXlihSNl6#hxtOT!^w>yMNQ#iW?AE!MM?tq(mP~X&6 zP+Q|_GCqfCr~k^bi6SP`&MV~e<0gq`pP;NG5y4S_dp(y%{HC{+*Z#7c#nTk^;h{q) zLLN?0GWC?WA3wiyb)j|gb?L*&&n}!Gq2q;FZa?JD1cScWrjlH5hw^NWzP~n!55SReyN4Au zRfnl2!1g>d#oqq-AH_rLB@}JO%~v1lx~stRc_e&@KhO$U=q*o7$-jyUbj2E{iAb(s z%T5KRe)MH4d;0?I+cgr+OY5KYZVq*yX4qJ3R)9u@i`AHL=?jESd60ndZCMr@N1)2m zbD3IKQDu&4;S0k-L-(Q>^GaFpSwjl+0q!~0on^IksEncihGfjIS^r3UQH^H{to1&V z2G%_bGSuE2qo98yk~y%QUkZs}$w8{uC6f{wQ<=&3}EdDcyMaR3*)+yMLT# z$j;_%2j$$2ARO0|bB2J-_)2?6!LxsK5~{;WBrb(SnfCp>G>_hwv4LoJdVdbQV1q^K ziIT;q7RFNTJ0)Fk{5vBo*y}A3&C>+HOdZbiT#bCJgS)O2t8=VC?}9AZixK`L&iwuQ z>##seM9}x#%z-u3;a(zoQo18cuLO+@=hEDxJTJPDq@9r2OT9(eyA!?577s7<+5Es> zzUtKKayJaF;E!rYLE&;I7cWc;( z^IrTdads|Lv@%(^XU~g`Y~{b6f@7{k763>8BxKYI(XDzc_dGdeE}$s?oF`YV5yK_R zULRoxGq`a)fRgM%tB*{=uLxcdi5Lj(l)c-I1>{#vFCpnIVW`xWtuM}JO#QViiBJhi z*g4!L5IB9&X``R^X($#7x}q>}6_HcmbQ;*nhCJI#o$2}c`ywjZ)YNBLEIfDHq$aW< zj%<%eVv58;@rCWGVv6hngR~nkNq{+mj}Y8gt~ga8t9Tji}W45R0=x zlhis)RNTF8$9*QBq$u}ch~Ex`WHbt2uXwSh6rUJpG-XCQJCa3a;L@`Ehx9^EF26$X z9PY7a)G2+hKRCBVOoRZ#7GdlS{EFvF2|22n z%`*Q2dpi#U@uli!p}Zu3yfiyui^d9^ZFwB)V>{IcB?}%*cA_j3ecrz?-rpcZ?t^`4c@DzNiGS;$Z?I_#B$> zgUG}F1QplfH@9}4Uf<|yf`MqZqq#3y!4Js@jWKfal@KK%;G=oDWl{G`%OgqU!ej-xQTAc5d2qchjPE zHjxI<4aHiD4W7F{)5R6(D=|(N9=#@+bIHE86_MEU-?!i-d-btddmaR_`>}Zq2;^Xb zAvSuxM}#mzcf3)nTo6(f_X4u8qg0clgRQnRm;Kf{vPw5F^);{In2&~$l`bLN1bsro zRw?5HFsI+{g@h~T*8;rvG}GlK5gHY*rwNxK{R{^_S#!KK$CIJgNrJCMWGXHNiLAhgiuwGQ;z z*VC6KVV4ix0&|OYsxm6wD^ll*?_)n)A)lwEEFL#}HNv@P`*R0kAIGQNGEwSpP;5Of zS^Yfjh)zLv?*IobAvihRN}FDJs2Vni145N^`oG}VHknI%kgeZftP%FiOtOQ~CZ^zp zcKMRrOPt&(spIDqhfT3S<``zaLk*#r7+j-&yUDVhUe5nPgYSq9HO?md!iWFSy1CK& zi=z*(vJA1)zBea+me}$z4+CyTV?0NbTu5Erx%E~+z9@uHyLhwg=}f&A}8V zff0Kj^HXw;^wElRni?DYMh3R3G@DIz*{(D`Y%8Ovi52LI9WA`ASmKKfLwWclcx1T##ps*W zKv9AIZg!TT6!OwZh>6H)&;FcWOx;1(?kHU}F(XA>{9`C|`KR<85nFsoG+L40xkbkt za~rd;$}zX*o$YQbtr=?p3$GUjE!lp}Pq8p9!JX=hMz@Xh|5msW#oZHN7M6u2qErSB z*vyVr=t<9^$wZMVQ&(8*D5rNzn)I-Go-sdueCW@<=aBmByq~|6%(FB)t{Hi2?vjq+ zHoRPXBv1(|a5gZ;PO&dBIBRx9pR;uxD;G1$wT-^QKXKJ>tlSumdY?+yXh=rSP%|P< z#+WE1|NJN%0MRPn!#U}3XG%R0$O1kP?-oCjKz*cC!;5jbuwy$7qgq&{)7uMB!LU0} z1ny%s|HvLsmuqLKW>GUIu(jwhDh&QQtGMkT;bB8hl8C8o`;xefxW?k)LFp< zRN9Td%$^}7xZnZ5umG_pZL9Sq>rjeCF?9;7Jr_Eh)4YytPDL(GZC*8_y5HTR z!152j<6pRd+>XMz$*Y`>h(@W%>UwhgxE}N3J5&~W#JJqNgoI6^W9?zodZMZmM1kWc z@#+u}=dbvzVMobciPyMDk>@pkqfcNW*!L>*U zAB)b{niP95sbi?O6~vEFKLlJlw1>9(U82q%9WPu(Qfj#~-aECaSeCwjy0o|JdJfu+ zkUD;mIM2-AtZjX~6@3N+&MC4u2%*=Bbn7klc89GOYTedUDNv!jJL8*of<;Dxx0j~$ zLb0l{F%UW`R)Hhs>yk4Fe)Qj@Jc5hh4KwrUiejFE95X5hI`Q3z7n)=%s{lF;%FN zH&lSc>m7PK8n@U{CDAc&?+m}R(0;}L410XJXueei=b^+$dBw1wq1O)=hK`?Q&u_0r z;#Zg38L66DRhJ&=bd-5Gr%O-smFmBCp&Oc__Wzs;#B!pnh7{EGAWyzkocP1PVE@C~~f+A%ZeHgK5zFpQpm~fSUr%t9*rBl5@?bK{7a{DFF zE#^?`aTY_EmJ(pZ3dJtWYq{){AGWc$;*T6;pQ%*ItBxuBk#vR6C-Xer7OLZzTuWf<@VNS+ zJcjbS>{&6|?@7Ei9Xt;L*$aYhFQBHdtc_QZtI|xzIr}rUZ%sxr>^UVJE#yG}n18CF zCgL#<5uy^4ti)pFb_T*o_@FP>A%y3U;#IexJSU z&*b`#ohuruUq9^7MV?{jnzO?$KJ6>w!o(rrgt?s?IWPoe8TRTjc)Au%t9@wZG1XdaV<_#YZ!n`0pcY&wmG&kJ2X%{IR0Z&3{bG?B4ePT%Xp zcb?ddFCjf6{yMyhvYd2?Mrp%8HuSy_U*O^H-3>R1MN%CMnGV)q+E?bD-7h6!6Qdmg z-~6adn_~17cm>uq3;N@3c7g7lT)Wyvvo*~@Kep3gdj()SS=A6NQr*Zw6Xb}3GYrzG;bag zFd8|^wT{4m{CJx_bYVkE7RP(?+;V24v5c|V2zC6Odt|Y-m^1RWv+}^nFpBLCSiI5A9E+?{63HLkk7nKH(>C9t?U9K^7O- zZQdLd)h{JPR}b6CCt1EAN3Uw}k)0-vFSyy@O-DzPO-JicysAfogv9$a{SLA`HgrcP z^eFR@ZfA!9%*PD)tYQoxlWf`E=83IczE8v&5M@CD| zb@|OP>vZf&bMN(UQ9e36d@G&MQKx~UNG-kNtj=b61V{kt%osjBKt0GdvQIUZ{W4us z=A*r=ViQTAwVgTfHWthwmfQ97M=3J*6?rrtdAZU{O zli}(c6x3W|*Yx(4igak>YBw1YCx(gVOSUa5vo8mA@3GjlIWsEm1pn>@sL-}AWMVXh zXJy@nZ?bU19j4)GPlHU-oC4RH<~!G9iHu*ANLMAW1#n|U?>S^!@5cD*lo))PkLzqB6dMq|1zxi(e8kezOsn zpx-~vVRqBGb-W!+<;U@KXK0g4*qY8U&|?^i<6yQl;VZgVK|Vrm!>x-SAkq_#KroBM z_dQ^DC~Ljw7JcfNxYB>Xxu2zCqT3+Et#n(fsN(gymITgbmd1_blYv zr;`|P-nZ^N;#q=Ou1jr>Eh3UE?3|TyNKIId3#N|L8T_q`*dQ*r)kBu>5UI^8wha#O zF6?$$+-R72e`J}g!e!I8&I^X5eO2$uCprng1x!cZm2TXxPH_;ztxa4A@U7VMe^#V> zxJMgpzGkR8s}jRI^8E97As4TXW=Fv1b^-i*H}U)Yol@WTxm+-WFbJOPhNf>i%1oOC z>MW{u8{5vlC9Pm-*~8FvPM@@)ds&GjWf-O zYK4j95Yb~Rn_tYyZ;mq(pK2RYeu0D~XEbd*5#e+xM<0sJN&?ujlH&Ok9HMBYl3ZuF zF20514>fmvBGg+qZl@(09f?YDMX}nK;I?PhzvJ7#k3~CGJ>QL@nbi8sI0!SIZ+5&I zyE#Y9y#|5%@jH^#r6(;pw%#x6Pnl(92W`?ngaBzTOm41?-MT!Yo5B+>55qL_(~I+) zSx*J3GVnN-0DRadtjG;LmD3%%ykg@?{yuZrTV{CPF+SxB)Sy5L{wI(|H(xD$#cp+# zL2%csJHhIAiz&sp@KGiNa39n*$&PZ*&b=s~we3}43bs*Cv-taWH8d^_V_Cr*Y_ksA zoD<`xv3Q)&2L>+*8zFY^?8jb)DESw{5tG6gEsq$NUoj1S8e0jwovleX8Ll1`6$8bc zm~55du#0QfGZl})T&!o3CWT^oi6725172AQn7lQi?%a8~G^hPO?4EIt=ZBV6M_hTE zM;>swmI%52rea{1 zBhK!>gs5aLaR2$4fz8#ckRrN+s?N=0-pDX|L9qhIyo|uf6&x0*moEjG8m+_y)XJv_ z$cyL5#%p0cN`)bY7dyE61eb`RVt_}w-z^kw9orlq^CidT z!YO6zs)dF{3Rw>qwMX;1_GJ!^_8}&xeiBJu`z{F{Hx|$}&r%&oimVut48)eNlsSF4 zmjgQ7=WSd$ONw`(i<2uhg55dGs@Xz0%M&=;Wb`t3FixhWnRR+_=1)y8hQ$i_!$J2% z8$ea2=lyC(DN!Qj_AU<%IV~Y?L3HaHeTeWssaI2)o4ldd+&It~P|}bb34_`eQLZ0d zk{NT*?{o`8(1Wm7uIZXz{2m=fme{O-7D}77#i+V|DXoY20s5D^7WAZ6s@YL#?7Cc< z{D9$+Sy?M6xfi6oJIa!}e?(P6&RYs1GfS= zWJWIQ>kDk9Z1rs_#VhgTB#Fah;Vq9}ZMT4FXfGlp&h{rnLY@5q1;NuwBY}!mXrs4* z*Wuz3UGy$6qt1I;7;QNa5_6`;JkNpj)2G}N(OTEZSc_N2i@UreVDwQ0h6hyG`f z%i3#LkU;TsQp_q=cJV^Tkcc9z{Y$;Yct(}!_-sjUX8T}oNe!FsqU0X2US$p}B)?#h z?Pj|rGKTV_=}%OwDDJOR@1hvy=J2BRy@0AViG;11bclNU^PZ%~YX>3>X0C5@&aa8O z%$8~Q+5X~G?QY(vTW~q_wkWn(km@N`O+snGQywj2k&tPb4UQB*e!0Mnk-|BkL%}`T zc!QJIBq&1&GZgYt8ko>FT7cB;_K)#e(^rS%&Uvt83vz;2w;O*lLTBaVY?;}x_fJOj zfE^8Zki0G`#Q4ZO)nu-%GR1F6CLw|rOUQX?h(Rf*YpCVYQaea9!p{iD5~*1->2pD{ zTg#3QVo+eFvKein$>y&&gf>y?TqoB|OaKQ5X{f%bG%n z8(C(tAzKIT5iSm#{dQ9OGX^*K$ibL#;}@=3nHY960}{UgYI$C%7{Edp)J8StRTgr^ zZli04Ti9p@)W17^B*%uTTjG0Zs?#J$3M*~de*fMxw6R^;;8^msNsip@&(C8pqW&v= zkQVT497qC&2 zQ5`BFXVm4H*G1F}Mv!9+iDwCYOBW?{?y)EM>H=ZaCdm6!d$;cpL)6$)tK#*1A=jt^ ztIH|qvRFfV5AD*&sbh^Uqc%9Hn&rRm~%M zwuUb<{p7i4m@<@TKOP;L<+~lmGi)h+<{_r>KU0&C(0@&Rd03JhNQorJu!c`wBcgKvSM5%fE_PB5GPgQQ?)_mc58Im* zRh9+=j_N|nsdMI)#6oQm>SowVX>EM0t*frg5_SpNga=QZ%d@hCtVFS6YKDx)HHKcL zXDWTdS8TP|fB$mMdDbj0t0-tJ5_FDih6E!Flf&AU)$Lt#{FaQ0BYq!-A%j@5FXPj2 z)v7lqXYEWje|sbojWTd#r_YLVgZf#0Ae0fPL{Jyu9KOvAs6Y4n)HnK7<6(kmM_4bq z7D+K{@}gnJmQU?tq0IWk{ERdL# zqsij)W^3Vpc3yBY5%Ic2fF8ORnm21_NFN_r$7hY@x$TR_PWRX+%LW8BDWqhLRFZjn ztvI4(d}$M&eZjC&#|-Mp-La-F+6*VaFY9>Pv{P2l8b4=oYOV6m%XUxntOm zHq(@2j$a5$Tpxe+dVXxHDek#C9wSbG72LACu{eJ`cT9$`X47FPY~~KCCRrV^JEc`m z6c-vK<>1E=3F(U2?#Ze?X+L?gEkYs?VN4pw*hyoH2}AsP%V(+6ZPJi?XkFj5<6fSjc#_4X%>*DmSOpo2DCGeVUQ|Dig;j$hZv=M;+)s zclrewlGg?m5hPtKn1?Xn&$DU=4%Ad1gU={uQ)SCFF!AAtAwoc=8JOfnKXo zLC?3xOMQin@JW})RPQmuHpn@u65IQqrt!S#bhjxBooUcmu1ygx?T$&F-uY&UsB80E zbk#sL>uZi_%YaMB!Un(4PVt04q2*OX{!00|6!{H@V0U_J^ipe^72L9;9+EaM8SX>| z2;pn6CL~(Nju~E)|8V9=2q-8QR|oX;^lI-m`joDyT@!-s6QS7j?8bXM0W6?8{Om>HcysLm6Y7N&UKXC7qn_3gVK>>%!9 z9yMJ-PVn{bu~76w4K&9Q zFlFROSwy=pO7m_{h3*Mx`{q`-P7A$}0UaLM0j9NdrkEvHSG{73W`fToRbDy{Jse20 z-XZq|i*YHgY9H!Yx8WL~u4WT{`s!c!0okjQG1B8Mc6foZ{kkvE?~hmRUXaTR*hW%& znWjXf*OwRW?-51O-+9ik1h$&8^jhE2(`uJ4P4Naf)?Pw?6)?K(?cCHOFEv=zM~I!} zRJ=Udp(A#_Le0Q9YxA67(Cv@BKZQ8jfFi4u6Pz$;{dOFA!*Qk zA7I)>U=rhJUhlL!FOg-}Kg!hHE}BN=YK0D5HaOB=A?Xk?{1Y?1>XSD}#1!%IlFScM za@YAxE{^(;V644WGE4j6BAbUKPH2o{Z&Hf_D2Q@!NDyjkYTv2wR&S(L5VB zUa9QR?YKaEYnPpw(_VSK;p@mWrmkn6=Q5AZF&867Ba=Z2m&_IpyF*UG(R@1JpX_mI zTrW#$>18OJGCIA>>?qaaK-`OihTG&{&E|SN>Q$K&u^6Dv_&Zr28y#q`BtQC5*SSbN zBSi$x2_ZSv_NO+1x3F(Xp^N6UEv`E-5VqDkqCc(-R=*gkl9|?;gvJ%ZAh%sDudaVD z*zJ7e5l^rYL`>-|g+17!{hWgwbgs#vZbE&uue?7Rvj02gNlQxgaO~0R=?ebXi8U&j z4s)X+9hURB{c#+A*kQxugc%xIAuj3qaG09G>j~#^j3*n-j&u5OrKhGuOTFF;A#jCp za~|B06j4n^gl4fj2b|Iu>@v~e_GDVCc<$HTtZ7u?73###yRH8uXaqPvmEWz0oY!@? zvtVgyQ|#?3E~T-kLw+MT0jx$H6@YQVc%g(vn}_Xmgu;EA(qt^+V7Bu!o5%{hg8M#k z!rHL%LaIcj0}+j+0kw)OCzY{`{iw#zsFTqZubs1}9DlcXh3)NhC@G*rd%ZvL=4Y<2 zTQBCLk&(g$!M4tx%L{gMWmq0P?)PWV@$hu1D}b=l_f}Wh3QYp8as=?Iv_`zos~4T+ zG%_;GN}W_mbr=L2?M;Mh;@b1B$=v)=N-bhQcE4m<=21OXl#MO<7B&E4C`|NZE_d75Uj_iF|aKUGFe|QGQuCqIu z-l05<%z+6>b$SG%jC(Nmi%aWR0|()<+QOReZ69va#x*{QIMbt4N3OLJtMnBFj3vun zhw8*bKfR0E-exBy_KV@Nn^_g_Sc_iI|5v^BkY z$ejrc#SbLbuyrI?F+Qg-nNm2OCOtfTu@}!BBW5?Di5Bb(z{Z%w<$jYxiS`4r1CVoo zEcoQyTs~$|l!u@J50}ja;l1=Muws$bkDBb=7XTI^q#}fBh z?^|(~Bxjvn1OrFHy`#WLua|+0_;t58kBEWZ{5#*@L6bN5SL96m-1uqdxu>%>E`(Kw zT;pO@8UBPlggZE`0^0w9{+eHxxL?AS!c^e59o%_sJY<>4drR03)V7aW5kIIZDORwu z3J?~3`)Y~eI>2dtP`D8s%jAeFSsI>ep%!g?nu3_J*FKs#)387R{}f%65Oz&DJEURs zHSyaddT(a3tXOmKNU()R`t-(5X9Rwh(5&Soj1z-0<)~-CKvIz7Rouq)5+~#frk08# z1{_SAw;akRxX%Ft{hx#}76=Cq0eV4z#-H_01gx6(H{)M9<4lm~Rv8i_Fjkwm!oss` z0iFd|agGp@<{v5}oiRucRwsUhm#1$$3S_A~geJFtZ?NPvxb7SupB{%DFaQ7MA5mTb zbQW~1CX|~Di}L0~ao=E^>C1k!t=oR}95NsOT5c*gZ!pY&L_Ri+mGOlbE(}8nC3^gh zQo%c7&9v6ttxtHIle5mu0DbRSuwatETFTNnc=2gFr_2)UF8{re$BrKep!}4?|7+O_ zOI*M^1Cic^a<3flHGjCFK3DkvO*78tG+-*Kw?uqh8rn@va3SYTV5+S}yYzAlxh9Nt z^}Z`B+?6rxT<*8b;>hVAHQmX>)7bIJIKx^!g!vN&B4n>G)%Sl92J8nsF)UirI9bjS z5)rzy55Gk%pviw>CdhI4)yq-^%2aSwtY86F@xv(sKN6hhq8t^w3H-+6_$Nadga-?* z*Co&0do~A!f2pTqpAB2;Okx#S!CfV1NXx7zrTOFR;|lb%N53k@JEoJ|CT|>W0mzDl z3hdby?EFTA%GqPOO!lnZSh9FeSy52qacic4d%B2GNdXr`y#Mnyp?s*+bBf>x zl4dt1W)S_Pgu4cPg}|?~+>%1i7_-7riC)(&5eLLlc(5@l7kjU5pgIR@{O9RVhzVI@qIdls$1)LngX>=QgTT zV4ezRw}CI#x;$J}`YlB>GnqA`_&b_NwGf7u6XwW1Wgc7Bw$#WMhpTlQNRnWX*3Q`;XRJ!e0`%XX+6nOKL3^vN@9|BidsVb`FeGL5?|&<&Mt2N% zB90N-gZ{ z87)p>@$^~M_>t@Gh!>q5%AR~|s}cjnzUqRYv)%1=yGQJvUHK08^J^AjWNVL>`_(0} zYc{9D@koYfh29X^1S6DeUd89=nLv8Fs3}`)RJ;{6TV~pEt8?89;iUyzMK5WzFHWm{ zkLY81J*`wkrcVh{78ajr80d0`*W3wb;c`i{nXBHGcXV6RT6s_k^QnKM7cZ#f8Uhs3 zu4yg+3Yw7x`=*=9U>|dJl2Yj|aLC@PZ&e31rZB5HV zPzUT5pw!xX;K2$$M7;FdaJCCEf;eF=VY88yo|Qf@Rmv6X$^EUTq?Oy6jIx!RN#zUh zE6AlGk9Z*!X(%^UTmrIMt1J7ne!X(Lp`nB;?wJ}_g{0Naw#Ba5;wSpteaY60Mz*+ z^_Pnk#o%Iwp5+it-t8vkrYdOkpuDXh-P^A9519aXXa8TUB2U}^D)dwOeU2!TXHO3u zYlbnf5;C5%>0|HEEwWZ}8IssZ+-G1miu6L}#C+d%%i1)|#5|`r{rS==~hp z4&C5atGq|LEMJE(580lL{oJ`7qT5k|tR`exlbOLKE|ffN3EoI%k!F>YeH zC|LhgV1`h|9dBYaajn}1gvt9R@6WtkO1?c6Hq}w3xRHYa0c9HyfG{!|xtxa9pfYK| zZBxd&OBHo;g=#C~%ztUEbgrcy0JPXPbD)0H=WJIZ(WC4ih7I~h9OH+MdLr6YS|+#J zPT#EMeuJKt;OT;wQt^OSg{#W*dZ=?KDJff2DzDyJ-0K33iTCyUgx1~fR2ps8mah)( zfLz)*2r&*HUCihGzI5jj?fvC|lh&loxN4^YjZ< zmz1!U$!Si6UF;8%`+3Y-WG<05Rv*$$K*4`l(2|q+6eOl;L-NR)`(#lDIjJUC z_#a|2GB}$9)8~g<6%||hBsx#3Y4d*>rWj(p)2ab1`&f{jK)XB-q2OsUgtem;@Z;FoNkbDIF695Y3 z;nHuVrQUje0e-Rdh*IE>K#lN*fcg{nH(q|v3t#?;x&^_mSopI8ZlBJ_&fpXO<66|Z z0a+ygStS2EZmON99|M+bWQCLZd4K_GT*k!pqtequ?#bW10Frn_(#pyZIIMM&wd{%; zGid#46MKm40b|5tI)>SA$@;Cn>}V&b`@ zjUB()WXWWjq-qk7%S({0f?37LXtzcjDZYLB@`o(l-YtoUhU>OzxW1K4R4(YM_Cy#F7_m2e)Qsu%+IhJxhF++!Tw5l_r^zHj*!ahrN}5 zz(8DQOS!5hyET*+FtPGWDV#D69ZSUP8;r({+V$wPB#>N)XGEHslPa#ugYs(pQzhG~ z+Clc&aYkRRse;1KuZC9mLo;eWv!M5|D%V!(tbaKUY;)k#W$HI>fnH%JCC&4DuZp+c zNlwj>FiRFXFH9Obd;Jkwc1Y&a)&{{isnHrOf6v!_+-~Y_9T*wa?;z*fn8eB-2T-RO zIOyM#)OUGvy3QkmV{WydQ?uVX(ZO$X1Ip6oq_ogU6z@MomHM=;q2NX@311y#ZL8Nr zwBYF$5|3uD?CtI^W#DtEu011PW;;XMchJF4n2gbS>w5FqAXgdrSG{pvSn&#HO#E(z ztzj5dh&|Y^V-on(RutKKtz;$W6np*L_Krkq#*8xDJ7fH_+6)>msSg#$aC%)qawv(H zYl&B^FaPRPu8~)@#;Xr=J*0MOPJ3*xN^na-BMalCbaykDXy@~w=}_T92=dLgP4V{i z)bz^ptXfYfBMNGR2js?cjij0>@10sWb-C2OKUQ)Iy*8gyKtzLk`|ZwLz#@bPzPuqC%c_XJ+VcV`AIZ4)!6Z<=l~iRR%U1ly@Ws!(;D?;*}{7lpFZdT-JW;CgF{ z>psueax=p<7Gs;%g-OR`D@%LoBdH6%0c$ftN*Xi;W1+pb41j6v7aStD#9FH<%|>)l z!wZ+0)AHQ<>b>=yiW3-$0>Z+Hs9cYCmDF>~-SYY^uywq^_<)0&$F|S_SI%!9R=l3) zwydyxuI1J}LObv#cnp7h&4Pf<+qDd6tZ&@D^LP||kM7EAqy1I%u%+KyXE$Ow>gqE* z-@$pw>Uy@Lku;bsocwkwud&h*r{`n8cFmOV(Ukn>^R(q?xm&cgxDB#73dt3qz5$T9 zUBh};l65UJXyen;A$ryx0{TdR83JB?b=E;|FFx0inOaaP#(Z?^(B1w&yuEc)9nTsq zNCH8E1xS$K4#C|u1PPV|g1ftGummT#J0!t_b8vTecXvDJIry0-_m}(bee>R|nYCu7 z7k|`gx~r?ItG@nf*RF3H7~1hm=|80tj5+?^aoB9|{=^*ky%^-ORd+i4N^*wHweh(`w?~49h07{?$#FdMmYfude6#~pNh5dA$`@yaPtEof&PmvCHX`j55JS!5!9mx=%zfz+(T&i4t zlXtZ%rm$jn=}w1CZV!2{!ZJ)w-7P8g_SrimsKc*crUVRIkG!XhEzl>Kut=IX=J_<9 zTDvV-kCG1&t&*TVqo#C`Pi*1A)BD@#zPHp0OD%+pDbQz~z zFR66PnyYqKolLp=alPF07=a;!ZT8`@NA>bVz!0LahWracoDwqiVW)^1LRdzOYJC+u zJR4UX0z?hx7q7UDUyYOwWgo9%EHfV%-QCfux9kxJf*VKnBqtpB0`o$~ITHEC4u4JH ziS-xdFs@V*^pMur=Xd-3reZf`b8IgKHS8XT-~2dT)oVZ7QR68NG0be~2>62e5$9a3 zpk7m0je$x-djzVs(g=oKuEK~V*K4TJ*-9t}OCGuww;$A7jC10j3Ka2^r{4T(xzLz>k;^)iQ za7Is(h!L`VjTMhH=LkWxrr{*wmF}J#8cdIEpM&SRVvOJTS-*=s<&{uS42osDH>b(& z(VOHHN{TC|mJVm^GZ~cGlL?L< zUG2A3I`^!E%no`YdSR5d-&S5utsX3!nroU-MgK(1aKR&n76YHA00q5%1f=*|42R}@ z2oJcJ79%R{{<)(GwIk%mRQ=Q7xs2Xl&Zv8W)v*U4U7DeFAZQB~;6fCt2?Jp+qy;h} zaMO5(%b9bippN<3PZU>v{h}!=Bg^EARSHJGT(il~ z-kjCJ(6#MCXdlNrlX#G$q3XhUWih_2))ya(#J8xVuu0T>*+JWPxK{^)(B4@weN8+o z^%;`dSt!qq#WmGl=?&H{`@UIXdD!TZrz%l4yag9oF13@BTj`rLcizj}6hxTOCNf4k zv7jIexJ<%kR(2H(?0(?lUJ8zFG*gW(;rn=ptGerhszvtKK2B% z9I|ttr-y2<8Inou)3t+SZE5EjE2x>brc}>mDxWk+qi8$vp4=?%hx#*F1Ix$^=$WIH4)D;#PU;=*a4F5ygoR zQsYI&dldO+Jk#m9V~}-Vz0Y6EDK5TuS#Qsfwx|f-Ubk2j8hO90@!LXvJ3IS@@#N?} ztHDo2b4q=mM*AQ%AE| z-OcX*c#q%{ci>84xd})cnxP+-S1>IIl^6YT$R7(g&ifOR~nC02lEBx9ykYD3s;9Rs1xgT zIJ?}3A{ncde@qQU*0(N%4^&DC%v4nc!I34)*Iy<{#3b-58w7$=9?(|QU-eu^uH@A> z;b2pQu%4WY?&hTlScP0Sp1l_iae?QzwLd<`)@cHXRh z$~F2_E;C(nCnu6m?Nca{nQ&8(lG1~}u_KLr+4^&BQ6m>-N5ewCt7&iMdijt*M~sp>#MHl-f^@Hq=jshe@1A?8`LJp*ObB* z9ER4;uTryn2`d)4WzY(&Y!os;6@;yFO7x0V%g~xxJb5Fnw=yGzjGmcLnzqc#w<|HY zul0ns?PO);MmZ*Gs>PTsLq)BMOCAike>tc%xjf}@X_DQebcSQIkH>X%9^>csgnl+z zD%zedws_B?o73%VDl!YuG5xyRZyGw9o2tB?$WkZ}y<;IS|F6Vls#Mc^|j}_gW zMqM|U6eTSuf$Rc*sP9sLAWl+%*V9VTmy!5ZZHt^4B0#EWH*9RVUwHn283Z2KKwwA5gG)Ci;``Va#$}(jU?0&<-nXgFs{%i% zD_|ng9s6SY=d!yi@9#aAb*JQ}j!?BY9NpQ^KFUjfbFMn}6rI5BHBumwyZJHF1n&QZWZk4b>`%VHiIk;!l=(kJ4VwOISPO*e! zkQlb;nh~Q{ggl6!_iSwEB@d)d2vR+>*te6XaSw{{&*w$qO=4SQjpmy53odC?*!+O{`?z+7kMU5W&@q{Ly_a%fO z;(!ohPqh(brNtSGqpCQ5dnoupyG^H5>eXm7vbZxk-u2Cq>|uB?Mf-017IzZlP*6@a zwQ5-e*RVP~v$HeFtvv&VB1Fl8mP$-`aMhYll2bQk>6LW;OmwrPIhY>x~HG#;85sX=@V^>)i=B z+pJft2HUKLzTuiZg(PlV4lT~=!E>t4{?KK9ubP=KEV1F(6_XG!9r%d(C*Nq0erag^ zne1e|?ynQMS0nekGP${YwX^f+CLG~IQ5l>hNXG)_NfK4E$mrj;`}d1&PMLY}oII0CBCmD0jHg6U^$@Rvq8gPZ1mbv3L61u$BnD@qRovmx#V=_`JF;e5p^L zuw`UI!Xl58iQ9*!923n)dJQk{P{KkLX-vDGn*`2$Qr7a=>0S}%i;&qAsfr2U$Yo_? z3YZLI+%EO{-qn{Lr`sR{)~c3#>UdVM*X$M}>)pVs7Mxf3y`tYH2Cv9yY*S+007p8t zJm&83Man?`u`n5ihU$x%fpMMZw9ITF+1Uuch!CrTd9h<-q~(GeW7|L#EMHI!7kzC{ z?@7HAKPP*ev=LV_m*ou7_~_u`OnmC=)#$z1QDy&mFW57}vjQdK{-BL(0I4;%u*xpq z(S3_!gE_kOtDrm{V*v94k!=ou$wlHTPs=6VQAe?Hq*7_(TnhEQ&=pE#nS83W! z8V8RfLI!oFjCW{g3w5h0gb6yO^s*{j>16P|NjB{Z9Ac?Y+ky#0GId_;?kVOL&QXHo z;dbz4@7V44*mI?>WptAMUk2_tvPV=PpOxIsXx7fTPbPo$QFV2_$cz)4zKa(GIbnN^ z><^z|_Yd`LmS)H_g8UiKp;LTj4PQ*lcL`p;G>XP2lsdb3wP`AL9bgHCSP`Bqme-;q zh0>b+0*LIreT4GSe2*Vv%hJsh_{kR3(kn>|jt| zEfg6RScv$r11dWfD?;Un+pN2042$eMHqR=#d%1v_o_+UlEaHc(G3dvB>O?@rsL|GK z%q9_-RLP_K>1+!_0TS_%%^Y~bQ3T)_ln3zqvU1{5b-X@M~R@%G}aRSuJx?EfCyhs*{u)2OB64+LcOiVr{)yyrzoBm#<;IO6E{J{!z3m*v?gJ> zcjF?j7S)Bv)O(T65m_{<5utT*o?EY%K7gA@@H#yXS0~$ep28rgHuvYNw!%<-NHh1zXcV5+|Nd zH&R9pqh@6S)3fN=h9ypcLOLd^I;h)0y_ifv&>ko&f7vHK_x3d(gEjA0s3bY{n!DA5 z4aM40cpS;XaK`Pz;FA$z%Y{)3!N-X*g<-%)RaMh3f+USPEG*4e6bgBc*@j=DutwUM zO4(Mf={2FtWMyJ6vTB*5#R6FG=Q1m*J!o6*)^Fh6+DQ^n{()Icx;(4|94w_hkV8nb ziitrlBhw2M@8e9xUCsxNs4aHhJ${Lwz92k+9h@a3BrIn#H6wca2S|-;+b1pI*bK z>+JsrEJq+9^z{**J9oGbh4sPk_gEjFEzzCtz5JBsPlf-~8C&$<>9qe$Z^K~|Og$o# znP*N3=o1%q_o2GwO-6Ao&#d+e8yk%TxjVAgt{T3e-@Rr3pFp|M{|4oDn0gO4lB!IE zWF2EdFt~Q<9v)$^9)UEr*-vzC_ta-6n+@nv_;?waNQ*j?38P`+R^%pn3uL^B{yl{X=$WB%jsQqK|bB1kul%w=Ib zO%UaTmg)c*YVg^y{Z4x5q~0kUdB`B6n%Hrr(|QMb{X&{@nn?S%*jJU8t~vi}fDZ~4 z)ze?{Q%=N+ZfmD~p2WkKy!(R1#+0us2#Tbos>ensA@7l*nvo$Xv6pzakcYR2mS6I* zS2&tW#4Y2>uw|=*0t$zk;-o!4%+gZp4HmB1DLWnEi81s!!O1w#Jv&fj8ON%0oZDv? z-jA@^(v6`00~CAaA32ydHRgC;wg|8JqP9xj;P|xH&}y$QSxe=kLbMCEyx2UQ|BcMy zzb_AKKN6hxSJ3Xq;UiJ-J|X;`DtOhn)RB7ks@P|nHG0r}4T+K9_$H|B$Ic8Z zu?XZa{BABc4av5fpXGF~#jDMEfs^}wkHcu8?ZRbZY+6))?wvw9-LG-3xX7J*E!VQ> z#>1+G5Z`9m8r-vo7I4nEgS5&3N;{XavPaxO!?T0|f`bKh35hQNK1DDlmy{xHdQAW! zwf!-LBi8L3&*%Y6pG6uw$^{g4^_5gk@8;$9F^*S{Dipd$d}1zBGuqCFZ_{iznGy}% zQs{&nlW~Ta`Mt2R2Q~W7pCy;3(iamM_l zEr|x=5tI^JbcT4|aJ{m2i7_eJ?2{)vZM+rEBP?2pLc|6!d1D-$Wtmx=VCj2VcXQi5 zLt2^ZM#&lhx93&t*9AD~FtvCo;T8Q)h#<_w8+GmvfJaFjfX3k0JBxopk}KBjTdLgc_@*$4nrm2Y6`I(qp# zq~@NZWqLbDXGF={3JhV|HzF3MvGw#{dhrfmVMVib_&n_`+PQ#49$$Z!_oCYq(de1% zJ0&W$Y^91hbe{;$7wpXd@tAS^Tx%6$&$Tf*PJ1~_lHX=pK!iE>i(N$lUFHIr=dh_8c{%=fk@t)*C$V{sZHw|&1g_#u*=r+ zOe0$A1A%yI`rKNZt=_HpQp-wc`k4jU#MHf6`=0Db46FYdG-WrF3@diq~ z={a>IFfxsUBt7gMzz2%q^BA?ze$r{BXf#$I;6$>}cR9xrYhvH9)Ddj7zW$jpGgZbQ zn^;i_b(qj}_VzQI!pf2{&8BeMSzWBm_lmJOt*)(&TR!FSuX(l~KjNsVMUABO(RT*k z*a6>02P>AK(i(%O`g^GE6h1UKG3z1Exy)^gHv9Yhh>q!L9WYjI)?$qyo|HBJ1ql{o z(Cub-sn75L*06}8?%=gR>5}^!daDpw_sc0yZ0oP3(MsSY5s59x zN$ie6=&WjH|6STkgSP?&Ov?j!NV4V!eAY*&n?-7}ZG)V@hE(1>4}A>av>pH#^kx<( zso8;Pz$6>Xm|N+i+mjl5Fhv{xcCpRQlV^6`=(Q~tp1AAfwJeC%J~oLUcLjtR9_u%y zcUuOn+4mXbdVn#d)4N_L8sF&n+4SxEddH!_M;ArR>9%PGv!cpmKW0PIeI*fN!;5zj z4NA%JSh7iT-QggQIj`US^YFi!!sAzNxkK_E(lJA|ps?t$sTEVl!;jv#eb4xj1X`Y& zXNDuwFuEsDpL59A)fP1Sv}hWCF|*9iDk*5eOmSNr;^fuLcb&G&sz?v!$;j68CO4Ma zKlWrZUVDuvk=ygmP@6b1_#lqXVr_j? zLrQcQl1;N<#$3|9x za50}9l3v(AE5qt0Sgib+TR$~H-o^77wY(0+xI+?PNDgmuKBdFsyn@!bTuy)MU1?Q|D!RLRGLzuMW z5DYD;P2v|Qv-9wm(`lQK#jZW;0`^5OMF?3C?Zr~md90Yc5P=b744`hUA7frO{!Xnm zXHaYL=72z~4@+t}Rv9_{Ua?r2xVW<2x*V>VghuvmTA6f9>W_X85tCL%SlXh!zOf^g zw+T*f^mjhs*)W3%H89k-X%9-lJ`vrKBUV$HjL39-b_o9dBp1sq-*FCNw{x4d`$nWE zpf)cl(<_WHk>uE;UkuuiX7Ji`JX+qP$v`!cZ+#fEsMCFtp?iN^3b#(+ zrmJS|(-;T7p@w-SinXsNx>;|dKh$2bRzbC#(AKxDHUoS=yoZ1{ML#o0E-ELKcm&Ef zL*2ms=NXpDFn}SiGA|c;^hR%_m*VsQdVN1kV-*rQdvPRRJClEn?gy-ib|a!X21 z@o(yN23IWxQ*%-K1|Cc~!ENj9sKWI`3Rw#~?n6NbkwN8(TK$2ap~q12jW-)#iu?9a zaDv(P&A5w+4BLzeGY1kfw{c7ke${Qi4hX_jQYO4=J=BZmC<8oWmH7^GgVP&ft1V!S z%y3|Aas0jVrkpPp8Y_8eIr7Mf;DXC9%m1)2rd%yu&_s!c#}-Q7>ft zzhxqci)=0G%MR|utDebJ5{|luI%fK`w!IhO`B*Kn&6MHWa22U_M5|QiDhMq zRNrVb3npt{weclGW(zVcG17Knx?O1sTnO{*{ej+YV1Rti`N=&iVp^efN^+vOIW)}l z=8%)0#cQxFMnh2ad`~DX<&2gwl_SLOmFn(O3Xo$mq2^Fq4Fu{kV{0uWV{I!&V-4(* zs8Jj%?vkQUxz^s6BZ@4hm=!WUexA&msD7$2e3Vb1Hyjltm>6`9f3Q}VRhu6%vpqub zbMxZuOFjJ-P3%?Ssyg~PpRWV1%`Ucu&EgAhB}DLbH{JnAXExz(Npo*ix4WE7cvrqz zYo#fxrOMMwQ&)#yjZbiRYhW+cm1bVNmZpZF45koBd96h(JNyH*`d=`=EHd==A5MP) zNt|*+T*PbR$FMFK)D(=~jtD${S?19(*j7iNGuBX?FQwk+f*dI?if{AA~yS%V;8BCC;eS4e&1o9dcVvq z^rs9e`LF?>qG<2l=9)CwumZ2AXuOqq_lm*8XD!RSRmM%gzCjRwk4=JL)C#e%7}TEK z1QA4X<@&HN89@-;UfF0|k|z>lVDyhmG=RR?Am~6#{$>=RzgiZXt4+BRC8hJAK2@tNs3_6;6!;1~p(D`hihN zhYdBacMLJrzs>c|mAb^9OupB-IyE@C-p!}qT-?GfPswZLbZKctVc~UfS$VR{VZ+<12+`zZaZ7tg=O!Ac%$53W|{vqL8AvnxI z;0}8(^rREcZw*NLC-e1f$(1@H9m&hEm0$JMvH4)3uEu1Um&DaK+xdF&hVrb##*EcL zZKhi{!fB6IYGbh6t&K>K1XHIpv33?eZMa$6wxdt&hA7p<*={pygx==Rk#fyCuL){5#i2vn=B@dW(T)v=G7`c z=QP@PY?r9a+a<;)#*+nInL_b)PA&y9mpD$he;_u1c>eF<%N^tYYkc|Z2$Eq7QmvwV zDXrTM1a45j-iPOOtzk!IFvxvGEsKo!oYLv|qM_w!uxXhWRvM%Sj=%QgwDjt?)k)CJ z8b5|#HvlAa({@l-CLO@+cpX4|ZBS(+u)V3B`l6KDYj@Dk_-`xl| z{&}-Q(_mcyn=ZM+9T|4A-|ZlNIkn=-u;={AaX`w`Vt>h&i80(-#CH+N#C>0;X%h&ux8CB+Zb?y^i4#ix_$jE_;iPLj|n#KLUCk zFZA6J>3rk_kE|=}8(0k;lGxh1i&H;iHl{SK)H8M-7W21z*fw=d7i-$W79dZ0emA)> zM4l`!=puM49XNkf^$uyzYPh~y5{e5jV&^(i(E9^RM{zzJcdALg+`yqc<>p$dQ$HJX z8wg<`_q*8jCQ%Uol$>PYaKA~;{F!TX-(lkznU9Dj=nf1@Y{_5!`O{a)Jne!w9Xq2Y;kNaiAA6{6!!c`Pzw_ac0EQWKs@Zx8_bghX9 zwx^POrjoU1lU=|OS6eIW7~=xlbPWPJUV|V0=#jO@>Ezx!D_A6iZIy`sv6p8=ucAXARMY^!xV|^z_lE zV?vbaOIkv%$&fHXm66QW+AAXml_EV8H>P)8Rj&2N8gxBuA$NHy6?WY(X>xO-Qlh)= zsuat4>tfF=c|3NITBY?AbhwxB6dn4&>1hFO^}p!~4{6-n-s8$EP%(3Vt0Z9P8^QQl zR}}UobE@9ARwn`SiPt_vhKic{#TIMXyUysOI0*ys&Gb|YhTC5?tldmkxGS(VSM~V4 z9X5l}`ql*Y)H`=|IXPKsN=x#COx-?z$T^Y7isy>_g6QMo#zt;Id31M%54wD#^*;DJ?Ok2@0=&Wq-hPt_t@z88%RP&-gJq+Mn;ZsO4Y&ik`&Cj~`^AowK|# zd8K3`sQoNjsATpNV)D+E8zw{4&A-$5q3Hbrc^tMek@Ig%SFI=Q(()1rcqumU6O-Eg z)7};NJfN@(Fgw(i?QFdiIvK>fd%7%>@j`YjW-Mm@~SB{AE_yE`sat*WS<&G$r3-J#m*tGeQytpiq zRQp|cy{3WT4FER6cUW zzA5vZyLlKJlzhg~rDZ`+HijpCu<^gf>V-lP4w6WxkF3N-*HKn^iL%qS*GH~eL2<^R z(-k>n*d8^hCZ?})0+`;$`E%K4%nkkQbY{FAhN@daKbGI}xGsM;&KatlEqVHX=H5Q7 zS4rViomzG2{GhE9I&<;q<8-i4$6I6Tk$Azc=L~d5j%BmbeYf1DJ1!G*)6&j!Si*uj z62{;GdSB--^|26Is`O`ygXA<62=z;xD%$!ZNK$m(ddR6_YG!nSb7GbU_l74=>36W6 z9cfjMk|0iz%|L|*E?d&!=>dD$j1pE~&kr)i_yI^&VdZg@B_d#=Qf35b>KHbkD^(vi zwY@;wB2BKBKzs#oTYdWHkJInYLJuNGGzG#C9CW{gC%*!tpU@Bzs6@~g!PX}Hk8ja4 z;}LGT1}HEG{!p+u$Q!P=AlTZDQUQ9}t`td^cbIB8E^*dAf;F1@2e(il?NMWv> zx}AJ!YP?zx{mxsv3@|66$!Va=MooXZ=$yB43zwcarNTlJKuD4Suv4Z~98o|M6Sm;l1{wW;6fAP2flgs`8R+_M3fZG z$^G9gQgZ9aAE1{FB}ml?YFp#zjqNV-8moD ziR5jZK!bwh@96Xa`ud-Po%4pUX=-UnURt_W$OpW?zdtmAA860>1fd3pS0#q`{l&kl zUixsxModhclq(}GjSNQ;88kdR>><2!a@z;@=I?W&qYYDNfQy`fu;(HumGRy)a7ko}WGw7v;GqDupD!;*rU8vfea8ZVLS z?e$_Nvctt)-VUCOjLem1^KyVkJ=WCJ6wm^|35j>_^g(lFb5g zL!BLeI)0!Sz*zwDf^L2R)NCZRwbSP&QhN?A$CsAEdp6pD#MIQIYt83%!@0M&r`6yR zUQzd21bYm-RzIpSgrg`K-gn<+| zv3DpB=PsDB>|AXdD9qN!VF=+uAL_l&_lV{{Vq-fF1~R;<9J%Ex=1TbP-5T zPp8E7`&VJmGJCevFYH5z`{ zh_(&>_YJRKzdrUtRWmd+Y_WYfyY>XcH_>GE;2&jucFx0{@c$W?X#cd|wTXq5RigmH zAg4U=s2h2>6fJXW>{?}$39aazo zvc0J<2>GWI_Kw=MF6ry;qdXb}c7!l9n&I@fDi$v<^B^CTOZ)iVNd(3K{T+}KbwA$* zWaOTU%FCk%1O%k<+CMFw5opKyjwTWm^N0EB+W>{xP%JRY#d#)daooWN>gvPO8Qm*Quv={1=AE@5^tRR4 z{Cs=pB_1Bg`9NjSre=j7=xFThF@QX0nftlP10dVRwQCQwaIcxk`uUerHyhYUnLrug z*S)TdCNJ>nhlZ`@wVOr844xZfaIPV_EwxGh<*_oM*jW^l##7wi-Z4#$Bw!6DK zk{49?sY=O66(uXxt#Jk&-hocn?B`QpIG(S?)tsXz2Yvig*$$;^pk*v}%W@{@5I6YN&?$ z93tCDirK3twPt3=H2mhTpRwd(E#1>BJlABimKoGyk1SYQJ+kVUB6#m#nyx~bK@DX)G#|7MJdALVY^?k z6}>PBl$8(`jalmSM8|XOv~#Y(+;X3alO|(wZ@`_cIabrwyKP8+#RS-DCI=|MHaR|^ zWmibPqq;k&KgUqy z%Y;F7EApnL?qa~_Gn%;^3_i@|I~Ws-pfdH5HC-6x!hqN85qD#Er9g}AYOgIUdSu_^ z>}K83XQO*OyN;h+(MVjS|ag zu`eUG_^qI_TL&^KF)=0q(5eW4R;iJZ5im;lR~-No1bn73l$7t445R`l%Ba8Im~eY| zPq#g8XY^yYnuV(`q!)CG{<5+pl6=gb;`MdOLZ76O1c#N?iW{ymLx7&Nqt)Vf_kw`s z<>ZiiGaQH9Q~IfrQ`M>>pN=p zvS!DJ3$!N(0<<5>&@`Xs)6Qj)>j4kPMz*zn#kCw@#QzJ~oY82d{58Lvodf_1ng4R{ z)SWP<{Bq~kj((z&ZZfmRQ8}+=Bm_Ehd5YZ1d3r5J7E^o08s^ZXEhk|_2Uu<2ccHlD z7E^B^M+-Zy$y0@@u^Ab|fbSE;S6^<<*&TT;Rne3GQJJ$MVS zyy_p46m0mKSm}M;S?;Cy>mLZgx|0iS5)!^c8>c7JnzpCFr-0RboC zu9JI$A*2$Z1BHp_hK7klxpcNzkU!z$J8SEqve6kzLt`naj#khJ2@cZ+V%goT;={S{{1_nm&p&)v7g`1^>>ri?+9W@L@{H#l(&`sH3ho+8^ z^cCP(*J_pg4C}%Md_ps`-G8>#Qc!fP+PmX=X|2cEGA~R;EQq)>ijC>J>bMEUqA+m=( zfL5Nn)sD>iY{h+j|0f{i!4#?t*Qdj#;Frix$&g<(5!)dpq$g|twJ?`%ZMSlGCjn3}k{xR|J9jgbwUeb&{?|NW*-FKT&N2M8~30#YwBeTg9U z;?G}gz#`qqFP``O0h+OuUmnn^%B9-UK1-@PJ_|uKUL?J~_XciRv%~-Vxzy$@WuRK}&1#Qab2AOJElt zOs)5y7xM72!BPEFkH_wDZcCJ$W6di!dk zY;bO05}B6IYi*QsdHNT>*Mjr>RxcGk6iIWxFN&4<8KeP~nU6b2|5KS@Ens%WpN{cW zk5$^o2j&jDABPuB5x0SzEybbTW$0bfcvt1n)Ca-$b+=2A=zrXAHKNQh1bDNa!8Tke z(gsNxnsZfeP=}1hVb|u^8=8AJHKc21BstKRGD)f5hQAgeeh^P|jG@IJOQ1z4zP~NX zta5X^$=!F4ZxZkhI(Ys&iDr+a--I!6ICI?I4;`+LU}dekjv=bvrw?*(yGH0vvWb1x z|B!&DU^i|bEW9E=ic$J%Y}xh=;z8n-*fttsC>(WJJZYv^EJ$^fsX~I-#I(2 zZP^nt>pPq~&1oW|mBKs64vaKPSXNxm*@aY6pSjMd@@TGB-a(+5AC45`fcOi9wKst1 z``gkPOqkd12qn@t3P1o9G6V8iK;idT-~+R1k4L+Km2;Of6~w8pL^rRUB7~yk9zGndWY#macVYLeS)QG-|BR5V3AVLeDO$RuVsR!E|xS8U=mi3**9&}J+07(_sMkSft=`g zf4r4?Q!4I-jMP83cPLrNWT5ZKeRJwVp=FEHgsuSR;E5%ots^e>;~UueHZDt*K}q!| zBQP3E0)Hlp;5}$g!i)NQm=zc2oHm-OhSXMZB*V6xF50}m9JJ$yj?>*mU|ptqJj3bB7rAyNGWEmihX3^- zhxUHtHf{e2{dK8KBw$7IuVMPKj%XAqX6*vJ6~;Z63SG~rD$NP|WbG!tY&M1PUBSy8 zLYVbAOAQ0s2F4P+oOGaWG|eAi!pnz9;r5ghhMaJl;Cu9y-Ec7poNx#K6&2FDoLI zEFPIW+u0s%y|9omnbyTU>8j&@FN<#W#?zk?1*b5U=oJc|54t)K=r@Ll#?C_Eh{Y$k zR54s|@Z?iDhL$afL`DNz=+g6hc_-MJ$lh<&F@+`3{d&Hn3TrboY>Q04hqH92=DJkx z%;(Y@fzfBjlrX}BQOx4P5M6PI57QG-p;JMw7QQgwh$~tjiRq$HDV3>x5v5y@w*Qf3 z->e?($r=Y|vj^@o6dB=wyoL7c(qUR*ONNK(Uu}X_YhN0Omd10EuwVJcFPQu6!8dm7 zNQn=p1RWi7b>ih@Mc<-SO^@HU9q{BsyMEYcrPVSzpsM}?yN7TPXMF3B(Aen_2*S#yt%q=Z z%&FjY$Do0Ecy6Ae*SO1Qwjb>gs_QF!Yn7?K3{*?zkGyI{y6c&9HLIo5%<6&1M(hwg zt}NECrcZafv43X4H-E_whB#yT$HpWloWZ$j$o5WJ>|##aFJ5!oHoQK064lwi=wp<{ z*4cNAiIS|!_L*hl!m|^#nDk>_ey=_BbZOB!8+}UY2)mizeYF|q&?5uPNlIcCI&MV5 z?3S{Xf&p>=w0zzAKJ&o#+Ahxq>Cq-3i#OEew|qR zb|7i6K690KvA))}6SZU9yi$qes%(sJ-fShOSQm*t-DhO(>@RMu3~e6K)b80MqC>_W zB&-#2$9QMYT@)ihcKBlq6kEgZq9ju5DVvu$0#D$|!7?o81M^-!Zn&x^KbScWzw_uL ze1mz(Svo1)F^qMj7IUta;6hr+=$_q+{jDrC;^A%M1cc=CTALkPKH*G?QQ2wlh54c> zhi^@+YHG)#ssZhoQpd_s(fWm5jFa2|gWk`N?K>8miq;ux4;G(}#WPqY9LxA5%q0bd zin$Iax6kbAGlml!ntgr+V0@;at_r3_kyh0lIro7W(YR!zYv2o1T-i zm>De{h;jGLJ4I_q(DjZp6G1Fit-mzkr2%R4|3TL~M_2Z2ZKFv#W_QxDJGO0fY}>Yt zj%{|}5S(C*QSo+p5xZma+VIauQ_-YBseQ>* zV5r4g8H-Y{@7DSXX$aB&df3?tiF!*4+u@jfRft-0Xn_f?Dy*Iy{={7+4ci_Bf~Nl_ zNGPsX0vQPyJ^4yaeOKz^p~AR7kl?nl96yo;7=OMSsmiR_{ZrTI7+0J!CG|^gs0=Ee zabQG3(8q194JPS2wm8%R7iYoDsL?b2M`DSY5 z+mJI7)x?_%v&j0tMxCj=7-+CGmw$|Q?i6dV<+$)z!4CcKYIUIBEZa&przGEsuZT>#-ea(Kky^_{}|!YHumzSZY@E}WstIu?WT3pf%DHtQbNXUEbq!!wx5JW9&h7`oY|k)$ zs!OyKjBRAjT{G8!I6lhoGZ}BjEtWN{Tl6-0g|F=+Ym%mc9DbFxnAB|UfixA%NUH9f z7w)w+MFZ`dWv+}=S04XKMj~U3-=v~dzhjZs#ZI3nE^}V!Dd*nGNXMWoC`=q&ay#&rV z1o< p+WWABYQS7Ts($s@!7?0k${hBqymhftoOd^whJoJNIu+ZXafq7e*@Gj`tw8Nto`Lo!z#{@W4(1*DJvCSc5^TBLhhpo(kTr zp*lao*A6O3!B(5CA*6+wHpyto_5p9>cBSdR*@ zz(=}plNm%rnR0k5L+FoJB)*po94xSU4c5br4dAbt?ZP3r`()AF=iGz?f{bW9eCE7# zm{>M1nB5sv^J2#b7wqExk%PBBMZ%RIaL!b9GzbyB%>c!oa=3C25>NSBL49^i=e4?T zLFQ?&&KuU!=pQhXQ>|@|zx%03Mn-!t1^hx;EqkwE?Rw8#VJSRX$JA~v$bWr zVaNPJiQ!pDbQoTlKv61NnY^e+}Ej*CEgA|9wwGIv`!98)o5s2Wv=$ze`FZ z<;tZODd~MC7oE%3_|^{p_YchPeMwB2K7?)W!?eaTH)2yz;>)>rIPOFT^zO}F`rka2 zF0nTT_ph+viQjZ1*>9NHG^eac75K_R;*_ppT)Z~8V+sNnQ2nn3wGnk3-{8__7nVib z+=!c#Ax}DeNtev>lKy}i35jkFmFXls0evN5@w;hf{2+D$sQB^pXl@n3NNq_&H;hCj z$^CbG$02-Sz_oxTzd0QhlzWoO2Tl7V8RBAw|DmWY?tuXujZ{>fhI4|2*!B4?XvA0I zIxaq0GmzdT@;Opp#|VWeWh2wRq1MX+O%5sXyI5q0?JG!h{(F#%>Kh601mED;>^KrA zDWM%A`zaNdC-wVQ!MTqqX>V^(I!nQBrPpIGKp28;#i2^|bRlZ2AH!mSFK5H&!8E5J9ZWU`3 zWe89(yAwpRR;A~i87k};WRoQPSHy&#orh*0M`m@yHjquZvN0cnVSaqY$D4aJ5zS1o zJYKwchDtkLQmk9I-9tSb=XoMfj7GDTieQpFVNG!CCU>-#tnbMvZ-(QklehRU5Rpl0 zj3akA=Ak4iWtZV;ii8F#A%irn*(XmKDqab z+g`BW$EGmP>JPu{6?JVF%!GfJ~I4KxDMKqM}eGGWsg2Q9)CH0*MT4! zY@-7#;WTF$>)pzNVPhQEvDoz6pQ>8Oi9?XD!=5oY^UEYMHF^1uqsE(SOj37Ay@jc5 zC(Iu=b9~EiXfQOR7E0q2ni5r%;jm{cGm)Ir3m1PW{mnuWFc+Wt(^++S74mp%ep`_* z)$FDc$eUJ*D%I9{Fkm=4NU~cx_{K!YnFV8(A>joQ;W-&BvlC_c?N)575IJVjB?}W7 zC2+P01gtYVkEY%-cw*{v0ZSbU?ja{}Fd5yYc!3kyTV!KD4w45F%pg0dV_aW6tEhif zuo%pb9(AZV9quQk7?G%-6o}0yTCx*W5}&M`JSyv6_9|&=1{wZ-FY9*G<6e%%(;rA4 z7p)?uxKv37w7|rh)ZhMI4?nZt*?b@{*Z)eYOTMYcmbHKHld9I#u-|!HL+#4;@}xh{ z7t~-t);Kdj_!SdUD0~6k2l{>OoP2HjkK=gUi_>D@SUIiF9)m`_(}k|^Bgo9J?FrOo zs>H;ceDbRSa8kiooy!DKA=LcVnrWNnotKy9?!OpoXw1ywd}m?}k-c(AZtKWvS>g3A zA|wh-l*mn)*yJ@Mn?61$)^}BMo$kDl_!CW%YMSr1%e5RB8L8!s3UKH0GKOy#&DhRi zXFwm~*paK@zRt12o~BY#KnLS%ukVoPF(w!iQc43kHOExmk>nN3LX7V{-W?A#`Avk=vsVBEVW zrS(jdDEe|LKcJ5gY+iioo2-_&OLq>EN2M2BwCbTTG5K97;G($@^1M>AJ|*AQsxLJ$ zvS?vuW5Y{m)w0m-l5Z{+BPKa`-b&<$sQWGOOOOCq1x&3wV_Pc3jw#%{Z}LQUK-h%f zp^(lf4l`m>IERD_iu>1~$IhIxGRPnT6;hL@o#lXUiuf+Bx%k(i0?`#>>ACNe+(lL} ze0&oD&If$5@`7YSfB-JJP=nw&tQpeCw72A)N9S7Mlm)`8zUdsyNd+t#{p*l{G1Npu zx?4MK?>>8G#w^yYMMJ3<2-Cqz3D%(;cRke{^c=`~rZ0t%R-1<0zJ>}pE{*C1X0+k2 z*>r)@m zLkADABcRO*vL4r*|hsx$*&vv^B6Mfs@4tLf8c+yR7Un*-wR(HSzwY2A7lT+>%Ru zoHBS`VixVMYrmw3KLd3hG_D0=<(`$&?_-l68v}Cn&f*)J&K=u2>#*(qlPy}YvGvKW zARkMlWfLjXL^p7K>h9k$rSTO>#6^Q<-BDq-x9LUm0RQ!Px^%D@`VdmM~p`pVoEpq!G5{Je1_T|^{9q)qd6Ui zoJBMSaI0VPS{+BSlBN^M`<*IF;iO(oel4|ieXA&-4};owWJK*C{kw} z_9*E2t~j^JeR|Gx3v8r3oohs(v-i&!SstT>jB(1BKZ8pePdJ>vPXvUFjiC;!b5&m) z?!yvxIG77C22Ht70XDr8z^CjZV#|p{urK<4=6=MEdx1(Vb#q z{+EQSJh}+PBPpdX{D(q+-y+KSm9l`WIN|f$7Uu&lo^8jY?Z~66->WlL`BF>m7=^Sh zp4AIe2Ok~C+9};ocjP8`dAwgT=Y*!BVb4tKQ&&yg6BySNdIuQ#Q4-vgAx(J?0IeqI_XA;``pHX9jvD< zGLa!WmN3^&xRGMYB!hMP=0Y_c(l$qIbNt0Vg%{}9`3j!( z`}~`>n2z{#-c52_P7equ|Sn0UvG+>LP(pA{}N{$!Mw1tQn0~-K#cCt-JqCs zeD;j<1SbK0j4^{07U@9uytt2`5N$oVsbNZg>nh5WyJGF6l+?SqB*#dw zZdSRSCGR4WN)D*KLs3~ta#Sm%?P)zgNRNu3K{9G_SM)$IHA2rFR`&z~ z)fBF&2f0OHl>T=GBCm?h!FXQT4BE{%2vT2WM;xp>*V^PrI$Km6b0no3VI>z-N?VWT zLQ0RO)RP={Wnb(kuC!Y2=kF<^T!Qlbgcex2>!rYS1My?^gc&EsF;pu96xDtI0%dU9 zXP=UoaPjM=9pye7sy`Lr`Vw($O#TLhwPi}A`SZuem+$ej>x2+EGD&{Jqvf*_b?84@ z@M1mJr%3sFi;}D!8v(J(ha_BK-=bQ5V@N*Nqs0esdz3daoqj)Yq!(cNei=)R zQ4Eue=c-&Ly+kF>S)Mdhlpk}F>*Xxo9Mg!7!!?j-C<4aI^7@?v z<^XLLx~%kJ+iK2e@3mDEI^`cU*>+_IUE6onI5Vi@kcDk#@PR~YqV)b? z64x`Yb}&$z5)^l1V;X+q>8%iGN>j4CWKnaz85JNuNOk&3H(np0p7l z^ySw(+K}giug@}QQ0&-E9bt4GZpP1+<`-WV`51)M{Qc(M^Kx*i+5bh?JXVu z9PA$*Ki3efVbLe}VA*m8Z<^fs*CdcTi=Il%FJpk{CU=CYcU@ z@&jXcj`sD$W_Y;^iRWfcR4qv`ISI^pxq11UGCDPm%)>j%Ovy=ad@!N}*Xi*4g3+7< z%fx24U|d7ehAuj(za95M*n944F}Tb9_aX&cKJNyQ5e})d#Hn5jNtb0^OL3ox9~K7UOm{q*RS% zMRQEp5s+3jXs*xk6R^-1iZDsw{{OdEma`^4pZ(to+ZK;BX5K<_qgdMQuxJoI@|=X%BL%% zmZxG;RuWfVCA{rnrQjgqyz)B@-SZsZhIo)8y(^}50tkg4K5f*}EuXvL)rmJGE z1le4Ki0a7v_|`^MPaZ24>7KxF2VcxLx?ROWi8$1%LjJ16@|=+`_meEkmn7f02Z8J8 ztrHA6BV)>H%6yM( ziK*5dOkPs*Fq$?pyR*zN!d=>W+Cjmxpc)-Ld?$^_9g@?FbONKCTNKew_{j30X~C!4Sbo29EVZF?EJk}F=^H>0T-L|i8%o`lB5E_@w`o&IszSmRU7IMOyd2#nlrF9v6hE{<2$@AJ+aNMW zzPs5jv7;`?AgfB5mi$Hf4PeE28Aa}U=d|~)4Ro+FWUme0aJPMKT5iICBpwU@yQQbG z*ni4^IUN?>#37)L14GX%s__Z0HJ|`lJp19Ay5kQxmZBa!ptbk3U3!G!32LGV+?^<& z?hCFWQy!Bg7#x);e8g!<_Lx``+G2Nu#{)jmZwvJDQ{<`EC({Wv8!D?MJ*ai4*Ey$cJDv?u_E3?cZtqy{v)F6Uk}PDk;k(pC;{@ zMr`&)aI5HipoMei2?FX~lhm|IRIL-_U14d-7abQ+&+Yglr+%bzB>lNZ@=kSjqZz<| z8`)R;24;n19?K`P77ZMh(TUOR2xBovR#fVA0M(^`n|++nH!RpXUlFhM-O3&tlu?%Wq$>8Cr?(gkjfYE$mE-7@m!t%_Lf$c?9}XXHkiqqq;rd^CV`sY?bR&G z3HDvpD;b`>$yZc(#VAq+LBsAdU4O%Kip2s`!aqCal~9`TDv=`4dTG9uda3Kf{#3n` z)ENv+$T~ch()je@kWT|GT>sedAgLK}v)a2})g)Ka%M3&J27<)l+^PADzSw?8VQMQs zR@oBFDg%t9%5u?s0W4AyWVJY`OP1E&+sl?og+inuCWHvE3c$=I{4G-LtHO;LZ%pEb18B?GxfiKfsM z`0idGgCj~Q%ewBnukP5>oqMV!jZz^6S1H(k}J7_Qvut*NUJXe7#m*G{UQM#X81TZBzd7EsJFR>WQ4>bn(Xh=^;s+iy`|7 z9j111{}!iNs9G+J{kw^QYO<)*21G7h1F?I`?PGvfyWL$g>RA0hIK#*)wbQbXja6?u zibm;4F!&aSt7>(sG-xxhvW<%)!l^j|>gH~_20I7q7D4%BTp}PRUkkG$hC1K`*s_nw z>ar=alJj7o|2oyn{7v=eF|Xj(mgJiHEsc(PQklS?7y}E-EHQDN87EXy^x~GpTn&FE zW~G(y4qbgC?R07BZ!F-lMfda+dH42*Y=;CBu^G@2pNNjzhX^g4x13hVlHTMvWPy3# z(xV7Yg6&k+&PLg&dCn{y$)Cpp(z|z^Ou7y1lnI$E0KneZ9LU4L&_v4$)k_%9{`7kg z-q+QCec{BACd5HuM_a~)Gz^aTS9fogX@A^ptKvg7^3k141>eVqkBp%&_IXXkg-u7j zyF^o5ttjzkYgpuzivGd4y;n2rg6E|@<`hl)_PgDBId=+3f7#d;kGIr~Ae!8Z6GU`l zcA;-!CT6O}$yZH)lp)uU)?8~1AsjhDV`e1L;;raNbhckqk)~GtljBz0r`&XBU8+~| zA}4o?=#wQ4t$58e2hYzBc86wPYc_cL9-uqaj5IMm6Y|By;^jYNL`je70 zt9jEFmI0vsLVdAYd%Jc|Ub82{o#@JrOPD2hYR&Mw;~e^lG>$x@ymGOjj1wtJub}6Z z&ab8Eow+;H)L@iPzHaU1!t`D5e~`5Q3@t@nBQS{{6RGmkMG%P~$?tzN1G+0yLWkr! z7f(kNllo66F37HXFFkjaFI}aA!F00f6;_sC!pxVVBI;ps4TKO2RDyJ~t9gUQ+;@Ez zh4p`jqYn}z_q@~Y*L;=Y^vDSML=wiNsK7iAsPp{?I%~&dj0~0mzi@MvGb@4hYT`Om zKQE)mz5Fmk$hAa9Kp29XTpJ*wja%bRT|i`5KU8?lI=yt9{}D+}7h>^dLQ`EQ^w#a{ZP^UG2BnokaeV6XhjnkPMH9w)v9S{( zmp2Q2YJrLa6d9jsuL-f~)3L@K{Kkb@1+tB~eYLm2kT~s)9d%SIt;{UpRzygb&H71+ z!?lZ3QcT%~TdbX5OpvV<&R z6{da`Oxa_BE<_2HL4Vps{#@@;Pnyi$xc11*vFDNuj__L-Cr(`5TfYziyVIOvt)cP3 ztBouCOLS+Pr`5bWS9x_~t1FcVE-9_f@6Ff3hoP=|dkrkvhG9_ej@*CcSlC#9NCYK1 znj&%oa0BIi_+^5~(ejD(MYVt`N@FTxVIoJ<*9OR~(hC!$fHSJ^Konj(sq3G~2f>`misCA0v0(GcgWY_k zmd%z#^zC_huI|pRQdvX zQFY;7@9i(m7F2@Zfs>whj?g|ElM_T4=^9>R)KR09bOzPxOk(U8@GwGimVlu@LDTVEM*P`9wGbK8jm z-#EL#H`fHdj|T)Ke6yllYeGKNAWO z`-R3piV!Jmvvhk_>B7?ozQze@_F#o7M{{^%#i`)=B8e2hF+)0n$qP??u9AIXWM)ZK z4wPdlXGJ&PXV+rbRTi(P7}`S+x01Q1QFK)A1WKDX_4_|O{7ftlAX8H0W0DRMhzeNR z^JT1Ypp1O;sp<7_r8NT@3g;fu6t`D;T%yPpnH|QbWc+*wv5jY`kBc+d?H&rGlx9V<&pYmM>C_G2Wu@1!#{>oR!znP*002QfQ40iRaX_xi0e+UDcJRzXBV{X6snhmDX8C zh352hx(vn`hz83<3a7u$i=q@qokX%DDyP=jIN`uukL*q8{q2-tm`A@8Z8^Uh*s13F zQ`)6T+h)vFtSLF5jVkdst8b?s6d)Yyx>0MX33+7WUND(8I_E-TmIN1c{~GjD323yP z2{;TNCY@{t0DB%i)%02i7=NH%|3uK_Zum9+oyN==^`7ce{hPi$JBVe$Zl{^#-^0m) zW@_VO?)LTQ5J2L;*HiJv3gDH~T_&x+sY-9ep&xg0EV|AH?oGv9T5RJHX7X=NcoI3_;Uju}}lauydVG<+2u+camx1 zg^dmY9av|3R#$C&ZBAewBbINt+HmOWdp6@bKHT_{Yohz!)|XH<=@--XYo-k#@O}*z zD*+Q(bLZJjt|AN`QN%UY>g>o%o)cNykx_xd?(E@#d4$WP|DSm3&sWPKWri~U=L;p5 zZN@nMXUg^U^}{emneC09@!h@4ja`{J?;8usr7QKd{MDh_&FY<*N&x9j>E@(y6mRFl zE6f~p0bia=Mi%$}ocj0>8501i>YZ$QZd{lN}p!uXGG<#r^xJ z&mTImEFLN}>>+}!YxRcxr<2NbNc^8Id?TT+L=z3(Pg@Eg>2XLQtf0z%<8YRkjSsu03|Z2Zq(1m{zP!leRz z_Hu(h$~JvAq~_b)YRSuztj}Ce2e&r%?Lyt&q@@je&bT97cc}jSXQEvj$KQhCj=txBdqHhWs`ctsU;A@i6dIe4n6qD%eg0ubV7svAWvXC zG|csTmWyOtq%u_(j0B7aKDn*I=pQT!e7uzf2{;`%5qzBRCF9hHK-4x^XFN#6vQ5vh z{>@@0Pj5N*zm)!OA z%$%f0J5&;48lNkL+BNJSq=QlDU!-Wu&g#Eiy!gw_u>Iu`=3(6HODnRb6tHA}42~`Q zHjyI7n3wIpcIr&RG_Gv*$gHg5Fr1MN_91w#-Gj;{1&1HqXEzxUo#;&Y43oqD77@>F zMipLTtqRZrnea-HwU1F#CuqoNn2>$eS(7hKf%y#}DzJZLL3|7H%hM@+<2x=@UIOR) ztDgSu_`V|8i=>M6K1fm0EKHSrta!D(G`i_|*RgE9tZ(4C8cSmf)pqch@)R7);U~6- zM+b|XSo>M&=_!Lq`!k1{^%DpAK(k$s7tdx6#xx05cfL6`m`Wzy^?yM;QP)Ut$e(L z&Ub*!%^8e`NkYo(<$LDCgihc5&(!H?_ifmR-HYq5SY*-k{@5)H5<8%m+Pd=ju%T=j zwVDX$Md*m&dLB=Mh}?=C?WOr0F)2!e>2{u0Y0nUKWUf${1XFLS`-;z#*m9USFU$m9 z21p2}0CQ^**s1uoN4o{g2SI2Kxe*=Cdx4m-7sAP`&Q#ywz)gfe05ZYzKyxNalfFrdSq!C=aQ6&=mL{Vn&j|IT1u`91okS10 z)NC2+JLCLi!)s`b4wQg1tD5({zA^}@4aT=X);sF-naFe_Hj-~oU{jB#)GLd{gU{VQ z#m5mdoWPkSggRdk4ug#&@#=xYVvu{?#4TzTH6Ih6LiqX}%+TqVXrhxP*IHw=%1ca1 zuODNJ29ZYU{^XgJ8x+KW-a01#^s9pL(qw1;sXXbVqf|PhqeYF&vD*K1?Y_GE|2^Ud z!{JdbC7-?RwL)FD zAgV^pPLd(pV=wm9di8%h9G@KmBxFS3U8l44+lqv~-8$9-%Q)xo70T5KSf2;J-h5CkXUFC%}@)WV` zN)p(N7opMA7k)#~$7UEDp>$DF&?eK;TC&%XgN&I6W;GBLAXdHACYqHQ!b3_01 z!c>=$4T1eB^umI@j@cyUDmNt9XxGl!vqCMIa*7c#tu#vwwEuX|n7tcwun{;?vR}6zi)~ar z6)<7_QRFlc9&qillB9znM^2z@Z=S=`p>4&Hc1mF=U;w7)LGM1f#2@BcAp-rB81lV> zouDAr(4mj{!GGlw!P|{42$;4%W4|WalMm??R2>M-H5oD%{Nf_eKmXImATgtcCtGudn z1ZrO1O}W26-j4Zf+AhQUHwjrEUUbM~1wf#w9`6fU=^LjSc33ah8{$gXJNgeYzOJ0E zIkV39=P}g}`MtOM!69C>`*=6-H+1^%2J=5zW@G!@mHOXul2{?rH0)5WJ|F{fD)FwI zBVL;b6AYNIw0p<7txkyO9oKRw6TkJf20QRJHL+$IurDgio*3vDjpuBuYVg8!RV_BR z{RoeY{9*IekgB0D_s{E(%s*&ee6eJ?j?cUOxkO_Ml@^6Th<^EQCLPC44`{#h zvD?@3BNiKSAt#eJ*79L{dUC&bdGPkkATL?$HETfeieyF|os)V8wQOFM$2I#L=5-x5 ze5`adIX}!(fYkF=kv+=WG$T0ZQ<5e0fmd7Czxuba6nxcQZivAaO=%$Xf!xbGXxQ!@ zTRG9v;Q{S9CzqLHAXT8unjHrx9%uWz1p>uQjdjh(El^(t`1!cl=+dN=*R!?g9KbHL zO6J9&TEW|xx%_B3wZGn}C>k26~HX|MdxHh)zS+%nL7JT5?>sE!?EA zbhshrF=X=U=0V@+u1LrYpvOR9vjqKpgE>62JsBN=Jc*Y+Gd!GA$y}CfT1{H@Z*^{; zw%Ei7s_5%BRtn|@js7enb&Gx&AP36%i1Xr2#mSB(rE>?aKt>$pi1*V8U zex?4a28JIhyE7j{&olF>c_`EY*xT@7^B-RLzlfkyDvAsjEsy7Zl@;~iq!$;MkUfve@1oac`Rp=X=Qz7Z}C0GX_)B3n>ZM(=K6!aX_^(iOty} z;53bl!~}8bufiR!Z@oqdf32fmH#?GFHul~faFln#3>XVDX`n9g@;TRqiY_^8_;OSy zdmJ7vJJIo$pXq^>GFIIigKj`8wW_u8R9M_|SJOTJcc!qKruCI2k*7NRGdF(W`%ugg z=2J@EoUy@Y8`Ms4Jedq~L{2c19XpP2?aoA`u|in)%tn>8#1?M~3j5j~*7C9SzRxN> zt$t_f-{tKkp3L&fPB|etUjYKIll-$`w{C~3{cTMB!3(?Mdo6G%S2$5u={Wyb^l?NT zVqz>a8YH9uFJWDQo3^g>P6!T`15pLHE#{^Jum@u*%{v`Vm*Bak44=~`Hcs0w{<3$& z24wzKAY8-oITI zSX~V7phr=}|H3=SwHIPme_aeI%wt8#*__k$8SW_p^Y&+m?@Re6A`kVAC7tQ^pD>4O zhlzG46kq2)AX#Z3tYsGJ5;*P~eBR)tL>BEqe~mJpJBKuv=4 zm&niT+WzO_q~TbfbTB2W=R=>AJAV)u6m)g*mq@q?w(2fxDNH`H&W5dTyWYUC6cLs{ zUHh#loxqv~w#G_Dm^MZ;fj4-Rj@bG;6n(|Q8$9pOyiKf}Ik$m8p{CmWGGjM#f%h-D z4j0>)tG8G;#|6)TKHO_pnJP!--EzX;&BmBLk09!<8ZxFGjhkxBbXAadGeO(3h=YtN zH@jw~0RN%my~B*U&CW5^pwHEUpOkl$FuS*k}Qn%ss}{PsJ^0MKcisU~Fjv_vz}Zfh*4;{}kGKP$o-AW0Bd!Id`Sd zA1o%kx1qA4W)i+D>ld65SDClTt@79yy%Niv^zHycS?5pH?X0tL`^$TE+z9EOzZ@*P zb=V5ZOVR=5GQg_t)5&UEuN>gIm-3Pbnni8T$WuR8@*P&=wJJ*Wg}8|e{3AROi5>Fk zf@vZFp=4QCQ0NU!Hvc0T*FKI!gv8{WeK@4t)u*j=!N2=FvD{Fie9GU2=BA(viufa> z{|`k@c=%&X3fNSy{uhQ%wx@sng!=v=hg^gwTJ6=#BK!AUlJp<^|GqBN>D`22=lvt0 z{Y;7SSC)*uD#n?xd$2o^$g{J<7Gjx!UwkE``t`Fk?!^@-u^D~zlefi`z;xBGzwd^~ z^6-rb=NWPpvR?lcBjcLAw}|-A*RQL#C`|o}JIt%;DJ|h@0M&8L^>RI{eREFE>`+N7^=| z^e@Ph<}v+d=_-W&wTFu}agN3@l&e!`>Jo4em&^75uStue6&UKOLYPS0E4YUW_bYd=4qe{6kXj>2y^X*Q?p{MTsVrzBq8 zC!`G&SiREAT_En)J0g!i3d)1ajCR=l<}rldlNK8JsNI!YDX|5nHTOqt`V zR9>!wPvb!i|FA_nPGNeUs0sup##tVvUgz}wg;Z?GqLOZZ=lToYL~Y*}1He!yp{+q? z>95K6LtwT&#P5WgsfVRxzl4W&!nkirdO~&} zN7>=dT{}ULzz^og#_x_hQ3cy_A&*I;jWGE#evg_2($!m!X@s|$syq|J9*G1J6x`## zz@UCXXk!pWqP)kt%i&=CqI1R0QX6!1T%_1r$oLh}Q7*Q56QfdCljBv+-Ib$jZrz71 zv;#8b1ud}zH@}5W!iSoN9#g$1K5TFW7%oYSt_`0&Uidf7P+$#=duQ9z#uXTRAm8g; z5}6H2E!249c#n0Q(RAO^bskF?_hmck@ah$_a|}IZb9idE>L~@7>yd7=D?nlADK45L zGtGy?mqQT4f{@j zG}4k% z_?i0iG5!^DIX@K4CbT4r&Wx^5OU zcuzF&H*@oK7oomy$;SaEXLKh530A|q zOliC$SHO5Ar2%`_$A9rQ@3iR`+J-gWu_}!asV`RnF^@kdZ*okhbynUH_}iGnwagj} zALbK0wJgi53%bH=v$1J30qDSD`IfrEDkyJJUaI5mwQ_4{CTET-8#h=_7`N;FJLu^2 z5n68$TrTK6cN5UsptGLJoix{p;&~}ZcR!b6vjj*{B^@GEJ!t+U)m%Tb+x1-sq zjz4;2`BVejy3hy=2*IeMtkKLF*Wa7=y=7P&-L|exa1tDX1_%zpCAd4mA-KB+cMXAH!QI{6g1fuBySsaTmE_IZ zYkk+*`|Q7`en8U~-8E~>Swo&4J#W^g7*Utq>#W+-f|J0}8Vg`A?`i0gl*Ut@3@^iV zRu4QXl9-rLO9N?9+DE68oa_~eySsv+pwPB9SFk>(gwXXH!d?w)nu7K{Q$`ZmUUSvE}W5!`~FTqc8mUS7z!of>6V)3v2?eD@u# zJx|j7IfsgIxs^-qQf*4bNy~D7eoy>z=++Kw?~xQS)^fs`{iCjbQv40;p2=xlOs~>G zMvUY5sAmf+aKD6~O9n6%a5(uantKeXSuUA$C&YHKsq@TQJvTI;!SCwh8@EsCqiY`# zSF;H$bob#Dsf&mGyljXe0!_P66%Qpf;dA-w5m1&Py}naHf1{6U{&+rZoamXX4e7vL zt(QIB`TpY>SU5u{wq2xY;~fgjrR5s*LCeBm0ZdEpMg9Ie>IR`k?wI+i&HM*fO!C)7 z4BkvI(hPU-n@r#~>-iwdvREm2N9o>urBK(0Jo3-nQ)fCp0E`^w-y6O0)kC<#O6@G~6Sx4Z? zW;>UB^2{P~A9Fp3s*Jm3W2!D4U$%~TySHGJHs7^XaMW6nowmhot-iiwiPg*;zo>sq z1A=$JmCC>_bm^A1ad)L@Ha7=p;q=Uge1t&5C{5i6KyMb;+=tyenxD$Ub^>XoNY z3{TTmDkg(UcSQ(l98PaM1Xzi4mOArjb+zoVVODwCzWa?VERI=6;=V|CsaR^S*h(Ki zCuTc@oh{GC+Ex_@S564f?rLthc9!s~f|X)6GnqEo$9pV$PKLWhS5;~0SuU_y2yefr zr+nFOdYW2k#75a(xxP)jOm0$HWM{}9TAzyPcGtf_C%PDcHxZT!d*U*xT7VXn=2^sU zJtBS4!`881iQOw`?ZPy+oHmrW9usIRXS}JhXKZuEz=^l#qO;+aUOAur~D4$?^_HB9*EF2L_CeC~btWW%2MuHS&`R z2O2mrQ)A6OBuUDjEM~+F=%1cFRCts1y|-;A)6!x>X>5$WYz#xPhAR?R;HQnlZxV zjm+_Y85Nhd3gqW?=m$#MVdyekkl?P4RU#)Y3)mboe~I43~+CNfCc!Pnas8nveeJ%d}W)lb-L;SB5E~!f00&OK+zKE~hJf z1U;we$nhbW+iQ_+Y*U4U4pe;`F;HBTbK)rHQcz~v7LP6y?7a%k2i)#f=jyoc3J>Gr z4wyLS9BN(}TRK|4}L&+Lf!X+1q3=`K3|DrVU09*6IH^p$#8o?CWq+IcU3=oI@u zqeWj^L*fV{d9#=f&G)pXg^}rZPjc0N_|f#O)Q#-1KF^Pf$EDG?E6_BXBrlx7iUx^? zEo9WIaZ?F$4or<5G>+@;SaSNw_yKD>{+6cxN^j-5>RSI*JbvxAF`bwb#$|o|*QbqX zE@qmL@D7e#DT(ZpiBwCgzBBD*Sfl1y!PWcC(ZH}?Q31YMfx_2OICv11oUE38g+KOL%_Bex$Rj8=`E zvhJ#L{xUPlK)G(?VXybr`Lm18-Ot|UT@(JeZL*UcHDDijhN2I5Ln@;`WQx--mOapa z`sBEpRA|B%r?Fb{f;MP9uHX=8hN~0TUOVWHc|I!DjLBkFSC1`x%s&34tWL;|sdN?s zY)@x;k)q#eY7jE*QvupvZR!t5>>Ma&8@OriH0H0o(4*h1SWLQBwSR8hx#^d={IOO9 zm^=8|ngr(#&)x{{qXTjr+le%Ke}ImL09)#U8jciwl6k(V13fLn&d4<>b*gVbD$F|; zWk_IScV7e|YD32-ioeCA>nml+t8EstlJygVfMiO{uDT-B&vK9`^aP# z{Kl~5tAv>y9J57%fWUo6t6Zko_<)neyIqy%?Xb!-@=k0K0|OG>kv4dxl3hEh*^4&} zjJZsdE;y4LMg60#b_DgSgM-Wr&Co1K9%G$X5wf{T7kRDEeli}_+ng}R+-c9VD?p?y z|b>~77vHYZgR$xn|@C0IAjQikGD-vC1vg`09ts> zdTs9^izd0Ru?N@l#O>LHZ9(~PI%=!IxJpkBoP~Nu@Xc|DJg-&NDidEV8qSXI4a>q~ zV(0QC`IuIF2#$}9INHflk8u~Ht^ftz+wITGnD!Uen@8A%leYaj2 zods0XnKK3^Wtb-%X1MQy)8d!z-=V0pnGVJ>W%a^!$woJ(Ex7R_2tR_;6B$RQaDVsR z!|EAT>7SsKb$%J(uJyW(8PzJZ`n)Ed+%d%lvqs`MLX_)BN7s7Y{K6tROK0_Vw}qC} zXq_=vRHp=A%@h;k!DZ2xnuVu12nrw$(p$b0pNy@fSeDk@zveWwERf0H60oG~nX*tC zO%dy;Bgv)J?(Dd8rA@6Dk)f+)Jp{CL8b25^VMI1QoI6K`j-G?(eJ^V44Gt?HKL>V? z_Aw5piu5lWJ&NjXShus-+%-R0+r{M9LMk~^;C^@b5V|`*se1kN#tAf{-X2kMYTGoB zy>qB(;Z$tY4V2V@<>Ok)A}_lHc6(~Gq}~6mm?<0oKZ%*0O#i)@>AwHJ6Ek1jt0bKO zmH9^R;`P!{JR1MJ_h5=ovG-B0eC0vC^&V`2In(`&xw-X%$i-n$NqHo%(nARSj)i-S zDAS2XxO^(GUo+TBP*&693Bv~|sxS3asvg@_tpigF^^YfL5Bd}fh+|pTKZ%8>zZb^6v}$~z95L&6Bpq9Tle4)u}1Wo^_7BfM3Q;q2y;?}dZL{q;Pl?6>4C zVYapQ7Z@Xh+Q-eje)%4+Qa9dR2r$jx$%AL$eMEn^II{94`f%yu97aT4FS`?9Pe zyFT{f>CKk1LAcE>h3A1AMB-aO7H0sN)6zUbt4he%yQlvubf;+DZ!e8B;e>}J;;U>i zsE9PMjvbczRtEufdC9a_>Cu-dt$g_&nW`#vV{zSa;Q-jG1=xlPvv#tI<+UxXEUyQ{ zIK)7026k0Qbw$JWi!n(hqgBJT&Q<&J0=vD3(JJ)}LYh7<)#JWs8vEY8aQLhs)ss9@ zcYc08{jw!1fXLZRbqgIBc+?&{Q4WQ1K6*Tan+K6`UbsG-=$-}VLs>km*e=1W=+Dk4 zw!{s7LWb49nJhaiKcr9xoxT0|VYI>+_90|k{EH}wwO^*ke8STml5Mwzjs{Bj{CY)@Zff?eatfgXbhyl5-Khl1k($Po$)?E^Q%F%jKH zSfl@+(%R~^t$cc!t8Vq$%>?}Tnw8y)&A$?#e3=C`&NIo%s7IeEJ-0mWoANSN)kCR& z%R$(*D}@r2J5)FdtG~k`qj*>t$eg6`j=Yj9$NiI{eHP0=PKMC#F&YBz7*>c{pAq>X7Ev!+ybr7^IYAa zXAvyQFZuTVx+M}{%Z`%BTNjxfgxzv0%ZP`-TJL^kce6cRi13^Hr7|V~*7x4%oOM2O zxi1f-PagN}2;o3v%D$3O!E_F!?ir^pA&Ml2u72^MrI9i=%jzlOhyKwvhM>!d2mT=T zXmAdd3Kw^b%{mK5;$gvu)`5K=(K>m8__4Tox$d7ol=Ht}x4ry_{5j)+JD2d#h2&z} zP*sa3>vE;J!mYHw3RlD(;;-$JIH%vb;Zrr-Y{{ZGpedrHs#47B$*|X8HsQPj@xsj- zTpg1%AK(17N#c=G5%M>IrYldb9=s1WjO3dutyb9~!yPd(KSdOQXKb%L72C^pue;K8 zC=+99Hq1mIBGY@mSMSw=*v^IJbZ$cYH+)(*Q=*`ubtE)cxVnN|uzzc(jnXfGb~;ehv-~rJJJytH zHjA99|UZ4XGiNU&-d7L9&QPl61^EsluypC_w&6=6gP?C^9 z9iEdpcT9KQ{H-c&OzrJHiLMa~6@IeFCku+|&kE6Q@z3O?<9kr$O#2ba_aaxSH_D_H zIt!4Qf(vyKjbSoK7-Mq|8#io5#cG2W3H?Ix4(Qv-dGmFw{4Jr=l^WdS{73utg{HGV}CjSvdzQzQGO` z;KP)EDT3yYKfOA_X2G2)o}S{|olCp*3jITAT;8sFu*4K*BFj$-=CgT3XLiB3&<~4u z2OhiIHw7cM(cSCY;7V*;77$b^DbwsKrZ1*%KQIX#7MkkW7Byo2-m^aq8U>6oK=TZ8 zwGV#1BNgdx%N2%UQu$&|AGe~`!cayISBKnmKZ=W|IbpNWbFiBO6MK+AUon_}+vBkc zrFBoWrHVRHV$rLeTp5~Svtqvd@io~0taBw813K|?Th%<_7T#QU+$=7=9$D4VIJxu0 zqnoGK#t02h%~V46jz^yxj9EoqsljEHxvJV7hBkWrE6)DGw2cbWkaw#;V}4xgN{(pt z4yfS1g(ka*(e?- z;11j(Do;))D+5_gmk;BMqhJU7DkA~(9Is_A?$=+NB@uEE{}3fu49MDMJ)%6oa>j>0 zYjU6I+|l59s?|8GJ-efJ;ypN2sgYH?;Mwu1{Ai(7ksLd^x@-S+cJmXP+JoZ<;$4-Gj_Yf^kKUog=6!;Z>(Kcq&LjhV4I=%D9Od{ zFt&In2v*tKX)S5)Gw#??sa>6M(uL!Kp;SE4X#o5wrxF5}%x)b-8AU+WWtC?wQ<*F$ znV2dqH0bal$+b14&+QU&(Q|SW-&$CB-F8-1O@m($cWg@Rc-S&&E;1gZgX2KHx-T?UH6-Qv+hk6_Hjg6A}w*DU6X9!xGUEhM0s3%{O931&4OC(z-w%KxC@^jm_BG&_-n#35Fd zEn4B&hS@sKNDN8g`j_M{c{wEj1^%1s@-z{ldI)DK$`&OlVGVW!d0JqO2MX#9j_?=JA7pI{kzQa1=R>G zCT4g}VIzPsor5d1PL@?M#=*(*+N>bAvY%wT1<$pB>jtrm0N3OjJQ1eF#`Z_Fibiwx z)ib zBOD_OVPCwvy&N|vc1|Q$HjGd%_s@I<={@w{NE$wG5Xf}EN|Hf)2t185x4xZM=hXU_ zE$Y)v@lMYc&njc=1^BW{=0IC*0rfyuB}G{BCVBkz6b8^;+P=T>4#)puDFkcB%Gq!G z#_nj*EqQPXnI3@1Xl`V0}Od0x)$;;hxv)1-hTN44FxV98W&Q2xa zt>}D<)14&MpZvhRQq%1C!Rk%P$Jr9EiQ=qW#0}Km-Q4PT zlDoFHMtl>7-+pH15SPXcTkf@dkTkbL`1ysftIOU^$?reJf<4x%mv~w-fYIdy zA+^Z<=_vm?=jKGeT%$yF!N8z{0z{WH=eBigcoRd}){&wxS7&4Yzx_Wsk?Zip0Hln5 z_l#S0_7q@@v0w}=f8xamXy7pTQXcle6nR+qw<8Dr>9=36=(xG{qUeCAv-6VTm+R*C zazu%V7t_1-g0t~md}a0aes|DjSgn6xe={&Jh}>hmlPi8n^5tG&0gNjrnOD2B4yveM zGK`p!Be0$dGs5EPDy011+jFEdnzXp)$`SU~)1l=Q;wtsp4I+Dm0luc_L2&`ef>}Xf z{l~$x*a*8y-?95cXLlRuKnA%kvRp>P_7ABlv6dd-d;h08yT7(IbehhS`iB-0!~a;} zjxKA8e(~`+M~i~{2==$YeXqy)memY4fjMa&Ei(`nsdsy?*M4TgMK#}F6VSd62?_NX zH#?F6+M@+TvZnukRq_yv-n@4-Uep%)Ilr8WXIYWp7PFf zbQ#8OUvfOtgFg^T#d!pU;or3xAcMoiv9Z8S*6^+l6djHqaxN{ z+x=~0W6Xj%6#5h?@-z+i3;PVLK8viU6?mVggCbETXo>pO4tS(Pw}%R{`;CQbzstsE&7aNu=SqN{8%gKrfL3GJ>=xR z>GZNv9;wk$dGx!WsF-F_f323f&m_y3vN>*@fB^lF5)RJO{Y=%%h4PEaT#tOc`hM@X zx|ADLFA+0MD0m2n)!O;rX|))+{==JAX5PCz1fk_QshI-;6!w>wUZ%&G%~$x3FRlVN zt^J`*EUSx1Ur~O3m0DE~eQa|(;!wBq(vc8yMeaGu(_Yt|m8*GKr!t$ebY+Enj=yTh zmwpJ6;^NMUM_O5s*$)UU|IJW@)B;$iVXb9lWv$O%xV0p^7C?Y}x!!j;kM#G`(fQ8_|J9!UgG_eES>HWX>8#HiWHl-Z;o?N0Vop}bCj zo|X8kEdU^74Nw`L;wtcZiG<^Ms0jgqq2$w=uGA&#Uxgnl-11pbdRO$YOB;y7V zXQ0g5{xMDizb(k?P>quPMRbK7zfV6Pm=RC;?g~@ckMk|@Wcii8ZROChC z7s!e0>@w=>&$f{;ucuAET#3I$)l-+vo-r;U89Kk)3{0grt(*K8n%9#h9W&<--wHq? zpUHy#3rQTU@c+nTyQ{0gU*tu>6vW?t68HfZ{s_+Z%VK`Sc)yc|U(xS<1Ju9R%m1s3 zv#YMD*>G$;cjj_#URjs^7u@+SK?&?HvNPEB_5b2A3s@(;ALqXfrB)e?6810Ji;;u9 z0h|}W2UEcsBpRhp{C%DX1Iy2Q_OKamavy(pf5hlxxPIb}Cg|_18aOB9ii?W&YVs!K ziUWWx%|-T;5ai{?zer>h?0PkIbq1*@fT0BjK(tKF%^Rs^Huv^@AP}A?bpD9#}{QcXJjs>(T;gIE%n8c16AVuKt{qU~>q#=cOh@ zf*rsgzb5CEjn!Bl)rj3}W?Ez<>LdUPz6L0rTy@Kq07CURjT;|H(~FLdZuhXPb*JO| z8vqL^ub^PJ`fT`XQdNk#!G2$f_pWVyKv)<#Ep6z0m2s8xxn5*sWclJTK)qGi`pra!vC4~ZboE#|t`d7Dh(f?2b=nMOO^pM02 zeqXli-8{DjV7)g-^Mao~y&mNSaRGorr*0?s&bB@p%8&Yzr^hiombH&J18Fxmj=v~$ z%Gw^n00~#QR3oFg`T6EGVG&XY#^3b`+JAin3=BY@(#HKLP{@;4Q~RW(ghAJGM?^?S z2rLe4LqkKO*%Iw#t9vsOlQnJ7wYI61)$Y!4($w_y_{s{;(k}Tg+x4Bcp8}syP-k z@LvEHcnr8^1%=6QeC^}uPHt{z@S{&;A=!$~e+?^2`9Wa2D3HYX)x{BGu?tObi!w1(bdk(AC&VR`C zBDMcm&7!chv}fiSo3Es#q`Bo`nRyuH{5@qSJ@^Z{!=L%Y#{SoP*Vkhw>0&u4$}6J( zGuIL0oy^0W|0LhQWgFNx91@QGoma*Owl(Q9QT|`F@CYz^BJm{FI7)Gp&nXLo^B=gA z6@*B_fd!tBkT8_So0gqT0yZ!>2!K=9y8_Xixl(ndGy2Bt+!qWk0wmfAew`3ZBT5xS zP8Wfv*^y_}(w$+;D~Wn!YGCCV+gk#Y<3@}f*`f|Ge#Xu%K_AB*Ze$dj;NK#Lg1 znpM^hz%qS0*L4PCX_DFP{ODSrE=pV9qNB^o%C;R$7tL21zTpMkkNSI%j>&jlph+w~ zAFsZA`KmzFnNwCFvTCg@h%^)wx(TO*)uXRvAbUFA?KcWzCMCnkpU2rJfIg=uS-_J=*UNG zzjpJo<{rR937+mji|h8KVmw~8r1-)?MhoiPL)_l z&A7ZrNY$g$MSlU~f@E84+Y>py@qIOOWREbK*`w<- zb=%OWT^uph@&HqDlrj4#2>@K&zCy*E_?0`w5O=10P7x~3c3z7s)o|54sQ5}qkEj#Q z4(MCQv^!}-bWEklnTCYbJ=iQeyNV>)Akv&$lKQO0Irx&2cBbg^SiV&p(5F(Z(+1m58xJ;wZ0?{C$Z|+E?Uj@4h>1NSgj2C6L{{e zzUA{=oNVTFWP5;rv7cR72IKgnDh!%&Er}-uqCNTW4 zUB|QD)mHm5?AqrB0v1N@l*#ze7qMUL@K!amB_1h*5u~yfAWR zE_mE4e6WL!lC1nX#M3FEjw~WhfLyHGv$?vFa75Yl-9G8FvqqhONDqmikOB2C!fQc6 z0XjPRRlOz<^jR&JurfbiOMByCe-gw1JHVemdT9O72rP^{gSqlo_R$e`d*F)8D_UkO z+F2uS=1NY6LVCY|L;DRwf9>_4+S12TL6~;7b)02?Qt03{t>?w(54#I`J%rKv~vUm5O-)wESIh*eX({)cMhux1jq#GBqj8 z^^9Zp>!Q}(TNle!PB;oWhn!hc=E=Z>N^joB%lpsOzLDrNU-rXP`-eXvW&1OL)V+kw zA9*W|zpWsW5p7sm)+W`idM44R*MtKA<#rz!D_(Thjjq6Am5OiC(da-rq|)li&FOUV zZssb~&ln6!@T+m%>diE6C%sCY^}5IC)BXbpaJ=k}M{|8%2<}!Qw%x!-R}m11br*20_gPWo%0omS4PRH(nVJ`7XCHlF zRg*kZvfX+P6Pv5^t1rM$#PR1eAthpTot~Y&1W@+LfENKc&%FR&nI7Kf;=)!sjc1ti zw5jvq`mldw1R87RefUnVH)|xs=UmeZfXRG?wZ?9<0ZA^CdUa^N7P7ISH+k&1dG74I z{vGpI^swn%SWp8pUg~4}_oH|FqsBn64GanS*<|%Av;q~8^mD?Gn_fQz+`f^Ko#xw> z&7=9MSf0sQ4QAQ>cd)|=IpnWYUonSMXBJ%TX9_@7Fr zFW$gmJFL${2loULSku1`F&)Z3c{uQ5#({r-Jnwk>G*R}5<+naN8-@^Vnuz7cu+)$I zdsGpG$kcY@I^uc3nl&(;)Rrbyqef01|#Kgan*p?RjuwJw?e+_IuZ=hhAo`8nkh-(SJ(FzVO%oq=OjTI2wP>AY|~rs!#vDKyN&y(E+l;&WQi4fdOFizdwb% z4E~Eo|LgeANm_RLudlyA#*K~1CQFlp;o;!{StihU*#g0LLs<-3R~XuR;=;S_>=^$=IS`8m%?EN3}lA;+Qqaz#?#BBav3_uTzlq@C^t!V^xA6O6;vd&=IQ(u=u|041!Ks+jw3gw^B*}|~1FWMHMC+4w+2v2%a(2}- z1Mngv|A@%7_e(oDHN^=E+Mh4>_Z=6kjF-k@gvUO4CI`2=yjH%{{q%C#$c&Jk9!#&H zDieOUC*MKts~=BOt<5FYZRIqkvN>v<veLHERoPtDt zlp#gJ!<9CMg`1ibm%myOGQboQ|2#h`R>b>C?2jxVMt`7oZ+Cjy0Q0q&8=_A^bbh)B zeaU2F#C`1jRRom5i#3tWIX=#th4P#*;{nji`$?mPMvuCb#KI8P z^!`j!LaY+4rsj84EL4HK%kKn5s^gM!fHt5Au7^(_a2bO=N!xcTENJmPXkxD4XjnH# zplR1`NC)XX7Zq@&&a~<~z@^3Xy+Qh}(|Wrp0&Ax%6mhVZ{=U{b85{{^UykeMLWpJb zM5{|s8AD$gHsjD!=;6(vHTvm#51p6vKBt?Bgo@zB?d-hx~Z zU=X4+64{nopH%E|k8>Qb#O(sSwq>y5){lBUb+)F{z_R~YNU+#F&o+K;UaV)vVDlZ~ z9%fvG&iQxugwjU`?{9u8Qm?)fe~8+wb3fk+UrkhWxZ?mBTER#uMBVkL^&mTHCkpmy zyyb_~qP3*j0&#DxdmA&|ovUHaQxV@?scoiAGy0`aQfF^cu4tJC(?uIZ&(X zL0-xu3YZfFSf_3(EoJ#FHN+b^@?{|2%7{*&hF_jw@lWuSK1_a-ZdFm3ddOl*)gydd- zv0VM&7`1>DrmtQZ**9fkLX+{Z3koR|Ku6}@jqpP~pVaJ-WY5?6)zl^1 z&gw%LOo_3*o+$`5UnS;SkiFbmfDJKO+1!IT12M_v%3h+Qzu$@~4L_~gT(7otMLocZ zhviMY%pam#wfbQ~bUJ$H9*E)JRY_*bx1^U?9F*97$h+CpNTyOk#y`y2+~BdaSeCjx zeqt!k;S%dmFb_=Rc-2_))@fexz^PScd)}-~qIaFOuAvrsbP6;6B5&{{Y;OTIQ0pTu z=P~n_N8?Y3A5m_OKq3nZ271aP=?`kOT2zm}V+2Y>I?I`hmI-`C6#N;ptV=Ee8j^#y z;@3Mlo)> z991~a3_03bQ4jA{yn{xBuwH<*1H-Bl_=3eZ)g`NUx}dw-+hJY4R}W{vf#U*ly8gV1 zi^sSe?F8k;!TYsS_p7PA`X+vhdR4HH9xJzB(NFMNR@B*Vd15Y>>&sN}#TItvjqxF2 zs0+4%4}zj5)OPxB7{DNUr$~i*evY}`VEudy9h*Xya=x+4=K6T8r1h}UV?mMrG6*r1 z+Thm8Nzb6JMqhzebnBHgmIPIF#6Hph)UL?F_9rxS+cCyk((4E5*n;TIi^@Dw?w;A&?9vB^M(YM}!^gV}|Y)xUe*_n$NjZXRX%G+?7$oFWf%ie&_r|pUd5w z&Fd8qUM~><%e_qFJk!fU<3#$cX1PqEsp?LNZ_rQo($UlN^ibnopIAspAIU*S<6`3> zYML!?w9T+lsA%@8S?U_Q@WmQBl7QSo7y70K+^qKbCDjo5lIa+u8Xo!yBc<{qngK9xzr0k3mVmD6s!oTgL9ZR_od*3=KR z$I$R_703XORg2*EuDQ9M@N=x*Kr~|~GM5h@M-6gQkENzBr;-d}C42gtYS73>&`w!a z^xkW=#d}oY@xhYN3!ths=EOEkFUwoqJ`19vsz}r>6~A~CYN#A!xq03u+bKGDaY(#f z$V4!}pp27he}i^+iN<_#%-4TS|3WYuWq-c%k(z2or;5MY?9ERZcQJZ+3XEWEzq!XL zv)**d^v5v?R)vercO0u+f}df0xbLe1Yas8QHbqIci!;D4cKl2_ z!+0*sFtjY${t#&LVy5QxNVI~8#|-0V0GnnlIP$KTa@qcii_b{Vd*)nyI?#mS@n&vg z%WcMZii7>5eWZoQ?aJ|cQ;iSEgw|VPRu?dQNXWL`XoqdX`zIVvium6;L+*vd+U^(@ z@z)4m$A&M&QLD#oXRIiTdvr-h(D*1I@NUwGgTehWB`l$kMo%)>M5C*#_9p}~W@Efw zuiUJW6#n|x&aQR%%29hSu$m}*3JkSQXG=`!G20hk!CjRhwZG|~l%B5DYdfB4tj^}{ z*FW(}@Zb8Lcd5iBrU+#ywpSRu1D!^;r;%LlwPI8~WB#---&@`#Gv}vWT|H`BKiWzl zSGzlOu)(k4IXf+1?~*6ux{^C^q3ZY0ffG0TdLno_CbvzL$Q4!mxTE_ydgV%#+E6by zJ$6O7ea8hWYq&1W1=>jvw88mS_^=U45sFC2$3r1NfLqW4qtu4sF*~24le+Ioqj~QZ zHFPh1UUuk4~#Ao3fdLe)~1`uhz=7!@Xwi3}~F$%M)6YnWO#tFojKxgObIdfrI} ze_Nhn*&o8O%C)HUP8p#PR-l!6$hEZ0nuWXMq0!b?c79tym4=d+JOJB|{3W`tMRuY>x}TqY)mQ$rUw1BFeu%6na|Om7qF2ZcE+vERTG}O;vV=JMHa}+F{ex7!1uI z)tec9BDK3VBxRC>jRO0H@HbA%OiTru1W8x7#L8ycQNm&IdY3x66oG#9sUkLv*wUA( z%KW*jVF_uC#Xfx^dWVP>C?q@0cHOd-QTIW4Wq+k8e zQ+swomonw2q-f7R5R&!`E=%HH3=5MbgLbv!=3c*7DUK3T<-uEy;U8$WqnlqOi)F-g z;DCd2hy)N??pIb74FY=z{x*2UqRLfb%S|ZijC)@~eC=W*U1YTJN;j(sOx|0!{J1KZ ztk^5taJ_%OiU06{6a?Nd%h?5=PLaEapXD5cM(V^RqDU@3?sbX+-srTZT@GhHPZspD z$OT@aTfHOzpXWJRA6GawUcPdv-Ir&E@t%+{*;I zCIl3-VaOj0g-x+;#Br;59nz^%Y6on0iu%vYp;TcRgPCGU84YD1bFcrfQ`lRv3C_AP zm29Sqi`Ik4cu*SQc8fev@R>w-ojC40ZXmWcJ|Wl*5o^x`1$EFCiC^Wt1P&pTIrn%{ zy=l!PqgFX@os`ny4qJUUS6}kIw6Z?f?mNz$$>F^h*;W;S8TRKoKqXQe$v~RJ&>MSX$z=eR6@e~^@O4DdKqKIWAwmHeT zpNF?SNep{_vC^}f-QaforgNhqc^9YjTM!bnjKut!@SwK2?|$G*y!=NZJpQRG1N+-_V?n3!^95aa zs#%>`_p5iS!iQ^aR?C8&oBWKYTH+U7dKUY-9VH)~i!?k2JJ74I+=rliPCAl<3f{jZ zB4qXf7lH%&XQ2m0DlL=v$7EPSOC3ai{k~H-E{HsbkYun90atzwr5q>duP0V{8Qd%S zIl&~m22pxPDO6c7oTjGNq38BxLS2`_WF9t(6c|H4W}=!cQD$BgdhJv4FOi2^UGdAT zCPEUx8cup-h&ECFTxbBUGBsSfTI;FXse z^a2sm%#u+2+*_J2iDAe1g`iO7H@461-ienx9d zhM0d0vIMb&Epy@x{)86{fK+&AcXy$$ZRm1>Wm{o}C_(VT>3Nk!aGpi*9Bx(oj&%d# zx&Gkq4P_&UyDlY5NNESY%_JelWXNc9BRLRMRlZVAj@2zQtlmx>R+2ZwCHbl(e6i&o z3)e`c%$=TL=A+rrY*6fAr9Z)D`}c%6#D=1IzltuqnEecvk+hfS*su5?BvJJ_P+sr- zbeZR1XhUC2iNrtC*M;z9PNA)swDywqFgI!hZ1uhShh6$P9%OMX3BozVDl6ynj%3PJ99IeY?gx=7xT}~Z!Q=d zd)2>33{~b(C-DY8O_9J>D=1f_A%!L9nU5va>f!b#=lr0c8)?@K+OV=pKNzFENxQUV zSk6|#sy(yB82Lanyp~s>hk1Hbl2O$9RnKs#NnM2{E1o*(lZ-L(w7*kTSz(HGlWtg- z+K9($T}tN5ylhcRcbL*Ep?nXJ=?WWm!1Kyms_&OphV#Khj3qehmPn-!GIQ5jP^BhZ z4j!I6;#8`v8A+4mRP2jugwgqL%;$#^m4#*lY)a~N(J^I4ILd7i8?AGyy*;P*dlSlSu){8J2XF?T5G6sd6ejR+^VuMM-E{m3qO$`Jk)(lQd4MD;`y$nP(v1G+k z9LNtb*I=oC^5gA_C&J@>U(wuQ|9=dK=rHHYvNE5UV<^|kQId9IsZ61tk@kA={ ze`z};f6{Mo(m%ItsiqHMIR{$H1m40!i`lR8|jcf-mP~yOhK5Df7096dHk={@l zIiQd>F?D@EVH`VgKUAKw+qpU7Jxdt*6e{E+`hHn~&0Y(` zlvby2DreoIV+T7g6m4`?u@kfSc11srzA$du;ZZmo?|p(+$lV>cdyu+O`iTt9!Ta(x zjLbcRbbE7N-N{cUIRxzscSo%8=2J%9iDr9paxnW*ZpKPrEzFt2_&7%o2e0wa_=w#* z&(nAQykcZ!)xiY{n6{&tF?WYW>@F81dFE>8VJ*``Ia88GBWYh-Hxx%g!)tMPC@`;g z7j1GsZicjdZ*W|gCgXr7Ws5}LJD}Pr-P+p^T}fal)px(z*O-x^>Q-`in!u*+>_G#} z&z1@^@K~_W?0?X*FQ_SH{LmTVEj^p?e1vm_XVuLwE&2R<`#W~N!!Vq71BOG|#-1rF z;rl83Aem*RgfWmiX&vofBP-9+OSEOOg*_$I5)GiL6x7l6@mY;2CnCbX=jDA23ZF$l=4^*OzG_jne&x|7nrYS{8 z1GUt<03F-A$D={ZtLBN*|5{_XKYa~1&>%G?WTlS z$k%SBg&YD3(40~`VjKV^x3NEjX3;<&*#*Ohe2_J(~{Uj>yJ@8uK|H5FN+|R6u>7 zIX*Dwj#8ytC{aF+Dk3i$AVTfsUJS3EuiT?(f%M%wryQQ4T~R`gR~)R~dfiV#Rrb7% zOpB8_4^{-aDgtk{mt1XFrWEtk`lwTfrYaf9FpZHNJO|eC-X`1kBn-(i#WS=*P%M$niQ z#X?g37OX0UD)NQD)dv4xvulGx_R4@L>wU_}j*&Z<9B+ss?Zqxe_!mZfr8WYIj-J!5 zdBf~Fdfa38NqQ!}%sO>Vp}e=@R>~&0<`aUaUCVIys@Pa(w=K?8ER2jLLL3~WLn1W| zq4vH_RgolkXn0Bd)_%q{UOc6;}8kn}TJPGxI}~nQ|Y7x-a8nT)lm)SdqLya1C@HxqrYT&lf<6xKyrrVMuCeiVd^AB0WCj>B$|+K1!(>9oF;an zdSz7n!7fqp22Kj+D{r`-{p03ZP9YuiC129Bzd!_`OF+* z%8qEEL}lcY{q3)L;IWL*_AGIv@w0N>!S96;i=h!3I|UWGwRqULI*tNIwE{+hN}4dV zh9c{W=IW+`FfJzd&9Zmmjdjo#bs*fdz0g)CgsGd%nGo$Dz1)bWVazwgc=qZ*4Jow< zwUrk4BKS20keo^Ro*S(SF>Bl0A2$GXkJ!MvT=p*3EP zG$HEe_da|e#JtNe9*w=DH28=`|Gv{8|b)lBQSJ0=Nq5^c?0lzWC#4M@0f_|K`eG# z%iMEHEA7gy1!zZbV~#hFy*O0~JVHmMGLDsWb{{2Lo?wfrDI7SxR-Fpf;2ruW{>GoW zeM;#(1tkAYAtDr(FAKhd+YQyeE+1~)O9G-~K;LD`)?2zZpfj@>jW>;q>R*QJ8V>@W z|G)OmGAhocThKsA@ZfI2A-Dv$;0=vSZ~_EPfZ*-~m(aL0?v~)tSb#v|?(Q8txWjNx zk~4GX&iBpyxwF=+HT>#D@3(4KSJi&2_Ool(x8uqYMx7g*1D=D8;`-9yirtcKnm=8j zZ}5AqpAqpOc1u4(D2;p;RI%s7u(kzyN2gJr2~HrahxU?Y<@#o z`bC0qtpM9HZ|&oHZM4a^{~*-G@kB0kS0~8v@YeTsOE=_?b(heGnuxypvsiu9V3gQqSGtX7*AEQJqWYbS02wXlL-1 zwBE(ZLWHd4G!)B*dhLq3N!L4Dksekk_Tp7zSe?-=*&9ix(9D?Zfx&NWbQ?Ba8E}F;hItAWlO*MXC5p1aXb%^(lSsEu zHk~jho9fr(!QVjheEHDVE?a7?Kkfb=jp=U18=^5sEtC{P>b9H4I65%R}f&+YKP^r%_dan-lk&yHnQx+}na75uK;Fz6LDJO>FmV=3aKtK6v(H>E;@BYyGq z)PD6>yiL;@%O4g-`CDS5v`)Rr^(Kv*K99RkfLgeG-WhsEx!y-|*KDXGc-Q7u-{0-` zNLVw+pU3$s$DjxsQXOA2UGY|-+CJA|xg6pj8>4ZWJk5$8E;!BH;w}b~o_4-oARMx< zn38^>>YGBzMe!AXHif%4XpEdr5NJ@0=6H3`jTcU?s!Q5I#4c}i`3 z9}i~)Vzq`f-X0znyuAVr&=Zt>HKys?X05%2wIbv4;+^DbnkTZ=9}QhqD3~9{vniN* zKqQoH7!JwNo)4&mo_}3Ga%^6}qDRas8o1X*Sx&adD;tQ^B7OlXf|xWau^j0a%TUG! z=r)Jn%1*sij=>VHjYuS1rWwhH8g8wrRcZ+?@ka{U37jJ!IT>Z$h56=|Ye6||SanKa zCge$B=2|07`c7~5y05woAx{LeB6Ve$AW3VKU%DqUvjB#D4ZcRGem=J`>3938IYa=T zQ`p8ZuY*9#wb{^}2WD)*e6N9?_|Fz-vG0wrDjwb$UaN}`E`^@B!~JuQRQmHpb#8Jy z&A0k>=tI$L_vq$ctEolU}Ex++z2 zExs6AwhXI9UB-__-Khn!KIFU~wiR?aELeZ{et9n*x!qLA%J;Bk z>0xPE`5W$2r&Dn_a*TcuU9y+##}>T^E_>GX`)M)mtL29jl#9fyqUY#LfwsV2s?BIC zDP@ZGY1?>al=P;bw9zF1xIA+IbO4&7^(3x^Qc6dOqaW~%b zO9ltArIuHW1WIY#6g)tM~0ldHM`es(V(@U_VIAtSA7$N19x z;i1(VOd&aEPxpHOgQkCbCVfFg@)vG-VNSq1qaXX1O1zILb2Ehi-`Wu3=$@FCpq6vS zqoAiYMRn z8{01AdFm5Mt{~+GDvRe+@wSk<=GPX|SR~_>Nxs`v=l0_U%QquGh6Ewrf`GbK&qJ5b zJZ$)(So{uod{svx(okXYV-ta4bI zCu&mIlh|GyoOzT;>-YPOLd|BX1h;J<(!!qq3^%npdR=T>6*iQm|5R8+Kc*Dm7WFXVPWJksajE)L(q9Kc?Yj9*2taeO!UoNP!b!#(Fy+jBu*K~?82A8_n?qsytk zZwLlMBG+nmjM}gs;NXdZoZ1s7N{^7}mxQAmDeo5fFmrQG3&c#AaJiq>p0c6x4tEmS zbl(kdH;`TvE*CTEE_)X}@-~vaGzq*NViQw`sEAnxX=!5f*ITe1>9(YgQb>crbFE2R z7CDS&n4ogMrOkbV0~fGr0&g_W1E{4{22v|wE@*2e-AA^yUeJ9*`21`E4>tH4!hP3# zbxth42zHv-*-%oVcT7x44aQ<}k!O-SJFLt?1vs|en&9mf)B!A}+_=r+ zF!r2em{P6V3;fzz)27-F6T-Xm^th5!P()slf4FfQ=^kL*VC{!_8r7LrykGAv)Yot| z$cC6el+cg9zl`Z{0@mK2$#DE;cLA} z1mwNU*ur;OPzVS8xW2>W&()484J1LMlGA9)tHL5h+0N|7m_%daSyyE64=+DNY`rZj zmeLcZjDTm`CZNNZKSj`gb;g*#sa=j5baP;EF|s&=5;yjBAT4D32Sot3c&$m_1ah5+ zsWoN5nG>HhfFd)-xhl}5Ff*?hcN7n7>CKug1yjS}@If#*Jl1+3jIAbf0&l+6ug>^A zXe9K9I5Y!)YES7%-|;jr%0Eufp6ek8tp#GL;_u-&$7*eZ&KOEywPY`4D$;^tM)N0H z;!Hr;jTnFmXL~hp`IUVS`9==~Wxd!ti@t8^d#e;BYkzFIg-(BOQMN@f-TaTXFPRna zAVASNU*Vs{sd3$sMs;xoJ8t_f2M_*tYZmvWtheT#esVmV&e)yKCgBX(Hsqy@1(UwA zqwxgs0XV=CrHu{fC4{)g9L<5W}_ zdb#2TWFH7hnS+)-5=}qyhgT63gQW3qqZI$d0#wokE=|etTQH?uoKCI^D&6=$Lx45O zWeSo<+`p_y!sI&0{-Sowp5@shIRF=K0@>#bFXUHsfSPJJQ{&%VP*8pKM7n>P_BGKa z=SSNh%?OE1KkN68I~VDm#i-;MyCM&t_N-($3bPU9SFOA6-l2Hp!CxF^1lV*&oNYz|lz4D2Fp~S3gAk)1NN+&eBaRP9hUW?8qpk+~C{ir*si* zN>;0Ey5rrLhewJ$S?_Q#``3l(>9#5(k@S)Dk_a)06fY^h=A|()svsqvCSz<65WT?Z zT5>HU4@q+$0}Tex@8NApW_3Y_Y*;^(hpj)I&N9(}lco~r2Oej|K&+7txTu`F9Kb~D zjj7)7eg`=xQJqA#22qPdFWinLbq((}#>`|Z`M*xSfC1q``ONFt<=i0J9(rrM3qnznLbmu$L7%bvRwBovq+ z_X~Lt1A(amCa!IHyWZxG9zj7?KFpMj$cb=E1NgKU3niNv?}hy3&uSiRUXb%VI_Nkq zv_@mBa$i&b)t$n$Nn`YoCZ$*|1n20Fi)RqE{&E1hWgAXJKiu*Zw?aWJA17|X5AWRvEdfCAWj?QxKOv&o;>yn;jYNdAxaKg z8{YQ7d8>I}(7_O+t`^fdwHR3FC30z8@6|S@oT6>cKA{+N@?+qhm19d(rqn;XLOza= zPR@-BkqrNFh>Q}PF;&Y8^3pM(C*l|N<0BM@m1;5|$0`8l`B498Ah@Q+1L_8O^VhB` zuC?JM9@>`lZm(fI^81HkQ;5=pd+3&tNX#_fb~g~tz;&G=_MfIkF()F9Fe-dQsNv%o zxo_nrBl6kz5@^id^|8WXkUJ6$VzbCy}myWjG3~uCF z;a2%dEObiUoT4=nB%JaI4fQ95Pi&#jNk~6P?B%+aPat$ku_Md8%JSr5mZQ_7YrWN8 zfABo4lI?HCG&8wfsJctSY7VY=ylgq`;r7Y=dr)$n6M;L8@MvWu?7c+4*=%Rb(MrdF zf-jZ9U~4E{Mkx@p*8cvqumt}1b1 zXt^v+N#3Y~!RE>a7$qq1^A?TFHZCd1Cwwv*1GA7+2nA3b`ksm;>nI?u2VF=D-?oNH zd!mZe)KHa6y5GR*)nOOAtQ+7p|F^)K|yhT!MPJ=+*8GrP=Ly?z@*iwL3 zQ*F>Un+rv5EuYOz-+2>TP7d$3L#*fzgB7mSV1%AKt)?v+|IklD>t zsy$9+Cv>~V5KYupNVZ>{Anwz3MSd{>IfE&$EkY7|3imWVOg?M`6KlyX`PExJ9p2nf zV5v;Qd|>H4u1m`sf97bety_VGD$AGaRce(fP6!9jhR7EC@7ryP^0}<8UM4CHc2;;6 z3u*cL9^-H^XTmmf4_fcT%a=`Und9(F0aRo^N4@D1sdf7s4@v9QC&W5!ChIRpU-}`} z9*PZ;GTabS&}XrmR4_k>L@OC=nriLgr4;0?j zlS|%wKi~V;yz5qzS3?+U{sezLx&Hr@cU|pOl_h746Ga-nIXs>}i^lbuN$f8J2=D_% zYV_}$-u#+k_KT!~@Oea>#Q5T`RmG8VUbC}Wl&&>5OUPdd^0K^At@RZ0Bxzw}qGK`i zW^k1@T1}ww_BH0i|LWD*0>sq(xmt(Wuo7l6n9-vVg7L{8@pB?y#Btr?o}06n?yAW_ zgEM}F^+QiIgd^*-;I7gXJBPhBZ1*;wQ>t%cvrNa4U3bOZW$NtvvS6%jGgvf$hK@x8 z-zErAg?}YK4huq&J-^#d*t{17P^4BlBlyBs{%*aB4spphDruN)?S7M+=)xZN)#}XL zh<0;2J1cN~KuB+94o|!~KTd3^Z^i4|4>P<-UbO7F+~&4rKnNvS7n)AXmLa;o#jFk? z0*?dXV%J=+&vQH9*m1CVcv6|Mba=q~5oeQ~3+=hW`dGQlYJVg`A^wwd_1n$yN;5y1 zvVNm>(zc2p1}>*(o^m3mNQPpoZF{IFI}yn{;f3CQmO;n>OPX?>a5G^{nh9N5$)m^E zDWh+F-=3B*GZzb=F)12kve#NOfrruO-9?2D$dYYv-`_-D@0}9-YpOOy#zkS`>0&~D z0vFyG-{n|3^KgLHy#72k-T>&KY{#QI{W`<*cBRYPU6eTy#>1OCJvlw`)C^CfrCp&( zXaqH}+P-sTx#bV+Zy!N&X?#_}|Md`k zP&Mm>ro_TG<*4y_JjBI`E|6*bAZ8)^5=8(O$WbB*##9SRI9N ze|4vC1yLMRsxXCK7Iu+nWq0S`#7t9j%u5v8|a z(%HCtr6zfs)3g4skB<66&X}wFW1kY2!)%D%waT0El>3jSSe=d}C$%QH|B1^r@wNYB zfg_C*{iN+FuDI=_6D!?hPz0Wnx|^Z(qzR`qm$M(;H_jv$F;1~m?UT4OQ>=zCv)z1! z25Q2q0Q&o+_KUKNbcIvNl%}>89p6})@Ub7wIVuiQ{={YYW9&IPC= z8pRtKAfd9b6Jnm?83T3HGzuaa-XiQbcnMzJO@}gVxk=fRdqhJqyKWrA5*k|Ngclt_ zEg=l{hkYTJLw#(~ZRhBe`V9zYpIUe{$+L@hkUhuxwJTld`VU#Y3x4OyAEiwgurPNZ z_l&9KD3FtNcVQ#g-OD;Lu~ZedWtUeKWI|1%^$U)%I2DcZ96-{uw59Y+HLrp3to{Z2 zd@p2>KM`LpdeZIS{+cqh3qPUXWd9B8quj&KO6%kEg?hqd-MS)~oQ^L_ty0hU zFK4%Nf0M(=P1QBx7Ugx)6AxP9bMIc9^Ym_|Hc_7=)L$Mf(GX)7bk11S&k^MhUw-_> z2VXTfs{qXhI9pAB_%IBy(YSw_Mfdga!gDQ+u+)XWIv+kd&T(Bk2&yTI^e;;^p`jU< z&&yp8|DaV8B0Qlry;^Plm}Osr-H@}^I5QN}V&5v7e4#gu-TRxnDK?#Z@Jv6^-!#wF z>5=BmA6?&GHpR&)Q8e%^9(FI_QjbHwe}z&CKMWwlQBnif*he=gR%aCjoS%CC!OJ|0_1o+ zvB*T|!OYy;zn7`@okWlC(0_v#?MeO(T4Zl!yc+iTj-o88aH#)U=aGh=<5h*5SLF#? zG@wsnIoGNh%tpHJI3y|$(bEZlj~s1HeKIn4`gFU$K6Q#blL^bp=_a#mp8m@qf*9CL zX3KDnxyWWdSm6P|a*1=V)0!Tfd4suDl?0ogRY5mn^WaJnI=U2+x%eCLt+J}d6uZmx zbT~vYnrM=aHywM_Px(!wL*%dbZrnCVjaH{}m~TDGJ%9WZH@8P2CZI_zu($7!>$s*4 ze*BTGEu}*BvmN`R{xh*W$fz9bQ6FP8;)oq7&P}Ia;!evtSKTvXG0>GSp!u}N)UTs~ zTAPshTu|g=jho4j@t~M1?C;0vhIs!1QC?D${2M}P)Fb9eCCFTNtn0?9uvKBQuEwm} zqg+@Tn`)ZjA0;1%vFClK=%qkd`Lkk>e*pV-KT3nL>~XKF4!xV+Z?n=BH9?H4CrtWzi$N?3>4tT;xt=(!^jVsrKjMJ#l z3A6B=JnQWw!u?hnGiOO)jJdLg(RZ~s>3I3Bbes6PCFAO6qU>Fs$SWK`>62ve)b~}J zC>r)ad6gTfofy@G8b8lA5J0U*aWK37YDHtZYne3{iaURjkj!akeBBaL1#x>}7XR>V znG-Wq5c9YLE#za@Y5Mc;2iNZyZn)l5Z}i7}m5)%XKe_NOEa_57V!8XZ0b47`<_9Z@ z{2eYlQ)7k8mb5#DvsJusQcJBQdPmspc73j>2*~KVGt!fAyHNNbwrbv>4zaTiMk%}M zPU7&s^sLh|Xn&VRlxl8vTlJV;zb0e);gSkt+A&xWU^dh}IN)%X0&|(fz46~P%~q{C zpI@+A=vB9SgJCeO8TBXXu>$?qrk7&4>mkNiHUT+1V`N5Y`wC&CMUzZWI75%{o^`qP zRZs8qmyvCSY3wf5fzxIzjI(k#8iHfkKrXFrXS5*TUf;mGaC8wQIWjK4d2h;NFx*S& zN6VZIx!Wsi{^(7sS5f~DaYI$z+1+Iyf}49hJpY&sWm=Hl9;`lA;0Ps0Bg(X80HCef z+{Y`QAFOIu)B1fsqYWnh6S8QJ8*29K^FN-}$2W%U+e%u$ikYdd-yZ5mTe^1r0_DXY zDj*S>mi`~)9cVHU3KEX<4;KdUOb?T?cglqu?>=}j1Tdwrc>H`#U~#sUnp1w`e$Yiz z6SLWH`d5IbOYOBp8gNM2SKQhG*QV`Kpdx#SF6QxCp??QeKcWl&Sga*ma3?D){G?zw zj!#p30W_WS7RYBp>=&o!m(LZA^ce$<*?Rl`HwyY77PtjXc*^70QN6j0TRl2{#AvnrF+Pq)A) zTCe0~<1%Ah8r)!UFWRN1@S)BupO_ZhEnZg359Sd$HWj ziX_0e+bf;8g@y#N5ua$W)GsJc*>D5oRl{mB+N+(>D%ROf-75a_uP|f%VcZL4CVB`2 z+j-jy0@k`-=*^ffX%|H!o-RM$CF~JYkxDUfG#h_E?nR$q73jksdeb2=Gzmeb-C;kG z?0!;5E#yd_q5{d43MpoGHfCF1OqQsmk$*2qBv}ETG-7{iP>JJt7an$O){93ZF`?lm zpoQDcE1L2uCen1h#-CnM&VbVps`7d0!Y8@EZ<{`6(C4MnQ%iNl$bJWaRUe<31MY(h@C$!Iwm%s70(we`2OwW!)<%R2bwY;p@ zew>o5$f9lBDHA`gXMHv7jZOc7aZ9#zfW^Re9eiStG_b^Ekl20d^eJObX-SBHEIAu% z-x#_Mb8DmmB8#i0+|}Z=at_Psq!5>LiPJt}1P5|y({A!@ytK}Ax7O%oO0s0)JVyP_ z?~(r>$^Mrh+57*DWHq?s7_6~SN7d6GgS5Ne`CPH*-`-7+G2R0S_Fk&}*Ron899D^+ zGfH#Io?jjh*j?cMl!7N0!4jA4e9Zkrzl^PaIF$p`?{9cG8wTEA_?maL&@q-gk?hMN zRdV)jb&t~{qkz8TQ_1PM}%hLEh0ISyG?i5d#SWGNUmWJwn*wMhAHTH2O&xq)H zpE_4gs6zk94Up>JzRV0^-Hv-52Epz_WJ3waaHTBt(eqy3W5kz^I={a~iaFWNZ2Gn( zuE3R*9%gbsRZhg9++LQEEmRU?Sa8R0^MxX$xmMepF!yX?q;fN%{~RuS%<2t+RHSq6xb32+6fqZsPIRKn+QArq9&Ba4d8nnCo-98b@% zgnV@dhg2&P|EJ@G&wNvpAu=t|Ij00;xf-o%&^V;dqIIsTo3`Psw-7LjHDN+!1yteR z5Z*ZgZC70WNq)=R6-JLk4d%#A*H}lG7fUfcTd%P8evy2c*;=+qa#Kpc8Sd!qWX=7# zbThf2<#Y62EYa2AbOCL3$oAavGcf*ZOCZ$nKEHnss_5!{D48p?`{R6@cJ}(9W&ZV8 zgT@Pqm7dt84NO0Z7aQRWQ~qh=i_Vv&!iXWHAz`2Wj!f%BzKP+nP}Q>Q)UowTwtN9y zhk~i~o)wb#bnE@&I1g=z6oAijJv(iUCjnXx2}VBvWx+y$4){M$KZ;b)kKSQJsQn5| zY#+}TT8K0EZ^A!4tw3&VFwyGK{oH@SC-jkD$bBn};9l^@?e=4^#<+6;w%6+yOh8k0 zMDkD`*KwR+dvpAVXK%bE3;czME?s9lqw|4oKXNBdv_LoCa6l7qiy=$dxqZ?+?({kr zgPldEHh$y^DalMl`L3#8-6^^)xeqKd+80OKh*YFUuMZ?O{gFrC8g+(v1kWVvubZ3$ zR8@m@K3_Fb(EUFKejB5gB)xNoI@F$Axs%A-5WRu|qv3PF#)4lojTpDJ3pcXT?If69 zcABWan2;%=Au&pcE$JC(&wIHd6ujHzdL%8*nkf^FW0Vq+<6+k!&7FmQ)Cg*czm=W- z{O)w*tV5k&8FR;NQDNpu@F|a_sO+~k)cG6%qW3RH35KC2ehR^1|98$2@|`29OelBG zm&f1ohm;+%SagB0LGopcRP1N-`qOVa!a6oQQD-?6r8!BzBFGyHEaW)Fk+wWbH%*SNT&r-I2 z2RPcxt-XcafhcB0VVAD0Z6{<3KB6#JA6PbM)w$)6=L9_Iy@3X^Fp4YybMzNXM>{|l z)Cjz7pBd?;Q;Fs#U(5BhM;Yw3Smyeo(k9*$bAPd0L6S#ZDgo~ zC**t&1jEB&>Ms2WLFEbYi=O-Tj`NY`X~tmIcidFPIi)GrNJe=LuM}o#{HM;Mf?{9x zB`rhq)R1GEl`FRB3zoPWVx|Ub%HQYM9jd-0Fa)SxqL(XwfmI>3eovRB+B*>KMb1J9 zqx0=6W7b8sw!n%B+NeiA6H#6+WgopcGQ(rn?jC5nC-M$)lzLx?JAeOW?|zs(NQ$Wy zR;s}sF6n@Z{UW(FzW@GMro#(&f7uf>bWQ-7vdvxdFHLq@o=$Og40e0Gv*Q2@{AHgA zokVtgDCA?&XIcP=)@nkA7*0Bj0YqD^bL}W8`AlMry`?jaE<*b^SV{M_pP!JFWFjHjFu3b@zeR+^wO?9%81p{f3psxPW_<7ZP;_W}tpZUy<2#;oM8 z44qSidhRZY9^V(3O)m`Lus*O^i8EZ&JS>D$8 zwCZs^##0|SI22@n)N74dv3F`WqLAgQS1CL10qKLhl4E+7-sjFHuKJP=ql&;V#Gteb z`*+?nRDhf=)fX>{^yRL`K0zU)BT7(6%V~vY-~dLwYV9co$(y_6mU*pM#u(6H4^}ZF z-3Q8}dhEKfqd1K3wvRh1OU%18-=Wo5Z?WdY0w_1IWtUeTHfW+I9lfwB;&f<9-ptDK zLYFh@-Cd|5Z9iZlNm5jShXC%W18GKH@ek3GM15&%-EglHUO_Dp$=!@>y=j?orJm$W zF$*WEo!H0D$qQq${O|$Yv61Y`D`T@iX?$wR<%5kATicDStG%?>3iLzgiEyO{Y&Plu zrNH6t?!r-W@|$c;$LjP|45eM(ejqv{KjoQzpBFn@^9#UeA;nsiP)To@(O~R!J?MZ1 zt2|Yqcfe54XikF7LEu%4u$24u>u9gtLn|8+2FE$CnW4-RotVD{Nt9_EgRwJlFh z`T%Os^s?d^cv@ZfbfS_YZ{+w{h?c0d>+tOnF`W00|6Y$#E{fmKM>K6p8%4z$uum>` z&)DL^cgDgpk-!tx;rxLM6JU_{=@;MBZayFR57ro!ApX-DkQH${5~D{Y+HIET2iWjc znJnm0Y5F=$QIu2S$Mj<+6Y~}NjmHuRR0hJviTeHU4y+6;!+ayRQ6W~XjM9(o1Ay41 z30dF*MxP2<;Nt!L58Ca$tDj_lf6PM}f|L78h}J4V$Pq4H|J$NbW1zsg%bM=5?-k~) z5VHIxCT6`hb_9R`pxM$|sSZbJxJlrPUjp`<@p0mW!&l^@zOaONjAx?iwmKah5@@>_ z*Vv@dL8h9Sf0YgZ4UIA(WB~>Yn*FM>z^)m~0~>U&K6oBGLv{Kg)2b$RdEA5P|)$oBehWaw4vSJqh!&fP@?3N1e{$Nw!jCLnO;m(ihm-gbqc zEOv(KIez1QGf00O$VH&fowUZuqVh{6*cKkVN*5y0=Rqxu^f%Rb#5!ctNhH|r0Q0h)Q@P=9)e7i#mbDjV#>0a@cbHr^p3 z1^{dGDK(O`fr(z7=eF))nxxNTDc7m#{x0#f9qfgOrK4N-#ccAt_OpJEh*3uG)ZrK7 zq~5;=EnuvHJG>AA>piz1Kco5k5gsM53E~Ly9Y)#xMKC9$^e^QJI~Zl)eko}sEOdgL z<@lJ+FC1<5mp&kw)qtns%x@~1RTLHeeqfu$4K4YXu84#R`Dz;u0>@Xvv7zpN8&trU zle`8am#g^knfR~DaMR&`iy>OT{pt*!|CN|N;tS+}2!oJcB5a>mvBiV`6ruj^ z-A_~G-w(G28M}3xEg{hVYGJfl_3W~CV(+`?8v$Otdm@Bi4T}=nb|Ud}6Ml}4C~_D8{9T| z5G}a3V(1BBQ&3#0p3CeH-T~N*J%_B0P52ysZ|B=bRpdc`)&w zD5BJ4ByQ`CY_7fmE(2#(g+#_8(#>{e{7Mx-RelX#GU-5Y-eXn~^#0{DYk!0r%!1wo zLT-jwvzr@%zTNPm2zX=vyO6PsLOgDvS3i9X{oj5~{5+Ltm>MU|lIrE9C5}9qyy#TmQ5q` z!+PZKXuHp*V4h-XaD`(iOr0ASnuD-Hr zJz^i6U`gwL^L`}(w!EpAUwt{tpjPIa?cWxr4Ev-^fcvD%GqvID6Jv~TeqzjMCyg>$ z*2n2hVJ;dti6yTik$d4X*ycP#tkwQXW$k|RsLqQ}@pDVDrh=)XIamSKY*ozil72_( zW&%)X)zRBdk5Fu3WN61gWG{li9(GoHJGn;t<@VH|wUu4M`FMu?9rx1;0}p|i!5=H_ zhvb{pzFcu;(&DX2Z8!Hm5WBX3HZTT~OWn^H(x%x(%u3{%`h2D~V~Pi7$$&Q@H+oV| zQsh_XTCG0=4Jo`VpIy+yN$@^+F<{obsXplDxe!TMT@5Kb*`9gJ+LYE{=KM|U&Yt`e zp|azG%mE_*S9`upk1vrAO>H1ZyWh@q+f46qoi*=L+DenyjKX+1nw!(oH_oN&9k$j9 zok2(w10`h!_VIcDVdZT(Suyra&xVQDYQ)LqRwT0bJZYnkWH^kX%*5s0$7Kw&G95#J z_eU?iFD)bA_}0gD9J@t>phGEXlJ~|x8is)<`|4AMeayo)u%kW!VONE4#?Mxk8^K2O zSEGk-9HkK%^W68AU5>z6;hElzsaFgI2B18JA^X?ED6SsT)Y#Oq$Pbu0{E@qFhYl{_ P9{&K+N>UXPZv*}tK_T70 literal 0 HcmV?d00001 diff --git a/doc/index.md b/doc/index.md index 4a1d3c2..fcd673d 100644 --- a/doc/index.md +++ b/doc/index.md @@ -1,5 +1,9 @@ -# ControlPi-Plugin für -Dieses Paket enthält ein Plugin für das ControlPi-System, mit dem <...> +# ControlPi-Plugin für das Lesen von JSON von einem seriellen Device +Dieses Paket enthält ein Plugin für das ControlPi-System, mit dem von einem +seriellen Device JSON-Nachrichten gelesen und auf den Message-Bus des +ControlPi-Systems gelegt werden können. +Alle auf der seriellen Schnittstelle gelesenen Zeilen, die keine +JSON-Objekte sind, werden ignoriert. ## Installation Eine ausführliche Dokumentation ist in der Dokumentation der @@ -8,7 +12,7 @@ finden. Der Code dieses Plugins kann mit git geclonet werden: ```sh -$ git clone git://git.graph-it.com/graphit/controlpi-.git +$ git clone git://git.graph-it.com/graphit/controlpi-readjson.git ``` (Falls Zugang zu diesem Server per SSH besteht und Änderungen gepusht werden sollen, sollte stattdessen die SSH-URL benutzt werden.) @@ -21,7 +25,7 @@ Dann kann es editierbar in ein virtuelles Environment installiert werden: Auf dem Raspberry Pi (oder wenn keine Code-Änderungen gewünscht sind) kann es auch direkt, ohne einen git-Clone installiert werden: ```sh -(venv)$ pip install git+git://git.graph-it.com/graphit/controlpi-.git +(venv)$ pip install git+git://git.graph-it.com/graphit/controlpi-readjson.git ``` ## Benutzung @@ -29,25 +33,26 @@ Eine minimale ControlPi-Konfiguration, die dieses Plugin benutzt, ist im git-Repository enthalten: ```json { - "Debug": { - "plugin": "WSServer", - "web": { - "/": { - "module": "controlpi_plugins.wsserver", - "location": "Debug" - } - } - }, "Log": { "plugin": "Log", "filter": [{}] }, - <...> + "SerialTest": { + "plugin": "ReadJSON", + "device": "/tmp/serialout" + } } ``` -<...> +Als weitere Schlüssel können in der Konfiguration `"baudrate"`, `"parity"` +und `"stopbits"` angegeben werden, wobei die Voreinstellungen `115200`, +`"none"` und `1` sind. -Mit dieser Beispiel-Konfiguration kann <...> in der Debug-Oberfläche des -ControlPi und im Log in `journalctl -u controlpi` gesehen werden: -![Debug-Oberfläche](graphit/controlpi-/DebugView.png) +Wir können das Plugin ohne serielle Hardware testen, in dem wir mit `socat` +eine virtuelle serielle Verbindung aufmachen: +```shell +$ socat -d -d pty,raw,echo=0,link=/tmp/serialin pty,raw,echo=0,link=/tmp/serialout +``` +Dann kann die Beispiel-Konfiguration von `/tmp/serialout` lesen und mit +`echo` Test-Nachrichten in `/tmp/serialin` geschrieben werden: +![Test mit virtuellem seriellen Device](graphit/controlpi-readjson/Test.png) -- 2.34.1