Uptime: %d d %02d:%02d:%02d
\ +\ +", BOARD_NAME, BOARD_NAME, day, hr % 24, min % 60, sec % 60); + + pageInput = temp; +} + +void handleNotFound(AsyncWebServerRequest *request) +{ + String message = "File Not Found\n\n"; + + message += "URI: "; + message += request->url(); + message += "\nMethod: "; + message += (request->method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += request->args(); + message += "\n"; + + for (uint8_t i = 0; i < request->args(); i++) + { + message += " " + request->argName(i) + ": " + request->arg(i) + "\n"; + } + + request->send(404, "text/plain", message); +} + +String out; + +void handleRoot(AsyncWebServerRequest *request) +{ + char temp[70]; + + // clear the String to start over + out = String(); + + createPage(out); + + out += "\r\nINDEX | DATA |
---|---|
"; + out += String(lineIndex); + out += " | "; + out += "Portenta_H7_AsyncWebServer_SendChunked_ABCDEFGHIJKLMNOPQRSTUVWXYZ |
Uptime: %d d %02d:%02d:%02d
\ +\ +\ +", BOARD_NAME, BOARD_NAME, day, hr % 24, min % 60, sec % 60); + + request->send(200, "text/html", temp); + + digitalWrite(LED_BUILTIN, LED_OFF); +} + +void handleNotFound(AsyncWebServerRequest *request) +{ + digitalWrite(LED_BUILTIN, LED_ON); + + String message = "File Not Found\n\n"; + + message += "URI: "; + message += request->url(); + message += "\nMethod: "; + message += (request->method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += request->args(); + message += "\n"; + + for (uint8_t i = 0; i < request->args(); i++) + { + message += " " + request->argName(i) + ": " + request->arg(i) + "\n"; + } + + request->send(404, "text/plain", message); + + digitalWrite(LED_BUILTIN, LED_OFF); +} + +String out; + +void drawGraph(AsyncWebServerRequest *request) +{ + char temp[70]; + + out = String(); + + out += "Uptime: %d d %02d:%02d:%02d
\ +\ +", BOARD_NAME, BOARD_NAME, day, hr % 24, min % 60, sec % 60); + + pageInput = temp; + + digitalWrite(LED_BUILTIN, LED_OFF); +} + +void handleNotFound(AsyncWebServerRequest *request) +{ + digitalWrite(LED_BUILTIN, LED_ON); + String message = "File Not Found\n\n"; + + message += "URI: "; + message += request->url(); + message += "\nMethod: "; + message += (request->method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += request->args(); + message += "\n"; + + for (uint8_t i = 0; i < request->args(); i++) + { + message += " " + request->argName(i) + ": " + request->arg(i) + "\n"; + } + + request->send(404, "text/plain", message); + + digitalWrite(LED_BUILTIN, LED_OFF); +} + +String out; + +void handleRoot(AsyncWebServerRequest *request) +{ + // clear the String to start over + out = String(); + + digitalWrite(LED_BUILTIN, LED_ON); + + createPage(out); + + out += "\r\nINDEX | DATA |
---|---|
"; + out += String(lineIndex); + out += " | "; + out += "Portenta_H7_AsyncWebServer_SendChunked_ABCDEFGHIJKLMNOPQRSTUVWXYZ |
Uptime: %d d %02d:%02d:%02d
\ +\ +\ +", BOARD_NAME, BOARD_NAME, day, hr % 24, min % 60, sec % 60); + + request->send(200, "text/html", temp); + + digitalWrite(LED_BUILTIN, LED_OFF); +} + +void handleNotFound(AsyncWebServerRequest *request) +{ + digitalWrite(LED_BUILTIN, LED_ON); + String message = "File Not Found\n\n"; + + message += "URI: "; + message += request->url(); + message += "\nMethod: "; + message += (request->method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += request->args(); + message += "\n"; + + for (uint8_t i = 0; i < request->args(); i++) + { + message += " " + request->argName(i) + ": " + request->arg(i) + "\n"; + } + + request->send(404, "text/plain", message); + digitalWrite(LED_BUILTIN, LED_OFF); +} + +String out; + +void drawGraph(AsyncWebServerRequest *request) +{ + //out.reserve(STRING_SIZE); + char temp[70]; + + digitalWrite(LED_BUILTIN, LED_ON); + + out = "l@&)*Vj!<5*}-{y9` z+snD5+2#)JCUA~pC*Fo~EJkU_MbP2~%XFJD9qHlx2l~H}M?cB5$Tq{+!~0@w6lryJ z`Au8NXn`B`Wd>&fp1mW1KQoZ-C8Ar6NHvb#$|EsS@nHf>OC7x=MH+-|D`WFX2M*wp z&3iYBWo4Wq)o_Oc0O-{@iL58qoNKhXJj*~Lf^b>$Gfy&+o{SuByE9kE1?sQ{1ad)q z*;N_E66jm=wv6?|rOEdrzY@-Z1m1U3Jx^2Ng`5I2 zogL;Z50qJW-#nijd$nWMDl57ZdQ;&O6SB2R3+yE(1ITnlyNLd-lLmq6b=F+NR!kNc zqj_F`R9Lm)3QqOORFC7OvB#zrlvXDDh#96Bp1iqz(s0!jUwYFljS;Hh%$B)w?v2JR zrx&X8_4hdt*4oLrfATWa_=mG yvaX63T$PKFXDjG%(6^_x9{#PqgDq zX!@ShkT%^;^J`ilWMeRQ2a?2J!eysIsz{s~UFYPxHka`D(Z;I<%Y&EniZm@#-FjlE zNwoQ1cjk=F4<1gaHNvu%HJL{ l>{rH Z3N*mtbyueq!z>tyXpWh_iMC%-qI<$LQaW=G5lHyx#b)(ZROVREiVQuNfSJD!MQ z-{TF3nwl;=JaYn@h1^B$lpjC7Ra;EX#@epE)Zb;fposJp!X$Xsuv}1^``$qfpgQg4 z!$Hx0k9)nd>N6o{E1$<-cWT*B2U?6~smYjo*FD4m?M_`fn)e-p4+2#!kl~YCPxw0~ zO==3p!&rw33#Y(Z3^VXgXIHy_OvIX68uvEhkP*`XooESz*7_=rG156Y-*tFPT$gAg zZI|!lXY_p({lB;FK~{dyR5EomDMB<;ei#MAE?T0nBfQp2$=~Q>Pv3IgKHcjk*Hs4+ zuU@|wvpnh >z=gl;npmaQv2X&jx-URxaw7WET5%v#9pCf& ^C)FPXdfv|zUfmFm9G5CGcJTB=qCZY=;BVa7W+MqFiq*li2BAqdLu^o?;Qf&c zbA``L-dkyD`)rY}?^LU-8f<~fje+bUbK8hefgT;aSO@f!gglD{*kS^0KB%F;W77!0 zHd+gQp 0i?&lv}}1`LJnwL ~i-v_tr%r*=rOMrEtShC}!nIxR zqUOR0B2W>^PEYx~tGUuW2}J8#OlcOdW(TLrLRl5xV4l* bSG9R&8;gCl+L07 zI{sFH^j~rSWNW`r1GsvFWvWtLdhCOT@HckR25`=M&q3Tl^u|V 7oKmco=7Spf zL{}j%^_Sut5
3NcmdW^YC9^%8XyZ`|GRgWR!UJxAwy# zqs>o}b0J-|E@@5Y=bTVCoLV7fh$~W50{=z5eXs_uo3@E(>3~W%r&H2M_9odYbs7;T z&F>g)t7UD|RYvl4+Rph0yDB1yY{UG}IyyowIe*E6Jqq}<-l?^1UrqjbLlSCm;sOW% z{s$AuS>)-)WGM&Wawt;QP!nv13$UswnfIPLZ*y#AFEF+OnjSRS9W?pY$TY7d&{hWr z&aI8V&0bWks8#J(d`u=0p~*Bk)lJ%AU;t@!C)f^#WuA+7JNxBwAyaQ*5!JDb2z;V_ zQC!iZ9aZn+hr`Cx^Bba58=~&1C9|m0p^{)%Qrpr>12|5+FMMrgFNX`5`QdxXk#1f% zO Lrjub$skQl7wZ zCQq*_!_VL^SYGj<>(|0$+E)W2o2!GWFs0J=AYIfBn%(Cn>qI6*#)w_5tAeq0E;Ep7 zCeN$C{pg>yYc03sQN5odJgWNQca{xYlXRVpMb#IjYF&khqBxnCBlRM&$n4x)+@H+d zF{s;ntaP}Rk+VP@^|Y3YT5Qb>nn=gpXLiD>ZLqx2%P^_O#5??hFCtdA;u@WBL;08# zC-gH1xmh|}Mk!A9@~+(62}$sl9)k7iPBsFk7Ida=GS+E>%HhbUE^vkd|5Rr`;u_A^ zLgN1uvZc@$(EZ3w+J`{_ZJSv5*#KOZV?88bv0Yeb^22(1c8zFxC22F9b+jasmhm{O zP!hqDR(kbYncxT~UMBe)1FPy1zgl6p+;i>g g#4Sl!cIGPEFDOt_&J`$QI =S-Jq8Lx3CPyhnXybaz7@ zFGfG^%*TKwKV0Z)eQrppq~ul>*lkv+5Uiuv_R$uX)k-LMDd_6Lq%Wf|MYot5Y^UG@ zntLHK2c>k0= PY%t_2o0kNEtaLQ>a_P!Pn W;n-*Hsprx$|czMw~j+oyHZz;dM zN_Noj6axTkT|A~AA!|&)?^R&m zC4eq} Nou z$CxMm#Qo%{Th)#QZ}rk;unR7Fk0-L&NC8omCIi*Xj`XyM`Cx6%zSEnD-bY2h{F2Rt z=q;YAajlq_tUK4TziT(UKViU0jF>l3k#_1D32FS?XxwfOZ@-^LDK58h?wCP2*K?P* zs^M|hL)yEm)W)dv(0ONU{1@T%nHn@JJ^NkCial#P(R?a}m_-HNwv+v_fuk zL){GsmP0!TMF4tkpIH0*)SspTW%(93>70EDiddU}Wzzsd=7>qd4}Q7cAjE~m5Dz>I z++pUYA1aD8x%WpjzW0HnY`(xUoAhXs_kB#Y%ry6U3uh%q1srM>rmuURdC~jAbNgT1 z?H-6~N}ujlSbxCO3Dijff429XDX(Og0~q~|yg4^k+D2h^I@M~<_Azx;Al%bUSPA-* z-SAV~@YOk1cTvdeTfZ$Vfu2kdDC+QMkmPv-ZWfo&d9BAA<}<-pvBK;7?@5|hsO9V( zEGovTWxGl>7-8)o(2~cSmaq42QE}>3jN)PX+p2LXgZhVjTeMt!aDGNy&%`$G--2`} zSoFrHuubxp^bk3yHjKTG>O!xOeaM*x@{3<0)^jT5b^LBLajnXVmWAbNllRa}ISH*~ zX0}!)`9DUXa|Riom6b+_ZVLOJeL7Sw+3Us`yH$`s-i(8w>lu{bcC(fu&(Dj!DW+Dy zv%iOJY@s@woj$p8yrB>4m5oI#kje%d0!ii@#tUUM>-Hf1UCfn7jSB?U+q%UhypG3J zW~7|J`q?8I-vYAd5}DO^_P#3c4)(+J_9`XZ4|Ank2&IeG3QW^^RB4=^%af}B(fKX5 zL4)y>MbtQFYv*pdFqWmZg>B1LTGVbZVjt=#)UC-VSpQ3z#YL8KMEix&)*p}X3BITT zlituN`E(VVbm?YWSSWkp_4G>me9c~RC_P;WW^L|Es#qRzcFW~VNL2!UuJvOh4aRb% zvtWQV3$Z+*REg&h%uC|5)AB3&q6tvM0R*FrXN)xxaXb+Q5;;tLnmG5d6K=aT1-+9U z`iFb1<>`%tw7?&W4n$|>mlf8(GzOBUx8m4Mt5KIvfGDX*=Sb^J>Xy=gdqdTfa@l7? zaMD;7k7~g$vNa(d96f{+#nhZnmzPhs(KRJGnFZEU3ZelXKQ89uDh {YxsfY;n^dN(X0Z&4Y#)tmGGO(M!nvV@2 zMfmzNOyJ`J1X5}SV_*f4O3@gt-+E;K_W2Q>st4(Dt9gzqMV@dw^un*0I 0O)0xUWr$AyXpi^$X%Ct>kUa0HGPUSEzVVvPQP0YLfA7#4>n=};KgB7 z(J)J(k45*Gs*zK=go&2(r4>cdTbjpS!pqz}+UYW{)|mWdC5AYpK>ZeX+PGaJgT%`x z@4AcMVBi9XA!XC(#ZjU{>+TC>*h5t{9=_(%{OCBqi?qh;*-`+2lh qIGMRGS4=;Uo#?d{!lL6@baCO@rtxtao0zR z#!(-x`*8W>p17W|9F)CpOc9+umO< TaIg7mksB&-&Q}Ws+^5PrWTz}lS{I~&6nQNG9Zso>jy^iFGA`Xh*52RemD~H;Y zE|q09D*;>4yRFX#%6iJggsYi4nda|mc;8=&WGse7GXPCuK@R~@IH@CxifxBYI&3Kg zrfW2&OgevM74D7qFX6iHGJ3Wlov%83nKP7wBBCK5bq>nc>XFzbHbN(nl&OB^XbHO} zSw(!Z$*m6wo=Of8zFQvC-ajUGU{c>mU2@laRr%b_+-!TtVVe~Jxs;KQXWe`pKS(c* z_}A>)jO6S(j*fCNvKkAw^oZhwO??la!g0Fc_3Tv|aWqJD2Vc$FJ|ZRED-#PRS1RSO zOV@q)B^z36mI#AsY^PBsZbK$h 43;?2a7G)9MX>}Yq$&duP+GLsUMpCh zYqauig?9FYYxcrSXXiTW>c8w)70jA84cgScXp$Kibwc9hBd`T6*jkwk zD8;VxF7Tt%wSVZmf6lDj)Cx4Bvf3C6r5E8T&AoUV^W)B9Tid4aTAX}7xN_ZTY(;jr zlN{A~dN}Iw(<>aM_?|e2MNAe~J}OMdVy HxljG@LFNpQ?jDHhNTnV;1#<$6*+PEn z Y++Bb$M{3^UJxi7 KE1YC5RYbX1>!i64QZq-AL)$G3R%jYKD=&tiu5LgeX4ZTgr}rG zp-+Pg^KOl6B4~3g@lL8M!@ZssANk2GSr&F%dsXJ2jeiqecuV4%R#V$#WVhgG }Hb@-fsO%le4 ~?=B|kbmI~Oh_|bb zo|p#oR<@ScxF5BAhy|(|@q7?8w-d!vo|xgP{%l~6by6G97ZxnpSf<#`#MAUGt?K(W zwaBDDC#lQ2X0V{o?sjmDVS>0EX!Pp`^uYO@@X@(x->R{?=z*ZC&s?CW1%l?`+t$3> zZ+p$6eo*HzqM%4+w)(((uvFXk%O8 khvCk$@>$k}F5UIMrpK7h2Hi7lvca(T&EP96DT3`n>zuVJ8PL!Qc=0Y}KS;Uk zLqKDMeER2UQB$tU0fOG37~&n5tD2E5?_c>7aRmK#tJG#|Y`0JP?Gj{o)*XB=)uem- z6qX`PI9h%&g44j7RTs@tY2@i1Ml4_*ZbU-c43<~r?BWi6X8vtcPc1K4^4_&_AqR`L zJReC!bt;$YGpL(kxbK1`U$UR%^Vn%Qiw48K$)Kryk1e^M6u;khmxg`0Q-5aLQbM-# zLjQ7LM}g%P^L%)&ZE 3K #o4fXd>J+;FN!1A9KvdMjf~JSYC6$;&Z`Q8TEMH6*1k0;>?E?*mO{Z70jYM zZkO9hkrS&FvoHpMnU+R}Y^{=npyIT<=`&-wGeiOcudZ>{p6AT$wci`m9q%SdB)0BC zjeaH5dEuA6>V^0dAVAjSv-7h@8|%b;ZYGi<{d$I2C(MI}tygZ1cGkvbn)b<@ixg{c z3fP3bCvU$O%};6A*KcdnSp9HMwv3~Umx}NYO+01$g6=lTu|T7psLvg@x-o3q+ef-R zD-M?%wQRR+p7JS56-@@pQ^?Zv?H71aA5N;8_pMSYNkRR1-C_wfnk89iJi%Pq3hBBO_hs>Nn=SKMl6suwmf*&J(Rl@tr}v9KLvE2~#v zoNhY8wy3Xg3KBb)E^XR-vW~ESbrIaDg8IySUQuj&z956nc37wrz}*$}s+>{=X?TM4 zs$`S%F9iPP0t7<7{>Qv|u=wQ?jXme?I6!egEzge@uvxG>O-T>)%}WO^|J*SAjNk2R zv%}wMe@x+)-Z~E*cPw11S<}@90{MJR#**dE1`LX!PQGe 4+M79^*v{!wU^?XWnZ_qza>{RGBTXxPx<~80$ zY&b#XQ2F(S4jlT{D)vBBaMn|7p|aPGV|PKgInZjPDCdkfc;q!+u>rJ^d%(1)cFJPl zy31nn6g0{jXBt?ML?k^#l9#~vCO45gKRSJId`~1+4?pyi|BugOwTS9V1NhLKzFkKd z#+h^AY#sArRmj(+-p`>o8qbRg7#D6U3s#s0pZV1}$2hf>SygUnwld8dGU>Ttz3k8T z`J5uerk9f;`d@HTsI=Q#5GAV}24AdIWG2WPdV4mA))y9-n!s7kOWj=?5NW5{CghVW zjYlf7n&(bpvGIIqvBad2i4Y`TbK-XKmlL;GG7rhdx%b}l@d;eZWdxvWVs}*1CwY}* z)avWF$cxIv0){! Vb8{Ob>!_0gF2| zN}EjF^|S6%q{0S74NVcPfj)SuvTQ3AI+B-#eF;v3Pn@|Ro`IJ=yE76J_fF4f6XVVj zA#?0jZK<8t?AUEVW2^Y)`Bz58AB-x*eyQrUl8xCpR5|kde<=H8bSu8372q;S)AGBj z5q?L50T#L-A{7KmsdhAU6a^umyKqD77jkBX_2-uv1X_ItL4K`2+hVuRQbrq<17R>m z---s0^RabE5(@ouWCrjtEbz~EmjCop6z~pOMON`;8}`XxBj)Rvq)cf0y*=lbMv+8! z9VX3$F5a1)OgvJlTLE(oB|6;uRiy*d9;-UHTR(=xJ;)&e_enYpGY3yz@YvbfjAvv< zKQYg02(KKoW_N{-vt&GE2%dKfZ+-HSR@u^AY%rd5;fAINHNMB}+vLr|@-3`ili23e zReWTlU|o C&%zZA&EDWTNPn}>I8-I-*I$#A_tV@~q+-G4@;u;G+3gj120aT1 zrpn0sgc)mXwy(s?q-NL1x(<7gF6~Ib0SmX6V13qe9eIC58jInDkfd9co}bou7lZw& zA;ImU#@bKvlo9*|gX|)jIzlJS*^~P>hdN_cV3ZUZroMUrC^EVKYN5fClcqHytAa7v zUM)VG3j>gvZ@|8aXnEHX2?udZK83GTBt %xiuCbXD-tC4&Dwu13pUs@xSHZ)lpWII1Dk>y*?jh^k?-!0{9cW9(Gs>Y z_G#^?^qbGU_6+vcYeRPnyu<7l`+YpLIy*ZrZHf-6UBj1AWPiC|E59kPuCH4gv!wT= z%gF5Tf?*g=$+ID$t98J?u=?P^q3?-7DJBEftJ;ikzgq|-OY-@@JfB7Rkb~ce{?zmf z*fK5-tI0U6;g~5$H(G3KJp@vVi40N{b!lO$mB|VNSQmyrtDgP!RS!%bBEemZ rHwE(j)Rz_` zdl=t2w Un 2-oO3(eXacePioWur#!0vUSsk{0)%U1LN{Z81ex62 zjdKU}y9DBXneTQz)k7oM(yN{M_{sW1r^*3HehUunnpcfO*pSUbq(i_(Fhfkic<~U| z#M=0TQ?ZYAkdOCm!bYG4g%qR7y+zBbe;Ls}i?s!!an(UloXWq9r!5lFnowy&l(G^R zK}$L`dZWj!=8>xju+zp#@`VImgOBJze$sg{HCqv_>PnyEIc4;mSl#cVMAv{p%5@uK zaeYc#ueE!n7Fz(_t194fmR%th_syk2ANIbxeHSTxQ<75Be0Rx|bk=?;^(?u?aw`n| zt#)Ikqs)}%)v9>);H)TNV{BhID`JlYTW?`g)X}kJo}oUl5}{FW6!j0|?L_6nb2Wx{ zqo8TgC3ob*(ibPB?DP-CJ|Enyh1XCxT1)n_H?Vo@Cx|v@Y_v}5TQ(^hGQJNu`sOUM z+JygF_{vt&RnEy8WhK4w649c4`mHheJ~z4l8~{*!%tF-F*CVFs4#7H%ZR>)5d`gzy z)rw!T_V+d{|K7tDWKeD0PiplL06vFs)3FWnHkFRy$f7{*i(v8$#p9^_+bpVnLiL;w z7)ZXdx`bW l1cx5=8XEp-G>UV;^|F^Sle0a6&~knDxLZj45SH=axdH2 zC6<7};wQ_t3tyg@1zhVn8Ixl8O42JS$$`4TlP%hW%1^n${pM428Jdo|ZnFc=zV=4M zBQ+0JKRP3nhP3Y7)uY~mK!6`8SO-_U1{DC#yi$gH6CbLs<2=5wb#5nr+AH?%I4(|{ zoo`OQ@OE-~W-R85zSY86EHqd+#`ce(Z#L$^FpnMnBOJl4TjOcfxpJzl&mX?8)J?HQ zL#0cJ2mc`@mVfHu+SD*htTnrtB3FMOXFvTtg7#A`Ny+=BQ71YDi3OvqK8)zAz}d!j zP$&Kl3T>~Ld8P?DQ*+z+{JEwje^`8OA;+OO&7Ry$+s!%%WLmgRBYmGRi%yN9ez-M3 z{NB~4?y;Zk)*r;Rx^~4fArR`5aW}vAoF6rz4O7l;ypIzFj?FaOVngndSm^Wk8nGeE7K zqW|pJB;jH27;{ScJeODX)^v9Ez_jPpO!y24Wa`Yr8`eN=YJb<$txGKRFt5g7haxL; zD#Oz%;Ck2Zf*cZ@J;c$hQr;{ f!ZPs=HUqb{U%K~N9(AeA z`0N&ewKL(+nW=52Z=CG>IP5DctE47DSGU=EXlC^oI|w$uy?2do=TPShSnAuj3B9h1 zRkB2FwJDK~Fzua#C*(=U==`}&y?psbM%Yz6pGtXLPcTFcsN|B6p1eF6%Gl}Hvj9cs zIn03*^E!j>dAt9)ST_Ig%>3wBPWw6z2(s0^8^a(m*oDq#=q{dv>L<45Fh)d$tOTJQ z%ziZmR0aLKn-0jmB}RiXt#9fs5Vu;Pc3Y%wrM1p=>S6k DA7_UyUb(Y0SW}vFH;Gm zLdU!308<>Y{Qmc8 -)`?wjw8XW<(1+$IS z@1{3ci}nuv>5dbG4s$kJp|}84>d F6~4bT;`4mm#`VqmRBsQr3Lws{Q?o3U>EP`bQab~%9Y#N zz!sR3hjmX^+>TS73VJlyL!aY_{yC9fuUix5+aTuZf{oWp&>a{ZXrMD!SGzYnc#*ch zLHl$TZPzI%k!{Ss&n*IJc~`f8bxK}4hNvZXdM(DtrpDH)#Q54t|6Ex`1NUADYD-%r z!er9Sn5aTz@ZhW9w9+_)XO4(s5fuqtGXAAEC^#3~%Qvba#^t>-5XO4#6yG#gI5svb zaJ{a66=;!68Z)c07JIA4>As_z7n4f=tkEW8rtUO&ZHJ`tCCDjYOWOK98*`beTRML4 z%3iZ6$0Um*Z #`<8&ux4$v?(^oV zmi 4KZ!W=9U4{ozs1>qCiESc>&k9rA$KpNR)ewrmlW(uE6TU3jp*z1@J z7VYl2B}wq3AmQ4AvwGW+b>2qQM@&Gtmlw-OP(e(fXvuZ4G-}@C;P(flMU0OR!9#z> z`T#!MwAS)2%+h4uR{grxi5p|tzFCg3iW;769;eJVe&=;TkmDVCR`M8JK*7Yi95H}k z!t%^1Q)c>p|Eg&?n~oj}vIDHFox=*(c0chtUdjPKyHA6>Z5^l8*!=Ev@T<{nD S~!K%N!ks*_nR9pD2T uCMw^rU_K#z_)I| zkZd!HXrywx8R} HCwN^4_CqZ^F>4STK$qBQm}QuRf-0j% e0XBZ`1Gll6tJ(zQ!P>%@Ha+0zCBwl50h&fn!*;CuOUuq4Ty>A zf%K6vi+M^RcRCYeFy#V!fwUwYuE6{ph+tzY|;O`Si(5JI&+bTO;SQ0U=w%o!9rA z-1l*;c?B`XqxiEAwIDzDc^JMvO)*m-^VryaF;N+wGNvxb9~*al>~$TqD*?a86UWop z6dEFMb@P}50D%P#RXGmpne7i3$EY;+j43_q_vNAPU+*`azFSIpDk~SGCC9FqUkWyE zuTGY1uMhWPJYVaCB#kn^R`~_a-vt4mo_VPl( x;v7YnRWX z^pAesf%tl*CcyIFf(??|3B;2^zU=WX;29Y8 zZdqM!rS j} z4Q|;E>X%Gf49)Au*Y>MSSnW|5^ii?ZKNA5tJD{bE4|c%1-kGbX`t^p1D9Z%R@Ht{f z9Dr2_7e%gQ9P8R~9JKMCvY1#ws7vNHKqUjZr)}v4BmQEdK6v0!PP<;drW-RW{+oV^ ze)5qW2w)tl)2#ndx@BeTmv^tqgxMZNM1vTq?OhlQ#ws)QOY&t2wtTVIbsJev8?yAp zkLwbfdG*Mm`YQ-=h#F~W4w!=LMHHzWk(8BB1*$HKzrNH}FnsXx>bm5?_u`v+qwnbT zPZ>TL!n6EE?(yuj!(``G`zHgQ8d|Q!g+~6i3!i64^T{n6Ao-%|9^c0h_qf=-YS2+^ zmOC+bMbehx0G I;rTr=aR%)^y$7C#k%ay1a+EL zl8L?hd$)Z6#81cMPx9Y%t7xVVRdjA^pOo@Cv?L^?oxe_%&h^?jP(a#n^CaEVu)~p< z&+f|ds^C1_c6ZLE%pobdQ *lXCDh*LFiK01YJmzE4Nt Tl-e(LI;07;k$~fPCQ>PjGQFyCIP&fMb%MT6>F4G^! zn)uauRw>eCW`ffN51D!vUe1V V2bW= !8&BCu)@bd%pF5vmomKaAP^z zza8Q3i#h7XMkhx;ipL$d{EN1y$q|}+#dQaU0loLQym^^RBp(dCQ`ak|X4mA|GggQ4 zt=u^u2(alBekIuIp8awq>UHZMNlY#%fW#aFb`_M~Re%r+T58ixg=L0x#*i&V&Wr z0LrX2*-~0N*e-XIjz8R^6PQo _0H^dlkTcLn`XNhj-N z$Dy$x(s7cdK5u%1A)@ %o#g_0R|7gLcz{ z5gWyn)@g%zWYvNB!3US^;2|*EKGdv}zcDpGD 2g*0(m*;LDf=|El@d0Gix2V|` zsdpr`v&I16%n5h~1?z&7>lEYye=y9;7mf)!ZJSnEFRITtDVYDg#-Dn|J4)n#yVSZe zY)6Qq?kvm@79M)o(@*JOT0~?5nN!Shnu7?6g{<`3XuT{u@{qz>rsPOcObYj%{g%k9 z(b^k?1$JvpjHl~nmR3590qD}gIXp{C>{nxs26SBUpbOArv%)0a&F|E6`4Zp*ySIV9 zCPsaRg3ZZxx()9Y4X4rsr9$J^i|B_Ix$kThP1MsD)-79Kr)`V_sWMWk1etRwdkug5 z7@pqSyuHuiVCt+V(+gbQ$~QPvCo!pq3yG`02X*Fdl=Q<`^_j!3gd=^|`X)8w=}UD% zn<7FY@M;h5q%Upy|7a)=ebLp1$F}qAQ;9EO3|ZSB;3mlMh!d)l{;g!PCz4!z!jf5Z zAp<^AG|k&*%YC@OKF=2G>EjIM?PLr^Yamm8;cHRH9ny4x^HCM)R^t_TMH&GHkSo4& zxz)$>+{AB9f>%<`IjdJhnbt_+&3pQk2