From b5694ecfe533bbf2418ffee81f0977f9c8e2811b Mon Sep 17 00:00:00 2001 From: Vito Sansevero Date: Fri, 16 Oct 2026 13:00:36 -0700 Subject: [PATCH] feat(ui): migrate Node Dimensions to shared dialog controls --- docs/screenshots/node-dimensions/dark.png | Bin 0 -> 78291 bytes docs/screenshots/node-dimensions/light.png | Bin 0 -> 83376 bytes tests/browser/workflows.spec.mjs | 117 +++++++++++ tests/comfyui/image-browser.spec.mjs | 68 ++++++ tests/js/node-dimensions.test.mjs | 15 ++ tools/testing/frontend-coverage-baseline.json | 18 +- web/kikotools_extensions.js | 195 ++---------------- web/ui/README.md | 20 ++ web/ui/controls.css | 17 ++ web/ui/dialog.js | 85 ++++++++ web/views/node-dimensions.js | 74 +++++++ 11 files changed, 423 insertions(+), 186 deletions(-) create mode 100644 docs/screenshots/node-dimensions/dark.png create mode 100644 docs/screenshots/node-dimensions/light.png create mode 100644 tests/js/node-dimensions.test.mjs create mode 100644 web/ui/dialog.js create mode 100644 web/views/node-dimensions.js diff --git a/docs/screenshots/node-dimensions/dark.png b/docs/screenshots/node-dimensions/dark.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6fd48ffee9f2747a454fdb78cb4415cebc6d13 GIT binary patch literal 78291 zcmd43cUV*1wmynoK|w)5sfrY(N(&tn5TqjzLI;sf00~7pq9P*F0wE$zq?v>eilG-3 zDIpY*UIHQsy-4W&F8n^vIs5E=&)L74D>Y4(X!Ig z(9oRIyr*VJLv!*r4b5?#(?@}C^dwr|)6kr!(Nw!*?4LHjXBPj^EOab@bAD&GI;bLO zeg|G`4|Zf0EPYjASo-08o*PfBWcT|I2?To*!}ZiMm(tL*ay>FjS7yZ50RY2?fb^OuxUT8JRqjVU{9DOuN;9~Ta z_Q39}5Y$dQ<;!@T?X4Tq7r))Bv>Y86FtxBqO#SPS5Xa)-1zP_` zkH@cLVl)dh10(pzlyO+40;fJ-;!Wo0zmD4bdfC)JrgQ3gw^}qiePoU8#ox`?c`a7- z>r!OHm9r5SzljHY{yMR2DT4X^QzVk$h}-S7c9uK*x^h$~xN&L2d-STG zn)R*l+qMo4W=9T>roWa*n0X|}9;3K2jlU_k@8Qu$H=_9*69`hs;RIcItq7NGbKRy4H)I>b_`?5%wnQWR!Tz;?i zCjyic2Z0w@J#OIs^aUd1Xw5JnhUtCpN1XBb-OablfqoFl_tt1QPiPZC62}J|xK8U` zJ6@$P!~TjNzGdlwxgx}@ee0s7g~ix}Y|~CF6l7EF=N=ds7?5)9;j zIRe~?j&m~z1*xq!-{x$Dm<9JF*h1d<(BF)P<}{Y<&|4lp%9CePk0hsq9K=%&)^Wj0 zZl3juk_tQrb?f-@`i)u}lXH#|3m!C!Bz8!qVvu9-?n@oV=^>=asuVEiCI%gV<>cc>I?{7u8pY|1Rp4eAoA6*r%n!ASpSH*t%bk`qKfOE!y1dw0(K^GPs!vgq5R< z)DmN=lv){8vTQ30XdCSk2mRU?{2auuOq4-aeti4!>2}zS%a=K?tOwTO2gPSzH!lE2 z4{RS32p>_RFR!uFM>LG5N-H0XGlcORkk!M&!meH}$TZ@ti{`u)Ieqa99xrvK%u?jB zTspj(v4RYfjcdMM2?nKt5#}40q8snot1iThEg?^gR(fl2Tn#|Hj*DZPu@FGKO;5M7 zv4MQE_pW@>=vi$3DnhG}r+&i@#q%K1{x%$Bk|)EF3zLO}h|Nc|dmvA!b6>zSkaayC z%P>aec=a!BT%wDh;9Hl>^R#LB2TigJ;;U1jCg$zT+NihLcsn1T)!i-c{oA)an%{Sc z)@{NbJh=1Qn0~z?IeK1Jx-vzh7`*xIa_i)HgGPU$)mlJpS4_KDGz#`JNf9|b*!6hl zSOErtQwpH=Os&wLJ)6@#ldqr2x*ShFF)_geQ%mohVqsx{Kpw-#Bgq9S+!+8ARrdb;`BW^IRnD0CMk(R@ykB)&X;G1>5cBJNzR&SIFX2q2 zngAo4&Ekj6l$&GKkC%QnMk{4@I+oV%tq)TNn&Y_UN_$037Gqz(9;pi%_Ro{{u*CH~ z_<%-S)nN|W-`yIr()=c3S@Elp#pYgAPdMF11k>{KU6ph_r()yR%}nY~xa-|;{nuqN z&*iCKS{%_h<3!C@Gd=^lj^1*J312hZBh(v)LG!b`vcmp{&zxQl7Qz232&K2C|R56u29&0T$0%b|4GkJT1`fc7qla_UG+ zP+hVVQI?Yv$chu&!g0ak)}WLL-i|)@SCuSSN6_sC7*e!9KeyW@W0=-Iw*< zSM_lSf5H_n#Pl2;n~_S>yM8TQ9UbdRYBF?cc6KP?`h?BS&@evVZ*fF6z_lb|+m3RR zT~Y3)8G?M`dy-DxYkCShoc7bCp)-#Y(5x#Nnt9HRJaB~;1ZUa0Y%zvYn_RrO z4`J)aw;|W76Zo|?z_=ExZIrzyKR)M&slp4^)>@e92E8KDA+iyV+}(Sp10J~x9u zLTJIhdAvuCDvBxw*MS3Iju&@lH2FH7j1>X7AG%;Z}3c z0`Tc%HTBNxQ4e|Ei(9ni+G&30BAkj*EAxAsN`AZ*Txi@rV-Gs>2z~}EbPt_~T##nw z4v)PML~zG7Geto!U%yT0{QNmQsUZQEL0eUPK^IcZN{H4K|BM9*{n%iegU4e^1`G#n zQtgWE(W(4mWsn%ZGonjhE2D0=z$)zaVr$~i$MdCw#sX4RMehha7aqtVKzi|#_u_}PH<#5p%u_1l zj~#oKDuTV*c^8a>*_PHOj}aY-Y+2jMrw)hPCmDMZ2Up!vK3F-JUdP@S{)V$oQjs-(&2>uhAg~a?2#ou<(c`*|(oAa@B9YI?R{4w>4G% zbNP*{7AO?c*lH5d@Zd}ld8#{K|Ji5T8yAHxzJeFkBzV(oh#a7&?iX&;;ok@|-q#$x zNE>NLFg7`=O^8B=8-o&y2NyWYty0<;jS$E^+-2?QeHL^1HwyADuwMJZDPl z*+uk1*AT)pEru31|WvJ+m zzH=?$5WKW$=&kd&QgzsH8|Ng!Q;_rrc6OGbh_!B2@b<;QNoSvlwRh(a$L!k-&(BT3 zo9JmxtCle&={|8duD*S7!a7@(g3BAJ@^!PfH~q<}na5MNwY$>E>lnB}(t@BU6o(Y< zYj+n|T^ViDl|szz_>e?i-KHmIaCxYC#McL1&TV#L#MSqH*5J@+$!oxmjG6>AkCa4J zF(D1Exwf{}+rcH-_g+-jFb1oqnRv`IfSK{r6-DA(=MvMXbrGwo8|9R(R?zc?xe`Tq z;k`Sru;=Q92Q@=iH*K^a08YM9Y>7?_ zb}Fqc@D@lf%!qU@H5dMFfA)<-p|%GcWvqlmLLP3dA#G42n?2f^5oC%zPE8GToeeIW z@R4|5RI%_Od$Rxw+*2N^JYn^5A1qZ==Mia(D z%ffv{UePn!q^5h=G`;55*|&iqp=TybD&67ux28gTqBYx5XkDe9`BGgYvedyEE^LpG z$WIN09CrQ_kE^FjldBrMQ%RwdZ8M+4@5stvb=&Mq7&jGyH;a^VQEN6XB#)y7AD`3V znt8)-JD9%5p6mp*WbNA_x@X`u>UKg=x#ZL9xc%Aurt>rW`WXc$OsOL#CMG-!u*wm@ z0SXf4O*|vpl9`@Py2xBX;xuv)dZaJl;8Pzc23>O}SY=qNM;4kPJu~G@J?JX=9E)9@g{?LVasv zZhaHd8MU$%QU(#d7jV-_{0g#K+%gc`53dm*3&VAIv~l&{giSCgYPX?$ke)T9>5bW% zIGkb7omxMDp;tnD{m?r7%b_5*G5796FBevJ_V{1L0dZM;(TH>Le7OEZ;#BTy#D$Vz z>!|nNQ%+`?ia_Gu_7tW$_p~p-umy$v8*NEo@(T8(sZH>5uF}gO_xFckHO&u%p;bL? zB4M{Yj1n~dNG6>y-OtX>$|)DfzQjVCSoAMAOuHoVeSzpn8Ev0PdzYxY#k9?yQDZJDcV4>-ShXV0GP5qZkj zyajhnmw()0%@Ju~Uca~Csr`jFA^y3+R7bj06ODYxc8|&RS14CY%EnHb-qa8V(?U3> zi9;I+OwAEq5WEwd?1kK+(AyTYcmCu8bjsXAL$k)eqrFtO*B9ieJMp?;3%9C)k^=Kr z4}B)!3d99JBA>7*?n7To!_rtiS9BvS7^b?oI5rcBNF>d#YrQmUw_Ko)JpMGrRTPco z+dN!7~B&0?ArUW-v$Z+^Z&-c8X7JU9!)bKyU{c(}II-ebG_>sbTgOZJp!k zZ(qTB<`Pdb+LHO5TpnEchjeP0LV6h^WDrXIV1Cy1xM?!vm~E}4Hii2bBBEl%BegwQ z%cD0PE96OP2~^|e*T`O(aD6KZN+oJmxImvk1TJA5-e%;(* zA1q~5M$P)3%+Kf2{;~G65$?tOKrTJ`nBxR@^b5fA0K7(i#$|IPuh-J(9-DMw*ssq! zXjV?(T*-7jaQ;|z;M%O{{?BsCdRtqY2?^JOVH*6o>_6UXtIl{?Q;XZkm9q0QTC~un z-a|+?g9JT~M$**Ki1y}zjkKb$b%hl=@{$GCiv zx@8`AH^uDBL=EU}GM{HrLc)WIL97PoZ6@)iMaDgzFIn&GV|6E?B?CHg*UhZ>_QZ`6 zcUvyY6pX_RXFldw5nMNUXAmfHnm&jkH)W>zJz`~F!2^=JGNjk^$^64#Aulw`U?5Gg zQV}sKz`&_65PaNRMA?7y#}FRF$fah(;Ock5HpSIxVL`>W$i-=`4V6p}=S^DnugNvM z&+vxlqj;*Yc&?=f{=oFcMR8zlzH%8UT99C`Rd$1wWUz2`Ijbi>R5-nIpiBk`DPt$4 z>7sMLQHgqvWoB47X`1v@K(#bgr*fVieN9x}$X8)a_d;AQdQC~A+JeYtQvf7rI9V+% zY>+%&n1CGmXR6PL+C*Xc>@tn+ZX?&J%g5*rp`%=5J9*eYjD3iTU2pd;P~PF zo$GxB9M-nn`Zp}BtlVMdqeuqMf`U-r@#@+0v(=T;BN<19Xa?|h#XOZke5KEf9DbXM zr=>&Eluzrz`sK$H%bSs0p%uMtT>I^Ax+tHjHHlw7$4xi2vJ5_&3)2onsXRc|j*=zj zCgPM$4)6HHBaukaag4^y^tR3BN~G+1G#d@IgHLy1N(N)ulIhapkmnAMV^O26}kVk4FL*seq$DtWDc`R@~yj6oj+K3<$oD zqREIUhU2acMMs7O5L$wQM0r*s*Wnr8R9gX;+Tg}TZ3pl|j6)7BEDea#y|;ovi5-p- z;;BPyO+Y@4hY3h^%q`79ZoBpM^-+W9x_&=5sn7tA%b$8gd(FD^LX`dG@29Z@$I`Cp z7r&PU+e|OoYoO@nhkQWx&j%)Qt;|paDGdSv@xqP6Thpv_9bsm@mv5v3_NGm&R5_w` z2^c1jAT9=hxO7JDubk+qFXXkrKj~4_wAr!WXFiE_Ja_!*@7yH~&9pJX=roa1qC}{$ zxU%aUEmrfm-&lw_7d7szbAqxakY_GZOk+~83@1(Tg9oHej4zoWz%*k6W;QG)WAx z5r8Qd7#mmn-!B5($I9y5!wIZO>Q~b!wVKjQE%ynXzJ5M83wN~Z?zELuFV60uuXjrq ze}&%G$~e3Ft*Zq4r>YO?kEMDYWuExnk6Cm@w?Cqpd(TShHBKF;>ANdcg+YNDjub?@ z`aq1_UmP=K>76dj8#;TcNCaIxrrVo|woE=tG*?94!pWsVvCy*Kj|Ut$YiwuEFWUdT z4}os>4U$?tOLQ!qT1n@$y~6rB{KQ`aHp=G`-|Kqc>fQIOdAwK=NV=>#nq-2t>S~O2 zowrGR&x*wx#)McMHiz%7l(}0j>rRyjy30!UmFveoEva?i-_Lik*BOg&ou8{38a5vD zCD@A#;wjzpHyr=IiFN)7i#&*tarvzPg$!mV(uC}brUqRrym8UH63Ukt)A-&slH5PFv6H(=A4#$+ z7NCi=C^l^|xto1o@zKC+w$l02CI=QN609+(SpG1N0!Qx&JyR;A-5I?Xg;rcJH%ip# z6=aU4mOhwUWFF|%UBJHBb*-v3c-8-+FXzMm^76BY8R`lj2E2;~Ha50pe+4A*3h`^~ zJw@Ko5_2pQQz8Zz!<`VL#$8;Ok-JGlHu~c6xMhk!Cg0yu zNMJZMv68cYowRumRhC>$A>U~L-49{Y@I&5RMnH6fFrR65f#H(52e+=YTpS#fjZlnl zXz`J|F8y;^Ei9~_V6T@8M{n=>Bu<=&YZjycE;5+r*Q?+RdvTY_gnM6ic24o|00xbQ zv@~aFa(%6}4iPd;EdkpZ78=T%Ij(4|xdM~UO7v0pm_#;8`??BT_g`5ii4!xv>~AU3 zKRYXM*F77L2g^<-v8li4ji3L;HiNimbL11V2?Ro3QB!(vgi01K@YuRFCjMzC>BV%h zW}>n`Gch^8&H~$KrGSQ{`dP)8f9!p95xdxa$gO<4WbY|)k+!qFYcGF~{Kh*t*v=2+ zFhASRkpNy?UyGOtI$>+kG(~7@^X^qGtE7Ff#hYDkA|0bQhWTitMmZSvqaK3WP|MPW zClq>PJ}xHarLjN8#O0OR4W%c^#>)Cf(UEV;Q^PTMpAQhLaqA{i{0!L)IAuWDuR7b{ z25?Gn-PKElT$PO#fUkU0=?ODoDyntws9teikA~@Bo*g zMPx&ve%Hprf?tpb(un5U(XER3+m>tblaOn{iOXOco3I-fSN&_KVpxNaW!}W7d-f0A z-Miysni@p`q<#|ORBWo9`@O6*Mc5>gG6XBl zPlsSj2YJT*w?=wBu3(a1Ud`;3O2-b^zg+OJhgFj-@Uhgq3 zuQS&^5QObW@|3nO7R@(w*#sRcC>eaK2)ix~8|<-2aIQ2i5gqkv3$+t~d?#43=vv#R z_?Wxm7d~gU+q2?_YbX8G*`f@+?ogAM^-j(fcSbUg^`oh=plU^r)ZV-yew&tjIEwFc zZg7S|(0Wfr?Tj(j_LgxqM_jXUGu`p0ee|zEv0TcFD_a-Ku6AW4O@DqS>SpA64AC2! zy4EjvpQB*>(j^Are}bfJ)~Y?si$N%0^NQ=~VbyQYgU{O?wfPcty3 zuSf#OqKPZx<%O$Y3+wzuvX(IgVZO;)x!5owM;EZ-_A)E(%Y{v#n(9FRwAxw?W9~mp zW6ds-Ld6-Q0>WZ+<=3&sq5b5SRf61E!DBZyamGsm0oxSWMcz;1rWny8D5$je?44-* z!VKc`!?Kny(q&4Sg^|i!Wg#}&Zo}Pz&xFdhrv2A4Ih!=J)|m2k9W`QyP{PWm#(K() z#vhqxoe0d@6uAIQ5zn+nJ71aV0G;>GxWVG7@;`5l+QZMyJiVPY&DI)YdB0XK<6&2K z{(9RCETxRIPr#PcJm#Mmv9UX)y0U?HSB_jS<9O@Uup!toCRIM1{p~0%u-rU}wJRUq zGRI#sc)ot>$o6=;WW$d z!`U`7TJC{)90R;lz?r}5Mm=}LUk%jJ9zP0XJ#KAt0p_2Ql9HS20KQVy2HW2aC?Ce6 zpUvWMIDLI(5oEQC+TQx?ZZrb`c<+#J2DhMQk*ja~OY4jF!;fV43re3nb;?FaIM)b; zofNW=|M{AD%%H3qEbpT-R;5edFx4F(AeE|I|4x8qVue%QPl$1_g#tTv>=@it(f`-C z%l8j@P>JFW0Rg{xMZhe>Uk^Y8rS@4T|+jkP>11;4|jAfBl`HWaNUFwlJ)C8p1MD|fEhgCj`Nxf4!jf* z5n*MCUkDyM*vG}jaiKCrI#+QA+qhm%Q{F|Ffp2zG9A~2V`1pP<513e`^Ju?)^Cn3@ zH#e6T??ioGYmFoO6`ShR&Sps~C>RSMPMtc{*MA*Y!Fv&{HmcrAnQnEGkqwJJRfZ^g zB^!eUrn4uzXN*CqMyH6I;J#2VSa#nLcgz@UN>a*YVK*k9b!RB&gSs2m_~8;=4y$7K zfB6tZUfHteQeus%t(jY+KTCh!7Ui10mL7mlZ0+Z?XJ@|rSRT6+P4ajwn=Z=CLXo+@ z2sq>j1Y*DL7u4dI5Ki_W!%5cgBZIjeKYMZY%(uie+?x6EcG>(&I7?EiYwh%nTe}@c z;1dD3=0u%btsSPpvkVN{KJf&5<5QO}UrtL)GT;>{exXD%=it;kDs)EL{$xODjsLRB zf@Om~L(1kXQ(n6hc5Q<}QU~{SRQ1}NNeG>V!dA!91~AhA4zq}$a7a)M4l&wp?I~^D z(C7KtWR=+|T7MT;E`DF>IIo68UXa4*EYxCunT?f|osF%uzG@(+#w0^I3<#aU@@WbI zKetw{Y@Iea?7Ue*w%719yzkdFj_>xz3Fj>2|KB00SRRA{)5`%&r_+dH$o9wfp?SHx zFrA>8pC>|EqjPg9xgiRaFB5AS%8wU`r)>Cso?^wg4;7Eyr*x*tD$2_XCd7MnBzsAx z>tXx=4tlHCW-n9@v0r|$K898VW^M_1J4p@UDyaER2faHLbw3j2-&h$+s`VSWaG*dc zH}NT>{#xmH*_qaf5H2|%S9$f$Kr<>lZFbMY(jhLNI)n;pM}}Aj2)~89FY-c`z7m*J zpFK-~_RTyhC@fTb`_?dslhxVT`9>9?^w(d^m@WVu%ttC!S3Aog{SD+#j{ zK>>@h;51JEv=u9FY{+o6OybID$MaI*wELTPK{BZutmUF6+(o?%Mylwk6y4lM15j~* z_Zj+FGG;@2qTOxIHS-)j{rbilsm@zE)2Q!V~z7e(c$5tn!YhKf|;EM z^G;#ea_YI&6hA8=?OYgt+%>+G9|%DRIls}a7DjcZd#~k2ZraCjF^R&yPdBql()ipF6WLI#b#~6JN zQ)XWx=t4q5;7eK`D{E@l&z|It<$q> zf%azv1qE*|Fr?O$sjI(mxKJo$ zlaO~Bsr6ZYIyPlgT~fs@zmLIJTjL;p6Hbm!l+)iPmVvdTv%NFsEJJGhWL@1Ol%=_u zwU~uaLxbw)+gA~Kot^E(J4x)$ggc+VQ{inl$09o0MK5QIZXFBH`h29C#2MY_=rkoX zIXl3^TsogZ42wK@3ZPNN6OxPtk?r`3^S)17Dc|c4Hk6YNT0cjJmJ9El$$1S}&fZSB z=g4I)E{K&gc6zsTb6Qhl_o;-qt2U|gc)s^Oj7ZYYD+#Zsq)U5*k?^|#c{tFAzUsx? z&hN)6OU&}d+Mn}7qmH=oS(lJHUr;HF^2^^Y>bDT<7$JlO*B5KzwXdLW)(_5(ea^Zg zE1+)z;qm-H$>j|g>pf*kb!BH|O}g%ZX)GxzK|j`|J*m34_aK#2S69br7T0oZD@DSI z{Orq&kLJ;R3X*}$^aIdnFrL1bbm8ntPNm>gY64$(1l<%1Gc)-BHs++YQa~xdmL4x;Z?%qsz z&%;PCKfuk*G*i*ydQ1p4f=p^vhQh7$r(4>#)yz6N!}g24EcWMh_4Haxvm=$> zRNby<7HvjQOiTujFd+C@Lk_&7~5hE!)!(cfhVh1r^CDJN&peBKpaL?&|IYLNz@uN2$5;n`?y%Xr#k4C)XeRav)%NYQ@Ec97f_-wdUgS zVKtm_qh8|7al{9kc>w_b-Wbh7t_TQyU>)1X&(BZJ_exU&f#k%*t_7F`hlJ=HolHpR zRIW$d<0F4i$n3nEEp`SE_N7s}X{(SB&k&Q6Qt49#yUIl$L0%cZ<7-^EynJ0HxwJR| z?$BzY7$})r6anz2{T_fcYHW`*HteTHB@MbgK_r%Ii|kC_=Pi{44OL*fGuuW9T=D@Z z&16=b{7vcJFK@!=BUSfxSVg~K3$R$lFr{oX*9PM&fV0Y`Ly)zoNE9=#R?^OoJCxua z3I(B!6lqP(PL6hmsyR6dXvY`Lk5ra2E=aYly&lo(EOMOzhm;EeL;lW9YPu#~i_eo( zdyg@$vD`w>!Sc=Qw_BIWJ;pTo7`wZ>0n|$5aH%GRF71b;C`n6;o~m_on-e4o zmZ*v}7iNZTr_9%;3Mb=gLsa2>6XY{n>Xz%fl>2~shhg&=mGY7OB#^-s;*6GM_l~gZ z@(7Z3EEH0U^^b{YA(fBST^sM2oi!JvyMGEJc+xAZl&82VWhN|nqjt(#Zs9eF_`EFS zCDAyTSP5F0_4&e=L8)QOZM~VCnX_HLq}s<+ zxB)(VD%lz!A%7m=>+&9>K2;-Ml{n}&cItiXKWpX>!>54`4uNAl^wx0$4 zqFxVncK$U`{IF>OfdEgCe+?0yP`yOMVvZg;`1I*rf!O7$3yFSc+WMDW4Oh540Uh9Mxu@lgC_2gA3dOVC&w&Ivliw%#t7Q;lamt?IDo_WtM zKorkZ3ds}xdY#Fwxp!GjCGYZ)zA`%5ABsC69A887<#sZ>Y_!UwVeW;7 zW+4gZLQ>A57jm>k?*H+&uZ%fG?(ZX@j_Atc>(iHWn|Ky)_1m z4&Ecg-AbI2HGVC6@OwWC$l8T5`(6*8iWZ_4?oy*gQ$;mYXwGEwdW)sBjXxTgcBHHX zQa+8$Ew?H^1Z@?;qmG-N<4_DVuHRXmG3phMDg<0}%2=BYuSFW*q53qoFtN?H(g-57 zP6&kUf~E$k+}_nzz4}=&?hBrqW=TL`-P=78vuKW(OEwm@gw1?!wDVeN#?)*(RH0*Q zd9l=l2WfmRx0>K#zSR|TZY4FN41ag~J-;8KwX{WFzkXF)@DoQ=tp#B6^K;=hAM#AH zM)wNPA)kR|_Y3MTR?L4S)@=j0xE2KjSD)WwkZMUu!k16q)47_`-_tVzp}X0db;n&D z(+DS_r?g2bAZ(z`!rawGMOBqtVquF|P;j<$*c&>@l$GqBCt@#mf);ZP1DZ(#LrTtu z0ticMYfg6d*Ub|<>DIkXweaCaLe#Oj=ez_@>{K>-{Y1jVhVHX4qQ(BKg(m@2h|{2r z2nI6!)q+dT0S~n<8VqTcH&YOZYz=;1G)#`Y(U35mV~4W7x`rQ2MovT>tG(#Lg7Q5h zuA{GyNspgyZ7F&!cpLiI_w@HeaR$3}Oh_mszo5NoI zeZ23KSA8OV*l_hG&yvJR2T_5L$QaY0oRnB%URjw&Z1v&6#OiSmKHk zl_vm=Y0bMhE@hFha2{XrZ8mLs;jr4p(ORcfAo^H9@2;6!2H!t;6txP7C?8F>U2)On z`ANOoo^V}*>^V9#G?+?UU`sH|_|n?|z*9}c_L zSF|?D*fcifVsWj5*K~Ew|Bkh8qPxrmdk1!oqSQMj|MNo=n^-9M-a;8Wf!O6@W3ySB zD(yWu($+Q~#nhbL<*bxxV{MlH=1u(d2eP-{ynUBJkwP-&**VWzTConp~Hxqynh9Md~? zW8H$8kGnrC*u>0Oi=_PA8NT2W8an>7k&aqtZDut?w-NLDwSs?ztWXEVhBH5(_C#F& zaQ~PSj~SpTcdunM1t{2erZ)fqZkn7gb+Wya_eT5;t@p_<+yH}3mM$ZC)cej+@cs6a zfWj||iJyGg22hpP2N#XhdGjZBd=TmR)vd}`xBYz3Xjfn+D}#dqGs6oGt3yuCnef*k zEasL>D??wR5Q9T$n#!TOJn4FI5Zt+|q8>Nv`sV_ce?}}$yzPXgGVU%07^ng3zWz8c|>w>hqZ`vpAia+dMdR4I4gEFG3AQ4)zWo2cB zqch~y7XGN+mvDL2XPPOuyvjNUdQv+ndO!O zY$UPoGf8zH;*_>4y&eK0dlwgi9iETr%tS%%5VT2!>}*EG!PeeouSLxF>gZeR%%)}7!TVFBXo}KwvVA>=tjb=*9!%Z9FyNI3h`$w#0@_la4jdS!HpJ1 zYN6A}TJN}$aO1&1X}0|rK{G6hbcRDLC-Qaf*XCG)G`REnaUTrYi&__y1xsSpK6S@& zaVeWbMN<$5^II!xRmT=$?x~HwhKyBlmrJC~11@UL5%t95?SQu%HZ^C113A>5LIyZ>&nW?J#C!*)^Oct zO7}bCA&2ET7LVW@W90{}L1!y8)L*PsXJ=>E@6R3FNZfM$rWoKCw%Z&AzXuHqk2RTJ zOXm~C5eQLqECLteyaLm`EcmlJ^SbtjRq8fO&CS=hYD$8m8-H%>@I;Egt+B=>-7H(X ztHT&Y1_Hy$ST$2YMwpaXA##Ke@u#or4wbeJu9H7Ac$=*0(6e5@R$gbpfvSOtHS4b2v&j0if0?C!MY!r>3T6PZ>e!0`7Z2)hL; z8}h+#Q($bvg?Ho1{mKt@1wU@3+L(SEgyN0-S2>`v;%RORk zXeU@Hip{+KvV$PpVK|Zyo*27XTC))iHDJ72YFmzXe=$9NMuW-E< z{t&aC2YIpeRAc|lgcQ}x#7S2R(|6Kq*!8@yc&fY+m(u~I26+4$P+T!h%1KAc- zqLJhw2K-q;BvDEq_goflqQDLa=#6^mBRc%UXMl9HYGe(LA)_WDY_oyO99!1Uj|9SW z?OeaUoQb1CTUSd5p|rz;>&Kh)=J?M7Juzw`bkW^poorz!|h zEoAGY`1@adE@VF+l21-S``rkY3jXdG0UNCHjC>V=6*cm|ti<)U2DgDfX3oF5i?%xA zXX9&m^sN@}CG*=^K-<6FFR6r9))47xxdaSzp&*RhZKcd0AhXUKcxg!xAIR$LXL*N`{I{lfFEu;6}~G# zftc(Vdnz+gK#;T6mR2@I0oaFyb|u!(AP2Mk1odP{*%h0f8DjG9($%6Wf4#s!h`dtCC-GIgQ4KXM zReqq$D#|>eE8n{IYpS7a$!!ZurrX+UDMHhEfa(nP@*|fM4ELVj#KeXz&6Vx42S2Ob zaddQSjr3jJH%ZcJbn48IhT4q?0z+AIr$qYg%VzQ|gv6OS1m@JQW&eV1z`{~=rZS(} z3m``}!kR&07|U6_>fHc!YR$+-X!FPN>>n^ZlL0s9m|sVuW#PzTs5CFwx`pz#vpX@9 z0b7sj)(vV}fGtp{W&O9OdE0?t*r-1z-sT`bGjyoGpNsZ{A}5aI0WlB&bi#kLz2M9a znL~BVG>~qQLw3r~`vI!ILc>T?6#Dy}>qx;%bm;4p6)Ky=@I0uL{fOUe`OiGV&$25C z!c2Z898V_-0Mir_Sr~iM8kDoV0L`x9z%gm?YlGG8Jm^>Mxs!X}Mq}N6LDj%P)~CtShIgnb>A9 zgd1;)XxE)QN;6~1&M9hbq z`X~Ysde`eOhDrmc$k-y>Tm}nhcT`<1!tNBCzv0z25o|p5jd4o>P@SM7CFzPj_8d4E ztC$0o8S~vbUWrQFpm7clwp7c$ z4+skgOO$7Za}!3D*EY0rznff$YO4Vo6`LmIy*P%D3NXfj7IInFu-mw(-;w=}hM#b6zHN3PSgqjJ|rL_ zDdWlH2UzHog5V6OZ)L;nPt)2KTgFk1cIXMhNsID8@pIK?S2Ew|R-GnfmzmopDrx9) z_F{B{a7}qO;axqyHojl#HL$3`(NDRl-j9KNcoFM5{a@caM0;<=o;E}!&Bw>a>8o)k zsAR#ucKysw9IohfsA9Y^{dR` z@;Sz%)2z6#jDmZC4#6HhVL5Iy;lUY?yEo+8^{xf)?S4iY8F$mT4ZDrI_j)?B(9O>t zDxbs z745Geq8#{6*}UQG^e50mOf2IIU5z7w%Ru0>1kUz;`@2KrDp~Q^q1pQ+On(Lg&@NyL zJbQ%suRS@||8egvVPg5iu?LoXojutQ?~$ATLQwF}x~I8t*W*V&&xQ%=^DsvP@+CH? z;t!$@2&(vzg_Og3@_)ZZ73T+asgT4~bgH;a>2KX14UOF8|FNO}`514(fW;hc@_=gO z%XkrK5vYCzrADc7Zv|T~9QktLB?C_s`Lq zw@)_RHv?EM&qKq^JZCXnSJ>hC{vTyy|4l{q_s2hd;;MfI;J=eH0gZc#PSg0KWUWT5 z9%CB?#%NnfDzrLf`s&WeUmZ~7=2yM9z2;_T6O?x1ov zDCgJoW%_@r#EXIkp^n`bt4UtumJ8913ewX3$+ponzm>E=pFTY6Xd{$-H2l-IZ{L7a zv)i+ZAcYKo;CidW=d!T06t+H}G9&@$S$}WyZL_nk+zB@>QuFm~fLdv|lVa$uX`)JkR}4Yx}<%z5ah3uJ2=G%3@+b@%qo@O(1af ztn~%tqJRoZA!J)9Jyf_DCTG=;vq{a!ur@b0tmbBeB66jnK*n#uUA!X(Ixw{E>l@1S zZ>bp9ZcCwOQm=av$$xSIIgskkANFT}3fkmMfNN`-h5)K}<&bUT8yDeV1^-{S@u`2+ zy3^1I13svmn;W&XzCO&}{;Mk<5Hj>oV3%kk4r_^zo%H%$`9<@o11MPe=2*%l@8=U7 zZ24ZWehjE6!IzW(;`ZJBCrVDhl`{$C4D~PEpZ>C|PqCDhN}vU6kVd;=pq?nMIf&AV z*p^Ks*mGZi1l@k}w+xaLf7Z>{*Voq8HZ=6kVxA!ia902v4ardBz7SP_slE2+dLoKw zaStRhcWWyE&v5xG$6qsnBj(Qx;%Fx?`}c(3KoSvaDLS;q6Tbh(uqhhE+`ekM=ShkB zYA4paZ2t`VTMwCQh^p0Xw7VY)g1YZi$<;^w;}Y=SR)jwv1K+XsuIhfrc(nd#`y=b; z##j}Y(jW3X;nu!JC!K!lzkwX*sq23R1k~oJef9iD(}G#utN-!cix)2dl)423-F}UZ zrB)S>?k_O^LB=w%Ti=ucLQzJ>AoVA#5=dTdZ*Q}X`pTri{mz{|`&I|B>f+-gdH$Ea zj?UZmNnP)R}%(2Xggo~$-lkWqh6C@>6VKAw4}kP{;ycf{%|+&y0^!(0ZG__}pWMP(nUH z55Mi4qJ#ra*J!7du4hvps#_u)(!pH*+5UA67)alxv`>OSm!j`(xfGiMn(y?ne@{oQ zXmGAx*+3ijIsq$ZdG);HVc-I6@1FhVTJ!Jjr6_R5$(^UbC`V)X5;enJYyOz(e|6~o z+joVh&=*c0#~ff45=@2i8TwR~rL8~9HV@sttCxc)hb)OI#D#A@pjF3t8$yJN{61FW{8p<$_R$D^U|9*^M-GFbln->#f3Q1-&j0BH2s**_?|h%rYCi-@2>|G5qW zu+XB6@BF(6iiYN2&f@=X=IL7YS2nF&!=Thxjqi8=FPx$r2r23Fzxum)tV&>2|#<6Xx&us4SUC`7-{iwN*=qxjSE;oj%1wJf*+CAIQR? zeQIEYBvYZn_KCBRsu3z)zP@-%5%823@nTAtyF0e=+`ChMhl6h=+S}Ry?W17{dWZ*D zthcC?+gE?A1W;a(7URQU4O1%|vM`>@XIWP)t90w z`OP2e(B%NbeP8!=o#(I4pv%3jCIJoOK-S(8O^AML;oZr}|J7esj>I)h+HaU>6t-CMva_=TAr=@+4NkE7ua%Wp7h&x88p2XfNDZo~ zA<(erxpX59ILD4ROi+0$nw5%Nzkk&4w!NB3xUZ~&7_XpF;TO%zPcyNYPx!MzH6a&+ zz5;klPG@Ssi4y_!I&rPBZ5ILuAsfrQP?}#gF05@j(ACKC z354t9WM|7*GvN7mWp7+H_{=X{&|_n3Db6?l-OLt+%QBw7aKZ1zk)U$2yP!~|J9^^q z-iphui%QR7Bbo|L0I@MQcN=$%17o;dskUn7;>!3e_`8E&zy4HW{=3{4mw6|aFuUyS zYE>gi4~=JzuBVK(L~;kXTT}#0uX`*Gpz)~3WT5NQnnYRD^xCAotCiKT5f{Ec_+2Sv z)oqad-cn@z@BEk+!(lSrC)-4KvwGGS`n%-FyWy4QCzg#ImP{af?g* zJ~aOMPu#A;RE{)Flle$pi3k7x!T$eY_u>hy<6ROz?r^D05$@l$*YG!xg6!`U+LkCR zlK(!H2U@1r{BB(--h!*;QQ}^@pvv6j}i-nF@OA92-S&(D3J_qbib91w30&b=w`OKL! z1qEcLtw^1J9Y){Ovq9BCpAZZ3;>eYOR%oeD_}=opb+hv-2D7~qjz*s|bKCw|vog-~ z;>8gO2?-}kea<6)?nzGf6j?E)`T6EUH)0}&t=lG7J03aM*>za*LSov^1WJi(r9S9# zm@XubL5+_be*b$jb7DOG6UrNPHj|+ZH&2MByEM#v_Bbf9z@Z@GIF~Y^Y64E80uU}i zhn%%pebAVOn5t+b(A)n%ZR1j+#233ExCk)CXT+q)jr)Xz`?qi3hG(gv&YRmy0zp;RzHd?m-7tJ4;&?3t-Ep6?SN1j0`mnEm6uAY^u zMjJ1Gm-dfirBhQ==yzb8{dMb|7^#B2S5fJ@IlVK1aB6VHtf#qFZvQxeX8hgz_K^qF z4UCSO77I-{L84r$nrf!(G6*rzvluiQ?ID`;Z*`qMuhxj${Hw0nEV-CB7eRR7l%f3D zZ3EeAk|{?`O^t)RlC5_Sf42hq#7BH%k7iU!*-6rpRaS+Vj z45T_};%&v7klI|46VquH-jQ;Vvq9AP-g3sqswR(PtWP1F;Awy@axV4c)u%Q3V5eX_ zL#7XUpl*}!S#-@Xw|U#IQsX;KMC;`H)V`8dWmFMK87k!!Qk^xLjUm8H>HQIeT>oN` za?`>Vv9d9b^JC_-uj&lI0HJ6sTdbKKX1cgPaq}6R+6RwiwO3fn2g|F@k7SkaPm%5C z`sk`&tBQI=jBh9hX1#>CczJmR1X%o4teS?)of&Gu^Fcu^_P)(^ZE708=tVi`tqyk4 zK!e$~#q0lE+#b}wWrUgc`n6|gQv@R!Y#w~({e@okqR}Bi(d^N}jU`OD=x(XSSFI+G zO9SN}Ogaealz&SE6NjKq{W_S6na_5=1MD3z%A4+gVwAI22XhM-=jZkq{|D4oDA)X~ ztQG(BK{3Vxihwv5t6xC;0nU=0wb{eMqxVO4!n;hxMUw+~!iR9HV%ckXe`_RXxKL;T zH;!BLj<}3lpvD!@8A`;8ZSH9Gs#ttW5WtP@4R|Lb5}SXmp6a;h<|%Bt_lj5{S9;g1 zrAYN5pOI>ngJ_BGayv`KRr6~*UN{ABTorB^yQ}%am@Cd}oO-W*akp5kY9Hgh5r9Ky zoJp6S?ChFWz|FK_XO{Qlt9q%IaD}*?UhLK=W|Z#+if}&t;zylQr`bJ*V^x3+2V=W} z!%!)Qe3owhs^e_#X+-8|f9C2F+g|qC9qnJ-98g|y_QEU+zj33PMfZ1^HUtOann!n{ zxz@z6RoL;zrr-7_OvNyf%UFmR*pP!`xGQ3yta3Md85`h@;mGe_(25>CzD)?vU)hQD z)A*9EI*wEL`rfdO_m%_>BOzT?T_H8>GXG+98aERjJTbD}x7{)%3p(iYuk6PgXVhv9 z(R?>zFq`{>-Z)}!+~BhJE~aJ8w~mMiq2v3jksS%trzt5b+6l_>H0)Z3xK94-E|#n6 z`?pifGE>ofvr5?Q2JgLH@10%MfDLM_9(D|_)menYIg1SC0c7?fNU=!mxdl_C9t8Dh zX4H>dki6lR_TTbHsCVtl$JDY>+%3xBm2rZ0OYMv_?Ob~hF_S3m?%Ng4{ zx}#@0Z92L;;C`?9Yp8z$wpD>4Dqo#7Akzkdy5iE*vm@;cg{j&&DsVDYTMboPrrs;2 zCIzmR4wiE(-4=t|*J7H|Oa|L5k|}?An94q1%IREWCtM*hiX_c>acb4$e_h2dRU;oL zo+4qCYdRZr4>!{gY1fY{_TH^Rr@iu1B2`Eb-mlQx8Ck}TEmOtw?*wCO#KIWbT3UtO z_8JWe`>dQ|R&Bi2ZFpe?@yQ8zPkok^Wek^3UrWFhc!Sg*f(X6Wr@cR!$+R#Qpp1UA zW`G1X?pDO=#wc%H$9Pn}IJLWeg13^nZ`skYxjEka;(zTrNU|;wDJ5Ah4Sgf&d9TvR zqkH++CID^jDD?-&s<4YXj-SP89{qacJWb{n-jPsNx+3&d@W+6Ur|RX0$TN;z*ZC17 zEN%w{V09(;)q;%fB=V?2*|sBy_}9PI4aw8eN4(K3lO*%YM(i3wWzH87%71(!6n6#; z7j5C2_|*Jw#M_cj=0g^(7NW=fp9E^%=#quvBK(tb5Im;5S{|Z$uuGb7*Po4RU2-Z{ z0-IWb&8j#!d=hvICD2eLfDt{o0WDvA=YXytc{O2dB0#_3S@%YNkkq?Tsw;6RW(++NObBC>apQoOq~J2v%RI`J2}F{Qi;(x+h->ThYo^ zRf>e?t9m3N^SJLVu9&PvJ@WmIz6(~V5CY)&M0xxaFDkCWtss>Ca% zK;^b*qE4EXV4kP099d~PMX3H)c0~MxQy5tX!T1UM9kMd=;CNI#XvG^xAu?rOs_9Ty z`QeGkW3aO0c>_N+W3(optW^2?j+yV@zYh&r@()Ez(r5KF`6#av*h7~FL?AcBwmHrB zSj8|a8JSdxecy1SpAK_{Z=d6chLLe zlehXzJ&cd)Uxh$AHU>VBT=mZDXldO@8?@~4sMH_&Ho2;ri8jEPON%BzOXNq4gq#qD zk4Sdj^8s>la$x?`E_ZTtaIhR~1z@|ql)mCe%S~9>gfv1r^66a{FUk;z$Ac&F43m6T zj)Zx#Mcuev)u`!PKPWfGSDs%_JDSjD+CnF03NMp)rd(!*Z`qzrO#OSWWm!(}_SVtF z$K&DG zAJ@mgWVo)jG<_R~+ED=gi2Dr$uUycENYL4=VMl%nH;(SP3x9a247*>Zpcq<@^ldd6 zG{58Os=P)is?nU*b!9%in@4+BzE@r0U3tT}S*3bXFHlPqyv9L?eB=$XPgSbq{O3W? zw}^g3d-|y4ciN;tHn8?v4sP9`AaSo40e|i#=Z1y`bvkxWbIFp(%h=~=i?dWEXX3Np91esY02o=zkYQ2Pju&A0R3d>9jPA|$3L>&3}f-D zy&?sxZ*=ZKn61=+V)^_U2JrjQWj#GTzNJh4VMd(L4x5D+l9G_5bX)P0M(<#!f|8k0#k|*z03ps7HYB~7HAl#{*&<|nBBMUeeC~<4^5}Qt@k39C zp91dZz<@%6e0}rxJrH8AD$vrW{2dl9V%>aiWXzQEX zcC2j6huxS)2GnBlR$h8Z0~U?)tXrLY8d-TxX4zIgDYrV!wf&36E?u^cyh%&15s)I& z3Dl|iG<#2urWh*kVWw<^Rf#vQ(sFEKB4y~KUXExRLk^5K9nFQ*a$)HuY0=c+efpRH+324iw69%`_cv-%4Tw)j zh<+&%7K_Dt#bk?C&&|(s_gGvPT$lbyUlY?oC&hKcwWLK==4qg+)XTtA*98L#E9+xn z*KPg+{WHTH=oHC#QNu4XKN6{*(qecOMj;2@4tJxVjrie-Cp*HcJbo`;1d>?SA310t z`ULPFP%12KN9kzLY%4W0dF%Fe3G#?KphRH>lHzBM9;PQ8=ypco!-h%+7+mOIn~~|G zdn``6X^K6|l35;gSRA-vc^>4zuZ3W}qF3^X{GP0j<{{B7D?HnOG*2#JD>kBQ~%n$4speDfWTBz!Jjf_5?-|iOe zm40DQ!b|2QD*4YlIv$K`9F@umeE20cr|h8xZD@!sARw|TekX<8H?ugORqA?DNsStz z6?G39PxsrTY=~iVW8=D`@90HBPclGsNwD5Xh@F6NvQn62sv=o~W-oq>)%t~phevbh$$zze zIq(|`Nbdr12ejR&&P&!Rkl}55#Xl_Tu8L5ih}(K&BQ`dxZ0rU38N3mL<;`;?MJtW* zw2iqn$&QH!+K*4e^{XEFMX1$>Ug=HXy8kPwDqeIBbJd}x~vmy}t2bw@t`)s7Ndv8H3VYVjcZAL?tI*+x_>nozp{ujkIj!O{Hs!`=p; zN=9wa@6zND!T9~m)jPcL{+%&E%WK6Gbxj53kD2O0M%O_8NAUUdqNJW9#eDC5yA(Q1RX&xFMx=ASdtKoGQX>e{Rd zpRp}I{waPQuH0&`ouy^V_)5#SZl{o$4wgVIb#>F#O}}tzRE(p}xD@K{TPt zcFchJY-c)P^FZE988~h&iD00pVd8#X>uFv*^DFht?{29!6t^Y?82$Pzg7&ri{uY3I zIkfpX;MTL9=dO1kJ$wk#(_h}9t+#Y4m-9M*oTyN%M=|4*iq>FU>?f)T69>tE3AJ+v zGvTqZeFG-|x9K;J?J>WdJ0Nx!6~zLMtAD*DFE2@<-&}x9hk*ug!vlS*4;d zdDG7$)mk}#F z-`lnm`MA343Ai7beW4Zw5B~hGz6=1I>p~x=ia`CE_gdU&1dp^zZN`%)1pcY=38Gdl z=Slo>^s2Dmgq9CKyIHymX%S6tm#c7<4da|9A-jtYUlM^#;IP>K=<_-Eq0n8Kmq*pTnq~>V>VCdpAUg&k z*gSRmYB%Tv_h8A9$&j0}l7nKB;!M2(XQ>DupYxBe{&FWm{VrBe(S|mr)nvn%6`nH2 z>>Y+hKHi>7uN{dH?)0c_ki4j9b^Hq391)g^r+*)I(gMs^(`%40Jv*GE?C5};l6f=| zElryp8F|;Usk8HG>%D{{h~Xy+2lb818gzE>dEa+@n7EJefb2WVvJ`z`Dr!o~$cr*2 zAui2t`rL4!S1c{zFR!c=>(HfaO$bYH3iAO7YOuE>9hMjw5Q%Srez4gdvvmq}S6Y=HCQ|P92-eN~8+zT1HO)^D_-epS@h!=Af zlA()z?L>JAs-FCbi3H9s!`1$-&&JM0 zP9@>nYys8Z-;|i)31K9lW(3;`GJ%~jTp&`q$*O!9>}6#BUsVJ0HLb2ib5jM+pQ+Hb z;U9uR(zmyG$@+hm0m5gcAPYN#;v6X|__d=HZ!iE$JZ37ktFhlQ>rg*`>hngAP`yq+ zF(^^F1=OKI-m(0z*SXRyj`ZY7&Fr4pS(Z}Ixo#E+rJL`Wws$u$_l$I)$-$=aG94uXqLacE7<{ng$5(8d?^!*IkWCmVLspNW_6ZEw%@P~X_v>W!kI zz8R(>b=(QGz0u9ad5vQ6Bai=x*gsyxg{PC;Q5Cb7J}eEHfKDBdD2 z!_MU$Da*KV4iq=h&2$aVcfMk=SB~Wdh9@B?>;W{5Yl{aZ8YM7WApVEcv9_Hp?TNKP!6jtqLX;tc*;}qeoP5O zu>{mjT!GkhE%u}<0{0^b6=ReV;P|UoS3{hfw3oVd_1GKw;#Vp}tWU{IP{a>}sl0!F zuYm>}L^uG6Dc?9BE$r#&cvq$KYUUmJRhCaBB{a^Hgz&ona+XBuiSF&KGP|<+M0N3r zF$kbK>1(3ytZ{W1^;feN&q#>)vEzJ z5vi#}aji&1BI~8$5H=LQ>HW?Rb5^7E_moAMS25B1Nc+;yb_R*`3x&jj@!#Z3PxNH! zz4Z7hg}f#eb$I2T6Jw^XR_51rB_*Z(eL|S-LrF=Q$^PWm%@y>eC`H)~gNP6oB11(d zu{^N5K+&QzpT)rMSFHI(RRpPhZTiQLh2io9DeD_TyX$LhVogSh^3zfAMF0?mX-T~@ zDjp0+-GO4WjkZcG7d%-F<6%bRrYEGE&Ia31wTr~a!oZ{SD)UTVKJ7*jmBJ!=Zj5d# zw*5$ZHNpPhfw%4`@gWlYV-tUiEYsK57h;>B#|)_B0HpswQG(+RzrG&W#h%b=I0Mk%!g6yZ*Y7NsBQ&Z_w)M)kuHF za7{25hf^zzL$WcK^i7h;^hpH~dxLw6IRf9_7+pPxL|NX7*2 ziLvMm>>P6UD?eWx!J$)sN>++l@UR?zi_rx<_Z=h47%B--_AP1|MO=s2YQ8VM5?T9I zq2FFj#2Yd0r@?MToorm_Y#q zFI2%ymx7=Q=?@xrmxKz{rLot=sa(e(3jh~XZs+W$Lq58|#w9v$?|Wf->;OK3I+j9o z6|IvdUD*QB1=DMQ_7WjPo`4%-9lHGqi+UK!1vkWY2840&ar$p6BHGW$S{G{pZpwMj zYG!`k!p4N&0`Fuc(Y+4;AIx0$*QE8EjKaiPtJy34^2hlG*aGIbl zXsfCEB*GrBi4y#IcWQH!k2kjH<~R>>6N^vh0Rav zvVmtRUp8KxI#9rq?Pbp8J|)im%SuxI-M%z7c$ua{g`a}=V{`K6=$|Dt^j5Zwjn{&n zOXH?S_bxlqz*G2|N~El)$O)=VMov}QP(a}_prJw0_QYa;|8Q}wEMh*1n49KC)qV*gf*m7U!R92E7*6IVnN z6e>$Xmet^r^0vY}qU9z-vF-2A6htvb67H`6Xh;UB7tDndIekt@2STGDBln7>*AR?US3` z^8^UNCx`EqYFl^R>1Uy!rjFKW%kI4TY(WWRSzWmb3TPmN#w-;6JbRWNMTss%l3KC*65f<7tXc{&U_ z2&wz{-uq0k?Pp>TU4dM<-bgsvoC~&^4HNUe)`= z`xc&ahjM>^|GK)n{Zb*rfeCvPOksjI-pW-T3EvNbVJh?aOh3C4u%E`rpn&w)FrJVG zzZFDuo$V*o(A8B%b0P;^G}!6tcY2B|QxzhH>0QqsN0d=W3By9-jWZtQjBD*lYy9?p zfreMWHTTMRtWaV3j-#NFMAyY=ol3UI97SUk?7A?@@J&KOP6B+Mb)TK~hKm^W1X}NX z@7-c=t$ZYan9_k83AiypE+->D?_EFaXKIcDrUqu)aUBhC6P?QM;UZ65bUHXB1_ zv&B!(NpRlhBU8dN*jh+)@8lyf7uAu1h|l1!s%X={{zg81Lq`Q8?+8SXi3z|5J07Bj zek#__Z(WID7J6Cr^F$SmUIG+^a%;K4M-k%1;T*N};bB#?`8Kw2>7)_?Yhv}@g51sp zokr36#>SU>Jc6F1WsWjj$$GdAz3BMkh6|5l^z^;}KHV{Dj^iOGlyM3tnG)nhkWhDR z%=58DMUi;Fs_T@X_WTq*PX#)?88_cs4>Ln4i-Piu6xN~k&QE69b<*>~Or|x!n5>}^ zyW8(MHL%^?5lF8N7`8SvI?AC0H3$q>d>|Gq8^Ho&R)}hW?rl$nP89G++|uZN`D(hJ zL53J6Tk6k;?+C!0cz#6dW#ACc0V8vpljBuveda$ z8%iX1(As+O7t!U{^kmCBvK-jHNZ6ol_x#Hy;Uw`T8Gs%rQW)1RR^-j4Hzy=8juJLb zp@S_8&7^;Q+HiHGt6M5kh-~N0n+=)1^mXaI?FO+CC#wFN1GBoXI9VTg`qaI1CAPkT zc2SZ8yVKld?E{Arzwc>rj*yDl1N0>~KfiM)8BRaDP8hTxz8tDU*MIZJ-c7{rSL@>D zHl=iVYxfK#IytyD=A92Y~(E!$M6UA|}fP@yB3p z0ub{7kC#?bWB|jgxV_oAirE8Lcp(#LY#5#ZE?_`b^@|57N&HqIk-l^5cy%S$>mqYQ zeJ~2tFOzz#q8c_HUozBRT$usEzqmpuWg!}^(r<>pNh}$gLki~*PETY6KWhYX2G&Yd z)+?bsuRypv{aM619yS$W)=Gr~7kbNwIciuuBm=L_b0Y8?FoNN{P;+uxH98m$?->R- z@PJP~PK3!oBu=ZxX)omdBOTet65KHERBjvtb7bS?&%k>3sTFtf0wUB-;Ceq1@Gs_S zph{(HQdX%tUbr#fo-dVWI`S)Dh_qxD?GiuCW1jAqd0WU;6s&%g#E<@F_3JwkPzQQj zBWEjM&nuFEA`zd44~i^fB0qVgcI+o$8P_&n(iev@bQAxrvine3!vNaw=63)~`cPe= zt_jnHLuq;C2VN_#BllV!_N6oaU)$S5hQ615Kx|3@L6-pebD@%VRB~|FP;Wrmk-$ws zf}R?^fxmDD`ug9&jkNF{%AcbcX&Y;6YkPae$`K_*E~!D@8zV)D*MX?20ldkQ_pQbh zkDLDzIAwiwzi;iTsj3#qg*L{>n#Bfd50)Ns!!2zCWyKC@urAVh9tn;7nMPEOn6 z<_Bp~woJ)%?u~*}MHJLgg?xCW(!1I*uy(adutw%k=jfE16c6HRy|+n`M1P?IR88T3)I#eI%QzO zn%pgdId)ntV({qq};=&D_kYX*b? z|8oHR*ijMB?@%eEZq*c5Ze#=JJc?Z$g*Y&)krUSg4inPA4RgpGhYqtkp_4y4G*W3nDBK(}?$mBQnRLUqR3kS1s^F z${Q!|^goN(mnmg0k6hizSa|VH;PJhs7q^n2-KkppCS+gh60s26bP4JsLI`DWHa>Px z@-!$jvcg4t19`pJ6>3}_{T<|hXSwz@1vxn>H#};Xm&ZBI>P1F1T;)AF!+LFv_}R_z zynCzYDC-lghHU+E1{_4Gzu$p>walQ|%tve#l#aPQ9K8pgalY&Gb^SM_|R z9cT=Q4sqn9tw0fT{Vs zOOEn-x}e->g(?8DHy!C&%%N8)EFzMP+`YUS-wzQ^+-Om)I`w?cb@&j3Ss>ZZEGpu= zVJ6bpIur8etPXcQ{bDskT%&Um0KA)w48L&72v4~f^+75OtI8KP!=Wx%F~GH3YCdhT zIca!BDC?ddSdVS_QB-%=Snwy8$Fgyt+C~jAbz`q#VNI@}bg6cf=M^P%8slcm)-N{# zvN>~QZbxm{;gqw*{&d#OcM1nS7W4JIO6tFak9p7x*H{PDT=c7h&DY6iS;`6LIV@iWZ*J@y=PQ^Kg=Q~Q^c>wIjm6fdh#jJb>Bs3C&ZDrwmfrt)D!eu>5*V3fetY6n z;yk3wzECw_>qi6bHrUq}!VJ+JM9*r7NvXOu4fEclXs(W3%g#^Mh^uV)3Il)E-+{sR zST@xAJ1{{D)>yN%Vf~elA?03GxHjxUTVOev8h%nI(zEE*$CD&}$wdrMuEIIuP%%X( zG{YG+p&h3Q8x%Y&`U^i%i_ja-#A7A{lrVzIm6VZzE&QSFG*5biF7p{}DZ_@O94U<- zmG$!(sp$4jZ`HL?$Nd`Wy(gSHm4q;W3%Ow8f!iHbLstYGl#@>6*-7^wL2Os=a89g* z+KcRK&V-2JI-@`~b(@5;KJp8g0no(B_}xZ6OvD@JGlSwP*)giz56~V(VE**=B`Ulf z_F5obejkslZN%5W3PZk#AG4a`c@06j++^ z<5ZCX?^bKVdxwdic!`S?ly10TAf|fIsLq{AwQxIEC+7NL*!r9g8k7;2sAX8{|>>)XD+ekh2c=+KAYn zWEL@CZEH(&DX1w(lAf0O#=T_#R=^YkUm@+a1WhfDFDW z2BWkncrxZzLPOsWAHo7PD|UAY0<#)|)2YS0garlPJ2h&uTJ>9G{&O`K)1 znAUKa<2(%f;{c}uJLb?r8*Z;n#gQKg^W^ui%eYF4&lPaof^%YTp`b0$uL_6VT@{Bp zHBNUot$x8HjKm>$l!jjcayweX<5PQxYr_m5^k;LaSeYBNdHgv*0mR3v@;M`Hneia6 z1J`#>R3g+<#Kgq(*V-oSS2LLXRW{hB1f<&d8eRhgOBvZ#0ZPCO%KRpRHv>Pw zp@zDsRQmAW?f-@sCI~x@ZqK9NXEKtCIW4^Lc+pfj46GX{>O3y6?mo@uD=jJ6oozlq{A58Q&+PyJOueX@DuWw6FR&x(cV&SL;$iwlWR9C5U@Xslh{uLJ&2c}7R^Nxj3+G-(k=yjce zy}Pyb(pUd88>DcCe9uKLFXWmv0g=No>P{Y?A_@f^MmlS;mzc+Z4b|wi8lKS2*rd71 zuT6+>I0TQbPMbkq(ewhBfHWbj)F3%I2BB zY6%W@cJkzjqu}V-#Vxd9TS~6lp`-P@G6s;Si|TQe(}X_P?!s0-j~Yp;9ec$8dRN|% zO{4M4moHE*fb-i!&OETzJcI>Me12~%9)U5wl&sl}uWJ0fSL!aDd(_1hJvQdhz&7KzFyz34c_uN8e~QjM3+A(6R2z}m%7md-XY=Dg z9*F<7yHp$WcX_0}Yrkdwb?)81aP+XU1#IN83&rI0^@5Ib-ND{_hJ}>!+F*+vf;f+xNZa2e>^Npr%`!j0!q)d7VCR}*A=R62nl;9Mwk-w_f z41**tMJE#YSeqXB-7iv-^QLb5o&Pg$#`jiIkLl*_{;Y$WUX@75Xg~*x>}vkNhx72| z@hlfl0t-Y*q>iT;Y9Wtf&Rw7K)u)B@N7#J%?{fX$+!0r#vS+ZPtc~RdM+%$_p`7;C=or%>ir}TxLEae*`y7 zTGXRZQvNaaD(m5}T>ShXUPcWZhy5JpF8-GhGm3a_0NQZy-vK=^zS3vOTgtv`3+G>A zFR+CD7?!ig?G5qgW#J=4;vg7+W^Uw{tL|2Y7OWEh8gcUxQKBFI{~9mUL#c@nCw){~ zje;cqlG0{x6k{Ec4lSZ!T`RRb;mS3;;7VYyE=lOCfR~ykYzS@t2GKF9;%k z(<>K_`@;Q2kbqJl?7xei)MXdnqRlJ3_RG#*36=cBRn;;JQ*);92EX`lyut53OnoYI z+kYCV;4?#SO2YNeIydwZcL}74koUkQ4-BKGM#Nzy-W)E2agW`)8YlSar*g|%kDo7!IrBydIsY<44=MAH$8lpxR`CiWY$b`Dq*ikCn3`F+Rm zRyBkOwP*MEeVlq*laGEt>5+>^G1@~~nS^9CB(6^{onRkUMdX@7i$6Xt;UVfBaKR9y z>^j;W54Ef9obioCYEZR*)>Rl$%bF0CgN1Z5pCf_s3~}6sv%%X6&kcglAr|CHwPRyq z9uR}3O(QWRVi?hr zXqQOZMeK7?%u9Zt9&16WP8OzuSC>YWe)1O0EPn& z!FZUa>S~|E>Ubfa4nD1-i*;TyRnip#`{!&)0_#D}~feF7mP!UbhvvQK(od^uyW1llJFy za8I1@UIpsAX+fUR(j-mR_?2m+_Kn$vr7isY$$?uxkWZf61Qey1p%}6%`Yr3tvr}Zj zxiZ4@v>d6MpL?JAv*4sH-+|7Kgsynl!>xK>E1|`k_cD%SOAWi;F&CP+wihz}<7Mxg zvHkI+anEbxn_J&D%aI~UvW$+#-B+E1eXq)Ktz1y>-Is4BX1aC3PsH)Uf?}A8+zZ`n z6YGi7{cdht3p`8j7Mxq}aQP}?Y!c>iJ4V%Sww*ahQLBKmikm{xm^|YdEb4Rl`a?nr=9wb^A-K~p|1GD}pg@jHcSgDN{i zW$VUug5X8cDp{ZveZE1c4AlBsVxEu}gU#?f5HpaZ=I_M2H&=P2;iB6%rQXtW_AL5- zt(~0k_Oxra=8T_tET%0l^*#kjry!T3ax3*#-d?W)o%4Ctbn<#G-vUBisYGqwHEJ<+ ztw5C>6s~xg($$^zXF>Yq9XBH?ji-mzC2GIn?7dytzVr7lhuxq$RqiER$jHrB_qYnP zvL}X{`fARF!|mGgYPl>TMZ9s@V+OO6XLD-H!W!|PxwgSP@Z#wG|00asooG%?**j5| zrFPHLdtTPN-FUaT;Sc{P`BNoKw?Af}0pOZn>zmk2FNnly5FHC^ioC-zk^e%Z2oogz zD3U!Qa9z6P9@jqAZd#$RuADB#3gxl1uzmw!EsxJpWr9=DeyU+($0x!O6{-qKT+DZ_Wz*lsGPN&KpmnY9FP)3j_rvNjc(nGqi)-!h#D>7jA}Z! zTqW5dYTH894FlqvMMR&=ce2Eu=~>-6YlNmY1{C` zi)ovj1PIBeb(;(hB#L`vclT$L(YP+(o5#}WpASe*?10<3_7Iym+)rQ}hM(V#FpsE=cds^aLmoF4d_!Wp2-sR%u6i z7nXak>dRp>&hJ&>Ci1+tn7aPx#}A#f-NuVieQsMh(RJ;#^xw)DWAQ4~)r2jxj}%T< z1fo2GB|q4kW~ztzerutV;-zH&i^Py88HxGd4jk#LWZOj>yX(4USZQkp?If_9Q)}Z zwTe?hOVrfb8=ilVOAHJbN|%h}CjANr%hFZ{-^ah@>m}dqS$F#;)FLmsNsx5ThffA~ z_Qx{CKwIo9OQGNnLW`~%fxoLRf7(0mC-tw~q=Rm4v?+SZAS#8xO0fq^AU^%Q>)0Ya z2i@Z<^LqP=1mYJAPCFxXP`ckX+Hf9*GtxCns;Td}G|uK4?mCI9Pu)MmzrMNhnXJtC z;k1z{3L+R4pQLK_*vk`$)5)hdkJ-*B0hm{+typecH~=Ad!c=ODu(2j;X&j%e!~~!H z`65Cp1F>+Nt`V-g67$))<>dm+Y%)WJaH*J8m?n1IcbHgRG{M=x;K%0T;D#J;+~WEy z_tx^L5<5P)Mc@6a3SuA?yY^i21fu;I1b$5D@elC{2-s~c=@`DR9s9SuAc6Rg;?;Vr zkqb_{knP2MHsW$;1j-00_e7nor}x6^d&zNvx=`SQ$eR?VP=H7jK=J&y{{E=aQjNIQ zk2$wYoJxnd?nads6{%_+GQ?BR>Ke%i{n4LhgoqhgGI^c9B?>i93WLJ5Z5pNmg19*h>HH^g`-7bZs`vFFNR_#i~!{P+Q?$NN?SkdYIvAR3i`GP?DJEoK$!%@|jcsnQhX zIMs)F>M1M-R@Zm&@!9NO0n>8jHT>t}g#tlxmcSu#K;q2w#UC`N6AGKHvMO=0ecYqJ zMx10^%c;*4;~ZQd9JEx$Fdsd9$ll$`O6L|sW?>YaXW{d?PF6npCtOr-nkRLxIa>)p z_zFxZLK(4!OWBlNlG%Y{5sKx#xpfjl3ubQ87pP2{d&7n5Gf7fRW=iE`Ss++WjBySH<>Z991 z55J!Rs5Udx0_x%LMDs_F)IAH&SR?g(*&w!5#7mg+psnU6pa zvyu5rz5<(?3Myryt$kp?Z4L9dbO;hv7;3`;ZM?j`&8Qi(NxWyS8clDDkxvIbKHg>m z(SJF&6xR(KUc(FeT|m;%R0g21Jk?vKa4hwgsa8f;=Elhb;ap*xP-4)_kBIdn25bv{ zu=n(H!sD`D4M*yqeXN&vq7zo1=aS0e>Ephj5waew9L`0<>|eGXW!4NQhSNtoLFjI) zep-iMhT*N+QHVwlMP_S)RebNhdvysn?4(cDkBck(s67R>Y&*QSeVo6Huzhgm6%m5} zB)){M$TIA@YH%ab-O)suK7rLp9Y*8fbHQfhY*??*#vF3f4X{~z795WMikXK8;i8AV z@BfZT#kZ!pSBb-ELsba+GM-`1w7ov;WChTJE@%u>v8>PiPPNAH#nV|6Tv)_`_!TEZRbeY z`wK@VUh@>a>U6nv@Xc=EznM|RCmw&rgku$~G!1ngXCzZyBR=vT{4>$PKNm|`3U}lk zvQ@kN>iG(<3f@QfyfuAXKFmtT_#;y#|AN_!5Z6~nb+Ms^P?+0Fv#?GZU&>3I&L>2;}1Jsw^f8;bE|@O{1ipk zBL~5j75d`aAu|`@k)Lg$Ofa$~au#)52x1glG_PNjwLxvKJ!ml>h&INO{rcJBtDSun znz{OBR*RoUaoFPH2*x;`_PDs`C8Ya(3vu8b@Zg+)zl{VC~VCD#z z5E!*@cfQFABkDYA^F3eetsIUSU$r$#&x&jzi=37~m3kKOre&?o=4h2fYp+Dw%Bj-` zAIqEYK!j-Bqx>vD@r}Dp*m=C(6y6s0skcpF`VhqF2d9t{AsTP+z+=+S6f}Cd#C~#4 zO&3Np`}m^5W{oBAURbEYCbrgLka*s_5z_b@~-uK+wz|EF!(9w+r9XZh>R(5aLXDF^g-# zE49?i@P$P9&v3pWi4xH~9z=rBcm1Y+{bEkkrs7j`MzvachP#(gDpGVC?d5e!DYQR?67*5|h)j0yEP-v*HHP zV>0g)++?0WVw|CBS0&q8^ucoIL~y-WI_HyhyZ0D5O%7*2Ux2lKo~iYh8}vaaRt=h< zpGU3<)%LI390!SpPgZDsSI&$sL8GFXhv|6yX++3f{6moCzjO|f`D6bSBIFtV@A-rh z#)uH7&xMB&`9!DS2_mv{JA|+p*C9cKSm57af3(37!S;-g2O%zhaNQ0W3d)Zsl8C<^ z7deB_7m+7Ih+9jJ-y8rQWp#D+oi`R!Q*+Z$*34|SDe@}79A%Kr&DjciGUxf8vWfKQ zN#xIHJoQr!o2(+Rf_%dcU1@T0?_8(IBQ?TH9?>+Q1~s?c+X)c4qNdj`2CB)pv)sH9 zp7}5=j5cTjnG(8lvOwgNzU&Xjj86AgH5aP3>%zjq^!9#4gZON?{>{L^0A6+oNN~Gz z<>THrQ%ZVz9K#9tpL}m=X{Z!0EFCGaOFpTlrlw<8caGb%$EY%Z$3Ni6NeqSvK1y3# z+hDOx&L?N|MY(vv{Rk!1#eu@)N-sT!8yp-}MNZ$AhJ_+o>gFGI41Os=1xWnEo!ks6 zn5EZFAEw$>dcNw>sm0~QXz;fi`Ce|QK}+%N8d^%t1pABvOEePJzkdWOUUy$XU0*8Tla(RA15Bt3~e1`(ly#{_|2Di%;cs zPyW+ByZO9ewlyIbGKaDZWz+Ri`zqibTUaeF#Mxl`vWrK^9zW&#Ja#HQ-f19$MXAWz zbFxE%+REBmaV+_%%(c>qtb%WIb8|bbHcR9iAz%r>bt@@E`oTcZwcaXhAs|QZtZZ!B zloUi52tnK9qJqxx+UZJw-%_r#8XzgY5tngT7v8Jk<;L3*VmlpBTCvE461oe_VJA7f z3td*;<4G55XVAH~jl#U!W9KiqZYSOLONot+-s&?9-rryLR-f^^H&7{lFnO@|b#F_*@8ut698bPe1TWTV>_t$|W(5Bd#`|mn%mjA|u%~@@4BS z2REhN-Q$Kp(57l;mJ!(h*>!w2J?8|e<=oPe=rTfQU3Godz7GyWvQ83(_D;mmpoz4blzoTw6V<=l752x}NvLv%a{6&5pI! zJ?}Zk9AnJxY{6|~8=FGrqJn~r_argQ`wkPk%d0lUmCZN}X)ptlw z5QSo;GFRF}$WCysXO5Dn{j6R(o#5SX*=IBvVUbUnSq83IzTEzl?J1x2P{M1;G8a|z z@8UfuUx_SUURinV*1sFi;-LTjB@ytc7HzwV7m8*tfy=t}={UC4cLYwU8Bs;|-ivQZ z^!lBbxZfP{>a7!gz;MH*;?>iO*2Nyag<}2^K}=PtikU@Q6XCksM{u~P96#JN33{!b zqqDTVHmj>S{Pt*0zSW>j&2tiT_u$~Ac6*q68;2tOPvDeEIU_;7Zi&(@N*vjlm5xiwI!JI8Q9IeE<6L z&o-N_t+yTag!J#%;mB?`JRFmsw_XWnS=!+T6JY2E#?AAa3<`{5KU#iUw%)t3wHL{x zkmi^FF{!xinBCBhF)0-lBLl2uDK8$CVZgk>!T$CgIjCJ(i6f94;LQu(J#j+9 zu_3D=6PB{gQ`3b4D~-9fVt8sS#dAhG>+{9Kt`s168Cni<7hVZ5Km(!=B*$jt)+2*O~=}7kY8CZLJ)jVZq2uyZ|62D;qwX4uZjwL2vEIdHC<8LNU zoVzV63p0KAAC4`LGl5gcRwD<+$J(viMCJt`GjDx`ueUy`Y4vxN^|IQofnMQ>xtC-Vn?ZY$Q&uYS5YHFdmrhazzti_bX=fme|B{7G8U$ zsjAvny0IT^$lIRS(z+OBRvp@=Y;1IT3s+lFu?E5b9%VO6-xI@>*o3>ITnYZLt7hSn zLsI79Ry7>(v<=}C4*@M)X!RAo(EjGAZ(A6b0X8-^mBT82wH4w1Fur%~5x6OnGc$vW zopwi~J(f0xz~c;-G6B9a6Ta_gi?{t)!skX&Y2PS*s|@k0W24eFUR=)?z4D6I7fpQn zM(%BhkrWyASx$4-RUqM|336(S)u|5?6WSzbYiLJWPsayy8~5wjUy>zRETlM@w$wy$ z>$l`&{pmJc-{MQbscC5?NwougJ2QOB>gogLipj*Wdgpjf*owAggJ5s6Exti9U1g=9 z+|%%5VnmKgk>biE%Y{pq)@@7MDlWrBhU@qP<(BiwifT*iHPi>4nAJrD7D z9Q02LZ7f)o8@zux-e&Gcio{%}tp<%!%c$&VJI0kGr@G6_2j?$^3fg($-r`x0aUX00 z*_z!(vqg*G0d!Ww$+tX)-e!Lear(3oDEy46`FK)d zVq~M)1CJ>z(`%XChqJ(rBqowgyIm{$`y1s2wrev?8E?+ACzLrx_g_-ZS%vPbKki+5 zdH2aEyNp7cF}rPI7WAr{um@#-b2!h?=n^SDo6rfE-{-Uil*0rOp=hPsckVcDe)fIm zo{xdI{`2_04B*NR zM&fzUR7%Y#5-;LI?h28M88I;<3E{>;E-`1jAp8T~(p9$3#dT?kczeuWraHp0DXhb4 zU@a2HKrXo)r@Fwv@VF3LMMXtKieRy@M%7Jc;>0;iAkdpQ?NG#uK;M3Gj3{2D`8eek zcZ;v@J+i<_wsE_FYI7YwdMa4$jmE;!rMbNY2iOfEf zOi4)@+G;kin(OXqZ;#Z>xk6+5sbb&S>ZXZ_Nt|8aCzsHxsW{r_Gs$eO=Rfyk%+`zA z#uck#KOZ=*AJJ{Yy`y*fQ9k6vAxCY5EQIY9H=Crw7NOpS5Ra3>myTc!|vbM z4J2^{?Kf-1SeoNUgg5R^oY1^xmH}~~(Qoe>LTP|QQx;RS$+1UMH?DJ(pvDLXJ5i`Y z4`e~inpGS_o%l?50+oeA_7~(}<$_1f5f#UcP)aBhU3hpC3Q*0flphY&DwiBOjAE_> z!v1JS8(RE!)7Zn1xVT%ig^c=fLRE$`$S@)@TEW{rJh^{A`RmwO&&0%;29?OtJVo*_7Snh3SJ15(#6LkKZNQrvZoFjrsYQE5SrMcocnLUXTux` zBFLw7h_FRfytQ`6LX92%;|nDoMpdZrk^%CL$|7wB_yL7tel8@0s<6d`%ZDR)6})*^ zJ{{I}M^Ixl|594TG({+&b7WH&Tit zhvq}%k+O$B9*Rb+L<@@9Fb-1O>eTqsfZxLEI#|WTd_~OV+ip3y_Cy_n=d+6;RojPA z0)cma=Rscc<#%M4A~#b-xc7|y(*+#!`wrI8R+^JMR|&{J=J?yErYSHb(?$_jsFI;* zx{zBHIh>Obl<3Eg_^@2Al&JJdoJa{(JLw-lsDDoJyyr)~5YO`&QgB1CGU)I~!uQ|~ z$E7Ivb0<+(TQhtGTj-7&c3nAq8tTzI}&#mjhp87XB z6%^2Y6}i(ThrSf7ZJrV)br1I6rzJQjPq6s9dT~CAJ49neNJtnI6hsLFxelQkZ+!QH zGKSllBE~7K_q#L>URjll&REl?rlbH_j|FUQLcFEaB5x-%U!G4D)UIx1u^(>W={Jq- znw2A%c!Dzsn@mcrdT_(qF#b>+U1QRF-L`X=$WbU7EadiOz0bv!tB{FSMWe~ca;=yA zpxA=yT-~*=S0&oP@+p*)Tix$EP6XD+w3qc7bVcn$Vq3QUy6^Jk-i~L4AI2I>94r>9yh>7LstOYi$YYlTA;Y>dc^7V^Im`K8v+e0w$TGD?7m^dB%B&WF z=6d5f3!6`LG&T0~vGoXx!OzPLEVWR+4new7u&{8cbQ@^wT2LiGB46o(by7xfZ48q4 zmT;c(?4^oP?}MI@PbW=y!GYNJqtd&=$*6Lhm1-B4{deANisqeZ%88NdMQv?ur}-_R z>X7rjSv>GwFM4mgRtK^m@Z0ym9UC8S@CQ8ZgDEuvSxRoTC zYdk;(38{do=79u@(ZbZ!uLW;Gu9j&xu+3*NQLZcrJrZ@~-2)jy{i$zzlZd0FSCo0<1~&qYv-b z)^-x4)615s!#%lg$1x6s=C%mwK^7aAXgcaiy=GkkmD*dVuFDo4>rJh&rD-@Rh>6vS zQ4^indp?^{ToxO<_nd?~Q{Ao?svXg$)+|W1q5PGhSZ zbnXJ&w)xxrF_S-Y9MLZYf>}OHZt7Y*DLjKU+gWN1?j4Z16>m+*)SmT7w5dF5^3cSD znu>}&fp70o=mb&dge!#*xNVH4f3_R4tIE-BfOE}QPNTozVOs|C_D(Opu|3#7mdLSK zMZNz(S=r{!oexqx4*lbde$5TDXsd~vB&FvE+bL^C?g_n~x`Gb3@OZdtKXUPMB@3IQ zhgf>tZs%c_VZeye(=TdotIv8vjmh@A8gi$>U_#;?_675CAA0?Wjc zzKi$$h@JB?;#^+eZ%PL4tR3GY?bzS#pF8V-yI!BcNk@&HNmRX#Bt?40ylZcG)jfa%B!iJ-NT7h zx&3K*>z*1~u+vb3$O5nJ?#UM&;x4@_;XyXKsbFqjZUCE-nZ=KDWl4kfgh`+hKY=SvL^!tCo$WAQ zFLzhPb9;aEj)q>8NA$riJ)WC3)O^9}mhaP)EvTG!Wqf6?ULAhiReIoZ+>wHhC850h zpw^eRnvY96Z2mg_9(N_>OLupI7AdN6OOok!E31ujQFN6f(tNs)uU@@6W~}wf;A5;# z6Zqa8J1$yu_foI{7z%7H6Pehys{)uCHMGAT1)lijYw0HLTb#4A8(xpi>I7cvyo>No zvssNHI5;)>p4Tgoa%hqKih>V1e-}#!heG~di@+M0pR2AoV?#Ty+3-i7da8BnQy;6< zUn)laipi91UvREMJLG&tBZN*X*cPVaP3(rBH$6POy1tHwyUL=RbJrEhdpR{V_5?RY zd3g|9^XnXsFLNA%I^ISg-ga$Zu?(7#1CJlGh*pELN`mU_LGtI0%AvK4*%I_n$o=p! zN)caCup$Ocqoix1RCw8g4}QQQeiwSb5VxTMT&8TiYX~gN0DFO(bp|^09`cbKdd91# zS}xC05-sQe_&UvRX}Gdg-`lIQv6!hyJ49E=j0q!tHV^B7tBG7+re8_4mznqk1m+%1 zB(v>j(0a=b%cRq-q@Y+|#F+$U3kt3T6WUFvz!#RyPt;mX(#}tjaz~(FR!0DC`*((% zs*p;Rt{MW$=MKg4;@4}NKsu|jJ@HDrCQR3ROfGs`&BR1TS9csVeC@aN2TQiVazKH0 z;8|Clkz(*cDsUb&G=}yzhIYy}9DXYr*g_mm=At>qEHxfC1uH32W(lGIl%$+i@hT((OrGw$d z+i#%J51ZLU6NRqwY*+Nka~At}*m=qvWl9psSfY=(OH3r6r=76Bcj@vH3me*_E^{p3 zNOfp$VHWMU^y`oox0m#^sFIE#1bw3LajCZKU3O#+Y*3aW0W=F@B0&p%33bCHi_ zMv^H7ZAl=#OUQY_An_U=zuCQ&kVG;r_DXfKebB-$RbZ7Xbjr(dq-M3Aj|_wD{v0*C z#Y9?VrOU)bf>{f9D4)k!DNop6L0I(e4UOUxeVu$?1MT;!5d#ZJ>FMA-N=Z)c!I#>T zJDHb9IlJJvRvF7NzbH5 z2-;bS$`G&U|Gw&EN^a6`61|IPd824f`6Z-$I>mv>bHCJGn1`5*{~wQjT$aF7b%3dj zWZotSy*yFdHBKwkuYQ?R+MaEru6(UeAcAZ^tS+QOGswP4hy3fMfj`qcCH7yfK>qQ0 z{wS~h{n3Bnb91P6C!MmJNN(}rWR{avj&e1e9bP*erFiow(~$8C9}fA@a zN2dp(hhKzJ0?g+My%sdO24yTOHnjXu)f3P$S}s|+#OfN)Z(4JD=psud>jK)MsXW4A zy%6p;$1z%J>a`@Gxj@p+t-bjcXUGuuuA<_Qc|#%rbHntbvUwv#K#!8fY6BqbgNE!j zYiLPHiHZHFw1da)j9ydNX+hn_E}0u8U6Nxr<1z2e{1hqcv~xkW)!SQG{Tbxisw!SB z(dDggR8{%)x-w1!!`&V*7fDt(i)KE>^Lig*&Pz#&?(FRNN1zi7jg8ScI?2~MFHg_X zCxoytqJ^QdW{-f}(&Ig38iV`mOrFC~B?#`V3Qsgg?(|zwyq(nQ0TD$?YAOP+KzoE= z=Lz(pN?set%q}dXWDXe!j0r9l4i204TaSuT+kY;2b^Eq!X6bqHNT`w5io(6f3 zqR2vDfmL&ajcP$BgU*ZG=F5|L?b7)8y-wTh2LVHw>)U*=#XM%G$&3ayl>>Zlzu~Da zkNud-wyU>vnoAsEXV&EfL-g+zg!B5S`|U$RPT(>Ov4WDnbIiO@!*=@pO0!+8N3^h0 zWtl_q8iPYw4o5TZiWh&Gkbpo55N=bnX&z((8U2q=GSNX(5EI|5i;5&*x9j$P|Qq3?STLbhULi2eXah2yX zqu~=WnLkd!eD$`a?L(}1XSQa=Ss(mu$M(4>C_pOPQ^l|&%ZBrH?J$3Rh@+n6!b1B5g@z3%p5@XeC`Pp@TBS3WUMMwtQ7j1 z@IoBsR;H%6J$F^++itz&%tzas$>|*K;j_G~F(7Yod4+bAp#1)$FE^fPCqxVFd?%+W zX!XWv>qeNL-%FEERRDNYq}h^m{Mg2^nl21Z7q?D6%a>s$4( z;N&--y0wvWWCT6l8egb~YBF3u*iL)1hf2v6Tmq`1`gs zNA^uNhHA)j$vY1CvXptSRJ*_I0^V&FE~e;dy!NUUQV<6r4UB*CJBo|d6=!lRR>+@Mc z!ZAKM3C>eU8NxK1Wj@XzmvHxBg6Dv#L&ko@A8a!E^5+AAR|qBHo!V32P7gKy2DB*= zE9T53yM?XtTgkb(D^Yg)ll4rQzCrD=-a;j&!*7qQyeLV6Ru?r{-7M(xlw8x};?CXI zdLl&2=(Hqv$9$b2H%^P@Pf3J+9h(ftL!BqZ?7Nltjw6sWr_=d0jHjf86*)PTk{8Fs z#K<^puUHLkH9-T5f5>Kjqui-$uIDurft8vx6RYRX$3xHwh8^j#Pp9I^fs;FS8w^yWvcw!%Z%1-)w;$N*23Oe-rZTY8-NZ1oq%ojyDJvYc11 z4iOEiwq+islG@h?&8*#&kWOSsxiX(~3Doiw&)m9ora*`4pLa;C{z%_|3S&w zjR#&XY-(vi{zm5V(yQy9%h6BHn^3B&Hs0pett;Dh5cA5p2vioQ4>f22b)!&OZDC8uAipU4bH<2onol|F2* zZr=hRE7K*un?t7NcL@Cr^ITmfp8-`fuErSieXfx6BzzLuF8~FDTo3+C^6a!~T^SjP znIdolznl{UyOrm5F#8jnnF0H8MF^2}v_{dYWLMhw`xS-pz#yivkTXsOEoH&B~;{}|;>+P}ld*M*-SKNq!SG|&h zoub!LHf)!X{JKg|9omLAGNWE)Sbc{DPh;~{53d*9zxcQXtza`)eph{Szb$^2VqyQ| zr)(_P8c_t8T~{odZ)LK7v+7BG=)Pi<@ooo+>z)yIp?FcyKp#)7Q#u7zQsKgS+xyvx z!PVH)8YN0_g*5LWuq6$H9Lvtst&N8}uG`cOHx`IVf*YgD-xS%VG|0#KXm4-Z0_7)1 zuf;2>d35byy^@c5>&|q}njA~{_!QQV*lq;@OSnF;YtPiIuB}0n4V-dCWn>EA%V{GZ zx3fP}Sgv`!%>jG=tnlaDmIn2LVx57aTpmN~<>w?({!e9}Q_{}U>)%Y*a9U`WIY=)k zNL&imP_pl4EGk$&(%6e);~SnP_yijhyHv)R7QUOq@#w- z0)IoZyzn_57yDZVs40Ckkjva)m2RR%BS)*sAN%$USg)vMY1RQ^=hx-RnT4Iu=)p6-yX9`v zQ}MZxV>w5enT6tLh~MARM*OQ3UEi>Pzo(EDbwmnHetl8f7tK}G1z#s7N*oe@Y-y<= zFC|CY)D-;jg@~SHM@M^6(JuDw`o+b7uBXTatK@!XZTcqS&+~1z zG?dDuo2r*M+9vZaemLo7HMbG{NPxX@3QdL;x~K(x!+F3+Yetuh22?gcV=h_^K1Wd& z%{{;%0u=Y|_3L|LHL%MmokChsG?8WN!*UDzyG2L2;`P$f>?aaUwl_Q6J(gyJ-P&NB7FWFO}cw*Nrtv~k_e8`) zWdz`_DU1v8nE-*ZUQ5P6mR8kFN2+c~pE@%ZwBR>9>lR>t2sbX$AFmJOx196fa|CN6 zY?LgW19-jvlN5=`qtuY-lGoGG&EV9e!ZxH>kf^?Zb~N_vZ%$*Zx9HVf)ReG}BPGY< zrkq9#^tJa<|H|i>c?~a=-zsYE25?u%z$c?v$0;W>bE83{OseS4>({wDyBX^Io^^1x z0Dw~iy35cIiG=`CQfX>MtU*Vim(qmVdTxtWcyG6esU>}ff8U5FZMQvF^wPnqKlOg+N~GX*X*Y+4sP*}ikprbwlaVS$lKBr5rW+X+ zf-P%K!&|}dn|QZ)4gHS$xsaPI_7!9%CQicA;}HSTFxX!#_7`#tT0`Bcsg7CG;oJwG zR9m99LT7`LKl7Y&9Iciw-`3u%&}9AjC&As1uT%#M-zoYRaHe>Ygy3zY`t7Z4>g>IxP-*Y^0Lkopg}J5zGnLR z#%j7)a0<6S^F$wXN~Ip-F0pvPyV*XpxVLGAF3nh{FDu@1i@uybEn^ZqJc-sX++LA6 zPvtFHwAQJr?bXsIj?-5CONA{C3&4*l#_j4b z+FDH%)|I3-5r9fg9%=m1L`HS@Kbo=Ie`8*@sA(Y+?!?MoR%-BBUBiAG=Rkgrq1j1a zu}`dq)<5nJ(Lhzb(uO#+-*#tGGx^p&%I!IpJ6;Ox-)qzpqMc8Nc0V+aA|7F0oNo>1 zl84{-2+3EtdrwVjJFmGF*Kksiaiq8f)-A}t1DfSMFX2a1ts&J|R~TV1^jvt)TaiFW ziX8sHSR&1C>Ea_DLiQhF6_P=>@C{^(fKGj?t>DKU(l0Un<}9Qm6%o8(rurq;Bc1Ip zk1$c6xA0Z-s7;i(o>-5mqAE-Q152E~sk(&ITQS$xrxq6Ek{OsEt*x)uJLl#}KG&dM zN(dnFknA6do;js;Xqd+b8PQYy1i`U*3(KAsk9Bfszv`zFw2gc7=I$YJ8-b{V1X}h_ zVTDS@b`)0c!gG?RP4yXAC_I3bK+Zw|$)Nyp-$$q|Rz^OI6Ju+u=*`vJ*Zl>Q-dW!(z;+f&#rlG<0{L}== zWXnS9p0TrAr4%gTU^_9U8w)2+>EECL)^6L)+Up10^EuwlMGNbD!e#LV1v{a7`(>Jy zBPl7N0(e~VMtSz^pPjFMr%*^y9 z5|;3Y_O33w)hR95v=1?dL?bsyObxyDujeJeQ2Glin?nu!c>g1!rKwUwwUfN~k;hIk zl4p`u_#q^pw!20wrFqK9P1t;m$|?#gEE*TpZSN2Hmew3ByZcKIwYN7l9CO~PD^q@i z<^Ctk@)?imG`i>R`X^OL6K-|x7n_9cxhw`;QZ1j7DEBwM32E`*p6b(5$LExz%;^^* zvRei1^v5YO9v4a2;?EBrjH)7D4s^K4)$-$Nwb$&LSClNB)0QVGGnt9!VY-q$QR8U4 z`pOBh-3YmbX$pnM;yaW(j8cmSr&~3tEJWp=9pb-vrUo~kdR9MamOtyY#jG5b=muzr zQIf34E##qm;9I&J4WSg}^NSiU8T<>!pOTzEZu|+{BZrqB>a(0rx^K=UDJvW2s}{&9 z8?D711Zxsr;7WC!aR{7xLvAu|W7_}4B!@--?x zB9+U3a{mX|)&G_ygq(KGhakX! zGYdVaoChD;0JI<`CT47(U0gIV7Rs@h%!k0^FD)>YAy77Fgf*!AN`OF+tM9gx*3N#t zB313IkvzPH2j(J%?`Y&0;b0&NeGFEfFMu7ZMdlliisx-cJ>xw zT@Ey3wTg7K19@c(?&K|HuWd&M7V?i_LN3xZLX8EDjGUTAL-DiW<+YwRg+8Gyqud7( zun%~vvz8<^k&Ws-kG9w7=Fofoxxa1Y;o}koG9i5yWRaoF8)9xs6d3izCs58d zrpVHE?w3_k3b`0f=|N|JR+@UL$kid=NAS~lA*_B zQAE@=DCcg_2yCwxlmlPDdMD;4j=V^}Y1K(0qVb0#k(YBFs&sY$22_>Lq%hGE5E2t- zs1?c@iwd@mo2M&fpS9hM;IjbmTf{R02<<=$yjx9ldEP`>&1`3Mt*z?i{)NH3wkMBs z1wMGc1h$(!6KAPU8M^i_4O}rUsz3+aj+dKb6^Lau$<7culJh)7-zi&AmRa>IfvB; z?NBd3X+sMe9q2L!imhOFlhuu&z(b2l${qZKyIToW8il5V@77s*%jLhQJqy~^LfJ*APJe?Tr*kU(G z%VBnTWpFLS;O?4=}1k0Evu1571D8>vZaq4JN)~j^AggR(Yvc# zRShZbiZY<|-)QcTbJ}bBr0FI04GXxVD}*7;kt0h5RU&fd&K;VcL7eZdJioB8KSENz zy4p?=S9d-=71*~kGY?}|yS1Hy`anqoeQL?b%k1VLECDT-)zF@QWo2b^b2BuFaLTtk zGJ{w&jB|ScEst)fotT(F&I712?uN>$`#CL?#cXZ~ZRf~-z% z53+0ey*DMQ%T9LSuCXgnnWm!RWhX#|n1*ICGBWaC?ga)r7)HUp79^&BsoZEQ;J|Kr z>bj~onN{ZH`0dk7skA54Y=~~MoL(STmbXIRyt7~Fwf}DPWO=&5e&>6f!IGqrx6j8F z4`d<_=Y;+ZWcms$?J`A3IURh$?69!|P6tn+oSk+9AqUVj>Vy`!y3`y%z|ars0Ym|a zh2TJBQw=aw*P_p-CX=o$*vgw4OiRVT~rqu54mPJA!F(L2#P?^r~ zhYXimeTAiJies)%H;nYRKa+8IZ{Y4p6_@b?qC`^m98{9Uz%Ko{1%?v|u(lpFTcIt0 z^buI>>3O_-IWQCCgA%S_l2``}{ki=er@n6M-wL-v%%~Iuz+lO0;Bgnwp+0Er%>;uq z1oSlPeI~)a&}&pj#B3CUpSQ2j!03b}U;u?P(hfTHuBM9?&w5#kRvTWP8nQ{76ik#l zsE-yc<5+qjX!JN*Al8nRmGGwl)1mxYouz8gUHf+5Ng>-JHvbcERUz~QW9Xw-aAApQ zjFp4gwN2^ZMb(+JT?HV#Ll_8o4?CbS@(Sc&HxkOHVt7Pdk<}>bicAIAD4BEsipJ-i zJyCCNGFpJ8#_{bxxhm)0mkMPcj}J!s1u3jb(!JHA9*F%Ib%$2bX``q1GYdEM7DUhU zN1IRX@UQCM^RjZ70O+gSNy%1KxbG1F#m*-XL>`4QoA1fxvDKmZxx2(Bm)u>w*izJ6 z;O7KM5n*Ab(4~>y*X_;G8jc$3a&le2LB>GfY=FrmX}M3YZr~pCqc*u<+B;-7^Cn#isw@b8FH)Nl^6vQi3c2y-XnhP`puG7G(ka@IFP zp8Jp&h2=A9O>qRJFX!{+@Ke^ zMEUbyJM@|{Fh6T@k^~nIFNyh_!60BjnGY#u@W+W5+jCE@F;t|*nVjFb|KTJ|c9weM z8po!59w+XX!HRghKqkchnn|=bpr8^asqod*AL`YD81)x%d%FTItHA z+39J=?dkGN4X2D2#h_@7-*Q~i5?d4h-H&h#VH?B?QImsYjW(3+vlq3ZsL>sCC5YxVUSj#mG7WUX7fCS0gJD=hSBmr+04Rq zj(AT&gR1aDo@;(>^_SB%)~Fmj3_X7w*!bu%_J42X{9RI=6YqBXI-?!${CYRNR^5u2 z3B%7n)f)Xp=w88FOSS&O>FFU`bB^fjwe6o>V?eR8Wfn*dra_*`hbR#$O4v;qE3>sl z2Nv!fMbXij$Tc;Ib{rX@HTjNsDN0r5>(%0G~C_vf1@)Tb68mueL zqoYEGIL8o~UU0iK|Mf%843Uo8+w@VJ{^Tr0V9sNJI2zPm{7_>KY-G^v6;PgKM6rfG zo^9?ewNt%b6?JD+UjojqCnRE;_so63yZz&lzFa*!8dm%1c*U~i`UX(TpFTYgRvjSv zzYdUKm+FLNFtdhZJ%P+FLy;ZVFH^sQ)~I>HvRGb()Qx(#{Q;(ZdF%S*%F=)-sjod2 z(?o!nR{)!3@o0ctCv*{*STdOz8D&wdWVUv8DyrUagCpN^xietwb%q}`8Nm(}D<|-h z+$)DoyWie5My48(U&e_WUb3zd7LEFKXi+hNo@p+xPuuAwD=BWmcMxaIoZ3sbSV^I^ zJV~oP!qx1jpQQUKjSZC$*my>&L|?>nQt6ja`pnDU1BiE0dsZ`X5!hcztr7nW9S8eh zB8mUj-Pp2r84jGHyF-H?QTTAz9iZA!4zA(7^;V>2|gqlS97)nXJ2yZvWo1UO$IF0~Sdv(-$_SRC< zOx)-pRIMx`Uack4-lNfaG#xkj#BAOYRcGZDlSnzMhdV6`7y3ASoGZknvp3soJ_?W< z;7gqEiWupgzv4wIN}``Okn|`rC~*576wAcnee()rT61q!@Z(&*bUR_>id@AB?T4uI zA-rgYQhc$a>6a>S>86H8%*NvId$>5!}sex(LO^t&uNBdEuNJ$|K)^`0PodEW>k-{eN*xn{jJjj zmrz&oG437-W)aWg{mLZmMl4?Aa^^bs2S`d>c(0GS5MMkHs-K}F)mf7LUq|~z-zO|m zaSn`|U7pttyPuP>hKH&cL%OcDcj)&jK8b}(jc$(7xVc|37I*BES(0;uh7l2RhPlN? z#gyvq%9}Sa2=VW+CxBM#4c{5I19JyLU%>cdomDmDtHeXkg;RjaWOK5XU}ujqntjNvHeMo58Wc!S(}{mEtCh@_pS|jKqqXI*dCxO+lY^vx z{E`dYbVzr>If5g>8{4Z`ia7Iz2~L)4p4Ah-=rd9mP*?CUXI^1c=!Ai!w^Y1mpr$M8 zXWu~_ZK+o6L#Pln1T0WyeoqxdzB8V|>x6x!$m4Znz`Y&BZl6gY}97Rc1KR6N)9Lz++ zH~o+*zVyURMV#8x{?^JHjg7|(e*;TCQ?GDVFBWl#l;_|2o}Ug)F5&( z`yk5;0@PWKyLs6t$&wdSoF7WR1*iD9Qn&cciK{3A?Q0a0kD!(%zK-lITm&Dg+VrT% z5<-t^rm?px#y~oeMTNi%IAN_+L1h6`zK>p`Na<4DZ){+rG{un9-^r;QoGHHC>MKOz zQ!3eaCI&|TW?_I&riR93rO^sAI_K39^`j_FBkqE}boRHrj-NCXu)fHVFb+4I!yfb~ zh4;o-ZAr+9y@TggMVw$x0bWIIt;#efy=y4;`Ic|&I+n8wDr+SU7<((j{`WoESqM#n zAQ28qwzBeEn>70FclU8H=AiyX=o@8?fRk|qev8@{6IP20Jxa6k zK;;nXX9DC$_hRAy9LWDoWxss??zPEiy+3__RBlZCQBC_zMXLLq{r$`=cVMCbj$EN9 z%w$0LHvb5v1vP0f$zwI>u#0nl^y-RF9vYU!!fv?IFB1 z`udv*6TF-c14Pvv+8I+`LoLPv7!yW&GV*BKXX}#TXj++fiyKVs{zR6&^Vu?QvA=(F z!fW{7@~YGQE|WJW`FPD$T6hW^e-jS=_kPxdNy?sGd*wUcV~8EMq=IZ1$Sw{qQyVZb zalhvm7-jr#j!;OZ{Db=o&`Gg#$moxMdU6#h_I&(f*7W}hQNNGz!2)t$?J|r=bZof859^lzNeoGjx1bI{vBx8%x*ISs?V{v3H;lWEdzE{IoXVSL z*JA7i%q-Ql&3XH!;QYZZ0E_cf9b4gd^~3VqYoB-@9Kn3r|0FKOU0N^H4uW|`B>(}c6|82#>pA?R^w`Ip(3jB z1>mNvTs_Yr?*K22qeqW6vqHlUc`iBdlr^y9O<=^l-fH@sWwF`XFLv(>wpg z;;xnKfR&dLPy5Oux-NEP@9CL#rJQq_Cr4#s$&`robrio61u^duJgPsH&QvJnbL=nf zk!$9Lfl`9Jkge0;c=Xozm1cl_44cxM$QnG|BVR+u*E}WV@ZU_{7K@$TRDBw72nzvswbYx*x1kAIwhb(oK>S{&IfB;xajbEnkc*Hp7wLd}sH zQv?xBl0^KW7{ipDn9uUXLiF3mV@o+#D$w>Tawc@`$cKeqKg!HWRy9Icgm5^&_#+$O zgJ}bBw2}s6wI3gm^5MrAT5{x)^I4}~{$eYF8ao@y^7G4^(KLft7Ac4`%EM{}TEgg@ z3*UZETzd0;!KJtN(t4{#5X*EF^tW&A6B6M>*RkWpz2a~p4-%koN7z|#@ST}h+T|5u z2>Ojnv*YV|1{tnUWUKfjX)gx-pjD7={#s9e=gT2E?(6ne{IzjDTY;!2PoC`V+Pgg^ z;P+Vr#XR&R_xJaqEjjgYRb(CmC~{+$4`oWqC?H;&`-EDE0qQ@2;lEzlZ)a1P_oQlw zS=YSfj=e5;tASAt%$<{!zY^q6;^gS)(mox*WngJwAORxgq^2{=+dTOJpVg<)x^e|! z(ijOOjpD5hu)sbI0?tFkXN{8g_l3xS&X$stg!}wjX=$nWtm<_1d0gGe*V%JOd;z=C zmy{V41F1nl#7C7BB^t~Mir*w9-BQLu%1gL(x;KjyVY1#NQ>@){H5$RRmoLTFdi~RL zR^O%mgw&{T%rafPI6pOY`-<_@)B~1_YZq|VvcBG(X;89);U)MOC|ofnB`1eT(YJ}; z-t32+2x@!!lOR?-bac!WPU5b;1XtEqlD4MVtJ}51rpF+_jk#*Felq3t&@!-p+4?20 zklieM%~tcpIOGRcYpt!-y92nrMuq~vIY%JP*;lX7?|YL<(HekM9mDw30+jNl7dkDO z_#MFaYkd0KWl9Tn{ZQd|N>F@^PBo;>R;fDZR2h@1D7O&_LI6e%`P;Wy!T1i`HbAuk zb_(rQ+zuls10uO~E4K}8%}({PI+nX(Geyufjx zpl_fxt2{mZb!vm~se^NkTyI<3$eQi=0;mdY?RHjAzz|wOpQ}wxQZ_cy`igZ~AF9}k z6p!Ok`uNqeVHh$f)NN63s=&@Gy5qIO% zP&g`XCH|J4J}^zmCmD2%cz`M7*Pn~aaF_fbPsL6VF8Z{vF&Va ztG7dM(5SzaVhZP!x5&3Uk4dVZWheLjQJW$DF#o*Fof5QQCFj!H%Ll#FkEBgef_9+K zVrK=LG2q{NdEp(^Q5Y*yeCR=aCM`L%qxH54u6J+7*Xw^uXsC4#=9j@d*&m@D|9nSG zsr$aoCn3;856=rYs1f%D^rMT*|>L;{wf7utRikr~l7XgI*Ojo4y0DM-QV>s7pB2=^*530Zsm zio8x^-WA2F{M~H^17gB6oaabZQhPjn;e~%+Y6e4Pr4TUQP>}tM&SYWl?-*B1m|U`s z+$IRQU9BooO{{1Bo$LAgj{r{=Nw;rwB=+H-TUQje=6MMA2|VH4KkJRvd7S!+--tID zU;D#M`fqFW>rSW4d~zC1CORz}Bl@CW2S-i?tD#%=trgN2?RyR&9Oj_=9{p|tX-NXf z%o*q?M``%K?pBTbB1&mT|>O#;BUfn86F2 z{{DUeND$jxkd85ORKqN_rVuu5Sb#v2gE?E!@vo~LxmUmm5(aS01##fHix&gQzchf- zQU#d4;VwU1+vbhTSRkb(r@+5JqxbP+H<73%oytqe2PA0m=(m*uZ#lR3zh zGu`9q`VsFi!h^+wJ>jFXMSJUgf%@HV13D|%x!sWcHvW~Wpk6bjTh-EXgQ~0RF;6y# z1IFNHIF_HD4h|E=aaCM;(({Oj8yo39e>qKQS*`NQ%7u?-6=Lni&516mk2J$ z*f1E3U@yE%rUX{&Fq|Az=pEKyZ#Oc~^u{e}j-Ec$i4pONDNU93FyUtE0G?E^0adJMpc6Dp9 z^;H!(3;W7~=o~;ihEHE|DTGvf_3C~_g|INu8?Z6@T>AtrKiD8XvfN);{tPa^TU%R< z7@ufoi;ZwuhQMSgoVd~&iqU|n5|tfwAdv| zOjM|IFYqwZML-T`Hn@B+A1_t}h91Ng6qtOxmDxp4kV^Oi5<0@4_~x*PF+2E5WX1@H z(gH=M-qi%164tFqxu(UgncH)gR@Z_zTR(2Quq+{ALQYya6pXg`it8ttRKZ`kwY9a{ zGyLpIOAE^drWLXwXey}tfw;lZ=;U9(PtI1CO=0g$yAaqloB zMvSZk)(tEyEa-s)SwoPbOgk%`Y zZwgt&?JwYU8-U^T4uqOouUN^ldJKJibNC{R4gZP7- zOIb|J46NCME~?(W{1>uGlJBKR!T(A~ql}?AK7WELkpJ4z1)o$&KAgJ?KjHP-_8MXh zFal2bM`Y`{t3m`$e1Tga^M~2xuUdtRtJ?-)2&iLuc}Ync48l%LmGF$j&}@MXVll>` zsDB~z);MmTY57dc^g_ooKjM&@Q7%^;Y!UKUh!bGr44gt!h$moJjJ6(rU;FNoqLx%s zql=3RWXKRz4Eyp+QyVg?fBk(wsepO+GWDcEo$`u`RyH>8KYh|PF^Tp_PNTd8OO*aG z`L$QK)zu?$YdJeQFV6X}a+H)9#+R0sdnV0vCX64~&EpQO4a>Gx~{^ph9tn=8)%B24d zn|VQY_6O1jKe>CD;B&ZwD>87;6J)>e*x*$OZZ7J0hW~&;hM3TN8%*%`)l{#d54{+F zA?&QI+ab8!hWWL(dMKq0$-k;6XWujcC#i08{oP+E5&w5qkmkc5XfpmD7QWd~Vxqi3 z{4dzgrME9sy!}foe|C4>6q6(Q{r@ON{2%^?59cgJtz8dsE&W*t>md;Rzq^)U;Qj() zbudC492iKaBmI^eR;Lvg(+dlm^yKKGGi9VO9d_i7C(U(r-NrhO*FC>}UV>Qh?%k9Z zzq`ebnoYI70^%jC12C>=jNp@#BK=x)phy!TNl`@i0J^9qC&yv6pvJ}at(4H*1*JE5 zP6xUGkM!-e;4l;-GC>Xx#s9Cp?~cd1egCcqS;@#qW>&WBLLn<7d+(i@L$-fd&v~B5cpt~{euJ*Z-u9Xi z^gtArm&?igL8wcV1nM8a3J3QANj2(u?vFlW|2!LW90mMj(>>Nc`9;lobds`FNaF6! zCIp^gV#23I;*MhGP~d)n7bPZj8|?|+a(`L9;z&psR&d*Oh-`}~>o z+~k=)dfCnXLFuGG70e93h3oHXYIGxhIju|HcL1=?=!Us%BJga&Gr@hUOh1a@zR z4!)r-i&>G-EtzznjQia{$R`}nk7`LDxiyUvEV1dh{r?M7msnotf9s$tEoEZaH@O2r$M5j-hyhtV-KP5I>ht|tY41ww zd>94?u_n%#x>@__h8tZ(KVjKZD;gkC6D#1NqN}S*j}JO21NqCdpmM~($iR@EoDAln zDU$4HF8uh)(9gdPiXKN%BaA^5UI+e7fEi#^hY6IU7#VZ=7Obq&_V@R_yjTL0lu&?% zabV!OA9h5OvXaVlXfTj_+c|cMtS16@P~)rWY7c-k?$WnKFt1z?KKTbF&vV~EBe366 z*awhdSW!}iQA8&JTwbwQ37CZRoHshwAH-(P4qid84ObP_zV*X658M8nkDjSZ;s+Oq-2M!pQ zAXG57X@~?8BFTuWIB3s=DV-LEOLv9iMmv)`-jU-X22P?9OjQ-^h_G#-pC3;<|Lgpf zh`GCu8?q zFC&{oy+cViJ(t^ONfs#n9A^IC?Hco&8nL(ijVb(Zw(ZYRf^ixrv^YqTpH)+XU6vq+ zPs|Wi?IT0|YBVc4+RdE%2rmO}sqeF3xPNSH0H0_B5hC_R_XLB0{jBXek~T|32O{5Q zL?@$%Q6Lpqr)pg!R8=Fs%v^^si5~wAhjHVFCPV*mzfA$}BYLb5!8hpchXyF&e<*zY zKGT23L;#fG6Xn6~$Gd@^$qfi9iCWz>PT3`Np0IIr6eQReO-&a=!-=n7 zgFa7aL(aq1KK9Mh$|@LJsZ)3nxDkNMQbkRz!2R$5nxh|`4-Vlh1o~#0oG>h))n%^S z`C|w90oA~26$YyxNg>cn9qb>L43L??ynGii5^zMxey7CJzj}@{?tec;`2S%IFdqHQ z0{*`V+&Zrm9qeo}>OK8y%7ShrsFU$!(SeTL>O)cz5U~kF3N!X4pO}y*S!#KfkU>d) z?{Itw`V(Ert3Pq+o701CyNl@ccEBLrUJ7z4D+l|#p$NAh3w<3)auMQKFmiF9eMtS) z$rrKZ?Csqs1j)CsfyPFuIq8NcJ@XHXeT{Eg8>^uJEDI<;mE!cwOv+X$;qpa zZg8+Y{MPyXI|ng6D{Dr2diZH#R^>44KRo`#I_ys(B%m5$LjlB#2{|emy?{Dde?mX|2R5o z*Le9WF*Ub?v7&UA^5(qa;@w(8-G%vi#j(JPKQ;r`uA|2DCDL5Xq4+}g4^5@N>RNxT z)|h5-POA0un#rxuSM>i0A@`46hVCqA{Mlj=4vyITmXF0x+8PsM9fqw{^AnJsn6x8^ zwrgyB)V1QIwtv<5kL*vjJ@#XUjV-@nZX{$_s3`4g48p%09+78dCFR3$3{;W0QNYM? z<#Yj(a_f9c!uscTc%-MN6YEO~ioTB!|6`AwdXm)#k=VnBVLkIQCgULX`To60*dMY8 zL{TucD58IrdW#lDO^&X}e{S>pQ=Ir4cT{J^njj|rp8%al@)c022z13&`EOMcnXt?? zh>w!~vuaVy(&ku9h7Zt2!hlEYVM^cs1w=&e-mivCf2J=ciWL4mC+ZCU6p@*ha{8GX zVL}jW{-=W6FcH}&ZI{wAP>jSnZgGS*qyN;J_OE*>!QA*Cke|NJG?Pn545yH`C;zTL z|NXBDAs9o4Y7P-$AfP&MlDdrk$lz6(iL)L7sWvF1X#i!rq~t0LB!{>^($N_P?WK0X zte-&0DXFkmuZpzNVfN_O^QOkerpCtrlX5JqK01kcU@m3S8rY`Q)e$WwHWn6(%gd}x z_6^7|1tXi(0XmsC53WH;!k6El=Ra}g;;B`xHA80U+G+y^tV#5ur=#h`c# zlB};ZZ8SN8!Wl3$nYx<9#KdeBSRAMtV0al=X39>y)M}gD7L9|cye3s+gCSHbLRz0EL03B&68La=A~Yw5v>VW~TUn!qlG~hEZjc z6l?F{&4+GmY$QKRD9?rD^ySM&7<0WW&~HCkKPHdoXLSjL6@oUbt*yfY!Z3jV=G*`Qj2E(4%*`1%>2knqkxGf{YeHk_OUB?SeJkDR=`y!ZURUZ^D)}7p8HZw#fChpfq{%KaG|ZGN3v+YGnvbME6AY<`5`kHXFFHWJ z;|PPhF|3>-D?er;YhmH*h8uDtGb00Ny}B|=zDtRVzhLjv>-`$^${EfzSqM94zBtkodrr6P zxHJCAt9t!Ckc7RTNJc?8ImHKq)PDM<{$WOUpg(}Iy_Ca8>5^JoPelm!tIrecbudEG z^gxB~wHC*XkN5&vKw)G(0*r@={)z5;$7sTn`)j-VTK9+xMRXS3+>^3{)^(A9-98f( z=78JGqoRJQEPz~yMJ656oCc#dnmOeLqGYi;i4+T{E!pM2eOs}0aQpa))K!|~+-8xX zMgn;V0)jAR=FbFr=0N@2t|#Bk5rd*4E-pUVIM03=-FJ}dwN~Aybg?i$c7K2W;5)_* zHJW*r3@j|+ZYu8Xpmqxvg>ifHw>jc%348%2wJ3Y(mBl;1uz-xcgY^2TVKG-XHkS-; z>*H>1Kfk*B`)qgq-N8UjH06C9c~(;<=~fP_Hsb(NZ!lbe7ZHB|IuFLu=~G{{?^nBk2O4eFVx;mJGGr zz|V>b3U6TcRkwq(%87QBR=iFc02E!wcm-N4hzgRnqqm=8qTYG-YBom+SLh0K%e1~R zuX(JjIZeoucP$eVU)YwL5O&tv>g$hvusH{k^;tvK|SE_>4GOO&V z6{$cfax`m7I2E3eo_a#Cvt+E8dM&SzFx2*rhQL9vthJy%mi_(Px1$gqz9Iw7nH=El z0Ed=vd@pQR6OrXWOe<7QAtV&bSWr!pz;}(8myM0Bw`+<=P{S;-J52u#Rw`7Nu`Y4X z8iLoP9x3VV>jT-tw3BZLeMjY}j>sr2jR%Q$TU(gZq^H>JTf{c62l;gp!r%=lalxmcoe3D?y185PYsJIv+_NSFW_j{y{rm`C3 zv>~CipKFiosQ{9|2tQB`p{a%~E*NXGxioa#EcK)T=2-`q#>WjD!AG1)1*N*|;^N{Y zx+N#Izcf1-?kFWJ)~Mcwkl>R=k9BV*B@reGjgQH2i4#cu)kz=$2wF-Sv|S>w6TQ>4inwM0kjT68Potky>(P_#L-_~^2!N_gjFta( z>!a9>P(dYo$vPrAJ3YOM0u&Xa*JER2P!fTf1?m}(xH!tWdx6dctEa0YeSHg=EPiS~ z|85NY9iGCbsRBvw7*L~tZiRpVhrrMCn~nh_HkJ%y!vUO;?SpCQA3vt2MK9X&PPQbJ zl^yhE8D4d*bHGZ4mN+1&WYF0FY!j@&>M+OgIz-|_1F4&P#2LG~uU~B?CF2@Xp@l`# zQ+h{*fPes!E;$<{UlY8e_g0LvbArxnR}JG)?M;j0u7<`{BrL4md7!&q z9)VCET+7u7;{@q=h44HZm>E3!^qZ<43vB2eK=!=#!m!Fk@R~_;B$q`v$y@~1^wbn& zc1MthcHw0b5{*2|xs{d7Hu2E#Zm7H~qyJ2=*s81@L9n$cty(|7ukMFWA~1QNNpw)a zp5YjpxblA$4i_C$2#=gM3Bb5NO0Nk-5_DLi=a zz}Pr(z0l}p-5*KildG@D#BNmo;%|fwxac)kM?LMu$4Dnsy zQI{zIH|yX~=A8TpIsxYwS4hGUt=> z2j?HyVsFw=V*4thox77qrJkOOn-mh3GOm=?9o7;XzF!%YmOb$@^ixeH1=j`uwtk=+- z|4NDRfcH&8vm*luZQ2^BVx7uXFMMG&}~n*%Nz8mg$F(ckYZ-Rkc(Eb`)NmI+g!t_M5O z;A(PCnzlCq@Sci^iP6&1=6dG9t_J!B4CWM2WF3>!moZY7$Y?7r*{d!l%hWJ6HLXF1 zH8yK#Z0!G`_rv}fLnlEZkG345tJgR}kISK_>0V9QEfs33BIJ~;VjUIgA6VHW<{dO@ z{zDttBw04Lhi_EzX*;GfZ(UGD@jM;nzxzN9TYS3l zRONjx|75R{a@&RMYK$~3HFt3l38M4L8b@+oDZ^K9UP(<%A0j5!;?H$;fGR)=lX>@U zP~c503@G^m&C%49F{BS$c%|4cCg8|I=KvMTbrqbMoKG0c67e8TFf%jbDj2JC>64Fp zu+gWyJO_JwJnh*FC?{ko-2mNasD8rVYANl9{|T{g2O;uqaTq zx8yE%V522%*xEwQyCE1b__5P+xFl!6;l;>u#ChRb;quQLJaS}}ipt7i{j)%%G+e@P z_(k^h>(?&@zpsTc;#@esXkOQb6r8@#Z>5liEH$a6#BWuiY4;-xE%-C}=~aWL&qwrg zh>2A`(I6ri8h{%#Skvi7)GD^Z)ky;uRkEkl5lvpkxo=$`KCHFmCL|>E?OotIQ*(id zg#`%KfXztk+_v}0^`qR|Cu)Lmi5f58Qpm$cp=M9&+>k1jXe{~FB~Mi43mtkiYaBG8 z9SC)G^|{qYlO4*iVrafl7Bb2hA&-oXzR<6z!NTWgsac8FGqD$&O6NsVO-3oE5ht zAF7Hl>L%{V!>d&luJ#grA$ZPpht^<1Xc1#sM`RsIc2-edGrN3o)0hLHm0mJ8hltJ# zjgIzr*DZNO>F@(jCt_+U>@K~MhQ>F0{$Px>44dZGRzE+#dYu>5>hkhFK^T?tDk>Md zwY2@Ma2;2RCUf-d)LT7hem+Sv@|(Qvot@scrzXbY>bo=5s;!4m|TZGIeZT(Y3OYadFvQSXhuP|Ku-5t+KNH7!-~0*A2bXVFSQVnB?4pF|XIq z% zOf*SFztb1r@;f{xw7$N6 z!+D(^$J_jd67GliVFxwJ_lj&$GN7qoqoOLXzkh!1yO!Dk$V7^ZiM4G^M=e4>%I5MW zZ*=SCu*>rIsq(-;8xys~MY^dq#w5AeorRq8cTL-R^y6_Q~gn|Nk*LK)AI5r zoJ+|hiQjRqY8?5Gt?z~Jg1l4O+T@LFflN>*V{>(ajw;>ndW&k{nvYFH$%DK_|J|}5 z?u7qh<$sy}#QR(|a4&NL_s2zHbAtqCMTMSQ8L(ZQjYFwAYosZW4Tmt=CkXa-nhIn4 zOK*n-3#*ph(Oa?JebLuPQdUKkyT+)+1N2UBOKdrP@P7E?V@b*2nC;`$+Ns*w+m^hn ztedlK@o1SG92|EOp#;=uS}aXF(GW^!^u(B3Gdw~y$U3scWY5P8!m}Naxb!cJfBl-o zw|20HkWW(H&=4s*GcHd5$l+El>WDeh5_NTQ;ma5^X=wx^?PHu+~q8rIe<9D>hW(OOq7qj^2m*4_+?80z%Kf91U{wZK&&oc9rX zv%1BEljOdTjW(VKV_D;X!-+SzkoXc3KZqH@_r=X#f<{Q3Q<9>$l$u)wLzz7)cAA@W zbuvMn$ z=Gu=<8$r9SVYhaZoQ+MPkTtK%wk{Z%c6N3v0wQ}%hpDNlqB_2_o%0(XQ($B+o(3Pi zZ}CT28Sjl9i4zmK9(uDXJ2$tpx0my}%UO3|FfZR-a`LUsE-2s?6kG*yyTE{em!+YF zVa=J7XWAJzJW{tp3$kTl z7r{Gj_ne)@EU|@{M1E`n;Um>Hzti_C!s#~U`zj7rccxW1szWd&GCEPS6*}wc>gZx0 zLuat2yu3Nvth`tP%S>xD7s5|Kpj0h9^t1ck>SqiL-*LSG%_ke6JqS28vEJA~;0=p= z_dY^lKR%xN2H%^md$*ApZS<7-=IlXn6XV2@z3c287;ya78P$`admecYjSvt;o1q<+ zamj$5w3cb}_=km5et_{LQ(^dx8u8V;emnYW7mbokc&=V4@XVUrs>LCRz0 zwoTwRY)UsSUgYPu-rU&GF0wzDmCUW*=aH9x3IjoJ-IkilWTXK3)D}88HZi}38g!0Q zVFm9?NIt0)CqF_;9r_x;vI8B#r%;Y?IBh43Pdz*DiMZKIwBO z;sD9`Rx7UTIgo#dIwEmBJh&YvGdK(|`9WtewQ@b)!QPB}sgtdxB_=~;gHit!l9{A; zx-jbq>xZ68Oc#B>8qgw}jyV`v0nF{PX^;wbEr85*0@jT``XJh|mC`ae!&;O*YxA1v zaNSr!OO6S9|AQwm7XxU>b6?Z^fhie_Pa63qUtmT7T8^fZf5sXNpxd$xMjmRl)YS1* z1he-1@ohM+m*d-rVz6g7FwIW#mF^z*-p=-r-JCB6MT_EK{hl6Hx$Bg>#e>6G-t?NO zA34A7>GUv;Hch~W@NCE z%88Aby!yepgqvEo?St5;WJUlaYg|u{ZqE{nhVg#YgTT8Uem8M$TK zJ#r|qFqFr0mPEIXi!zws&zm5Bv0{6n(<_5E-B?cU{82n=hs{*TAs7}Nt*xMtT~yRR zIOrD+rd(88I7&mPqLaC;5ZcwtLws9U1{MNA-mqq!Nx|fP&qmpRBOP% z%sga%_SFR zy;l=Jh4O()sZ#b!^mQJg@|A_Y7;=RHXT|#Kw_O-%T4m`JKF7SksRDoW&QIoH@z8~i zBD@nvl~{y8Ab=!aECDTn5**yhNH zvu9URt+Z#l)0QFS8t0f&k#dPX_3P9Lz!XNbEGsT`8*3njmvDbPr%(T*c1R*M>9`bb zI~lP$TsXgfn>AXT`rYf8VRk-$x7Tx58Oe+X*VScxuO-)n`kL7v7QE zQe?8=LQ>UGB5e-g?a7T_*7{bwreHDg^t6gn+xbU^)E=i*YU+sfYR@7uo!B$}0+{l9 zilVQd(_0{Mg_&ORD_Ztf&|AtrNon=1TA~W(1N>8%kG|K^=5%w6y!I^Tjz0%6p@KTF;j<^!V%BB~+(N zbZl^^D?pi&>U3_)^N^ej(O&1h3r{Qkp#T+pijgtpLI#8Mw6PR&PG7cSRSxqr?s_ND zl11ixVb^a6@ZBR+}u&!xT(8as!1JjDY?0vtgIj< zZ0L-o0X052`)#^^+z7M^{s81yrltdZ4x3O0M7dWyX$-xbIPO+d%NJrS|EZMGO847rf8>h+D;Dk&?EU97z)A|jGa*cV=FU~XYi ze18H(_ya^LEzQklGlrErCOO39P=yk23Z@o^1QZaXsqm~bvSs=Cs%Ac6L)H`ww*FXYCD)jn9@BrKw;X;AWwZIc7nl zLk;7uipt;x=3Wd3Q_gYJTy_@J^0Kmkk+}h~$0eI#XxGUO^AcTF4H~TTjg5K@%GKh6 z)HK&p)15;Uip(M;KP}35)J0U&>8`GacOVeK!EJqgK2w8(C4+;caZ`$FYPutlQBfFP zPob0s6>+F1IhV?^yuHlxsu$CXvf3OQ8}4 zp5BhFE;{BkhV`acgYBIf;Vs>uIRyZzzz5xTT45~$#Ks5f9meU4-S_X|xKJjBRCBd? zKPK_FbBz-~dl5J}Gc%!^pb8~5HPj?kb#+L-JKEddk=0payXih`P?fhFC_X$N(s5EvzgIwCI)Vod)dl8!)Pz(J@!6Ga9j1hvM*QY;8OAFcP;NQ%i8qNX+|f-&!Sg z+s#xD-PsJ%A4C(di{w6&ugWK26&TgC-0%7n+CMNi8e*74@7*&mV*D=SO>@%~D}l>S zNweJX8DAOWIcs>m2ZJPAT3cC|nkR&E`UX2YdHMK!u20qYa!`QL0&uxl@0;pAw^?HF5gKHyESTYu7}=mrX0EJ^RX=@t<}uDps;s>iUY)tUqobjx!~%{T zbdf@|KJz6O&RhJ2Ci>W4R_mUjp-2W#Ld~9x=zR~?$66*1n(cZPknkRXYiep==j_pp zzH)&}Y4jPc`XV$=);YJ1;>mu)CgL&gIr%S8RBH;;)z*e7$!lC(g&pt5R}#n_wxPA5 zp+VAV5G@UoTH}bvhV*Ch^76PvWzk|Fb36ECSV~45HDt}o%v}3PTx?^ah= zv$B$OmS6w)D8m;V&QgM7>YgEo2!Mako7(E(rIiLEyoH6ti?f$WNkz|?av-3-`aBhV48L2n-|Gt?z(;T< z0YSsq%h}6BL^p3!$TPK5P zg@oPn7v!w0#o$K+$!%`Oc!h6od-?lUfD*apz-n2UU?Gk%S&Em}_Tbl<*hpALsg zrW6g(hNf|+MH&KNQLHxIA9Vv_NZ*7R3eM|uO`}4nuq2yisPjfFG-g+;`z<)bbfgGFMYw03FmaY-k$=2m9wG7#`NYBCSV)#-@pKI(FE7s%$BF** z@gBYeNM9hkh@CF{%{}~!Q+*f==6&YhHkY5zE-Ir7Y0eU3@8GJPl&s~9ZNfFIq+CX! zsA4yGh;H0i4f^#1h|P{-srDRpWd%4=PFl3JoA4_-$!F4 zzSzve#`Z|ubXB{JEQ0^=!y{UXi+zfm5P}6V51+XOM=r>T8gOxNaBy)|VeB}}!^z6n zOp1iC80W_6QDel=Lt<=s`m0~3wT+4{%*oBQvb3BpIj0DVtnkw*HR6dQqvMxwcKuvz zY|0%dZWuv|H~5f_TET@7IL#{|r8RA-G~Na~>Pr3#M1`tTzAWjJv{4snqvCc!{ z(27LqeK_&2YkH!st-Y|Yz)pLo+pMBYLN2?9wpPr)`t4;3{y21}`+v|!3Y4Pz&j#u|xi6DrFJT7X2R59iQQ>)6R#0W=}s8bU6 zq=bjs+KMI%6f$$Ou&6H2Z5f|ErF{gtgik_B+QX?^Z(0MJ-*cV%f<`MRIQH#?g?;v3 zQczIPYQ2>^wjRT4^-06m_q=|0#c{Si3R%9lx4*CU6S=gsG)m(suAr#cd(t@VaQH&{ z`-YCFij=S>b0bN~gG(1zd}x8_yImU;^KQm-B}KrhkL2df?pEM0jkJ#hE`XOU<#OyW ze7*o)5#xL&vFXr9|DM|_Fs->wllV%m!x38y& z!>}*TKH&#UZ|%Iaq!jm+nlrOrUt23EEgc)uayb6E5Z?N8KDZ~2xAoxc_+ZN$la!y{ z(!yDL19EXAubLR)QE!_Cn@qO5-g}&%b+(+JjxDCC+$1JumGD%eO;x~0=a1gZ9b#8J zMlpKNDdfY(?P`=lQW@ba37Lgz312yfJA&Z?Qc_Zn9{q8QtT!rYXlSUY;K!GBQ|%2+ zdYmnlJ)1Z;H}~n&Cp1J+6dfPr*6J)qLrzZ4A&_ZqUXqdFeY~H~{4h-m!)`ZKr#ai~ zc3d;LDTUa}L%PDx(Av3+#k@Q`u^OuOo4tm$Mf!0;`}_OaxoV`Oq-a++x88JFb%^@a zU-uFelXj;sEjf9UqypYUAu2U;ccmW|A0PjypN?N2byQvudwMyR>{?Jz(BdOQ{r46I zaRIJ@Y7TJACr@5SN9hz%>pZ$QoJ-fO;w>o;RiWhxSVH(W6h;>*O3P8i26U;^bCM2t zYL=7eHNeJ^lR2fl*BoK152f=P5t6 zFqjc1U!UFk_VEgP6}r&Y&aSAqI3{6EDXX#2_W4T)c5r-ncw&%2ps}$L-q+IXg(G6- zw(3ici~|fc)9gY15g`H7oY2U~`e<>b6y7Oc#S5?W+^v+cb= zYa5$E7mmV$JtDZlC`-SVu`##iDJCjzbaa%Z6g-pTM@X8;88;Z-R3+(kVA6ubJeJ}~ zn~P#q?>2wzIAg~n>{0Dpn_KH~ZXUj>k2u=1<|Osz3-5SJk*~#`R9sL1nvGE(KEkcz zg!T3GKyxa>vXo_uI0_1~E&<`kj|<7B>RncfYiBC9_V-*{cN7i^OIxT8?p(|#o-GD> zWt)t=H9|@&$Q3{thkNxVv4-`S<4I0dfW24uhT9^SLM%<4gG2_z6 zP@eaZWZ(HyhrP32n5Vesc18?7$lPN)sIZ()>85J*VNqDq;D@m+Q-^}}i;6Z~+v8pK zmeH176l+$I*6YmQU9P~F8ot4=w<{$mczhewY{u4gESKm})DWNt{eq#nR^4xPQ}jEz&;R->)i8j*>hm)@kuyv7YoX=lJ{ zEz~dV^Pqa>R%Di)8=$CQk)m}SWtNaCFpmQ%gIO%1`clMM9bu~W#bnc2Wbo!HPW_Uu zqX$c&6Ip&Pw=c#4CIOf%G|GI?Rnro22FV|-~id=y8yBEA5Pm%Ck8!es$ zJXQ39cX(%U_|giM=VRTjJLODVcO;hL_J0cG@d8H%ix~iCi z8)zKi1Fb#KI*0_N>NM_Ec6GxISX@`tDEIeH4uw_piEs&i2=n>nuF5VN%%f&uXe%u} zOgew+^T;)3rk)<~kRd1Ouw>Uf1-Qb%xD9pa%<19gE9lwmqR*f9mNH%CxH~$busDBU z+TFm=P(4{9zu%0Sn$CCr+s8GCf1Z?kVp7v*RqDr}dXUEe%I+o!NeQggq??CdI|!zA z2X)x2wO>#ivj;NBQmb;@Hj%s>Ezx6@<}EBC!F2;{|9q^(xS=p|xJK%9Z|E&GOS`jai;+A6zp1XD-1 zQbkIwS5*}uAPD7;z^Z-Z*yI)wklfrnaJ@8hC+rJFeq#e7CztN9sN1XA zyi@oz^vZ=rE#iy5_c}XVkv{sK$=mYt=@tmLR=<)uwJ z@yWW1mM9r8}=9Q zj22QH&ADNJgj85(cje_Sw6QGFNW1e~w-oi2I_*U@;wcdXJAAYOmZXZCc@`5;l&YAW zoxNt-{{aXZHz;|ks;YE4zK5W{l$V#6Y;C<@V;Z3;6dW2Jc5Tg+C4!);UZ43$rbg@d zze)cJ2{BQ@G72miM=h>hj*1{sQ{M1gL17cJCRTPskCC*shLo~^1qliXF~?BpYeq`w z>G4q86|1H`r4_F|Zt`uj)xSjps6I)l^dw{?pvL2N`%VtO0Ea`q1 zxQm-`)l|=A?$ExLEg@JtgfZ)9QJtQ8D`)1>T10J-^dRZ$jcwnJ@|hWv{GYC_u3feg zFMs@@6AY|cZK$EQck`G0qN3!NKRFVU5*=ph=wnz8tCSS>pw5-np041;q@-+TK|>_6 zss{3?f07>e5jAg?PoW$GB4uRm=M)0gGJXF2)fv+x=$C3V!Q184PNqVXjj@&0$`nXD znW->F-(zQx87dQGR6$(9!EUEKhvwK#ShP=>tlj$Dn{>s`PcaqA@8H=w3lmcJ=&fH| zJvu_H^yxsc&9mq3Q#6P3C!76eb3fAkCTktFFUIo~GNMe0q0^(*ah8^bX79L_X1+Nu zudJrVVSSX_rN1npbV2jZYRKzs-WjXDf$2X`(#>1GOm2m!@oP`86MOf=wK^guVrgZ% zkwp1i-*={q$MVNu5Xg7_F0-T8diq?R8BB5J(TvDSqiov!%azLzeWof}Gvk~WJQzF7 zOUaEm5C__(c&^#C10*a<`Z^79z?tuqBO<`L$Q&+>p#M@npowwz7~EN2df;edgFv32 z0Y0N9tEy_@%saons|R_MU{&Kd+v2&q%#bqdT@*QIYU-QZ?O zthE!l8Q5pC{mr9;_YhCzi}a5uE@?4gmh&Q%cIcP;4{*SW6vZA2jB@|j*^0m- z)3a^{Z~AWUM5<17T%02S5DV!0?j?-hqc#L_hmMZwu^&t|d1|-b)@rGD-!zbwl|@yK zEc*NI4Jf9hq^!-=;pF}OvAlOe`&86>R6IG4kB`0t2tF24KDGIywRLGuelN=e3e)#E zJ#ssxI5;?HJwH1J0F+i;Btx{FESnx(ljnLYlr4l&mm|NWxBXpX#j=tl*ybrBjEtFj zZG8#4M_AF=Xjo(4!b#no#JYWE9xmyA(3i59xy%YJM&j+2Z6U5?wX?YKV6xugb9uT< z^TgqdHUU39G5Oejf=Tp#SUEviTzBoXWua0%VeIg&*4>nCz-du-biJKgy7Ts8GVq3` zwscHNJuKQAeb3Ej&(CaO#}hrH()FAI0q@>*(r#YOTy7OJy|bG9l#TfgJM(w&c76aZ zZjrS}x%a8C8jMq;!$z>7C#DE=pd2XfufdyHdSDg1lm&U%W5~GLCFVx1lIo2>7;s!( z8`vdU8SFPpO?iwdIPv(+1$cx>1nXSdo7kIPOzBzF{jN`0TkV7@(hHw1;nWjLQ*Q8P z)}hFZm50NZW}3aW0Z7N|J|KfJ$mi?`Z6Q;fabT}d3SC{Rwso$}Xfonp#3HDvsiaOf z1ju_7>{WZmf5!PC$3{m@>YcNzs)lJ|ko~EWK#p^kODY|0?O7{qKU38B0KK0q>9yZ{ zFcYJ#BT*PYH=nQ+nPv0XbEG$N`%RX^0^VgKb2aw6kEAS0^)H+O4jg>2Jb${7i;Z?fN zS`wv7h0iq!JL!NyJeFhIQA1av*4MA+)HR9b#N-^yW=qXPAzq>t*0KIhlM7vgc_X`$ zV22W6`(>-HwWcTr-;ih@E#$U^>ESRavY+b_I#ce8M(V4_S@kVV`>-@!}8Xvl(5ip3l*0u3|Xt2&D|fCN;|{yf1+77jg2C zZnY;G>LD&BCUx|Ef$sb#jLGPy?@4&8&sKeDRdqGgB?}RwK$#rE<6Jv_N99w2Ditp0 zu&=nsLHT)L30{0IC54Jonr-YH);f7jWVUM_z>87M2vv$s-u^9{CC0sxI1^Ayh)%SL z&msI5FCkMyPDx4V_r#X%U~Mgt>GTd$R%t>G#;)e@U4ohej!YYGkXtdfYK6`L*bBiK>{y^U7^k00v>L!iIdc|C*}MzZsFT{3?X z(hWJe2jPjcwX{?)C5|{iY_Y$^=4ZU~A4U_hZ2mbtc!jbx1v<*@X~)_+I_-gPZC^L_ zTo>O~c8V7G6v1Gup?`5jcwFUIvxDa6&DhP^i%hU*-HpkQEGjWZJY!m8s^vso0di6t zuC2d@gUj!#-x!2BMCReGKskUd6Qt7Za>3S!(U3Gwn?N9S&r0um9>5b`s0b=tDp!w; zP`@pS`*n&Q>zRSLY@a#zM)FY(ubal@zdrpClu7z)Qt|Md6NlDu9KSxrd#Ep(o0GHm zP%%=eoo2JkvJ##AHoSatbJc%Q*i>+neA!JYl9(~8>)mZFi?(a*6{c^=Fpr)F+1;a; z7Y>PFpjPKM7XLfwX^OFDsK&pUcU+Bzi-|I1(h z^GVoBZ$OT?o*Ex2SNs447OHj}e5km5B>9cl8H!I~&otn6J$V zd)J^1bb5WMPxEMtEkxbY_-tc^iq{QyC8e4p5_8SRv?TPm0{#b+^G|b^-_-j~a`Z|M zMIk=)M&Z=mT3zR{{AG;Zahqv##XYUv@WC|PO84o1HRb7G|jXG>`V*kt4b#baCUtv2^ans&f3$=vl@8+Fh`Et1qYoY`9c1sdhB>Hty zxi&jXq!KLJP6{Bk$}Q6M;r;Id?c%%s`Helw?z@w3CMiJf)`!Y5ED96Xj4KJ&jN=Jf zwwb7R;sW1GfjVYxph#tg8cCYLeBi72`1mfAu_^Cnx5w^QkV0!6Qo20>KB4ce_l(X4 zJl;1sy1X+wCuD{a^~il8|rr`Xs{Da_(kv2^YZetvgFP{=yndyZ%YpjgUPR5J@IMnUx_j-bcItC z*&Y`Gff3;y-XrWM@Ppf2FtNpEdd zs`gOg49bUxcv?)yQM!6G@drp5_V-FoZ%@s`hO9i+w3k-G^m2e1cvXZ_urxJI|1?-e z1aTpB7`uzOga`S$Hfj82@(TEjt9T>94`8H#l+4`R+{ahObiYj>Vq#*VZ#X$V{=BcW zq=c4^Zp=FbS1fu&9>WD3(IT>n`vFPkn_&N^=>XS%n4-%v`qD+mU|B6!8@23QZ^3Z* z34zBYWCbxSd=~@44l!=)JiOJlHRp#U&=FQzD_VX1>U1>AUQqDZktMma8Eh2x++V;z z^ValQ;3&C|=l!D&7F8*FY<@&|?Bu4&a3|yZgTS!x!hH1eM|p#APBx8HGec-Xv-52$ ziqbcyZ5b_NEUjcBmtQ}7l&78n3ZHi1Wn+uTP{rPfsg{Nc*-4+Ss^2AGdI0bZHq0vO z>abQH^OqKK^pR@?1rNk)dbZGs0%Brff`VBdhVFhXD(UlCPcLpW@Z>`iK+rPX=-L?^ z9*!1VC0~vZMmjk;Vc~lsTSqnv4U&$!rHgfsJ+VV9+xpn`++5a1{2~pV6lxEneNjE= z6CIL~{n&S;(E+$s%><_2yOlqjKg!emufTGaBYkY?xQeY^rWzRR8sO_3ZcHq3QS9b0!};VSPjamE)XfYl@1 zTwPU6X|*OA5xBLFeuTxMSWEOQwddIU*&4)mf7vSz*UtYodWUgvD&nlAw^)YNv&-2* z0s|QYym4TLMOz4pSO6sag$?s4^UsY$oE;M-kv~#uRxA3c9-*j1T-(^-;NYUM@M3ZK zXQweoJwf+C?&_$!em7;={9h$cm#rc}qj@CJWDpR&DD!5si> zp&QNo>88Tf)C!7F&XAuUuXN`0D#t>Lj|0eB$AHoj>Qam@wy9!bk+q+B$_UJ;UePjKG-0816%2fcR;x3S?sPf|Ug)&;YmyY)}c z=noGN%A6gCTJQRd`bNsUrP7`f&EJuqz9?>TavENtEymAZw7H*naOgbc<<(t7LE^S3 zWRmu!?>3@BYv7BPUgR?D&|qAe$ukr@d}?!FFIC&QQa8Kml_q3c2N z_BVh7g6%hH2A-z_&OW7?~K^K6#Cv2cpOR=OXEbN$)*94286v?+2tkNTbU=Z1& zKQ9^HNb_tN1NY`*RpIcC(PG0JW|^7jmCS{+)0r75A#svub08z^DF3*Y^%wMy;hymaXjG>sR{0|3ypAPBZK49jJ+|zo8?u|4kS)wtBCEANB$8OI#4LX! zwBz2O`)Oi3G&Gc}mXav$3(&YiLP8u@5-7^D-VTq9Ea4C<$08GUH2~m`jg4KT#HtwE zf_oO*<*fAMRN`V{9VY6WEMAV&T@xN2qoklPX>^yQxh}r3zd2buHa3FWFOH#~%iJ|O zM_FD}q?}{>S1L&k7e9Pl*kNjwpwlDHHwg_72ZBg$Ufy$ycCYo(%|)T2z2V6m1G~F- z2j1*IhiVj`nSP55UyS#*w6xr+uR_e`@s{dqXnb>TgtO*jKT4mpNdr{gmlQf8e-q@6 ze9R@Qcly*D>+80Tj&Toqk@?YCJ(p2iIXNsbe7S8VdV21g6V>JAJLA(BX~$4iRVpE3X&<)f}TYc*Z<)Y)bbe}dpft{+y~w1jpSyc<|Nm$V60}tbRqpM%trutufz=!=7-T^x-=f$ zi*6G>ygkumsHK%LDpAPn7#t}&*cX>MrE}!bWj6N$LPrAea4F^z5fb9A?g0i;83*bh z`GX-6cd#uTfr#x+H6xdJMn@G+F+6^1Z-Z6HI(ecaWt<<22h#ljPm*Nh%CO5E`1Gi4 zn~N7i-?ic%2oeS+xMBsZ$C`8#C`ShdUe8ZxZ-xMw!mL^Tqpr6-OIpE{wX>t%MvK+! znrNoP=`i!t)6?sP`V6}n5dv-Y52&dNi;Jh5y*yCx5~F&4F|ov$%X*%k{!?MnO?WUU zG@q#%V5(6(X|3fuPLi;*4YZf^7Im7VWGFE)cQLm-={W?nd2XT@(Em8S!gO-9SgUfK z?w(E$_}r;NGRusaJAobMCIboH*zD48gvJ?#p z1{JEsrj?SAA1etL%RV)&2Wf&8!h{xID%QM6xFOSkc`V81h?w~(Mt)eJ#X@RX)zKdC(%3H z$%#5(6{&Kqp4jPVHb4^z$9fxS9u6VouY^RmQ%TEzM1;dXm`;k)2u>ISx|e|qO^i({;-71 zpjZKch3KFvBROg=n3A`9=LJw9mZBZ?sMPw<0Mx4k@3I1-j4PK~y9q~E(4{n#nL?zW zm>VB3D%zb+56n|Xf_#ax^9%=qW}cU)&QNf^P6-|^(CxQO<0%c9*pOEUzvXLE8iE~S^#4Y{cZ&@7JdvgGtM|LvRp1Oe~% zHx7-%wb|+W^!M*_b8`bs5`v7Ik5ANXWq-5zcwZS~`{Kp(gDqokZ*Se07;NqiHl|Q5 zH#5B@y(z;;YO76FRHXcB;j$un%PeJH@Y?Ly(nI;D2xZUrC0eUP_p)y?;Xmwe>yd@F zV!%qH?7VVe4tt)G>?IbMEGch#<8Mn!x*DPuXQ9vK zEA1;LgavMM*O7CRE}4cGe?kZ5P4g^qB#a7i88z+ zAf?v%{eUw3+S=M6oh$oI{FTGt?=QwVIXE4so2>ixR8@TTF)N6Ms;qWEW-z>0b)v9X zHhHiy!wsX(H$>a7H@LY6WL8#!d22j}SUk~fvTfDXLd3+xaXhfp>U*Xk{HnKJ{=1v47)&m7E=E#(6{LES_bpr(kz8IMtye7&UVEv`<@&kq*X z6!|&*ZIK*hK^DKz7{n(*g@tBEkM(K2D?E`*i16HUnB7&d7IFG`(w=OmPW;4R>Q{K7tltbkQJd<*}Z3 z0RiwZsRNC$lO;AVi61)UEf6jegMckWXYcNk;mI4>ahaA+GyhPtCH94);py4QT+V zVH8%vcH%gxE_VWHLLZ0XL>fWtW2*^O5@Wv0e9 z_2+Dx>hlX7OGcWFYRJob%F6n+ImER>=*{=q=OQBmCNmY9Ob&Og{c~tz3z6j>=534NeOKcqMNn{4vjXaie)x0U%FvQzza%RBe` zYLO-sWjQRYaF3$l)4D@^wSZ1-F7fo|7B$qSOal+Cju=ghjQDS_myAqKvYuO*otqyo zn@nVueK;I950}S{8_xZx>$lo(B@SpYGC5EZq&@nPul>^&K3euCVWUgb4)I`RZEcE8 z*b0i7M_A0&wJAx~HCBCI`Z+{H3m($n34S1jv~IawXTb-JvCE|q3JDK46ykygdNP;R zsWG7S?;H$+ZIlU}U_wMzydaSYo3wlS_?rV3EB-(%|Ndl(bev$Y4$o?|b1Jrf5O5(| zQ}u?1hK<7`oVHV(3ADBj#x-gXgsbR!NehFO5jlk7ULcMoa=Y=ZMZh27OSm{!O=feT zR&mS#U{6hxHQj{GX9RXkI!(hDr zR<=3FEE3w6Qw{5+S9wh8?mhBZ9QZW%{)86b*nm2(om(ykH~T&r<-y+GXKo{7W5(>M z3vJR3Du<~ull%Bw;VV6_r-CGD*QwrHM`Xls>#cLJb8B9BgS8AogBqXw2UJujY><#v zg{R)PH;WoWVlr;+KaoR{n|Qt<8dkl62AI=A62 z_m-I`DpdFGU(zZ0ct$ZWJBaiT9%46)a6KoE-PmsM0Vk7=rY1e1j#k^C)$O$arj6Ix z>hgPt=A#nNdn}w|oVO7t51`KFoXRO9sM@2{@9EWFOrGsR8=g$<8fPbBHt(_Pe%yM# z6RMQ$%V)K(n*XLH&nnn{!@$)&*~hUeZ$#LMQTU}^rTr(<9t5n=BDMiR&c+j1XaZd@ z#V|x>x7zzN2=*n-)Vp|b z1d9q_^n`K+?4P2&#&cHoQyPZ^1lA`f7SoVrStUAp1|0b8#?Mf>E>cZvokmgG+Hs{u zm^#z8{ms^%$P*>!h0nb|k|`N*`H^#T-dNQO=2|y~W z#|a|+nm2p4Nmxf)VZcqUmu$Bw;ihHunG~<9=#w! zu`kAL^Dmda#Bpp6?9J~_B03rF5BakODmVo>Kl{xE2)r}|KTW!n_Uv9puBuk?)J0YYXkNBjW?BX-1~Ilsk(4Dk+?@27 zHZC?+-h8YyWxM?D-6#NkvU6}HHlRy6YeDnJ@Vhc%TElh`<%k0g|&6Raz=& z<6{U1RBaOtwrc&&g=37_Jd$>40G#E%@13|ih4n9~Uq9q;cGXY*(ypy8nXPE=yIx$I zwa9u`i#f#5vW1UuD8l+uA)ptmQLssC$nBrPUkr_F&gII9m0_dVM<_0(k(B`wt);t0 zCQ^puwstnrwW4Gu-v}9eAAX~|&h?Ya(v$Ne)#V$d7yKKfCo7#caKNKib9_m}C0{+z zKpYFdb#QieHaN&{t70meK|@7VQc}|GFy{y&PYxa~sy%Gb*(p}?tSKRQzf}G$fF6Ar z(_r)sYvitxHcTF`4SB?QToIK#d6%0K;%#hbVBmU*Gi>-0-~n}FEet-OKo*7}2AUr= z@|sUg3@62m@5dZ16)P%!>KB`Be@lyz9OK%B12qV|SNO`DDYo{!SG-bh&hvCsj~~J` z!#nR5nh+}oy0AACX$@SNDJe}+>q=kv-K{lrd?EZ?3{Z2F%P{EUQ1~PJo+U@ zy7d8T+Kt0T;BA27fANX{AD^a*eXBL7oak{oYOr5NM|>xN|4l|EdI;_%W_zhoPlRO%|Pe8GnH$ii-E(Bnhz z>q?daI(NX|myU7bsuxE%HH~j=8c+lBo@@?k=O0&UDE3Kh_q~jbj7~azPdYz7`a>hH zxz)9p-apu^FPPE$^+r7YWJ;Wpiq6&ZZBKK@&Ed9A?JWdhcF8s0Yv#FzMJRs0s*iOp z%0A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

XGSKxHJ!ae45(7fsxGO!pp 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 z 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

hUks><9jzn#o;8F5ikxBe?tG%sFqC$ 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 literal 0 HcmV?d00001 diff --git a/tests/browser/workflows.spec.mjs b/tests/browser/workflows.spec.mjs index 934e1b9..88a5466 100644 --- a/tests/browser/workflows.spec.mjs +++ b/tests/browser/workflows.spec.mjs @@ -870,3 +870,120 @@ test('gallery directory autocomplete handles keyboard selection escape and navig await input.press('Enter'); await expect(page.getByAltText('forest.png', { exact: true })).toBeVisible(); }); + +async function openDimensions(page) { + await page.evaluate(() => { + const node = kikoHost.app.graph._nodes.at(-1); + node.computeSize = () => [180, 120]; + node.setSize = size => { node.size = size; node.applied = (node.applied || 0) + 1; }; + const opener = document.createElement('button'); + opener.textContent = 'Edit dimensions'; + opener.onclick = () => kikoHost.extensions.find(item => item.name === 'ComfyAssets.Extensions').getNodeMenuItems(node)[1].callback(); + document.body.append(opener); + }); + await page.getByRole('button', { name: 'Edit dimensions', exact: true }).click(); + return page.getByRole('dialog', { name: 'Node Dimensions', exact: true }); +} + +test('Node Dimensions validates, applies once and enforces content minimums', async ({ page }) => { + await openHost(page); + await createNode(page, 'WidthHeightSelector'); + const dialog = await openDimensions(page); + await expect(dialog).toBeVisible(); + await page.getByRole('button', { name: 'Edit dimensions', exact: true }).evaluate(element => element.focus()); + await expect(dialog.getByLabel('Width (px)', { exact: true })).toBeFocused(); + for (const value of ['', '-1', '1.5']) { + await dialog.getByLabel('Width (px)', { exact: true }).fill(value); + await dialog.getByRole('button', { name: 'Apply', exact: true }).click(); + await expect(dialog.getByText('Enter positive whole numbers for width and height.')).toBeVisible(); + expect(await page.evaluate(() => kikoHost.app.graph._nodes.at(-1).applied || 0)).toBe(0); + } + await dialog.getByLabel('Width (px)', { exact: true }).fill('1'); + await dialog.getByLabel('Height (px)', { exact: true }).fill('10'); + await page.keyboard.press('Enter'); + await expect(dialog).toHaveCount(0); + expect(await page.evaluate(() => ({ size: kikoHost.app.graph._nodes.at(-1).size, applied: kikoHost.app.graph._nodes.at(-1).applied }))).toEqual({ size: [180, 120], applied: 1 }); + await expect(page.getByRole('button', { name: 'Edit dimensions', exact: true })).toBeFocused(); +}); + +test('Node Dimensions follows themes, fits narrow screens and cleans up on removal', async ({ page }) => { + await openHost(page); + await createNode(page, 'WidthHeightSelector'); + const dialog = await openDimensions(page); + for (const [color, theme] of [['#fafafa', 'light'], ['#202020', 'dark']]) { + await page.evaluate(color => document.body.style.setProperty('--bg-color', color), color); + await expect(dialog).toHaveAttribute('data-ca-theme', theme); + } + await page.setViewportSize({ width: 320, height: 480 }); + expect(await dialog.evaluate(element => element.scrollWidth <= element.clientWidth)).toBe(true); + await page.evaluate(() => window.KikoToolsExtensions.showNodeDimensionsDialog(kikoHost.app.graph._nodes.at(-1))); + await expect(dialog).toHaveCount(1); + await page.keyboard.press('Escape'); + await expect(dialog).toHaveCount(0); + await page.getByRole('button', { name: 'Edit dimensions', exact: true }).click(); + await dialog.getByRole('button', { name: 'Cancel', exact: true }).click(); + await expect(dialog).toHaveCount(0); + await page.getByRole('button', { name: 'Edit dimensions', exact: true }).click(); + await page.evaluate(() => kikoHost.app.graph._nodes.at(-1).onRemoved()); + await expect(dialog).toHaveCount(0); + expect(await page.evaluate(() => kikoHost.app.graph._nodes.at(-1).applied || 0)).toBe(0); +}); + +test('legacy dialog helpers preserve values, cancellation and manual close', async ({ page }) => { + await openHost(page); + await page.evaluate(() => { + window.dialogCalls = []; + window.openLegacy = () => window.legacyDialog = window.KikoToolsExtensions.createDialog('', (dialog, values) => window.dialogCalls.push([dialog.tagName, values]), () => window.dialogCalls.push('cancel')); + window.openLegacy(); + }); + await page.getByLabel('Legacy value').fill('after'); + await page.keyboard.press('Enter'); + expect(await page.evaluate(() => window.dialogCalls)).toEqual([['DIALOG', ['after']]]); + await page.evaluate(() => window.openLegacy()); + await page.keyboard.press('Escape'); + await page.evaluate(() => { window.openLegacy(); window.legacyDialog.close(); }); + expect(await page.evaluate(() => window.dialogCalls)).toEqual([['DIALOG', ['after']], 'cancel']); + await page.evaluate(() => window.openLegacy()); + await page.getByRole('button', { name: 'Cancel', exact: true }).click(); + expect(await page.evaluate(() => window.dialogCalls)).toEqual([['DIALOG', ['after']], 'cancel', 'cancel']); +}); + +test('dimension dialogs preserve node hooks and restrict menu ownership', async ({ page }) => { + await openHost(page); + await createNode(page, 'WidthHeightSelector'); + const result = await page.evaluate(() => { + const extension = kikoHost.extensions.find(item => item.name === 'ComfyAssets.Extensions'); + const missing = extension.getNodeMenuItems({ constructor: {} }); + const other = extension.getNodeMenuItems({ constructor: { category: 'Other' } }); + const node = kikoHost.app.graph._nodes.at(-1); + const original = function (...args) { window.removedArgs = [this === node, ...args]; return 'removed'; }; + node.onRemoved = original; + const dialog = window.KikoToolsExtensions.showNodeDimensionsDialog(node); + window.detachedApply = dialog.querySelector('button[type="submit"]'); + const returned = node.onRemoved('a', 2); + return { missing, other, returned, restored: node.onRemoved === original, args: window.removedArgs }; + }); + expect(result).toEqual({ missing: [], other: [], returned: 'removed', restored: true, args: [true, 'a', 2] }); + await page.evaluate(() => window.detachedApply.click()); + await expect(page.getByRole('dialog')).toHaveCount(0); + await page.evaluate(() => window.KikoToolsExtensions.createDialog('')); + await page.getByRole('button', { name: 'OK', exact: true }).click(); + await page.evaluate(() => window.KikoToolsExtensions.createDialog('No fields')); + await page.keyboard.press('Escape'); + await expect(page.getByRole('dialog')).toHaveCount(0); +}); + + +test('legacy selects retain Enter confirmation', async ({ page }) => { + await openHost(page); + await page.evaluate(() => window.KikoToolsExtensions.createDialog('', (dialog, values) => window.selectedLegacy = values)); + await page.evaluate(() => { + window.leakedDialogKeys = 0; + document.addEventListener('keydown', () => window.leakedDialogKeys++); + }); + await page.getByLabel('Choice', { exact: true }).focus(); + await page.keyboard.press('Enter'); + await expect(page.getByRole('dialog')).toHaveCount(0); + expect(await page.evaluate(() => window.selectedLegacy)).toEqual(['chosen']); + expect(await page.evaluate(() => window.leakedDialogKeys)).toBe(0); +}); diff --git a/tests/comfyui/image-browser.spec.mjs b/tests/comfyui/image-browser.spec.mjs index a991e5d..3e75081 100644 --- a/tests/comfyui/image-browser.spec.mjs +++ b/tests/comfyui/image-browser.spec.mjs @@ -397,3 +397,71 @@ test('actual host preserves the widget through renderer changes, theme changes a }); await expect(loader).toHaveCount(0); }); + +test('Node Dimensions applies and persists across Classic and Nodes 2.0', async ({ page }, testInfo) => { + await page.evaluate(async () => { + const { app } = await import('/scripts/app.js'); + const node = LiteGraph.createNode('WidthHeightSelector'); + app.graph.add(node); + node.pos = [300, 250]; + app.canvas.centerOnNode(node); + }); + const dialog = page.getByRole('dialog', { name: 'Node Dimensions', exact: true }); + for (const renderer of [false, true, false]) { + await page.evaluate(async renderer => { + const { app } = await import('/scripts/app.js'); + await app.ui.settings.setSettingValue('Comfy.VueNodes.Enabled', renderer); + app.canvas.centerOnNode(app.graph._nodes[0]); + }, renderer); + await expect.poll(() => page.evaluate(() => LiteGraph.vueNodesMode)).toBe(renderer); + const point = await page.evaluate(async () => { + const { app } = await import('/scripts/app.js'); + const node = app.graph._nodes[0]; + const canvas = app.canvas.canvas.getBoundingClientRect(); + return { x: canvas.left + (node.pos[0] + app.canvas.ds.offset[0] + 60) * app.canvas.ds.scale, y: canvas.top + (node.pos[1] + app.canvas.ds.offset[1] - 15) * app.canvas.ds.scale }; + }); + await page.mouse.click(point.x, point.y, { button: 'right' }); + await page.getByText('🎨 Node Dimensions', { exact: true }).click(); + await expect(dialog).toBeVisible(); + await dialog.getByLabel('Width (px)', { exact: true }).fill('900'); + await dialog.getByLabel('Height (px)', { exact: true }).fill('600'); + await page.keyboard.press('Enter'); + await expect(dialog).toHaveCount(0); + expect(await page.evaluate(async () => { + const { app } = await import('/scripts/app.js'); + return Array.from(app.graph._nodes[0].size); + })).toEqual([900, 600]); + await page.evaluate(async () => { + const { app } = await import('/scripts/app.js'); + window.KikoToolsExtensions.showNodeDimensionsDialog(app.graph._nodes[0]); + }); + await dialog.getByLabel('Width (px)', { exact: true }).fill('1200'); + await page.keyboard.press('Escape'); + expect(await page.evaluate(async () => { + const { app } = await import('/scripts/app.js'); + return Array.from(app.graph._nodes[0].size); + })).toEqual([900, 600]); + } + const size = await page.evaluate(async () => { + const { app } = await import('/scripts/app.js'); + const workflow = app.graph.serialize(); + await app.loadGraphData(workflow); + app.canvas.centerOnNode(app.graph._nodes[0]); + window.KikoToolsExtensions.showNodeDimensionsDialog(app.graph._nodes[0]); + return Array.from(app.graph._nodes[0].size); + }); + expect(size).toEqual([900, 600]); + for (const theme of ['light', 'dark']) { + await page.evaluate(async theme => { + const { app } = await import('/scripts/app.js'); + await app.ui.settings.setSettingValue('Comfy.ColorPalette', theme); + }, theme); + await expect(dialog).toHaveAttribute('data-ca-theme', theme); + await page.screenshot({ path: testInfo.outputPath(`node-dimensions-${theme}.png`) }); + } + await page.evaluate(async () => { + const { app } = await import('/scripts/app.js'); + app.graph.remove(app.graph._nodes[0]); + }); + await expect(dialog).toHaveCount(0); +}); diff --git a/tests/js/node-dimensions.test.mjs b/tests/js/node-dimensions.test.mjs new file mode 100644 index 0000000..78b9b6e --- /dev/null +++ b/tests/js/node-dimensions.test.mjs @@ -0,0 +1,15 @@ +import { test } from 'node:test'; +import assert from 'node:assert/strict'; +import { resolveNodeSize } from '../../web/views/node-dimensions.js'; + +test('node dimensions accept whole pixels and respect content minimums', () => { + assert.deepEqual(resolveNodeSize(['640', '480'], [180, 120]), [640, 480]); + assert.deepEqual(resolveNodeSize(['1', '10'], [180, 120]), [180, 120]); +}); + +test('node dimensions reject missing, fractional, unsafe and nonpositive values', () => { + for (const value of ['', ' ', '0', '-1', '1.5', 'Infinity', 'NaN', '9007199254740992']) { + assert.equal(resolveNodeSize([value, '480'], [180, 120]), null, value); + assert.equal(resolveNodeSize(['640', value], [180, 120]), null, value); + } +}); diff --git a/tools/testing/frontend-coverage-baseline.json b/tools/testing/frontend-coverage-baseline.json index 50d986c..2867cda 100644 --- a/tools/testing/frontend-coverage-baseline.json +++ b/tools/testing/frontend-coverage-baseline.json @@ -60,10 +60,10 @@ "statements": 98 }, "kikotools_extensions.js": { - "lines": 12, + "lines": 98, "branches": 98, - "functions": 0, - "statements": 12 + "functions": 98, + "statements": 98 }, "seed_history_ui.js": { "lines": 95, @@ -89,6 +89,12 @@ "functions": 98, "statements": 98 }, + "ui/dialog.js": { + "lines": 98, + "branches": 85, + "functions": 98, + "statements": 98 + }, "ui/dimension-swap.js": { "lines": 98, "branches": 98, @@ -119,6 +125,12 @@ "functions": 98, "statements": 98 }, + "views/node-dimensions.js": { + "lines": 98, + "branches": 98, + "functions": 98, + "statements": 98 + }, "views/seed-history.js": { "lines": 98, "branches": 98, diff --git a/web/kikotools_extensions.js b/web/kikotools_extensions.js index f206af4..789013b 100644 --- a/web/kikotools_extensions.js +++ b/web/kikotools_extensions.js @@ -1,197 +1,26 @@ -import { app } from "../../scripts/app.js"; +import { app } from '../../scripts/app.js'; +import { createLegacyDialog } from './ui/dialog.js'; +import { showNodeDimensionsDialog } from './views/node-dimensions.js'; -/** - * KikoTools Extensions - Adds utility features to all ComfyAssets nodes - */ app.registerExtension({ - name: "ComfyAssets.Extensions", - - // New API: return items to append to node right-click menu + name: 'ComfyAssets.Extensions', getNodeMenuItems(node) { - // Only add our menu items to ComfyAssets nodes - if (!node.constructor.category || !node.constructor.category.includes("ComfyAssets")) { - return []; - } - - return [ - null, // separator - { - content: "🎨 Node Dimensions", - callback: () => { - KikoToolsExtensions.showNodeDimensionsDialog(node); - } - } - ]; - } + if (!node.constructor.category || !node.constructor.category.includes('ComfyAssets')) return []; + return [null, { + content: '🎨 Node Dimensions', + callback: () => KikoToolsExtensions.showNodeDimensionsDialog(node), + }]; + }, }); -/** - * KikoTools Extensions utilities - */ class KikoToolsExtensions { - /** - * Create a dialog for settings - */ static createDialog(htmlContent, onOK, onCancel) { - const dialog = document.createElement("div"); - dialog.className = "kikotools-dialog"; - dialog.style.cssText = ` - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - background: #202020; - border: 2px solid #444; - border-radius: 8px; - padding: 20px; - z-index: 10000; - font-family: Arial, sans-serif; - box-shadow: 0 4px 20px rgba(0,0,0,0.5); - `; - - // innerHTML used here with hardcoded templates only (numeric node dimensions) - dialog.innerHTML = htmlContent; - - // Create button container - const buttonContainer = document.createElement("div"); - buttonContainer.style.cssText = ` - display: flex; - justify-content: flex-end; - gap: 10px; - margin-top: 15px; - `; - - // Create OK button - const okButton = document.createElement("button"); - okButton.textContent = "OK"; - okButton.style.cssText = ` - padding: 8px 20px; - background: #4A90E2; - color: white; - border: none; - border-radius: 4px; - cursor: pointer; - font-size: 14px; - `; - okButton.onmouseover = () => okButton.style.background = "#5BA0F2"; - okButton.onmouseout = () => okButton.style.background = "#4A90E2"; - - // Create Cancel button - const cancelButton = document.createElement("button"); - cancelButton.textContent = "Cancel"; - cancelButton.style.cssText = ` - padding: 8px 20px; - background: #666; - color: white; - border: none; - border-radius: 4px; - cursor: pointer; - font-size: 14px; - `; - cancelButton.onmouseover = () => cancelButton.style.background = "#777"; - cancelButton.onmouseout = () => cancelButton.style.background = "#666"; - - buttonContainer.appendChild(cancelButton); - buttonContainer.appendChild(okButton); - dialog.appendChild(buttonContainer); - - // Dialog close function - dialog.close = function() { - if (dialog.parentNode) { - dialog.parentNode.removeChild(dialog); - } - }; - - // Get all inputs - const inputs = Array.from(dialog.querySelectorAll("input, select")); - - // Handle keyboard events - inputs.forEach(input => { - input.addEventListener("keydown", function(e) { - if (e.keyCode === 27) { // ESC - onCancel && onCancel(); - dialog.close(); - } else if (e.keyCode === 13) { // Enter - onOK && onOK(dialog, inputs.map(input => input.value)); - dialog.close(); - } - e.stopPropagation(); - }); - }); - - // Button click handlers - okButton.onclick = () => { - onOK && onOK(dialog, inputs.map(input => input.value)); - dialog.close(); - }; - - cancelButton.onclick = () => { - onCancel && onCancel(); - dialog.close(); - }; - - // Add to document - document.body.appendChild(dialog); - - // Focus first input - if (inputs.length > 0) { - inputs[0].focus(); - inputs[0].select(); - } - - return dialog; + return createLegacyDialog(htmlContent, onOK, onCancel, app.ui.settings, app.canvas.canvas); } - /** - * Show node dimensions dialog - */ static showNodeDimensionsDialog(node) { - const nodeWidth = Math.round(node.size[0]); - const nodeHeight = Math.round(node.size[1]); - - const htmlContent = ` -

- `; - - this.createDialog( - htmlContent, - function(dialog, values) { - const widthValue = Number(values[0]) || nodeWidth; - const heightValue = Number(values[1]) || nodeHeight; - - // Calculate minimum size based on node content - const minSize = node.computeSize(); - - // Apply new size (respecting minimums) - node.setSize([ - Math.max(minSize[0], widthValue), - Math.max(minSize[1], heightValue) - ]); - - // Mark canvas as dirty to trigger redraw - node.setDirtyCanvas(true, true); - }, - null - ); + return showNodeDimensionsDialog(node, app); } } -// Export for global access window.KikoToolsExtensions = KikoToolsExtensions; diff --git a/web/ui/README.md b/web/ui/README.md index 5281437..30b6c0c 100644 --- a/web/ui/README.md +++ b/web/ui/README.md @@ -103,3 +103,23 @@ the host context exactly once, and existing preset callback results are retained The control does not change node dimensions, batch size, native input order or backend interfaces. Workflow persistence remains with ComfyUI's native widgets; the DOM control does not serialize its UI state. + +## Node Dimensions and modal dialogs + +The ComfyAssets-only Node Dimensions context menu uses `dialog.js` for a native +modal shell, shared theme tokens, focus restoration and scoped cleanup. Native +modality contains keyboard focus; Escape and Cancel close without applying. +`../views/node-dimensions.js` owns the form and node lifecycle binding. + +Enter or Apply accepts positive whole pixel values and clamps them to the node's +computed content minimum. Invalid values keep the form open with an associated +error. Opening the same node again reuses its dialog; node removal closes it and +preserves the previous removal hook's context, arguments and return value. +ComfyUI continues to serialize the resulting node size. + +The global `KikoToolsExtensions.createDialog(htmlContent, onOK, onCancel)` helper +remains available for trusted HTML templates. It returns the native dialog with +an immediate `close()` method. OK/Enter supplies the dialog and input/select +values; Cancel/Escape invokes cancellation once. Manual `close()` dismisses +without invoking cancellation. New views should build DOM through shared +factories rather than pass HTML to this compatibility helper. diff --git a/web/ui/controls.css b/web/ui/controls.css index 87ea85e..defaf70 100644 --- a/web/ui/controls.css +++ b/web/ui/controls.css @@ -171,3 +171,20 @@ .ca-tools .ca-switch input:checked::before { background: HighlightText; } .ca-tools button.kiko-selected { outline: 2px solid Highlight; } } + +.ca-dialog { box-sizing: border-box; inline-size: 400px; max-inline-size: calc(100dvw - 24px); max-block-size: calc(100dvh - 24px); padding: 0; border: 1px solid var(--ca-border); border-radius: 8px; overflow: auto; box-shadow: 0 12px 40px #0006; } +.ca-dialog[open] { display: flex; flex-direction: column; } +.ca-dialog::backdrop { background: #0007; } +.ca-dialog > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; border-block-end: 1px solid var(--ca-line); } +.ca-dialog h2 { margin: 0; font-size: 14px; font-weight: 550; } +.ca-dialog > header span { color: var(--ca-muted); font-size: 10px; } +.ca-dialog-body { padding: 16px; min-inline-size: 0; } +.ca-dialog > footer { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 8px; padding: 12px 16px; border-block-start: 1px solid var(--ca-line); } +.ca-dialog-hint { color: var(--ca-muted); margin: 0 0 12px; font-size: 12px; } +.ca-dimension-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } +.ca-dimension-fields .ca-field { display: flex; flex-direction: column; align-items: stretch; } +.ca-dimension-fields input { inline-size: 100%; } +.ca-dialog-error { margin: 12px 0 0; color: var(--ca-error-text); } +.ca-dialog-error:empty { display: none; } +.ca-dialog input[aria-invalid="true"] { border-color: var(--ca-error); } +@media (max-width: 360px) { .ca-dimension-fields { grid-template-columns: minmax(0, 1fr); } } diff --git a/web/ui/dialog.js b/web/ui/dialog.js new file mode 100644 index 0000000..7270827 --- /dev/null +++ b/web/ui/dialog.js @@ -0,0 +1,85 @@ +import { createScope, mountTheme, createButton } from './core.js'; + +let nextDialog = 0; + +export function createDialog({ title, settings, fallbackFocus, onCancel }) { + const scope = createScope(); + const element = document.createElement('dialog'); + element.id = `ca-dialog-${++nextDialog}`; + element.className = 'ca-tools ca-dialog kikotools-dialog'; + const header = document.createElement('header'); + const heading = document.createElement('h2'); + heading.id = `${element.id}-title`; + heading.textContent = title; + element.setAttribute('aria-labelledby', heading.id); + const brand = document.createElement('span'); + brand.textContent = 'ComfyAssets'; + header.append(heading, brand); + const body = document.createElement('div'); + body.className = 'ca-dialog-body'; + const actions = document.createElement('footer'); + element.append(header, body, actions); + mountTheme(element, settings, scope); + let opener; + const nativeClose = element.close.bind(element); + const finish = reason => { + if (scope.signal.aborted) return; + scope.dispose(); + if (opener?.isConnected && opener !== document.body) opener.focus(); + else fallbackFocus?.focus(); + if (reason === 'cancel') onCancel?.(); + }; + element.close = (reason = 'dismiss') => { + if (scope.signal.aborted) return; + nativeClose(reason); + finish(reason); + }; + scope.cleanup(() => element.remove()); + scope.listen(element, 'close', () => finish(element.returnValue)); + scope.listen(element, 'cancel', event => { + event.preventDefault(); + element.close('cancel'); + }); + scope.listen(element, 'keydown', event => event.stopPropagation()); + scope.listen(element, 'keyup', event => event.stopPropagation()); + return { + element, scope, body, actions, + close: element.close, + open(initialFocus) { + opener = document.activeElement; + document.body.append(element); + element.showModal(); + initialFocus?.focus(); + }, + }; +} + +export function createLegacyDialog(htmlContent, onOK, onCancel, settings, fallbackFocus) { + const dialog = createDialog({ title: 'KikoTools', settings, fallbackFocus, onCancel }); + const form = document.createElement('form'); + form.id = `${dialog.element.id}-form`; + form.innerHTML = htmlContent; + dialog.body.append(form); + const cancel = createButton('Cancel'); + const ok = createButton('OK', 'ca-primary'); + ok.type = 'submit'; + ok.setAttribute('form', form.id); + dialog.actions.append(cancel, ok); + dialog.scope.listen(cancel, 'click', () => dialog.close('cancel')); + dialog.scope.listen(form, 'keydown', event => { + if (event.key === 'Enter' && !event.isComposing && event.target.matches('select')) { + event.preventDefault(); + event.stopPropagation(); + form.requestSubmit(); + } + }); + dialog.scope.listen(form, 'submit', event => { + event.preventDefault(); + onOK?.(dialog.element, [...form.querySelectorAll('input, select')].map(input => input.value)); + dialog.close('apply'); + }); + const firstInput = form.querySelector('input, select'); + dialog.open(firstInput); + if (firstInput?.tagName === 'INPUT') firstInput.select(); + return dialog.element; +} diff --git a/web/views/node-dimensions.js b/web/views/node-dimensions.js new file mode 100644 index 0000000..a695c64 --- /dev/null +++ b/web/views/node-dimensions.js @@ -0,0 +1,74 @@ +import { createButton, createField } from '../ui/core.js'; +import { createDialog } from '../ui/dialog.js'; + +const activeDialogs = new WeakMap(); + +export function resolveNodeSize(values, minimum) { + const size = values.map(Number); + if (values.some(value => String(value).trim() === '') || size.some(value => !Number.isSafeInteger(value) || value <= 0)) return null; + return size.map((value, index) => Math.max(value, minimum[index])); +} + +export function showNodeDimensionsDialog(node, app) { + const existing = activeDialogs.get(node); + if (existing) { + existing.querySelector('.width').focus(); + return existing; + } + const dialog = createDialog({ title: 'Node Dimensions', settings: app.ui.settings, fallbackFocus: app.canvas.canvas }); + const form = document.createElement('form'); + form.id = `${dialog.element.id}-form`; + form.noValidate = true; + const hint = document.createElement('p'); + hint.id = `${form.id}-hint`; + hint.textContent = 'Minimum size is enforced based on node content.'; + hint.className = 'ca-dialog-hint'; + const fields = document.createElement('div'); + fields.className = 'ca-dimension-fields'; + const error = document.createElement('p'); + error.id = `${form.id}-error`; + error.className = 'ca-dialog-error'; + error.setAttribute('aria-live', 'polite'); + const inputs = ['Width', 'Height'].map((name, index) => { + const input = document.createElement('input'); + Object.assign(input, { type: 'number', min: '1', step: '1', required: true, value: String(Math.round(node.size[index])), className: name.toLowerCase() }); + input.setAttribute('aria-describedby', `${hint.id} ${error.id}`); + fields.append(createField(`${name} (px)`, input, `${form.id}-${name.toLowerCase()}`)); + return input; + }); + form.append(hint, fields, error); + dialog.body.append(form); + const cancel = createButton('Cancel'); + const apply = createButton('Apply', 'ca-primary'); + apply.type = 'submit'; + apply.setAttribute('form', form.id); + dialog.actions.append(cancel, apply); + dialog.scope.listen(cancel, 'click', () => dialog.close('cancel')); + dialog.scope.listen(form, 'submit', event => { + event.preventDefault(); + const size = resolveNodeSize(inputs.map(input => input.value), node.computeSize()); + if (!size) { + error.textContent = 'Enter positive whole numbers for width and height.'; + for (const input of inputs) input.setAttribute('aria-invalid', String(!resolveNodeSize([input.value], [1]))); + inputs.find(input => input.getAttribute('aria-invalid') === 'true').focus(); + return; + } + node.setSize(size); + node.setDirtyCanvas(true, true); + dialog.close('apply'); + }); + const original = node.onRemoved; + const onRemoved = function (...args) { + dialog.close('removed'); + return original?.apply(this, args); + }; + node.onRemoved = onRemoved; + activeDialogs.set(node, dialog.element); + dialog.scope.cleanup(() => { + activeDialogs.delete(node); + if (node.onRemoved === onRemoved) node.onRemoved = original; + }); + dialog.open(inputs[0]); + inputs[0].select(); + return dialog.element; +}