From a5bfaa650685c6674c340c09835cc1fa5c4e98ed Mon Sep 17 00:00:00 2001 From: niwciu <57457942+niwciu@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:53:28 +0100 Subject: [PATCH 01/10] ReadMe: update Readme file and add harwdware schematic --- ReadMe.md | 29 +++++++++++++++-------------- doc/HW connection no RW.png | Bin 51923 -> 55210 bytes doc/HW connection using RW.png | Bin 29859 -> 59978 bytes 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 39009a3..052b47e 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -14,22 +14,22 @@ - [6. lcd\_hd44780.h](#6-lcd_hd44780h) - [Examples](#examples) - [1. STM32G071RB -bare metal implementation](#1-stm32g071rb--bare-metal-implementation) - - [Requirements for compile and run the example:](#requirements-for-compile-and-run-the-example) - - [Hardware requirements, configuration and connections](#hardware-requirements-configuration-and-connections) - - [How to build and run example](#how-to-build-and-run-example) + - [Requirements for compiling and running the example:](#requirements-for-compiling-and-running-the-example) + - [Hardware requirements, configuration, and connections](#hardware-requirements-configuration-and-connections) + - [How to build and run the example](#how-to-build-and-run-the-example) - [2. STM32G474 - STMCubeIDE project generated with LL drivers](#2-stm32g474---stmcubeide-project-generated-with-ll-drivers) - - [Requirements for compile and run the example](#requirements-for-compile-and-run-the-example-1) - - [Hadrware configuration and connections](#hadrware-configuration-and-connections) - - [How to build and run example](#how-to-build-and-run-example-1) + - [Requirements for compiling and running the example](#requirements-for-compiling-and-running-the-example-1) + - [Hardware configuration and connections](#hardware-configuration-and-connections) + - [How to build and run the example](#how-to-build-and-run-the-example-1) - [3. AVR ATmega 328P](#3-avr-atmega-328p) - - [Requirements for compile and run the example](#requirements-for-compile-and-run-the-example-2) - - [Hadrware configuration and connections](#hadrware-configuration-and-connections-1) - - [How to build and run example](#how-to-build-and-run-example-2) + - [Requirements for compiling and running the example](#requirements-for-compiling-and-running-the-example-2) + - [Hardware configuration and connections](#hardware-configuration-and-connections-1) + - [How to build and run the example](#how-to-build-and-run-the-example-2) - [4. ESP8266 NONOS SDK - TBD](#4-esp8266-nonos-sdk---tbd) - [RequirementsTBD](#requirementstbd) - - [Hadrware connections](#hadrware-connections) - - [How to build and run example](#how-to-build-and-run-example-3) - - [How to use in your Project - simple case withoud user predefined characters](#how-to-use-in-your-project---simple-case-withoud-user-predefined-characters) + - [Hardware connections](#hardware-connections) + - [How to build and run the example](#how-to-build-and-run-the-example-3) + - [How to use in your Project - simple case without user-predefined characters](#how-to-use-in-your-project---simple-case-without-user-predefined-characters) - [How to use in your Project - advanced case](#how-to-use-in-your-project---advanced-case) - [How to define custom characters and custom character banks.](#how-to-define-custom-characters-and-custom-character-banks) - [Example of Correspondence between EPROM Address Data and Character Pattern (5 × 8 Dots)](#example-of-correspondence-between-eprom-address-data-and-character-pattern-5--8-dots) @@ -54,6 +54,7 @@ - 4 lines 16 characters (1604) - 4 lines 20 characters (2004) - Allows to configure and compile only functionality that will be needed in the project +- Allows to control LCD backlight ## Release info ## Hardware configuration @@ -63,10 +64,10 @@ - LCD data pins D4-D7 and LCD signal pins can be connected to any pins on any ports on uC side. ### 2. Schematic for possible hardware configurations - Using RW pin of the LCD (set **USE_RW_PIN   ON** in lcd_hd44780_config.h)

-


+


- Without using RW pin of the LCD (set **USE_RW_PIN   OFF** in lcd_hd44780_config.h)

-

+

## LCD_HD44780 library src folders file structure and description ```bash LCD_HD44780 diff --git a/doc/HW connection no RW.png b/doc/HW connection no RW.png index ccecc6fa3011998ac2aa44a6d913e4f2168a68dd..171cdabfe4eec546d1ab921f0e36fa815fe1d4d9 100644 GIT binary patch literal 55210 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 NR}yl66^I-7|1SebB(MMg literal 51923 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 Qix`QE)3j$qNHKD++ran6`C?#y@{PkXUxMlA=g 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 ASpWb4 diff --git a/doc/HW connection using RW.png b/doc/HW connection using RW.png index e31a4e6ae801b8c06e93a94044428d65ef4d0425..1e85f587a733b1cdaecb85eadf828dbd66659e12 100644 GIT binary patch literal 59978 zcmeFZXH-*N7cLt63ks-!D2RxN2vQUXNEeXayM!jvgixdeBvdPkQWTI5A`ogoO6U-j z-g`m|MS4Pq1V~6Y8{hAganHT?$2ouQ9pmgV9B#7P+H=kM%(9-jKkDnMG0?NqgFqk# z4fV%{Akb-75a^V|KWBkoGL=}Bf&Wf;8>%URih8fF0DqizQq)ldfl8vzAKIP){-%4O zZte{NG5$LKccSVGbPWVrnbvr$X#CQ86?g6_%gFEdvmP<}mmxQePw;E9W`7(^4h>~x z5ix1eHM)53gzIV6OVJ23MdKv1Gp;xPIe8`gb*xR6zzOG!)3Pe1&_qddw zp8C5tWA_j6ipN{vg;xxJcS57Mf1dcexB1|-#NQo|{QLiNv;QMA(ElG*<0i-Xqh-be z%0b717jNP?;SG|`>zi|7Bf<{SC7eS*|fE;!}Jc^(9^=RLNQ&{YB7 zkMb8%`TW9Xvggn16E)9Cw1U`Ap%F z@+(CJhn6n=e)*no8JAzS3iy){ttV z5dHHkD75R{u|?nHpg;17RTT<0-IJ(O3u^5hX??Rq_j0>Jzs-rGePO(KmL~@q05N&_ zEdF`xay}kr@y_QAfOt2(|6+>0B*M2xE3EEpvw_=T}N=h zh_fie_gI`9$Kq^sC^2lJQr9w2I&R;@jK+${&(xIx-Qg9fL_`klAuctm|AM7smde8N zGSandB2zL@&ftieicGkI!Jzb%AG@?e$+KQpw(N~NI>xo`ZYHDBY#>lo-QU?4{zPVH z;VM48H#S?f=8V07ql|mC@ZG)*+{k+_Bn}HCht#<2`tu^3EfJ`r~HHe{|y#6lHJq7%%VQ+daG~l0+DBXYCuqMyR>T?XEWYI(>+VSy&fyC;UP5diA%4;~Vh`S6=fvc3WertBZ;3qAz|<(cEh%*Xi>^JY--5 zDSh0yiSg_OgzzjEY%pv=9#hcsW*H3_1DDc&bBfO|AG>o9=znyNIzNCP0*9j%Xt{i8 zFO}%%=yX5&4GauOznBRPXW{?x`pkLhZ0GX~3?@-GQb?Dz$00Y zHS>{#r0?nz;>NTMl}sE;cwm<+bqe%|@lj6G-+}&r)kBY2+G}S~tB#t3t8wlDHvnw) z_&d*ImM>kas8u_|x)dN@u@5m*eQHM=wAWb_(T#^`KAet?7UBbeUigpHBa3!F`wUSf z0r-~629QU_yISXK^cxkfhgqJy`7&Cd7qe-8TrUjeXv$JJ z($-GtEJ91{Z+sN0_34hm|DyD@dzoAxHe2wj|LQ_d zcP&F^Jt5D$Ok!ns<+M}OFlj>}gOQV#V-q~K5DPrgQr_&*(>bpjCqR#MP4f(GbyCL- zw7$tkyRwTRkbnOC87W(eC$E+8hVP{n6gP|uR!*$No;<#M_!w}dl=St5 zaWC!o!5-G~W5bzk3`wF3?qH~?^$>!Z(caG7dt>k;a}IGpjWArXX55ojuVD`c=E3Y3 z9zw4d+jkt+94rooe|U&!Z@-#j%q|CicLTl*efReC3bJy%ec^|rFksFM$NF-!O~zl; zI*hU9?%lhU+lve@G_wN_yqr5@YsEu?nZVEWRpYR%}2+dNL4j6&Q&A)H)n@l`sj2wS!&+|AjPyLG|*nQFiz7Y2fKe2b` z%xV1y02ub=k9}1%Pu6u_m*HFslZHTUxm|rXq~*Z}@*dh;QPC+Gz(~-(=zl-0F_cVR z&SZqtJ+v%tAjd>{P)x*{`;6Y=5eR_Mz zA=L^#^9q9R&&cN-Ewrk|njhoH#J|^?7Cwnid-!)dg)SI3LrO7!^dMMVjuA4 zoaD$jN-x)CNtpnSk-t%-3gZ%yM+o347Cfyd0NYy1uE86j5z- zl1b-yQ~+_N|3%M0YfH=52wkh>Q65E_%0CiEfBtmy9_INd|gi z=653GezFATAWu{v@*LNp;g>H1y-D*8M>LV1#4?S!wo2?=6n4a|(qxdbF`Z}OQE$r3 zS5yj}25mYJcH!$-mKnH85sOhCyGOoVu{orCDYnk+^QXbZV)>Dn)Gz|%$ZURTb*I0~ z#(BURn(jS71Dxd1Vs=$Hmp9`A$6;o;h*j^DRGer z2@ipp_r-Z>of#=GBX^SlQ^_;R!9yxs<10KA{_vlknQ%EvXpt0fp8wFC_jcSXXP>==>5 zTAXOij04?UFevcyD;Q+0oaReMP7fy3nac9MtMD z&egYe>M?JNN*|mK;WEh9nZ^ zxkmIerBx&d5svtDR(@h6aUENA#4tELk(_Un83SKv;7>w{&1yequH6lgJNRPZcUW0l zA+&)s=<^#9!vuTi+{i+cEGV%hq!mgkrkO7VnaW&gb5DWx$jv3F7<;9f4hq^AJelnJ zXL!J_chVeT3YeUfdA6pCxXUmy-?~1RbLypCk_@NpOC>WKt9E{=t_80#3U#M%3=*ob z2B2hGF#Of_BC#^rC^7V0D3btI$)myC0LDZsz$#Fc>2y!l9$@9hmxQwzD~+RVI`Mug z7S9{IUTshRv`B7}(-Dk_fDPZ@?2T;;Za$ec!(J;# zv`TX*^Q3P?;@5@q9oci^RXbH!np>yBVWDmdgK?B*uyoA9Vn@yiuE`8JjsU^{$4;uy zIS^OO&Z*?<+vlq~ezKY52AVr*)R1~B@-fwK%HFQtatOJPaOMErBqSpAg2>$?D??lG zJ>0~q{<+ZNd&LlBVe#G(TLvd(p3c=hFT**x z8b6q8aL;F^k0g8e=$nsi9{fC=`Cxg%?)9dS6fJCF;j$?SZBqNiB3t(aeZ zB=PuZjG_kR<~5_LuZ-@auJOsXl}qxYB4hm%MlPtIm3mT#q?$d2f$l4uUpd=Wp^;y{ z>7@6TRBFLjy%`8@n8cj~c|*hXrM0Bbu}k;6J}x+-o4v}=l8XuG2Jo+7ca12!J4O}D zdHvqJ2x@~*M+9@w#l198dLMMtk+bA7jK zJtf;7P?GEtlAm~Vf6#ZVeY`kI!O~_0d7XO2khTF7SwvK9EF}?|WL)o=&p|vE=wfvc zZoxAE{n+s+wws|sYH@JMx+L9VaPBH%b+3eLv~OTCE1lptsUE1)Bd^it770xoVylFq znyz|iKYHd)?vYr8>C~WY{}pfoRJU$SucNL~W4iCnQRP5zk9OnCnw)lBQ7rc>DP4GW zATDr4uG;u3P3C^F`5<=GGP7FPyJsp`mD#GBaMIFUD_++yyAg2DKsnsp#^48sI&(>QR$7 zZe0)c2)8QN%*0f~f|8*ozxsI127U-!n;E2uNI+A?T#N+{wsW(H`l2@*%PxS%{(04- zqPf9PQpwIZmEcwpviGJe_5tF3b0sbyo08P)Hcg-Pk4OtzY$NKfl zTw)TdM&d<*`aXrcGxcdQ9t<&`ulwOb`e+MvGb0Wu)jM6xDRoirVujlRy!ahU%^CuKl1a#% zGv{d-zVt#fCH$qv6PE5W@yiGCe$E~x7wZS>lMdHPstWSE#C~m4?8?%vAATaGXkQz9 z?7YxCl9Vu0+?H(im21xLRJ-FpuELkZx=G3*hxSo3J{yzQoTpwUZ!hv#msS$W_LxRq z&M5RIl~ve0UHhz%6Z9pY6ecyDDs~j$=)>>rW+v$|U#OG*2V7jXCr0t3ELea8f_|2% zlDArH0YABjxnYF-x*bSXsL+M#MA!uq9QrS!2;x;<6 z|Ey6p$g-D@7JaA8o@+6o3cs{Qmi(^JKgCZ zmkpho5vn<_~ ztB$3mB_CGtr-#`Vb;V{MN?wu=DG`gW@U90kvYW|IxU#V}qX?%ot(4!ywcrp`(26Q` zn=-^cSoQs@Su8)YBJQ-G&AaKIh{h{bQgHGJfI{AZz2SW77%)=}&sFeF; zvR311dVZ^s8C4+DX8v=#-dWf9hbe0S#V)(-sj^7CMnT8U#7P zp?yankpAo=k#foW0C0GvmT+V5Nf`!Bn>_?Q%lpJk!b?^vvaHfJrB+iqxS-lwdcANj-2lpD}wxUB_FF}^J6 zhs_&O2A7v8fM0<2ub)i5{@cPW@{gpk-=eVP`s*_()x&kT$2qLgS5=_K-iviz%UfS- zqL*xBRqjSx*)ITak$vHo4&SejO&&QZhVPx!{L&N-rLlmc(EUsg6s1DXD?W`;wl{T) z^w#Lp@iF|^lQj5sV2&5Y-G_cUHrQ*~>zOyr3}TBi$N=)P7u-dmjqhtB8g7-5eX8|W zoE>9^4#oq%Uh&YW1lil5BRC8E3QR|8P4eeIIL{jCU1~i63e}2amymiq7-_-GxsQ(M zwOri9cyv{(?nsr}#sIQ@Rca>XeNDmIkZt>rDQkIBitoaSpuFjrZhKX%=51N4~peIfbH%*bYp0ypd=D99akF&ba^+2)@W79xAB`mHkcu%0YSV@hgP5K2 zNUMxsyxpmG|9@P)qGMmZxdxF&Cd0&m#}JY=9woXjP;@&^wW^GBq9RnbOhf$9B>l6QA8IZoW`@gHMV@Igynf$ z*2QsqgLET7bH4SXKfmKHd97}w=bMlDvzG{|??pY&c=su3c?^On;rba#UG?JJWm0UeLg;$P^?IXIxySvgT4U(ZT9PF)ak zpWKbZZAMwvcx!4_GG z2URzR8yBUx@qywsR?pT?QQ7LLPTWD|M3tVP%H*19-xx^6^B+ZhyO`e!9z&Z@y_FFP z!eyOynz!pQ9y=8J%1V55tf+VQr~DIf^^l?(UB7vgC#kI(B1tH7=aB`;@usRt9yLy*A-Y&|kFzD1e2;|)^~y?D}4 zRhax>Vd|FCsUN93MC0O9U$wLzys_!GEep|YD? zPAh`mf!=A&-bp(F9HJD2Q;bb99eo{V-{(8KvqYUWJDn;#T*h@qqc*HdT8HfMzl0hQ~M&` zEviN!XG0aTfGVFzWaAM0y@#}@)ZLp3C{|Kd9;tyrWj<@DtM{XiXa&wg2!697OP8s- zYWIc%$ClRCaSD*Zx2GMg*KQb>IqIxURvU@bZN8Rp-<@J9wWxFt|M+nLsHX$PG-kJ{ zI`f^SJ~Ikwjg^fJh`z2Y=NHI=hr0s<1M4`u6WTn`R8z^RmzmZfRG5_?4#qC~@@M1? zITsHCL#EP+M~mZI=y&Wjw-ohs*Yk?7^WSVb!`**L<{xP}4EK}AQQk|Q8+2OqzhE09 zG9E17j_~N+b-%E}K5nO$v;%nE_%pekJPRG0-0Vx7R@-{8bFA6fHtU!M2{6$sUKB%a zKHph<#V_8BAFb|oKqx0xe|=(UQ`}wny(Wxia>TtuGz)w^S;Dcax@VGf!%W@iedP!W zqp_OVyoQPFaj)LU&mf<%>VPi^PUq)KSN$Op7XP6ofadj2OGtg7lhsDwT#4IWJWvu3 z2zrr^5MJ>lgs8z8)VsGty{t5#g$YX@k;w*&2K4wYSp&g#ztOk;0Fo3Y3(TdWYQ~>>w~bY&L-zWFi6DmsXbgZmBnQqKH?_ zdGNMLk)=7BMlLwZz;2Ii-MXWfChNOtSPzHA2?bQpW#`!%Rk~Z@UNkX~y!7>>tsE27 znCCBCf7s9Xl3l_zceW{v(86Xjyfuf>31vI>k%`V>-wrpbCR@4+lnV~?n%LE*Oy!6} zKjiU#-oL~vHS!MKz{6eR`*U2h{#h|J`V`AyI+QrF7z`0#b&TtYkrm(C*Sa@V+3*Hu zpv;P-#vswvwKOTPv2xOUNwOqw=ftvm{f_2$#-JLANY7-J0}r}PIaiI($Fvf9*k|qi zNQijk{Nayve!-*$)6>VCmDUkH3kIN4ejpe?bU;P2?v+2tXs@5v_4_8Ak~c80QmePd zF0f+T3w`|x66McDY`flPX$C)e&M0Pnkp-;O?b)+6#6eCVNMJpBlUX~(YdW9|30f=1 zc4DYH&DCUKBsqUU#&`ASsc&`uJL4!b&3N5_Tq--*Wfc5eyC*r8p5^Y-Frl6#@Q|5J zP&U>&K&a>b!m|VfBvUQQ6bV6zd;WPWbN5#CE0Kr$Qvvw{8*)AHE@Z_iC+DMN54H44} zVduN%$CG5ggLrs;(~CHX)SEVx3OITv`Br^}S!Xd>uL4uRaJYN0W3xP!F_15_?^_RZ z@)QBTtdlB=v!P|9=ni}c5xheU5}+~mS2}02ufO9%CU;y$73*Q>imDZbj!R$L|T;&2YkT=@X+(ylCE3Qvv(rGEi*jG_uYao96JwEmmg-ruS?E=@UWFfB$#D z*R=G5&z4SqC^7rAJ3$c)-YLy{?R7Wy0^@4TJKi-2Z*n5?2Ew?4pG$_2`$A}T*l4MA zgibP?!SypetHAPF<#YvfHsQX*;r^DdQI1y6TM0S%?oa4ZAbBN+o{7m112PxkzN0$f zUT<==yN;ZRONJ4-^Y)L{2GRhdXdOqvwu{jzLa(mhme=*28$I-o#R^x&o@Bi$SWS{y zQZN2+7y0uBsV6Cqa8zc}mV_&eVv`uyH{BwWS2m0{I?{dmEuP1qzmd@fidassmC)L^ z)~i+)iu}-lEZept`N5zj-Td{LMLc9o1c&+nvKL#wE=+!!MPXpo0-tEC-VEUJ22gd( z3P4`JS0~R*DjXe_8NqG4OVWZ!=6*gt$+3VX2T@!7o5^hN{+}yv$I_KhTf;|;z z`*Z8ee7X;LZ-g;&dR4kjU;>lnH;9Ec=qameFNc5$5%l3;y?w`Jzma?s99PI;Nj)vq zZ_2aQQg|;$Pu@BGD6q@yhYb?@G=az-=uv+b^Jym5QDM>ltyJHfS6%!>t)E|UMK5}s zY`!bu<~-QE78&JNaW-&r-G5#8L~#|>8nPzO8WI_z=U8jm>+5-K->;G)vlq046ZtJy z)>W_$LPt$1q=x(DOm&)1uUPCUV#?_HbP5KI!sUZ@=s2yBW0~VGV}32AGEioD<}A-33@CD@|FM zYuP0}bHT(4nh)~VzeHToeexv1>Qt-Gv%|S41!<^os$sS!uvF|tIs~9~twS~)48`<6 zrZ>Oi*mRaN?SV3eDb?ufcu9H)20a}d(CZfJ%4cI8CmPkJ=U8|}yQcZ>olY{Jx3cv@ zk9tJhk6$kCZX0m2D$Z&kuCU@0P9&0;xZ6=2!q46Ea+cy0ltoc%CA7Z6;#Z`FgLXET zlInPowk;74*Y>AtYpT~2#!2Zl5b3;Bfin+NnNPKUIbM`9U++^mDsPJTq4FvJ#q4ig zXBUJ5J99%;O82tCR03=d=a-I?>;)7f^9zrf%XC9f@3>Zz&tq3<4T?m%!m;Bb1qeUQcnpXC z_HwGBQ(vv?=zW>T4>#Mm#%jvCl{q9vu}2}8fP*xmb<&bVg{wK`AX3=iPxnsGXJ_{U z(-nNq;y(S5{;77w*9CdMaf#Vy0>O~I6ECJ@r z4$XjnT#M!t5YPldo%&_xy^lC)ljYc3e{Pi%f0}%2Ww}vnK{=l`STuA=+I217WN52C zfHedk8>yBe=dt_i4GHSGJ^Fz1pjLY2!p03~ef-D1wb6APX(ys0*qymc)GmAsJuSa? zP}R4!alSoGGe3CZ(2H|4L+VpxjyVVKvtMT;tUa{{6kB2?Q%hPSi!sjOu*NnHGb4S~ z;L7;Bnd2x+FY2`nDrRHPKE9k!35qOr*>+%{p=Tr(>IsBlro9_jZdK=vT+p7r-YRx8aND$az59fe+QHFFRWo+VCQHvg#W=tJ zj&D~bd_9pT99@zRhusxG`%G>FvoKsn9*k@so7=!k|}PYB(2gOaq|azSV}wk zj2D_Ow|ZOAbKl{<9jHI@?GppFHR4knMZI)`eL#i$x|!Cc`;VC4!>TX z8L#y#4r27S0>HhrHG(6DMx_+kpo7`P9J~GF#URRjeEV*zPlU>?-y|1ezoUrkS$r=y zRTljPOViZk2>#_Y7d93Ua3V`R990$zc~tVOMqbu3_+VR#HVnT-)=V_<-G6`pU}!S4NJ$uE%r+2aOYhh#v|v*Tly2 zvXnvXq%m_Kt>NZl=aLsp;9~5n; z-*grfy^wEKTm-CBkE9)uCOlw&n&|>)h6Sd`q^Xy44Da5)9ZkKM{Alr60@_m$Qm#Hx z;bsIJG|p6IsIC4+7oq*shxffmRbXesPUImy%ZqP@weZP@2fTE5Ub)%^zfB7XPEPX| zChk&R-R_C#L}5aXUTS}8waPvWS?l-q3(T>A&bw?Pw4`8+6DYE$`m;+P#|Ut4i4ZTr)BIoaF;*_G3Fgw^m4ga2mdw8@K? zeh2ke=Z^44B8!N7fJDHRgw#A0WAYv+9FH`SZt#qsiirM$D@oe!w1G=>5WYMNqL_WY z>_wWMd3Em!z?-_+l^FS+vb$mzRUr<=2+Ex95d6ra#wq31yxs>0;f^-qy)NzWU=0HP z*i#007kh=1=KLW|@AGS16JN{tYMW~1J?;9IU-zxOBoY@Dlvye_ z_;F_3E#4YG4nxTJ^dS*vx6vMf{_-$g2sU*)DMr^D9&6foCR-a6$O*jjOzC~a&du4T zwS#zTc!&EP7&p?VM;;N9R89h;tS_rY)+Dgszf*Ya{?kwl(!z<004x~8Fraw786uXD zWL{SOCr1+2S0+sLAkEeI4%}jWKJfaOGU^%$usvRwCv0W`OIBon#I`o@ZM|+sw|@W6 zCo*LN-RE=ha07jW2cp^job+IqbE5n*2jB^$WwqfaHjxTStOk(y@TeuSKj4)1d7;@W zn)=TXP>k`N7Jq-uKw#_8F?A(#5eRrq0i^^M!~|-Y*qJBiJL9^h?qmbxy78!AzkZQ; zqFMj!EMgQ?vSZGOPF(`HL7O@NLnyQhi2H>sD*n>*62+Wcj%ZZhu!cJq9uQnGg?S}* zZR4CQ$+LCoK-B4^r>E9@XL)6;EC*9;Q#_7>PQ>KV%|%>u>lFVe+Ea2FI-UTLyVL!E zx{~m;^*Oc(m$*ZrP$saIaH31CNXq8si-7h`?+8Yf^kaH_70Ypu6Q6nwm#32~ktFI6 zjwv*^!^S=sisY2p9Wk@XGb^?hu&8h?1!Vy~*q0%p*{#Pu>7EHP32xu`7{UApYZF54 zer_1S4%UQyj*X!U)lLAC=p`|fQ*W5O+i@AU#EbTG>Pr~7;%*cCRQuKU#MbO*F8@3z z^z-`I1ZV4LetM78eo2K(I!pE)J-^M?@KKsbT$4p59>JGhC)fn%BlhC`#Gh_~hy`|3 zOPrSj&61mHYJmW9;ZJmP*;$ls z@JK)OUczJ&uw4uB)yT$A#zm{$RyR&du(j=GIwV=kA06)001DuJNQl2WI=nWdC`np> zN~O#!opGLMn2{6;gxBF^2R=2PZGZM(M-vw%Pj0`F;nE(>4L?|jr*kcRF@z1`TvGd#X;eD$-Ko|~ zqoDW`=+qOS_Q#*uYbnI zO@OjS(BW1aChCj=u+lL77+@hhx+3u8=XdJW>(^ZsPPW4d*y2i=Q#NIe48Uz0oq$n- zqTgKw3wWDU6NHIl4OWsQ0w3Xw=}06e@dL~#cqjA(Np$A?txETi`5G9w%*{fDOLiF` z>P25a9+&xNgG^DgjO_)J{c)(npTyS=ow+ZOkTlj%rVk%K59b4wF9%wnN$sBX>&Ku+ zNyqC2Op1Wc?Z0n~zKBYFXrR~)6eDZv3H7m1IXSqSk=ixYN1=VucOO%+pf%^Rf5!?Azl6o$ss7DLROnb zqw#mf=w-W<8+Yjjv5;p4kz=ep@Qf3n`NzkUKalzz-yLnaiTs+Pl|3XqZaW`AgDcUw zGk32JB}u&*>F~%)D@@c2MxDcN=AG`-m1HuU?0D{Ga~UyF?A4JS$L`g~lXN3(2CUCN zcHrI8!i5<_c=yo04w32zI%ezrX*I)BNFM7`59oiw!MTw13(=xR0gb`H!^v zgWLx8NexMBD}%}l`${3{nlcr(#&@(7gh}vtdBD-wqdPZ?1;n|sJg$7k3IzvysdO7h6*Zv_b7dkR z_kZP&e1B!B!=A6Gq4zN6Zk0&@OdRY|c+mLUU+!IG9dAKCPRs~pdmu=3d-+IfdL^rs zNe^p7H`Vt$S07NZ563D7x)Ihe~B;=UdwPszrJI}IF7_4^c3X?usnkv5d?R-Fk!L)o{bZzTB?u;_|X)&EW z%Z2!&_SOQN*vQJY%BjQw6|;kC7Me2?cwNFOfY}`b?F!a^{^lluJ=Lve8L$oLQn#>x zn_B=zlY!}Z7WWn%+}}I}6@~ta)OE~$e^%V|NnqV&YnplHYwU7j&beHV=>~uSTizPQ zRea*qpmo}P+t*|Z1(6`~?!Z;TQcItR(~*uhvC5M?1#f^+eDsqaQ0F_}1MIe{F>=tK z>($IDy2Z02;L52i(@b)wNaHkrN7cxj6LdDzGk@o?2&#fszklX5K&G;n048@6=niY2 z`o~q27Kp7kfWXeJnY^Zesh8RE-_xd&A0w|{`L3$m^FdelRc2E;u$WFTNz><5d1{wr zfxM3C9QUZc?EcaKeJHNYa9+9%{rFW6;Y0*@^t42u;P3}g4x-Z8lN@3S?voE$1&q~O zJ^?{|y1_tBChR6TG`w8o$7|ww$aGaID}U@LJCZ!aboX`?%E}#DD|k6z{=*NZ8^-S> zB=dLbzHIO4agMH9Hz*nG|n#{@7G0AdXO*<}0RR#-pY(FqvclGuk7n zl=qhg{4BqSXA@Y!!_8))s8wKS8BTF};6)G)8d+dnv#8Z6b(eF$vCqYN*GgMb4z_V7 zOy$l`^M_9hgLJcy*3*$L;2JK#qv;I%WsQeNOl)*>8fX`a5mczZJi`_0447$iOLY1! z41>ShPxs&#--4|dP^9F1=e_u^(?<+_b-EuSWc}j?COVqJm?okO3=GC=U<4Jt+9p53 zFwH1@pHInx$pR=@v>lBhUth{$spL@#LsCm!L~SEHMe%QmHX9qtiSNNaOT+r$fHhm# z!Me~HRwfM0%3@_J!U)-hagkp&kSQE13w-l~HdVl;CuEvS;e%NmMl!lh+MW|r)t)y% z!k4^ZH1{ke=HT*5IzdbQoT#=@!U>Qw&oSdUR5R9K(7tsx7sxi5Zmv`JadH5`6 z!z`#+DBXM~%6uquDo1Y`_k)D-tuI_F^Kucj|6og#VCi^bL z6QG0YxF^FJVDq<6J--Y)(YJ@46~MjtNxD-->}UHz{%-fhdpM!QeNtg9YY^wiKbxJ- zDw&mW7?UPu5|ew|7eHK995~3s6P8B$gs|FCShx}NMdt^NtdA^^&*v(1JJ+pH#7=4G z=V4OF>hIUDKiuxxwT)3yCI2+PB4P5bGp-zpZN4FeIHOme*_t6|T<#*pH?!lqGuPkY z8zPF(7`76#F)VR$!X`r=ri&AD-d4Q~IEai=h6U|OVEl*R$^a=LCKpbX&UfEnGzNg@obQd;m zxUc@M^V>t_)~krt?(h5APDzi2IOI*jBsOG+1oM5G*x_5dmjmh(BiE$AD>w;$rCgT$ zbk8uaFxN_yzfo5)3g1pPM`D?g*ph%fUth&n!wJ6Rcid`!4P4*SGw%fB| zjuu&SbV6tt*H3Y>1nfUadSIE#w+?vn7=Yq@Q|NCX@H3UckOck1j03xj%rwN9CMFh!S4b1q;K~?46X)hs`T1D_`q8S?^6^R<;i{WZ97nn9KA-fa zQFjufz2Bc zHrBd+QP#+6We)zk5#_BHu&KM3uGvX*eM?UdH@z2MSY|snT*3@Tw^HeMposfsMgjDK zmW_!6Vb6{61+d8iWb z;|Q~wgU|oq%`hdq2?`pw{M`H{J?TQwee;|K#5e5;Iz6a~ygZH>OmNED4@=sz0?G4cc{!j0cXR;6>$7IOKsNw(n-I7o`V|7? zwD!5SK&SBZ<3o0;y|GLf9Lpx%2u{PW-upMb0G$=;DNclmhEeR&qEw*oWV2NQ~JYQ;dwfB8sbC z83xB8tE1}jKAG2|1M`4+afEsJg!wDw_soS2Kf$mSt}B}^C~Rrg|SLeces+@=<7md`oM zdYS7Bu`kPEg&=@&-hJExb37em6LD8Y11naLi4DG{fl^0+!Xp;q*r6_DRmx5BwqrAd3z5t z$Wyz*sY*zj9+%&@XshNU??S_h=LHh|lkdA7 z(In%brdlTyr`~W5d6rx=5y$8L& zbUo928;Mf3w-oz(N3-1ML#7PCeV z4Z{H71!t7b{2N*g+b_TAP`YBIyf{0}$1gss_O2#GS`6%;ms6jbmpbJ8dx)JSJunD+ z#^auiXJ4)nD75?%6aXJ!`_ES+Zk}&xX?`BOF~z>VQ4CmlZ7{iGedr7*H0v)0g$iC~ zzLqDlUaf|Ot^82*^n{c9xv2*$IpGyRpP_pA-z>HL)+=sqysSrBr-bvfsA&6d#m*BL zMz354!2JI`qe@#_e`oLT!1qPdMeKjS_myf`!5u8JV5M^M2M2{@0$^M(I|wBEpGRLY ztS-Glqx!)pv*)OnuOO6@C5M0jKKkEJTD(Y1KYtPG}71`K0 zu!DaL*@7O4{+;kgS41;~1}?;n@FuB8nFRC z6pW4Zq+D*?W0_*f&X1|&f9R*k+HTdz-xFA(7I~LEqiFKnJ5#!kgJ0ojIHUF}wWLl#mUF66b)pfG*_d4>o%23Z6AM!T0Omq>+zQzRu)OofU4-uOW zBbWzlkhVe~izI+=xN+WVG(UB-48Vm@w$l=iNTe+;u7V{$xwt0u;?3lOdR6>>^?}kl zi+xFfdp_daH@(<&^j@+*bMy6sfGBnbJa>FL-#;HGYqS*5+h4{%ujhRK^NS<_@NtVR zrtofIl8)5hG`kTOdoI?V=KlBp6CjM{*^%Y`_yJ@is|T~Su%HrldisC7G)1T1I}fd9 zG!sZG-zDtGsX#+Q_($1%t}t!GA+sBX`Xx_m1)V=I2h3Mt>h`kT@zWaB+h@iJ49w$) zavs@uIe)#RwuUGF7rXIJR^p{rQ{QrSa{_&|;3X1=G7)$gVbFVw8GDG_ix<=$KDR#+73 zWC}z~k^7y`W)ynuK3`slA7_8wTnPX;Yd~kO@aex=3o8Df1K%LTfzeZS#WQAgnhLUF z2FDqp!^c!cGgl)Kb1{CCg(BIWA6QUMy;Z(w20*`+#AJaWdD-WxoUqN@zk zx)XKr49JZBuNi@yMZwO}eViG0l(}}t6-(&c&bA1d06D2#X>fSBiHIIx3-O?T$Mx?A zL_&RB25v!fqU61FFM!&={3pg5Cl2X-{o7zXbKIJ>Qtso7(Ul9hJPtG|vjWg^>|efJ z;;EAmI|&NaI|owF;nga2XO|oI)>YyFwI>48n&#rOmLJHg**|?A)Oh@T3H6-Co-$yr zZIVP=yseKsR^zF#2t8^T6=ElQTe3prDJ&cN_5ctdGE9x@$z2VBB9Q)$$NxDX1GOP zW~@^>-cK{e46^WFNPF)ba@Ypu7V)D>=SzWMptb0J9V z&~2fR;?2D|fsnJ142tZl(i%{OwE5)PpryN`@e6AkTef4Z?4l`S9)l7i$Y>@dE=47J zO~0M#Jq+eLrw1peu7A(LAgq@y3-e0i7S*s(u) zJ!w74Hm@fh=p|kBN-Cb_37Hf_Ry4V1&0OrAC3@a z+wka@!&&A*BTH9V2&-JT)3iW~moo!s^EbbohXg+ZMe{Aka5DN-wKPB3dNp@5!W8BR z$Je}hBFL58fQ{d{c%O4qmDE?oZPEK__KVwsHcv|f=tMV_=eamA>ukpr??m;KVH>i8 zZ8Tcx?KmH_n>z!iy1lLG5R|>Ap*fMdg{Swm8Qp0vl&`$-uCosixejhIW?7rd+ns}m zC@Rf&`R?t`Ql-VddQfNVrI}q;OTkubhq2FE$%a7g6Fx0;5%jG%b!^7VuWwi{e;4qe z6B-^LjeN6RidVQ#vaD;Cc2v(Mo%W+fVEs{=Vt!78PJrFU#ePfeD?uXsX6~4>!bJY{ z5^yg-ufYl6PB4FNb6gg0K*LtzT0K@LIeCHseJba@FvRI>iP98xq~pc zbtjy7)cCZrZ``XUCD6&ka@~z*kUGMqF<;?31Oy9nS9Bf`mCKXd{9iDLrm3HVqNkx z&>N)E8lunwhq|2-@7cw|Xm^#TB~wKEVr{GiT9w38mM`z|7g|2#xoM-4-(bYQIL@uk z-fyXZHsVshcDt!b&R)bM?eGzudTTCv(XNU5oT4AcCEbc>Ue}^+f4H|E+xAa@p3HMR zbMLPxB8QiJ=lt#zbvb8UfJoPBJ%ZP)XiB|`6_qxu;uNTuzPkx;D5;8e(175We%hahKL>vTWZ?+(- zcxuGJn$EPmhpyKD|8F(xR@JqEAP975r>pD3xx1|P`$YoZMNr2+X|A+d^hgU$-?NN) z^AOnJA1Imlb*5&cfBk5(DvOKw`E37+o zuA8l^fA+BV4UuCY!#2WR%Cqok1XWdca)|oKNUwbsk>$?a*;fpaqeWj{t?k^K=Z#Y& zu$se5Ax;2~Up$+B7r_5-cL_^W^4nIMon!2d4!>}Pp_ozeW{uz`nv(zKapsNexUb@G zZJ;F=2O|y!H$t?Z9rbxG|5+)wvYG0EZb9Sl7N(PIw&jy4=jbW0HFh`T<&_y4u8+{q z@sAAf&O$ul94weM$1#KM= z9|X*{1cjcXuRa>$WLgfrG*N6fQc@~Lq$zD_KYeuHy=sami&e|3*I&84I7zHplK;;! zZ$-j=10c8tt$Ofe)qX}etAm&U8P?llynM~`@HHlC2zjUJQBWMKzisbue1k|Pxj8Xa zgFy%WhP)ak`Y_Fdu}~aAI!NctxuI(6=VxQd1LOIa!e{{=a|y$w-vdjP85Ce(nrMfO zMr#`lZz#W`%hR$WCyg*Kez2>#QoG0Sn_#mV=7hXfB2@El?qNt5TOqDWl2XSmQ4;z5 z0op7h&Va1it~v2`)b$kB7EWFGm%D`>WXoSP294mJsTk*Hm+L}A>!K+n@}x_zaZK}1 zsM=Xdq!49`ZL+^N>hCCe@L_W)lF+fI$UZ5FKn1-Y^}M$Exhi~OuZ4-y>n6U%g+Q$S zV%Ab$z#*T%f<8mUV9!WXIyXCC-BbB0)~odUI&v~pg*4MfIuun}wI_=s8HJX-i4yS1 zr%c*w>UsImic4y<7*nRdQJ|=W4Nn%^RBmUCUx-R@f-(12B+ItcvGTMz6^59-UAr#8I!{0_Yh)*3!-SXX>VIuL3P;ZuQdXg}bd3);2=bMB+G;VpZ{U90oO2f^KMpYwvj6jPYS;L=yG zr5H`>u{J;b`o{3+^~m9)nLPIuxtAIY5;?o@sq%X*HlEe&{1>RXU&VHHrmLTU@U0Oq zx$l`b=^*2)-KjIl&fTXmUvf_cqKjDC!O7(cp1dK8b&x^x(U8ChNxlGo0jQlSa7&~` zskk#dbeep@NyO@Kk&q0z1O>Cqy*vl^!mz15?MxGAys%9arldwjgpCsyo@E9EfC@3LM_O_6kPEnore?+5FUAmcpGueSEH{?fc^-#iwZuCFq8NQ4&dXv?b z)`OAQNUITQ7kPuHs2w!2NHfmABRq6@GvhiZdXB}^t6$AFg#1R$nc$3a`$CNfNq>X) z;E^L;10PyWKR+X)K?_UXE_FH#>vQFTt#S7=EewvZ^pGthlC|5}@`;;}^Ix(8>UiP~ zOyH#@Y!_Q4Nz$rtJ)Afu_NLolQr`GD&+@1@g zc2zE8hzwP`NWy-a9jnzoQJXkT(j!@E0XBiXKlC_mYy^+t~IYu(+ zdG8>OVz<7x4?`=X^$WxKv+n@+ohfp8-FWi~cDsc`-UmCzVStlS|5)93FqmFr=uzRp zr73nJnSVu_1MAjzn2RwbwH;Ud32G|*_Fa3|M{qs&W_aV`j3g|cs$k1{XKBwsItdh* zp%&_?&)tWMWXpWc&joJD5HoNKeq5(4fSRS<`-ITsfoFGS`<+G7Y8o%re_YU-fxezW z@b;Ex7^ZK3bH?EjnN0(m-U?jHv_p^A8wVfpjMnVXqvivagO0h`2(7^hX!Y&9?j7mn z$PoD6VmqyofTPD$rA8w|lEUecpqaF`(D68sd#Q64@)~$%T9d3Y1@=sFmC5d!B$`@A zPbZbBc0@>)6YDC6J0|*vpCU5&?$;-(6p$IvO?@GXWbIKlJ7h)qNQv<)->ogH&foU6 zq9L>f$A|%&2PRVpjj(Q@fWP&Q&hl`#1!YogMEpk=SrG9V$ZYav*mm@R{yL?Nf%CTq z1+t&323Pf2cK<9~z5Y%rmP68}SDdr`<;RDm@$cObk`9t?2h~3w;q6d;L)e~>j5Z6= zt7|*;h2-hTfWEtd8V&PYxG5f^erxX)OHC&piH%GFSo+p?jK-H6CFnX2E-B-VQpbR} zjKyJm=Lr%Oh1?fq{Z1^q(#R)za@MD&n^^<|Lpd0L)&1=wiCM`ksPf%ULfdk zqYc52uJgK#BmD`FJOMoV@G@f9rARQL51#}jZb7|8LL(}z{TVtyEn6)7i^kRe zf_vn#bTN;yU|bM60Y^q-7c+5u0rV{^1@^uV_vQBY{aO&hIlbk1k~;W~HRyv%8BYXk z&E2Cq4Gf|WpnpXY*%2pk6~Ab z`1YN8EVY8gbyKR?U9rvTN$@W_e#(Qz}j6j_)Vz3yzlb%vU#fS4EV##RTcIkuEM<2>%%RRyTvA( z6A_Y>`9+ymx`K4IE*Sit(U(Csn}3KeIC4b^9M|1Vv@sSwUF2UEvt`XBVAj+C&^=f8 zd2}YG%rJ5$y{w3yls9@j#lCyfnPiz3cXXv(mApT0f(;d?b4Z5D-@YcKMCZ&N z-g5Up&?2$NDe_W^`tXO-<5#aKD*KFLj^TBv2O;sqmwyPPt5E)#+A(wb`Gd=aq&w(% z3@5GzvmSm_;_)ZiN~z zh+Vi(4$g?4#2iPYq()IlK)99IgWmvGEAHi+?R=kERW2`s`E6ufspHM~=S*7ZrByRn zwf=9nc;yY*jMjSCsQf;P&fH&4zBqUpE;1~-vwwgPVZ(XD(TkSo{kF~2qPKs-e93XX zEpZdGuuSJnkCXeh)>koN2Ds7=Nwb5(`re7z8bm{Bi0$|&K{&^KiQ;{#MN`mqQRTeI z*&HcJ!-wSSrt@p8qRl+on|?8a%X2_?H5v#efcj5v%!IKBpXvR=)d;Q9ux_N%?QGD6 z<}P45MekmOc&E&rqn9L(y@enPE@g7!e~xkd34>K&Dtg`TuTB{qSR@GGcwze` z+NiTx0mXHRtmveMs3aq540m?i z6HPyR+I>-g=Ue9=*|*hXey_RMerhKi)^KuSjHeR_pU2PmeOSAv@2KU@#NdFUDn$J>j}_WSg*kD8HhKKvww{4QmUScr=7$54>i{)JR?pP zm4q|cwvRgsb0^C*DzPMZo&+_!IVJ?|snOZ(G=3CPFfE<)7E{#6(e-`giJD6BZ>sw~ z|D{sd2y>F9-8qx}+O@MNQzIMT?Z?AxdCatl%_>%Vb zqyzBOU5G%7U(;6ROts*6U7d^}Va?5jEJXlktM1-aQv{dElOW{Tz-2=ViO4ZoOd_oBZ$dI!JO1A zInd-c0j)nR$uMlA*5W`*SxP5tOmgXElGuz6C+cqs|EPR*06wxeZY1z9~v)nA+&18oYRL50El4Z>Ew(cB@opw!8W2x)zSi z_E~@Cs_0yqr7vKI_Ge}J5Rj1wRy_;d$d>DDdImw2Ygpt()Y?W%+I5t} zGoNTrSy1!daI!Cv5q3*g;4nE!2ooFH8@rR4T-(CKCCqSPJzi9_F@sm2Q-t$3iHbSB zVS9XmSXF#szhE?j!T$x3o!SG-)X$;K4iM(UNHFRSfAPmLug41F1im1#ld6$@|BC|% zsJH~!WO7@9B0Q65HwIbXILH{np8x;AoT^1sE>QG)yf@MxT%7`V`{{Mt2*VqsZ)A#KP9P#nhW>}{sM2<&6`@{%3is8(%~=I(>j7k@OK zrqQF#cZ{14x(?K;BmwL00??^afs7;DlpTQ4q8U3P@5^dxF`h;=b3#%wVgNK)(Z!jfu=SM@ zTl---MFox`@5h?-rVz+=Fx}!-85SPo=PX5J4N8pqb`5GbKHJW|tY_IdX|OWXmsYux z{$@bO6V+RtCF?0oxLvY=C77O4xN@}?v59L0i6Y(+2>sJ{`lrt z)f3aW`Khv`hMA=vTj@+}R>wG;=M7JKjT~3v0)rQI)fvK@N81xS^X%&!Uecj~+u$<_ zG{4eU^;;`u6a@=hR-_L3(ZaEz?{i)ciS+EeJVZKWs}g$EhWjDQN#5K;wBK!E!pae; z>`5#3y&1NRZoGN&q@D{p8=m;)d+6Qz)K?$Q3n?I;NKiuOh5OG!m?!U43L0$}GCfer zy2+8+_(~^j|540!E#QJH9#~ND$P(5LGz)zf9Vvp6?^hd0+ii{)yRna#8A|ah{tlJBKe1sX zwKg7gQJp9#q?TS_{_Y*LPV*9mc8I4pjZgVpdTQG# zkdkpH!3<=LTaFN|9~6JK>V&K0yEgVbh#8D0(&}UHv1C5!{kAiB3-sX4$scCFP}&UC zpQU&97pzdG!xA(=V93PhL{PCd2c5cK5K>N;pWc65Wbf|mX80@(=)Ql-4Z4$#=}B8J zs9rZj$y{2t;NR2}4V{*Ba;$!j&@3D?M-t5%@?(%r8jEcR>zzc^S=5hwxt|d1LK#QF z$rW>4c<)dm+x-^z{c1YM>qmqev=&Rb)>FXZ34*;1ZF7n!McZ`X`TawBJ{g7glja7$ zdF9)4Wz27l-H@14HiGw(Rqr^u+;Gf!c?XuwpH97*flaKhSkN?NC>pvC~4i{ z{lFYh<^xjyHbpa*B6i6ZmS7q$hsK|3j!5=(6-pbQlFL z=)z5T;KqexFRC^f-g&8bdevvE=ErBSRXo|+ z>DNBg8f0$W_M7`M z$SzdJgE={NVn1Q~OJa57+w+j@*v)hFIGfATqKR=fhOW{| zPO;09qwatd%2u`Nj7O(q%Ya=sc-3hg)wI%F-`E^|WaNYkQb2@~>H&aLabr zg%vru=dKqnPIN0fM$Qzhr8mGwDs^plE+17EV_K$|?(SYM3eKyhQ_AInQ z43Jm}M5{G?ORuS6Zp11_T|3UWw&+0!n0XVss)+YAYdZMJq~{64RePulDIqQ_zxM9n z`>Xo14V{rw(RRqBW;x!w7j9SWHNugE)?piOEeN;hZFzjUQX4xtj4{xM2Mhv^Q2#8T z>cGS~VT#eUF*JFXaUyjA=!Ti}bE>Q*9DTUh+tO0HT5e0xn2(?Ntn%JDi13do@~I|3 z!6+Wv9?gc4%?qNx;6x!Nm3!yGUqbj0bps0n3+luulX0h2!Uw7pt_k$V5N49wq>iD^ zKJwjlLFG@ayX}oH6PR^DNuXMT1mBIn1_DaY+sP!D3+^vLC7K2O!UPGUk!8nz*lTnC zUcXhYOi9K$^cjfB<&?>S|C9tm ztSUL4=u%eAn(upMK~I7n%@fBAgTSq7tG{LBvo)ullXq&uM0<&bDAEf!ekp#mdoN8c zhb^*Zq2#NB@It!Hc{wu0W{#IA^Xah_ve$KR3o2KFHfpd(yYMFc(l7<8M%i1>CYOWi zT3$U1TB~?Q>#V^TiG6o6C(vXaB=5A(){BRjjDxqA@Z1u|-hMCe^ugGkG#LprhEn%6 zYa|6`zGAC&&@1OM=JOyZ!c77L8&(!pTr*3kU(m3|vQHulcFGS`3vvUua)PL?X%DR3 z7x@JA3=z>U8*a+{p_5=e@|uV8`#SP0T%lbiYK7-Y&^WyrcQn zzrotdnX0KwCUo{3M4#-}iyVo(PHHcM(-f>&#zk<`Ag`P-t)#^Ea+uV|6Ox-?IuF23 z4I?J0pIup~wl$xdiYyL?Uu(ZE>KpAVDl*xZ569Tfvtnp>6J?4`9H&k9*_rRfOv|CS zivo={rW$vIMBdO4LlDn@>6*^MNT(gW83j!bOBjy%mPuPE(U9H7U6k4<;oHF6{6 zvR0M70(VN6V0pf=!p^6!wzDIBEQB$!)itpC0HsmqATj)^b>RT3z3ua-<=n7Klm)fw zgRkCgnOh#z5fQUng;9$jmLKkoWyx~rVKR0LSDp*?hDjCY=P=nV4tfA0k?;4($Ssn9 zBZUooaA&=a2`EM~cAG8ZfyTG^}K;L{qkHKfX9 zzh0~kjx!kb>!NNilftj=Yuj0dZlAo7Es{9UN;M~F(CmG?3!(Y4I`hO`aA(T{IPdY; zo2-(MCV~cyL+4aftfzC?mF5rVlRwdGf%A%Q%TUfhdU#udiDl57;@3n*6I4Gzh)oUyrl! z4cy+wf3-i$6ckAhS~F>=H4Sjg*nbwSC^wOLudvg%sd#2m4a3-Ms%qw~8P@Y)2IBHd zgeuK?4+D>GXX<`nkZ=cPSIy!XsY7h8QwviEf-d#hT|dRJ(}{q-H2%OdCk@St^hrRU zqiXJN-m!E2jRU3-VnzP@eC?>G)P_nlfUD75gBnX%*oSuTf>ZsP3HI3GoGALHnWglB z5394K-oo|qq<@_^w~$HoJzg8Z)CmtSdXZNZ7BL(Sq8%-3%O^{oP51Z5JY!>Dcu1K; z8Y}=n75IZdYCp)gvQRZqd#U$kJJ~3TF8{9|KUQkJEA@amXh}9KgDYOOUdlfvD9faH zygHN7?D)yro?R@lsj1AOZ@24wcM0$X=~U8laAJU3p1?S1W2<=8iyNF*%5*#Qv`B8z-($G9$YmnU z-Lg6R2r*EwU!geiV<<%zsg1A-ID1C=CLyZ?oOtVbZsWYVl@W&WEFwoWX-lU*OEM_YAjD8Ns4~LAG1i}c(BUvfsiuKAtEC7Xru}{s3}wi zNudUoG2HWCIsKxonsy7L<+~k^uS0@`k3hi%wMlDmz^13X+%A%HYDl0fuH1kZeEL?x z*(y}n?;aAy;Q-^SXLIRoy$#BYuaRdu(BEWaLVfH#&2YQ#0@3G|B-F8Bwd89P8F!QP z%`YAom6Hcq3ditiTo*42*gw%NFKzk*UR6Kzi4F53C=wHNEL7ir%4G@zM*&GoQes z)D+6giZ(o1aAz>sO?et|fxn0=Sm1{;;V@QLC?>?W_O1mS8%y*Wn(E*1n;pS`HoI@E1W4Kk!?S)PL9;0w4+>IsU9E%mJ%NWV zR=5u6Iphdy8B>;EPA?tU4v7vcK<)?KSE1IDUYpw3-1XYI82s)3Q2HVyy$6~@6SUaS zrv;f~0>tU&x_YuV7vx1I-I>ceei(g#W5MV~$&&Tq`szWZqWI@sy- z`-Ko_lhNpuZ-UWSPH*GH&Nd%cP{0JD;)6iQhQr~T2q-&e{T?TO@bF$QVLuV8ocB46 z!kF$7iOuzq+;PDgmmQDdE!=sDO6zK0$MJZSPQne@)nJ1EsXOWItJd=Z*6G8;Cmunc z4A=Gz${m5w7X`kenpd;ejvH~oX(9jtAqhB?pgFzTmiGSBE7qD5=(+UfvL)BQ=)Roh z1QLy--vQw>Xs;1M7pVBvQ@BlBKrK69`)ZQp_W53(0zn1()H(v!deB0U2NE?vkUuvy z0xy_$s9-q5<;j4FM0yUXlx(xfA87!l9`wY{el!DYk;g;X*FcAemxKobma;Iqy=W+< zZN%4IiYsu(G=%41dQJAuaxLUD!IAtwm#WUsjAj`}yU+FB@J^FG3cUW62)-%_kGND~ zvS|b=GZR<97m1M53I$%p= zl^`Iz2gO#~MJ9bx(p#gRWZsSV41qcaM`or-oe=E!8e@G2t(+)OGk&$Pojs(S;dyVV%XO6X7G&Ax7 zTAa0xV4<5AT>}3;-rq&!dhVpuz4E7=(1D%xmOA(_sL%Fag3pM0Y!y}OujI5gQsY#r z?=VpYt<>l>3+e=^nZA1d`h1~4{YS3GEqt5voujZ>Dkd7|lw(1!5XnZo58iC&lC1B! z`)vPKcr+O&pldF59@Wii<(JOeK|#d$Y*qe75{I>OHXpiDF~#*q(liY~{dsv}yCplf z>Nqu@4BwJChL;|C3>Vt-9z7mm8Z+EJn9gfx5-aK)xHRIsssrNi*(Z)SPr)o)iK6A0 z;M7!0C@qLu9{L~?#8y3*J8$I`!E${kxJq-t=1*X{oF7FsKIZ zkI+M5{nQc^AcT`Om|9%Z_7a^96~lxa^np^X)4uZ?aaZ1(kf)SX%{;wb{ErJYI(brB zT&e!3N?wA}N!xRKk*&|KfIU9wOqb|vm(h#Umoh{kO88%!Jq0=gh9SxMR?Eoy@&1+2 zQLm3wJoB6Vg|Q|#`X+j){@b0r%lIdPd7&dGVP50D*ja77;`#%eRzMPGOJTyalr47^ zw$Z~hMbCA=zQ%U{BHrMQ0_i1>x@3MHZzDmcT57UuoL+AhCx8pR2%DFk$QiX54?`QH zqE3x-r@K!yd)pXw)}FHZ{}|ipA+VbHu(}K`o;sEtj3Dw)lkT+I7#1`b)p9*+(Hox-$z5x5Z0q2pl>VQe<*hR zed;|w2GI37dB$)tG_T5V8PcDHgp+%L7`8Cyidt#vg;tmlart`YZciwPa3bLoBl?KY zQP}b;a(DOj9DW`QQL9k@i58Bvf5aoxxe`7Oz!@PmScScyB6As`5|?=u4()o^ z0(Fp>A)@bQ@w7V$IxKYs#j*Haj&Y=zH(N~5sSG{&5)fDosMDqfd>ai_rA^69$;9;9 zP{$UY|2X-~1R?ljNmwD>hD$e(#&;=eylpk7iO1UD9P?tm>$&s{)5<@<7b3}OZICeb zwnD-eTA#Dw#=^8ACdMlWZ(jM4=CnGg^_M(}NWT8Hlx{K$qo|dV!kykvt!-{2&ZBpy zPdCp?eD6Ll5%8T};`@-du7h8~k(-w4h1Pv70LnpkUS3n99oA)V1%OYNC=_bG7X?lw?%#eJX0!#!F#Uoi)ph~fLu3Nl zoDnjxc*bt;WKE>!RIqAw4cKgd8cAWP;cfFJk1)3RMc3V`z}t)Qe0L^st*#C|7@>X2;*O;_gAH!uC<;TB&~Rne|$Z;Cr|= zSyvJy_nbJ9yHsVLqmbBG?UhcEzfaROnnHquv^zsYlz{<{Rxi_j!16BbI>*jO-hjh_ zbkR4~Gyx}&?;MMlg#4Sq#WF`G!p0s%T_R8J?$^|MtObg$Usd!o%bU0GE(^fhxvG_X zR#pbM-AM4}b=)KBjWBKN9di$d5$ol)i-_*b&w59wApotsR3OYEzni&-r>Jui)J?kO zYu?+SL1Capz53dY*YHb-n5gGByq$2rVR&JwcjBrnlMvt?f9}Bv;rlD;RTrIhAmAOv zI{%zrJ1_4z8`#Hsk3H<{x)GYQHy84m_-B9$#OkVFO(6hVUyIro9cB{$t!jcENupaA za2gmI0pQIG(_oZ%+?Ra`qAwH(;0Ne3LHEwT@c!^%Xgj6)!`v)`7^O*B#%@JuIZm>h zr`4Rk#h|!${PX6d{L>X9i$rV$WMqF!vM6DH&|jF)$+mQ5dv_rZKE>kyop)pWji zfgP+G2Wx>wrynS=R>CYeJ-sJ|?u_Mp z^sb3SuJ3G$vR4AKjo0 z*8lgyrueM*cVQ#P|5Mnor+h>IDay*MX6>mhPXTWlA2G^x8?oLO)MrAlh!M=JdRiOs zrmOI=y{q736(RXu&f{H|)_&KeNe1$m@23x1o;&D$=}H3Cab7JQm=D~_7T%pt;Y1Y$ z-Hg}mx zu#YjFV->3}Q{^O$FitD(q=bBa_nWi2TMAZMPh!VhPlY>s_CxCtI{i< z&+zsMLQJmzZh10!K(oUjL(gBO^}9GUp3?Eh4~N1?<~6>X6w-b@>_6qwdl)CPMMDIk z`MEbCzx&QAAfr$)L zz-^4(7y5*HYKS!U(Cx!z(%s#ZSus_?(hX>n$;rHx1#nT6rkT{0+0;6g0P{=c;PAgy z1!sw)vk+GSaCctIsYwr37uL9=oYfYL2+k}x9(Yt0Yn}Ch@&IJk7$t4!YEah_nwpVR z-W9%}=Hh9;b)R%HUE*TGghl@j;V9>?w$WK`*}*#FyTuUjdq0np^iO>_99{iave&16 z63FKa&`f{6$wCS*P>Va*O-U1Od6Q6o(T(e3&QHX13y=->F9BY$X7o#eZZ5~u0mCwu-f5Ql(yEIZpX%S2C9I)XJ&vU9MPw$tC#u&!l$XvM zpo|SsUoEv?3TAtk-NH7++bn7fO2Wq-oC{K^23y6Dm}kh9cBEo~L5J|9^{{+a;oCpq zjn`oQV*MNU;D_%6)c2=yus>K;NL7_BI3*^LouV!Vew^m?Em~e4?+3<09yQzkz@=Z*PwRoGi(J|m8;8Xd~n8-Q7+VjC2s`w-86#*=3uay zc7Yhtlt__&jK(#}IPsS%UFVGwRE^4GbadF7sw@o>UH}ycUp6h)&s#cJfr_iRK1QVea+k&Fk^+dM%Z4r}FstZ_%pH*i>?2RGw&P z`C2XhdgNBz{OH|Zc52&#zYAXL~5KxhbYwpu4BOE!Uqhbspc`q@@@w;m8%T`I_%`Il&#T8eFYBYAiuU^z@N^WByT z@W2@_@E2y&@?fKrSHvBE%Bhutdb9btH^d7zzl6%>4`k4F1;*rE9*y--Qyy5!L?+xXL~{dxW1S zshkj9kin&TWGz`YeaI`dWT~yZ6bpuV!K=(bP4ZuInm%S0-lYmLQppZaSi{H7+ZTmk zwDo#)2Hl2AH>X6+Qnw{;@qX;Idq@HOoS1x^XpDJtT};fdPQ!k9D={}_K6&P|*A0jX z8D`WVdjz|P`A^k!VE}&%9%l`jCqQ|bI0ktMz3pKdqFzeA($xQ4h%oz|i&eJ&E+g!i z+8~W#YD{Qd-~)4Rg1dxSjJZOYzk)YUE(GgEY?=SvWAOQ3gOjSrWGq~;+qbvR-+JnX z#746~;NEzeC@qmgAbuldq33SVLtL;bdd_xq;KOr4E+Zu^E$v@Y>C3g@=O8A09c^C4 z{!d){w6SCN9Mb}cNOXSb@1*LF2FXOUFA9Cg=BGjZ-DiHQf`2ucMi;1zpwQ-uL1hy$ z(|!h<4KHb@>_|t9x?HR6 zuW2eUw*@Xk+9$o%0APQ+D{?AKhqzoOjY;=rv@OSQW?DrEYOu8e?XdNIbZ0P$sAk}D z)}cgobxT5_=6sTN-DB;xvsvru;R&XG9fPH4Tb~b3{jNr8trkzoD7;fYx1DDmzhD8v zWwj$GXmgm%PaXgo6$fM+E^`!bDN*5|}LSyRsAiu>CF-Ka{+1B7jTew|jn_Q&WP z(w{%adqe&E2n$~7r5Q*E`rBI0)byY?Orm(fBBo#^@fsxdF<~`~y|1<{@}9e6rNBGy>dT z*Jn$&@%d3$=;ZiaElk$nPQYLVeLiiBN=T_=uOw-s%4W3EGev{R+n%ksjFRt}8reMm zD}B%e<;u-|OHq2E{`ztlhc&H(WA^KE1hH}VW-j{JMk!rVnNh*|qB)r(L6t-E%O|-j z;H8qmXecEwUy`!xzr?E5U_sjC?Hk^tez=>R53I~4XU_`-^Kjnkbyc;wTSpKJ(Mc5l zr&y@*cAF{vqS&Yq?ix1mTqCk&JXW8^C+i}1bF0DpYfb;e>~L4*j%NQJB}*y3Cs0}O zMb{nk%RkQosB8%{Ztf?@9Q7t&?Jw_Ay!b|?0e(v9$mX}Pd)?9!7&uQ=Pa)o>!G-~@ zBvSG}9;9~XD+|I`20lb(wSax>V+m0UCO3Q2{TS!Iid%HfXY>eO3m-iX`AEn5Qlu)N z@jy|oNP2k?l}0A-G+kT@_Fb_(J=V{0s%zjfLyydLa2^cohkBfcn7~Y&BKfm#0aunx z9tm=-{plPo&hM}cql6HlRpA2RNi#HLPx61n6O z;u6FvD)pn1BZ6O1kSTENpvz}%J!7)@#7Le)Ur#BC!*Ju+{g>!2=yyI(LO0LhF)1ND zk`M(l^&^W;ZTr9jiu$3z z#|^OF0=BG~GJ0>t<4kK3bJG)bFw`alRbiO?)Ce?LJ|eP}brFyUuGAm}Px9`g0ycd$ z!KMX=SjHyv4nMh3;*f8@m7R@8DdX;od*@zu zk6v}cAMb?^iS%0{EJ`iHhKlk2Pj!QhOt=oC5XZxHd?B;?|k09*= z-7;_&`o|E#y9D6{uX5!Hdzup>WtePY9=aQ)4R=iA5WZ8Em3B}0Y4UexWLS9$t2<_=gqhTA$st7x zyq9HIk4AEpbE>|{h3hI+r@XlOomi|mOk&-B@Fhc*qc-2-*qD($!isK;XHGWQHjM7> zb0B3)|BvXdxW#fXy}k|dG4>iDD2;RdXd>!CG2~9fDEc@nk*+5;@EXgA=UK8_&OXZ) zB@R0!*mq>?FzZBnOeTV|N76J*2_9G*O?x8*Q^{JG+!yk?Xp<6?WlRAaeMeYHiTw6i zAr4#LP5$Fq{Z>=IzaIe!a+OI+`D8?~W_j z+1~EXK9Mc$@Eok*&bsMLcR5bMrsATfizV!UEo=YnIV2`) zTy^bHUqW5l@Ia5hZQUQLtX+xQAH5yZkX1Ur@TmVYT9%cPwds)+e4TD><+jD5>v$%a zqSMSOiktXXCdHG5CLXYT4O8IO(ObEWi-VH3l1&`$@iOW!Y6e9|<%g?8vPmTSZxq_7 zi?J)W-<S7N_d}t0B{)}DZTvzlZ=1QNb__|!!>x0yxQ9n z7_}AtH$mLbR4AtGyRl+VCS*WV_%$s3$BR97TKNqsZF)*M+nMibZqq)RbpJSsd0BXW zTF>ZIKrLHjkv4F0D{g2&pi#8{C!|aLl-m%nb{7fNCD=W^qZb)5hG`BAyR>eXae}5! zj{Iw3aADBHTMd&}|YpV+kQo!+B=aV?nR zX`lWL(gVwhv(tRJbqo_nL4LbunB)E>-Rx6iwx-awh(BuHMRfOwIeOg_ ztJa*6c{m3$E~O7ZJ~Hx5II%;|l2SVohIO#NC{*2`Tso7K*2KfLv_j3Qz}HW4uOhrg z$9LcWBb=ivQ-%n*i(72gM1dvB-^E4qGLZ+VOt<CUcEvqEK_CRPth<3>5&A7n}SM|or+&(m~@Yk~wf7QQ8RQMHNPT;pqD3<>$J zvnG-i%ZpMEg+mUOZsm^y0i40+nB^9j0?~dduCx@a^IE@sNvI&X_fzJfyX@p7Iv`I< z6Sxv1F9j5Rc$WPjS_a$8m-Oe@d7vmj^3WbqkSb}OB-$7z{P;Z7*MDWGlxLyOA)~J> zk=o2D@0w?iiwq?uP89j*VO+-MH`Vtp^W&w9(P!naZFyKVE!=fy*1O-7BCIkO69qQU+19$9wZF}EWJWjEXQ~ujbL}U* z)b6S@%^~Kto<__Sp#$AJB(ID>q&L8tYDU9dYWAgv+hp$OtGPIQPm?Fu;|;FiH|*KA9V3rUmg1*>+NW<+;x;;vgy zB`L?EH?LQfb;hjuL$Mg*V|Cv(GniZv)cM6WqqE1T;S7o`$#1M7I;j2v_HlvXs7737q&O{{dbhKafLmN_g~h*xIL^kx#zjGQr9j)m=U0k zlJf_Q?o}z7+T8CZX%y*~)GA!vN9xIzqT;H12b(4>V2P~ooErsQT9u1XBPXBZ4N#5U8H&gr_=siLj2I<`#bIKQ3eQwWRK z+NmqktrQwedpdX@ej4&DH|9@|6py}KIC23i*3=jnLu~62R zh)=%3tkAWh*jKE?KLoMEHvL79a38wj+v?kdt_^5)c!jKB?$%Ak~+JurlU_7N5p9y3p$ED&Z+aZVrva zrb;?o)``s5VY5A{U%b8fGEfjd%}L6%)}xvBZL1oTcUQH0)%%e=&?YxqTpa(2ZC|N* zQ0WmBN0D@Ug#NevL`jE19-#0TqyYrvAI!W@)Q2lRsD62&Z%zZTI#2XJSbOiNrrT~? zG^pqc3aAK3M^U5*NC`*>k=~?tkluTf4k};+M0!Vh=)E^ZdXoe~@10Pj1SAl+Pki5R z@BN)|_T6XPd-9JC2I1G9-&*ULbFDdv?E5`GUL#Ul`t~L^>&3lVUXNSj*~Wh&AK0JB zUd5GU)d^$f31hOxpz5IwtF<5gk?aT`Ssl=9lp$GR*7<38`A^RORrYg3S*lD2@xtrP z+rMISb*K1C*LL*#lLEi9>TeXKtp|LKucko>tLB=H7Gde)q;*PJ4vQL9)E*oNBZ@qN zk3Oap@J9Q5iuI&%^LiIqJ@D9W>e`GQ>7r5eTlwoy9RQZLB@=4oXAHKU7Z6`3x3-ae zN9-{9ysI4&WDO5|Y1R^gXQMIfiL9LR-e~6=bRD>mJ^fx(Au+hWQbfrX%f_T6%u00e z-JAGuH@d}Fj__22)e`IDKEXTzT1*BpL`&O-IrnyscB+=BVQ$ck)FWhoMNaU+^!9DG z#5EhIX2%POjfu>`iVf1W#q&qS$CIjhGkrdDu{kzEsScMWObjDek$gkNp9P!PXsb(5 z5LER;4Lw^&94t8-+boU;^*OPiooLWR7T||mWWl&#J1Y7{ovV3LPU@q z`pc$LH2J3(+XlR_sNzo}6Rf9x@2blXCDyL0D@i+wH!RbS-eix8>2=+ReWv%IMOt2? zM^Hrq)eLoA%j&h*M#$+s9cxfVw$L`n2~BIN7E?YP4Q!h{YK31#VT4~u5-QJoK;ddS zr0)T+*!1nwedy^%p2zv2jqk*bJ#63laBrGe>u(+)L&6F$93tk`Q1%m7Au&!A|AsD) zEg}_OxSf(IzDe{Y^if5RpR=URX4l|Zn<$*him&70n(zdx0(zkT*z;qVb%a0T%&7L} zS(b-G5h_~8hO6j3?pDBtu5h<=TOqq&WkEO7^lM zuC~}w_ zR(KW@YQbE&KEJP5s+OUz*2>u~V-ns~lb zp-L?L)aXvo?!(B=l}bWk$JyL)9}ioU5}Ve?5ng5~HqGkMGRvY|7KgUc}7MO?^#qa>r20pnu+z4rYY+ga$%By<*m({v`mgShQ z`)M~_@0UKGapw?P(XY7r0_>17ZWB2*-CrPW_qovzV_Ms`&ExkMsgzsZsM7-K03G`psK3f;F7MjB=anngJ* zRm4ElUm1xoWQ}gDYIL_KO6TsNlRx_(>bL=84pp>ranX`Ny_MbnQn@7zM}3e(6itlW zuop%=VEySk%_5?MBq-)Es_aI=r6-SVKD9U$jj8qfuzyuGQpjk_O}_}5xwDxS3C=G$ z-(;j%k`O$r`^s?T;Isd-QZ;xG> z%Npn?av0V8zZGqf9|YS2sSEi9#nh*DZB8f#w+uZ}(qZ>uYb=Z&0h5WewcRH+B?@E* zJO+f7*E5;#S!uwoJi!Yi5LBEuc}+qZlud?%#bP{PZ$#oo^g2ME_dbU^?Gcn}?`)(H(wm<@ zKo!5ZrTO87vX$DD^ijY&pU&=HCfLdlU=RHRz{R-QYv;dKAdB@=JO7Zg74gn#6NxcZ zN?r6|-Pl?nyE>dZ=g z9+rD>HEW#qge;5Y^L(?Z3$3W6vA$1NK^CBkwRg{ou%C5vxx32~7BRKrE((G404np9 zVI7Z8RJn8b0Z&0CGX9q?r`+XAsa@Gx?5mA-Wq6fL&Z>V7nNYFAj0e+C9j^bOnk;V& zlP?2h?Pm|A0Qa@5iW1FrC%D_OJma$*AIYNQSA~s(U$#9r+zPkcP(F$VyD_O)_08cv zN`cK1NVV%?H2E`}1emy5qDiw=6t=KCfXT<16sz=n^&>yE!mr4Y?upe* zgF$AwQ*wD|F()b&r8|}6->X0(%1K*YLr-UMBjoVr_tFJan60p@er(MF9BQ|q_Ho+b#gI@CAdMIfaK-F+zGmqs^MxN@w zbU@5ZidpKA!Ym(c2-yi$Vna)d9jF`FzI1>5gQo-FvIcA_#0lR~O^(1ASNgm>9vx5t zWOjb@x7j2wQD2Ol7%|=Bz_&bG?hJwK#w8|+Ja$809u6AcfxYNJn#J`jE{@Lqh zgS@WG4GtPA_!fiaoR2zKQ3(e{W=Nk+8x&P!MMP{$%^u`7P(l^20AhTjfjx$GpJ2Y( zM-Qj*NfZ=cl0u92)SfPmj^RTnCHw$M6H@86@C>>>XG|@6^4wb?o~cak!M`FeCO#-^ zBI~*CkYjo7*PW{bw>ED?&oreqI&s;Z69A;M(kBxwHM<%yduL3eD5-j`9sU;z8e&94 zKW!pyR3UVx)HZTn+SV1BvM3a35_y~KWotJ~o(I;YW7Eau6_!sdXLxCgRKUYoW=a0W zzn9j|XeppWi{1@H+#!VAB9rzBWBfWIaVJ9`*J%6JFqHxyVY4$ z4e{s}HU)&I;MDU;6T>$lUhHl$FKdZ^^Y3x&5;FW!XU3dWWGh4#r)gbI~r z_B*f*@}Kzn#?lLwD@k2UT~QB^jClYUH*r*I6sGY^ZF$114a_vVUM8`OZay4MW@5j~ zGU|Srm{Fe+R;hV(a?{Qv?@l$h{L0g3*DF;{CE%O%#b%-M_t=YiigTjx{J)j8OtE?< z#dD$xK4>v`rE2aD(qm>!+Lp{M|KL@2&Z;yHpQXiT)p)T6lyigL{YCWa)Z=0VW-AcT zM5tA=rEz=(v`yfEosQ|UhsKU;YZh205j#vwy}D0zs`{OGHod$}8I7OCzY*oY=!Fh0 zpUT>$Ox%f2IWVtG^9DC$cbnWK!d~t4X-UVvH}a@BhdEKJ>0d=PkZRTk_=~$W@)S;p zvRW%q)6HX6CK-u7sy`smtO@6B%cf>4c6*o=H?Z>HL^y0Z3F^hf@K%70J>`MO-TY2v z$bXi~?##lE-7Lc&>%5rr*e)=UkieArc+gIk-P4PHgoqz_1e8BY>Ac?p4cnj~9Olz` z<>sznCAvUBY)QQ)3lXT0Y3^p5efRp9fS9_}vq93GbKas8TDBZI6$QHw@}({ACvBTs zgf^y(Fx^YiCGveHN)Mg^ab`oys=V`s1y8rUZdl)BHLFgJd=-<*#PvHbrgSSu#O~jp z$5ff>cAFFRjcD9!>7>ZhRcXmN$ooFc4uQyZfI5-trSwNuq>+zD2=6?3?GuhbIg+>- z(OS!B-nU2cDDC#cL^Hw55qWM)A0@qwEgPSLg=txp|5V1K;K4x3BazQR$1P>8hssd9 z)4KyXmxxf<*C{5=2wNRe&5>WQ@26y`l#n(uP4hm=8E$kCp+U5h zyhN;ns=k92k@gE3Nt5I!mU{}ME0NBjgM7B0%`&x-TVEg7S4{PZMV=_G?Br*?CR3Og zLYjoB0IygDjb?SWlh&e+N0 zD?x={S8Y+}W;1<$+8Z`!lgVtT@|7jB7?vH*1N~N`+%q!y{2=P?EyETgRBpfO0e_?6 z4Tnr_ROHTd9`)p`^h-A~+%^cuUSEB{3ix$KvglmhN*LvM|0YwlkGAbmOI1dpe!^XV z>9w^n!Id|@RVZ7N%|V44Wm$!ECx08WjI)2d^IwojeQM5%Bc;Nx;RJTTt6tDk(ROC% ztr5Lfxt%4r%bvDf9I-uylZFl4xU7+L@7_P*TfHTtPBJ0^I7M_Fp7iQhy!*hPZ%ZZ> zm=>YC#8myS0umqzRG;(PI=Rb3Ml8|}w+w84Z#$Yid-y=s#V+@)&fGy*Y58Du%>4bt zwfFpG<x-9&p};mrLiDhVeC1bwV62vR;YJm? zGyh2`a>VwF1yW{7lErDiVjXv|pDUI>8J;pdy!HPLd~BR{UfEfH;q}njJzth-{)t2w zfw1B)lS`kgUgJQjBv8N=H(7jSbvt@W&3GAd8@NgSA3%=@+rf)2e^-;a`5qDcq)+TU zZ$Cr{=Vd3-Kdnq%vL&v5mh>tQJ%a;{YM$Ylaw9GvM_R?gxlq-+hn7g~yy*tHPJ1QY+S?^@yr-6O?>i1+pG&>obp5 zwd8x1SON757EY1hP3|L;0k1}G#VDq8BQdN<0eemTJA7*Vi85Wv4WJB?DT#)D2uXS)e8_~5v+P!xoCQ}C;dpM3;&LR|@ z_TQk3j2POZ-)Wb7RiCzUuhn(3<3S#1V@T|aI9{)Rkhh_1S8TwE8k4hrn)0P$81#M@5?@n4t;HJD+9$9!cU zynkN}ig`u^A~O@`pB)aEe4E6L>9H_aS}%pLWQ9V-&VIdN)h;ROiC)@pp@ygp(<5?i zbaE9jF27!$Fs7K~W$BUMHZ3LDJK3^9MyqU|Z6J2^{ua*o{46t+PwdRuBkz+zrRDZy z^<P?%D30a1>^;^$b5 z?NjFrKZ!HLJCM)9({hjp`ppt}f*0Xtw#MIQSZE7XC2c1UHrYRq^a;*5Z-3s!s{8DUd2a8 zTf;`E%E5EMUqd(m;wt_{Ddp)fu@Z;X?rbv#cqqFsci%cK?T$i(5>abZ+iH5Tu^6}b zZ6b@4X}{kMxlW-q_!Q&u1ZpcE_ZS9juh+#cP9pWHtiSdrM)Rx+LkwtRC#!}j4^GxO zE<;{|OaS?^_2WIMVBmREstutP%nn>U0mGc;U>^qw z(m)^21=?+nzr0Zzj{^I$XB*HkUXW7Z8?|%i)GVp$SF^>d;$ES)rK>r zX1;v7cmHuev8|^Vwo17_Ij>T`W_|g~!^zX{*C$_8<_3Qv&Lfm7Q+E0U9V+ERQzHjp>c`UEo z@X{(ZDmLx-0Mme}Im&h3tO;n2P)uIsz_+xWqNy$63St9zD7L+w)05dgm&0zX;AJc; z#pT3=sTlidoXqsik3&x9XNeK1Vx+lI0t$@^@rNJBhr(}(r_BB$^IYQq{M`KDJ$Sxq zmiw5Y7YrQ9v1cVwkEcD92!SeXbsUR0nSVpF6<}w|E$N@Eni)z=TX2p&ojQn0B?MI6 z<*PT!WD*)qR+G0YWSf1^@bPjpG8!71Uv=+2L>HTm(q~KI#R`S8?e`rwM%BHBMXOJo zD>=r5HnhD~$MTA=!{4*an@H894700~#0C9GK`_!9o~mv!ZI(c-oAK%=Fu$gz0i0B;wK`~*N?=kPg9 zGW#BFVZfWk8NqDP3&O8t_+761NM^NFk0iIex~b_6R^L}4hv`65CZUlg-X=U-wU{Fr z1*!XBTM|c?U_#eD^O|kz-^#xQleMaVO@o=AJDwIji39A-VA}E@v@V*n`^0<_gXUf- zb!K^W;;>j-;OxY>!W=VZbOFjQ!3Kv?s>9v8>{a*5CKjmueJsw* zy)qxTo^N(g7`rQE@jz`9%MOmFoTjQ>`R;T`oT^us5OA$~2yyQDhp4`D-Tr>E6xbNZ9IMb}(}cX4sg4lGb!PL3sKTJJzh2%mCVirh>Al$gogEmc< z-@izHnqlgCq8~-hdau#?A5B;_ptVp65?A92B`#}%JpGL;>FtWmtN|H0 zhek^ny{7_Xz85xpvSVFsz37H%zljAEMgpoaWzxt2rJ8Q0PeHcofXvrub8 z>N_{+Eb;0vK>G}hSe2rtWG!gdKN`n6ljXnoLdE;f(Y_?=aq3o>yTqIFm?(j4J=)~$ zrj*Dnb$Yy8D@1)h6nLIhVbM3)?)vDh&AGYYT@J0H1ifn89L2p))?bF-TJ>el;O888 zS2R9^eC7r%=T55)l5-yZeVB=7U=Mn9XmNV)L!I-2=>^o-<8A?$L}XB*N3~s>LV0H*L>d`t^P+YT21eYZ+ymXU!Bou>0|74< zK7`o7=X;XwTjN~5Be_DmP3p#h*yQ<2^j9F-0EX6Q_--vkhkmWH4Z*|XWjrF8C_qAH$!h+f^?79vEjboMIUI8%*c zX~2}IvCX!l9aK;&VtTEJ?;%Sxs=#rM3wN_25SAaGAkhCUrm|p4lyr%VmDy_HyAQhp zc_T@(fQWCw5BA!h1Y8gXs&uhb{x~9#g>U^w7B=RB{MaBeHu2i|5^#Qbhi0DkO*}Dj z-r@~3{~H59NXbsDZ`_#Y)(WRBtZ(*3{mldo@d{M^<}?! zqy9z1U1H?MUXUa8sJcWV&qSYGxot{4uzE$o@;pxSLBis0v;%!FhxFrbLu{Vo)U@79 zzI;=aiKtV?Sg*@8w4$&{0`5$KUu8new#WIFPz;peQBVfIOwXk`Rq1oN| z{#G(#Pr5LgA1X5J3a5y04pdAp&6+wYkhqAD1Fg;Ww?o0^eCqEsPn}KX)QYX~Io>Hw6Y;e@Tpzx|*L}0| zOiV>B?RBLFN;wgV`bZ-OllobVF0`SYk?rAR#y-hz5GK0N*~7fPvW ziYb$meMvg;xWN9SU_;E2 zGOn(9w?1&`L4{$BI8l=z^FojdbWD^Cl^!|G+hnjZ{gda4^r$ zCw7`J_A7@8erbv@)a)f6IrJB)epd&o!ZnBS;L zeyD}5s|)sm$~{_4_`9PrwDDASz-OO5oYilr1MTJ$fh5{?QrZ7Y74litJV@nlBTR;J zsvGP1=M(`yAs1hC)L~3ejZ6t>^Q!>WHuNZ6bNkLg?uw9qvDxE@ni6cvtzOD3GgFAT z{SV*_jQi02Jp~B13tWGn<^Sa$Egk4jpSZIKZxu-|Gp}$M!Z}S_(L4S-w;|7uLrcqq zyyV0#@VtoYT(z39HONo&oE>^YbssIA~5=r({=ln$!nm!WU=5+)esR z%|^T=jM4d{l37WSYM&!pC73$@u2P&<8cXWXiSy)__MTRtIY)P94Qus}qd@gKqXvQD z8sjf9lm%-iv{?qDJ6KEFn7-N`Z|1CK$++!GHi*BB7LE!I7rXzR9gm~bGZH+tHZmMY zfOm7ejqU#B;y?Qa+>>|h}fBik? z4%}}3xP(&vTxd6GI2dHvKe>7>g;kR(uf(u*c(;|_`MAz}ZP3hT6Xv9u+i&eVm8*1- zX9HSJwA|iv(lBLpC{QC+aC8Ko(|EWXZEV*b`ep|S zudwiSM-|ggd<7YQfY-}WMzc`sxr!JzeD;+Y%U3XL`3K2@FkEI+dyq#3Wi8HC>N7}5 z;^!<3z*4QJdg<8=rI98HxMkhHpY68BVcq#j%)Ol`gx3a+^*J1-_Bh>MIXs&3viY_b9U?kcfChX1MZX7DvuRFWNcy`9;0lE|N16Z&K{ ze&Mzw%(vP4!2=Or#C_>=aP#qOX>TIW54vp@*WMVLcdQzB?T(FkTo(Ope`drqdf4Zl zL~o3(4)Djr%(|!wbjmXtaml?0=NKt|mE0qSnP*YG*0Fj!;+;}h`@x!+rI$F3b~q&| zvOf)*hdDORkfDQ>(1|!|#XS}Vz!W6=N?HLBy=cpfxNRZrN5!+MjNaB);cR(2R3cy| z9Y*+rHyN`W?Xfw&=T>d6YgF3one4jKyI2CI{{OkqkK9(oYI({~k12;0-j{8c*o|AJ z4Bg&S&iej%w}M+WqggVBzOuW*-W3gY;8H)|<`#b`ITQx^_(Lg)3Y_LJpo`MybUPhD zHo9Knh;P3VxY*E}g$hNm`l~mrvuOlCKE{1d?T;jdDNMh%PS8C+cSv+9L$|VK96S2l z^NFzQGGX}LVKo&I&16tyf_jfYMHh^5lOuQw%(^xUjGFVA6m@b^g(7XoO3bLl0%G@< z>pS&CEwAxAHI+Y}ta4p3-T@3R5SPNmH--#CGQxb{V?n(ZzsOug-8@>M2%Cut5!?fP z_AG8agkrTT>HO^AogpchNBGlN0B*lVhPbEy1(q@C$->Ul(+sY5Z?6qCgcOLI?J^_PYn-2zuCR?!Y^l!Ho z>GHrFrV2L4N+qgb+NBMcwe;%+YB`^cUVW8F$->DX&F_QE59yw7Idjd5W1q^>HmcX` zq5N`+D&^lms9cn_C*OX!UzY=pAPX`!E?R_Bli2hpq#vFg0Ld9HHTdo1W?z*}?6EfL z{FDu*n#JvC^Afy-s(o?l#SUV_#(|*10tdQD1|lVda%2Osww?O|jf&UkiyLdqd2c01 znkL}(W+uD9Z7pe!FJ!VBRfjoB&9a~1wwbPL%m+h_kek>39GZc&0{9`@jfEEY9w%=@ z9>ShUs%%U-)o#xEvcdGKGaYU0126p5ntg|AgxJ%bEI5J|4M@-{T*3btuUNm<*r}yn z@$xl3)rpF4jyCWjgL)Y;>|y*)ecrQ_Z;>{bk>*n`02IES^{i-MW&UdIV$vv5GK^*pG?L1;7Xk{szCiVsb>p&j9!Ty)Vg z^9;myO5DZ5gBbN|uA~f}qvQ9_4kEuxN?tDES68IwqZ#=`Ne#6hkL*qI$oFgcb~IA9 z5V&%DI+{QHU^JggBAJiY_4wUX@Z~%J14=-xU#Q^|F1st3*&%X2XqBGV+9DqpL@{cQ zpW?~I`W~~82{PdC3djC%tiXf(5=}?Hj4Qd|xD{}eB5lsO@vn4V-*Ne`t$zyn0Mrzo za|k}6L1q#N3}Ev$Qf?-L-kqCksP6E0>NEcO8hh~bE03pAd_w;_)!YeqolCL%Qh11F zvybY^VCtwL^>~x_lt&k>IPppf%Sz#JLv;yKtc%tTS%kY2La*K@me4X z9_}=X*$pJMf=U7c`4O{onVNMNtQ+CJxNX%JKW`FIRy@%2dP>3Z+vC@~4H?UqKH}ip z_uW<*JV2y)D8D?a@5DY9#b~kvmK@}{6yPEtpC4SDxqTxxkdNyx+?uGY%Zb;{RV)Lw zPnLjN&Bjt>p!V~(jUewp{uB(5!A3p+df5|NncdFo3Ai_z4;6A_Z;ub3I6A4(XKmYl4H+^n#Fi(ME5Sz6yAz$|g zjdg1F#ngf#i@N3e&h$g<*|lkbHX)zzogA0IaP^Om*$=U0yT$s{$9&m=eOF14755}# zP?L7CyBO3Ae7O;3r4s8jlQhQ&33~Jo6ei0?=Y4!jNrX$&qa9@{bwTDg{5Eey+ydM-Sx)~{mLRj=-%f3$T4@`@N2ydY{L->U7vtbpbA z1zJ0?cbY3+U49mxqgfzF8f!brtE)a+VFB|dg8cehFy!Cw%%7W;T~H|#G44NRe{$yL z4{xf^o%6A)$n}V3>Y=~2Kt~HOjK4)gV4KTxfkI*z7=^~b-}fdEd#OU(OBUCOb9X5r z;tjZ14`>I?d|OQ+9oX--%Pial(TRe^x>pi-&)g_cK!0rt3$Jr<~N%MgODYNnFvX)JMOW;!ta7 zQUuy?Vh!$lj#c4ofWBR4WUUO%euXQ$e!+w_YL4-ZsNI<@R*1b!^oK2a{p)I$bPvUy z>@59SR^yZX9rD=<`|g|U)WSOGt2bV>Ya5jtbAlFL+)Toio6KPPrqwk#+{AVa^lbvo zkHs&yE+^wR`}&HO!Db36f|WkCb@r*w}tL-*>MG}(rF2r4eaC4vgL9)LLB*hjYSfdg1Mrxj;@b=J}Y8t}9$5A`hAmzl_vZ0(H)V7soSRY7-Uk zR4;iI;e{)tQEQkZeHJgrjk$|B^v^YWu#^wO;6;hR9!R6U;&50-?Nyy`=JW0}!=xt? zlPxnFcWQk+dN3{K>0OGAo^sn$3hiME#d-pz0!(hRUURXI^-_W!y#$s(CN^TCwe|31 zO%0}|9L=CUn-T1O-ej&PewS%P!1Xy5Z?`TV>f(Hgpkk**A9G^$=m~e}sDYJR^V&c( zkPI@~-Cr53<{o>@4jd#G<658L4=HuO3OI9#PxJST@JMeRObUF4#Xv_KYGbQ+-mE}9 zw^EaYj&E(x1%)GyEOm$?uSJg^A!26-a{G5>w%e)2iR+TXHnO+qhP9r z)di&FBL%>0GgZBP$yM>^aCue?OZ4FYzuHG~Wr)dg|Hj*UOzu7D#)95(7XGz{b03(2 zfR(@(0psCJwV^b)Rk~d6DTK%A^_Of>ililcjL{d)bkh5YNy5~8vQ8~5siNB@RS9L5 zKmO7ssZ`ECn6y*t`7&t7AML%JYu^TW6mzmhZ`InLm_rRLxs?*k21$Fas9h(28XV)T z;<5R3N``xPuE~njHPI{~F!I5Oduzd84maZgxw#&iwrjiU+^Tn!3d5GRE}W@B=qi2p zO#O9oJ|O+i_AH!4uOUlDzqj~9XD~14_B$x#T6LxN)@tWA+k0ctU z3-xhtngU7>gR>m);Vdg?z!@j5&b&%wo7v=D>M~}aR;a~AMCVsHqqrHZf<%4CU&GRf z(pZiac%zC}Kxv-@HJ)k^+nXl@H#gkh0S}&LP@nxhB(<&M%9D7rBnhRI^(%BtIxK2G z3~#-Gu^gNo>^!@aSY|r@WDS}~#g;3rXv=IkNnm`m9X*)lah*LE`3YtS9PHu#$N0ph zisSps(dBRQ#1$dtuM3yDawv?O?$~yi&z8cxV;E%)pFCo}S0$lw%fw`IGBX56$-dTh zRD($(*ZOyTtH&@>4Zkq`pVvQ&N+4dl{?!Cy0hTO|^1U(UBIF8LEZyx7eb+$*Mxfk*I!LrXric!2n z-2SZzEYO5CBZPJYOgDx-S>4jMFX7nYS*Gufi!EVC$4Ca(f|}p%z!iPuLDK*)on8dR8Yd z7tcLu>A&pm-$Se?Qp(c`>Uv8noF6hIO8q3e9;VGHa)c`Nu|4(F zw4M>{(66Q_(1U8FOA1`4KyDI{Zdod$i<9FC%#ck75!|}`aS2mNESB%wLE#t6o~&|m z(52eJLs&V3L0{X-eF3(^&oT7KDa=)YGpbN@=V+yOB~Nd(&DA>-s*ZmB>oU1n3-=^% z*Z6Bht#Q+0k|rOyKyM`pYWghS%CnUBo9gIrcc0FSJe>7)l(-SaD5d!cUhcGP$8)}W zaeHo~6b9<8uOl_Zfam80({m#CXrCqzX9~JIOJ~ZjpQ68)&F*nYDCK<>lPykHd;jHD zZ`7Ni%1?{PoUT!e{Q%U}9r7Owg+d1?1QK68TR_e=MZit^8Zpg_a{zT)>F+1|O*?NT zZ0dFOd7o}?idsc@upJ`eDIQ~&&|VbwKIq%(y* zEeGS2Ca#lf3}#Bjj{4=xxcIFp`}W%TJ14VnFfGHJFR*d}xyk4sqAO^5^#SA)0VwB>1_z9?{i5+c4Ky% zV@rHqx()kz$>&~0y4OMt^Yyi{+C{$%ULKU77ko@7dD&~}N?Xd~qW!T>6}e$WEWu8d zCzm$(P=dxBKO5Cbnolf6OtC@(bqC7ZPX>Og{Vqq0e6ac5%Ql?E@-SxOuaoH2ft6Ng z2^Ap4F^?)i)SGo3&Z5UqU`X9o#4WcsIZ1TyjQAtlWLCu&XC`@m7CO@VRcUsACqYS=*wW z?=e>FgGIYzxgzd<4>W+4AtQ~CK04KK-Rp&a!{qJ;>(7)JHfji3*?6&d*8oqxIiTs; zXr%(B7nyWB-q&<$Ee>h+Eu3bIT$koqHY99nNzL=rOE-2I<9_e{y!8FivY>HO161?1A2N+)DhCzOSBVu}UmmoAQO$FxoyMG?^qY9&mRFy|ik1d9r**yM zW8q7MS}gj)nga2hb6Hx&xq8Rh(l?<)JkLU6#IU!#?_S#xM2Bv`IOfQz} z&#_Le7yXpAPeRr6&d$5&y$1J2wH;0FCz>U@CAcNJb(&)*PfibA2D$7L)GcQ}daLC2 zH+B8cYZ#f}-xo|1+dYn?MIEmVZXfeo&mWf>@5WqnUH?26*hRZ%9G`G0!0}aE5;P#t zxy+57&bOcad1&QAZt_`S(ZyejNdasc-GK{-HeRU1m3S_*v(i()^OI&D?|majqdDpw z)W`0&A*#ZDkG}}_hj_*Sk+0Kt8hAR;n&IVi@tfPCXh_>IMOv5Mc}@@5dhWK)oqHMW z!xivKm*Ai`Y>Azcw_DW6w3td{ayHO!1AfkPjbw7|ouHB(vR~lBA|h~EHsQkfB5A>C z)V3gScUFOaTRrc5Pwb%o_#CD_cGCWR@RWjMdWX}@p*cfxxMJTlRO%(a6 z(mISgzW~n1$i1b(0d|>)#~`dpqv+5dcj~PgFrX=XX0B9osz#IY79eb2g4SVHA&*`g zU@(uUV&uj!{48a-aK| z{T?{5hyLdCUv=MFzrv5j2&9rGADh#NY#LlwH(MPP;uMigMz>z<^zY7Y+f($|0}Dw+ z>p+R2GQH@K*sj4fH>Lj5xdu({K!%yJZyQ5QtOrR-12hO#S3m5$fzn&(Uk`k%Z5td{ z6-R|VgxVug`O77L$~gAeD-v&?eNzk6KjQlkGr_A* zBx3FnCa>w+uRK|$N<`Tu9EAr!uE%6Xof>d&Qmdms>O67TdJ8~xId`-#Su|vTD-YdI2(lbp6+4qTTV|1snl}5da!g( zFFB3<*x5q;Er@dtP9k0SUD?%l=>$?ug5RbT2U69PlBJXPlRSGw)A!>ziq({op6hD^ z2n>McZJH7Q!2FBh1yS;ZQmFwEHR(7Ik}J>25r5EXvzsK*QDjmHtOlXS8+n??Aru+| z?&fj*R%Od0Wdsj$BCkQj<-u+x2yzLZk8{13?>+D^{H)b+!yXs{$7d>KTP~9c;($F zutBi#C*H)tapIl-0AU{PQ+z@v#us~Cm@-!jf8dW+!Gu`urN8x65{0a{0<;kJ4??+- z27CC_A0sG&J@gWETWtc!Gk|P;wyWtiYqqRcdJd8%s}jE&2hLdSQrP@M%qS&RaOeqe zfN57o?)a_gaNxI9}bAGR#bj;$%a4P;C4(#b1KTNZ5 z-{%7B3!wEeyR+ZM?uXV1jSs(|lKf6$TK&9zyAPHXLGA7C(+)&VX#e=8Y{28#!$w=M zivH&((jvzOm#gixp-8W@vNGp^)JDUBq&&gm&cWkcy1jfb+;*A}_ZojhLjzhp>lip#FIi?u?qu``f_1_a)Gy zaDO^zsrnB;B+b8UWa@`7V z-N0V0j3B}pXUU56jfmZ88x=Ir0s$~&6z98En@f-q(H&{9y4w34lN&5uSKkL`tu5^+>i62vr=hlLDz7ql)-iM12c!go48R-cB^e}Mw8rfy4H z2%s@;0c<@80_f6g&iFzTQe8Wy&8%;L-UqznkY;Ou91+d9tbPqmc`bIVwZL|zSLA42 zo!-wm@&j4l_D(R{%D*U*h4WL*N*NN=9Q(5L@y6`zctS$U`P7C{UV=c9Cs*aJuu>s6RUNdIy0?8^YY*_mQu(aC1 z7y(d}WffLKMda+g8=ye8LvQ+1gzbv@W11}c$1|=H$rl*Z`zf2;2&an0kvZu9Lgoa; z;5c>&cNJ(!C@^VP!!g@X+Yxy%sh}ltvOJc=v!>#K(vmsZxA3a{#PK(!qyE28Izh_{ z7r{jSU7#!P)pB3Fl38cfh*_lO*mybHXvvI~pueC2B2O%vNvZe86p2G3_qWaAtccbA ziQGsrqr$&+)q?!GzV?R6bIpX|RQf!4|X39tA5 zWxcBPa%;r;FgqDtfJCaGKTJi;klxPy5ou?FN%IAE*NKdrd?!x&cqy{+aNNw8_36__ z%b^`>2YvnB=HriPfdOgCshF-A(2vMqgA4TH4Y7a`NJ)g(ct1Kp^hB>+# z-`*GxLBHQsjbT*)V@0F*RY=5yB>{U`(Vm@ZXluD#*K+X%w^XG4S#->H0h0E zECemLTXFKSY!vXtj#OU9=~PxD;YfX|nWJqPjT-wh`Pg1+_MbhmY=ynCeOA{5AF03} zgKK{P{H?)~bykedby*64XUi3O%=yP^WIi`)Y!VONq7tYG0Z2toMn+v%(sVWIE#Mnq zXD5}74~a=<&3o@;w}%bstU23mgL8U-o5q32)*?$pGJ0d@>YoZ~EXRmlP*VvVSrO4q zD~k9`7xgDD5nC;qUP=}Js$B2-jgaIR0IY)LV8O`!=~93fCuBVjr|}N!jp-?Tl$H;s zQ5y5Tb{l%5mekysvx!=z?GfFg0Ruzjaz9J~2lWAW8?yDeWZwTj?Ol5~RO=d_O>Map zJ8W&zIEkTM?xus|mXt7rq+FUJCd9~=u`!}86s3q_Ftpu9q@6u(xwKJY8;ZunkRo@3 zaxIMWuHor)&a=;Xp7T8Czq7x8W@fE5-&*Tk@B4n=`rhB~eKq8DR-jr5-S6!dBm!z5 z)%Usv@~b4e-NtnjRYNgbBoeqS7g~T3wm!^$XI>wb^RhZb7I)`?`9R~U>pr}B zVSCQZ*;THcZoo*KQ@JgSRLxZzS2MS<+ay$UX#9<~VJc2hlPj`lS z9~i3KC{J;t08!*gC*pC`(1%t(4Ex3&vm5dUAaAZ!y4T1mcS`gE=hL;CmB4!kuQ}3u zduuwK^g}%KR|0&Jlx{kp!^$1AvM{~cf*l3+8)3|?58O-% znM%)HcD9`4b>4&oU+kY{PuTTIjfOPS&)y!^8qDY?FmgjV}5Ae>Y8(d^SK-wAz z4Zego{+F99fj$^IY0c{;Tx$)V3_t#-h{bhy;?BQ06WuF1T`IHj4PoQGOFasxn8`1Y z$tXGHZy_94!VoZ*bc3cd0U>T*?l;jk-Z0izTf2iiYcu}h2EhasPFjye zqi%dKfb4(z?;FIg#>DtpRGogFX&gM5{0?()ar{wtWH75?rYLk$L-5)T3U z@g>mQ^2kf`qrgz=EU>>f@l9qjlrFMN(dc5Q(BK1jgEnaWpvZMnYlO_z`WoYlzpstLvDUd%qCgG zFlW0wE2cKf`DYJCDtLrSAz|T?1scA#M&B@G{+!+sb>n7X)vC(18FWF{1L)c9BNI!*Z(Az%}#ZTijHPCR`|WWBsSK7JqRyy z^ES1|VLm97v(IO6sGn(yUoL=Gg@lCKTT(QcStbIKdyY@La+3Kr3XQyPM6(D~a&GY4 zm?v;8Co^n23r}zyHPE5c5&8jTv&Y;aRb&HTj7c>uxp*y2u@yrNb&a+HSwYHD=*GD=sS8W}Bt`#nLrpx>2iGgWM*v{jW!2rBton8|9pZI*Trqzv>fT^Mew-@#4LW z8eRP~5N|knLSwt`+p=JC^ z;WuXv7TiSx>4^!6SHb5>xJNOtV9EsR^Xl|7^HY7rn2eyhEpC&Q<0?Q1wUE^d{Pi|} zQ<_dmC28tD=p=BGYRgQhFQs2J1>D)Lb5{b~gfvMGq>`OqcUhPn@%v5rLjnB_f@N9{ z_Foq2!sWHhdyH_v#w)!0lQjuedJ`3^+$Fmzan}x2t20H?nn#12e**v}4}J}gsKAR^ z(44MU*6TS13|&E>u8zx25bwT2mfCYX z6R>>+CrUgDjulBG;w@MguZHYqih)OqSP%6gw*sil)SYxZ-<9n;V?g4ZZ+n+Um>FVx zS{#VyC_3cg(?Ov-!5KeJ;!T;tC8REFn*8l20dD|;2d=7Jap&9Capk;14jF=a-B342wPvwylJYb_?A)ar zhO5gn{Ytit@n{x^d#(vXeH9Tm`flIul3svQpCP)XDnF52yc0%*Th0bmYZN-sVt{a- zrfOGxsROg49a3$?&XtvgK4~5Q?B2+6#J2$_apKL>II)eO7w<}ZooRN4O!;Lgl@UhE zZ8Z1@l{`p%rYC?hi+k`u?NJm1dZ7n$9E%Wcn>CC@KJg;%bqSBAYMj8}tG1O}Qm~92 zul2ml+)B0IULTdm+`v(=UAWY*MYf&V=MB)>3YQK{O{%^mq>ur!G|X)my6UeEGbk)X zfJ|gnMv%8W0A-o7pa=x7eE|~t?8^@?kY8O_M&!yC_VFur>^zALjkX z$ov@sut%Da<9^<-17H8BC*C86eSZi_`+UAXkNOV}<4@uI9|_0$CKrA7rsw3ThKzp1 PybhaM9k{>$)TO@z^}b6} literal 29859 zcmeFZc{tSX`!}pTq54pvLQ$kdjNPEcnq`zq%2J8R64}Num=;SS5?R6!WytnnvW}%F zV;Lsv7z|C8vCS9;gJI@=Q+>YQ@BMp@rbJ*{q(2G|$-aj5wbAANB^ys|cw7R(%e&L~;TstC|it=U+dJ~v~)S((` zB_VxQ#(O8tJDok4XX`jiq^^`-*aFP;1 zaUyp;Zk7ahxD@Ym-kIh6jIrI~V2I4EvrEU@?kGRpkK+0Gl%bcmBGG<6F3@Ep<}Vb_ z>2TnSzfccO*9)CL2>e&67c$d_Z_Sac7b-A-XXfsP@Lbn}XZGxdC?BNoX1v%9`E-~P zku3?{a_uil#0@EM$F&fd$EP>O43T;J0vJ#q81N-S&l2eTP>~?UaFm5Ohh`{Z~y%Dw^m$7GvX%#nJI5HsYgG^*Z2fF1l&S4O+qS%*KOGs zd8DI%?e)j15VS-ZM8{b;y18NB85NZt2~-|Sw$xZ5@sx@~-BpG3(tVAo7A}}_&UMyl z-x~^8vlx&`O-$%WMOH^eu#jA>B7F_89_Fekf!s+1)2%3&z6LVpyeYy3q;Gd-~GEBwNB-Oww5!K&P z89tz_4)vZbegmDix|1L3JN;#=d?;-tevul(@-W=mS1mlNa<9n$Vo|w&Q80qCQ*K3z z)-lTt7meAL`=`S(hMbh8 z6?;Wf(6O4S;gQ|{>oi{PVaT1?Xlp4>h*Y(Hj#y zIOAlv<9C~}aH_z*p$w-)sEkhG`h33T?6`I5qKblajCpY(BmU0dwRJ{RJKU~-D?;MI zlCJFdeP&lEl_Pvw-S~R^SKK#0LXMe4>J^W`Y32u;+ZaI*%8~9OytF;550B1A&NzPf z==W8jKjinef26zU`d`iUCS0G&jO?`U3+iTom5aJR+9e^pVqqzEMJ_VJm5g}M4}_Dd zW95)R?DL&he_M@@Ei%Gy4yIR9oc%t8$5LU2*bEQfz%TiIMerF*_F_Poi`?r&Yy$R~QN-gx) zG46)@kd4YLmBrmzmPW5iQpB!ja3i+T^Z^U^Q5+@d8@RW>XKzN}Z!z>72kW;ip8!9Z zI{wS9eUzujp3o_OXz9|L(2m5Z+((p5uRPfm&k^qvPC0-$`T$ODqo0B=fi3)2)3tu7 zs5wPe_zkk*h$hqlx7DlrN-ksjoj+Te$T0Pn$;!8-(d9hV2GkQhzbwgX%;9bir`i@K zlCyEiAJ&9|Uf3Bpe{a_3kftkTgvaoytAxn3$J^sCaGBfsBLM>o%+hjL2Q(`J@pi)Q z{eFRU*AM!M4XwgHp0*pxIh||f&OFNE<=|t(ySFGTm4sE_5QSDE+{yW2uRFo;7? zIC}R-n&uLF3PY{as46@%zg*7!ASL)4tiR`tbc4x&TkJa`uTSmjF(F!vbAU=?ggz&I-mTJ%=gPOSlf=rDe)-pnr zpyXG|cO=1m98_jLj@WVeJg^aiyD$;kx-ZLtL+flfa^^$+5I@qTx`itkxdl=>+{8~z z_XK8Zr(0Je8Pr(cvxCM}Xh6Zb8vSw#7H!guuftJw4~T(>I=RfK!|!pLz0PI4LYA z0REzTE*YCA_E~R3`!-t%@V|J8EFE(Ls>rB;{ZMz(eXzUs$(+zqN?Usp* z1A^%TWwND?Ce*r-!zJ3Jnzhf{E@>VZMdPG6*?}^aP_nhtUOXjsqbn1cX4UnF zU)xg&z$E`zxTvLi%uBDIG3B)ySeswoenn>WKuuI0*nJ5p?N$Z^N}qlQzGo=H^4xskqykWBb@yi0;+2y|)y zIxapUi>>vYaJ0?p@&t_FbS2~8Y+(IzJPR?g@^f~JQ3T*ND)%{w<_Pu6oAOQ#)8?3bUWI7>bbQw2ki!2g2$SLA6x(F+&gtmj@Cb=OHdPaNeq zhzSBrv!H*Z2H?L9vOGUF5NsdVB|Y3hk+o4y@ZGW^6j0OlrKWG4kGw4oz|k8gmp{Y! z<585O9{Q#S{OyD8zY_g!o5}nK4)FF!20#G9ojK`r!EwB2$UrFR#BUt_@i59!f1_o~ z$aJk0;)DqEei-^ttpu}_bAS~y$3NnAy{?v$>5~-Mzm4~|ssC@Hfbp-6er$Z;y^FuG z{d|KrP8gPx9GV;v6FG~zlA@!YHMHDIjRWj$?$;=2GPXaIT#Bl^ZL3?Gh$wY<`n%o7 zslp{CdIvq~Fe-ff&8;3jU}rnm;$S89mKU!MU9#Tr|M=?rf|Ll}P4@u6xc_kcGR2iR zt=r^K2a$BaAe^mfKdC9g-rU%`$p2bhd2M$6A)k~WM~ic!oawGp6hm}n_3PV-LXj3*R?{Va zdFd&N>{T2!!DC>f%rD0o4y>Zj)<%HkZm|ut^f|jPGq(oh7&@ zVMOvw^iwEdn=g9f$ZbH1sRJmlD=TW%@4QuEa>oqC-t2+!?ED=q`SKFt{ghhzd+6LA-re4-%ndzTI-14COijf)l95^+OA?lagNey{$I#<;)}4yN6+rO3vZd=*gVbT#opgr8C9Ou1x=GZcb7 zE?1OWw-?av*_$VdkP|EIOS>W0w)_@kFnoydL%;>*5BoXNuR!?7bVpskZO^u}l{&oqPtGdg&3Q zGpXI5b{Y>)sLZpi5Q@4#ZfSR$bF}?Mqm#jtk_lw+uN?r;uEK~ot=)(siwQAFv#zfO zws56r;4L3kvA^dRoh;QR8w zY|NYWhGlxUwr{r;c~WBDoM@?3luK-@+BhnwkNrlV|M)XZIE4-c)i-t9Ec+7Y>g7Fd zd*zRP2K_uM6sj@XybnLfN(W&t!!!3R=vrpfY@Cyx2Fv%+gh4>Zr8mO=UmAoq5={@0 zvC#elc~62vBMD4`l?%0fP9VaXv~Cl@ScqPUdU+Sty3IHH-&FhJPi9GLeAPndTue8h z_NV>{{6b|O!+uZq|3e}G>Ye5{r70+U9|#T26J8lTiHvG+#+@Jy>V)(rMFja@8 zff?Lq9ARoLJ@S-K{#>!f^O=Cehpn(d@3HAeiPZ>g|CwofZU8H&(ve;|swnJDQTLyJ zZ;cbPk}aC!uVGrX>k}v$GQ& zSsg5^lYh7u-@OoCNnrz>h;!ER4W6E-E^)xm@sFz(9Y&gBrC@EP#JI;ysUCp{y(=fc z2!ZVthq=uCqUjtO!)nLU^$Jk!YS!v=NjOjmCLVeGOL{EXx*!k#oXM?0NAJ3D|M&?6lLv4Z&C9V}&C1gp20= z7Kh^kx%ah^q7+`9kqx&sbrcocx6)AeJ{Gc-kd_grl6vmW`tbojnL`nG8@lQ~SuVrv z;Fs?^+3qn8(;bk#7klc-WCE@+fFTLP4}P2t`>!aU{#2>QA2?4G+cpA1D6n;?n?CIR={B##hony)3R+TINNYqCPr zoaL8r9GS?NLBy7xT|u-A6KiVuSNhuyYjK#i72guB|Dh3YksE}XF8&YI`2Pz@`mrp8 z>Q|T7t-#5=s^u5$Hwe$Vid;!t(&vd1*z~8m z=|&e$H_i)4C>LFVo1^}B8Zo?ZQZDh-8%00UT+C8&(i{H|s{Ydoff$UNzOJ)k-wi@v zQFp8Vk)`}0boY2ZZQ^*5^&`vkvJ1K<88vH0=Y3ZwvK=zD>*2%aK(X#Cmf^K-36al) zZF_C$1osy2+66kYGf0mAk}jC+718%hxS*yz*H8k~8dOX*yA{^}a`XW>j|0*RKFX-W z7T)C#dj~42{IrD&<#%QcXueB)IHfm|r7+<5EcL2OQE*LdQ};lXS`+RIt=M(T29U4Mi)x1QUG-yNvpe*cMN-9;?=N+L<4e!3FN^aMk2~p{^bt-b>k0gc zLwl|R#=aP3A3*4ja&m)RUB*RK-8twOO6`a#sF_741P{pf)OgOYuvi8pnC_1CQ8wcz zC}mpap8-Eqrq@~-{>a#aCnXG++57Z@_#wQ5mk2_c{|Z>EfT)~X6EpyUC1OWZ)=BvM z-SO0_S4R(^O6X8zrgwEt^$udh{66h()^hD{i_a}oF|Im^F=*^alcW>_cx8g zf6Yn`e6sJv_qDheUujgkK3ixi#ed$L)mOUuQV^9!W~HgelW82ei2y$g-#=I}m-g>i zu{Pe-^~T*s?;33X6Ts4UxX_*^Sy@mkk+N(R1nH5 zyC(8JiR>P&Ra#szM4riX#`Z%{*QN%&-&9RxE(pUUWWkWh<=dSUbRsp)<^*9D<&44< zc&6F-)Z5kOa=2T+9{>$%hktHs;MIbuY2SjQ;ifb2*dV|(WY zt-G;T=Xg18Qx(93v%}G^mIuqsa?jq@mH zdR)wo{#HQxJknouznq$uTf6eFc{tRHDsxjHz25YgV zjpV0hheKPmL>*}^`yhu7`*`~Koi#@WSxYCXt=@g>6c7js?QPmhLKUrrP$$Y>fzRXOOA+M>Jv3lGvC{a<*H`Y37>wjTq-+#Xl4eLq#9 zEye9Ab~g74FgMHzuAUHG{Cw(nH!l6ZX^{gcO%7h(WgR#8V4=5lpts6g{&kUWpuudH zdxMXi2O>BZ6U5XRoq^SGGJ~s|OtxnI$&dUwy3X?G0}+==wn2lmL&Q008Ie#RRJ^bp zQTqMp^jQ2;^0e1ZENM(40#dFuBt|5qom_+{Z5902KKx=tm7$NPA#HSHFz5M9KmGRb zZ5fZ-`mio7c}Xl`@nRQJfP0T6ea$hfJJOUyrbn-DzuL(?`eX^1%r!FsNUWv~(+RvK zf8Xyg+-xr-R!N5!a!hP<=l0G5bUP`qPMp0+=sRiT2$-Pc*~QNGy!b*x?5Cvvdd}#R zz&TqT&ebj5KAQpE;W;Olnce@Q`+^MzUD`$!2T*eWY>{Z2Kk0Y;!InU5D zo%j0p|Dstggp%1;cXJ;Ya-J6WBxbe4blKC$^je7l@)yZWsA8Ie%=!wRD+ zK0dgzzfyQvqYzPhXMSy*`Kc@-S*) zM;1_Hvg(#RX#HY>S^h;*TLPv!aQG_6Fe(7VT+1Bqr8AVT0@)v?2&B^Vb+j>;e@?`Y z_^uYzyjVgn)u5eBtbbSu>Im1s*rG=0;1h$ci#C^=4P02SO_ru7N_C!u0P49(>;_8X zXIQ6I9g<%2UG&b+I*CiFVvQJ*0C+Tr8AKM9OyAntsZ9?DQW)}=PnN9{W0MKzIIAeN z@qKey5?bHMoO9TL6o8!^#AwfsN=8)EYucr37W7B1;l>{>Wzr;FZ_@>h^`SbB>nkHQ zTVw}@Xl(&+SqJU%?dU!2Q8JhRu%n}KIbOqOcuQVwPYOwvfEAPbOH9S%GU6V#tU9SG zIwV#;4@Ey}b*wnHHUp{t7I=0bD)cQf^`pe=VusJ4s)Ni*lpx9-$jc2sgw&#o$y1!A z^joVBG5OD>!=R!avb{p6O24yv?z@{fNvR!7U*vD-vIW=51k?DbpD%5H{PiDk$cs1( zpV1w^cgg9vScIDOxCBC0ivQYh1|z;H-hvs^HKX^zR`G`f=rCV(H)S$i*$2ovfClhy zN%3(N^}dl0Zf$Z}+5o2oCCg~XSDwWlv2&7(98?0$O3v#D1Ht~|t&V?8?R@1O{t*Jc zn`CVsVeD6i-JV=GxFc>LnxAw~o*>~9R?Vlt>YqQV;o0=ikR!Lovv;I}Dv>og1b~+@ z-?b5ahXH_h*H;Hk-%~%7C@&eV@ug`W;fQ$kg*JIYFU*ELX6-xFhH;sWsYwEBeruvQ zKl2o%I6Hx9`QsTm%ARggrHBF3j1zw#MQuKigUF3%FjqRpVISC(6`JlTn6b1lte7%; zHId=nN)$pB-~Fj77?c%;Ua2KfE6*o#Yki!03X2={->(eC>_=(U{(Y%U4&M#431mg} zFMJVQY%JGFUjVqWuTU_tIM3GHtp(iJjUGv0V;ltkkvhQQ;!t`?1U+j;k_1X$>hz%y zrQ4_Pp2571MoNBHZ|K6~4W3#6)UqU4i&G3)H&|Gi79dE^{G#DbQT&Z|4f6%u-ArT! z)O5=TCsTLfl3UoC3xSMVF}_YlSZLKYpz!CHhnv5C9Na+M>nr&;=3zNoyYV4GcYB7y zvC<3BPm#4$fjM3}tQ;Gwl6M&ni$9p248YgVYNRGiWQZPFeAdlZIJ(&6q?n(gvmYAQ zD>~+NnIk%*jY)7d5Eu zz?h&#F_3e)V=9WOkFoXFrT1NpxEf*3g+dR}~Ys4J_6 zDA2YC;>pNtts)2%320u1>nya^^_Oe=g-eQB3zvDYeZfKhiN)quphe->?oc^q*43Zp zPRx2EUl5uz_vTpz=>jIN@|ec<&q!URL0)4DLXe|!9ui#0nhE6cFPyu)F4~OKSro-8 zry$iI>pqhm@I*q8y>VK?j^17*H!OA^o5)d~mGa9-bzu#FU3qHT8fhs0>)dmV)M1F7FDzwI`2iJvIPL*@;ZQ7O8df~g%bGJC6T2XxatWHt)RHu7sG1l#&KQULobO13#{~$cGjpwm6P@frfK74HO z#k#jHFP?0Yx0Dxr#`{Q5SWV<<)EmJ9rpwqt_DP-$MIZ$r)x<~GN`c?Ad&m#fO0$e~ z(UG~eg=Z0yj`+M^Do4+}o=rRWhSa$tw8Y1A zegxQ6gIC%kBpg1l5vr|)9V0sk=B^UP|Kd3>1XMyAoYRB9O>T=K(_ntp$&2x}vmMD- zc+OjHG&?sM1#Pby@4S3ud~r!NXGQ3~439EE?cUk0-(cya1(Hu0O^S;uiT-N`k1{Xt zb<_#v^|)vySTU=q_LCq_hBdHo9-jE8jO{!;=Vdpfz#d}NqMe}7tdXkeLQ7$rM^F08 zJ?s}eMHOlmUXy_)K;aLM6oRut?ZM+seM}*clo9Y)T`|rvRVS$5otNkPPQZGd5J#?g z3ZWq2xe(i}JP))0O%)80;W?%U-)gim7=R#ojDZC_-cR8@#tRhF?gz;36MzQuT-<04 zJUtJ{?$vgHq}~mP;PpnK?Qx*uA?Hoyy5^vy1Kkz&(yoL<|8Sk%GYb4*qn~T>yo7T~ z5V0#*-@x|tzwK|!U*!e*dGi;`yl15+TbsM6gFD{Lc-kQtWDcn?c?SlKO{h* zqEW@s;T|>DgV>|SYz2WPpcNq6{AiEBxyY%{-SMmV;T5f^p=8mW4*4S>B-#;0>zuNU#}{$nN*Xw1+{$fnJ6KX|6rnh&GoF97`^; z@k?861M+)N`(Tp%mY=&J86WZAevW(r(AK)lu`&A>vI6y(!}o=;co-^R^e^mokvghG z(6#l|@wTbk_N{D*uROrIi4h1T`LuWml(Z5XWyNVW41ucT>u@S~2_BQ&t-1L+b0NG0 z;b1Q7O~BYe?1705F*t5jl9ET%cMTa}gx;imo~iqgogh>KlsEPOTpWLh%nM2IlNU;! zBy9uBeF}%M6z5Fl-copr&K*AtGz=Pn9pELn90On3Sudmy?B_{R+_NeWs>VKrF^DkS zpY~J~vLN~A>4WzUxM-5D%5yabQnEk~g(QR)o4+}8v%T7u^&bOvsK-q2>k|NkDU%-9 zDet`7qp<{=r(Nc%t%*qn3BBD-u@(rCX#pm9s$S@2R}_Q)SqV$f*p-s250Fv*HhgvR z+y3(>siFjPHyBXM!f!mg3_*lp5z!$ZvE>M82reZ168y$CN(4ZroqEC0bEtNkP3q{g zrK$Yq*Qws^8dHT>x+M4vpaZ~ifhgh10ZN1cT%Vg6*SA(Myn41CBe|R4l4AmIVcXQs z8I*#xT5~>&EDZw{X_-K(_hMQD6R0oyD9oK9%vjZ21>ZOXY${NWP**rit;h2_)Q@~_ ze3|z6=+=Mzp4(rdFP4fbvtK;CSj=S_2A^OSmjIh%QO*c__j49Ai6?y7F}i;@ zo;vzakGq(!Ak00RYf;(A!mcjk zbnONhYtysAR$||0uZOLXtVWBGtSPI3lddSl@?B=1$67(1W1{KKO@W48fJ*{J=%EGj zzFQTm&$PGL$m~ZbnAc{GFP8MJHb$)6sTAlucdh2t%ZJo9k6=u|Fnh=f=pQ*-S9c^4 z`G{x>b2jY2ai&s+KbdGHcvM^nT2(2E(7BO~6Lz;E*52kGrLX(Jc%`2(z5>Nf?}6}B zMC`@7XQjbUj2gc$oSsI!l)>9Ig!}H!$ng<`wcb&yzES>(a-GQ4Je=>iOo>$Zh*rRwYQM7|eu-A7vq=k@Jc-@eq6fbx z5+ZX|3Vh{pS`D5wb`})J45G+RW0MK~>oNojN^WH`WPN#;4r5EH18y&-f)13u-EHCj zu>GF;CF@Z|mOaj1Eihkhcn!_{B%?`Q#vqpnGlx$JQ6lc{M;X0je7$40aFAMW=}llY z`1Uatwl0y?$nVQMhTRhy>zT2J;)=-H`Ia+1Gc#@!Px4D*E}xFqlYT$0jtVwE@!(P7 zFfy&mMt9akjUH*2aKaV*h*l~s2&4wQ$7j9R8q}m@Q%W?&2b5qP(_BJ8A#1JW4=L1i z^Z%u@l%~5X#avuRundMFz3TaO3iB*%?GM)2*Wu;iOp5wg4Fv4ig^NAb13Yv`i6OB_YDwziHFy1KetoSd>5eZk*grHj1 zW&^rXGG}F62j6W@?L9EH;x@|;##;aI@{zz}W<39z+Fj+P2z`hBs9S_)W5DkBM^O!ZZ~qo| zHNc5Qe*ou9_E-(5SV-3kH5>!S0=Fl&_GT)eLci5xu&ANlwZRD-9Hou8QBVj&-NrG% z-akXCW?!7?*5)!KKBDPZf;{b2MwA##^W`USm%DTe4h=1- zE~YQhRTP)GK~$}!zdnf9t-~<*wri^;;&GxDl}>26L|6DKer95r%T6P;-*zuH>C$4? zaS{X8gd}d%&8x0^FOL>Xy{Y54vUj%_{G;MYSUV_}L~95EfQSNLC^}`bTM8zNZUv45 zIrG^^bIMAtS&FG%F!NowsT^m8Sm!Qrg*>9{Sm6Ll%f}5Cr>3u9kwkgx5%IXWnl3c0 z)9cZe6~GTD^4ALiW%VMR{ZWnth9u@l4ot6TeNt?MlxEg;xWoFpo$nsP@Cub%edHNy zJqvk1v2dk;SZB8`p*t_NlxJ7G(Kp2%Hb;i0tHdj3IWb)N+jr}sS@(ap;d zp!m=9DYDU1l7A-sAVf73ZS%+umX5UL+UDg?0tvMCY@buj$h@e3HcSx}yz0yx&JL&A z0_KeuQppnpz#qU@{x%*R>Hy_hY4chSeS|U=_c3JCRs7bhMrSX0OHkjsDB(kz7EP+B ztD6zHGM3nelo3Nk5>KhrW$KR5hyY;Zf5y-QZl)YY=K|GpTI&wrJn%FLsMu!>diU7+ zkyVNr@jp^K>nayx?ApX+z>2`73&3u57y-{?)-Ao8+<^UD;NI@BCIG3P)UVRT{?s%- z^T0-CoaN;xfgn{3LGav~Q!1Q*H0`ln0@oAuept7NfL`u}h`kU@tNG=DjDC3_r?Y<3$M&GCl)(b) zeFTWF9r6RKBRdqTj&U|R7x1o9Ng|@<^TQ?W(fq3-n{E@>ohNUd-QiQukl-RF(bb4O3=ZNk6Ux157pGR!$_ z;o3VFf5sdVrfrT*b6;ZgnK$V4YX4;vPIcr>_m}e%(KZ9(4!bCMb z7g&cd>Bi$UbyN0%7q-D`q37Y|t0IKV z6DLXlcj2UAH6GtT(iS|<3%$&SW9Pz~_W@{Z6LV};>FNWnQ-KnVyfDe{?omkA5Znij zcpIT@+UPJ%gplZazpxNiHrUPZk=fryvRDAfF+Y+hVTU!!bE%5t1pj$;3jn=0z5aHW z>`F?mZuQKE_@5XQ5G7S4w=$GW{3*E-AS}r*5Ah5$0uc1>Fr{i$^j#@SBp)KIj*m>c zF>4L2>l~KB*6-gmfq;lr01>}EimJCQ!f6<*Upv4gymWWzVc?ZMp!qBB93*9jbgw%doGct z1>z)p_Y(GEr-QgcQ{A0nAu_Kna07TOWPq(Ql>^i0ix)s?=Js$Gub1tNrKI{g^=gTC zwyL+*iK>+3a=R}(bCK{{GKady&DcF*c|cArjIrG%jFBG}5rP(|x{zow|E(T$_>JlV zvgrdKF^ZVg>Dl7|BYxB4RbvRW?XL|8`0Mw^A?V65YGWyxM2^L@Y9B%s$GtXv&^}4y z-vcSo0)4axfxx9FJ!&pYiJ>T>^hM1$vf(D|&PlEcp^oImq_9>Ju)~@1w$-0vN6_w^ z+==<>xoB?1rJ&``IyAj5IQipMs>J z>A}+{UG6$buc)hQKdfhxqzq>ujjzc|nmT6Z49wNjuBXAqs%DCO(MTnablz4$k$K;$7*2oFAH~ zclo!Wz0Bl30zqC`U&N1__$J5L ziy_d<0EVL1^fzDzS-S70R40x98AqqmH#_xM{Nfb|JiFxMURw})sbWG|Mv%s8_nHOk zs8|&NH_`z3$lJ|NiI7JKLg0fRVi=~t6&#qiQpX@MKq?N?|3n9<=>>(ztO+628@;b; zg5EN5G=B7q6BoFhQZn;4fQ(7|eOy9h0x!+F#MsCUO=3e{+Y)tSWv^fCQ2?u85kXT^ z<~D_RLarG?3kgfK{MoL5UICyu0BPt{BH2A0Uc)D~jPB9)OB|YF8fxG{n2h{E^;l4m5qpKU}Iw}3mPyN z{w1rMe@`Pu9l%nU#0@7D&*1mS5{>Ne{5R_&5B8I%-S2+1Hp}N>rKPia3y6Ymw*WpQ zQ8R;YaRKlm_7;Zfh{+9IjBaxmM790a?RPa?XAfl;ksb*xdO+T4c-?|a={b;P%fHmD zPTa%^;%oDkOp6tYPMUL**)&Hy-|q+tS|?h1VN%a%N=NERScg%@Ck`W@M8>+8G*0JwVoZVwY-OqSAAvzWt-vv`-iF4JL&IW^^ z2Fz}&9#k7E$H4|CG|^dS!1Mmz(e{e+;&#Nf> zxxKpyH^2K%Ix<&14WBBOp;BzmYBFV~!{41ASb}Pw3~R8q@Go)nT_v6qmdC(tg1`H z(0*pBny8H~T>seyTzV)=7-?)E=Em3rKdIub2D$jdR9Ai-0i+Q+M!a;mxirT|_qJ&9 zXSu2&^=<`l3UKwwWtF)5@%^2lXn{t+L+~2=BcGwDLs?=R`kE3zHERwpgLExY>=s{F zEw}r91TFyGiatZ{D|D}Ul()Kea-gRkZ#wV!D4;)tiZP7tn|&{EdEMi48$1k?mb_4x zcny>B3zC>2@ADWrS-@Q!lIK2c(P$}L>T_Q@#XihI0N0*RYC5W6XWSE$AqQlRD?YNq za!9SBOt0MR3m0T%gqyh*$A3>%YTJ1wYXH|wkc}@1Zt;! zyq%8_<23=(fJ4!vt{&I}dB@dmavOiD?Vug76!3SudXEaYtyB~JbVR)^bZpjw&tFFT zI>4s^=j+&U;Wu|b8&9lknXFfgy3E@~_XbMkt5dHM=)Ty8x~JPrb6BOXSd+R6zHq^` zX)ATGinlbD&*Vt*Jaf^ockv=IFPb9y(j1rCQM(B&oUL|>?Amk&Qao25DT<0+_|9A2 zIv^phY5Up05V(r$V|rh^oT_ra%rcDcsz;@QBhas>7b{bi3zc-JYXM^bCw=`|9YgMs z#z_#f*_!qk!fo05xa0jENG9kud;ou8H{n`EG&+W%cLiYAW3`v>$bie;uDA@8%?Xf( zdJFWR{1j`kGfZ!nu0f&Gd1orEw7vtL@$HF074hghRx1G?_CVHGKG<bR{EeiNz2o zFTOaHLw+&kZ-Ct-Gfd{N8DQ_^cD6i%$vJ=$(&tG z{eD8`a40BysM(OSG&rnq9lqx$Ch0XwU70Z` zR&)iM1R~SY^;;MRzEbZ9qO44oNkx~EDWW0SHsxL0^KG5v3r2%zPF4<2P7~QS9xlpC zV2#S%6IsAfjC#gfVU)jOy5N{UVrV;FHZ%5W4%ZF)sc!anO|{QmxL&= zj_tN~@cyJTUhi1d50gnv$D~2cuB+2d_=?L5OJDPYia1LC5DG#;3NV(=le2Xps6YZ) z#7FpDCWTafgxvn9s>#Ps>9y#M6~ANC1>&6p9b8zWXQ%4#A?nI_q8c(7$}!X2m?J)G z=%#@Ll0Z@U2;rtv$rh5B^_SDr{xQw2O$D0kj)K(`*Mx%`7u=>bigK8CtkkNdNVPoD z80l8@k$v`P9j}!gQ=Dm5?ih(QI>IQloqEhUo~9Gf9W0~8t*w8Y7CDHvz1Jm1mAzY) z$-RTh<32QUYne-&AZY!OsdTL6Gb)j^8HmCe=9Q|pciPp=JW%CQaV%81wyfOT^rviO`^r7ph zElpLPS>_5Wm|h&GAsvHA1*d0amTFt~KqAaZZSvRw$8n)=#zy>uJ%z|JdWora#ECDt zi3$^^RG@_e-<--36)$~1+QSQN8@y>smy5rg1#JOxLQ%#}a#Q;}{M_yjHR}ftjy*KF z=rI}>Im2|oCBG$h#~54qKy?$e!FUlT3UF4>mixoWzI*obf^(6pV znL1aC;|z%4=F&2QDI`;Xcj>A#2b7YugKmgASxh3=JZw+^Ox6}%>9#V-=_IOwom38K121t^I`i#Ha zsll5%_3qwUas;?b*8tokD^6~aqbIfZd9M>0e((JJ%C(kioW#UmDFKsplRoOZT$z4% zXe{a;#ajQjssA@4#kx4VLwA7p54ZIHXrm-Z-`1H8Y2PpXVY8mR^}@M0z04<%jKrS? zFH#c&)~B^V={Fq!P;m5O@m(Zm1~@o7H5%6UmM*tp9JI!LuL58w8~Jd{=Lc75E{Vy% zwk(36QcRxlI@^|;3c%#nVkKSll3beTfHf!X;wHpS%AhAtxrfL|hMF%FdYEtTY#sgj zuJ+-MtnWLh`i#RA2IT7HgTQ$PhLhFxu6tP0ZsB*2B8p1w7Sk9oE*PRD`Z={e5No7GPWE1)S-=9JhkUmw=u<1; zIcf4hVdVzB_m)z)Q{B|isu*)4)>wDt`}|&D55zz4$6Wf2@v;RalEAR{ljWoCVcimO zdmzW>Di>3&y8Vj~=CD%ZC9au?a%^D}Pqo^YbP?|JSka|vyi zx;Ry^Mx%HB=xC;yC1);mse-T$$vG_c6BtfoJ#Xjd_hVt3fCGBn2^@;|shxucXQCwamA!8FElxM6nG=VCtkt^DKl(*1cir3UuhhR-;Cn} zV>BC^_0K163gZJFKJ_5ph<`-U%``tz={K+=jRbn>svWR0IMOm7%ic>ePwEj++Jvaiq zh=fph3wZ#HuxrAPen`v~HGAF;8rIFKWi`x_isqXGN;v24vE26o{5fzRxqAV}&vPu4 zrL%75OSUBD3L}>@Z3SgIR`?+6Ppc*;Q+)IefwAb%Zs>pbah_LAU0kMfDRZ=aaM`EB zf3n%6M~y>Oo9X;ADo*2Q4`9C5gQoMBLa8%*Zgec#Y{%lL3+&TL1Y5H`5O3=buF*M` zzSxA<8{zf(nXNppF53l0A5N3r&1biI3V_wr0rhcRbID;4G=#S+AI0)dcc}^UPBwWd|Jdj2^0GK*>$Eo?PJ+z-{$2HLoJ-4CF zVhBw=BmjO@yiM@yn!N~x1B56UN`xEGGX8T6p=(&TU`e~wH{my~ ztk+{ets3dV3DTyO(K0^(2_B2xr^}=aPWada4$b4wPQ6JL>z3EVmN$RGmNE+gQY2fF z;var%&B+}8b~IOK>Qp$jZ#a)2BJs6N({F&9rGh zx|P)q;a9@`G1oh7E zJVzeTZsfjbo13-TAQW(G9Ju-klqc|9{(+-T&Zg7thA|I(G)L4MK^_S{-)s7@ET?jN zcE9k(PmllV`(*5L_0PV69=6|l&g%C!x`hc#wi|^ganTJ}Snjqe3kYD*H?(c_u5&L_ z($8Y1>dS<$u>zOL7)D z_J4Kv?cq?aecNiaDp4wxg-}$qBc=#rQ+BPCO^T&#R@qG1#*En*OeLg5MM=yMOOwc? zNoZ_}LUu!F>}IU78;mhyU$)pvN5Y73IViM5P^8@=B0)K zkpGat&QMZ^1M64-yv#*7%1|G2dpIaf${egef}F-TwHC23aAjqw6~W__H6n)Va18_E zvdI_4-5qO~kzt6f&FXNwK2FoKBD1EwHi?tJ(KDG0@TkXk{?~Q7b&g=~fI?HAUctn0 zJ}I*kP7e8>M6X5-i@Kc$zM^TMhProaRc``6Imfv-cEWWIo}(-E>Ct!4yS>it9{9vT znt|ri5WCV)adYfzTG3j2U#maL6=CQFv;sRJy0v-OT?>!uLee|*Jf^@}_y(w;6Fo(i zC5-Jf5O<`vt6^^*y%0j?v+icMBWwOVfGkBmxZ%iMA^A)PUf{Op6=0078M`uY*qF(C zcPzBGy{Y8E+`b}DF7!>(chG6x?g!uuye&ST)WNHC_HBW+ndp^Kal(qqL`3Aw=R5R^ zX|TRnoo_vD382|aU~6{;z)!mdR@+Jhkfe0kS02wk_r*>+oypLhrM7#5^si+Y_A@3Y z%+-MU8LU+me~zN;Bh|yZ;dVC|3cbfibH(YBVjg3AnN1XjHzvVDrzy6W65eJ&7RI8s zCy_MS--qriO*(=Arxa<+21n(7vBpl< zT2GfE&#VJLRuklJt1CQ1Hnj%GgFVrcY7_l4kEIVAiQ)hx=G)Wd5rYQ$Rp}39q)8BS zm_}Gy*_TnbKUQE(DfBDO$oc?yZEx(X+cd6kTjH=DP8kk{Hxq#QbgIcXjkJ88mEGgS zGc*8eVe_3&2zS)&D8Y7yJ+DEq<-_FY%3OXCu4m=gm{DEeS9SQ@ol56kx$0K!NgGvp z=Mu@N|FWbfjS;SSxlyD_;JB2R1w#t}TI=80(Q2?yq%CFwfONza6V!-+)BeG%Jekk^ zSwtoDKQHUB#brHO)+k|4b=q}vjyX~{_%t`5-7g9O14rBGh1)9IWU)da_iq+gR908V<;Zl0N*5J^cg9~KbjW4DNKe9-WGhkxp+KT=}3`AJNssi;Ij=sOma{r~2Y4x@JLTg78FKkAmGIF73BH(NAiH^$Xd-RQ0XozXm_nDDa!a7Mowaf zfFiH2^(n>qJV*oqOvm(!xGPrJcb6SV&5YtaC=f)5y!3P@GC_^=G7)4iA5LYKuw8@T9x7Q}G_=f~;u zhTehA=7U|jo$2n|-1q2Y=ey9}O_aVI9EGHwQWh7n z?&hF=cPns*gWD)00^P=Fw{jcbk{U-|-vr9x34=P9m$RpqRrbc9(h^ zb@StIF(XZ*rMWL@ZHb^t^O&|XxTXPO0#fH+Y5I}VEK(16?g3i0S?z7tpCqQ&h&g}| z(zdCtHC|5GD$Pp@+OdyEcIoJXV}Cwjuz5A9S+%B>``W1|g4ri{JK4VDTZFt~|K;;phr}1yQWxs$QhN!JgfhT(~!Lj^4r*fp~+cLEcR&1xFdENT&>e zewg7Jj&PO2HE^-heli|opG^{<&30?^{E}yqt&Zq?j1?IBPus1%rhzh2b-786&6%Ka z`vqbOV`leZU2>QpcdzkPeb*Q@w=JyQv6_lH6LfntP9bJhb(M0U%OQRgdXpG^-wO=Z z-N9mDdFGVlunINcd_lx2`z+gjrvJ@{fmFZ|SJWD!f3G2hi{HFkzZBH<<%fIua=*&ZQ97C`E^O&KcL_+oU@sp%vJ0;M3tRMXlJ2~Qr#SUO zh{KsM@_dI4g%Es~-!SZY6QQ7MG+1{$227|So!fx(9CQJ+Hcvtfn*2Mq$_v4Y)W7kA z6WBeVYp-(jPNC&hjTminN3~eVkkv#G+qVsdy?gbWGQ79=**xu|zDLg=ih0q5N5L-y zTkhTh4vD=D+PMZHzbZK&009xH%;aP_6R3xYt==D&H`1|#?|q9|vrO;-{ep~~zrS|+ zF$N>bF`_ZdS?f=Yx4m^|B-C(mWPw}4CCWh8kz1Cy5_q}|e}tz4+NQt@vTpX}coiiGJZuPRkoJkKNOve})D3#7>yIvw*h*?k z!RJ;-apY(6C5Jue?=r3B7ptXbppsB&1WwS3HS!Br+nvG#LNS%KLsLlLvse%(!>$*t}jwPfP(@7jtl>fIHIWn zD@E2X9sFq>n$&3a6;+v%sara3^Qn_JM(k)5Ajk$~)WlCJHa=L7i~YTyJ03;DMQK@& z#b0{b(dy|B9k~e z@@$!rtBQDMY;T)1t;_@7T(j$5X<1NuntRbwsY1_OnL0ih{rs z8J2@k714g*Ton{;wQDWeON~_ubcuI2XeJyJSF+UqbM6q5{mW{Sv9s15-rGyuO5~k7 z^g5hHelcD`PhI=ZBX*aPwMMrW9b9nDXk!10$_DAOauK62ff>M=$?e@&j2a0+pb-aE zVL~g>CJ_WI$5;dnC(z7zz=gUZ84{$4kM0~M9F0(l($;G4myjYBw69ZCi;oV6m_Ed* zHAMsi9XyK`V!+Nx-djf9)R3`ouu_%ZeUZ}A%jCb54^@4+1%e(IY}EpJV(7fY<3r8t z?<#E3zeA6BsRmk(PBNEnod83<@-Sh`b?pl@0n7r4gboNKh$PGl@cao)X=gGTbftdo z`I_KAkeU?}SV|S2jGA0etlsC{VnwmH019l-Dy4k32#EfSf?W$pp`g?#`;4c zdL#*0-j~!kzX}U$v^D2S1c(3qts+m2M3q3_MpqJ07-iynRhL#QlM>MW3JXCKB zE##S4$#Cyojko8fd*d7mO}mi#{`n9-|e>$Z#}zbdM!!5x1$Wi(Xx6>Y3(vu%~S zr^Oxc{&szD`%t8<<)C0oZZtg#GKDAGK*PW7Jz10Y-Ql6w!$Xt)e1|Q?THnt{AUfZM zpREuKt+hPhpSDOfofa3A~jp z#;>OA&zger>=Sw3DV#A7*C2`e(4Dru8&u2?OksQ@1_->lq}mpP*&)P|?C39?x6BAwuT{-!N|Mpg=Sq`+you?93B*2{ zng15n3uMhuIRQ>);SAtK1cL7QZfYnjeS3Ssx5ByO{od80ratz-U@i4%fNgN_>8tSnvk{cUoOEs!p}S2eE}>tizN-XhHc?aq#Eym`q)?d!BTs5ao}x( z6zNGxR+gZL#3KrMs3#>INnTrOuy2*%c)Ev{vSe-WODzp;AdXo?K-&YVV9ckTZKL0` zyXtipO5b;~L4)>o!o`i~&;#W4FTCh6=Okb0z^g&Bju8qCnjjEEler$A=~$VKqLOCe z6ZEgdKYMJsxWbg_Fa*LBIiF8t$1#VJ*OuBmazq*vW%?e6f{au!@@bYxIlTGz=>=|S zWvm3&pvmEA_;uw5#@%0OFI#j*J5s5{<0MHC5oP3T*jMO2wMtPo)hFC$<=0M&!NszP z9BuSn`db}}*LTH3g!r<^tAF8K{uN&iec1nG2N-~-LnmBl(5)E-7JIEr zU9IMHnF(U}E$YxVZ6#LyhmFi|x%sGplqr64uBvM=hKNr6M;F-^X`0t|+(Y{Rb&ME*ssfYfdx) z%{VYpLo~q2sXs%Bui9RxBZ;+sLTSVLmLeaFBO;6phAB0-6D9F$Eu%#L1<8!es&@gc z#9RRxC>&%u)0m${Ef-ir{>nh2Cv4pQ0bQ=pI|@J|k>^KNB z8pZ4z(;=mP9np>yY?sLG79))h}#IhNU!jIn^Aar@FUa+BFY+9NZe;(xFX zY!(T^-|*=&gijWo!{`{VPJ#tcH+e`UPvf_=6G>bBTqG>LA=;UmFv+zVV)0CxwBU)* zaW!oxb4>#pIu`b~_JIT;^%iO(+-&I`25XeGuJ#u7^JaEBg8cAEI`VB%Y8{@59Bfl# zWkGK+(D8u>5vMDArJm1FI>``O9U~;GrxSyrF^gQ}n)L3)hASAO>OWo*YVEEIrk}vS z2YQX;B5`}Q;NFL9^}tZ9u?SIg7bLet#tVYuq@nPbr%Cygj{Kw=)V*3LH)(aw9wP;8_R_F()Mrh#q!h!Z0%Kdo6;kb`ez_%!5$bqK&6WQUcrRY zEiK<|-?P~qVo?FNg?awTx3A_hY5GMQ^}BpP6c@YFQFsPaMqt0K7>+sA*Ws0B;DGA$ zF<)Z{8npFtVGZ6bZ2IF3feRN=w_AMB-~^Z5M4axtF*K?#Kd`j`-*8q?)cL9eGua>o z%B5vliQP7lxc%p_U-fmouf9u(BFf3LG?5!iVOvW<`64uKjur8PEoSvmQQ`S}|8*a7$Y z>2OTynFLq&(J$tW;srhk9&k?+?C^a@jvQQ`%;)}m7zj7pszvGYXhslATxHo#W*m@o z{wyuv(8K>;T`58pSxuzRo#D|uC|tT+MIC$`{YhJx1UI*X8+9cdG;=xTwu#Ndv!bcUwGQc(Vj4J&3Sjz^ngoF zYupaC4`AE(z^(CMbE~T?bZ5=v_%OsMB?J3qNNmq-qV#l6oe$q{WbLPBbDwAFgd+~? z$RSN`AEa+%$=hoWT*Emp z&IeE*yW7GL@$YbjRP*54+fSyx5_;~N)o5lHj-CW#=2T#OrvT%7$o00V^k5IPy_(CR z%~3)*Q|bbdNtn~m&01il%ST{%XV#1_7$gBb(>&qU-KrCRZYywn=7O%pQ^$&#`inh%N@bT_Y2^ zz@82enz7320q}cJ5^=BZ!=D+jYqH3zJPvt+9BJ{>;+6@YP_*{3QYs#Pxn7DrJaw@N z20w^AKqlm+29g?7g?x7^+^7y)4u(4@3)3fdWB1JuZ6c`{@ye)`>ZBa|+6&`>AABZN zbtTXDXjnZ3rEw^@ou?OMR-8O@7+xFYj$LW}Ud})!Ve4-A{V&yOC0_H1hv7W?t_s*n z)u__K`a57!cVtne2gF08L)l2l2O6)JLJ-)IadmoA4gm~DOu8r?3>$M&;v}z)4xink z2v-L7d+_KkZwKW?VXA@EZcTpSSlwavfGh9yqh5n#zf#N9rN|qgEdp}wa*!9psqMXQ zk*x0>FVd|(AUK>?(LvKx@+hC5ZM9tfJ5iCJPwT*4XsrerjKr$QzkZ$)*puIRm*rOy zSd(0@;2!urHTrdN1t)q-xgS;{palX+UyoQMJILyhvVfkUc?Y)yC1H# z#9YTH^Iw}OZX?+vvS#u+YnVReGqKg`rw4fBa*9@lbEQb049PRz`u2LC1W1asR^<7H zf@AMZ9gqEGT$AvVO>x}s5%Pi>H1#E+vNyP|x!F9EDC?(SSAn4d2 zN#fpJ7UcoPZ0l2{Gw5W#r>phYpre4OP`KGQVsxl;Ix5XICc*zlUdZBIQwRKl3yz5?$ z^9JksN^M{bEusuqpSt(5C))J}Y(HE9*RyGiv!7CU2AmMvNJj5H?IQ3oaXChrh;DkC_%3&|;Pygwi5bD}bXJ>qWk(z$LBSg?X!y z>^1V7E+d}H{rccqdO>mu5}N;4LT4# zIS}x~;q(Pui$+Irs&zE%>~t^qfRKUSdmY1&4J=Dbe^D(DWu|L%{0F0%EEwc$p2#C3 z#^t)D?Gd34S^AqvrAf?UzcpZY3Q?Q7{cjJn)_u6^#;%cV5t>z@7FMa4wcIb(o8)_vPXvEAo7-5$( z7KD@FTY^&{|6=KeS#4w|Z20jhDLYDGazAFD?>7p~w$7!gnF7@57T_T{T0X7NDJ0)lTu*4vT=4%it;+b^EB(xoK< zA&l7o*BbyT6Io$Qgz(B1!zhGTwiMbSys|i8V})cL(AQqfw-A2qrL+#=*Ir7|fWEe| zv@k|O__b9)A_mB;_~(aDzEn;=%>G^)DTx+66oQb)*W4t}O33YyfG%~is+Bqz4U!i4 zL4wee0|r0sh5xY-%nV`S28XKE+IJgnhyH4+2cho*3SVM^H5ku`m;Y8#+Rk#H57wKP zE%~sJ|G^Mk?VI<>LB0D2=QAm`VmkWLQGU@gQ$yB-(f2 Date: Mon, 15 Jan 2024 17:53:55 +0100 Subject: [PATCH 02/10] LCD: add examples for LCD_driver_interface --- ToDo_readme | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ToDo_readme b/ToDo_readme index a7c1597..13caf8e 100644 --- a/ToDo_readme +++ b/ToDo_readme @@ -1,4 +1,3 @@ wszystko po dodaniu sterowania podświetleniem LCD -1) edycja obrazków w hw requairments na zgodne z opisem. 2) dodać pliki template przykłady implementacji interface -3)zaktyakiziwac dezwwnko I opis SRC folderu w readme \ No newline at end of file +3)zaktyakiziwac drzewko I opis SRC folderu w readme \ No newline at end of file From eb6931aa7fd313d50bca6593e304859e932622c8 Mon Sep 17 00:00:00 2001 From: niwciu <57457942+niwciu@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:55:48 +0100 Subject: [PATCH 03/10] Examples: added lcd_driver_interface example implementations and template --- .../AVR_IO_driver_interface_example.c | 192 +++++++++++++ .../LCD_IO_driver_interface_template.c | 170 ++++++++++++ ...32_bare_meta_IO_driver_interface_example.c | 261 ++++++++++++++++++ .../ReadMe.md | 0 4 files changed, 623 insertions(+) create mode 100644 examples/lcd_driver_intrface_example_implementations/AVR_IO_driver_interface_example.c create mode 100644 examples/lcd_driver_intrface_example_implementations/LCD_IO_driver_interface_template.c create mode 100644 examples/lcd_driver_intrface_example_implementations/STM32_bare_meta_IO_driver_interface_example.c delete mode 100644 src/lcd_driver_intrface_example_implementations/ReadMe.md diff --git a/examples/lcd_driver_intrface_example_implementations/AVR_IO_driver_interface_example.c b/examples/lcd_driver_intrface_example_implementations/AVR_IO_driver_interface_example.c new file mode 100644 index 0000000..f769e64 --- /dev/null +++ b/examples/lcd_driver_intrface_example_implementations/AVR_IO_driver_interface_example.c @@ -0,0 +1,192 @@ +/* + * @Author: lukasz.niewelt + * @Date: 2023-12-04 20:13:23 + * @Last Modified by: lukasz.niewelt + * @Last Modified time: 2023-12-08 10:49:44 + */ + + +#include "lcd_hd44780_interface.h" +#include "lcd_hd44780_config.h" +#include +#include +#include +// clang-format off +/*********************************Define hardware connection in your project*******************************/ +#define LCD_DATA_PORT PORTD +#define LCD_DATA_PORT_DIR DDRD +#define LCD_DATA_INPUT PIND + +#define LCD_SIG_PORT PORTB +#define LCD_SIG_PORT_DIR DDRB + +#define LCD_BCKL_PORT PORTB +#define LCD_BCKL_PORT_DIR DDRB + +#define LCD_PIN_D7 (1 << PIND7) +#define LCD_PIN_D6 (1 << PIND6) +#define LCD_PIN_D5 (1 << PIND5) +#define LCD_PIN_D4 (1 << PIND4) +#define LCD_PIN_RS (1 << PINB0) +#define LCD_PIN_RW (1 << PINC1) +#define LCD_PIN_E (1 << PINB1) +#define LCD_BCKL_PIN (1 << PINB2) +#if USE_RW_PIN == ON +#define LCD_PIN_RW (1 << PINBx) +#endif +/****************************END OFF define hardware connection in your application***********************/ + +#define LCD_D4_MASK 0x01 +#define LCD_D5_MASK 0x02 +#define LCD_D6_MASK 0x04 +#define LCD_D7_MASK 0x08 +// clang-format off + +static void init_LCD_data_and_SIG_pins(void); +static void init_LCD_DATA_PINS_as_outputs(void); +static void init_LCD_DATA_PINS_as_inputs(void); +static void set_LCD_DATA_PINS_state(uint8_t data); +static uint8_t get_LCD_DATA_PINS_state(void); +static void LCD_set_SIG(enum lcd_sig LCD_SIG); +static void LCD_reset_SIG(enum lcd_sig LCD_SIG); +static void wraper_delay_us(uint32_t delay_us); +static void init_LCD_SIGNAL_PINS_as_outputs(void); + +/************LCD_IO_driver_interface implementation START**************/ +static const struct LCD_IO_driver_interface_struct LCD_IO_driver = { + init_LCD_data_and_SIG_pins, + init_LCD_DATA_PINS_as_outputs, + init_LCD_DATA_PINS_as_inputs, + set_LCD_DATA_PINS_state, + get_LCD_DATA_PINS_state, + LCD_set_SIG, + LCD_reset_SIG, + wraper_delay_us, +}; +const struct LCD_IO_driver_interface_struct *LCD_IO_driver_interface_get(void) +{ + return &LCD_IO_driver; +} + +/*************LCD_IO_driver_interface implementation END***************/ + +static void init_LCD_data_and_SIG_pins(void) +{ + //set BCKL PIN as output + LCD_BCKL_PORT_DIR |= LCD_BCKL_PIN; + //disable LCD backlight + LCD_BCKL_PORT &= ~ LCD_BCKL_PIN; + init_LCD_DATA_PINS_as_outputs(); + init_LCD_SIGNAL_PINS_as_outputs(); +} +static void init_LCD_DATA_PINS_as_outputs(void) +{ + //set pins as output + LCD_DATA_PORT_DIR |= (LCD_PIN_D4 | LCD_PIN_D5 | LCD_PIN_D6 | LCD_PIN_D7); +} +static void init_LCD_DATA_PINS_as_inputs(void) +{ + + //set pins as inputs + LCD_DATA_PORT_DIR &= ~(LCD_PIN_D4 | LCD_PIN_D5 | LCD_PIN_D6 | LCD_PIN_D7); + // enable pull-up on input pins + LCD_DATA_PORT |= (LCD_PIN_D4 | LCD_PIN_D5 | LCD_PIN_D6 | LCD_PIN_D7); +} + +static void set_LCD_DATA_PINS_state(uint8_t data) +{ + if ((data & LCD_D4_MASK)) + LCD_DATA_PORT |= LCD_PIN_D4; + else + LCD_DATA_PORT &= ~LCD_PIN_D4; + + if ((data & LCD_D5_MASK)) + LCD_DATA_PORT |= LCD_PIN_D5; + else + LCD_DATA_PORT &= ~LCD_PIN_D5; + + if ((data & LCD_D6_MASK)) + LCD_DATA_PORT |= LCD_PIN_D6; + else + LCD_DATA_PORT &= ~LCD_PIN_D6; + + if ((data & LCD_D7_MASK)) + LCD_DATA_PORT |= LCD_PIN_D7; + else + LCD_DATA_PORT &= ~LCD_PIN_D7; +} + +static uint8_t get_LCD_DATA_PINS_state(void) +{ + uint8_t data = 0; + if (LCD_DATA_INPUT & LCD_PIN_D4) + data = LCD_D4_MASK; + if (LCD_DATA_INPUT & LCD_PIN_D5) + data |= LCD_D5_MASK; + if (LCD_DATA_INPUT & LCD_PIN_D6) + data |= LCD_D6_MASK; + if (LCD_DATA_INPUT & LCD_PIN_D7) + data |= LCD_D7_MASK; + return data; +} + +static void LCD_set_SIG(enum lcd_sig LCD_SIG) +{ + switch (LCD_SIG) + { + case LCD_RS: + LCD_SIG_PORT |= LCD_PIN_RS; + break; + case LCD_E: + LCD_SIG_PORT |= LCD_PIN_E; + break; +#if USE_RW_PIN == ON + case LCD_RW: + LCD_SIG_PORT |= LCD_PIN_RW; + break; +#endif + case LCD_BCKL: + LCD_SIG_PORT |= LCD_BCKL_PIN; + break; + default: + break; + } +} + +static void LCD_reset_SIG(enum lcd_sig LCD_SIG) +{ + switch (LCD_SIG) + { + case LCD_RS: + LCD_SIG_PORT &= ~LCD_PIN_RS; + break; + case LCD_E: + LCD_SIG_PORT &= ~LCD_PIN_E; + break; +#if USE_RW_PIN == ON + case LCD_RW: + LCD_SIG_PORT &= ~LCD_PIN_RW; + break; +#endif + case LCD_BCKL: + LCD_SIG_PORT &= ~LCD_BCKL_PIN; + break; + default: + break; + } +} + +static void wraper_delay_us(uint32_t delay_us) +{ + _delay_us((double)(delay_us)); +} + +static void init_LCD_SIGNAL_PINS_as_outputs(void) +{ +#if USE_RW_PIN == ON + LCD_SIG_PORT_DIR |= (LCD_PIN_RS | LCD_PIN_RW | LCD_PIN_E); + +#else + LCD_SIG_PORT_DIR |= (LCD_PIN_RS | LCD_PIN_E); +#endif +} diff --git a/examples/lcd_driver_intrface_example_implementations/LCD_IO_driver_interface_template.c b/examples/lcd_driver_intrface_example_implementations/LCD_IO_driver_interface_template.c new file mode 100644 index 0000000..14f77b0 --- /dev/null +++ b/examples/lcd_driver_intrface_example_implementations/LCD_IO_driver_interface_template.c @@ -0,0 +1,170 @@ +/* + * @Author: lukasz.niewelt + * @Date: 2023-12-07 15:51:41 + * @Last Modified by: lukasz.niewelt + * @Last Modified time: 2023-12-08 00:34:48 + */ +#include +#include "lcd_hd44780_interface.h" + + +// clang-format off +#define ON 1 +#define OFF 0 + +/*********************************Define hardware connection in your project*******************************/ +// ToDo define here name of lcd PINS and it's hardware represetation +// #define LCD_D4 xx +// #define LCD_D5 xx +// etc +/****************************END OFF define hardware connection in your application***********************/ + +#define LCD_D4_MASK 0x01 +#define LCD_D5_MASK 0x02 +#define LCD_D6_MASK 0x04 +#define LCD_D7_MASK 0x08 +// clang-format on + +static void init_LCD_data_and_SIG_pins(void); +static void set_LCD_DATA_PINS_as_outputs(void); +static void set_LCD_DATA_PINS_as_inputs(void); +static void set_LCD_DATA_PINS_state(uint8_t data); +static uint8_t get_LCD_DATA_PINS_state(void); +static void LCD_set_SIG(enum lcd_sig LCD_SIG); +static void LCD_reset_SIG(enum lcd_sig LCD_SIG); +static void _delay_us(uint32_t delay_us); +static void init_LCD_SIGNAL_PINS_as_outputs(void); +static void init_LCD_BCKL_PIN_as_output(void); + +/************LCD_IO_driver_interface implementation START**************/ +static const struct LCD_IO_driver_interface_struct LCD_IO_driver = { + init_LCD_data_and_SIG_pins, + set_LCD_DATA_PINS_as_outputs, + set_LCD_DATA_PINS_as_inputs, + set_LCD_DATA_PINS_state, + get_LCD_DATA_PINS_state, + LCD_set_SIG, + LCD_reset_SIG, + _delay_us, +}; +const struct LCD_IO_driver_interface_struct *LCD_IO_driver_interface_get(void) +{ + return &LCD_IO_driver; +} + +/*************LCD_IO_driver_interface implementation END***************/ + +static void init_LCD_data_and_SIG_pins(void) +{ +// init all GPIOs + +} + +static void set_LCD_DATA_PINS_as_outputs(void) +{ +// configure LCD_D4, LCD_D5, LCD_D6, LCD_D7 as output + +} +static void set_LCD_DATA_PINS_as_inputs(void) +{ +// configure LCD_D4, LCD_D5, LCD_D6, LCD_D7 as input +} + +static void set_LCD_DATA_PINS_state(uint8_t data) +{ + if ((data & LCD_D4_MASK)) + //set LCD_D4 to HIGW + else + //Set LCD_D4 to LOW + + if ((data & LCD_D5_MASK)) + //set LCD_D5 to HIGH + else + //Set LCD_D5 to LOW + + if ((data & LCD_D6_MASK)) + // Set LCD_D6 to HIGH + else + LCD_D6_PORT->ODR &= ~LCD_D6_OUT_PIN; + //Set LCD_D6 to LOW + + if ((data & LCD_D7_MASK)) + //Set LCD_D7 to HIGH + else + //Set LCD_D7 to LOW +} + +static uint8_t get_LCD_DATA_PINS_state(void) +{ + uint8_t data = 0; + // if (LCD_D4 input port is set to HIGH) + data = LCD_D4_MASK; + // if (LCD_D5 input port is set to HIGH) + data |= LCD_D5_MASK; + // if (LCD_D6 input port is set to HIGH) + data |= LCD_D6_MASK; + // if (LCD_D7 input port is set to HIGH) + data |= LCD_D7_MASK; + return data; +} + +static void LCD_set_SIG(enum lcd_sig LCD_SIG) +{ + switch (LCD_SIG) + { + case LCD_RS: + // Set LCD_RS to High + break; + case LCD_E: + // Set LCD_E to High + break; +#if USE_RW_PIN == ON + case LCD_RW: + // Set LCD_RW to High + break; +#endif + case LCD_BCKL: + // Set LCD_BCKL to High + break; + default: + break; + } +} + +static void LCD_reset_SIG(enum lcd_sig LCD_SIG) +{ + switch (LCD_SIG) + { + case LCD_RS: + // Set LCD_RS to LOW + break; + case LCD_E: + // Set LCD_E to LOW + break; +#if USE_RW_PIN == 1 + case LCD_RW: + // Set LCD_RW to LOW + break; +#endif + case LCD_BCKL: + // Set LCD_BCKL to LOW + break; + default: + break; + } +} + +static void wraper_delay_us(uint32_t delay_us) +{ + // ToDo update wraper +} + +static void init_LCD_SIGNAL_PINS_as_outputs(void) +{ + // Initialize LCD_E LCD_RS and optionl LCD_RW GPIOs as outputs +} + +static void init_LCD_BCKL_PIN_as_output(void) +{ +// Initialize LCD_BCKL GPIO as outputs +} diff --git a/examples/lcd_driver_intrface_example_implementations/STM32_bare_meta_IO_driver_interface_example.c b/examples/lcd_driver_intrface_example_implementations/STM32_bare_meta_IO_driver_interface_example.c new file mode 100644 index 0000000..ce63362 --- /dev/null +++ b/examples/lcd_driver_intrface_example_implementations/STM32_bare_meta_IO_driver_interface_example.c @@ -0,0 +1,261 @@ +/* + * @Author: lukasz.niewelt + * @Date: 2023-12-07 15:51:41 + * @Last Modified by: lukasz.niewelt + * @Last Modified time: 2023-12-08 00:34:48 + */ +#include +#include "stm32g070xx.h" +#include "lcd_hd44780_interface.h" + + +// clang-format off +#define ON 1 +#define OFF 0 + +/*********************************Define hardware connection in your project*******************************/ +#define LCD_D7_PORT GPIOA +#define LCD_D6_PORT GPIOB +#define LCD_D5_PORT GPIOB +#define LCD_D4_PORT GPIOB +#define LCD_RS_PORT GPIOA +#define LCD_E_PORT GPIOC +#define LCD_BCKL_PORT GPIOB +#if USE_RW_PIN == ON +#define LCD_RW_PORT GPIOC +#endif + +#define LCD_D7_PORT_CLK_EN RCC_IOPENR_GPIOAEN +#define LCD_D6_PORT_CLK_EN RCC_IOPENR_GPIOBEN +#define LCD_D5_PORT_CLK_EN RCC_IOPENR_GPIOBEN +#define LCD_D4_PORT_CLK_EN RCC_IOPENR_GPIOBEN +#define LCD_RS_PORT_CLK_EN RCC_IOPENR_GPIOAEN +#define LCD_E_PORT_CLK_EN RCC_IOPENR_GPIOCEN +#define LCD_BCKL_PORT_CLK_EN RCC_IOPENR_GPIOBEN +#if USE_RW_PIN == ON +#define LCD_RW_PORT_CLK_EN RCC_IOPENR_GPIOCEN +#endif + +#define LCD_D7_OUT_PIN GPIO_ODR_OD8 +#define LCD_D6_OUT_PIN GPIO_ODR_OD14 +#define LCD_D5_OUT_PIN GPIO_ODR_OD4 +#define LCD_D4_OUT_PIN GPIO_ODR_OD5 +#define LCD_RS_OUT_PIN GPIO_ODR_OD9 +#define LCD_E_OUT_PIN GPIO_ODR_OD7 +#define LCD_BCKL_OUT_PIN GPIO_ODR_OD0 +#if USE_RW_PIN == ON +#define LCD_E_OUT_PIN GPIO_ODR_OD7 +#endif + +#define LCD_D7_IN_PIN GPIO_IDR_ID8 +#define LCD_D6_IN_PIN GPIO_IDR_ID14 +#define LCD_D5_IN_PIN GPIO_IDR_ID4 +#define LCD_D4_IN_PIN GPIO_IDR_ID5 + +#define MODER_LCD_D7_0 GPIO_MODER_MODE8_0 +#define MODER_LCD_D7_Msk GPIO_MODER_MODE8_Msk +#define MODER_LCD_D6_0 GPIO_MODER_MODE14_0 +#define MODER_LCD_D6_Msk GPIO_MODER_MODE14_Msk +#define MODER_LCD_D5_0 GPIO_MODER_MODE4_0 +#define MODER_LCD_D5_Msk GPIO_MODER_MODE4_Msk +#define MODER_LCD_D4_0 GPIO_MODER_MODE5_0 +#define MODER_LCD_D4_Msk GPIO_MODER_MODE5_Msk +#define MODER_LCD_RS_0 GPIO_MODER_MODE9_0 +#define MODER_LCD_RS_Msk GPIO_MODER_MODE9_Msk +#define MODER_LCD_E_0 GPIO_MODER_MODE7_0 +#define MODER_LCD_E_Msk GPIO_MODER_MODE7_Msk +#define MODER_LCD_BCKL_0 GPIO_MODER_MODE0_0 +#define MODER_LCD_BCKL_Msk GPIO_MODER_MODE0_Msk +#if USE_RW_PIN == ON +#define MODER_LCD_RW_0 GPIO_MODER_MODE7_0 +#define MODER_LCD_RW_Msk GPIO_MODER_MODE7_Msk +#endif +/****************************END OFF define hardware connection in your application***********************/ + +#define LCD_D4_MASK 0x01 +#define LCD_D5_MASK 0x02 +#define LCD_D6_MASK 0x04 +#define LCD_D7_MASK 0x08 +// clang-format on + +static void init_LCD_data_and_SIG_pins(void); +static void set_LCD_DATA_PINS_as_outputs(void); +static void set_LCD_DATA_PINS_as_inputs(void); +static void set_LCD_DATA_PINS_state(uint8_t data); +static uint8_t get_LCD_DATA_PINS_state(void); +static void LCD_set_SIG(enum lcd_sig LCD_SIG); +static void LCD_reset_SIG(enum lcd_sig LCD_SIG); +static void wraper_delay_us(uint32_t delay_us); +static void init_LCD_SIGNAL_PINS_as_outputs(void); +static void init_LCD_BCKL_PIN_as_output(void); + +/************LCD_IO_driver_interface implementation START**************/ +static const struct LCD_IO_driver_interface_struct LCD_IO_driver = { + init_LCD_data_and_SIG_pins, + set_LCD_DATA_PINS_as_outputs, + set_LCD_DATA_PINS_as_inputs, + set_LCD_DATA_PINS_state, + get_LCD_DATA_PINS_state, + LCD_set_SIG, + LCD_reset_SIG, + wraper_delay_us, +}; +const struct LCD_IO_driver_interface_struct *LCD_IO_driver_interface_get(void) +{ + return &LCD_IO_driver; +} + +/*************LCD_IO_driver_interface implementation END***************/ + +static void init_LCD_data_and_SIG_pins(void) +{ + RCC -> IOPENR |= LCD_D7_PORT_CLK_EN; + RCC -> IOPENR |= LCD_D6_PORT_CLK_EN; + RCC -> IOPENR |= LCD_D5_PORT_CLK_EN; + RCC -> IOPENR |= LCD_D4_PORT_CLK_EN; + + set_LCD_DATA_PINS_as_outputs(); + init_LCD_SIGNAL_PINS_as_outputs(); + init_LCD_BCKL_PIN_as_output(); + //disable LCD backlight on init + LCD_BCKL_PORT->ODR &= ~LCD_BCKL_OUT_PIN; + +} + +static void set_LCD_DATA_PINS_as_outputs(void) +{ + LCD_D7_PORT->MODER &=(~MODER_LCD_D7_Msk); + LCD_D7_PORT->MODER |= MODER_LCD_D7_0; + + LCD_D6_PORT->MODER &=(~MODER_LCD_D6_Msk); + LCD_D6_PORT->MODER |= MODER_LCD_D6_0; + + LCD_D5_PORT->MODER &=(~MODER_LCD_D5_Msk); + LCD_D5_PORT->MODER |= MODER_LCD_D5_0; + + LCD_D4_PORT->MODER &=(~MODER_LCD_D4_Msk); + LCD_D4_PORT->MODER |= MODER_LCD_D4_0; + +} +static void set_LCD_DATA_PINS_as_inputs(void) +{ + LCD_D7_PORT->MODER &=(~MODER_LCD_D7_Msk); + + LCD_D6_PORT->MODER &=(~MODER_LCD_D6_Msk); + + LCD_D5_PORT->MODER &=(~MODER_LCD_D5_Msk); + + LCD_D4_PORT->MODER &=(~MODER_LCD_D4_Msk); +} + +static void set_LCD_DATA_PINS_state(uint8_t data) +{ + if ((data & LCD_D4_MASK)) + LCD_D4_PORT->ODR |= LCD_D4_OUT_PIN; + else + LCD_D4_PORT->ODR &= ~LCD_D4_OUT_PIN; + + if ((data & LCD_D5_MASK)) + LCD_D5_PORT->ODR |= LCD_D5_OUT_PIN; + else + LCD_D5_PORT->ODR &= ~LCD_D5_OUT_PIN; + + if ((data & LCD_D6_MASK)) + LCD_D6_PORT->ODR |= LCD_D6_OUT_PIN; + else + LCD_D6_PORT->ODR &= ~LCD_D6_OUT_PIN; + + if ((data & LCD_D7_MASK)) + LCD_D7_PORT->ODR |= LCD_D7_OUT_PIN; + else + LCD_D7_PORT->ODR &= ~LCD_D7_OUT_PIN; +} + +static uint8_t get_LCD_DATA_PINS_state(void) +{ + uint8_t data = 0; + if (((LCD_D4_PORT->IDR) & LCD_D4_IN_PIN) == LCD_D4_IN_PIN) + data = LCD_D4_MASK; + if (((LCD_D5_PORT->IDR) & LCD_D5_IN_PIN) == LCD_D5_IN_PIN) + data |= LCD_D5_MASK; + if (((LCD_D6_PORT->IDR) & LCD_D6_IN_PIN) == LCD_D6_IN_PIN) + data |= LCD_D6_MASK; + if (((LCD_D7_PORT->IDR) & LCD_D7_IN_PIN) == LCD_D7_IN_PIN) + data |= LCD_D7_MASK; + return data; +} + +static void LCD_set_SIG(enum lcd_sig LCD_SIG) +{ + switch (LCD_SIG) + { + case LCD_RS: + LCD_RS_PORT->ODR |= LCD_RS_OUT_PIN; + break; + case LCD_E: + LCD_E_PORT->ODR |= LCD_E_OUT_PIN; + break; +#if USE_RW_PIN == ON + case LCD_RW: + LCD_RW_PORT->ODR |= LCD_RW_OUT_PIN; + break; +#endif + case LCD_BCKL: + LCD_BCKL_PORT->ODR |= LCD_BCKL_OUT_PIN; + break; + default: + break; + } +} + +static void LCD_reset_SIG(enum lcd_sig LCD_SIG) +{ + switch (LCD_SIG) + { + case LCD_RS: + LCD_RS_PORT->ODR &= ~LCD_RS_OUT_PIN; + break; + case LCD_E: + LCD_E_PORT->ODR &= ~LCD_E_OUT_PIN; + break; +#if USE_RW_PIN == 1 + case LCD_RW: + LCD_RW_PORT->ODR &= ~LCD_Rw_OUT_PIN; + break; +#endif + case LCD_BCKL: + LCD_BCKL_PORT->ODR &= ~LCD_BCKL_OUT_PIN; + break; + default: + break; + } +} + +static void wraper_delay_us(uint32_t delay_us) +{ + // ToDo update wraper +} + +static void init_LCD_SIGNAL_PINS_as_outputs(void) +{ + RCC -> IOPENR |= LCD_RS_PORT_CLK_EN; + LCD_RS_PORT->MODER &=(~MODER_LCD_RS_Msk); + LCD_RS_PORT->MODER |= MODER_LCD_RS_0; + + RCC -> IOPENR |= LCD_E_PORT_CLK_EN; + LCD_E_PORT->MODER &=(~MODER_LCD_E_Msk); + LCD_E_PORT->MODER |= MODER_LCD_E_0; + +#if USE_RW_PIN == 1 + RCC -> IOPENR |= LCD_RW_PORT_CLK_EN; + LCD_RW_PORT->MODER &=(~MODER_LCD_RW_Msk); + LCD_RW_PORT->MODER |= MODER_LCD_RW_0; +#endif +} + +static void init_LCD_BCKL_PIN_as_output(void) +{ + RCC -> IOPENR |= LCD_BCKL_PORT_CLK_EN; + LCD_BCKL_PORT->MODER &=(~MODER_LCD_BCKL_Msk); + LCD_BCKL_PORT->MODER |= MODER_LCD_BCKL_0; +} diff --git a/src/lcd_driver_intrface_example_implementations/ReadMe.md b/src/lcd_driver_intrface_example_implementations/ReadMe.md deleted file mode 100644 index e69de29..0000000 From e5a1919c040c69cb8c55001509735c12f39465ae Mon Sep 17 00:00:00 2001 From: niwciu <57457942+niwciu@users.noreply.github.com> Date: Mon, 15 Jan 2024 18:02:56 +0100 Subject: [PATCH 04/10] ReadMe: update --- ReadMe.md | 43 +++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 26 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 052b47e..6a15b2c 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -6,12 +6,11 @@ - [1. Requirements](#1-requirements) - [2. Schematic for possible hardware configurations](#2-schematic-for-possible-hardware-configurations) - [LCD\_HD44780 library src folders file structure and description](#lcd_hd44780-library-src-folders-file-structure-and-description) - - [1. lcd\_driver\_intrface\_example\_implementations](#1-lcd_driver_intrface_example_implementations) - - [2. lcd\_hd44780\_config.h](#2-lcd_hd44780_configh) - - [3. lcd\_hd44780\_def\_char.h](#3-lcd_hd44780_def_charh) - - [4. lcd\_hd44780\_interface.h](#4-lcd_hd44780_interfaceh) - - [5. lcd\_hd44780.c](#5-lcd_hd44780c) - - [6. lcd\_hd44780.h](#6-lcd_hd44780h) + - [1. lcd\_hd44780\_config.h](#1-lcd_hd44780_configh) + - [2. lcd\_hd44780\_def\_char.h](#2-lcd_hd44780_def_charh) + - [3. lcd\_hd44780\_interface.h](#3-lcd_hd44780_interfaceh) + - [4. lcd\_hd44780.c](#4-lcd_hd44780c) + - [5. lcd\_hd44780.h](#5-lcd_hd44780h) - [Examples](#examples) - [1. STM32G071RB -bare metal implementation](#1-stm32g071rb--bare-metal-implementation) - [Requirements for compiling and running the example:](#requirements-for-compiling-and-running-the-example) @@ -72,10 +71,6 @@ ```bash LCD_HD44780 ├───src -│ ├───lcd_driver_intrface_example_implementations -│ │ ├─── -│ │ ├─── -│ │ ├─── │ ├───lcd_hd44780_config.h │ ├───lcd_hd44780_def_char.h │ ├───lcd_hd44780_interface.h @@ -83,24 +78,19 @@ LCD_HD44780 │ ├───lcd_hd44780.h ... ``` -#### 1. lcd_driver_intrface_example_implementations - The folder that contains a template of lcd_driver_interface implementation and examples of lcd_driver_interface_implementation for different hardware - - file 1 - - file 2 - - file 3 -#### 2. lcd_hd44780_config.h +#### 1. lcd_hd44780_config.h Header file for configuration of the library. In this file, it's required to configure: - LCD type - Usage of RW Signal/PIN - Usage of LCD buffer for displaying the content on the LCD - Which functions from LCD_HD44780 lib you would like to compile and use in your project. -#### 3. lcd_hd44780_def_char.h +#### 2. lcd_hd44780_def_char.h Header file for defining user special characters and user special characters banks. Each bank can contain up to 8 characters that are user-defined combinations of characters from defined user-special characters. This allows to creation of different combinations of special characters that can be loaded depending on current code needs. -#### 4. lcd_hd44780_interface.h +#### 3. lcd_hd44780_interface.h Header file with library interface declaration that needs to be implemented on the drivers' side. Please look at the code examples in the "examples" folder and search for the "LCD_IO_driver.c" file for more details. -#### 5. lcd_hd44780.c +#### 4. lcd_hd44780.c Library main C file -#### 6. lcd_hd44780.h +#### 5. lcd_hd44780.h Library main header file with available library functions. ## Examples ### 1. STM32G071RB -bare metal implementation @@ -302,7 +292,7 @@ const struct LCD_IO_driver_interface_struct *LCD_IO_driver_interface_get(void) } ``` -It's a basic interface that connects the library with your HW driver layer in the application without making any dependencies between them.
In **.src/lcd_driver_intrface_example_implementations** folder you can find a template with empty definitions of all required interface elements as well as a few files with examples of implementations for different microcontrollers. Additional details of the implementation in the project can be also found in **./examples** folder. +It's a basic interface that connects the library with your HW driver layer in the application without making any dependencies between them.
In **.examples/lcd_driver_intrface_example_implementations** folder you can find a template with empty definitions of all required interface elements as well as a few files with examples of implementations for different microcontrollers. Additional details of the implementation in the project can be also found in ready to compile examples. ## How to use in your Project - advanced case @@ -359,7 +349,7 @@ It's a basic interface that connects the library with your HW driver layer in th } ```
- It's a basic interface that connects the library with your HW driver layer in the application without making any dependencies between them.
In **.src/lcd_driver_intrface_example_implementations** folder you can find a template with empty definitions of all required interface elements as well as a few files with examples of implementation for different microcontrollers. Additional details of the implementation in the project can be also found in **./examples** folder. + It's a basic interface that connects the library with your HW driver layer in the application without making any dependencies between them.
In **.examples/lcd_driver_intrface_example_implementations** folder you can find a template with empty definitions of all required interface elements as well as a few files with examples of implementation for different microcontrollers. Additional details of the implementation in the project can be also found in ready to compile examples. ## How to define custom characters and custom character banks. ### Example of Correspondence between EPROM Address Data and Character Pattern (5 × 8 Dots)
@@ -451,9 +441,10 @@ LCD_HD44780 ├───examples │ ├───ATMEGA328P_ARDUINO_UNO_R3 │ ├───config -│ ├───STM32F030R8 -│ ├───STM32F091RB -│ └───STM32G070RB +│ ├───doc +│ ├───lcd_driver_intrface_example_implementations +│ └───STM32G071RB_NUCLEO_BARE_METAL +│ └───STM32G474RE_NUCLEO_CUBE_IDE_LL ├───reports │ ├───Code_Coverage │ └───Cyclomatic_Complexity @@ -470,7 +461,7 @@ Folder description: - .github -> Folder with githubactions .yml scripts - .vscode -> folder with vscode example settings for luch.json and tasks.json - doc -> folder for any documentation needed or created in the project -- examples -> folder with example hardware implementations contain ready to compile examples for different uC +- examples -> folder with example hardware implementations contain ready to compile examples for different uC. In this folder you can find also examples and templates of lcd_driver_interface implementations. - test -> folder where all tests are written. The folder contains following subfolders: - hw_test -> folder with configurations/setups for specific ucontrollers to make integration tests - lcd_hd44780 -> folder where all unit tests for lcd_hd44780 module are kept From f0b444331e5d032c46f37722120a68d309b68ce3 Mon Sep 17 00:00:00 2001 From: niwciu <57457942+niwciu@users.noreply.github.com> Date: Mon, 15 Jan 2024 18:35:01 +0100 Subject: [PATCH 05/10] ReadMe: update --- ReadMe.md | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 6a15b2c..fc71965 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -29,7 +29,7 @@ - [Hardware connections](#hardware-connections) - [How to build and run the example](#how-to-build-and-run-the-example-3) - [How to use in your Project - simple case without user-predefined characters](#how-to-use-in-your-project---simple-case-without-user-predefined-characters) - - [How to use in your Project - advanced case](#how-to-use-in-your-project---advanced-case) + - [How to use in your Project- simple case with user-predefined characters](#how-to-use-in-your-project--simple-case-with-user-predefined-characters) - [How to define custom characters and custom character banks.](#how-to-define-custom-characters-and-custom-character-banks) - [Example of Correspondence between EPROM Address Data and Character Pattern (5 × 8 Dots)](#example-of-correspondence-between-eprom-address-data-and-character-pattern-5--8-dots) - [Defining special characters in code.](#defining-special-characters-in-code) @@ -262,14 +262,23 @@ Library main header file with available library functions. ## How to use in your Project - simple case without user-predefined characters 1. Copy LCD library src files (or files from src folder) to your project. 2. In lcd_hd44780.config.h - - Define specific **LCD_TYPE** and usage of **RW Pin**
+ - Define specyfic **LCD_TYPE**
   LCD_TYPE -> set one of the predefined types:
      2004 -> 4 lines 20 characters per line
      1604 -> 4 lines 16 characters per line
      1602 -> 2 lines 16 characters per line
+ - Define usage of **RW Pin**
   USE_RW_PIN -> Defines HW connection between LCD and uC
      ON - when RW pin is connected
      OFF - when RW pin is not connected
+ - Define HW setup for **LCD_BCKL_PIN**
+    LCD_BCKL_PIN_EN_STATE -> Defines active state for enabling LCD backlight
+       HIGH - when high state on output pin is required to enable LCD backlight
+       LOW - when low state on output pin is required to enable LCD backlight
+ - Define usage of LCD buffering functionality **LCD_BUFFERING**
+    LCD_BUFFERING -> Defines whether you would ike to use LCD buffer or write directly to LCD screen
+       ON - when buffering of LCD is planned to be use in project
+       OFF - when buffering of LCD is NOT planned to be use in project
3. Declare the LCD IO driver interface in your application on the GPIO driver side. This interface should contain the following implementation defined in lcd_hd44780_interface.h @@ -295,19 +304,28 @@ const struct LCD_IO_driver_interface_struct *LCD_IO_driver_interface_get(void) It's a basic interface that connects the library with your HW driver layer in the application without making any dependencies between them.
In **.examples/lcd_driver_intrface_example_implementations** folder you can find a template with empty definitions of all required interface elements as well as a few files with examples of implementations for different microcontrollers. Additional details of the implementation in the project can be also found in ready to compile examples. -## How to use in your Project - advanced case +## How to use in your Project- simple case with user-predefined characters 1. Copy LCD library src files (files from src folder) to your project 2. In lcd_hd44780.config.h - - Define specyfic **LCD_TYPE** and usage of **RW Pin**
+ - Define specyfic **LCD_TYPE**
   LCD_TYPE -> set one of the predefined types:
      2004 -> 4 lines 20 characters per line
      1604 -> 4 lines 16 characters per line
      1602 -> 2 lines 16 characters per line
+ - Define usage of **RW Pin**
   USE_RW_PIN -> Defines HW connection between LCD and uC
      ON - when RW pin is connected
      OFF - when RW pin is not connected
+ - Define HW setup for **LCD_BCKL_PIN**
+    LCD_BCKL_PIN_EN_STATE -> Defines active state for enabling LCD backlight
+       HIGH - when high state on output pin is required to enable LCD backlight
+       LOW - when low state on output pin is required to enable LCD backlight
+ - Define usage of LCD buffering functionality **LCD_BUFFERING**
+    LCD_BUFFERING -> Defines whether you would ike to use LCD buffer or write directly to LCD screen
+       ON - when buffering of LCD is planned to be use in project
+       OFF - when buffering of LCD is NOT planned to be use in project
- - Specify which procedures from to library you would like to compile and use in your project.
+3. Specify which procedures from to library you would like to compile and use in your project.
To do this, Edit defines in section:
```C /******************************** LCD LIBRARY COMPILATION SETTINGS ************************ @@ -327,8 +345,8 @@ It's a basic interface that connects the library with your HW driver layer in th ... ```
-3. If setting USE_DEF_CHAR_FUNCTION   ON define special characters and character banks in lcd_hd44780_def_char.h
For more details about defining custom char please refer to [How to define custom characters and custom character banks.](#how-to-define-custome-charatcters-and-custom-character-banks) -4. Declare the LCD IO driver interface in your application on the GPIO driver side. This interface should contain the following implementation defined in lcd_hd44780_interface.h
+4. If setting USE_DEF_CHAR_FUNCTION   ON define special characters and character banks in lcd_hd44780_def_char.h
For more details about defining custom char please refer to [How to define custom characters and custom character banks.](#how-to-define-custome-charatcters-and-custom-character-banks) +5. Declare the LCD IO driver interface in your application on the GPIO driver side. This interface should contain the following implementation defined in lcd_hd44780_interface.h

```C /************LCD_IO_driver_interface implementation START**************/ From 98c380895b504735a350694cb5ce3b771ee02dd7 Mon Sep 17 00:00:00 2001 From: niwciu <57457942+niwciu@users.noreply.github.com> Date: Mon, 15 Jan 2024 18:37:09 +0100 Subject: [PATCH 06/10] ReadMe: update --- ReadMe.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index fc71965..9a40687 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -24,10 +24,10 @@ - [Requirements for compiling and running the example](#requirements-for-compiling-and-running-the-example-2) - [Hardware configuration and connections](#hardware-configuration-and-connections-1) - [How to build and run the example](#how-to-build-and-run-the-example-2) - - [4. ESP8266 NONOS SDK - TBD](#4-esp8266-nonos-sdk---tbd) - - [RequirementsTBD](#requirementstbd) - - [Hardware connections](#hardware-connections) - - [How to build and run the example](#how-to-build-and-run-the-example-3) + - [4. ESP8266 NONOS SDK - TBD ...](#4-esp8266-nonos-sdk---tbd-) + - [Requirements ...](#requirements-) + - [Hardware connections ...](#hardware-connections-) + - [How to build and run the example ...](#how-to-build-and-run-the-example-) - [How to use in your Project - simple case without user-predefined characters](#how-to-use-in-your-project---simple-case-without-user-predefined-characters) - [How to use in your Project- simple case with user-predefined characters](#how-to-use-in-your-project--simple-case-with-user-predefined-characters) - [How to define custom characters and custom character banks.](#how-to-define-custom-characters-and-custom-character-banks) @@ -255,10 +255,10 @@ Library main header file with available library functions. ninja flash ``` -### 4. ESP8266 NONOS SDK - TBD -#### RequirementsTBD -#### Hardware connections -#### How to build and run the example +### 4. ESP8266 NONOS SDK - TBD ... +#### Requirements ... +#### Hardware connections ... +#### How to build and run the example ... ## How to use in your Project - simple case without user-predefined characters 1. Copy LCD library src files (or files from src folder) to your project. 2. In lcd_hd44780.config.h From 76397fdb019a035521c6dd024de02815a0085325 Mon Sep 17 00:00:00 2001 From: niwciu <57457942+niwciu@users.noreply.github.com> Date: Mon, 15 Jan 2024 18:48:08 +0100 Subject: [PATCH 07/10] ReadMe: update --- ReadMe.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 9a40687..0c573d1 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -454,7 +454,6 @@ Below you can find a simple example of two special characters bank definitions: ```bash LCD_HD44780 ├───.github -├───.vscode ├───doc ├───examples │ ├───ATMEGA328P_ARDUINO_UNO_R3 @@ -477,9 +476,15 @@ LCD_HD44780 ``` Folder description: - .github -> Folder with githubactions .yml scripts -- .vscode -> folder with vscode example settings for luch.json and tasks.json - doc -> folder for any documentation needed or created in the project -- examples -> folder with example hardware implementations contain ready to compile examples for different uC. In this folder you can find also examples and templates of lcd_driver_interface implementations. +- examples -> folder with example hardware implementations contain ready to compile examples for different uC and templates of lcd_driver_interface implementations. + - ATMEGA328P_ARDUINO_UNO_R3 -> example project + - config -> tollchain files + - doc -> documentation of used hardware in examples + - lcd_driver_intrface_example_implementations -> as named + - STM32G071RB_NUCLEO_BARE_METAL -> example project + - STM32G474RE_NUCLEO_CUBE_IDE_LL -> example project +- src -> library source files - test -> folder where all tests are written. The folder contains following subfolders: - hw_test -> folder with configurations/setups for specific ucontrollers to make integration tests - lcd_hd44780 -> folder where all unit tests for lcd_hd44780 module are kept From d0b4914b35442b6dc6432346fb02ca03c3734eb0 Mon Sep 17 00:00:00 2001 From: niwciu <57457942+niwciu@users.noreply.github.com> Date: Mon, 15 Jan 2024 18:49:44 +0100 Subject: [PATCH 08/10] ReadMe: update --- ReadMe.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 0c573d1..6162d4e 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -333,7 +333,7 @@ It's a basic interface that connects the library with your HW driver layer in th * ON - add specific procedure to compilation * OFF - exclude specific procedure from compilation ********************************************************************************************/ - #define USE_DEF_CHAR_FUNCTION ON + #define USE_DEF_CHAR_FUNCTION ON #define USE_LCD_INT ON #define USE_LCD_HEX ON #define USE_LCD_BIN ON @@ -342,7 +342,12 @@ It's a basic interface that connects the library with your HW driver layer in th #define USE_LCD_CURSOR_ON ON #define USE_LCD_CURSOR_OFF ON #define USE_LCD_BLINKING_CURSOR_ON ON - ... + + #if LCD_BUFFERING == ON + #define USE_LCD_BUF_INT ON + #define USE_LCD_BUF_HEX ON + #define USE_LCD_BUF_BIN ON + #endif ```
4. If setting USE_DEF_CHAR_FUNCTION   ON define special characters and character banks in lcd_hd44780_def_char.h
For more details about defining custom char please refer to [How to define custom characters and custom character banks.](#how-to-define-custome-charatcters-and-custom-character-banks) From b00168b5b184e91a78573dba68bfea4c5d9e3d7d Mon Sep 17 00:00:00 2001 From: niwciu <57457942+niwciu@users.noreply.github.com> Date: Mon, 15 Jan 2024 18:51:18 +0100 Subject: [PATCH 09/10] ReadMe: update --- ReadMe.md | 72 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 6162d4e..a475a78 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -401,48 +401,52 @@ Below you can find a simple example of two special characters bank definitions: ``` 2. Declaration of lcd_cgram_bank_1 in lcd_hd44780_def_char.h: ```C - static const struct char_bank_struct lcd_cgram_bank_1 = { - Pol_e, - Pol_o, - Pol_s, - Pol_l, - Pol_c, - Pol_a, - Pol_n, - Zn_wody}; + static const struct char_bank_struct lcd_cgram_bank_1 = + { + Pol_e, + Pol_o, + Pol_s, + Pol_l, + Pol_c, + Pol_a, + Pol_n, + Zn_wody + }; enum LCD_CGRAM_BANK_1 { - pol_e, - pol_o, - pol_s, - pol_l, - pol_c, - pol_a, - pol_n, - zn_wody, + pol_e, + pol_o, + pol_s, + pol_l, + pol_c, + pol_a, + pol_n, + zn_wody, }; ``` 3. Declaration of lcd_cgram_bank_2 in lcd_hd44780_def_char.h: ```C - static const struct char_bank_struct lcd_cgram_bank_1 = { - Pol_e, - Pol_o, - Pol_s, - Pol_l, - Pol_c, - Pol_a, - Pol_z1, - Pol_z2}; + static const struct char_bank_struct lcd_cgram_bank_1 = + { + Pol_e, + Pol_o, + Pol_s, + Pol_l, + Pol_c, + Pol_a, + Pol_z1, + Pol_z2 + }; enum LCD_CGRAM_BANK_1 { - pol_e, - pol_o, - pol_s, - pol_l, - pol_c, - pol_a, - pol_z1, - pol_z2, + pol_e, + pol_o, + pol_s, + pol_l, + pol_c, + pol_a, + pol_z1, + pol_z2, }; ``` 4. When special characters from bank_1 are needed to display content on an LCD screen, it's required to call in the code: From e8157c77e79e5df2595ba7a22d8af5265a7a17a3 Mon Sep 17 00:00:00 2001 From: niwciu <57457942+niwciu@users.noreply.github.com> Date: Mon, 15 Jan 2024 18:53:26 +0100 Subject: [PATCH 10/10] ReadMe: update --- ReadMe.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index a475a78..b764c1c 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -290,7 +290,6 @@ static const struct LCD_IO_driver_interface_struct LCD_IO_driver = { set_LCD_DATA_PINS_as_inputs, set_LCD_DATA_PINS_state, get_LCD_DATA_PINS_state, - init_LCD_SIGNAL_PINS_as_outputs, LCD_set_SIG, LCD_reset_SIG, _delay_us, @@ -361,7 +360,6 @@ It's a basic interface that connects the library with your HW driver layer in th set_LCD_DATA_PINS_as_inputs, set_LCD_DATA_PINS_state, get_LCD_DATA_PINS_state, - init_LCD_SIGNAL_PINS_as_outputs, LCD_set_SIG, LCD_reset_SIG, _delay_us,