CYD-Klipper
-An implementation of a Klipper status display on an ESP32 + screen.
Uses Moonraker to fetch data.
CYD-Klipper
+An implementation of a Klipper status display on an ESP32 + screen.
Uses Moonraker to fetch data.
Source code is available on GitHub
Changelog
+ +Donate
+If you found this project helpful, please consider a donation to my Ko-Fi
It would help out a lot in the development of this project!
Thank you!
Install on ESP32-2432S028 (Resistive)
+Install on ESP32-2432S028 (2.8" Resistive)
Note: You may need to hold the 'BOOT' button on the device while pressing install
Install on ESP32-3248S035 (Capacitive)
+Install on ESP32-3248S035 (3.5" Capacitive)
Note: You may need to hold the 'BOOT' button on the device while pressing install
x(DP_vY@u_3?fD%B9o)@jdqZ9lw9(`02mAVejrgZr44XUG(=m9-Fi}{`RgB zYc7~$&MsEJdUEl<=U=-M=SST7hhHChHi>>dea7~?u6(!p#>(EH?WL#3kJ&Qy#n6S* zmftw(yW0zUpBVd0a>+ZrbEl1dv9;{g^dEMe_15UqI&+6MaXRer^RpNHdX4|B(Un+w%>B<$UmpM7 z{C&@UKKtV^^dPMd7OfiT+xXjM{wEsQ=->CvO)Fn$?U{QQT)5psj3d7NK%IZW%B3?W zNptru_v~{`+j&y!!gX*n*fgVWB=@COF1>Bannwn0&Ufm$_cM`8PCjeWU8A>O!a+0l z&)WJlw7_kreY`T7T=U%3UzOhd=Emf yNv4;JJT~f$bSNYwJ@(0UOVX zWgA~_P1tfnV%fo?*WbEe($JP3c;%v#?*8e>|3t5uZ`(Du@y`cgYX(*<8@jr_x&5{C z{<8k5*IPHN8#8Te?00Z^`=|Z(9*1na`So+%EfY6gd&5icS=m`zr+j?=4u5*<-oIUW z>GzMEam1YN?i(&0y6$e>bJq41m%cl`nY8~h|LIGP+xhQbJL{j-ZhJL5173OT(s!jx z2W?m0{@it2(sL(1?M=Rz+{dn*_344m>c-_GqTi1{c;`i59X(ky) k0d;bI+ zs1JhH@K^gv>A&ObC39vOc6SUgl#7r=O=9IgTV^iI6Wz9~I-gcnjcCvy7Fw~~^EV52 zqa_=XocyzonKxhmj1=bmdPLO*EN#F&JkC`doxNN%;AoQqQh9WHgC!8y*`&uN7NOI| zR0}6IKd9GL|4&2$Bu*}#^8xIlX2#lX4`JSadg0y01kZ+(*xF>&{(84_?>M4xCiou( zcs87Gq^J5!{sdH1n74qrl;;0wBWkqfuC==ueAMagLQGspIWTuLAjgOp)w+}xQgO7? znZgDZ4Y-q5p#Mqo{`+fYfJSq>78$l=G@%* 1ie*N!$JX#=`~W?N1P^PfD)tF>pEmcc;l;$JZA4BD{=l`uszNgpHwCa$Mh zK)GsNaz!feJ83VgwY1`J?OMRz`k!L;a#nm%g;-{6Bu&&0P3REY``2+p(l+rVOG?tc zkv ToQTDps_jJrL6VndY|M(1eK ^=LAO#6eCx8Kz~*)rRI>&L$Hs*(yoHM0EGa=pfs>f@S_z32qRV9XRQm z)T4F&V^YBK+vRtsE*=v+Jsq^6rkXGBp8NyIo}x3LW57yTe&Njy#CzfF9iFn$P4$5G z*DY85Nd)Y=lnu%Qxbc3(+i@ tNu5_b(TOTCO^& z1BQ1wOYljd|3F+y7{IsVtGjYD7r^vPSA6gMYn^9o_Zv{>KF48LN65@d0-lwv+!#>L zgNqWvw$yixQok@=MQy$5Jpj%M(A>A*9X
KUeG9-SkEZOthIp*;S)t6#S20c4&=lwt-_edH+~w-+QVj z_9pn>w`v}=ZRu($rs+FM5MfBX3|ASk{C=g<^z4N5-ziD~UGmA~K46J+a#?z;q_APE zf>w}I$+q$I85(c_U-+hq*d5mkZf5&@EPM}q`#)#jv&dRG=^95vVM_%+@MU)wr=_Gw z3~taU=5=bGO2*Heid3ixeuUrnTYJV(Nq?r{b#30M2rl{96_HA6hX-QSBw|JVKj+1} zhoo&0<}1GB)p;6=f?v2^d3m@>Fq;=-6F?890~RyfAOmDoEz2yiu8seZ)Y|~#XR*y` zZ3udP5~YEIrZvl_M}#3*KWnoljLbUShp^ +aOEI $s9iJ^FY^2t z;B}72{U+Bw>$X(zJPI _Lw_!2Ps>s3ngw zvUI!E)NCpOE!%KemO%`^m_6vx@*_#EZs!qkkm<8e_z})IKJ7bGEu(0JrGbJQBUMY9 zforjx5732NC$9VEd&ZAL*k~@@cr#`XYKQwFz0%;rEzLfGH~U-=tj|IytRQJQ!9xj6 zjpgKT*t0$^Aa<8F1@7GAEVBN2aiB{TBXM1XHBO_?<<8HhD$DV#j*a<1>B8mFyy@FU zHpITt>44efZA}d<*v*v3gEZm_jHm!u7x2q;rD|%>dWJ6$T2R7^7Jx(h8d w}`vOjFvr%G$8d$*vqVc z6D7p4MV3l>7dhmptB*q9kcx6H3y1@>wih%c_Ho;`-&)9e(>UcSc`{x9yD_cWx~6nz zZO}oZ$EGk}jfd3k#aO%{3`f%qM5a(SlEDGfz~0swZ_s=sOblPeeQ*9=>hJ*KLa2qr z85zECM6=qpRFoU{L93CjpV;&42wQIX8&Vm$pc%c=b!rFJbv}_}sgokmjN2;x1@QPf zI}r8x{n)(rPpbJz5m(;Z8p^udtAr3B1hbd~7gDc-pbZUWKKPZd0&M41(gE8N`1yqD zVM(}zK`cLz4cLx{eaG@T-LPICrr+6ttD<@ZBgKz%uVO;59Xm9FV_s6FgzU*u|1SpC zefW(GJg|ShUY;D${j8J5O}hH(?#wTM?K_KTEgIW>_l& Udg~42DAeVK|-~9&}Hb)^SaH< z*-h&z!5EMtv$ z)?Xv^A4!D^OXx-CdwK0_aQs|4_{cV_>EfgdG$R(#cJe(=ui7>H%xj~>Kg vOQHm{6=HnpI2crej UwFX|eDdOcF zI|*K%f{kTGVG{@DfeFBJr5)Sx#{-8Y#_O+pRDOqc34T6fb}xJ{Z5IDDDc&R|AHstO zt%i3|;Qj?{pwEkWi{<+6JVm07M9AsqGGygk?b=ShTGz`g#hOFVM)ogAU&a|vV _+c2G%?KYVTZnG@Y;)E37ihVLw_8NHYg&mK-i(G|I z+HFAUL?{xPF=na^v<^)5YX^G3xi)+B3O~Xn>DNe+IwN`6N~A?tOqLr>K8Jm9i?D0o zIxJgVYNF}4|B0{ag@s5_q`t2&YbziQbs8AWlF|mw<*LOu1TPGY1-|Kbc?80s=8=*7 zHMwxrSNbkY>OMXb2rDyEfWKfSg)Ly%>W7|!OAcaxF)wgJ?t3jDiA@HE!2Q=mG9 HbIcKo*WZG(n`oN-&rh9e8x_efVTqlmR{VX$Snys zBAqRF(l>rp0x#XPbg|079m>yRgzged!7Z}IRHR)gwh?L)ZWF705Z)n^K4FV{y~3aT zP&ZTsV0yV?0R?IU?QpWClzrh2c#sO@K3Fj9d!VW4weZF9B>}05xDs8C=?OiHb2CrA z<8wuIFz5RSzE3V!yUIk&Ag6&3w+gPVWI|nX-Qy%rsn~MqjFJ^ <+nX zozL9`uPj?FyX(bF9$wiqUo78GDn=#C(Vv`TDJUIkc Y8dTE<2A(+pmAF1s=}B zAW+Ch%}hF#p`pGg|AZo~fnn;gU$&=C4hPP0kZdmj)#tUjburTK|C{9g^=6m(>4ow{ zXUH%{2;3>KDP!)zj?AN8JsYdIE^q3b^v;{evLM|8wuL=Odc=LTJcpb*$+w#&`AXMc z{&&8}1vwe7Im&ax+o9vEj ROO*Gt@^FHBfh}6Wdq6|P zxdk~HWgbrRCadzE!ursw|47&%o3!^I$I*QT4@WBYry@IQoZyJ~zXN|;_KL(8h=^RS z=FS;vn|_(eSO>>Ir &jaoP_e6PsIFwdJXgU8@)y4Wu+edqt6Mu`Eo3nfnZ9!4WuXjcUGs;t zo%{xrgkzNL5B8|wv}`ekRS)R6cD;S=iVuHhpj*1&7@fYx F|<(t<8hdg4X@FD)DZLLuR#E**=oYseDHElx)=@ zDQ?$QP|H{Le=~0TJslDHZY}^XSs(5n28H`uJqp}+H{U};Q#%hHKCP^>@aFv%K)nr* z((%&cSWk-mj|6<7FeYC%wtV;@i=Jp4?t5l{BvlYCUz;2(zweW-pXEpUg`?e|{SE>% z=u=)za(GE4V}ueOk&+=x-(voc *0JqiX29$pDh;ao zM($A42OT^q$-Lz9{UqxTUhPce-FV~0tkIW7t{ix4vcIN$!SL~Z+*P;67?=qH-Os)< z12mEVXxzmx!lf#W$0-gic+5bA{VokGZ9i1O?b`A@Z7s=1yz5FGzI<|FzIm!za~69- zSL&8)INPhEfa^W}k3_5_S-hLIrhO!~>||@#bvEHM+DbMNri)s@UD;=P%jmpk5)+%7 zY>-BS%O}{9HH)k3){{@$rCI+-_$TtXAytlxrhn=qc%Am|Pxpx93^06&@RTkVA%0kP zgY^KB|BOw#fMA(0Aab>k){NQnY5tPna_-Ae3v! wr^FNZ(;VpyikkY}t zemqys?aCl4NbvC$*Sd?irJD3`PKT8<+Cd$#Orff^m*tO{{T8!wD#pzk 6=#Eo z_PzNBW5U~(vGX}e>l<|35516~7Wa4D6a?mi2RfPk8qH6xq=U5TyseT~R&3v#hxON0 z9;SX|uj@J9GR`#dpS9a;U1cBCNY1!R9Jt83!K9I3^G;mtzS~r@-BL%mnAoGcoRPoo zu?;vup`#7b3q$k^Ha=;|&s@Kch!j!s(3<6q#fThSV_m3aN|7QWj3?_h>wd=v=H6Q! z*7T$!eImJ$V wP-;;QrMD&THw-s*p1bu*zEYeGOoy*9{$ zgy<<>b9owMnlXhsKgn;@dO8r;hrClm-70>}Hn&g2yo=coh!N+qnYG9F9)mk0Ug4(B z$1mU@{v4h+|B+BJl~5ZWUFc>q%)XFIpkWA&B@{aMJwk1D!PES@=er^nr6I#WFgp)M z7no3R{V_CJz>B?x9Ke%oX+H5YW4Pt8 zv%TV?VsL3R;7K5fr2Q3$^jfvfKg4j&rBUoYV-3=ygeI(lg3!zT3%Cn|b!X zFRz(W=)EkO@uj#Le%|Xky}T!uH=NSF0prxJdY?euA!%(mAUKx+M7%t|Ow!nYQu^S( zjb~Mkm-eOsSlz)~Lhy^zx9Xw?e8%w&As<#$5xmm&@hIwLJJp4}P~u`&kB75>pJ?Sh z$HQ3b 9(>K!x_xo D>`Wb@Ku^dMZS@_G< z^pK{wFef0cNeaaqQSua(Zl2vBMt0_8|Gd5X*J%Ug)Xz4{N3#Pz=EBVKymiQOns3;? zJbE<0{N&8mqVj7zPvC6RbuJEu8Gzh{33#5HPNclJdD+p;^qNoT r5K+Z zK86*NYODK&?{#iE+<@Q)6sDwzyw|7eY^lYJ)ixS($NnUXMrpB5mjD)G&CDe^1V1F0 z;x=r$&r&^UPDSO5FS%fO@#1rirSR~}8XinjvP5?3O5I26>n+qT8?%VUk`2eDuOxi# zSZNzEp{<#VNV)%n<)*E~4;-D#fTn*~*^ITo>~^1*eKwtrIw4Git5IE-;Ghui7Vllw zZ`GlBRbslZBs{$cC#9E1Mob{_mJ}Ix1@qEvL*ucl qX?#Hk`#42WtmiMtiz( 5z?nAsezDHybv^%)v@@Wp zrtcBsrlqr(;=|4Va>0|-$!6t}y{o~7>N1cUvng45kXVYH?5dl+oT<7@zshP_o>aMo z=}d_yUOviW6Z*pcR|dX)pTtuX<)otdYah`I!G&pVyN;ak{7Uf{aEX{0@1Q!1cvxFx zDW-QxQ-_wCdoYo@Q2NFFZ(LFqOMu2=J(oT3vmSE#9R((iyp!0Mbb>w$L;ilxQ8~~j zKh9bjChKjnE>5+10q_%7*;>e ;WP-I3Syx*RKL z&yjgtWd!gKF-=-&e*NN%JBrwtmt!>CNyCGG!o@m^*>-S-ugh;!dK 7zg3kZsC%0EbBB1xR332gNC4ZPk`QKXZ%%2kw=tn7X< z_e0z~`s44Jq`k_T#~RE?iltTv&QI4Zij}PLy~wRfoMHRiYq}0jBmbg223Dh* GR z#tJSTM9MN-ypUc=^K9!cH@42E^OdT2#n07|_lNk?hU_}p8R31?uMaP#V7BHI3?S n1N6o2yfW51Ol@&7ATl|}`g0^vkIs84^(c%3%y!kV! zLAmy3`b16PQ|UPp$oHwu+JR=INROWzMfA3thL?|YLtKEVe!4Ot(|-6O90X*GC!Fdc z(pkbtU~YytoG%M+m{mnwM=C`hQ6$WFLn*sQEb>dD99&qj1Q@~^NU{^&pxn}dXsMyc z-gLIK*p5C?OW;#BL D8vGRbC0KZ@B!%ssg_O_8RR;82{$I_YXwU>q zKXB0f=)L(jaeVFx1)>jvqevSvy%e=Gb`5Xg&2`T(4`YV?M`Arjd`J9UFuxhoj^8|! zywKTcSE~)NYpL7 R8VedtPj77-ZmubCXdlN z;c)2V1r{;@I#XnW&FjvIp;sb0ZoDhw|F;TY=(>?nS`OXAJwwV_b!@|fBc1a8trNMc z0M&w?o-A?6&`-CI=_W*C^PQ>7SE{@i1#~n(_^ _O=|o~ z9eMcUAKg-AXadgw }nOk9^?~ru$~3(pl@cP>)^}izK`$bxV_B_*BdEXv^?v*O3L4k2NjATJc;NAejG< z4}{_kWD<1gnd@{Fs%-Hq_bLUn&h>Bf+fuxw)$;|zr}mkQ?m^9`LI{A$+Mros$wbKh zk2!YIb6r`M*wo-?B=*9%FYteiCPNq0?9ig}mywFEikPkXf9#irxbp_Z)NJ=xOI-lO z{}~9dsFEuFU)6Q$+p;1Gv`1a;BePXrT(A=`q7O7nCz(jvuH%yDQM#_b(x)St5^AjV zzb)|}0&bzd5WgjX@I<@2wr)4v3DEXefdIt3eJVb&zh12J=-26%{+3;*U;h#i|2qKa zISO#)@Yko7eV^prWwbbFQJI6FcR-RIAE!IMso(BVPI->l^PPI-@ay@S0a2Pm55PbJ zRMFmbL$ybK wOqxFh4M+zj;HvgzaT{^MrTD1Jt?W 0&!r>-l_d8LqX81uiwmvL)0W YIXRFgcZ{A{O{ thtw1 zr+Xeox8IcQc#{vZQ1WT6WFeT=9}ek*lma{TAIW~`bT{84jJvAEt+mmMDnu;85ZL$N zAP0&~YXF8^|G=h~uXwz<2(*4P0;m806pt!DfU_>l9o(-^Q>lvB#j^qnKj~{4;60P) zrYkc8y}{I*xQfZ1WN(iHYnQ3ht^2z8sD|yjOa}HCy~G(6V0mS8Q3WIrftqj4bTuvw zPKe!=8ac;~&x#WTr4=B9qRVdj{oM4uWad%=rvB;2opX&7AArC9ucE2^MzPp=1KOdA z>Me9)70A`~wG5a73Z36Zf$`qrMD 5$ZlkaoeQE4!Xa+2WrbegJ4J#y}q;|_cN>c zlfeB!cQU>fcaQAtax8Dj|Lu6#9N9o*!1WqAkcjfm&cAW(S+wecf%JV>CbJyBe*1z_ z7to8TzYogo4w1%Q4N-9EqF>5760agtdh<8JsA#^`i3%<^efykZj-NEJ>I8)avWp!5 z+TZXB7@+hvB!n& S{Eb*bF4q1dN!&y% zKdMrv^!G{CRhsPe;pQ#k`7VReI*)Mw`_Qy Mw ?Bje8W!LK?n18@J6zgg4)h=Iev0_;1Q0B;!H1TqP%{rboa9uG7~msqUX z*?%7PB)c{6t_`NbJlS9!qJjxJx+L8ZAez$&B|dkGzj;|?-9OV7?slBLUA=Qg4vf&P zX`|C@1fRB^#q_S;?YSgFO#?poCx0{J0rR`p=YN{p)DdA-qByRagPi=HmOs43(DN|2 z<%YLKgwH#p)!$=EAP2Jn-2i;z+Lc+>w#lz$f>O_=FXiM~K33%OAhd!S4KOk_;r=hO zo2C78v(*p9$rnLEtUVV%zO~@8o5|*3N6d%frM~KEi5jppC*dLJeZhR^+lSW<(Y1Iy zy3=rzJ{PO!Z-sKBxs-O`?|+ls x7 z$IgRYGoC0%D*60Xw4?X^-SglLj*EuH<&zLkenhzgRR8(T)?|&y0GSFEWTx< ASC8#(*gch49*( zHTP+(&Z>8)fMUVuc*RE^UA &U5qmU7ubLJbfEtQ@UMegtW}-I_f;eBMHWkKWbzp lN;e$9jCoYwU+_T;^XtFrBl|6h@W_~0U)p~p)sTpS z%5B+Z>~Vj%kw|)Yh=7-x5q`|7)`fCEX}fLFcyMa3W&iVWhXzv6*TLylvbHYGz~5FR{4izaaor@Bg3#&7UEqUX#DOsXIVgY;tkfr)T`S|d zfPv{G$~KP#9;tofW57vd>`peojjY8kCj5 jX+=&8LE_&POq?T2-?br|i^i6eeQFy*5-;kTxc!ri)0=jfrtN+C=fMd_ z0oON(2T@mPOeFnQwZqKU;5&IsD(cfeJkFsiE#};HfoZ1#*%e00RYcxpw1%bcZPV)9 z~6@w*!iJmIpVidE(iaU$w;92Km=fLL?G`GF(@+ z2D0&1?uV1p4hswRucJRQRrtFlcP(4am)i2IU(1!h^f+Iw=6a<>aEZ19dRc{mTm%1( zq*IdGO8HJ4ybR+H%_!`zLsgBriB| Mwh=W=jXaN6mR;jB}wA z#x4XWL7~6+R_p%ZfVixO8oy}$bq4|_P6Z;u@Azf0Ud3a|W?BmXG_$YbeE-|~bPP5= z7k~joF?Ht& Jmr(!E=gCm8x$DFp+;j{27-rPr%n6L_L^rW4(H)@_HVRK)oWY>Zv| zk0hS!>>Aukl#LDWu*`UEc{bFNh199ofCxq*=2^rm0eP##S%ZU2GF?5?)CbQ%2Y z$aRHH+Lnqf@@m1BipZPiL;TNeHe{r+<)PTR`9 BI@D#-+ za!V2amgdSFIGY_m#Ah2ly6n9*&0Xk>r;lalypybD1NUylSCw7y15hoWr@%0#BWzrs zAFWB~ )1Jl^QcgPCU+vrPFGm@p7=b_TgHXIY3BJNm ztvrhdfwvo-cZ&ui%Krw}05~iH9myKEt(lq=fb%FXTlY6J9N5EZOF6J`Df*U*0q`6u zkRAY5w@DN`Y`f%A J?MonUF3?RCZScCr+y8Y~GFom6L!3U50 z7XBkyC?xiDgseQD? wz?rKPAyUJL+@(1HBNN*xkAZ7db=?t`LohpHme{3fV z_8Tk424sXOKC9BOk7r$Idcd2SD%*0eLV}tzPeP1cKaGAlsD!|qi&eFV9qqw21@puH zEc&}YSp(^E>jIs@E#=NlpLGEMf0fcyy!@r)WI>q3 3uy-Zi1cZ+Lva#m z`Y}*g9|vrC2KJ-YXZqD~ooXs7dC+uiz!!ixT7SP^ehv&Bw{#YmfJ|4(1MN&RpZ-Te zKB!Mpb_2N%C9nn`f7bCI2;RSR3PTO*KbZ;GFCcbx7)V#{nj)zc=r1!HT)940_)vFe z;DrIA`KwW%DUQ2p5lOf7zly$*CdRq^;%n-{<<55*(mV9NCdz-{({#NL#8Fvp>m=xy z=Y5;$?}kuJYc(#nfFb41hoBn&J`p@kk!8>74*aI{!^|}?58>|#u4EPA-) PpQ!=gvhHePXlmjyB(RJINgf|*;*;NhPXLs@Rvs@^xKW{RklMEu~cIh;0RY5 zQ<}#g3OrLI?I2|~opx2}2~Qc_{YYw0iYTye?>x!sn0x#2sR+$xT!C6Jg#U^YxaTqQ z`UENP0M(U|K*t{!G6 m))VRyR)UCJaw+!?$`+cMt&%oT=XPS*lJKG*lZNPEEdmP zbALxH-+)O7$*tw@Z0Smkg_%YFa=wz?c}|n{>DIJ#Et*=g8Nl-c9Pv9Y)V~ih-KYN; zN!TcTnY6~3frYaH{mBdE${w*S?K3vM=+S@@7(-NPHnbTnK8U@et~e>OGJdT}V2vb} z0s8%|1;pJ4w)#SmG`SQD7kM-Zs0Z7}QONbll91Z~{MT#*%erXTS3dn26yKj*pGcYu z!NN)Lhr3!5X5ii1d&foFp3XM!pI`THY)IP5MHvE#6dPq00GGufU6r9FUKOc#{ZR?L ziuA!@)CF)*Ur85FX@2=z5I%V1s}r$0io~YMwBgq02N*fDK8f$ZYkRx7#4V0}=om+L ztq>L*5K*^5n+lp!eeq%d?~;$Ez>n^}GnAl@pxCHVz4p11wQ5pVPP$>+TKG#k1z}># z)PFAaU}+J+*D#USBq&&xq$dGSktetwRXYc|D_5G#>L~pkGSL%kIBQ)9P4u_t_D=yIljla;Es6;$X-73bWZ1pAr z9AY`%hp*VRmWhleX}zYa>L~f%4pPYp+$y{fNcC{ZI=5@|skR&ctZk{a1K^3&ay4`6 z t0zV3x7Gmw z-Ua_(=Ha^Z>et4k^hR->BzcTLJc{?Hn?O!H_*x{#R@nF& TW*O6cc# zx} RlW!Q z<6u#sd#yTS1;lN&FQkZL0L6el7Wh?v;G8=dgyfH`Pa93jyL~8jsR=DR$fhJ6&E6Iw z(BX1)eC65bFTo!*wqPfWj!$9FbO{n+cbn{-IKBykG;$!ePf2ZR`${ozqZB3aZFs`? z79Lb(DQHcZ7VxFG{`=7K MWVED#D{M1=>vNH<;aM$ zA_q+7`J;^<4cLha*H5?J?B^Aasp*%4)T2^aR=)_g7NoOga7R Qr^H=sO;Md)X?n=4b$dlmAXTYn!<<+V| z%v7j@5-SWxp+=1Z2du_#341_9NIcg>4W5wrEwo%|>ygx&HYH@=w-YhDj@;e%BD#~z zeCMrVcKJPK_3Bs6OMRL1F164~S(-!$d;Ynz#Hclh?Yi{Qpj+<)7AKi=xF}PAW>KvV zkp3Hue$(aRjD?bj>@8pU1DKa~WQAy1PGR5c$Xx@+d2;rMswp>C!$k9Jw^WxsqStAm z{`F~BaD=GKi2s(MD$ls{9cu>zdHh#12Kw9LM35N-g%MK;fC1~hyeSZJ^FT?2XTDlt zMGWXVT;Z19AzP1h0;x2|qj!l1%s IksG7ZmZPJnby|Hne~*)*(@kWC zQA0%1-094B%|wJ?9r%X`g?Xy={FJ zV1z;vF}K4$d`8ls4ooha&a#wp^@s|`=PK#awT0In37}$&=TERr5+^H3tfG5ykgpm1 zKE$dJ&zIGE&pNT%1+7di28f_%0ctKqA53z+txR{$N5TBtq8qb$%GyW6AWzm~@@VOj z5~xvg73p`$GO;7shpW5Cxib1ZYzhYMR^kQMqPu^zEA*krDcy$8aq6MZzMhYfPJgo+ zf?OdcgYxeUTm+V!CMEf`!!&{+2CI-X_+hM^4o6%Kb-gbSlzfcEt_k<4d>MG&M3(<& z_hh%{$>llGzc4p^`MZ!^QPgSUuY?k)<5I5m >o-{q8IN9N)-kSXwon-R1Z|0e(*3P-^kC4^mC}eF!pSQ3KiahsHxTzuK z^!Ki%iKjb#soIyrZjM +&?p z+k~?T?O=36_jjykg5KM|@Q}TuKr>x#x@;)@VzIXU!X;z04)VayY|Kxxx540MKX~nr z=azwMkGb7P%R-?9*+v=0>ZLk#py#=db@CBMi|yWB9OdajHP+$XWrma8@J`}5=0iX? zuZ54Km)Wnlcp-3CgG=(}F*K~1aa`pp`dokGJX Fj@mJzuKijSKUY4r(d7ep cNZ6f#hA&p)ML9 zmJ8yv9Jg5MWHS7o*)&$qg_UA_$uA${qYeBbtr;M`mj_0LE9V@9+0^JhbGBaeOUEO^ zjt85x%WRV|Y#*J5&d%$y`pe`5WGeCx-0l37hTh9L)NL4>VH)IlXiY5jd{$CQxNMUv zX5{8{6n2}Wi?%B+C)2^4dEOt(DzY>C&Q@DB7FtJ(t)P7O1h)*`3&TlYrs)Sp{dO}v zIk&Urj?h!o&+`j8uwOo&6pdbNvu!U}CmXe2B0fJOCn$_6KU{!|=nR84=??4C$?ss7 zIB_N}aRoMWGP?W3n&)A^9?UxccASvIu*{N*XBRJ}T>$xn%#2-~LI%^D(+kEk1BLet zi#<~&Zk!5JlBz5!lC>T^Jc|3(_TTrB-yPpGI4UTApzh!5^1?U^WOE~PvJ +=KL6n3_ZX;d6Y+b9Jf7s0DD8OI_QgN{g5KIgfc=ubIkM z su9b=Rc0>aXL;e!|HLzGnTiC^v+XXK@W zVu4&tJg&V1?vT#=)4^)-LAeL&C}?a-Kbv&$ktsDIyEUG``*2b8ZC9B{iI{lL)>h9J zob@(FAyT+L>7fXCzy~>+Ihc=(H<)8tOuMEx=RGf2#j?1d2#=rsOmbemPcD4`-1E=f zaPOA5xA5%yiog;VXwNM)TAniL*Ew`kUEud~mRrl3q(Xt=sDo3~V-rS2A`i^tm_AFw z?)fA0goB!0cBRFqb6%E|3gSD9*#}>)3YRP1;50>V{sSTr1LDxq8pB#|2mD#2{wn`f zOXBXPmP!0;*NwcfAtKN%vPP9vFQV{jAD7@6S5pUsIf|88nfk&fLV+;XB}DxsCh~n` zI|;}}(6vRPtYA4LVV!I5F!kX|bdvHT2L~OmZ>r{xGg2^6)CNa&risX9E3ciwh>t;u zHrK3T4aMcfSPluZf|t?K=H-#rP?Sc<8~q1Nd&c#Pn=jC{l-J}>TTw$HmKqLB4?1`; zZ-*|g!4(WYImOeOl3y?O=Bi1@OsS@nVYQM4B(!TtID1R8`fXHTbOUy-Da2c4-l#Xa zxwd|gnrH;KhR=ypcZ>OQ@ynR-sEw89^kdc)UNVbf$4aZ=GFI!zT!VdFZQ00gP|C-E z!Oz(|va2o=oPF@82ii(_q)LSDld`+MvChXMEB!0AQ)XU5lV+fGmK|jYm*2t8juh** zopA|3YHUe(SVP8vG&X9!0UU?oG HfXClLEYd(BRYh1`?G}9fz_SI+c{j zTQ4MU2{VeDhBxYHqWXU-CRNy^Shn;vCdb`Nfl;&w8%juZ%(;@#%f_>wSZ%Y!?|eHC z7Y#n5vbTdJD(#y-xLz!?276o8T*_K(uzn|hLBkcih^kwQ;FyZHTaV*`hqmF0F@kx9 znc4-zqoqb|YX-Nb{if-*--UCa-{0?c{a`tGBeUjOw_Rt@dWt<|=%`T_wjUK5_qMNq z>iG?xJt$h4xr^sJX;8t{OnrJn9r)Rg7b`zq24!Z_y>nt&`ej|#fA?u_EQBd~rhqXo zDfGl)#q0E{9@^G-?tWpelnjl&OVEpwGiP#?&95u|_Ox7KbxX_q^qE jcV5DoMp&;q}LpOdv)@g$(FZWL&PbO~lcf=w~JkcI_yuv_F z@OmbSS?aua+E?A|;kWk=-S %n8lX ~aU6 zJ-v13_B6-N1#Cg$x749hKT>6Q#?~cLPoKfj!b(BPM<*hl?3uebPR`ah=SXJVS8hc! z%0asDB&{*Dcy9;J@%HbVn7W%0$x`uA2~Ebxr%N}ikmmhNWwANcd?y3&t>{Aeuu`K~ zuWoB%zgdfWnC|e#XqZidpqf-JIJt6QcRVGS>7ra{OL5Pc>j=Jh@^;ufsnd+jy|qC5 zCd1zQe8oiOU`2-Osioa_oo=-$brEJ`_#$x{&@etW;bQM+SaVLjbV=vTSF{Jwtub(4 zu_agO?1%Cm?Jk;6NXGCQySz3EY~+EOETb~Nt0r!drZ&W_eO`1ZY~hAmfxYN)x>z&T zk?A75wr<-qSX|gI0KH((sfnd2Scsf!$MMex7-*k!D6u66^t|nu^{}uK(F6|XwcJ;F zsYj~Qe}#domxVzY>=>18!8qf|+%d*jM`2el7O=e+$q)CCw;CJYRV >U`COQ;F8!tnsPt;EK;&1};R=>dd}oRW4G`W&y( EQn7Q(aL31kI=g1 zhF!Q&rw=_*J391~C;51R=5=3-*K5sQkS?uMnn*6Mu~SdB*`3Tgj|>p0<6(SW@cfam zs+h8?%3WOx55Eg-6z{lpUzl!t$Lx9JO;_ieYJ4rC$C>XoM&fXOy@L(uCu~Zsj$OJF z+4Is>=sJqdgH-BuO`$-BF4jK&ZLvxJ-pTuVd#Kw~ZqS$k7ASwO$T4lYy(ZrF m9K89+XuU> zvxZ$tDYhTXa_*-CX$txsSO2QSbfdL-$d&eqf3_nyj!rsoPDNTNdLfv{tKfa*ILzOO zZy^Sk^J*Kqz_P7lLgtmdeL2Smvv_0v`UJP9zC7eHPM|WJF`6{&KDQ+Py%_)dkiVNF z{1Nv9a-B{Y_0~Jg JLXnp2ZrQ_O|9kmgc_`S9UKw`GqWgn1UI@(4W2HT&DV z-d%7lyxw|W__4I72G$tJd|8N@coisXb%XuGFX9+GnSOkPw&z*0*j^bANLS}@GdNB> zAs6f7Et)GZ8og37lH!2{IKeB*^NkejvcGL?L#vO#Pic+>V1bn$BBSvSRr7tF1VqS3 zbK5UQ^_=(#P67{FW>K@KNOB;>XYAsO5TKzt8ZBmLxp{|Tug++$^2y<+KN+LN4%A1Y ztY?K6MZ2ssC*Ufj9!Wd1Vsg^sf{Vs_K3HRKr@7-bIzHy3H|^uQtaAgU8Ow7Q+G{3< z7=cWgWn5z~6;!^!^ON9vg19HO!^Z0}nj_GqNAA( ZNbM>0v>AiM&cS z*LEL%A<3{8^bw(wk>AEph 3fqM)t`ThM<}21{pcYmPFJkjm^Z~|`vt;|k;Y{A2JiL8msDkfM>!BwLdIf!f zv|b3VVx&W|<*F6d{(*I;*7N(m0f7zNdw# s*Tn0;0or#hr+H(==Awdd>FF- zgSoJH82D&>1PgL!9f=#bJFY!c*g@g4r-gk%QMs*c;c~c T>l97-S3+t z@GyvaA-##VzfM(s@FatNZ{KC-L_*IwPU{4m)^id<*BJfiX`V@TJ{?4>FqpBE-ozQK z_{v9EwPQjEALgjUJW^)8r@<&p R40*d!rOzC8TxWm{v#0~yQ$|O6?obVADixb<{J>?C;Dc5nPlB_ zlYBA;#nVftI8DbK2E06{FiM{ ^cWz2<3eK+_{cY)9fxKW` z`pd>%Zc65|{Dcb4Kh{r(nEPS%yq)4X!lsd&W}A!Y_e7cU!z`!8XCCMec(Xtj3oOE~ zU!s$xQ#)o=%Sja@ls8gGzPPd?Eww7BY~5x3>O?NlgPdPK@^BKsO_6TeSpL|bg!!?s zr?ORLx!7%w*MnSG{%lu1>KEw_P4od(S7}DQ21m^uMzhObaN?`8X_e$mTM{27p8(;z zK~v{`jPXf9V{vN225M#;8;TDr{IC&bk}-+)=1NT{#KR xC*IT& zU=7;#k5lgzZ^%U7Ho8NsqOTk^I`*Y#=?fZM6V80bf($&_Q9o2#YXa#OUFPd1m_aIf zy_Ym^+_}{DWo&T$65l|>^nx9c^zU)U@3`a)a}EDk8N}1NYG;ZsV4YyL;EjxmqRXN^ z#u%*bp(iB+XZt`6H~Tt_QCM`{*z0`BjNfs+tb%$dN0m& 1fmp7}=TMFfUF8IC)|8xdJNcRxml`O3oq4{{tvN z*S`KO)sNNdJyb)VU4dgKg7g#(-kQVW7QCzPE1$?7*f9BClgZpLAKI_k&f39!;^y)g z_9c4BQvI0#$nozvW+ey`t ;_lLBPVlT5aYy&u{WPu37H?>QnFXdl&Dv|6lLlJ`@qFZ%RKY967`#CM* zzVWH^Y=_~G%8%Nj*n^WN;Zw@5@UOhCS#}-vNoHb9>-p26j2GM`9C}r9Uub?LKX;(m zH1~ 7*ClS2nu`*qIkTYW@`Fi*VXx zKb>XE{l)i}&E!Y+Tn=RVb5Cf28+|+GlcgyyfqmlV*I@)WTo?ZU>r(kquqP+;s*WC{ zqwu1oIQAZvrvQl-kS85}oYD1qi+G|XSEYv=VlkH#o>x3c`qcY5ZOS!2AP~6Yc*cEc z%NMMfquEROP}NT%tpfvq)iT5}o%Fqozm*T#c@daf_?!O#9;qG_kY!tIQ}#3dR36*N zjaLUAWdhg+!IF<-Q~6ik9@TanyH6XbJiI^Nr|f6^tM3nO Lrqw^5?A=sN@q zZvA>tkti85;;PsCA$YEX%4Ku9kV2(%x`^o?gqw$wHsrtSPFS&nx`qA`C)^cqxZOiW z2>bN;WxptML>fG=-k`<^+O0<~_dyM0Bw)AaO)8_0F#Fb0jsD53eFfOVfM^K6-mKLr zb}yUALY#f-cE#zstJzDib9oKH#%bGB_01m7mvk;~A