From aa3126cdb60d37ab5dd840fd53facfd034fe0c54 Mon Sep 17 00:00:00 2001 From: fenix Date: Wed, 25 Feb 2026 20:32:43 +0100 Subject: [PATCH] =?UTF-8?q?add=20ASIR1=20(Programaci=C3=B3n)=20support:=20?= =?UTF-8?q?nginx,=20watchers,=20scripts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - New subdomain asir1.qu3v3d0.tech (nginx server block for napi2) - python-upload-watcher.sh v7: batching, re-uploads, Windows-safe, __pycache__ filtering, full student names in XMPP notifications - sshfs mount units for both napi-data and napi-data2 - nginx configs for DDAW2 and ASIR1 preserved as reference - Screenshot of XMPP notifications for debugging Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitignore | 5 +- Screenshots/test | 1 + Screenshots/zzz@librebits.info.png | Bin 0 -> 206028 bytes nginx/README.md | 51 +++ nginx/napi-ddaw2.conf | 41 ++ nginx/napi2-asir1.conf | 41 ++ scripts/README.md | 165 +++++++ scripts/home-fenix-napi-data.mount | 13 + scripts/home-fenix-napi-data2.mount | 13 + scripts/nginx-user-config-watcher.service | 12 + scripts/nginx-user-config-watcher.sh | 508 ++++++++++++++++++++++ scripts/python-upload-watcher.service | 12 + scripts/python-upload-watcher.sh | 213 +++++++++ scripts/xmpp-notify.py | 33 ++ 14 files changed, 1107 insertions(+), 1 deletion(-) create mode 100644 Screenshots/test create mode 100644 Screenshots/zzz@librebits.info.png create mode 100644 nginx/README.md create mode 100644 nginx/napi-ddaw2.conf create mode 100644 nginx/napi2-asir1.conf create mode 100644 scripts/README.md create mode 100644 scripts/home-fenix-napi-data.mount create mode 100644 scripts/home-fenix-napi-data2.mount create mode 100644 scripts/nginx-user-config-watcher.service create mode 100644 scripts/nginx-user-config-watcher.sh create mode 100644 scripts/python-upload-watcher.service create mode 100644 scripts/python-upload-watcher.sh create mode 100644 scripts/xmpp-notify.py diff --git a/.gitignore b/.gitignore index 1269488..18eb24c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -data +data/ +TASKS.org +BUGS.org + diff --git a/Screenshots/test b/Screenshots/test new file mode 100644 index 0000000..945c9b4 --- /dev/null +++ b/Screenshots/test @@ -0,0 +1 @@ +. \ No newline at end of file diff --git a/Screenshots/zzz@librebits.info.png b/Screenshots/zzz@librebits.info.png new file mode 100644 index 0000000000000000000000000000000000000000..034828d5fd0a5c4744b526d6bfb99612fd5226b4 GIT binary patch literal 206028 zcmb??bx>8|*X~9T5ReXO1*A*5ySqVB>Fz@cD2PZ4NH<6wNfL?)@kx>rd^L@hvzQia;emn*0spg&`JEGkD}_Fc_hJf93O!fwNr({G2ao(a z4SBHDHaZsUzin(~*odZZVaQdV-t~>3#-C3@k9jTvk3n!$;#J0U1lVD&paq#^z(<+U zLZKlq0sS}vI;ywr>0RgvGZx1Gdj9n$8r?*BdnNU21wDg8t>sZ>86G&jCVy301@D9x zHM248ItBlRUbZEZL|~g0K87dKfD`tn#Y+7@X4E&LdH!q2Q2NHBr%Z6L>EXLy@5HPH zO0y5!1&+}!H8C|V@jC3#-l})3;PlpS6QjF$2uY1foz-OV&kh{>Iq;ihpW3bZCsSD| z%16jK!Et!ZC}W$SfBMx~({K#&j4WK2zzW^_DuBmMRocerv2SdsbaIK-$)Kw7s)t<> zBZdqY%li^C+JXemN-lN90~TaN$R#+#!80@*CPnXkakejP*v%FGiE1*&;k}DB>GqL7 z4MR`qPoU2iy{&JIfbt*(Q-;6|oVpu(9n`ZlAh6t{aaLXsyi_T{b|S-wY< zo&AZ}zKwpP_z>eP9US*7_`q$D6hCUoo!paACtSsEFuhdKa$->{WdTvo$ z+MGkRo&f=!APw zTEVL4{r66=sXQX;?*4?j&Nxz_eGJufv2BPOkf8bMYl>8%=VeSw@JT^udLiYlJ4AtT ztgP>2ZaX9ApPnfSiTRo3M7?jr)Vtc{7!bHAJ{e+TPa31(EUrrz+V$wX;8#$+DWgUY z%()Kb1q2U83pVN4ua5nlPOHve3Bs&PiqeRUL2WU9Jw*@l5>WT0x3VSNN&RnU!+e!Ai{Tk5wOxT`+?qa%vYbk z@maGJQ=1%-{NYWpJw($d7iY0;GJzD3n7+dM>=)-?xo&aH<%1A%r+1h~mFuX;QZ+f$ zXO7fml2g$G?S*nS_~lo;xRc(=uz0CFOZOXU8}*E#)&?38`nl=-uEZgxMHRr!>_E%I z!plTn`FJcRBsH|l_jwFh!E&d2w}8Hnq%kscIPRc)EKzp2vei@AC=cZ_LsA)$Vpmx8 zgiRaYL?;e_ZIh{e82)Oj>_Z%EDT$TtivwzJiN;4A8oSwXcw}gJVEz7h~zj*$9#FZ`lW#gg%&)EVv zz(4aSkNTRxLI`db9d0D>vWAXhYMLAvNZ&`2pie$W^BazyH>|rf){J4!Lk21+I^75uxFXBr;@>U!)%|NcfZ%B zFw*t_tw~L{1RVOK483TozuSH_99n^Q$RdmW>WA0PQAt=T`91%TCZo2a8Vh;+(15_n zjhH0pEK*Xt`yn>qa9nwl)&J*|Kk`!5Kll93f{o9W4Vf&sml(Ejm6L!QGd5wyYl zBUkmjwtQWWs={(R&3B)}+j50uO;~|ljbc2Io8BA%LSHl({0r>m!=$7+>0 z!e9ak$^SDg!=qJ>!=Xp>* z&L^c3`ARxSRp0rTv)N#3(izm4+;!dFSL(f^l^w(JJP`@Xvmct z(<_1;RYQmM;J>F0oLOht~EQ?@vt{>&jvd4Pl z2W&H1p4~o;1cQ_RXtq`?SNhFD+uAGOC(l|j@eLvXcsE$9!It(DD$*{pugHwe@Au=RCJ~*F`!%&cwkYYrrG@!=fLx^tc z81T;CmST%YfCfK_Pt8Z|n~{mVojKVdWwF{R=+OvYye|vd7?;GCq@<<_R6W7ZAVaF;#KY5wg0TO`e#tDConOwlZ%&c&q^ey{T|e4*ytx zXS@?sDOZb8@zpu-vL1TjHT4l!DoDO&5#ii1hOqxc4mb`MJCfoL%Mr2b)q#kulLjeO zMo;upVUoVldkcH7K?hm<(}L>Y&98I*c?5wX5L*q-doY%R>sm+t(|qe6YdZ254lfIj zxT^BrBd6*sWfC{~o=+BB@w`e0s%|6F=osK+#2qRHf4W z@2U7=%9llws5-j`oHaPz={b}$ZDi;?YwCjRZ*B`Kyrk&|SBC6m=tRonBok!Vxh;MY zJn1ACUMyWqW7j97M;-R}>+XTg$fX)PJJ^r#aYBzBosM8A0KQ~Pi!(RS((E6mKr`;n z&yc6VtiEa7z;E5ZEn5mkVifZ@(3IlDSla7a;=-g?@uYT%hs`yL;=dlRi$vK@IXxY= z8?J$4{b`&q7 zYOJ-!iNZP@5Fp(rF?X^rRGzk5ueC|qRDWPhHeg0vcCEZv#RXwjkbM2CwZ3Us^?7$= zTF8bHxkITTdFOJ#av3F^mYre%JoSDsBzVmYvqdAGWP==kd%IMF@!zVGNuG7D!C2FNuq!=zYsH(Ja##QF>Ggkl*KLxa_$JHB52c6>7>15ZzHeJ9BW869geYL}sGh zbb`wPW7ywN_K|<-RFk7L@({7F6|qI2!V8V2)9hz+5%v%wgax=MA2tw!kdaA{q(=-} zes-Kl=@%tD`X7PGns3rFGw%(Y8iZQN++WY1rOI50XUfncZieDOM<16J2;z0p7o^T> z-dN9`TH?PoQy-n^`d*lSclwZRvqJlyPR7bmApXPwiy!#IjjLX_wix-$wx=lP>SVAC zG-|y)*xB8-d~ac4Us0r-JYdx+CF!AWIL75bLc&uo5LNyNByHx;Y;D9Ti}ORo@oCMTK3;_I&(6~OcCMAzxSAW|ESq=bRpi< zd_>&5L$4WB>))8pJkdEvbUVvy`_|Q3Yv6}|vVUZ-d6p-*>66q8`tqHDupVQu&&Li7t+=-}-{iuqg8^XuR{US{Wi|x~+>I{yzFpVwX=bxF9KPD^de;>F7xh#kT#Z{!#HDrZnU&^l1t2bw8cnwZng0 z)#Ni5eQ3irXGKgFXagqv)7*}8kN;jl6sS;4 z^%fglRbQs!u)?2jld1f=+-NBr#Z3RjI^Z^XM^J7~_JS?w+G@OStSVbPNl7NHv@Ek_ zeO64<$nW*}Ze`jY9lq~r>u6ev5%uFmRp|QDYSulNkLKQSEu6 zuyo?t6PFEB^3d7hH26Xrf`E?p7?&o-wxmJq^<_;9x7pET*x<3I)jNawVQ7B5;-xby z=UqXcgX1>ZKVSiM6>XTaB3X5hi-k}cfRnG*xN)mC{$MKOA_O}0%B{4ea~&t>Q4OaO zawcBf_UUw?Xk{MJ-L5lyjveWJf+cd+c?T0WK7g^c2V7)GR<$KV}!gx4U!o~%P;U2^GtIOB~Sc-JFA9dw5J^7EK6Z*-1W`HjthzdYdvWDL#y zc`=<-p2pAzK5`6QhQMXLrmR4>89PjWece2%3fmI4H|r_g6@D_z#C0=Ci%qvsy=P&l z%?so-34CdbLb}^#6a3q|$x@%AI!w*OaF_o;=LJ8r9Qu*om z%{7g=G^4bxV$maxE@g!oUzx+wq1j`bGh7W4sMA zVk%6%ZMYYg7N$A!az$JQz6O@lMR!i?=n~?#PBGB5<+5gvynEVPX3ILNE$bN*nwc7H zq3GqO??3s6H#Q3E;@4DS)v%Ljh{XiX0RWV!;8)pZDhO~bty0$6nm9PUk@NgKwn{1s zzY`j1p6Y!Q&3S*jbqg{cKf}+ddX|y zeYS3S8G&C@NdgUMX(@|iyHO4%Pf(Up_{`3^0bChv-SLxml`b+gx?wZRE8hc8npY~k z;0v0~S#H-wrh#FR>M5Dc?K-S5#}c+7l~iZV;I)pSd~vkyGIZmgc>*l8Rn>pB2B@7s zY1TOh0%NPozDIv?TI&3Ou>$U072;H>#+eK9=L~Y0c6ek&xUT17Pb?`A1?@$H-3&wX z{3-%d+1aUDK6{%DK_zas-+AU{A@(~vp!MFYn zr2SH?PgUUb1Q($flNDpyk=60W6BUfq=wYZrY4+7>N3f0h)&8EBphuqM%JhfTN2uVM zbvLEM_U`rO8!NwfquFQV&NOl99<%=otR$)BpWM?-(W}#K-WyDaUK}3?eOM$1|H7lJ zP-7w)ReLIa?}*w}EkD6R=iWU<{;%KNq#queHHV|r)_<}06-o`+lo=)jeZ88!?kec}tbl**zrGZ#>QD#Rsw~8} zotEFw1g;y0en?yVm+#yq9vVn&5{+zgYD<@?n2R@EVf#KJNAxd%kXh+vX$K80Dw%~X zvBbBLIf^@fdGat8R2jt`%L)$l*?As>Gx(Cg$2ZYr&dvhPsCZ(FU%*K$JJ;Y(J^EJN zW|NfK`)7Lb?1hRv!=@W%UNFGv?S5D3^b&lzQZ~Z^IuAc^)QWX{+ zbadqA#YYg>j9`TFXZ2_N@M4P=RieY+OJ$&XI4C`K$^F&;=7k@1I|8O$+0HK@@?jBk zHvZBK68sW9IEC(flQe6|{jnlI{_YlSiU}39?9(U7!}Qyw8TkrgLbJYs@#@-~L(D2? zSGVe`Q_s~PIxAQiy6R+R3jJk_??Ym}42|1FUWyUBWUdBD*1U+Sv?2<*ox)N8-+u64kSV>lMDN6W26s;$-11DTNUza;yA{o?z^~t1R43xYB+P%f z^t4e6@9)OVlm*U*OE^v~B>MQnMJOy2c`#u;6{}|?AWS!1p`cpxx&Lhynjn2ouUbL9 zw`Z!GpfbJ%+fbvKSx!-d<59HS9VFJX)LT zm(j~ah1kL$5p?VGjK<`Xx6nJErb^?qlb*Xp=T{*K`I!oIGf}%q+t#t7p2zL02${^Y zvvc(YLnA1O_mOa()jid08j+$7v+qt@{^SC*sqU5U9t|yRNL$;d5)WD)N)P7Z!L75s zEG~yUEhep!155iJI^XX~TXeIy2t-Ir#gUOS0N|oX(!_1L->6`uel4#p2oE1`>tr}m zG|jsS!6!cO{<~XpknsWd3xNdPO;S_0!Xs)D0<3hGi}5YFQn#^>7J@cI_|58St614e zC&qIZ77aMQV%WS%HLR0=i3?SBaCW-#^nhQw>OX}mGHVr}T>FtE>!!URzrFJ->0}O< zX=3oT^XuuB?o}_XngzgPH=-tj00a6{k`7vEYMPYX|OCB(5qHROqh)HdvH|TSLpDA!B6o}shjPv)#>G9R(g-&0Xh;J`Lq}{WryAh zg#3cA%a#)llpS#>{t!3{wYtTUGxFaVZN9|8#%_J=83ayd+Rd(ydNWZ{6(V942OEA_ zcdt_iE^E(@5mNkZwtdeN<}@)rUwb?j-t>hY$kAeQ&}WBVogR?CP!aZiKlx?a=*j9H)#qh>>>A7j)44KzO1BrF%_h>dGL0ffm1L*&(AyI>urgZwz~ zehaa$PePcSr7{ez%^)Ge(#h(Lh={w8==u7VF$f0D6{Q>vY=KZICie1oyW^z}N)v2|f(`^6B!Xe-n=x9rC0(fn?7gE*_jG7c%SpYIK5*RZ`qM8N2K z2KmLCxc5y$LPZm!MOm!?V98}?XKwtnog<_~-)Qj~v>IgT&V>)tgQfO*>?VZxyUInA za zbNa07_yua(eXN{q;vF=7xVnQ5et8{U<*cR#R~9!?AUbbX8>NVWYszC6_wEGN|9NTuAaE(sv+0Sg3EqH!LtIQ>7WC_ zA8-585|tYYGme8+;Csod%3BlQidEinL>7#`PcMEXB_}J^f6ejs*G5t1anLPqxQbyT zk0c{u>wV81aB>?Yu4e*EO?e^v8TH`WS6^E>JvRC7c6v}PL+I`@%xrU$NbIH$VT?@< zfG*42?tR^1IyDZpaI4=g<4|jHIx15{Csu{)OF0S-D*f}A8gr+rJi6d^) zDchq5^t2aUH@i~%BPVjTXgi-cm9shY?gvrn;sMt_O-K@ozPfgAUx(!GtXmc-@o%^{ zHT%mii>{qsld$iotpKXl)(3_ApCs9Y>vL+$EzTA=thXNO?iTdF_FHn2UR=ghXl|)^ zes3_wt}K;b9{uIDRh?g?HEPyk{_eNmLkZjKE!}^%|Io>h%whUscjq~9`sO^3R{D}c z;If-vyy}7!sm*lZIOldzOmhvuCB}DsU3oH$QwP6*gLa3<9)?(}bK&OLDKl+hy2|btxxFR^pEe38m{g@zw9yJNx(JxfVs>VQ%}LdDox3s_LoIU_4UzymZvsy7h5SpSLzT zoxhwRP62osr-X)znn_9d>#$}shK-mu;Jo|bn-K5I`>t(XMIBRfL#DOEtPlL?{mm``*u7ssVld zEJ}s~@bcT}E7n=#&2#^0{&OuYZk<_N5{?}?`Ka?CapHtVkI}W22PELD8RxMjOi)+; z&;0pYXZDzLnqc(|A#yyjYjCYbi$aFEw7eVUXYnY&%Y=TW5>kE42;Gjdyrz*k+l(-5 z$1+v{$AmulAutK_d+-luzP8L10G7n+qrR8t8b$n&a zF7F|dBSRB#mB7J3%``JMH8D2Dbp)Ne!GoRS6lkR;x$W6YhVv0Uz4g`CnT?QHPpXUg z^r-_33DYlx2xz5;Sq_ZA@+B8()TfSqjMQSU>E{*}(jja(&Yaxbtv-VFKgzTQ{Q^Xn zdAQA*;!B&xe>w(QLY!J*>nW?tgYU^1x@5PAlDgPaymzljr|H{|M6OrTM;4CrZx`EG z-PRgHktO6A%plW&r)Ro2`a2dy6L)B++M}ilQRyzWIUGp}#4@2l4TtI5GhV=Tz*R@= zN?`Z&ye98Ux3fy2FpG)q;}U3zJ|m$xqHcE1@*d4nC(Uqy-DG6>r}fk5LjU!t`K+uq zMXvPJR4>)()~+{J$P#XEyFrLULE*?>_Ldz#oMUGbJkXlD2}y2vfLfN|j;#v;B`F94 zq(KMKW_ko73~OU;Zf&o?aa9)^`h@-sDuUO!-}^UjWD7bwX~SZ&nb}J6$vNMSyKyFESnck@?PZv_j%c<;ZLL|U6eC6Zs`^X9 zOH=B<76VosH8ExxxTS_u)435c=6s7OGBmZO9P$D4%*lf_9_NSv5jM7=a@L_t%EM}p z^WG%tzx$#*JWI=ygYR~EdFt^|){Zya9@dEf4d%qg8(Hw7!|(4{@e7oh>%6K2gOSD6 zR^h1w&%#8vn-SI03FvcGd@Xwls2I_J00eRxiD`n4O#WU|vk;}Kq6Oy#kW*MOKHKXt z`(U9|P+b`$0U<39SD_~*CxydtireuMz9|$u`84*C_x1~aWIqc28vy|x#Y1RDCv7k- zgSH6;CC#5;r~{eOKyAeS5&H-!NzHU5%oIsmyRNx(lHu62*;g|6Tj-Nqs!Z#gQJpJ$ z^v{3PR(9DxDHgXMZV(5SBOT6?y~KYOCMT!U$sv>HaOFAYXu*|wagdNcjaUHj{-;lE zu=7nbct%U!*Kfb;&4O}^f8~``H?`zhpUqIID*A7jjbh`(X0!&@+tOg6wic8JoQX90 zhWbA3hIXKsEQ=BwPxk%%T_tG(saGzjs~ewOehOej43c!qQ3?eLjjfhK>jHPTCws$V z6rBS#^+_HNXH6NI*(!@GSXkM$gK(Pt?^3Xw&~l2qZq>*K*|eJM+LQ< zaZh2NdqnT3YAGX+{_t=P_5itwJw}04i4Jq(K=IeH&DW>N6~=6(#RCnlH(NW|Iy-Su z{G8XhcQXqHMwUB-#v^Qu<;A9i!a?+G@%=?#8O^IUdu(zocd}^n&7qmmiQAkKq3a7a zqC$tEK_X%TJO(<3Z}l|$k1zG$$I$xPR{_^QL*Z`%;2P1L^NcN|JBsBiIU$uv#o*)E_ z#(FMeUZueZErXVpL1`2EHRC!KP$2XnuM!n`NA0?1#Us1dhm-~Hu(QX8Dl11nr&H%^ z1(EW^^=&LQqD8yhHH60UdL5J)(4l_RU%j=R>ZF9mRDj{E+=;TX{X9IjC_O!LlJ=?+ zL|Heh{Nk!yZMynlO4H--s}-7>gc3xQp8zzuJ_C|z?u}A47A58R+`m`-9r=c57$ukz z`jK)P%GTQ;{e_MRfZ6dc4-$DNuJJcWAHBs93!T&Rox^s%>wh+XT!TLwPD_K9>Iid5 zZ|TTS@lf4u653DL2wDw_m&$cCPL(LytAm_fQK{<3-be&_c${Z7MMsC;1~%4&1lW+6 zmFTd4#ZXoh^*-4xDSi4nL>n@}l^XRI$fgdQ4`61?Z}=qzH4$kr5o&ItICRpH=FUBCKkF;X zO0runqp#=~UN3pZevz7i{g@x@Eco%^-j`Cy*93dE{TcA>7o+vfdZ@H?Crw=6e1~45 zLeV78;|HFFTIV^Aq)DA zkJpjMpzq`j%ZjS?f>)Q`$cj(}`D)#7zCQQ&Qx&97*ikgCwuMKKd!G(BWUxO76eVJN z)xkzbF1;vCOaM+Un&NU7rKs%DtrWt<@6ijEc^2!iO##PS48 z4LOW)1+6p<^<*Ze;jWPJ4-ZD{`kO>a*LObnD6f(SL4H6bEDj!+QsYbt@HsN7XYO0w z`8}SnFq@c}zB<$4zt_m{N9qX(aKL{bPOm#_;i|8#5))4nS^lwuVZnq)uu$3*2|zn%9hUF(XVvzHrYPc zp|d@ysMvsv`DtY{PMJacw-@~Fb-8Z6qs?_94Qp|#`}L0(y>##xG7u81B7W8UXtBR% zmRS#8uinXCIXlE@k2TcQHF}&p_9tOrHK=h{^hY}`rEG_yUL1YaRR}Vx%xIw*RvQ8B6}E5- zm{mq5dwAcsIA|{2@AheUa91eM*xA`V9_%0ciioLL`S{4t5zBu@NHiUOoVUlSk6Pe+9ht8%!Lx}7Xsr07^Zfd?Je7euP27U8&tls{Zj%?; zDougb&CRSh{p&9JE}8U{7ne9#rfiI2Zm=?~l8ZCX%paGag9cfUVx;+yilAsK0tAL5 zBWwV`%{>AmiX3Dq?aiF}szP6rqB4A=#q;d*ANBURsz7*kkm%Ls*vUy&NUu)FMoi%k zEv8LXay_Q+1B3c!Q<<;tVl$V11x^P&z*zwbu|Ta(_myPr!+gdmSxx9-PO>qG-$c|T{Tk|vv4cd@%043 zZx)Csj|Cxc;NM-vPa1T%5hK>7D-C=%A){@YHa@4*-aM5WV8VpS5@WHep}ELAFNu&i zIpA?WOV&-3C5i6D-!EtpqTzA$vK9pGAka)=U^_TELcp5Mro4kAlm|d};a;0#kXiGi z>}>6BRtzy0lKr94V#z|wP!F>0xZR{X_`=T*OqGGDqSd7ZRDh~tB#{@gFf`6{`!3?O zFivKp3uOJPM8lQsE#;AnOi;k*g#F!5vIKbK>GkYOKYpnA?D;O@ah2#UR5rCzYH#bP z65I_byF~d7STz;v4D3*=@u{)`0>TU8w_{(bCc9RU&i{l&4l?WVZ~h5EzV95P#vai9oAgdaIuTeWd8Y4-TZ`F0@AE zEMw*xi`lPP>E6N5WRL^slRIM~QntHvj>5-jDXnbJ85m9w@ zBJ&uQx*5vu4J>x~fX53=l6KP4`pOpcsuzwgeSWw)*>1?!8{t9CYz{#QH$6whGwn3A|Y50PNqhMkw6+OFB^ z#W+~kUvB;XBD()C=|oD;-4v39qvOgx(QD3{>_d{D_*^BXHX&|%p~Ck`{}GWK$?{p( z)DA)YvYWcb2o*NpIuQUsIIC4E*1Rvb5RB>1+S^L(e;R~4)%?5GSr+>`jxl*nt>RWw zP48;Ce`Tj5-e?wh#aMy&IvK*6OEk%CzChTR3BaX`f3-N&HT0!}iw-?rhVDh;r^4P} z?ib$_U*lJOvwP?G{#Xh3vjQg;;N=`h2#tB?^KN@MBJAnQ+GFs4q()Kl*GroluEcL?XA!LE;PSYWjiEUy>nEzalonU9vK#Q9?s_qZzykj z0?arEM5^TS=@E~#yh$J|=;cybxsSkG%&Y$U1lZjpN9`{AHu$3xS#%+py4qD&VF`Bm zWuRlFqTeIF@4FRF3ob?a!8$p6^56nFb5SjA{un81sIkzcY<*8*5_=n7OHz{&<0QX% zoDM5~4A$_E_h2zmKYc}_Q83oYxyBZujS+fp-!tAb@MNv;B`9k^u1nB&)fmDM=5N;) zZU?t5zYb>a(D1#wv^jrIjZc^LMdSBsWlr})nw6=E5n;#o^4inCFiM!(hFl!LlBRlU zg2UE3>kVUf!E%ASC@J>#L}D{}nz&h!)9jGdR#C3GqExj)4GVo2O=d#bw?)0q-8`Hz zhJNC+16A!s=Vv9NEi>s)+H2GeZ12-PQJK2vFRCnnH9_y%W`SY?l=u5EVP;KMialFs z?wgC@GD`V!vfVZKsqm0vrk!U`v979aw^Bjy$U8Q}M;+>RQOI$VdPqGxiq z*OaaIb>COTBinbviwmx@g)cgbhh>9v<8oKxa?_;-#7XMXghDO0 zcE=~@nF+Dn$`2r(d(VlULUrXRFax9$;yT)>O!te=dfAki@uIQd(A$-A3Q<)yN zy7p=1D8?F0TQNCuJET#0{H$zl_s`ftmqSG>7UG#UL9T0zrkc!YER z0wfhd=tn+P%X9FhW}d_C3{ZUjbv|1+U8%7v^;=9Ia*PwePME!A-qIrFXj$vA5sL z(P4fTylV>;thvLiQV{Uf1it-rc7SN=^{i#*B`uFyk|KR{*`z7Jw~weEp+P3CkgwZqOlv)od}h&NBs@v0c79lzM@z$?o&`!k78yC@lPH+pDHmk)Ro*C(zUFAG|n%ax>@uk8W7XF=VaVo+Z z^LQvIl05#)jt#>IUB9cR(hi_UrwLq6;8Qadv_nJ6DbLkvjVSB|Wk0%4zD}_00j>u- zu~V&jFnfg@vM@7`8$5jJ2&A{DlZ?1`5 zWyi;QE9@WRKV8~CH`K(sV|=>BO^46KNk8vmsujdv*~F+!LyYt>wfuZOM0_f7`&*wS ze)un2gdUXra4g2#PbhtUyDpMXgb2SL_9tANo|U%nu_!(HuNV zR+4EJ57K2NTQd|ymEq9sV`xrF{3?SI{-c-c9x+K0N*l6W$F5B6)4|~Q{-}}GVvs@M zM;Bau{34~uJE+^GbjLtw$m~I4y{G6Z0P#iY&HJ4XM$%ikl*hZ|DULpu0mGgqLfn4y z$e?niR2@%8h^*9OgbD?y3w>T$ptk%FQ)nO4SPQE$v&@sBVQx?R&&{#zz9@H4EOlUv z;EF}e%p2#Ys?o%4%!(;aT4XK2LwC1d>F|xLPQ9Thz5f zLR~*_`%Qt?D?Ci$G$@*%4@RhQi4HdWit{46&~fygi~dZ>vNU2Dxz%JR_MQ$O%O7PF z4VXq;#}uY5#5;lwlNE;#m!gKt93m=lQNo>^(Ij~ENrZhu)!t5hxApv@!c2g56&Xr9 z%-bCnURwe_*5D}Z(X-xUFUwnxtU@%EU=)X%lLxI5z0Iy95nU2 zYiOWfI=wC$ztvG&b-bWzW20#S7RjE83WyfQDY$NoGQ1$2nB+$Rz(8eV>$p9h?UD-$ zC)50o)>$CDHmjVgeO>Eillc{9NH6X80<8IBY`lU*VKJ3>y)<5MVpE5J?W$EBCLYlM z02f0J_}#VCR8yiP%9lREv%6)om?3AQ@HwB_g&aINvL!mjVuMx_D;0bM+z#-C+y`g4 z4MD|gzz2oH6(>TEfq7HQgv?|bS=?7Mp&{POwIc$Jul1U=y|t>mqNVz8@H-#ZfpVTj z`h*C`?uAO7nBHGlSZ`=W zE75AZ{EC(;c=Az-e%jhY)tYaF!ede1^iePKY&Xd3$9-FQZG}oE4F$}`Xs(20&+iuW zR%uynpTghXFEC8+J=?GMs-32Ocxc_LLjo^1egUry$tT~1x<02jyz7|m8O3n!M1H4& zyzv>Lj(u@9adoU=HUga!@DJ;$)Vr!EH97t^D}L7LpGJ8`({XYlQJI)8?_ly4d^A+t z9i&rLXr86CtI!a;u{xD!wgj6efa?)XcPMg9NsUfmS5;@l2Y|u3sji`>s_J)38Bj4B z`AS@f1_OGq-MhRt^OWe=79%jJXfmh6E=(UUYQ&68@70?^Ezc89Zsn}UHHp8 z`{ZM0Y2|HTSa~D|5Y>dpjb-l{@cj1AdCKmuI zYNd^&LtTCT#*RLejMQw0^H*fd&-$D{qW~qNl4lj}?U9&@*zNr-RMP1q0?(Hm#d!m7tddM{Qks@9zxXtB$Jjf4BScHVRqCRU z{-()0QV)Y3ifL#}4|A1*L0nJ=gGlbd!2AS@4Lk)EX?(CNI1Y@3EQtf(<~IAf$qhka z=LB|iCYKc}C0W2tCxskoqr>juFaN>zweBb6kk=U&w17iK8?a6bzQ zfE{=>^D6?jRoiF9)$SYar-I0R$f~IO0%}zkHR5_5N=PD6u&Exv40}=jQ(#@srRt}* zaLvxXQTm2#LD;OJQT!n#mHPDb{*kS@(OkpLXerC^;gKUKy)%!K_z>_%EZkP+RdPwT z*^a?N`l0}lnVJ)nDJcRa7gL|aRLJUhyO*zCRs5%Pu7<7HUWE>$Oz?X=HL(!fTk`bs zoCl>Df#jP1{d$#OT>=xS8>>o#9)R0sn<=D8pLl)SoUr7x-a1W!Sy0~g z1o+cGtvXm%OKz5~sQP{z^)BH<0fyB?+01CCN~G_!f*{I>k*aT;n~zi56I$Pc{*5&7WW#Gi*LAa zzf5vcV@Y0$k^FbL8kcPL02PAyiEDcB7KxfjwfR zO{Nv4^kIQbq_}w^B@u9qu$S!n=KhcJzR@-MnEzCJI^c~^4p0dQvzi8#fcK7##*s{O z|D=OF(x7bb@a=`u`7)?MOu9I8Ui-Cr^68&g(uk8~v;@=+7F0?f5h`S~gML(sFGr2k0->)$?uJ+>GiMkBS`J@5Irz-;kV zk22tT?|B=pZDXS~#cucNh7Zx~Ti1i>#uK9-a|B|!S zJ_b%r&Wa~MNqRXzHa{yOh7`DBL}l=JMowKEgDQzj-3G7RPPzos@?`^m_qR^3xBblm z_BU2mPR+Wca8Ur2Gt`zKvAgSngC%8<+}hoI_w+0tB<2uFi)T(;@x&shDgcr=N zl2cGod3W}6t2Ev)#$49Lf>NpO*_G+GEp_L{pxL&3uv7E4_u?neo;< zz4q(wl>=pK(jm0ZhliPpMo+J2P0#LD^&dF6_mvELWWlO?5MnjDeu{-KA}i~`gQR-I zq@nCBVW`yj^fW1HrE#VzOmOAF9i9_xJTbd}p7`9YaVDyUGH=jtx=^q$29q(-E~ zXX_5ftcqWGxi_MkFToTOUWAMUE?7VDk58a#@*b|M49X}j4ibIb+`Bl}$5gVO`_bOk z)PxHBtgmHeWk&;)J=haET-|?xwIKIK3c%5c6|CwrMC<}Tt!42Ol~x)-%It97FjHYn zOiG;MzP(hO!~S3DI)cDv`cclUZSKuYTL%2_X)ufOB%oE+ys9~!AXAM1qf!-bZDZ@< z1hKDHn7LSc{8g$XDhAzmJ3LJM*4*E0_4gc?_>Fn**a;_~QKBQx5esISLA{bP3v`M! zk46ftvVaPLABHU{5MCxR>#I-VHymHbR+s*xgNz&8T4*`=;EoY0g+#DI`S-Nh*JN3Q zsvXRU^@Zz@FrZOV!mu1NkWs&Uxw$v>CwG|6t4WY{G9duw7T=a=9XOWT!_tpFbfO1? zf&fG7%k$HdtJ4?Wpqx}RHSJZLiU7>x3`^TtOuAngeA z<@|zrv$aW*DFCT!tZfCwCOd7kPdG+&XbQuiacUuuTk6=3zY%I3>qrWO2E@6QrZoZBrW{c9}i0F>DF$>hblR0F;SALBm zxvK#I1+r5%T%gv*DDeSQiQ4azFB?;U^=GQNhMtK(WrY=Zz?1uyWQHEn7uC$A_CdD+ z*)q&eKkoL8%@w;MBO|tFVgkZq>g&9rUXt?30~0oWO@f1)XHk*!ldVN3!#2nFpa?Hs z*3Hk;&%$GHq*cDD$tCTv7c7Bv!nR_t>z;h#+_4`I=e8ljcnY9Ay{2Q&05wMFD1Vfb zE2+dYD+Z{+yt{x{&zMAeSzcj#PzGl6!WUHGMF+{{>G`%6s3CJglc3=A3@;wadj}_9 zp4ZQTKFf*t&vSnz%#evon~RR;`lrCWcH$uZ&L}1=I_FMWz}c2Jn4C}B>=s+ea&Hu= z%(({B|L%=o{)J}&tY|hg3OqvzMue#oCnh0(Y!mZvI>YBDk$?G;ztZ+GE&(I-&)_6z zHS}y76KO<|LDvv=Jn2gy(^vlSoKMdpb7uIEjR8$j6w43@zljdd@ zT{cY9>rDacHqnQfm}qmu+e9JHeERB>)BW^}N?F`($UxEVTXrJ~t`JAElJ13xj-@W@ zEmsrUy7?$QLA39;^H=^$SKS6`$kyRvzuMcU7E5aFPXtlsRPt(fVAb*zFr#9IQn6f@ zyT4cbm}*Hk$@mfJmrqvt`tN2gFKbnC}@kt%BcC7q+o9MI#ACA4|+}!T4I{Wd|H6=BHz(f`xOoGrhGm>7P z-CSNjIWhAZ;vnw?acv=l4hesU>lh51ciaBsmg=dhr1~)IVb-I6`v2gap8amxizuR{ zZFxM5UAPN_gTJN|4^~zz;~-`$DLp?30C?}ocxGZ$+WmO}f%eh$z~Z3c zL2p)mKVY3+r$6KNT$~uUUGuAZA(EwmlGvwHfa&4EV|x~;u)$NRb1~CjI63KP5ek0e zWzHCVxE<@Td@){f(&uwmm&VTx)!fvK!zDvY5Psd(MT8&8!h9VJE6(CG2q|NE*N?ea3OPJ_4c-)tG zr9vGuao0BYyZ2VjvSF`XSlMb&kdR`O6u@Y(x4WA=YFCWOIjz=m>ZOjpngOIqkoDPK z596A{3lhtMy>Y|C!@-Qz+;e+cnOXoup~Dx|joc(np60}gOw2AT#BB3Shd!(yw{Ej4 zwnkdGf?m{i$6}i4GP!hIv83d~CY1~Dp_0@#wyDi`^|#EaOAQaP$&ifZT<$;A^GO7K zR0R+2ydZuKk~K5gNF%>+UlHsOVejwk(U;`2GBH8k)7w8Q&tetW7p@3-4tI9nyxDeo z)MbOt&o79$?wVQk*g4rS zv9Me(S6GSY+PG019iNPuMMTO;rAGGXd+qbOQ{GWQ$IkZ#UrsuIh(eNOBP*OPB7ob4 zmX8C*0DY@hP*7wwJTbwzl@QURkLWi)JxUeb14;;h5(Jc75fWK9Hwwt!-qGW!&vK$@ z#tw@PXt;Sp`sZdyY%Ie@AfB2Z0P&fuIXvqbCsk2)>veg^UD#vh1zo!^zYAiB_@`8G z+6`3%c4k?$L-kWhQPt#Sbxlpv!9jf!f60QPRcw_~!~CkC$ZHv4+1L732%zBPdvY>+ z3%^zfc3b6e0dHzo7X{~$%Mj<0`0`!KS<2NP#5n~Sg}@7W<_cSqO;A_-Zq~*k&d@OR z;D&Iomxwq1^m1=*P)h;^0ypV>*H9o4fdZOCz#J@r7GZH)VWI+6M^B2=J=kWxBcb`@ z{aK>Lam=U4i_S09O~gP&e3YqN(C7X$sn7wrHa#jyxb?n5pjt?^lYMzycBg&4BQ;@| zwB%4PJx%Lotm5SHfP^FjRXl(A^=2kKa!ckdhW*dNA{rz3o9EExz{^c`7Co39L0POY zGYlL|xh^aGMQoHVcjvF2E7kxRGl`#i1{rKjd=bZTu50+3T2|h>OW(3c#KrxNiAH}W zqeSQp7QEUEzKj- zaVUgjyKk;=vDD}ZhUy4N4XJoR%6x~lTcjN4FhikrjDETYlSTiJ}bxM#x5 z*%Aljs1#=lGUo3|4pdkityV|SyGg>4_~%aOE;0Qfu&7|c1=cswffozpA807APOS&J z>vs-TCh5=+xrEKx%sl%WrJatFufGRZ!_$U~*?X~InxAD)vR(N4vq|S@z(L0FU&l=^ zk{h4%TcJ{mzcLelMFGDEzJ#E;q#i5dQ8;B!4;akxfdN$jO3$|K;U&J`8l21v7bB~w zAxTi#APLIGE~2Sxs5KjQL3i7>ET|Qqsb=Akvq1 zs{XvS+hRINHQ<$=o$VPAu`4X+J?}1J?Gano4yEI!?7FEI_)l!>8a3a|-*m8Z?QEK7 zYZMQwf0niB@R|OM7{9-@=2?@54YrOJ2KvHxL-1CnXZyF?50$~@gqBI3*&cRqOBe;T zJfK`-DsOyP3@4m{E5cqR&gDdm?3N}wOw8rPxZrKPytkIlp6lf3XhQVc3>~3;6LxN9 zHke>MB*gebU@yk)P@@*6Io!MMCx@FGTGT5(2>k_a33# zzN?2P+1Cueu1w9?sfK95`UFtW3-{3c0FE*cpAN8k8! zIR|llar4R4`yLgxc6jtVZf+5&%SQFOtJK#uYcohZam=h5njZ4b#-#xPHoMVxpkT=K zM#s)aMWQqQ)fJ4s@bv!pxmmm_Cj`l(>v?pMkwkvklz?OVh0n$Pd#LLy(W7OX_a#A_ z6iT8<`afiED52kd3#{%^rGt?(T(htQnyV?0wlo%nzaE7=1c{JsJl!8Z-u}R6JDac= zdRWSFb9Mcs>G{>1Kv32?jR?hwzY?q)3v)`Oxmm&bd8GSi`B_j&*{j%({M!4w;vaSc z1L6vj+YGP1_Uh#1ir?XiV>vqRjDOh0G&{oms&^DSS|KNQ6b9*_CO0&2Vns(aaB`2k z)fz4|W-cg`$A*;+`^1Q5hJXGwd-7wXbRd3Vp()b!`G&LD=4@7(dCW{c86&9>3}XB^ z)i#d}pB)KSD;jJFOF)2a_fOAJq&UH>vo(@_)&6#hp;f{-h1Ky7QN4k^v;Qo6-|Iw1 zvf_T#l^|LR&o^T~`qQ7dw|CI0n@}X7@l`l;u}PUl&2Yh^!m6&0qgYZ+*T~El*|NsNgq4;Wv(NgAUH)#Aa+KFludCYx7);HKoj zw_{5*(3Q}xGAEAI5zUl^AXRodUl@m3Cv`hALs= z^Po(ff3>XEpsU%k*|C2wj^ehKfB`|cA&AhhF^j0EJq(HL{G76aTAj{;t(kZzKx2KT zyR);|nkJq>3F>or32N1k8#s8>uK-caN{#98(_U}!vq;B=IOZQV_8OhFGsLX&ni8VB zsU>~{X!`&!?$ig~uVcd*R<+7JoimcrNa^F}QvOSOB2n^K`EGp*cy+4iH(cBdAATo_ zWj%)u7pb#lKA1(u#4+PM@}<}b9q}7Fu1#uw;?{DP;E2@01oIr}^waFmzUBljzP(mW zJgiS{RM8QMPsh)T>#8KDXEu)3oEzK72K@sb4@sP&(Vjzqt{Rx? z-rs~eRZ9Ll9csFZ{efh-sTj|;FlCD?cy;V4a8lTl!_P*XBS8Jk3KF^^(pcJz;!!QWYE|FqHF12%0<^%l&C zELVtPa$_YSHiXUm&dvvcWL^uGSPGeS$}+ZxtI;;nnmS)xH0-Yz#N*Mq$09RjsGPi< zz77OtJ-O@M{r6x8+SpTQ(sxweXrKG019J)qX*iMEDyDh{toJ?j z@mR0`lTT)2K zhjS37s5lTSIhXNk_zBGKXKVDI9;efs`B**X9n9Y$Bv?jbd-{XQ-FMqwGxD_(G_V3_ zun(NAX(-^Mfb>i3apJ$~U7Quhc@BkbDoWN39m1tatczZ_H_`%{%K>KfvBpD2q?Qcjy2V8_^6D8P?KJ7Wg%7LGbjx^9#)i2u^`IVV*#C>pTp3_`aJORN4}@c z)-C? z^3EMady=Vh)p(;Z`Muj$BC8+v&QYImc8_pULMhNPmCQ%dj8BRx!`()L2ih<#zN&Md zJ37rbyK79}eqMGuP2r_x%PUd;aA@w9RQ)#~M^cv4Lf`!?3JR0T(BL99&L@)%;b24I zO1!Q2<0X04H5nkBy=!ioPd8#L!xT-}vbjMh>vkJ(6pa{99AIv;MG}d0@e@{8R(&^p zp^Uo5k9OAjp#NF&fEg=%mAXUklzNmLF&-|Op5DGB?Rq1wes1-rr|)| z?dWm%cyIhBm&PXMvbH#V(jWOUp1o`^`(3##XWThZl_lDVq(}aVYkX;J=10Z{rDn3B z7f_lKwQ5XtTa2s4OT$eih58*CuOZ&$zOD?z4<( zd7W5V^*G-ecA)WqW$FIVol;Y32m=KN<5cKIj#Ew4B71{}w4QfHfY)%NTF2^{&oY0|g9G#~NB%QgUXm(TQ*C&8T+c@P=cz0&E(43>u{QZ9j~AIgsfQLDvSlh`}ybZ5i98bR?K77?brG2VLg8z8!F2RM#|Jy zbo_C!60qq~+Gq87S5~0C%H_H^z<~@Io8^vLlE@nORW}Afzi8OeA?wGjp(-+G|38DF z>d}cdxQYd6ur?>j@~#v@bdd=R)3Vel^!-w_-OV3a7$n>uQ$OS%9_((vuIeL&VUr?s zb!%#mw=wTM(xR^Oc;VmvLYVw^P;+>WtdO!f>z_Ud!dK5J$U!~sJ6t_>#z(|>Or}RYp*^6xZ+@-cjmyvAtMx(BEO>XvbcUXUMl{2OQL2>TO zqTHes0|S1mp6u@qB}w;(LT?EitecC{cl#fcMLUD5N<5f&7XFcVrQJw*HqLiI_FQyW z#qMg?1cJsQsLfZ*=ID*{byTOnmUsxEzeQ9P@x=Vk)Fj;#Xxlo{=R(&E!g0^Im>?yz zeML{XNjPJej_5({a{Db+apY9t^sj_fb+VdKP@0_|P8?5VUIYWxz7RflaKhA2oidj3 z)1WfW-`T^=$W_Z6K{|Jo50U7ykZ!3xo7~U?Y>vn3;NF&J#22^)-_2)G>D`G>_H6wq zH!gC%5+$v3u_1oqY=j1ED@uaIlh#y&lu0p5;R~GG#%TKHY(xb--)N}v zo?jI${TU5g8~As^k93mU5Nb?xQ%+>IeH;iPoifLY)H zhv!5f*aNB%_*;s7U$kOi9Y|q0H zppS~Z0sDOT{(FDQOFbSRj;bi>@6Eh+(|L>TZ7l-r(_&3}#+u3GgGphUNCU$eebF0s z$t+yw6AqFsE{weHoy#r$j?`Qd$}-Zbt9bovgcf@_piuplmp}Y(<4!}H0_|P&SIm)D zW(^hC{|RY~*%5~#c$ibsEfjYi_m5iSIQaYM>fE(8r+w--8{dGt5b_3i@2(o9kgX_vJ%a^f|GVh;hWmdr(e+`?C!(7R` z`4Tfrj_MgSYxWv~*eIJ$7cY9MHT2a<=aBM2xt0${g0*9jhfIj(6Z=PUk7 zmxyYQIJXV`wM;B)u)g%78p9axtB0G&P2tmiHy8I)Xx-F)J-del4S98{Sug_|W1&&s z;3$wR!?d!l`cIU>>*RAEL2{Ek+O@h{-9%ED2XIyGu!?F*9r7EUd@VaO63a>@eL79+ zB-B)`+qp@Ld9F-V4;2vyrup5=G?=2iE(%36UxtbyCAU=jX*;s7^>>rWi!!|nk2Uvf z$Y;RwZ+Cv!V#*+m&i7E(^&6$VK?mFmff1o+XKM)x{d zKKCuzn9MD@WARQa{HUBU)MAYB?I z^J2e^#>S3UNs645QMF!cv$FiQ!lTR&eUy%U$9w~C-ij&26fKdpb`o}%+2VMavq+a- zA^j5^`e|EQlQ(UNd10#ADB>yN*5l<7b33?id7t)TSAy7!T?~x0YZxw$36uTI{_cl> z`Qi2|S8Jie-lAJlf}uJ#1^uyXM#76NM5+!U^rexLZZE=|#V^G2JK=q7>eKZsQ!$mN z)ZiJ01h%s!QVNK=I!_ia&R)#ia?k%~r{tfQ9$-sT-rD@Z={brEZ-cAcYmXma{BPw^ z56W!L?T?Wz5kh~-?Bv2lBb~p*HM5lq`%U&44BKf>2F$O=PY}x4dqX4{udC#&Gn6=B zSoyMJ>dV2wUyt$k?O8aP%dYzqpEcISkdtY`94!!fEpq(bC<(|j9|-XFcJ3?kTc&DU zXo&i)Ud5gNXM6XL))?M6ZQhS1(c0%wwUJ^KQZT;>{@;CA8f9Wt??RHRXm*K4yKI;0Y_Kn zw}Ehv^fjJb`9J=i3V)Hw%UurGXHZ=DPY|T8%-zcs7XNuyx5SvV$FM}!r&`X(*wCj? ziQpX~uWL+bSx}7}@*dD7xIegl+Y2)3+Fp-GsE&tk9ClKRTO7_@wdreG)6?0P?mioh zEiQ0>+Vom$N){4|7|Cy6vHrl7ImOL9-$j4ePbw2xjC74~ zs({|o(ZS}oR>4GWZo!_I;pIVN+e;;3;z+)^lVXkZ>#jTQi7>7Avnr}Is%S=f9gGYN z#_0CHvNa0|^I#zNi9b|US4z0YB1Wn>5s4>@Uy2B$W<>_>MkdTq9t!8TP=3r*6Xn-JT zTBVjAx81}>0pGC2R^)Q$8%7c5W!geHr#*c=SH}GCa2#}(#vhKOcIRQ(_&A6XFVXyt z&$gE=?L$ID0-q@M<4R8ZVCdzLm0FS0UYYz>fhnOXtCch9umE|aqsRH9`jOW>KL^JK zoODb}SdIkU)zt|;;W#>02mH0G)?lrcW*<9K25mA?!$BP~NK3is*X|x3-rV}9RvmW)MOguQ4ARS2ek*yvFvT93;kZo#$fK3Ts;(q=wwb1t{)|% z;q~ap1$OYpG8b=cV(su+HyQPeEXHUraU6cZ6EbnZK#31vCCPj*c(h1O_(<>vWPpJt z)#7%va#GL1NuwR{TR-k(4-b`ye~g{s0`(@!OWty^R~rq_Wq-UW$ygJ-^H><3DxxE_eR$3K>A6& z7z6tK+k1P}`02j0${yFk=Ky5WRb&T>4sr%H-`M|boL}fHLRdRmQ|<9r>U&nWyNE&sp~1w1JoSITgJZSW1a%Ja(C6np1a}mhsN4TC7{nf zN@?lXnawS@i7f5k%}mU+4o({G&(=-GBus|!!d#NrS@iuujD7kdi=6qAtNf``61ML|{L9+zk@&!G%e` zvd&QNU6YoE->x5_6QK|4GQkogQw(XWv$Fv67vZ*igP{9HUf0`O=Hi9vTE~vdmKIcK zSxvo2g=-1aQHhN7;y$jd8G&vW-G8g65xE=6?GEWQ(YE$BY-sN=V~XYSIB8@S>w*%Y|B;arCnAQ^czNER##d#$&nGAx$%pABj-dvh++T6CaU4Otw zQI-MDXlJ*8L8@a@I(WVk)`EXx-?n zIl~B%Ed1PD+5II4bjHOx=bL;f2REl99{cBN*-Mp5h`fQ@=VtVFXI1;EoMTCGx(|#uWeJC%_>^I+6P?CG&-qjF# z*;xO24ei_GV$fk0P%Ftv0n+>3OU{H`;P@9VrcafD?IOSwu`Mi74oACV(9T} zw73?2cIX>F#mDpPBU8`?FFlQgOFMe_x39&}21be*Sb1H)gq9zk?w;ed7%)g|^`9<1 zosDG2uvtmhfJ>>}=zhVU>fv#vH6lJ_^|c}n@{SI8RYb$-c1g(N#%IwH;qR1OV>L58 zHdnKk_y8{Zrm+RYN;{$YOd^#h!{6SEHh&6MKae$uw%@$c}!`AI=3MMb@$O2@6wYi3#Yx~@5B-d zUZzB8 zW)>CEh!XCccANoG;&>+I$o~gvNz*w#VHiCXt&@{orzib3OF|^fk(N%tpqAxeXxkv& zew6~%o&Ji%u<(MSWWhFM?2tgA&zOtoX;Yh;EDIo)WUm>-L79jIfGyr|y<@Lz9>?>m^fD(Tr#L(7{7jmMm=@2|4Pj6a2@0)FBd zr2BqTORVJwGO0$BXWzt(&S6p-fEotlG5%gh^*Pw0kN>1NFx%+hgHfd`C);QPE9Pr! zVfha$!~CsunBpq3pq>v@1rQXas8FI=7bV5swuzS9|7VS$|)k;5c2ob6fLFpBp3jPR-7CM zoLvl?fVOrE01VjtLv>6~Ij$_9L2$w(Az}x6LnD$=e<j~ z^}zU_+T2PKI<6#PCSY9k*qm~ODDGhS)z2SxYJ4I`yXhGONGer{3h?B*iDc1WX2vZ2 zd6XaDFsV>RAnfu_7F$*g+*yS&h) zT6+N+6#s$(t93PXvOmH=v>%kZY(J~1bO@$d*OHCTNepT!iG7i{vAUi{a7WO71&;#U zK(`mhCp}vbcRsN1lgUwHjy!{aJAiKD^o@<|w7L*Xh6K40(||RH#-6Wj<$_X`ng>P6 z@1eQ&-qE(%(YBs%P88BZz+OIV>i6%j$~AFfSu89yBnYcp2cZuR0CobhFE}{x2LbuG zm^72fUMTk=>V4Qo_>CFqXvWQmdWz;<>QFP`RsVKYGO)1N-Z{YIb8-z11gIE0R#((G z5>@nbD0hSX*4YhTlCNaM*wyu})biZgnP;$nyfUXo`Ys&XS1>Q?^RG_(1-wOjT;%0{ z9v{Ckns(WupnMtB6mxPcO=adT&8|+b)D^T@7?`2l+ax%ctG>K@ra~3XT2-l6VjvgK zxPZXTiD7J^uk!PSf5)0F&Ta9^>>PI~xd}_ch@si!6uU`SeO?wYBTMfv{^AlH7Hj6B zDCu3I>?yF*-IU7`Ses+C-!35fYx!lpuMZITH(DJ;n3AFZ)caC7_=5kw9t|$^lmu|@F4HFDX!ub0|rAKH=TG-2v`d^c(*w&Pd$H`Kl%wfm0cr?hZ7cF zE?|3!{&E*Af^xcJ%rXg>f1A5FYKp7RfhoHycVYaG3VEz}R(Zaury?s+SeL&aoFr-P zSgt~r80YQT*LpjCm;af<5ZO~CNWhdAY^e|HZQ0^g z+x+-!KLcJUGvcn(4fpwkv4SZpl=iE#ZEg%%gw^-WmxrH>gmoGz$#z%kGeKNCHMU2J zQ^y{Sz*r_3peve%TZFTHppf}02|99L@hT{O%IiNZgZR#n$WDkDI-x%uzqyT!3OSiwN& zu!m!c=@2xa8eC>Y!%|bpJv*n>0}DE7!emrMckG;*aJeA;6sD#Qs%Cozd7D{$`Mu_s zK?i-*`O*jL(tjrR?CFxxt45R zY7M;4JJYJ$Kk=_*&o&FSo8~)47CS~fA9gpsc`oM2ku%=hNNEWqe!QMssvbbO+)`5? zM7ez03rgJEO%&@Z=q%=CZ+U00lopoLkQY!^605HA8SQeO4ZuwxI-Q3U{bT*jX8wro zFfzsav@-(oi@ft3oFfyCAbQ2YIdkk-Yqt;Lsx0)gu>Rga^1G0%x(vm?--KXV~?a$43fI;Muq+$Hrv`U>oty+ z(kTHOcG%}D15?$#`lsT`#T&p^58{Y%2UpO5d-2Y#;iL0q8%Dg~$!zt2Rb!434hMKD z>7Fj8^Riy8y~)^`U}ZUcy4j8~n&NA*8E8&L36m`u6y}6}qw*6_5^SvK#Y=#F_~R|L zdNaTEXCrwB%?D|Jss6B_&uZ1BfGBc&Dp4sp`IC1BFthuI67?4ZZ9yi=v9y8kkb=U5 zR$p_I!5CMxn4*ka^HXf*P_bknQfj7$E;6(XvKSR=pFu=PYBsfmZ4J!1+ho@!g1D1c8`dh+ zF@q(!`6CUvuL;9)#*BGUv*jiJM4Qbh0S9)irNz0W)M$^peZR_%Grj8z$+g4njg>cV z_DhmC9XADMGj3!zX$-~9?hc#at85B>6}ENtNp3MzS#DvNFO|O(_=mB+g`jQlfuBIL z{GFr4sGO(X*wmdTPJB+0q>Ps8+3KbdaQO@DqmoW)_Rh-upr)i{VbnFTXhZavD5t7f zv$ywPrbP3&wWNiMjnCtG%fr@sJoP?jlAP9M>xdroRn1ShU1z=$KXY{AJz2i^)3YA< z-l(`xJDhc{o~dWAf!@Xyz~6=g92FCY%i>89h@s`s%0$ z)Xxs%inzbfWY?ARM8H``05R~>jSkG{OtELusWez_07I{YjL}{bQ_#IEWo?RG7j=mr z1)h+doXUMkU?FJpCCM9v{4Vt&L?6RN(jQC69nbfIweyNtnHf;Ra-+s46JCm*FNM=i z;Yxg!nzff}RtI=j))e{n~ z(;FOO3!h>1wZd=)xGb?3@43$Z#Q#s&7yU1TPz@e4AC2UL8gsQ+ zJBpSXr}6muSpb8X;t}-?`AY#H^|Zw6(ZbqzTgyh(agZbImC&$pe*R7Q>vpyOj*E3# z;sDI^t03vq)A@I4dw5Y4(QqVo){6FeB{o1BRcaQVMfBSjD5^4}R~_v9499f9bRQmMK6A z?v0<}!E&)2)mvN2f$9Fy!50E(@%m`cZ@UXJG-Og=kFcd+#z3G*)(&dv=Z}0%b?)6@ zrmY2L#I||DSy5q$I09%fWJ6KFv8J0Mf(Ts21f58PUES1f6N^Akjz(3JO9>_8&m{1l zihfGW@1rLyZ{w`5V(qeWPqvz2`n=1yB!>>Y*bDyuMaSN^Y)}46j{QrH{Y#GhOOE}Y zA;*M|RskjQ4*DW2pztq6_Af>DFGcn*MfNX6_Af>Dzo*FlCCC0H$NnY9{!fr&?k0V3 z^uV8``(60wn-EC~DNv=02?IS=Ke!luT6k7USjiH;2!%?@cj8`4Du)G?DO+W9V=jqlb+s+-6He;V4>-(J;LrxpVGaxAh_#S`py2k#+Yj+1d!+o2YVs|9*D# zrfe={?s(ua_0x}n!^4ykuWQx0$LsB%MTt{hrFKAEd=UD*W^>eh(c7i%J~ubTZ>e{< zj-fT!{T#x^#RhIe<{Gi2Z-Vx&CDHS`yT&Aolp??UD3%J{P(&?xr>TjrwRmbinA{j_ z#y*ZazBISCQIzQD<&*|Q)3dXZXTXpE6z7iSj=!fE(rx$% zv7L2J6QIDQMi?T>EJ{>aQ=>gS!+O7@&%KJ^vwU*><$%cs)C+^Z0+e$ebu)Q+J&W7@ zcS}*?I5V7eZG**Jo@-b91dcYABWpN0kl8~y z;cx-4J9HzuO{^%IpCPaig2>gYC@}+DKMnQfK_l|vp&&Dh3ji}5tz)p&R4+6spM(6j zCSXp@Ejo*n%`ECnH06Ms07XM{Q?hcciDm?ESb<%)UJ@BSYE49->0eN!Ziy#77w}df zmB^!xCnN-ue3tz{5!pvnJup>Z^_78ps~EI_kiy{gXaZ=7fPZf3ulv4|%e9m1zoJ9U zBzx7hGw(b|W=W&Q-ga)TkQomVUzRku;kH2RHahb_MJk;#$7H4@+N24T8s;-aq2bT}?;*R;5S8YKTX7SdDd3s% z8sU2rJc^0`(hiH-X!(mlDHKu|-x#G>3w}OEj-H$s_fgPl?zJR&DsFKv^=ncFl@1T`2;^|dD*h?cu9G}p^NFzGn$pI=( zNPu&bi02|9ug3$k^Wz7pw&#Vfbrc?2JFx$QelMrNLSK#gG^;sMJ`OjL1O%aI*T2Iw+nRnW z=9m7=W?E#!(%-Y_u_(O2ER6 zh)i5!KeoOW9w&Re*rq(FJvXj$t8Y-49M@^@_CXoh|L8^WDMd;K|A6KhXnYSG) z)todU4WX z^vYcC8}0t68@+g}ZdO2`kFI$@g0o)24*L~3`^MsW>|!vbawN9i8@D4Br~?u4^HCF> zxYgX;QCQ|4V&8MzChZ<~LZZ|PX1m2J-iCIUp~ka8{1f1M^=x^&r-FsbuU#hu<@L<0 zN{MFGctV$j#on~tv9p`MvB<6|gD1`5lfDXm(unmyecK{t}eT8MX8EcJBIe)`=>RBid-QIZ&> z*I)R-ck{(d_g6uEid2dQ4i=@042PmxI)eMb$a_R{V6|%HDfF6Lh#a1Q-@6I55(=)*D)&>FGKZAT5M^Zx)#+n zf3~JEZ;w0bY$0&!d5H56Dv!_TF%14GX9$bOaCqM$gLRQEOL@Bx+^2(%0IR9@34X3E z;uKgD1qkE5VX!SNmUe6SX!y%RBUKs=>ron*Z02mHAu_; zY@w02`$ZT2`EO5XxxDWLn&#CT{kbMMs>p@KwO3;V4ikl6RFRAFM202R3A|e zDvf>$>#DgbX$deM_EY8Wsl>ox5^zk{R9Vyz!n!7g;1xbZrMf@(o=BAa$d37ujp?h%Sdn2rM5I>4_I@wl zl54CsicQTp6Gp>FE}owpQi3o*LXQOhNa0P zl_$o{SQ1Wq6TW_1IvK;!qa=6}Bq=E=A<>QK_Xes=qopcBKspAUDPf>*B}1UY^Yf$7 zm6nIjpj)Dn&Gm!EJ6UW%SqubJ+JUCQJ6rS=orCq(lnuaQ5*(7#Iy$Ye-kf9aL6>6R zyR{`Jg4^>4uh8m{p_*NMdL_Uk$x>!N-QK~usqd}m*v!_wQvFeWFgm17MMVqmz2rm$ zew-Z!#{CR2kkvFKw!uu*z#;87Sd))0+Dxs*`WGO6%S-DuF#vgd5=C9EK5Y3ZA6p*wG$g3;CfP~0jYuHI!#eB+k|+Df;6dz|Dc&S@y1 zyEOYwRCCZ~MU-h`){-U2)%m?inCbw4Rr(!kG?ihgvDRjABjev`B6~RTF~5B@Zle9f zZmw7`!CA-d``q2aqVT}Ha6vQK))x8Cq0fs)&?|0%x5=KXD7_A&y)+F<4N@+K@m4Ar zXi|-GtN8g}*n7*MIHK;2b3zCZT!IG)8rxNMdvzW;Ro z1w8w+ET(3X>tvQ7?{;eaoI-t&)=ZZcp|@5q$rdewt8RNQ2D)pwY0VE4RUVWEY+|-aI6n3lvWWlb&`E~ zRNvk8w?lXN-7a;%rWP}a4?U&P>H^RNU8@2Pi+r{hF(N$R=BQSoya}O!OmedO!@+Bu z*R@A5`h^eeIM(U>ey+leRVmVLvV2~R_9PA*&X}I$im=@)X?gq|wIHAJt_;?vvR(Nk z$=XHbK@2Vxc#%22OEf6cpkVz>oGNE!X2Asw63+_oNASM2viaZ;nwz}OCSQDTwA+zB zf0=Jl%keT(fi_ud-c=_8kn4*m>f7~i zs3eB!jGROCA zD&-fI7eLDkA|xq>gHV%$lubr=rDBzq>(+wpZ^|Smolg5Nd(Gah_m@>NyV#d@Fw>7d z6X_cKY?Yt2Yy0eB(X1-Jtea@;4=h&wDcT#+v~jymfnii`p{7%XQ`#|7 zx~;{JUo-e5r)i{WB>;(uQOAi>0g{^G&U<%orj-N_Ol5h0EI;mLDw_;9)N!w+>XX#z zEHS?EdYD4Xifz6=odIaM95FSvGlSW17B(?!-5Pgklaf zuD+#VIGcmbRbylE`RSqN08KfcVyBCh+ogs=Ot8}8z2F! zHp6jog-X#q#Orz>SIWyv_NS`&16kq@%C))kQaL3OYXx*i30ickgKKhsQ8WPgEOuYe zqXd5WX(Pj1Ogm8@ec-}Lx!FDa1tqkLoz_T)M+8PcTk3MFMQEy6$;04r@3XJ|yyi=} z#UC;e5y*sPygG$bpv@vaG&LZHd4R?c75PiG50|$ zWV!QZ&NZn4zc`R&idg1>zzNt)xg|Ko#nSCt?ebvxbdSXeIG44@?x7<*Sm#Zf#&QYXAD$Q3Gno z!22j97rh(y1hIQZd%!6)lU%ez6lUilY6cr~hl`n6BfG{;+FFDqz`*xO@CGI~KHYJ{gl+xqr$0nnMuARLNtwy%s#CK7<=y{64fNV;=%-zj-kE9AKK zrxbb7j2DnUwf86?*F6~G{^b@^o(or=E1o)z=`{)>H@mo6ort}?P4(-KHqBR_Vy>lr zsj_0OCj%qJK#7%>rjQ-_2oym;gb5==B8_w|>~oACWx#cY^x|8Gao12fcM)aPV$eun3l{t0VBzsWd7wgGz}m**aDTImj3Ym*kPzakwtyXq z%gZ-^Uc@~?-ro7;(=%XqH8kyb8$2%JCnH03ptBzIO}RGTjM~JAiB73mgQIwhvqUVn zPgi8{rFR8VVpFw+|EVtTRj?*LT+|_{JDk1veB6d5Pp|*5+Tde@8xoPmPp$l3&&zv} z@R(p0*i?ejIT8;vN+wCkuvFE*qqUbc0{iJYw--s+LRQO0V#lDR0SVjtqhDu=r@}h^ zGI|O+S9j9;J`2?jVydcEk5{Sp+mwTP^{yff3Kz@8J}X(>kAZSUI`uopOhR-A=&8IO z-ge_UkoP4;b+$AfkMpXuv3tgLbJNS${B`!bDT#{p*cQM`?xZ0~{}0JIh(L>=#b`J; zx_!focYo9B$|{V-_k;Q794P$t6&Lgxi;T3wyMz+{KBhnujX z!gZ&B~LdA24J_h3s0fNdqs_in3=H@P!VQgnnv(XpJNzXcZ5 zW1*E=hc3xJsp;s^%qCRHR%1fU3F-=-dxLJpYWv&!W?~+CBEk9jyAO2^H);!MOHW|S zaccty0!bf{l}%IE)3mZxCI{xbUzx-1{f>_Gu(0e+e+miGF!L%h?n@2Ng@uB>Gn4US zf*8;)dpAQeAj?2L_+{(*fYQlXTJuxVe1M#9me#`DOvT*4Pfh=SSO8Vo)F;Pp z5g5VtwjLv$35kjVOJS}Y;@snD9)(!nADx zk2cnQ&9OVO!_8mx-fU2))V`KWzpWDcegF@Q{Q^6k9+cLVCzM1=~}rIzmWhdz3J9P z&`8VN*~ySFDKQL~0zt|3eI%aT>qeg~%E8ks+r^s>rfZs>&L0n37EGSacIQn){?VT( zrXCNI{DpVef=?REN=6yi(cCRAKLm9c(o!~6xql~ql)zl`TQQpXWKrO4T=vOxT`7zUgyq-LcG)IiBY)q{IJ}X)BV|@fSV2M zT6@SGkIrSALbE@&f?e|ot;7G2qp-t-e5-70U+J?uM?FAW;Jxg%^Yr{(gMI*%$OJwZ zQ^9_r&k0g~u4rXO7T^G-xUg#&M&{O79wVfY5yGVCK@zwdlNboFFun<7q`CiILFjz* zg2xHGAWWKr(3}776d0C|!g5651@s^q82i0{pB9$E_^B)bJ`MXN^3h+tP2Oz8IpY88MW|Smj#J_; zn7emevNBmTjnqlXl_0GMut=!sLoOL?49sB}KR=1HXN=-GLj`HGMc>7<4r+1^r{M+k zQFK67Hn1hhk|hJ+kCu_iGbO)b!K3-mE?T-~T&Hb16cH62q--h$OVN+)k)RK&=S{^bo^@(QO5Sc_R7Q& zRUHf1Oy=x+jYaF>v9FX)NdpX!9U_wTHFi?If|@Y4h8Ca!NItx0X;GV0ovS^2!7Ljq z-KjotCD~a6cdAw`_k>~Bo>TDYbw17Tk-5d*zBx$^<;bxA@rvHBRK*krxh%Ei(5{+y z=t0uy&m*hpLYQb*yYX0`HWDT;wZe0D=I6#tSOzuOeyN=w=-hkomX91@RV{7aEWRYm z>0%<zYP(21mIInuWuuc-q3o9 zsVb|MsTKYnPjpakoSm6UYkro<7B!aoJ`XSxT! zGY}u_V^l@_v{3+Rc35baYh^Bc>iTrrxRBOo;9Gi#!wEJjB-c(3Y1q3z>$~{W_&UL^ zwY?~R{VJVfMT2h?Zwp9X8E;uSpz70tOIc2sve$YNQpR25@2}S89IhcX|xZ%n- zXjihG$-jE3)T$YqS6Nhe9UKoU0dJe=-!=z}Oir)yn3PxbG+UC+>+y<7K-wT}MSUE}jeCbdfd$_2I7hu4}l-|$h!)_^u zII<+G{*e^DQfsI>lFM|8K*W(Oz#tLcM~U_;qu_5g+~P6wDlxMB?CQZezMYl0Yo^p2 za=WR4SMd|#+>&vzR_$jfni4hYxVjzE-2C_0Og{b0CNI8;XE8QAUx{yFK$uywDd?9+ z$5cAj{$d1gG()cfLSWb&oDU2~H0J6}tF(|ie#mlcUwJdde+mzU`SxRzupks_M6@Vq zxM~hJfeC>fbEwkFqp5d3y*UQ=<8&Y`i;dy5J2S5S;-!#Oz}+Q-%Owg@Vw3H4jSb56 zwQJzu1!B^eh9>Ci6tT#PyMt*Famsw0{n=|6XCnts&?;zHUwMf39evOI3*0Fn<-&h6 z@okJ*aAcU0pE1_-{o?rW)J)rA%g(%}`ZBZbZ&F?se&f?=v~(xi>)b?59p17JS!$O~ zsrDCdTmy$0YaKBm%wfzXr_0uQ{P?`ob3x{yN!`$$fTj!dMF#>$)_U*)x|n?0+J=tB zyAA${*-fe{nuc}lFSkMHn$liFsJ-u%sNa#Y3X&PjU50fKR3UaSkF@6fNl-I z`Xi`oOLMrD9sLz+A}04a8azsCQXnZHO zuU$gHZKT;?g{<(^rwcU}LoeWbB`MGm9MmmIla(SYA8T{75)BWzT{c5k%cL38=Z$n? zn(GCUm+a3FWi*=Kc|GGS!ajug7sevaEgdgK4RrGJ&8#GTBB&}WD-xyZK!7Ef__E#Y zBiZFQ9YOrbVi_SQXrRf~veGk5SW@Sd%)gtv;krfF>QYBLUNdx>3hKVwx^>Nw#Nu~u zg%T@K?QLm1tarO-a<`eI(mm*J!G`wu$3v_YgHvsp+XoK}ji|zcOzY?# ztZ`ZCD6WhC9#@r${aUNfh|M+ghGg+7m{HFPeW7|`Fw6Ca{;UcE{+`J>5ejFu!)e)y z*0vFmO#y8TG8(5U_Le@s_3+l;x?7pfYK%dh+MJx7y`6{J;p)50Lhu*5OJhDAJ$PcC zq7MziKx#SVnkT+657MyzffZe^H>u^b+lkuvLzL|$Bwq{}0t6f*a%gp}Ib#i$=<1z#{iW0;B^Yf8W#uJ8 z)e74pr)Z6AObC;0N(zbgj;Dz#+^QifSe$?P9CM%wS!zj2d9JWaweQJwM!5Nbn@5t5 z=fu>~tQrV^Z8cf>xsNpOs`F#)v1q40vmr5(K{IH71 zNNQVc>0y;^2(x*ZWKm)vnrAhIW(`#Ky8q??^_3`>J${dw#7`Ex$qF$lS;cCnXXJt z*4poPq#Xb49T6UVL>_BQg};|OIygA@09xoyKbD&1j%A_H-9T=1)r)`e7aUrDK8gMt zykRzy!mIPfZX3j>AFnETUsW?7_GL@_!d1;!THg1_wt-Q!0lwv-#(c8 z_(8E)jgUARQ^3YZT6Z@*j6ADG20#3@f4%9VHVDHIU^Deyi`25}+)n?r#p$-^)R*g| zkIv<&xO;rSo{L%A!bODy`aIbxWx9U^N_Moi?quNxoc}~>r%Ttez-aZ`vDLEUPE&sYArm}v&fwOMZ0SF$Dl941W@i{97C zkhL@!q>EBb=c(3T?(1lqSisk;9bDujeaV(#Wnip2*~2#}5ss)b-1=P%M2vm18`QEu z*|Cx7IX>t#xLYDTmo+8$c*D^1s_@F{Jd&SBd2fAcqV38y=1bk2A?Q3Vbx?(Dm4~}N zIQVM_2vH#aV$(u%C?ikBHs6Agd*I*+YF$O)LsT(|OBEN6KHvTZcEZgK9X@>Z#vhWw zPeQKS3rSya(-k7BUV>4B_Uromw1y@(|12S%K%}MUuDOkjP-#~$>k(354T$JG5Xe%S z{9^4BOY3rkN37%(V!paE@9&ftu+aQ=Pzr&jS>@Hb-EN>Bk0yeOQpo5G!yx|+TeCqZ zO{`otTX5(7<1W+N#ieD2GjuU`1TxAGUbmXmh|oWaxq}$9+-?Cq^o+xDGv@5nPdDyc z?HqJ^cdi){G1V3mLE#qv7B@gHEjf1vHhCKAe(lZvQ6rfog-OA@@;q{}Xa`&VL9Awx zWHEB-lSnq(Hocz7;m(|n@`9E+BmN#dvZ0ne2;Fb4tZ#AU7aG61wub*_0ri{`81ud- zJL%!g`UkSlCHe(PF%mw#U^+D8YITm~koyR2i-E86Neu|1Go-IyYSLl1CoMJI(6DKiXZ7 zHq5PWhyQ1#=3C1}T&o;eX3~VY!Az?D$dILTYC_TU-}jh%{hanV9VecLuVB8RXvQ*p zSf~D<(@cmnl&P^w(+$1oX*O(-lGu`Z=6aF;`)yulkkmVm2^~?lLAt|7{Vgs*ZU%7U zz?-(jG0OTYoo?MDa_{4WT$*(Rd>Ll{-Be%U1!}a;d_K1PWMem)$)wA~&BgIgK*{dE zR}?rAp3WEAw=ppmJ&2`Qe(k_Hn~`C$^Q>FqgI@5T<><}8nQ#j4iw?-QkMAV3wDBxS zKUnb;^<|E6I5x~lguBX=;9hlg{yf_-uU_=xLEw6H=`kuQUtHgDFojL;FgE^b?j zmnz-B&2|v*A|7lt#LH(Bxlc7o%av2to21Xe@6XW5vtLZhzXSNP*?uYh%RUT-m zc}2|@GyGoi%rLaE<)_it#An5v8Y=*;@_XfdCnrE@W-XbqoER3W%HagCkqx)gk!Pz* zG;JTkL#Vs^UGwuTSL&mKp@~q#QLv9sqn+u_G$nfQ5AgeUCrY0F3Ndp-S$OJRnXr~a zS|>Xx=*3Enr^ca6OY`+P!S69|+zO}6X}cx|7K@9{hOz#{=kAB@r#B`=C)=%-YZbmm zJ@Go7t6H{PQq!KfIgMX_3H&cjz4`s*mc3Tqdxt3H6Bx`&j|lb|Rmi3ES>igMxh=d3 zX5pM}1U_f7E*8Yn9vZg7Umo6~{w=SmIhN_}+IRDZV_I0L+1OgsP+#Ugig!kPkKMm+ zw#(}OAcByN5WTneqIoGa8guE{azcRJ*1_pl-$t#(wjGaj^maonH_*A#YqSTu!^4j{ z?X_z7VpP#J)vx_vy}6L2k0khDSnP6Ql+_ETuFu6}sG?(}rgksr$*n52ilcHbpPob% zO|At9ArQO(&}D#bi;!q{J5bacs^+)7m^7q8qGuSozq1ZECToWQneJ$Zbt*^@Z-dW5 z^Zo$Zva^c=w20ug-3fTF`uGAa~<}Hz>^gsbfvx8!NkV<034|_dN9wq5C4qQ*X zn)n~R8trne#W3_R=}(v#3%^#-e~0zvt&t){Czk%yKUi_2!l%|Ny0rxpwOUiI|WY#i^W`dk;29RI|6U=7bupq04Z6Oz7prcuJ7c*~yz z2T`HjjK!VCj#ndIi0L*cBi4^2Q+|I!{PeTVmdB&xZpy#Q2#tp-@MeHDJEa~K=7qE- zGZ!nrWWJhyi=yqBWsX`QCFW}+%rEVtuv;?5F7nI46T7dvj36h|`%EcAwRjjfVq{U( zmVfh+TG;TzvO~8$Y8#YfWVE#W!L746u8pr5TY2}G?!9ahi?@sRK zEt=7C>@PiYVh@*?dAL6y-zvlC(QtF^ zs`eAGiQF#Tms&?tS&Y+0;lMdkV2&8b4_?==jde&X~xXszSjn*=T&8E|ic0M{!QyxaE#}hW{#xkKSi!ab zdmV6P3LLU`EZyHdT&z3JODus|FwljS@{a2lId_@wA^Z4> z1YK0WXA?g_qo|i&_k8a$`1G~>_bSVWV1&*N*WUvj)T7Hi?ceLn2C9K~-(Vs>J|7(c zBs0e!WYd;>HYRfkecl%qdG7@qiLDiT0L@%cknM+hNnH5T>o$Hf>3ZC(5g_!r`IxW9 zs9pY9r%5IUKfYu7(NHsCzd#9RaIxO&+Juk`E9ghpr`JmP2gTPyFTY(sEvw%sL=IJl zCE+xJM35|l6>wmtQ^HN-b$9~gM@y9cP5VTln+__3Kd!tLAcJNDK=3d{R@c#F+6{C{ zV4F;`ZAJeWr!W%2fsa~DUcj*2IlC>ZM3-Yy90c#`V zZ(az0E5ZGjqmPYK9p7a~zzD8qG}$KL5+)H$pO{?W&19yo$*7Vw z)wz$gsN=g@+7m^FOBKnjM&gs`#oyOnJFU$eCe}>>-PFHl_M_*^Bk;1H#bgt?@h+h(=1x&i-bd*NpE-%dMRxncHe22i1l)+Sl%eyNjSv zVC=hm{q}CJAw5WJ&5-8&(u$6zWZ|l(d3g8;h~ElRMISHuunRiF#dnlfQ~?ddC8w1< z@0VVYs1Us)Xy!2E!|ddwO1{covwXfvcf}fJFu9FOmdzUg`~dO+MxUfnL^4C)OmlOn zUCArkQ1{+JzStZ$L~yzGc5-eIFd6{4wtJVFx(Ey+v7UXq+d~ZN$an<3jc*=9MP&?f zwj_1QqK+0^#K6$QS3hexkf=DpS`Gy%CZAg`8?%qt5S`i-A}+r9Fp(Z=j(x%;M*W5t z5Q_0sra!fnjUOhb=9gYTxXwbidcuWNTlUI6-jOuayFWkn&D_{&x#I{1)B>)It-m#$ zGP-TH>Dbif83O4XNdq3VFvODFKBr0Xf%_MEr2xK=kVU!$KvuC;yBd0qiS8%OpZ{29 z7KVQ!c6ctv*i%mQ(l0|%-yT>3cV+`K9!N}_da);cVjnx<+qW>^vT}!k8s87NTPE2w ziQfwIe7qxnOg5M32^fC#tnY2VqC&!3q!Rsy$2%NQ6gBxbL_y-pm=n1F{1e~mBACulHO&aD5u zAtkuHC*^GYX-*8@1V*3fu^Z4kYgi~qCLh&jrq}(}p+|a*fwAa(pt(kYosv8#K(}d}oiAb!bgHwv+B>xm*i{XgU428rO19s&ab8a&*09ko6<&;=NXyb#1K(Se76XYNt){@NJBSJ>9BIvpFk z%=(hmUzF!g>!@EpOX1g67u3go6NpO+9dQ|=>t?=%TwJ2O_>1(;R1MgeZP)Ul$yY^+r*YqkO`E_;p z-jyJK7ykHjh@u)VX-*GgT*5>nGn3$*m z(*vDSbR5;lF$rGduV@P!6M=bRKdzAPzs@K_w^$O5`5AjUC;t>>NqI{$FU{I1%x? z87O6<`*7ssD8n=4@J*U>Xcem!P7Mbo#g&sj?OisOhZGbI%-J+OeTRm(D||UomZx_p zt?8>%{F$l^q)-L8jHe$p{wPJRD*_FtRKxr)*Ug6Ho(0i7H@d@_3uV(CL-}FTMbr4uj$HKmTVAQL#Hn9*e5#NYt3Vb1)H8wfT0jQ_b zqFUbCq z4FVU@QnsBBqy!0d@J&nB3OAxcwdEWRW% zyJObQ?yiN+F~Z4ZdBrL&PJAS{MUe&kHzE%-Fq!JEY!l&N{%j=mK4;>iEiix4nqtN| zo%NuhaXzb}9F0wL%7>Ol6(w1SL#;rQV?_iYag#lJK6C^>nIRr0z?Lt1)-{AWNSMT{ z6{ZT1lQBHD1JUO*L@Br)q;Xcfi_(>ERxQT@(NU^8TE9~ggl;N!b`Bh!oLeJVkUg&Q zRly@l)fK=C05s5vy$2uRL+e1t&|uirqkM~gtz&U{eVQ;caCoh#+OpSNe!AH|FKP07 z29lta4WU?mBI<>ziW8!iH~f!R_H|!Ae>Sa5!9YesdkKj(cNfCt!??hH1%Efq!M@A5 z(Z#g{V8@$3_D;GVY>tJ$Ea*n+gOH`ziU_k$?6^R^;ygzpKr4aGiE`Q#8d~9HB->G0IqvO-wYck!r`ZkP(MW|>vD^{*L&NXAfeq#rGX*7F# zMx%KHI9>nv#w;Z*|J3^k6Tl|m#ed>HEyzOg|UWfr@-08o%}y zk4p_tH8B`4qFq6T4Z%ac)A)~~Uh(ObeePJEUK$h$%aG;`)*9Z2bUycExfoClLS^{J zq2n+rE<5{n$JfbtdI}Vlu#t7#@E2zHoj36>5+rL;DwzQt^m58ioSt+{Xz`k36DNNx z5_ROVlooY~z)0^XW~w0xNfkV+2lF``99-cAr%fNj`)Zc92Xi0NnbJxlPZnWd={G-br;$LUOA4DN5rJ7)uYJJt+@8;ee-;oDmdw3^H z$7li;FvO9BL>R0>f;j;0hA`?5$m%74kh5*wZl*|bDtiL#49P_zSFDwS`Slm3VVM4| zMtjf4!l|?t*TZ0=P%vM;J+zuBlA?^31gN9MZ${M0E;q<+E-Xp7AL1yla zqrFCcr{5^cw7g_rwIo;krRTCx*j%%K=IENekc~W9l!l_0g|l$3W06HX&6_f|EUa~t z3XQm>G;2^6THLNZfv$sEQ($c0@MT~#q^W1z;|@*(M`j`GSSX6;GLDpt7&aQAWrCNW z)0r4;IHoLSsY7$F?iB^*E=h?XU38y(dV?(oH3}_MLNey%H?T*>NK?W( zt3efw`zF5WY5WfG`EM0fRkd5Zwx8TySHv^wjWWJ@blE3y6bSjcM{e1Y*)o6}6V294k$y&T)7!56Ru(rwB|7s4lq^8TR#U+nc`w zRTHrX3&kymiG+L>#uw}sg7P^Em6eq~6}Pxic>}$%YshG!M)q!#l`Gw4slNXgJRBj5 zcfDPOt+)zzb3|ih=3e2kw;ngs({2?V0<36*LZ#Vx_1^ra3$kLh`^7E&ZR$>n!Nfje z?F%&IE$lbxybi#-Bt&fYrKgWu9oa2ppQ$>23{8p?x1`lZfgsyAm2qv zG8DIyR6jx0EWj35e&6{OG4I$sRZ+1`Oi*^Z*U7X8iFcL#Zsvy`dFel_!79#AN>>F& zH0eGSA7@rbjy;Qn?2DmR6d0f0a)L4v^{g?=C!?MMqrPX)%iC$^)h&Hzyn{?Qn>Ucr z`K7Um33WZytbw6Pb@P*Xu*qD)cg>I#&&*_fRjT26=q~t#Cz7RDr!(EzGRvo*^uGt< z(0DY0Tpa-qCqac1?w?|`NKhj#P2jL|o9mY!dHYRkQc&xQjmC zUn(5Pf^KTMoB8IB)fW<&3Gxo0I(Q13(p#F5I6*G>Y&_7x_43pwTs=)&T|>+J)VY8t zN|H3X7w(!iVgAP}cy7M=VU z+C4txE4_=1NO%*Cm;bCU{_M{P)*UTe@AQZn_h+EA?-~DAJ@07vNQ&$2oS}nZjxL_j z-no(lC-gj2NClN_(4+!BlpR~*8tC*5%}jKbdvW^>Wn-8|H$0`H8S`7BmO-h#z(Sb zZr2-74BGLs>6$*>@bI(IHhsL5iqvgwI1BRnJh!I3l?vjm*!;g-)Y?0?*SSk{3FpGH zEXcmSv~?HE*Z>(=WyyC?ntq*$wfNA^@0a;VzNY(_Yk)UBwFGOszgVPJJ$z2=QeZPG^xpSe&Y|Qj)TE&g$CA`s(+! z3~tVhp77Vd4#L(_8~|{xN8gO%E39+(;Dh@75an7b-;yFp*7FAn5}6-oh9d++4Th7V zDw9mM=a(mmQ}{-ewB3cOfvHm``4IWRBnz^`#hbAA zG16V_IRuD{VK&FSndTW1lQWbXeD%tC7Z|Fts$E*e0a7Nzx~E_C)jjT>NPzb%jlcQ& z0Znw!ef^InT`M!bmSCTQTl`OjOmF8n*BleSO7c(A5!VlV1Stq;I9p$5rTQc-Hrkp$ zMR{;)p}f3Ap$cnfg##x`HmAy)71cN$LN=so*U}P+NnX)r5k)C~8UD%8o+Usk6kF;- zAkRLo88zCo$Piev;EtNyQ9R(<`?v@2T?%9&LP{|n(_HG8YKAi2)_nx0OZcS4DOcINLKr`8h!06GDUw|s&}o61w~tOdM{ z2isRHVFEC4io9h3`f@NMpW5^tx5&-wI)}^Xmw_@OgWF_8onjpG z5U4KyQ$uXA^h5dfj*N6;Szb2dV{7EE-`-vWx?UZk#!L&3huR&F0!#1Mn!X#etKo3F zz4}D?L4~&>H*0e;BHTXT^~VE%LoJHw49knw;sgiEoLfISAtke+J+Xgg2lXWmuOp=? z38ZQ&9WDVX$5ih;J;f!X{ys{p3}@qBK7w zP2ES8LnHqzouzo~;&R~x3}HW99W}#AG~JcnTp4jOzA;G$L)SY8C79fi<6|6ETwUc} zBS@=@qmYlQw(c$p446vMx1h7aoY`;Z?(F0x*m~yej{0#s4C8eKs|IS{dpUVEq;pNrhvtRb^Yw#Tm7I1{((s%uC1YXuDK-{){NOvDtT-mI~j5^6~JJgHhFcGC?cip!gkk&Fg^s33-16)p3hvLH*tpIAQ%RztyQT)=% zuJ=4cTW>)EDSR2LoZbj~zyPN3zhp|C9UIfh(w8GeUypAR{>?IcaH~f}JYHgNd!3Hc zQdz&Fby`&c3cr#Qm3A|ywIC;`i2|b&Zs+5#i`BAzO8d)By%Zn|7cZVN54`i(F^*fG zXPf=&b~w27`{~GcX*jf}dVr!s(4Yd;NkrmuPEE#bm{t)~NtqpPbgliJd86OM4AV3J z8e#!ubUsbygysSL?p@k!Db@w1_z-}9MOxp(qE$q`vevfVQsi$3Kwcd3WyNg-9O2)( z8x7my^YRETRcxsM_~Zh_b0%Uglk>v`PpU6}5x~t+R(5o9^wu%a_8OZ4f5A|rpTfmk zFxWN77{Glh0d>JNPJL|0#U38#dtA*|D4})mhX8S4F>?JOvB$gc3gi1uCqM}$!t`H! z79Yp*gr9Nn;EGH*t=gFH`~$_Un%3tnd&%^BbPys;i}4cjcfL6*Un)LX)+pgR#5z^( z_c-==)WBbHKo)0CnV%R|Ndd|H?ybN3;6^n#^;o7cKyH2vU7@Dt(@o~Z=DeXL_T^&i zN0?zl9g)*(*dkeWtm3MkidDzai9<$<@Q7=+qRn3TA;mE}_G?6zQ-(%fQsL8FEVK@tZAV2{7mHb>8_EN~Hdg?E?TNjgucV0_jov}UK zzvw4s_5WR*U7ji}g!I?(tT){K|Rv3=*eBaS5!Y6^r_A{T$t2S&!LM# zy>zflaU{uSXXED)ro!M-*SD}Kg8jCYv%n~$a6Z^m@W@|s zn*3eJ;00bsN^I$azptL+R$FoXDt&}s!*k`0imsz>&*8VmxiYKtJ@^fyU#qLWdVK2X z)Ai-x80DcUMlquGCv%+^1%|OzPL(d_Na3H%Y>Ezmt?~?WvtKfeKNT>H{nl6h<@^xD zE6CNIhQmhP1MrQ-ge-u6lFEmLELI>uRzB@w-{R7pF_qt3NvA*7GzI#&Sx?t? z%fl)I(ea!pf*9x{u{^S1KyyiYTU_4?T_J=ypCifty$$y+B?4S!vS+&?3yetN z7z8r1lwJHA1_JotUMd&HL`!pCe%E8|(|^x6YZ%;v?8OfAa9zkaXRcVN;yZz5hFtOcDQ&nq0Gr8cTp^0dJU@Pbf>BUJtGHTX76ww5zi*Y& zG<^8iQ^=$7B1p?Z+Wvujy)UQI+5oEuSQDGN>zY}+0JGSSeMXqKhbZ@NSj)tV$FoZu ztWt}K7D6f}lFdV6S^Fw$C)*26Qkr0RrXvyqt6_xguIl{dpR%N9-(oUO}U&K)k1u2IrIWU+B* zg?}{_p4IT;u(}rGl>GpD0w}EN>ag7tL;j1oK9rUCp!jY;K1((pjD1eOQ6SJh|Wz4`Y@vSKtPj+lW)@?%eO!|w=%uTnLAv+7G z!_dG$FA9=6PR&{-N?muqeJpcLlc=F=yXAK~TNoZ59%SfsaWQrdq=}-NHi~mWq;6`5 z|Br=k>rKzmeP79mMJX_=y&rd}^`AzkChoaaM+6BqM0l*5fgSJ}8T=vgF8c7Ws7#|shY=o>9VcC0UPk_N7Xw(vsq4Wi zR{luQ(B6VhDrb>y_WS|iiqFj)*B<^KOtU?I$EdH9%g{2mFpnF<@|p^q;Ld^|RLF@z zU1;YQlN^C4Np!?OJ&e`Wtw!U`wNQLb3Aq%-_pxm+yltARw*n6v04f*|UuSfG^g@sX z@~vlGU{MEWD0JJ&IbKaApB0D&CMGhY5)*3eUv(FIlqniW$Ug}Pi6DGeP^Qfr*gOlS zcNXOI7yS*%ia@n>P2EYCL=DXK?`f$tFN?#`BXe7#etCs*;?`(QD2>FP$2a?TdK%>F zWvz;aEcRz15DU8VB=@Td8@%tNc*t-~rFecAL#4ipo(~tJn4Td99Un0BRhpE)*8cbZ zNri>V$+?vtG2n!r+PXBm@>p0~#x&5K4>yUjd)1e0r#_IWs!y+CnFzXFUy}N?Od{=e z3~bo*sXihy6dyJV5=WqNnktx#nnhf3p0cdI`e;<}&}D@E>2!?!gCDT!%)Q`vhd?kB zgSeO1S*uw==BJtrsG(xCmIT+ePC86!N`&vGt5sV=!DGLFx*YR`pE_HKG2r-|qBoA$3D-y}(kJPc?i#`H+hDROn_ z|FL8{I|?|I-7G|h5SXJaY|8YyJcak5?S9E>XDzp3luUT+c`|fD`7nbuhSBz7!b|Y^ zj@prpzE_B!Vr8PF8gI-r{9sG`D$k-UiyYVV`4%{xy5C!itRRyZ1}OSGL*_9rk>TL( zq;Ut!DysK(_eXl`qa3K^y-Kp{<{o~`;TTgP`e$a=AB~nxkd=WvthI6Z*Qd8^SmM&! z5=W2B$dJ;SiXR=YXnJF(80lpT6iuIoP@f4{sGfVeT*Bn2ADB<2AI(ujPi!)p0 zS5E&6YhM*r)fWD{1O%m}kvxcibV-LG(%oIsNOvQMh?IzIq`OPHK^p1q4FXb|mhL+_ zXWW-N{^Q=4`*g;D;bHH!zB#}81@N4b;FZ9YaNE7=X?yED`+=@b`njq|fR$g@`D~19 z;(OJ@k%v{P1RBuxrh|YY^SX_C_wvelc?{q|NyDs1IY8d=ZxB zvAw0D#hO5`)dw72I7p6x=W2>blBT|)wVg?g_iRw#+}xZ%O>oL!ct0^+TD`WR#_Iky z1;rC}W&K zhl@C~BUpaCX-W;tEKkv#C{`v9a<%98Nk2|+)o!urv zf;hUaVbc-o%~zcL9c%W6z^b*k7dN`g?_}187Ad19XkLS-a1big?^== z*qJKUo)KkN)|<{>B*_h?2<=x>Iy`l?eP^?^z0FpVFaIfWYHA8E{5cc|&iz!G-o;@6 z?*a=0Ygw_i-L}=f=jP8R%ZGfhq{{a#hEB7}OIK7^(MXUcTS{3>Z2vMa&WzIgT^C_> z8NMNj_el3-XDW9ppsgVa_js7&VQ_s0q*@LOsF3T)accAT40XoJvW-p&6f(rN5>LKSU(;vzkNbkYf0KqqjqCZf z)Nx9_ZtPf<<>g($m0H6(SHNHDtFL+(R!%%tVa7QNVw~4u2^n(aYvM0gLG`|besl!i z0Nqk^gT{xDG=JLqKoymtft_D)O%3dE$D{DB6~~$Gb)o`!5ndi$ISdCobAXZpp$kE~ z6br&vQJKwkAkEXfMs{QPV_5y`V}rmq>&4=-mb?0rU<} zxLnsUSy-APa~=-<{C#EDno;{#N-^92e8_f_5Q-D$_hrtxT2_2$Xz5|=6WYiW8|xP= zPscx_OC^|q4zXvBdp7OCeQ?0$=R;jSuc4pGxQA#o&k`>5MN9j04K2&F`G7>?_vs~b zYg>Dtdsd@T<>UGZ?I`pG6pZ3!HFmp9!DFc0CnU%^0?Gv2n8zm&H15~@0cjK@J5aXx zpbak!xOQ_ZL9e6(jSOCoclGN)5O&%4+!!-+uhFx7GBUCPj}BvY5+#rLs(~UXaIB*6 z;p6f>R>jSIZRMQohYKd(pr$hW0OIlEWj;9#Gd%sU{E7x9(I2S0&>9C@oEOexsoM zr8SHLJ~uX|Y_#w1e;HTAtNwg?k{5wcZR_w%f#2L9Pid~x(v+8`vcxk1oL(nhIlzBc z=jecI=|-UXBoZ7^j+hM0XNg(Cy9X9rB(4SOxebhc&06`0aLFDzN|E=jNMcu43S^@S zm`J!N8LA-tzE_?R9%C01b4qAr;(B)VF|^1wRpjH2Pw+9uR#CR zM?eAinXUn{9-%%kb{t8!H&hOkgfXx^vE(Cqe!x z!J|f>DCC3_2k=;id$KD`u*_B~ z9Gis)cPu}en=3RbaeDLcieGS!T)?ZKC=UlR&M#}^=16=sV!v?^mGVm>G#_|J)fJFV z6sV^V$Fm7}t!FY~$}>7)7KS-L{VdxD8%XoH9V7J7D?*l1!WyQIi}Ie&%Tz}~;W~~I zEqIq)ZvZ5L0I)O9xLg}_7wDJ>Co*h(vEF5U7)tS{n<@=;$QIFYMQ2p?^;$A$H?BGt_yb zae9)Bv!qj|@`xyy!p<;BKKFv&keR5q+J)!tJY2HjN$^K^J{&D=bxJZqNgBLnZC2m{ zIU;eg%@1Dc_JYmYZg+!bqbr3 zba+*If}TBUCK93PQil`MY5}LXC_0s zBD2NNcw1aDz@L2B!>2-SpBI-?@BO(X@_GDx!Doh=DcB~O5T&KL{ZyNeGH3L(xy`%m zl9CYnIc*(GY;;t#hg`nGw%cT9REjNeNz*eEnI$1w)#Ghbx^8uagHLU?XWe;Vr|y~> z)vwDiii-_1>(H748>&bem=snbEy-ei7}QSLzF*CUOu{H zDv}a>OhI1C5v)k_WK_X}IQKHv`WaC8+}znaJalz&{?Xshh6+T>5dr5z-XEV}4Za$g zn#xi2S{N$tCvBDy!f@dlxCyT$43AwgZP)Ngh&mMz$lh%{1xZ0e#~`{sK&N}zZEjXO z6K5M4dbg*<|L3oOM%t+B(2tLY4Gocd9tY`u`^4jwMm|2zE|+-q+^wva4U#F=oa-yI zQW}}mZnR^xg}TFu)W6B*yrNb=;f?rcBC(A?q)gy5^r&+2H`$|y)mhp9smQj%iy0Xk z5{4x{cqV`%oG63hW;WwD#&z&0ZYT=-W#%|`igeooZ$YQjvlv+b@Vvh9-78Q~)MR|0 z%1RjC73Hoz6*(XC50|j8{uXy|NLaZ5!C&AKKgwxK>9Y%~jJ+9q=mNri1ba7sBwmIPP1Kdz{wfG1dX7-Fl2i5~6BkTr3Rg{V^bFJei2dND|D3 zR8}_?Rd6c@ivRNfs&M!NP$eG+k`?nvhoaCY>%J=&6gY5Oko*Ig@YZI&hy$cDx^8XE zkA4C6HQLNI)iv3wZt{_&MX&)hpsi(gfAl6sGi;U*;mv*_&k330hq!oOx|;}eN`{or zmSm-T00?JP_ai1Y)>?KhCvyST1gfPrGEov@qPW4xNE;iQH&+`#a@UDu;B%J@pl9TE zOBThmy|cF~(n^}+c>#JeZ4{kv1eOw9nBVtS_ctO%CPMMTx@c)e+lD^N(>)wINLgP6 zNP`EE$6p|aHwGS1q}9ho=Guh!{#Li!wR_Sv9St?WvQ*vz6|ozC zWsi#5=dm*NXXq1(DommCTZ5pJ0r>fs4tqP_dzHZ~nTsp-O9BA2Sy(L93CHX|SL@Xv zR?5m4x7Mi6iqeUYW`>aq$1YBeTc%6Bd3JeNnSj4F6+~?%5xeP6@5YUpC@9jL8=<*n zh6AE_dV2iEWW1;F+c1wqiYHCk(UW+8HdYqPdclo?W}9_;f0cz|N1B*??`+wQ6rT_Y zq<=VAb+xqe>T`DUj7}fX3Hc7$+uv+W3p;Tv1E5ByX*p;fK#5nNBrEF2%Hr={_atR% zVeE8#NHj;46r1;WRg-~W-eb?8$$03>p@os)k&E*YTaFR|6uVL+*ba8vxaexsc{@s! zh`tNRXOjfCebbuU6LP+H_`mfyjC zV5j%T(B7UXPHKL^_%*SL!ThI=l@YYg|6q*Vd+VUclng;zcC0Jj<`?$!%MiPLlJS59 z6V|^*ApqlS+m@y*0~}KNo4yl{zn*pM8pD@L$3%13#6nqJz>m7H9>Ms~hLR--y*KOcN6oqKW;gS4dAXdgqQ}XJ^Y4{sj^}@%Z>^ zgv+HYy|aBl{^nPMB^x*2@12mtMj6Rxalec~y6NGqpWUB>@6t_2iRR=AwcPogUEu4F zn6HGAkdZYX_F3!kx-`S~-%^$A~L14Pi_PKfJX7Pf&H?s2w! z<`u=iCY}KmFV3a^8(5|pD~D1)3QB*0gz9$hmzhZO|KkUAwdvtAKeOjqq>bMlRS_G% zF;i8Q3KrWs3Fu<{&%jeD@MZca-FHF*C4)>$6!w|Ce+@j1bJRN?*m^ko2rKpmASS^? zRcxeniMC;>5gwF!iq(Mn9D8Y(=$P5|!~JItD3e(zaLMZt4fiXG9EncT&_mBZs~F8 zCV8`bpbLxIlc>OMExU^8&r8sLnlS$<1SvsX$ld})Y%_Q2(p4=%LMZ0?{!?-BgrzTn zPQFlqloZug*?Ct-Ghc!FGGrJ>PQL>^qTC}1h)`~d01IxxTn0!&%ix0y#!rqc;ak zke|VS_721l{s_qz%G)7Le`n{vxAXl?^^WO$`w1wPSEu2{=~i!*6CS(-dm^hgNyBN=x;_# zs+OfxT(N>yv^WQLy&DCbSt(YlCLTbrrt$2rVAt~LZEv$+-W$>B4_pfMecTBYinc~oC5(I32ZG#VVyxJ=BoW>4m zbfQ~^mSktS+T%!n#eN^QP1rpqRBax@gN%Qqj z6K0X1k-MX-2Eq9xKxk%;vUn#(t#auj;3FvI8D;#V6{qaYD=921IvDL|do_iysL~A9 zL2bU7r4Bm{1_G;#+$lu}s@Iq0tzO}tE|O(u=X|Dif_CN8P+!u~KONX%OPVm-a2bOC zYhu|aPilyMdoz+RF_8LuU7Ul9E@JrlA`)v{(0)=dwAPOr?_gZ%`ePUTjzW`$YgJPy z1{?4Gz!U^{C`ap`C(hBm!j+eDu|uRSkv>fjZo&}5rM`P7iqo~Df0D7s>$fGZ) zk`|-kyk>bjC9Dl0xg#V*0ON}FW*UOhm3zY-a^Sy&u%MAKItjMLk+xC}cAg&7L-4ME zXcmP*$EOfBvV>Ux4n`51n|&D{ZBHEj;Vtn)=#ybnM#HA2d*5O@Khq0!pjW`;2vdD* z^V!}&0d8q#K~}w~!KpztIAC2WCwiDS%PmmUPH&!Ysy9x=v8ZWzdx-GxYU%naY ziQQCZ=q2YtS&Uce4pupXF*XQ!K~`cux;eD)*WTHyvpzGFvW<1levh z2qbDG*ctc|qFWzIdt87UV>m3pNm+}50N`hW{3UT|Z4SNVd};+r^B|}ME3VK01@E~v zToQ#kr#=A+tPHqGXKd>bwUIo|T!>IZug4U_r5_IbI!|gEqdffOiAaE5TQ$bT^w4s3 z75=n;wsNnJprE&>9Zg$cNbvS2k7fjB1WVtZ8R3S0w=uhjNmwe^TOUFG$v3sMreF>? z)3@AL00e#ZjelrkqH@{(LT%z%KHeKNpitn(FVc}SIt%~qadVwf9Al8_2s zYBtqUL4yWXVx=nM6N($JEN$*y_Sz%tD6L-ew^cecc>j=Kh821^Zu_*i`QtP7oKNn1 z4}5A$a*?%@r%Y z<)p;BfhPt}$kJ{7mqDQ%in`C+lN2WKn7GyC6kSpZZ+3TV8p66>Kga#_fFpdEYUZ;$ z%PX*YOUvygTf3%N*AetG6!b~YDv%VW2yT;P(N&^WVWpU5eM+vpWWM!VMA$~mZItDB zF-m%Bldc)7m6%TKco1@TZ74@t58ddftsGPUV%EepYd&T-OW08!mpxumUPV=;j zEOA?ldpP~@`qn90)geiqaf${{Y9LpN7Zp0tB~yQ~00VnD%E79F1~ZyLH7B!&%Ey?T zu^y2zXl>LTs+2+oGPG(2H|;JV^Ix!w*I=xAr<^LGP})V}*gqygpasG=d4 zLmqu)QTW98V_MmP3f@kdwzao{>cS11mA`2@tI41c{f`~^Bd(kpOAAvEn~f%3vS&Ue zspi#)o@ZoMl=H(c%V7zy8oCaasvk-Cv(@8KRY`?-``u9`tB|E0KBaBF)@!OgQ-3AZ za3z&GcQX0Y6Q}9L`}MaL&%XAXK@jt;*u0~s5cKMwSj9h%Zrw0!SNx*twA)-+uZuf( zBfh$loKpEX8uHDY1l=N@Fj|U}Uk~KV5|Y<-{r728*MdO-_BB;gSt(_Et7nA5Zr|hV zX#k@q5>6mUmYKw5``hbgbo-j{p-gb`sz;n(j*{%>yXV#@Nj2 z9Z(fyH&v_}o*f!gBAj@FlCk-;aPK?4_BVOPhfsd$8wlFWKK|TPMChf36~RK(^fw_S z%jW{V<3uL@UNbiV8L@rG{Vm@U~(A(Z&6DXwbpj z46FZ>N2poqV2X!{F+cSYebO-ZY(P*;mGYzr9ApIwC8qp%_rGhOpX^=uk~Vl^(!fOD z&&u;PO%>-jfG7>&Wlfyr9F+*sA5~W?R^koQKB$nOwJLp4ZQ-5Sh=P2xFm;)5$RuA( z&iJ=f4Qo>!S)ie)xm=bRPxFt_*+DdGf3s>L==VlXuv4EAVJMV;vC~7POpV(sWQ7W}wJ+6|s~?}* z`$K_htqzImD)3~BdiiyJu8$IO~R6-p$i|J|4-W2O)~&_#h>bq2+2 zG$t0xu~J-+VkHcThz*J0EHVaopII2{y*(`9w#~I1_{+MJOG(N_Ml3+Q-q zY5Bg}FSQ$=>$-3lejyj)VchF|5(1>&SWbgh{_jw@($RJRBx zL<#{-!c$mPcV}NgL2g}6sXqG%2JVMKrAiBLQoWfC1L33qyFX<1_f6B~yl_^Svuoy5 zsUtBts@I0@WH!wu7ajRdtD|EQICLpVX+=gPVe%RbghB6HPP-9F#MnxIa;*OalX!R$ ziBW`83wETC(w5v1?)KR74X1baOz7*)>FZs3)FR!tY;+qsO}^{GRND!;-d!okX@4R_ z9mxOf<)n@#g1zfP+L8=mex|c>q-$U4Ikx_5^PUL9)9q!aZeM`++_DNU!|^NaEvA zavHl{oElABO|{EVvJ#Lo8Bvj-!E0Hn0+v)wcUu-09q~!yO~OIQc}a;R{n=v;-ML&F ztS+7@P+(f?9a1#a^3o8PQtWN*6)|Iz-IT zTb=8GmgXL6l4o>g^{1+a^DJ%MkCxw!rVD{ko+{QA&-hYvTd~no#&fS`bmM#biGL|z zdornZf3Yd$>``PIAK1B6$7|ZpANEMVWIm*COmTUiT~!_q^#FFa(@yaZDORxzyN1F7cdT zej|qI>P9>m?qj`{xnFaW+XoO7;0tu~ir&u6^WLJrlTu18DK32oDfj-V(^)2)D!FVO z6n*>w%$>BfhEJF7#4DeKeb9N5QC6&TIJ;hgjQo1z^V&Lde18~YP)xvd$dmse;T$o`%Pw+kO9I@F`Es$^45D@sL zv>1?866u2&$Z2{1z=y1;vyK5T#*srj3k7*F9J}(BbT#nB<^Qv{qbkt z?lH8qTl|%HU0_UCtUxX&i%GC#KzClR<88X=kwN;Df`@KPNB~ zeb5ym{=nOxkKFK$+wMib4nVU2Y!(E8jcjc5?wp2P0YM+i{P_HQG)!~)=c3OhN{Bod zSxb2QGUFV&Nqh6GaZUO!X;4i~T+VFpe!DYJ+d^QkIYfz{4`Sb*s1YQO2l%(1_c z?kV3=Zia&fA--PyT<2`zVS8#0VT_f@LgJqLQ`@ZGWNisjja-kvVqo9vTsvZbN63nk8 zy!}hVa*XjCi!b=%VFl`p<=XQ4uIJoTFxI%a*-4jEQ*SXRQs{Sw$5fuVehSARMrg-*B{TUtY6kvQOSsmPaSR+js6E^@e+`883)UDqV-(gTVvhzYBGM0 z(2X8bjzf+o<4xLT=mj-3hrkNX582n%)fh||iHDN1UendqxLv!^*0%=yo*x!Pf!Xk3O>yq--kr^-L6DI{ z^!Hv|fk9f>LP&@8ZC7;EBgIdVa|cUGJ*=`cF${6CEG*Z(gfcl0BodI% z1w4NExOUGd6mv&0p9LXfr;$AEdh~sHerP#=sScpoI_Om$&tt+VutPf@4t+nJrwW}Y zLjs1uPJBY|(+4;DyYt~4aR~`-SyfF>p)bDcD`!UDiBGwn&I}^fqTOK-GzGKBQ)RQE z{TPY@WMRccqxJmdC8W(}vS;ydHL04jD;a8Gk}) zZy<(oQtUoN5_9hB${cfs0;90aRZPjpN3p4Y+Z(FR_4f)&B+DS;bk>5*m z|D>wc!w$NQ%w2z3me&}bO6fK~B&wKah>md@{pc|Ygd%^2h4Wa*|MHqwFW?185l&q+ zlabZO;}vmh9p0 z+f2W%WQB;2hNcBzKHk?yIs~aGdp<%zw>8eW=Rti zL}y88OE1$YXE?K8p4RhM;EyK~WExl;vhke9Ja#Q%9z>Vx+a^mwLCT2k2~Ii@JVVcV z7Q|DmN5R)It!#t?DNoO2HzblqzE8FHl>V90B+i|!F*)G}m?J}QH13MY37%xItJui| z6yfU++V%R2=Z=pgVm^JS+dKeh6_@^zFYiN{@F8VYLk(R`8M;{V-I7t)x2P%b?Ad1q zItE6%JfjZ?o+Um&4IX8Xpd~VDcG7bbmn^#ZSw23!Z-n58utE<(YVOeFozpR8-z2w> zmrMgd8>b(Y>yBRd%y+8mlM%&aXMe+a?|v8v`(3O^U~pAZwC)QgCJPKEy`;C;o;25Bd4V zt@psTTb11Pl!jN-LY_NS@^rTQze%4W(9q4O+{&Til2SC= zWHZwa@CQ)-SvXNV%)`-h)2}0?DRZXx7uIAz?bfrCL4cNYb*zH|jRRT%`~H{-L~zrP zy}%%~01diU z^CF2HWo#aG;;d2kV`Z zq?=pFKc^U$=EoIi@ql$A6T#=deNP==dWbGeSFOH_esIoO4EMmrhX3e84fbBn@w-W^ z%!c&9EwKmV8c8L)6u({&cZ=j;?W}){5q}B&2GHgrk#LDjKPg4`v(tIMb+fQDwK-|STeT!bC3C-}AKr9`QQ z0Tji}tpK=++EFajVB1@2IXK*nL_7fKyUx*MnG7-ni^3-w+^R<%s1($jOZGOXZtikL z@;uz;z^#tsA0G7JwuvcT-Nd9WiI1ESR#DhBh>IjW!H>jWwX_ky5NvnLzCB%#f98;W zR^iMzlN_6OFsa(t$yCAMwUR?x%#*>{U;h2mul;)Y$Tb;8u6<;)NR7+C*G{!&H_X%E zRk^vjjSQFAy)Ge)`WvcEO^_MDA;lymhp{x(7Sq4>+Nd>Wvbzrt8kw9_1BO``e|b4_ z_4ITzYv($=d>XVSd2k=iL4k9qHD$G-VI0lP!C=MB80T>mzPCFd+u;S*+b0YxQ7xa*dqDHCao~w*7XB6@4olkCT%r}Uu zT?j%Fo1gt9aw3kJAddu1OuVcR(vPN119nW!&3<5-^>z{^h$lpT>U*YWVrr^CikNG! zS>$Xu0J+j+C{q(est6`l#=u=gSjOR#UZYLtQ>WP6c+vf{qyJoW+eJ#ChcM#-^j;{D zM&i2*OjH9#U~=g=I=J8y0yf;E!z^b3^cr`25fPgxL8oU)Jef%(D4<`$zAN$;H zR$Yc~ZCd82&W=oUrjvc{`l?s&RaUBFsA8a}qY-bUJ+>qoxW2Wsb(ksi-Ix7|N}K;s z6i=w4Ap)_543QwVSrsDaaI5C|oBp`y#4>^_;Ud>U8BJE=1gv*K{slW}0(M~zR)ob~ zGZ2j0+2*HeIr?3|^-G$|$4I}tcdY&RG$kmx@nH_(WM%tnx=9q)TD6nurs@=Yg5Q>J z%}2-Q>50NYh3G=F)+Bk$CVI=3Vh=%leyqCy_6_~)RuFweb;}gtPTTv3lbxG-s_wah7$4;;=$hRLz_5s~_LTOw}*$~e;T*CZE0 z6u+t2<)#jwZ?rcMA;_dS>@ z0xE-~v%K9U-^A(U%*U2v=RN@JYE2ChC8$)NpmGuzv4yrXn4 zjUeHk+~07Neg2A_1o{aW45f>`=JotaM~Bj%!sp62UcJ#^fnLQIa?MrmSjm%ol&~v# z9;Sj8%eLZJXD%};5#(-*w(n^}clqNvio$a>u6#Y+MAP!u0fFT2>;&qBz^i@Ay(;dl zX>qCm1-7K_%{*6T_+!0Dd7tiGYz3j8!_!Ajb6M()50U;6(4J{qzV!6UckdcP?=bmM zK+Gj_l(ni+Uh0 zw%DSFOGvb{ysodW`+je7YU=OFDZ`7DO#+qzb(l{XI}c-VQ-$v2yl4lol2+DRLV-w1 zP8+;W>Gzw=2|27T`~?Av{2iD^jK+$_pcrSD@qeowDX$=%T`Gq)_BXecJEQ&p@;z_ zS7q56ICz7Y$8y4HixXqsr>fn633GO2k>N$++A$P%qMc7JH>jV8+m%knoJb}!G6k^6 zEV~PL>y`+yxX07thIav6n0jGU z0ms|Pui#mM9$)t{XMsGc79SUdG%d~eFMCCKl=tZ;d`h2w5jf+8J%Z}uk{l%RSQ3ec zjYj~M6ySh(F_XUJs56%7H&>gge65UajtiMBG(S4z)7Mhkw+hLksJXmsc&c<2p$V7@ zamv(&Ur3|?8tFJ~-PkfqnGw99n9i9Q;J3ZKr3#?kqnKC>1Yac$0GH^^bHaO;OI?zd znT07(e4G>X1Pa4W3Xj%dF|H> zE+I9w)u8)g9+)il4s2yjp#?TFRk~&;ECap7_i%|kG9>7m?3&eDbV*}v*^g|~wK1>t z+-_F+(3yO8o<_H-0Z{0GYC_9U-`>PxrO#ELQ?we*%n&$4KBkAt%8nv@uTK z-!XHrw3{3gnP^tZ8!fV-JNsx|uI+p*@2#bj_MVbZ($%UjsWU~OAj@P#zw-58>t}A< zLhUO29vEPj<>SyygBQkTI3&L0=Ei-o129@iA{P#Ng7j+(<}ng~r)+H(Z_JK9J^$3X zawDZg*ZHPL;sfvl26VDs(8rV-RGUpNzK%Y918~o;MAJYW_fUL!YPT_dAnj;$ejDxl z8mPNtr%j2D>o4w{oUQt1g{M(5Mk5^Ycc#cocERFhQ_~Usj-OUVy^-jD=g$)Wz;<|E< zLnUd#Wf?n7!+?fq&OlM)od72j4K1HzLm0IFMfUZ!@Y`Fz{e6V?#?prkJ#62WqEB8mt3nkhj4 z3Oh|Znc!~S)|TK^LcEdhKYqm=TT8b>Rj#)ScTK06;spc!Y?Oz;LO_QTh9YjNUsYPF z=pr|-)Vd>vc6%q}`EGA#b2cUeuued(*O>;rIW1m{A}`6|QvZyE>96JSc&&kGQi4a( zc^0zf?3u6Ci2hIDl6~gzmWYT1-OJ&bGB{ksUh(*4xdV{jecM8V9NlwseWP6l90h@O zdeimF7>6PL)o@NAch((z0r$r5KgJusoChhk3b?EoRT$%l$I1Yi>Cl7s&l8h!67ZCdN5`f9 zLpJ3$0r<{cYysP*^X*ui6w`+-t48~iilCK>*F9>IS3ROJ4-IY!foyFz~C`z0znx_sD!?pR0azg)54A+wd2h5Len_^ndw*pL&}A0hJNknWeIdtHh7!jn{-KF9;%Q>!Mj$ z>3j$Ky6^`gsC%=~rJg*Rb8yfOr|v!1x&JGzk1-KheJ!x@IgxgOZ6%^G>4T%c3=FJl zIiO~a1X9ErdIMz9JuG_P4}heEP+Id{+AqrIcwu_F^Ud0^dVNpt z2kWrh^|2zQ&XeTE;dEI3LHa@y4VcFP07d(}wl2`}ReM2jA_Oj678ZFRN8I}U{T?6( zot&Nm3ZZatjdgEBYNZLhuYHBHsv3;iM?|rv0wu2+=MM<#*(s(<3@uFTn=B?*ek5>Z zbMl8s=(f7QQT2_ePmnQ@saGw?R%PfXre`%|=k?e8z%(8PpWysS1!hfv8kM0uGu7sI zSE5y}y;Je#F-GhPQr?xT$C*2&0e@d4?DM06MMVk#TwJ>e{PLAqxr|?ig_( zEa=;o>emC*4F&iBkoou8GAIRJH9r7!LUoGIV8#zl^GDRH*s$!x22=`)z8VM7em2JC zqlZ?{?)I~4>zalDn`&!QIkP>eRKM|gJX5Y$YZ`tPFz+(b*ZywptJl3WASWydBe89;ONREz^n`HL*W&6NexmT*-EAq} zA{#^tyy5M}9x_hcyLZ{@L8$Ir4LWLC4%YUZO(Cg!tlr)ec7k_&Dc&!bXGCde9gPEx zrhi)0W54{_GhR|v%-Q&e8Z}*?s`)_2Ow!!{iAPBKR#-|LQnNyaQfc^S}fW0_jb3HTAeAxzJS?R z(@<&q*Uz9+5*B8J((9_Of5yZDj)wwE34jY@9v_F^cb>$NYieJ9{}oXy)GDVsq6`zAOypPm2&8iDR9w?Jtm>9Nzk_lavkFw%R(O|@@J zpajjzVd5$s())wo<>R{)O-=1zI*Y&RB;-D2y zL(A#7qFTh$SuW&UYg^kbgsNO0dM40N zAA$+&JzWIYZRqKax@IVU@CSv9n~VG3Q&(P-kreWsks%u_&fSYH_ao(B zJGq*G#%Lx19G-V}sT^J0nORF*Jxp$!j+7#^7|c{Xl=f$KrP!az^HGWTr2uA1ELI7L zp5F9#TrxloM3?Q`7)(*fL9lOfv)GkXm^?d_#GE4!&z~J#-ps8bGNi=|{~!BCi_QDK z@n^j=IQDnSYNGkJPixHj!70(v{l3_u_Qj<(y(-gN)3f&=7`P#O<}gl*GJTW9M124e z#DDXt<7Xm}ZF!{}(28O3hJirE&9$4gzO^+?f~F7_o%Q9HX}JV54AZtPc&1DlSjhk` z$qoWxZM%KoXr7q#6iDI99pD;-iC_Z8Y-BgQd8ikgPoN$`?4{(d+R$Nx=ewj z^a#OoWjtx%=m9~!11+SKcqD&B2fv$CQU3$mGF$4ke*$igw)Y$=8DN|-qpC4-kX%wpwie0HMn@4JpOkOfSHKv(|}=j5K$#y*j|7Ro#L&(ZHCv zHtgFDni)f*a+r0#9~=sjp@y_igl{1n3RQm9>jic!FZyf~#z^}fI!_JGds%q{jRSk9 z5G545CHqkmXHj4dV`t1OI6E&Ai8^BavC=Z+@rTUBhVC9_^zg2_MgfCXw+)#pjQgvS zG4*Wkj9#39U@D5>rJtX6Wqa_jzVt@K1^ZCc9K3MSm}g7y&%~< z%WDs&zNZ|m`(=7OcDE)zdT3hD;B$Qo0f}cZf7CV5W2C?Iui=Hc20aIsI!#sHze3ae zxZ18sFeTsKoQKUE{4E4Dwjv^*5HK{Ovqzx0K|gj-6dpa1bC4z>WwJ>cZEQ5uGGTd*NFDvj{|_0PCGnee%~ z^!Hb?sT(;&PMDUYB{?M^tY^X5Ps3#kRGK+Ik?G01Q~j?i$;s z<|e+y280vpF$Fc#ntVulzz|t+_is{SNG)m)updx3eoNuuWd?5D#vUpkpd4K6Uo^ z)!PzgVO-Av`n-wYO9|TU!Lb}wtBVwP#_WIU56Ig*^X$9`=lxKGk19L z=4QA9P^e++xfpnFLFIOF-BvYV%j>*{1mzR-eGPE|nHwO|oxCPv@Lzycet|mCH(2OE zvj5+KE}0aj`wHM9kpUEh#moau!f+t0Pz0ngD8SbAB<+1_sZIRAn;I-(Q-T7x+|QRoJc?w+-7wvU#=YyobocX|1~ez($(sD_%^zs zHLNru2K4)ybbSJz^9o@{_e46j<-MkR6Eb+c?f5rJ7)@Rw(nz};f|S+uyPaLcxa#Wp z!f02(R2WC}jtDx~iWh}xXl^4^m%RK8WV|M)MQ^_*J3H;|NK+|!KtJ2F`3wq&fJNrL zW=&|gn)GkiDqPmk9@igatLpcc&@*q=y$K`T>OVOea_UKdF0O_}iwwb7l8aIkdbV$O zwplhU0r&VbLN`WwVPS4@dU}7*xv035ss#2xWU0GPyjn+Bv)b9|D_Fc52kx)8zcZ@^ zSrKs&Nh*0ayy(~S#wiyE3b62bOI-6qZoiocbJgSEe`5jCA89juMn}(|ImzUpvtdn* zUwF<@-=8AG`pW=se4Ukb76q<9?13=71|&mLf@4F@mm8y^#$lV(K5$gk1T zrMzOKzz}6>m~^CEh077Jf3sg2JU(_5_FrGYw?l@YV|dEQmYcD9{@(s*zH>q{C}(@k zt{GdTfPk~yS3DsheWlcT&#S$g451Q@ylJ3#3ibYCIXF2T**b=E>b!BYE3=W!;e38F z1SA1`;_`AVK?!|z0fxE_oe~NHK8NW3%}~#Wobj!1jFagU_prE#X6=m$CpcW#Rlsh< z=IwQJA5)RhRlnr5B|K@r-|R1k|Kg2i4Z&lB6pH zyhEuj%XI=zueyhkC#@c$dHW5KU+JXK^g8BA$8!e~DIY?W77}k!+T*sZm+Y3@{`{$b zEcW&QUEIZAPVOpJ6q!;C_s^Rn8alT~&7O2FOa~u@Z}!2#5_V0Hi2GWXzq#}ZJcPY}{%|@iVI~73?knR#GH?ZmMknV0a-3^XJTpUy&2{2*cdoT@ev@Bmpf3~^;ziDF;Xov`F8t0uv%I{1JNvB^$RvZ9^FcwC!w)IED51R z`UPqPxuaLtZgZYIo#YDLCMLj!HzLjlq1&t=9g2_sC}X8_An50x0vIX;C^PVu}p3UY{U?edXD3vMX7jh)?0N|0XKv z;e)uyL`z+t4IlN3Z=c$R4?C)$Paq9Y<~WXd*#^(EW&F)I^i_5fr+<8+JrKbTSYc6e z={}6lpRV_%K^0X$SLe?+SKinAf;hletFAP^?E3Vwx6D*_PlsmjOi-Bl9A$tfA^9X& z^s{oS>`E*6M|*E>>5$0fo7N}|4Tc=Wchl|x-+!jI^g8qDL48X6{ozZYbs`ykecgz| zt2}GrJz55)>*eG7SA5@wiUZ`Re5==l_tV`$_7H+Yg#% zhuS8=n$k67FkrLq>qHUp?7P7fKgop8HP}iUnr4R@j%Iqmyk{q55;h>E@tpk=6pXmP zgL?k^CB^!nwgcu@4N%|xkyt5%6$wh7&Tnf6J8Rokw$)Aj(Fp?fty_)?2FkC&U&aXP zT06Pl6nZr%k|{bfvA`7Fo$j$({Pe?9_T0N9FGiZ8^fJsgHGO6qFLl>JG2DkQjfW2T zK}7X6^tssu**{8D{Amn8)j!}G#k`mLfBu2@)B~>uAve!kiYXM#HneXUcgrl8>~jS^ z)%br@djg%Aaq4SZCYXhvC*dH|p7@{T=>shz?*_rZIs!1<5Y)Fw1Iq{wJ^32s6PM=6 z-W3Yp>l0l1!Bj!RrMc?Pd|Y1MQ+aW&J2L|CPE~OiTpmaJ-gw_yGRb4N?VZ?pju*v@ zohFXv2y`p}JfsU_Sxjmh7+(he&3z7-sRc0R#2T9D&$#1 z`2D%H#Z^N^ejL{AuN&I!-F+Lgh=*ZF&oj9UgE=WIC^U(UVR=;OUtp6;ftR(gF@zlD)z5Cm@ zSiT8cS;a@e_N)K{JwG|~vTk3t-W_oe$_JbsOW`-ZKXuG4& z$!W~2&tmGbtE#}g5p~>i8Eh{@NG*@~lz^LSX;6!s)qpWIz1VDF7Z$l>0-VXDYM@2u zPOe%tRwyAYZfn_M?73nyGn#AbgzmL zR}YUaq9-7qI>u=G8R0a8(3tL3PG>AH^1+1(x}slG)jn3TMgXlEc@*qus&Ia0mtP1w z*xrA+veDo(-_tv(e8k6YNNLh88uIPIium=s3ufE%mCtd^NqF3XGxOsm^`(!STHw;~ zG*;*1ejQhdQ%lgpahyVYE3qw*HvP@s5X|kS+Df6pNAkv3N8T@t%Bem-XwlhbKb+vt!IDEr`a$W;C*$#_~CQ4_DMzM zI2zq3Le!^vT<>on?!XDe{>tn4YmL1qrGfG$&x2=mPJ4m&0np_2rELaxHyjt@usr44 zvjmqK5d-tryVvGaZ#$rp@|Oo1!cH#EaQ(8cBGe!mG795pYqRLQxSZ?l;j%eZnkDBF zV&R~&o4m`szrOOMjO1bVc}$)GgH3nzM73;gd^q^GtZXW5TM<|yTJV6UqDO;|gIiac ze<#>AN#4qNVw0|%RNFAgi#RsM*X{fi{0?%YJ#=~4n*K%zFKO-SJ#i zx;1I)P&G2H*Jwp9+;4IVe&WY4&z z!NKyJLWq-mpOluS%65Lcs$i2+`!a>Yg@790v#}gb`c5cEU zv#~)g>%WNSEX^#T{hv|%WT`!o(|1gJDD|Dig>jv3y&FjT<9xKe4GyJCliFID;0B02Q)}Sr&IvfT9GutyB z0!Wkf7qTH}!anP*Q;-92Rw*n*2oBvU&HB*1@f10n!a?}5^B1u+{mJ@u2!tu1MYh(q zrX>leuK&W6c8;s)T4k8Wp-9FTaB>tF(otKCOowO;q&2a< z_a=xAHX!mv+aP@5@M!k$!^IY8>*cEDMs$%GCnO?T zzuL&Bo;RJlW02-@yB}&PU@?obcpENsj&yK!b@p-J`kI$CQ&hSCSD5eTQ<(+C9TwQ= z*si`Ku=x1uRviMO{Tc5jV%mI8!o~&IN2$%rV6?M#tUu^ltYGXlwA(i_h@GaRF`xak<$a0`V znj!MRdxh|Vg5P}99#M+Ty#xIR6+M}if=)M@{5tuko?2iAT_U)J!FkhO4hU|Vl$dd7 zgJ|+qI!KFkVQf8;-u7s?>p_;km3j(}04`kWy#)Orx5#L{SAksKPO6QMqtepR0_9Aq zcHwHDS_vj_o*1R1wwKksYlOBK-ah&1d#P>lH*4rH;#K63*Z%IyeVYNbap#X)nt)(4 zcHY~LCz#dLa;vFhO2C_aXH9PQ@x6lK&=#n0xYgG6C35PS4OCTCU>_b8TADqC2!)ey z@`iRBE$Uc*Ztd7W9Y|wU8<~rWO7gks3&{GbNgO+q|FtA)1ihs#YhhyI87nIXwL_HR zJ4xx#x6$3M2d3wHQ=zcv20^_5k(Q`O!O{VA+)cR5gFTFBPsx+@H7PxL#6O#XMURPt zkU=uYvAFD6(n(v#6Xa>v3_m|g^IQsI3@C~m#ykPv{pVfqcp!HBBje?#p>L&*b|woH z^T!bPdC_hxx7L+VkLW=~X{3e0k0<6Sd5&e<0{ICu6VG z4vw?b0pY$IMV7!DyJ_|=WXb8`SLNQ+?DRBpV-l)e=_c<2UFt3)eDX(EUFq#kr0;Q2 z6|K=R^YzctgizP}TAMxkUNF9MGCmYg;{7zRyG4pe09jop+kYOiJ>-S$p4gQR3@q$T`?|>Z|Wtqzt=u+5MY{ zaa1z80KKORX}@sTQ3won`{%A?$IRZTI9fgIQ*}Gno)2CI5c@Qg8Ng!$HfQ(h4$Xw1 z`>?75tRoc=6}k_9`fsFqhq&B7k)yahPY&#$zF`aynb<6W zZV~y|$l91y(8EDp{tnN?2?D-P$Gr~gm|+lnk{ib$l=hG8rl>(EZh;I*=n4Z(7(Lrb zP(ln$kW0A>6oCOd^FF)|6u&|nEpx5*OeTeY=fMAe!R-Gj+#M;lpsyi-FD$V|`lpRu zOQk9h<|wff)7Q9j|A8+*vqt+*+#F^wcdgf5@h3z(hmG^e1AEbH(ERr*Z@QkzlOm`3 zE7bw{(K;9+?&>9X=+e3R!C|D(`vWlr$|{fV!o39lLhjW|&d@i=9Q%^NWun`24oog? zVdP70bO_OxPd$W3qLs3hw1Ll5(Y1=uIUe`UbgN{l!(to=zFTfB1{x%YOkhDkK8cD= zY-0Xsb)M+ei(uIjXJiJuTrEG)?h`_^PRz}Gpp7>l>-j)$NJL#+&W)#Oq1ux%CILp3 zR$@SfRBxhvGZTCFENE^n#&r5stT@ik1opQ+0s3a4Wv&rA@Ba*5n9-!$69r0<euzLMwd;ZH>_qqToZ?kMt_47JsY zaR;C!b3iM6RV9z!e1>1NO=v?Ktu6HCX26{a{-YOeG2|;qfv(_|;5Xwl{w} zcyKMAsgBgnhc&Vx=k84Gk!8Di$`jEZHcbT^Eg$M@VjBi8-q|}J6@QIcpNpE%sFEUi z45ux3c`;qPx*$DJYHfIlW**@viTuwwrR7I z=O5)YE0jK&+q!wK^rf|i?m#}REebJtqy;DbD#=;x*wQzePgNM<1|#2?aZCYzJ7tb1 zJ8FMo&V%x0%w_Q+!&HjI$QYxzV46l7BAM)-jCo80!#mDS)Sfe6ovlX#Wk9c`8aiE= z&DLU01hQPJ9X@j9=-C*WcCPKVJCfh&yIoN$GBG|nJ~KKFG|FD#K8(YrLa$I$ra5qr zFqbs?Q4wt_W0_cd(*n=K$PopVuVicK>mX+#$fJG_ms z+mmlLY1^5Pj2tntfCVYnu4o>SSJp8IYUZr^T-xu!H>;hzecf>oAexh)!|U-#VkpsS z#i414sOVSF4vj11J@}t2cKt0sdEx=@T|!rp-?NAnGRw|~KZ1ZJ<*g7zwfC0UN8_a_ zDf>}^0{**|PJb6va6&EjXpHt4tDg*A0G>U>mc8jV)X5^NtLJgl%q<<@wWtVT0r!jAEeE#@>|``9 z>4!8kJ0(GJvZu`_753Pw975$iV!OH8=w&Q=naLKYcPzN~YoaxVrn>E~8$Igk8rlta zMbG^X^M1>Eocn>>ji6llfpF@FV5gK`?&xi`Ip-a5Tk+MZ$b9$x`KK7v`p@trfd!t#s?J1h+Xm@TXT1HA#*;lwaNx z@xNUVwi5R&%cA0!%T|T>bq%cbl%)5Z?BfDY-1`g zkz&&+oHV7Vh=H&1_6;7k?b4M3W`Gw4KV7PtPTY3`BJo!fackg>TMGHB_SUtK6cvI! zshh8)5Ug)*Z~$g9)b8BkE|ng1BT(H3dBffxkUA7z=jm2&zbLSF1_S{QSoC5t1%QZ zG4?iKLA1jLdWNIvOKW^@F$14n5S&32Riail1qUL=DDW+YgoZX{-4&_|>hv0naS z+=pwE(C+njYx9QG?H*6WB520~^Oj>&>T3D4A-`aazhR9JAUwLS7kc0rPrh*t7_bxO z$NY#YP^F%geSN)01(w5p7FII#9T0kCcAH6VGx@CCiWoYKFrCUd1K%RiN_j#Yt1ah_ zN!d>?SxsZJ3Mto4ZR)>uu%LkH^aSEYz!f&$9#}K&M3Ad?{K=U(6&7{gSPw6X>(Ca! zLiJP6w6V_H2)4qMshdg0DsmU0ha6%i?LOlfR{S%X2jk!qdLV4~2PKP!B3Z!mvb3r( zhD&ukp74e70#OeY+e)MPm^6Cof-R@Y7c@u~GBz+Or&b!mvZjO04U2|h@;r7mI`@NMI@eeWZCjk)`i|r zKL2&3xf^e^waMOQVyXuUc(RUMle)SpY-UA4R6mY%*aGry=biQuOlz&CQTlx4V!HG9 zzm7g-ki!_xT|TNsrsk&)b#&8E_0UjlPn}b^V7as;lLtB_CaPzG*!HrjF|x}DGGspX zQENUyc_DMuTxD>t-7trSLPq=A_Hl@HJ;v`*^A3UUw1;IQC? z5S;-5kMtO5f_($a3ZI4%yDL)IO4l2GA4*bw^6@o{78T;jE!=jA&95O0aSJ_}wwA+! z5Cw~NMDr!e4(}i>#t&R{zrMkHDmtNu!?ffTB?%YAtTx3J0f73}1&6E!N^mG9Ql^lZ$^A!42JKI)yMQ9;3rI`lxq3DY1$9(c20KCg20|tO1>{w+LvgY5K#emD z)=0-^?(FL6D5sUyJhH&gLwR|44pDRyerrGOIk4~n8QcElSsB0f+vV++P9+cni|0p5 zZy)3!9eL_nd+GkRmjC|PSZ8)vmx|dV`>7jG8})rx`DLI;n0Cd=N(E5pFha)yRy~cM zHC0ujJbmsb-Fi-mNcLIJs_J?u5OtcPCVP`AiA7Nm2|&y&3G{`I{j&;5A%C2xQ@g33r=M#0 zBL5DYnFQzS2Z2vPKI6*FR$uZ4Is4dAdaDV;552n_`FuD-Prc)1OX3S4pS2kDEk!3j z@5jErQ0Y7~1NA$$k}^4uz16`B%u5#-&*fodGwo9Y_IR#|xYXIQ%ctDvV1m{J^48Vh zlvqsvK2OWaJ|akY!+tZycN-dgj-liESbypDhBt+fR9%~hX=yH1L2Gzq`HMV&Wn0`aQp)2&cPrWBpS&+2}&iIbbrt4 zgYnUX)1UtaBncW0Zu&77UaF@RE1l1&_ z!yESh+%IhijT(90$@>_6nwwz-Kk`-WA~$PXng%6m2mbHmgK(%6AZ3 z_-}?e{@t~{Sey!m2aF-AIUIrl%$x9EY|e1~8;Sc2xNyH`(v7eY8vSmZ=rDDExp)Av zTW?(peB8bJa+t#F*ePv~)mNT0(hs#=w)uZpfIWV%ZPp2Ahhk6XwdJaX>uN-{x;nu@ zLk%_rn-rLPuUoH(fnp5FM8jOZ56H8Q=IRUQF=Do{V2*C3%`ZInm%p|e70;GNR-Frv z5btG|XcbhyR3hJJlI4T{OB8FkU24-cnswhiR3^CxV9zqM)q-PrRDwbYuh6< zkCkzJE%!$ajgL`(DbreNFkTT;EC^9H zw|5tJ*6deT4TT86dEU+B+{c%TtG-SuLoq4&ggJN4Lz~s{Bm`|Ls88Te5n<8o&NWCM zxv2&yG|kaz+_=~`iRY8ON-Bz%5ZN8et)ORr;j=)l4Ud!0tgYkOAQYVX4tyeu;M#fP zTR+qJ^i?K5S<@yZvqXQ$Ocz2ZI5fm3dOl|EWMTRq9mC_eHj<^lZOg7&T#5_#F+UOp zC5c3=p`W&g5&yw39Paj1W<9Lk1B^U&r{&Vfi!uZ9gIP^w^_LX<{e7XM6B9>M za&NjY_O<4y&k~0%KwSX(pCX#CHY>&t=@ayj@5<4#Wc+#epXvkpgJ?FH*Hc@{fA zH#d-)2I*f=l>4KK4k^}R@YNrTj~gJVxf5rBJtkP1d{W)tbb3vP9-B< zHkJ2|(=oDp!|A;~)+L-}{_rK4_;@7Wz~C&Nu=JsmtGhQcJ(Tcvayoq9*lt;PHQE{|-aUPyvEDvN6&-wW=s85xWUhqw z$SbY7Wb5##Y%O*ia(EWVNf=cWj)VRxQWD{HUj|yNzVh0u6SUR_b~t4U*A2+KI48{EkZw2%DiT4jk7Fz3ZQcm-Su2cxPnPi>#c)jF6zd zOE?_IrM(~uJMtZAmwP?KV& znL;R1GJ%(q(yV~ud%um1IsYx_R!X^nKD(>D8^8G-717K}ZKdukH(z)w0sK0=>gQJ3 z+7~|308xV}hKbzdh3Uh6>Ka`XNOWsQ_|eJTaUI3=tv77U;=vbOZb65+DM<68`jvOv zC)`9?>7bCK^CPNf!D88KPkyGwb+0z?u^Y@yEsvnbUbRGW1RD5ir#PK0k5_LsWw&+X z(Zs~4LFJ@S{RE$c-@A^A1Mw1A`E=*#Z90Yb@Yvh~i12~n&C<1Pnt*3XT^&D|aSQ%5 zKV*7Q76A|s687H0;tx!Fc;3Uua}eDEj!SGI?Kh|TwzgNh^!AxAAi61}pcSOi z5)moPm}Gjv1uPAx61sjtgsDT6)YU;kP@sgIe?qc#g-cE zy=rUgJkyo?fR1js4&wI1rE~-bae(P>84~P=wMCd zaWv>Crv)?Q){7Xr4~fuGOo`Y3Ys99TN?|3h;wYo$Jim<}63-}$d58p-ICK@Y<@L(^ zQ)7~av^1YbzVW}*a=U7BTI-8rPUZdQf1MAzK^pSXK}b92f6oJPSKJ%g<_-$--l!hcd@@N% zShl%h^2&c+(88KXQcEi;8EC!jz69$Q{(;*9?dxC4Fvu?-xA)8%?^rO)aF4Cwa7|2c zpmqS1`YBnP{;Up_uzSxU&yP4bjcpgMMvqiBa%C}tQ(nxBkLy9T_BPgnHNc!qjn{V) zrXReR1sxA7Yx|Xs2TNd&ns^%xcQ<|+AWMM$sFz@%CMxQzn-CEjrv}%p^n3pb;wKH? z-`sSvcOboZLx%3yIQ?~cco@$=UEsx60SWP?$l5O;k@bYCVNS1&`l0t#J3*{Anb2!Z zm@0@6L~=)iNwU@Beit8o`4~(f$h$i!qj6+dO+Pt0r8Gb$;omq$D5H}MO@5yoV3ViG}h2}EvjmTZRN#6$=` zA7AH%J7KJV*0jl-dCp^iS_b<@op z4kF10yv5(AD^W%BeFKc(#qzv621j5}%RHkHoVT2%`TpIj(%n){4;8Y@Yq#4((YUj| zoYi?s9Cqg80tF6;N9-Gp#~4q)J@FU(M^^qF^eL5~z;MgKFqIfJdqEs~Ecyj^)tx;l zn(t?u!M*v>TwCYhvhPdAZ(omlEZWTM#Kih>qibs-C`|DLy)7Qz#Yw*gT{Jh&z^3j_ z#B6{Y8wynlrg3(3{2=BW_F7d;tv{yt$iLEzsCQ3{I+{fJr^v9U6@dogRg0-oVlsvq z$F^xQ*Yes!OcqSTGED-J4|3M1&_Bawm}U9e+B4`*+2GA&5PjgOqm!m3O!#)hOcjTF zLuDf>QT8z;CQbwNqU;Gf5ZfwcC{pX!C3@{q$4VdBIVKW3Yc!b8^YywBLrCp*;H~w^ zPKRu?cXrC{oDHt27udeS=Jya^S`*V3^1qvis z)WckAR|)4$$FzP8{@g~^*O(E?Dldj30;LYb+qG@6&@bJ?B7)i z3f~W}a0v#JZ;y{3b+8lIk2@m+N6(Dc)XGdnffP*N+}FQaqtjM+8GZ^G%E!LKC;@{T z&x5}qE!BzTe-D|fVt20Y-|ps6Z+$;#NKDmG)KpH3jkX0fqnVD+rH^k_!^9LY&+MG1 zJWsu30Ni@m$Ahtw3m#^PsK;vGxIutO#K!zP1%PS6HKSCO)$LCv^yBelD!9S2Stpy^NFU(QJN*QDE>*XsB{Xxp}_I(s+op5 z6rZCbyp2n$(FG55t*fca`?wn;JMZ0kNBh?%QbVEkhrtdPmf!*3ns{_om-ySv;B8+o zeFqzcFgqXTE!4;0sDh*l(-Rf-$;;}mN9VasMv)Mo;idy zq#HNsM5C#Es(5oeHUz*g!n5`8%rXqbT5CyylUFVv)$R`R4`_`_wKFq@|CHrOI6FB< zOH#qrT^BcL1v}Hq8j=A4dz5#(WvCHIcD6}hx*X{L+HBWHiX5|;$gaF?Z(j4k5Vd*Apn{P6udZD zHM^gEYDgURqp6vtPlRe0Kd%JV-Q6;wXz*W9!gD-QGC9m2^q~ltsm@rrg~gMk)%0`B7ry)npRtdshV$AfjzsyDn2lF~Tz2+&-L9BK6}S z-e?{F;?nKmg@>`xnGo;D@HA+m#k{wd<=y2*X!f(SJ3G2yl5ukt6<>hpC!pf;-ft# z3U0vXV}= zH70S-)GvxgWtdZWm2sIIgIKFE#yZ5$Kz?}$*=0;u;i3JP>gUs5#3a32!F@BbD0?A| zj1a_7bT8237?b=J@KoN#R_z-xrSSJI49xV1lzR=&jU4ASa!1qB!g0~uAiqYpz#@$$ z%$HhNr?W6Wj|$tojmg%KO@srMGO5pDuUYO{gwqMwN*{xv% z3Nhx6mH-=(35f=~kd9?K8OLk%9F`4Fm3=!Xm#}rP)4i4y@G#t%?Im)V z8dP@Cyo9QET$U}9l^aq_*_)WBL!|g=Jf-^vG>g)yz zgqzNyxE@4fJq%HoyBWc5S^q!Q*N;p9H(pU!Zpw zYjJBy|M=q1b@ur787U6|1tB}Fm99eg?lCgC!~ebat;Z2@q9jy6IL*(XYJY({RGxy* zh0k8S5AaseL4Sd#Dr!@@Yha!8`Q40KFDoX=BE$R4Ec5GuTYv^Jr|{R+=UpWqxGt@M zXjqGf`3|H?bY}SnX!M&rR$A`*2R*Tw6G*Cj_Iml?Ozboi_fe*;I!y=b z%h2_>N{}=d8yiRU%T1P1GIvMZYxyg`Q@j4DuggZ0BS9_fv|Xz050<2_ttsEd6=wc=Bg_%HM1nQ?58_ zthC_Bf59dTFU~~@$>t5YbS^P!jTr1D%-&`OvGsYu($0ZR$gc@A=(qcNG&Vm2QrNw( z$<6!tvW+54Z!wI>SIvXha{$aE2aDo=K=J-{>Xpw$;{aQUvU2a z69M(V-XqvRK!FSrqZ^`rV3*iskVVn_!+b2XL)vB`%=A9yzbR+=XEk1TxcSS2DjJDN zs9$(~dp`in&bSpcz5z!?_d}FxxSQj@wD$20NynjQzUze~#jo?}I5|1}DwO0AB=kMYT8JB^4)yGdHZ)M+(s)GdZ@jk(Q_5GB<_&49 zaI$M-k$t`M7~<*b`#h0yXW#AE1{3#(XwFpa)lecefLp@J(rpbaZT5b}^m16N{fcG9 z#M7Kfe#*c}x2Cua8US7mPO(IJm29O6-*R1@2F+PdrtR;!Kb=*@sg<8n<#QWc_f*xCa_V#O z+E@s_AMBF7;4%KkI$U}q%*OJdmYm}nIcc*9hC-h>J+&SW<-xspqySG4cU9^6ONzIJ zOyuejBPlu~SKD0XZNE4JCVm3iV@{`=w~BeYe5P~j=;Ol&_WPFi0%vXC1yij9MbabQ zo%`7Z2Aex8t@k@#U-@)B&F4aA*u%25O_^3nuqT5Qkj{0A4YIT1aZJR_@!W=hDwfpM zzk;T&=g(-qKm!*Wp9b{UV{&_E+AwpOX@y(mrNf>o<&``Qe~51&9W!u33m7YYsP8eO#>wc4JwGocty zAAW5f`68N8DZRZah{J{jpg5OfEAxWr-r8>y*e~cBN?Gvqji`$`Sl5tFl@*fP9_mR{{v?f5;g+EPL#Q zq4PLIMJ36yb;BoI=pC+_6 zmfgFsvh%_ew4~?E<@Q_*l(=Xf4g0y_6WbMhfW*RVW1_f(!j*YE9?Pdx$QDiF1!v8a zdOZpEd!r*P$$Kl)_gmO>foGEbgF`<&XF%U`@9#j=E=T=0=5npWjr(FAUC7W@Ij=e4 zzOE29Fsq0g645z zeqI}dhOKK=m0M`)COIxtEynzS{8ha3aN=%U$4psWlVXpjN4s#-!A|Y57uTeK#lA&j z03&&xmaZe9zsOLrS1{mY{+a8zzQXfS?_XU7isq&)=;>=cgut5itL%?j2mvbgP=d+| zQJ&PnkukIxE0!qj9)45{U7;k&`*AW7jk0*PrPsS~rEIh_qN&37p5k8>xdhNTJ5IF} z-0%*4Lm~n}-!ORDdFrYmL{VSMNK@3X__@0EUr4V^6DB0r_pa#mS6j)`3z*bacc+s! zR-l2+9iD?N4L!btN*c@Of!;*gjs4t|*D8OGn417RF`G;>n}vn06(1I&(InB(QB9eA z!>{3Jqeq2{W|;f;`g^~bZCs2|E-VHef;(NK%X_BczCiXM5`cj@jG8hzBR_5L|74d0 z+8S_MFVzC*j>PmFo3y98<~A8o>3W{d=ew8vQ3s1=v27(TPwfY)zO5>q$F~W2L+Xz0 z@+6e20_Ars55BZ;&7ZXE9H+@+@J~*y*Ruc4;yNBW;2W5qhFe2rR{7)79!()yWFfqy{4 z>Oia^P_az{j4169J>#w(n8_IX(EcVzv7$);we9p^ke}%$T4IE5V8s96?;ZfuIuK(a6a{#%1tvh2;UFl^kLr?LgYl`7-J%Qv_?~32`dz!B(7emE~Ao z(g;8%Q@-r1c-MJeJ``$YE@X;yt~e2O0lld%ryTg2a{_f$wLBP*ypS@s!sGyXeWSfy zEtM#KGejusG--CdXJ3})!7ntnfEfVfIap|DNMJxX#x=kP0{Kq=SEt5#$#1BG*J}N9 ztg=#6Y>!bgtx;2|C|C|(Qs=Z;fZg4Q<0Y2Ve7kMEzL~82Oh6-yNx&tzYhr8p3uD8; zMbcA-H|qsaV`^C`3t{m?MBtndkAy%5TXRZkr&zd?2bRmF$qVE&+0~90;;WG3Bbp(( z29P0(F}NI3ATrFrT*I?$iBrMs5hU$HwBQ38VsvM1&RFqIiNz<_oPMXPhS8?X`T!st z3Cz1X{`$L*wp7OGHQa;_7saoxaWJO5;OP8F%LH7kN-jWm01yNX|p9nT|h;Tzk?U{-fKcbj}q}1lZT$+hu+J+~keY*A{G$hTCNRQi% z=asF)aqc}4P8Yq=JcxfL)gAI{iXbH^vmsf6MCuIegia7i+ zq^%JRvKT#r!CpvcqPy|KYQ6C8dsx0g%eWsGImCkUnFb2k8nYsj_vR?B?`p+V?{u!jLWt=kfx#4&FJ5g zkw`OZ1Iuoj>6_TGlcc(eTA!bn4+2QpP*g0Oy$P`hgJlyd51onIsCL$i)PL@~Wyt3P z{Dc)xQ*^*vEIR_|SWMSluY?%srOF}k4N7Dfc6HI&Z2%g@rQyf?95^82AGcm}dwt9S zz8~E(O|75oJ7hyudOY^^crzw<{NF5p%w;ZM9IT7>@_JV#3wDVz^?JRSM3Gmx4gPPC zeDk+ErdM!Ud=0=SAu&^Av)M`LLb_Fx%3N6>q}K+c#Ud5b78S%{zM7c+#v|hkBdYo} zi^yiU~x4Vl?o5 z8{0zKUJ&|vK9QiJxFd(4ALLRMdJInU|7k4cVfpMLkuRz%c)^1XxD+!^K;g}o`(T@D zxM>AwCa61gxe{XeR7HPCe9GW1VhKS@kC)9rdA~ZRff)jp!@+}l zVueI%FL7Q3E@Yu$(+FTp`P!z#26z8L#c%vGJKkxf|v1ZF|r zyZpMcabYLEL=g}}=<(G%`}I~Akzd0qU@ha!e_ISgwPCoEF($;>d#?kdoL!;(C2!tQ z3fW0}xoijYfUj*}_Y5t??0_5svF=~)mGFrei$#UR4rH-Ui!MjsZ5O3YO)oImBQd}S zti;B;{Hg9IbB2L@cPdk%VkNzZG4l$r>ANxs^F)6(KOi8DjBwmhRvW(Um8iT9Xn!b1 z?NTXKlzQ_r{WXFKpN3+AfamRNtM!qNnNmkjF5x9{03-=a0+)#M*XoQqrwh^L91C9^ zjRMoPbJOjQeGDuI7wH97>kry!%w07%WzS;1;S;#nfaS`0?NMo=OEXL5OT>cUd!v;U z``gpom^+;6|FntVoQG2PJl%{rcq1V7(CVY~Q861ZM>^ONs4^`JE31ljE!H@E@i-bj zx?`kAwwxC==6D_GFv{@{1iH)=2+5NFTMU0jF7kLSUgRi4xtrbW=;=$u{lCi}(g@q! z(yk0WEepI8vd!fkCq1hkr*r=obXs|NltpgP=KZF*@*_+uQTLYzarDB!0X^KB?4ov- zp+?qq??Z~uw3VzU7o$7=bH&~2O~P3B!`<(a3hcy}`F%;NNgr&C{)cpG$-2Aa>3skC z+T`Q4FMFPNA^v{`VF#wN>CB1#Q6<6oJ7A3Ti>#G#3JeZ#Od@Zh#>l2l`=jU7wCD4B zAN3y_2rq$N0MK92$wD~^D>^IT%D~mZ-wykLeXHIT<8sU2@R=&>Ywch0VRK~0?!(aTY!b+C^Y$~a{LbhC4~FG zAW)wFZxJX3y#GA{l|s6^aC2fixU#js1=5Z@PRnz@=&>z!fd1uSI`dn(eud{$EX}6f zH-C|~_r2AJKnMr$8}heFH-9R)8f*4@kYhTo*S^@c%tV1G%@Bo0Aan!(CITI(L%jZA zct*j?850)YumKxYJq@EXp<Q9jLOlA$`f}MkgR4)tUfq=gLeXC7Idqoc9{>*qDx=Co9N1s~wi9d;mN@{dLmd@S$UfKs6EgM579n7*~hUPLF*t3sWgdOPw zi_%3(ekYO09mN{L000z|@9*ow)9sB>PSAx)(-hRn338+W6^`UZEKGQ;+?Ti_43u;& zQJWFd3sV6B+2;#&?|!{|74-E-gLpI%XK=S%jk*3+Lr%iFoK5I(!j$I${=;XuiXI0I z3^L5Kz2}{qCVCOSMG9AM(gfUH22*$)OZI)%IU*!Pe@LQtc2wv1DHX9PPP9F8~i z;7C(q`g!J%hCUzTUGUf{>yS9_mJUOh5Wt`Vhd$LU>#P=Gg`FE&q6z-jzsrsMx&?X832irQ|^CJ;z~ zU>f?Lo4!GeWgX z^y#zrKKnfD_pDVe5_~xts%P2!j)mG!?-k2a2%9GbpLT_G#(SG{ti-)qM*iC`gW*8- zCJo1UiOt{L8Pu(>tULy&1r7Iz&&Hoi9M|+;lIaK=^n(84IE_n)u9;

AeLC>&tXS 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 P!U}M(K_M%xz3=}U$1fiZ literal 0 HcmV?d00001 diff --git a/nginx/README.md b/nginx/README.md new file mode 100644 index 0000000..e0882ed --- /dev/null +++ b/nginx/README.md @@ -0,0 +1,51 @@ +# 🌐 Configuraciones Nginx — napi + +Copia de referencia de los server blocks desplegados en **zzz** (`qu3v3d0.tech`). + +--- + +## 📋 Sites activos + +| Fichero | server_name | Root | Grupo | +|:--------|:------------|:-----|:------| +| **`napi-ddaw2.conf`** | `notas.qu3v3d0.tech` | `/var/www/napi` | DDAW2 (19 alumnos) | +| **`napi2-asir1.conf`** | `asir1.qu3v3d0.tech` | `/var/www/napi2` | ASIR1 Programación (21 alumnos) | + +--- + +## 🔑 Funcionamiento común + +Ambos sites comparten la misma arquitectura: + +1. **Auth PAM** (`libnginx-mod-http-auth-pam`) — credenciales SFTP del alumno +2. **`$remote_user`** — Nginx usa el usuario autenticado para servir su `notas.md` +3. **`viewer.html`** — App estática que hace `fetch('/notas.md')` y renderiza con `marked.js` + `twemoji` +4. **SSL wildcard** — `*.qu3v3d0.tech` (certificado en `/etc/ssl/certs/qu3v3d0.tech.crt`) + +``` +Alumno → https://asir1.qu3v3d0.tech → Auth PAM → viewer.html + → fetch('/notas.md') → Nginx alias → /var/www/napi2/data/$remote_user/notas.md + → marked.js renderiza → alumno ve su feedback +``` + +--- + +## 🛠️ Gestión en zzz + +```bash +# Ver configs activos +ls -la /etc/nginx/sites-enabled/ + +# Editar +sudo nano /etc/nginx/sites-available/napi2 + +# Test + reload +sudo nginx -t && sudo systemctl reload nginx +``` + +--- + +## 📅 DNS + +DNS wildcard `*.qu3v3d0.tech` → `161.22.44.104` (zzz). +No hay que tocar DNS para añadir nuevos subdominios. diff --git a/nginx/napi-ddaw2.conf b/nginx/napi-ddaw2.conf new file mode 100644 index 0000000..4a942de --- /dev/null +++ b/nginx/napi-ddaw2.conf @@ -0,0 +1,41 @@ +# napi — Notas API (notas.qu3v3d0.tech) +# Auth: PAM (mismas credenciales que SFTP) +# Datos: /var/www/api/data/$remote_user/notas.md + +server { + listen 80; + server_name notas.qu3v3d0.tech; + return 301 https://$server_name$request_uri; +} + +server { + listen 443 ssl; + server_name notas.qu3v3d0.tech; + + ssl_certificate /etc/ssl/certs/qu3v3d0.tech.crt; + ssl_certificate_key /etc/ssl/private/qu3v3d0.tech.key; + + root /var/www/api; + + auth_pam "Notas DDAW2"; + auth_pam_service_name "common-auth"; + + location = / { + try_files /viewer.html =404; + } + + location = /notas.md { + alias /var/www/api/data/$remote_user/notas.md; + default_type text/plain; + charset utf-8; + add_header Cache-Control "no-cache"; + } + + location ~* \.(js|css)$ { + expires 7d; + } + + location / { + return 404; + } +} diff --git a/nginx/napi2-asir1.conf b/nginx/napi2-asir1.conf new file mode 100644 index 0000000..4fbfb7f --- /dev/null +++ b/nginx/napi2-asir1.conf @@ -0,0 +1,41 @@ +# napi2 — Notas Programación ASIR1 (asir1.qu3v3d0.tech) +# Auth: PAM (mismas credenciales que SFTP) +# Datos: /var/www/napi2/data/$remote_user/notas.md + +server { + listen 80; + server_name asir1.qu3v3d0.tech; + return 301 https://$server_name$request_uri; +} + +server { + listen 443 ssl; + server_name asir1.qu3v3d0.tech; + + ssl_certificate /etc/ssl/certs/qu3v3d0.tech.crt; + ssl_certificate_key /etc/ssl/private/qu3v3d0.tech.key; + + root /var/www/napi2; + + auth_pam "Notas Programacion ASIR1"; + auth_pam_service_name "common-auth"; + + location = / { + try_files /viewer.html =404; + } + + location = /notas.md { + alias /var/www/napi2/data/$remote_user/notas.md; + default_type text/plain; + charset utf-8; + add_header Cache-Control "no-cache"; + } + + location ~* \.(js|css)$ { + expires 7d; + } + + location / { + return 404; + } +} diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000..d1a1602 --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,165 @@ +# 📜 Scripts y Servicios — napi + +Copia de referencia de todos los scripts y unidades systemd desplegados en **zzz** (`qu3v3d0.tech`) y **aldebaran/anka4** para el sistema de retroalimentación a estudiantes. + +--- + +## 🗂️ Inventario + +| Fichero | Dónde vive | Descripción | +|:--------|:-----------|:------------| +| **`python-upload-watcher.sh`** | `zzz:/usr/local/bin/` | Watcher ASIR1 — detecta entregas SFTP en `/home/USER/python/`, agrupa por carpeta, notifica XMPP | +| **`nginx-user-config-watcher.sh`** | `zzz:/usr/local/bin/` | Watcher DDAW2 — valida y despliega `*.conf` de alumnos, analiza CSP, notifica XMPP | +| **`xmpp-notify.py`** | `zzz:/usr/local/bin/` | Bot XMPP one-shot (slixmpp) — envía mensaje a `jla@librebits.info` | +| **`python-upload-watcher.service`** | `zzz:/etc/systemd/system/` | Unit systemd para el watcher ASIR1 | +| **`nginx-user-config-watcher.service`** | `zzz:/etc/systemd/system/` | Unit systemd para el watcher DDAW2 | +| **`home-fenix-napi-data.mount`** | `aldebaran:~/.config/systemd/user/` | Mount sshfs `~/napi-data/` → `zzz:/var/www/napi/data/` (DDAW2) | +| **`home-fenix-napi-data2.mount`** | `aldebaran:~/.config/systemd/user/` | Mount sshfs `~/napi-data2/` → `zzz:/var/www/napi2/data/` (ASIR1) | + +--- + +## 🐍 python-upload-watcher.sh (v5) + +**Propósito:** Monitorizar las entregas de prácticas de Programación (ASIR1) subidas por SFTP. + +### Características + +- ✅ **Batching por carpeta** — Cuando un alumno sube `PRACTICA3.1/` con N ficheros, envía **un solo mensaje XMPP** con el listado completo (espera 10s de silencio) +- ♻️ **Re-entregas** — Si el alumno borra y re-sube la misma carpeta (<120s), etiqueta como "Re-entrega" +- 🪟 **Windows-safe** — Ignora `Thumbs.db`, `desktop.ini`, `.DS_Store`, `*.tmp`, `~$*` +- 📁 **Iconos por tipo** — 🐍 `.py` · 📦 `.zip/.rar` · 📝 `.md` · 📄 `.txt` · 📕 `.pdf` · 📘 `.docx` + +### Ejemplo de notificación XMPP + +``` +📁 [barrios] Entrega ASIR1: PRACTICA3.1/ (4 ficheros) + 🐍 main.py (2048 bytes) + 🐍 utils.py (1024 bytes) + 📝 README.md (512 bytes) + 📄 requisitos.txt (128 bytes) +``` + +``` +📁 [barrios] ♻️ Re-entrega ASIR1: PRACTICA3.1/ (3 ficheros) + 🐍 main.py (2100 bytes) + 📝 README.md (600 bytes) + 📄 requisitos.txt (128 bytes) +``` + +### Eventos inotifywait monitorizados + +| Evento | Acción | +|:-------|:-------| +| `CREATE` (directorio) | Abre batch, detecta re-entrega si fue borrado recientemente | +| `CREATE` (fichero) | Ignorado (esperamos `close_write`) | +| `CLOSE_WRITE` | Fichero completado → añade al batch o notifica individual | +| `MOVED_TO` | Fichero movido al directorio → igual que `close_write` | +| `DELETE` / `MOVED_FROM` | Registra borrado de carpeta (para detectar re-entregas) | + +### Log + +```bash +sudo tail -f /var/log/python-upload-watcher.log # en zzz +``` + +--- + +## 🌐 nginx-user-config-watcher.sh (v3) + +**Propósito:** Despliegue automático de configuraciones Nginx subidas por alumnos de DDAW2 via SFTP. + +### Características + +- ✅ **Validación de seguridad** — Verifica `server_name`, `root`, bloquea directivas peligrosas (`proxy_pass`, `include /`, etc.) +- 🔒 **Análisis CSP** — Revisa cabeceras `Content-Security-Policy`, detecta `unsafe-inline`, multiline, HTTPS +- 📛 **Nomenclatura** — Verifica patrón `mi-nginx[-SUFIJO].conf` +- 🌐 **Multi-sitio v3** — `mi-nginx-hextris.conf` → `USER-hextris.qu3v3d0.tech` +- 🗑️ **Undeploy** — Borrar el `.conf` via SFTP elimina el site de Nginx +- 💡 **Pistas humanizadas** — Traduce errores `nginx -t` a español comprensible + +### Límites + +- Máximo **4 sitios** por alumno +- Solo `.conf` dentro de `/home/USER/html/` + +--- + +## 📨 xmpp-notify.py + +Bot XMPP one-shot usando `slixmpp`. Envía un mensaje y desconecta. + +```bash +/usr/local/bin/xmpp-notify.py "Mensaje de prueba" +``` + +- **JID:** `zzz@librebits.info` +- **Destinatario:** `jla@librebits.info` +- **Config:** `/etc/xmpp-notify.conf` (credenciales) + +--- + +## ⚙️ Units systemd + +### En zzz (system-level) + +```bash +# Estado de los watchers +sudo systemctl status python-upload-watcher.service # ASIR1 +sudo systemctl status nginx-user-config-watcher.service # DDAW2 + +# Reiniciar +sudo systemctl restart python-upload-watcher.service +sudo systemctl restart nginx-user-config-watcher.service +``` + +### En aldebaran/anka4 (user-level) + +```bash +# Estado de los mounts sshfs +systemctl --user status home-fenix-napi\\x2ddata.mount # DDAW2 +systemctl --user status home-fenix-napi\\x2ddata2.mount # ASIR1 + +# Montar/desmontar +systemctl --user start home-fenix-napi\\x2ddata2.mount +systemctl --user stop home-fenix-napi\\x2ddata2.mount +``` + +--- + +## 🏗️ Estructura de directorios en zzz + +``` +/var/www/napi/ ← DDAW2 +├── viewer.html +├── marked.min.js +├── twemoji.min.js +└── data/ + ├── anas/notas.md + ├── pablo/notas.md + └── ... (19 alumnos) + +/var/www/napi2/ ← ASIR1 (Programación) +├── viewer.html +├── marked.min.js +├── twemoji.min.js +└── data/ + ├── barja/notas.md + ├── barrios/notas.md + └── ... (21 alumnos) + +/home/USER/python/ ← Entregas SFTP (ASIR1) + ├── PRACTICA3.1/ + │ ├── main.py + │ └── README.md + └── fichero_suelto.py +``` + +--- + +## 📅 Historial de versiones + +| Script | Versión | Fecha | Cambios | +|:-------|:--------|:------|:--------| +| `python-upload-watcher.sh` | **v5** | 2026-02-25 | Batching + re-entregas + Windows-safe + fix `local` en subshell | +| `nginx-user-config-watcher.sh` | **v3** | 2026-02-19 | Multi-sitio + undeploy + CSP analysis | +| `xmpp-notify.py` | **v1** | 2026-01-27 | Bot one-shot slixmpp | diff --git a/scripts/home-fenix-napi-data.mount b/scripts/home-fenix-napi-data.mount new file mode 100644 index 0000000..213e981 --- /dev/null +++ b/scripts/home-fenix-napi-data.mount @@ -0,0 +1,13 @@ +[Unit] +Description=SSHFS mount napi-data from zzz (qu3v3d0.tech) +After=network-online.target +Wants=network-online.target + +[Mount] +What=fenix@qu3v3d0.tech:/var/www/napi/data +Where=/home/fenix/napi-data +Type=fuse.sshfs +Options=reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,IdentityFile=/home/fenix/.ssh/id_rsa,_netdev,allow_other + +[Install] +WantedBy=default.target diff --git a/scripts/home-fenix-napi-data2.mount b/scripts/home-fenix-napi-data2.mount new file mode 100644 index 0000000..f0c1c0c --- /dev/null +++ b/scripts/home-fenix-napi-data2.mount @@ -0,0 +1,13 @@ +[Unit] +Description=SSHFS mount napi-data2 from zzz (qu3v3d0.tech) — Programación ASIR1 +After=network-online.target +Wants=network-online.target + +[Mount] +What=fenix@qu3v3d0.tech:/var/www/napi2/data +Where=/home/fenix/napi-data2 +Type=fuse.sshfs +Options=reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,IdentityFile=/home/fenix/.ssh/id_rsa,_netdev,allow_other + +[Install] +WantedBy=default.target diff --git a/scripts/nginx-user-config-watcher.service b/scripts/nginx-user-config-watcher.service new file mode 100644 index 0000000..9c4a220 --- /dev/null +++ b/scripts/nginx-user-config-watcher.service @@ -0,0 +1,12 @@ +[Unit] +Description=Watch and deploy user Nginx configs +After=network.target nginx.service + +[Service] +Type=simple +ExecStart=/usr/local/bin/nginx-user-config-watcher.sh +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target diff --git a/scripts/nginx-user-config-watcher.sh b/scripts/nginx-user-config-watcher.sh new file mode 100644 index 0000000..0f8d4be --- /dev/null +++ b/scripts/nginx-user-config-watcher.sh @@ -0,0 +1,508 @@ +#!/bin/bash +# /usr/local/bin/nginx-user-config-watcher.sh +# Watcher para configs nginx de usuarios via SFTP +# Detecta cualquier archivo *.conf en /home/USER/html/ +# Con notificaciones XMPP a jla@librebits.info +# +# v2 — Análisis CSP post-deploy + humanización de errores nginx (P2.5) +# v3 — Multi-sitio por alumno: mi-nginx-SUFIJO.conf → USER-SUFIJO.qu3v3d0.tech +# Retrocompatible: mi-nginx.conf (sin sufijo) funciona igual que v2 + +WATCH_DIR="/home" +LOG="/var/log/nginx-user-configs.log" +MAX_SITES=4 + +log() { + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG" +} + +# Notificación XMPP (fire and forget) +notify_xmpp() { + local msg="$1" + /usr/local/bin/xmpp-notify.py "$msg" >/dev/null 2>&1 & +} + +# ------------------------------------------------------- +# analyze_csp() — Analiza un .conf desplegado buscando +# cabeceras CSP y de seguridad. Devuelve texto con pistas. +# ------------------------------------------------------- +analyze_csp() { + local conf="$1" + local hints="" + local conf_content + conf_content=$(cat "$conf" 2>/dev/null) || return + + # --- Check 1: ¿Tiene cabecera CSP? --- + if ! echo "$conf_content" | grep -q "Content-Security-Policy"; then + hints="${hints}💡 Tu .conf no tiene cabecera Content-Security-Policy (opcional según la práctica) +" + else + # --- Check 2: ¿CSP multiline? (add_header ... " sin cierre en misma línea) --- + # Buscamos líneas con add_header Content-Security-Policy que abren comillas + # pero no las cierran en la misma línea + if echo "$conf_content" | grep -E 'add_header\s+Content-Security-Policy' | grep -qE '"[^"]*$'; then + hints="${hints}⚠️ CSP con saltos de línea: ponlo todo en UNA sola línea entre comillas +" + fi + + # --- Check 3: ¿CSP en bloque HTTPS (443) o solo en HTTP (80)? --- + # Estrategia: buscar si CSP aparece ANTES del primer listen 443 + # o si no hay listen 443 en absoluto + local has_443 + has_443=$(echo "$conf_content" | grep -c "listen.*443") + if [[ "$has_443" -eq 0 ]]; then + hints="${hints}⚠️ No hay bloque HTTPS (listen 443) — la CSP debería ir en el bloque HTTPS +" + else + # Comprobar si CSP está solo en bloque HTTP (antes de listen 443) + # Obtenemos la línea de CSP y la línea de listen 443 + local csp_line + local ssl_line + csp_line=$(echo "$conf_content" | grep -n "Content-Security-Policy" | head -1 | cut -d: -f1) + ssl_line=$(echo "$conf_content" | grep -n "listen.*443" | head -1 | cut -d: -f1) + if [[ -n "$csp_line" && -n "$ssl_line" && "$csp_line" -lt "$ssl_line" ]]; then + # CSP aparece antes del bloque 443 — verificar si también está después + local csp_after_ssl + csp_after_ssl=$(echo "$conf_content" | tail -n +"$ssl_line" | grep -c "Content-Security-Policy") + if [[ "$csp_after_ssl" -eq 0 ]]; then + hints="${hints}⚠️ CSP solo en bloque HTTP (80), no en HTTPS (443) — ponla en el bloque donde se sirve tu web +" + fi + fi + fi + + # --- Check 4: ¿unsafe-inline en script-src? --- + if echo "$conf_content" | grep -i "script-src" | grep -qi "unsafe-inline"; then + hints="${hints}⚠️ unsafe-inline en script-src debilita la protección CSP contra XSS +" + fi + + # --- Check 5: ¿Falta 'always' en add_header CSP? --- + if echo "$conf_content" | grep "Content-Security-Policy" | grep -qv "always"; then + hints="${hints}💡 Consejo: añade 'always' para que CSP se envíe también en respuestas 4xx/5xx +" + fi + fi + + # --- Check 6: ¿Tiene las otras cabeceras de seguridad? --- + local missing_headers="" + if ! echo "$conf_content" | grep -q "X-Content-Type-Options"; then + missing_headers="${missing_headers} X-Content-Type-Options" + fi + if ! echo "$conf_content" | grep -q "X-Frame-Options"; then + missing_headers="${missing_headers} X-Frame-Options" + fi + if ! echo "$conf_content" | grep -q "X-XSS-Protection"; then + missing_headers="${missing_headers} X-XSS-Protection" + fi + if ! echo "$conf_content" | grep -q "Referrer-Policy"; then + missing_headers="${missing_headers} Referrer-Policy" + fi + if [[ -n "$missing_headers" ]]; then + hints="${hints}💡 Faltan cabeceras de seguridad:${missing_headers} +" + fi + + # Devolver resultado + if [[ -z "$hints" ]]; then + echo "🔒 CSP y cabeceras de seguridad: todo OK" + else + echo "$hints" + fi +} + +# ------------------------------------------------------- +# humanize_nginx_error() — Traduce errores nginx -t +# a pistas comprensibles para el alumno. +# ------------------------------------------------------- +humanize_nginx_error() { + local error_output="$1" + local pistas="" + + if echo "$error_output" | grep -q 'unexpected "}"'; then + pistas="${pistas}💡 ¿Te falta un ';' al final de alguna directiva? +" + fi + if echo "$error_output" | grep -q "unexpected end of file"; then + pistas="${pistas}💡 ¿Cerraste todos los bloques server { } con '}'? +" + fi + if echo "$error_output" | grep -q "directive is not allowed"; then + pistas="${pistas}💡 Revisa que cada directiva esté dentro del bloque server { } correcto +" + fi + if echo "$error_output" | grep -q "unknown directive"; then + pistas="${pistas}💡 ¿Hay algún typo en el nombre de una directiva? +" + fi + if echo "$error_output" | grep -q "invalid number of arguments"; then + pistas="${pistas}💡 Alguna directiva tiene argumentos de más o de menos — revisa comillas y punto y coma +" + fi + if echo "$error_output" | grep -qE '(missing|unexpected) ";"'; then + pistas="${pistas}💡 Revisa los punto y coma (;) — puede que sobre o falte alguno +" + fi + + echo "$pistas" +} + +# ------------------------------------------------------- +# check_https_redirect() — Verifica si la config tiene +# redirección HTTP → HTTPS (return 301 https://) +# ------------------------------------------------------- +check_https_redirect() { + local conf="$1" + local expected_name="$2" + local conf_content + conf_content=$(cat "$conf" 2>/dev/null) || return + local hints="" + + # ¿Tiene listen 443 ssl? (es decir, ¿sirve HTTPS?) + if echo "$conf_content" | grep -q "listen.*443.*ssl"; then + # Tiene HTTPS → ¿redirige HTTP a HTTPS? + if ! echo "$conf_content" | grep -qE "return\s+301\s+https://"; then + hints="${hints}⚠️ HTTPS activo pero NO hay redirección HTTP → HTTPS. +💡 Añade un bloque server { listen 80; return 301 https://\$server_name\$request_uri; } +" + else + hints="${hints}✅ Redirección HTTP → HTTPS configurada correctamente +" + fi + else + # No tiene HTTPS + hints="${hints}⚠️ Tu config no tiene bloque HTTPS (listen 443 ssl) — el tráfico no va cifrado +💡 Recuerda: la práctica requiere forzar tráfico HTTP → HTTPS +" + fi + + echo "$hints" +} + +# ------------------------------------------------------- +# check_naming_convention() — Avisa si el fichero .conf +# no sigue la nomenclatura mi-nginx[-SUFIJO].conf +# ------------------------------------------------------- +check_naming_convention() { + local conffile="$1" + if [[ ! "$conffile" =~ ^mi-nginx(-[a-z0-9]+)?\.conf$ ]]; then + echo "📛 Tu fichero se llama '$conffile' — la nomenclatura recomendada es: + • mi-nginx.conf → sitio principal + • mi-nginx-hextris.conf → segundo sitio (Hextris) + • mi-nginx-app.conf → tercer sitio (App) + Usa el formato mi-nginx-NOMBRE.conf para que el sistema detecte automáticamente tu subdominio. +" + fi +} + +# ------------------------------------------------------- +# extract_app_suffix() — Extrae el sufijo de app del nombre del .conf +# mi-nginx.conf → "" (vacío = sitio principal) +# mi-nginx-portfolio.conf → "portfolio" +# otro-nombre.conf → "" (no sigue el patrón multi-sitio) +# ------------------------------------------------------- +extract_app_suffix() { + local conffile="$1" + if [[ "$conffile" =~ ^mi-nginx-([a-z0-9]+)\.conf$ ]]; then + echo "${BASH_REMATCH[1]}" + else + echo "" + fi +} + +# ------------------------------------------------------- +# undeploy_site() — Elimina un site de nginx cuando el +# alumno borra su mi-nginx[-SUFIJO].conf via SFTP +# ------------------------------------------------------- +undeploy_site() { + local user="$1" + local conffile="$2" + + local app_suffix + app_suffix=$(extract_app_suffix "$conffile") + + local site_id + if [[ -n "$app_suffix" ]]; then + site_id="${user}-${app_suffix}" + else + site_id="${user}" + fi + + local dest="/etc/nginx/sites-available/$site_id" + local enabled="/etc/nginx/sites-enabled/$site_id" + + # Solo actuar si el site existe desplegado + if [[ -f "$dest" || -L "$enabled" ]]; then + rm -f "$enabled" "$dest" + + # Validar que nginx sigue OK sin ese site + if nginx -t 2>&1 | grep -q "successful"; then + systemctl reload nginx + log "[$user] UNDEPLOY: Site $site_id eliminado (borrado $conffile) y nginx recargado" + notify_xmpp "🗑️ [$user] Site $site_id eliminado (borrado $conffile)" + else + log "[$user] UNDEPLOY: Site $site_id eliminado pero nginx -t falló (recargando de todas formas)" + systemctl reload nginx + fi + fi +} + +validate_and_deploy() { + local user="$1" + local conffile="$2" + local src="/home/$user/html/$conffile" + + # --- v3: Determinar sufijo de app y nombres esperados --- + local app_suffix + app_suffix=$(extract_app_suffix "$conffile") + + local expected_name + local expected_root + local site_id + + if [[ -n "$app_suffix" ]]; then + expected_name="${user}-${app_suffix}" + expected_root="/home/$user/html/$app_suffix" + site_id="${user}-${app_suffix}" + else + expected_name="${user}" + expected_root="/home/$user/html" + site_id="${user}" + fi + + local dest="/etc/nginx/sites-available/$site_id" + local enabled="/etc/nginx/sites-enabled/$site_id" + local tmp="/tmp/nginx-test-${site_id}.conf" + local backup="/tmp/nginx-backup-${site_id}.conf" + local error_file="/home/$user/html/nginx-error.log" + local status_file="/home/$user/html/nginx-status.log" + local practica_file="/home/$user/html/practica-status.log" + + # Verificar que el archivo existe + [[ ! -f "$src" ]] && return 1 + + # --- v3: Límite de sitios por alumno (solo para sitios NUEVOS) --- + if [[ -n "$app_suffix" && ! -f "$dest" ]]; then + local current_sites + current_sites=$(ls /etc/nginx/sites-enabled/${user} /etc/nginx/sites-enabled/${user}-* 2>/dev/null | wc -l) + if (( current_sites >= MAX_SITES )); then + log "[$user] RECHAZADO: límite de $MAX_SITES sitios alcanzado" + echo "ERROR: Ya tienes $MAX_SITES sitios desplegados (límite máximo $MAX_SITES)." > "$error_file" + echo "Elimina algún mi-nginx-*.conf si quieres crear uno nuevo." >> "$error_file" + chown $user:www-data "$error_file" 2>/dev/null + notify_xmpp "❌ [$user] Config RECHAZADA: límite de $MAX_SITES sitios alcanzado" + return 1 + fi + fi + + # Copiar a temporal para validar + cp "$src" "$tmp" + + # Comprobar nomenclatura del fichero (aviso temprano) + local naming_check + naming_check=$(check_naming_convention "$conffile") + + # SEGURIDAD: Verificar que server_name coincide con el esperado + if ! grep -qE "^\s*server_name\s+${expected_name}\.(local|qu3v3d0\.tech)" "$tmp"; then + log "[$user] RECHAZADO: server_name no coincide (esperado: ${expected_name}.qu3v3d0.tech)" + { + echo "ERROR: server_name debe ser ${expected_name}.qu3v3d0.tech" + if [[ -n "$naming_check" ]]; then + echo "" + echo "$naming_check" + fi + } > "$error_file" + if [[ -n "$app_suffix" ]]; then + echo "(Para el fichero $conffile el subdominio esperado es ${expected_name}.qu3v3d0.tech)" >> "$error_file" + fi + chown $user:www-data "$error_file" 2>/dev/null + notify_xmpp "❌ [$user] Config RECHAZADA: server_name incorrecto ($conffile, esperado: ${expected_name})" + rm -f "$tmp" + return 1 + fi + + # SEGURIDAD: Verificar que root apunta al directorio correcto + # - Sin sufijo: prefijo /home/USER/html (v2-compatible, permite subdirectorios) + # - Con sufijo: exacto /home/USER/html/SUFIJO (multi-sitio v3) + if [[ -n "$app_suffix" ]]; then + if ! grep -qE "^\s*root\s+${expected_root}\s*;" "$tmp"; then + log "[$user] RECHAZADO: root no apunta a $expected_root" + echo "ERROR: root debe ser ${expected_root}" > "$error_file" + echo "(Para el fichero $conffile la carpeta debe ser html/$app_suffix/)" >> "$error_file" + chown $user:www-data "$error_file" 2>/dev/null + notify_xmpp "❌ [$user] Config RECHAZADA: root incorrecto ($conffile, esperado: ${expected_root})" + rm -f "$tmp" + return 1 + fi + else + # Retrocompatible con v2: acepta /home/USER/html y cualquier subdirectorio + if ! grep -qE "^\s*root\s+/home/$user/html" "$tmp"; then + log "[$user] RECHAZADO: root no apunta a /home/$user/html" + echo "ERROR: root debe ser /home/$user/html" > "$error_file" + chown $user:www-data "$error_file" 2>/dev/null + notify_xmpp "❌ [$user] Config RECHAZADA: root incorrecto ($conffile)" + rm -f "$tmp" + return 1 + fi + fi + + # --- v3: Verificar que el subdirectorio existe (solo multi-sitio) --- + if [[ -n "$app_suffix" && ! -d "$expected_root" ]]; then + log "[$user] RECHAZADO: directorio $expected_root no existe" + echo "ERROR: La carpeta '$app_suffix/' no existe dentro de html/." > "$error_file" + echo "Crea primero la carpeta via SFTP (FileZilla) y luego vuelve a subir $conffile." >> "$error_file" + chown $user:www-data "$error_file" 2>/dev/null + notify_xmpp "❌ [$user] Config RECHAZADA: carpeta html/$app_suffix/ no existe" + rm -f "$tmp" + return 1 + fi + + # SEGURIDAD: Bloquear directivas peligrosas (ignorando comentarios) + if grep -v "^\s*#" "$tmp" | grep -qE "(proxy_pass|fastcgi_pass|uwsgi_pass|include\s+/|lua_|perl_|upstream)" ; then + log "[$user] RECHAZADO: directivas prohibidas detectadas ($conffile)" + echo "ERROR: Directivas proxy/include/lua no permitidas" > "$error_file" + chown $user:www-data "$error_file" 2>/dev/null + notify_xmpp "❌ [$user] Config RECHAZADA: directivas prohibidas ($conffile)" + rm -f "$tmp" + return 1 + fi + + # Hacer backup del config actual si existe + [[ -f "$dest" ]] && cp "$dest" "$backup" + + # Copiar nuevo config a sites-available + cp "$tmp" "$dest" + + # Asegurar que el symlink existe + ln -sf "$dest" "$enabled" + + # Validar sintaxis nginx con la nueva config + local nginx_output + nginx_output=$(nginx -t 2>&1) + + if echo "$nginx_output" | grep -q "successful"; then + # Sintaxis OK - recargar nginx + systemctl reload nginx + log "[$user] OK: Config desplegada ($conffile → $site_id) y nginx recargado" + + # Analizar CSP y cabeceras de seguridad + local csp_analysis + csp_analysis=$(analyze_csp "$dest") + + # Analizar redirección HTTP → HTTPS + local https_check + https_check=$(check_https_redirect "$dest" "$expected_name") + + # Mensaje de deploy según sea sitio principal o sub-sitio + local deploy_msg + if [[ -n "$app_suffix" ]]; then + deploy_msg="✅ [$user] Config desplegada OK ($conffile → ${expected_name}.qu3v3d0.tech)" + else + deploy_msg="✅ [$user] Config desplegada OK ($conffile)" + fi + + # XMPP al profesor (resumen + todos los análisis) + notify_xmpp "$deploy_msg +$https_check$csp_analysis${naming_check:+ +$naming_check}" + + # nginx-status.log (resumen para el alumno) + { + echo "OK: Config desplegada desde $conffile $(date)" + if [[ -n "$app_suffix" ]]; then + echo "🌐 Sitio: https://${expected_name}.qu3v3d0.tech" + fi + echo "" + echo "$https_check" + echo "$csp_analysis" + if [[ -n "$naming_check" ]]; then + echo "$naming_check" + fi + } > "$status_file" + chown $user:www-data "$status_file" 2>/dev/null + + # practica-status.log (detalle completo) + { + echo "=== Análisis de $conffile — $(date) ===" + if [[ -n "$app_suffix" ]]; then + echo "🌐 Sitio: https://${expected_name}.qu3v3d0.tech" + echo "📁 Root: $expected_root" + fi + echo "" + echo "--- Redirección HTTPS ---" + echo "$https_check" + echo "--- Seguridad (CSP y cabeceras) ---" + echo "$csp_analysis" + if [[ -n "$naming_check" ]]; then + echo "--- Nomenclatura ---" + echo "$naming_check" + fi + echo "---" + echo "Revisa el enunciado de tu práctica para los entregables pendientes." + } > "$practica_file" + chown $user:www-data "$practica_file" 2>/dev/null + + rm -f "$error_file" + rm -f "$backup" + else + # Error de sintaxis - revertir + log "[$user] RECHAZADO: Error de sintaxis nginx ($conffile → $site_id)" + + # Humanizar el error + local pistas + pistas=$(humanize_nginx_error "$nginx_output") + + # nginx-error.log con error original + pistas + { + echo "$nginx_output" | tail -5 + echo "ERROR: Sintaxis nginx inválida." + if [[ -n "$pistas" ]]; then + echo "" + echo "--- Pistas ---" + echo "$pistas" + fi + } > "$error_file" + chown $user:www-data "$error_file" 2>/dev/null + + # XMPP al profesor con pistas + if [[ -n "$pistas" ]]; then + notify_xmpp "❌ [$user] Config RECHAZADA: sintaxis inválida ($conffile) +$pistas" + else + notify_xmpp "❌ [$user] Config RECHAZADA: sintaxis inválida ($conffile)" + fi + + # Restaurar backup si existe + if [[ -f "$backup" ]]; then + cp "$backup" "$dest" + log "[$user] Config anterior de $site_id restaurada" + else + rm -f "$dest" "$enabled" + log "[$user] Config $site_id eliminada (no había backup)" + fi + rm -f "$backup" + fi + + rm -f "$tmp" +} + +log "=== Nginx User Config Watcher v3 iniciado (*.conf, multi-sitio) ===" +notify_xmpp "🚀 [zzz] Nginx Config Watcher v3 iniciado (*.conf, multi-sitio)" + +# Bucle principal con inotifywait - detecta cualquier *.conf +# v3.1: también detecta delete/moved_from para limpiar sites huérfanos +inotifywait -m -r -e close_write,moved_to,delete,moved_from --format "%e %w%f" "$WATCH_DIR" 2>/dev/null | while read event filepath; do + # Captura: /home/USER/html/ARCHIVO.conf + if [[ "$filepath" =~ ^/home/([^/]+)/html/([^/]+.conf)$ ]]; then + user="${BASH_REMATCH[1]}" + conffile="${BASH_REMATCH[2]}" + if [[ "$event" == *DELETE* || "$event" == *MOVED_FROM* ]]; then + log "[$user] Detectado borrado de $conffile" + undeploy_site "$user" "$conffile" + else + log "[$user] Detectado cambio en $conffile" + sleep 1 # Esperar a que el archivo esté completo + validate_and_deploy "$user" "$conffile" + fi + fi +done diff --git a/scripts/python-upload-watcher.service b/scripts/python-upload-watcher.service new file mode 100644 index 0000000..f64f2a1 --- /dev/null +++ b/scripts/python-upload-watcher.service @@ -0,0 +1,12 @@ +[Unit] +Description=Watch ASIR1 Python uploads via SFTP and notify XMPP +After=network.target + +[Service] +Type=simple +ExecStart=/usr/local/bin/python-upload-watcher.sh +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target diff --git a/scripts/python-upload-watcher.sh b/scripts/python-upload-watcher.sh new file mode 100644 index 0000000..f23cb3c --- /dev/null +++ b/scripts/python-upload-watcher.sh @@ -0,0 +1,213 @@ +#!/bin/bash +# /usr/local/bin/python-upload-watcher.sh +# Watcher para entregas de Programación ASIR1 via SFTP +# v7 — Nombre completo en notificaciones ([María Jara] en vez de [jara]) +# +# - Batching por carpeta: UN mensaje XMPP con listado completo +# - Re-entregas: detecta delete+recreate (<120s) +# - Windows-safe: ignora Thumbs.db, desktop.ini, .DS_Store, *.tmp, __pycache__, *.pyc + +WATCH_DIR="/home" + +# --- Mapa usuario → nombre completo --- +fullname() { + case "$1" in + barja) echo "Alex Barja" ;; + barrios) echo "Andrés Barrios" ;; + cayo) echo "Jared Cayo" ;; + contrera) echo "Luciano Contrera" ;; + duque) echo "Jorge Duque" ;; + florea) echo "Alejandro Florea" ;; + gomes) echo "Gabriel Gomes" ;; + izquierdo) echo "Daniel Izquierdo" ;; + jara) echo "María Jara" ;; + lillo) echo "Fernando Lillo" ;; + linares) echo "Christopher Linares" ;; + macedo) echo "Eduardo Macedo" ;; + martinez) echo "Daniel Martínez" ;; + munoz) echo "Jordy Muñoz" ;; + olcina) echo "Jorge Olcina" ;; + ponce) echo "Francisco Ponce" ;; + posada) echo "Santiago Posada" ;; + quiroz) echo "Alexander Quiroz" ;; + reynoso) echo "Jorge Reynoso" ;; + sierra) echo "Leonel Sierra" ;; + torrero) echo "Mario Torrero" ;; + *) echo "$1" ;; # fallback: username tal cual + esac +} +LOG="/var/log/python-upload-watcher.log" +BATCH_DIR="/tmp/python-watcher-batches" +DELETE_DIR="/tmp/python-watcher-deletes" +QUIET_SECONDS=10 + +mkdir -p "$BATCH_DIR" "$DELETE_DIR" + +log() { + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG" +} + +notify_xmpp() { + /usr/local/bin/xmpp-notify.py "$1" >/dev/null 2>&1 & +} + +is_junk() { + case "${1,,}" in + thumbs.db|desktop.ini|.ds_store|*.tmp|~\$*|~*.tmp) return 0 ;; + __pycache__|*.pyc|*.pyo) return 0 ;; + .git|.venv|.env|node_modules|.idea|.vscode) return 0 ;; + *) return 1 ;; + esac +} + +# Filtrar paths que contengan directorios basura +is_junk_path() { + case "$1" in + */__pycache__/*|*/.git/*|*/.venv/*|*/node_modules/*|*/.idea/*|*/.vscode/*) return 0 ;; + *) return 1 ;; + esac +} + +file_icon() { + case "${1,,}" in + *.py) echo "🐍" ;; + *.zip|*.rar|*.tar*|*.gz|*.bz2|*.7z) echo "📦" ;; + *.md) echo "📝" ;; + *.txt) echo "📄" ;; + *.pdf) echo "📕" ;; + *.docx|*.doc) echo "📘" ;; + *.png|*.jpg|*.jpeg|*.gif) echo "🖼️" ;; + *) echo "📎" ;; + esac +} + +batch_key() { + echo "${1}_${2}" | tr '/ ' '__' +} + +flush_batch() { + local batchfile="$1" + [[ ! -f "$batchfile" ]] && return + + local user dir tag file_count file_list label msg + user=$(sed -n '1p' "$batchfile") + dir=$(sed -n '2p' "$batchfile") + tag=$(sed -n '3p' "$batchfile") + file_count=$(tail -n +4 "$batchfile" | wc -l) + + [[ "$file_count" -eq 0 ]] && { rm -f "$batchfile"; return; } + + file_list=$(tail -n +4 "$batchfile") + label="Entrega" + [[ "$tag" == "re-entrega" ]] && label="♻️ Re-entrega" + + local display_name + display_name=$(fullname "$user") + msg="📁 [$display_name] $label ASIR1: $dir/ ($file_count ficheros) +$file_list" + + log "[$user] BATCH FLUSH ($tag): $dir/ → $file_count ficheros" + notify_xmpp "$msg" + rm -f "$batchfile" +} + +flush_daemon() { + while true; do + sleep 3 + for batchfile in "$BATCH_DIR"/*.batch; do + [[ ! -f "$batchfile" ]] && continue + local last_mod now age + last_mod=$(stat -c%Y "$batchfile" 2>/dev/null) || continue + now=$(date +%s) + age=$(( now - last_mod )) + (( age >= QUIET_SECONDS )) && flush_batch "$batchfile" + done + done +} + +flush_daemon & +FLUSH_PID=$! +trap "kill $FLUSH_PID 2>/dev/null" EXIT + +log "=== Python Upload Watcher v7 iniciado ===" +notify_xmpp "🚀 [zzz] Python Upload Watcher v7 iniciado (ASIR1)" + +# --------------------------------------------------------- +# Bucle principal — sin 'local', todo variables globales +# --------------------------------------------------------- +inotifywait -m -r \ + -e close_write -e moved_to -e create -e delete -e moved_from \ + --format "%e %w%f" "$WATCH_DIR" 2>/dev/null | \ +while IFS= read -r line; do + + _event="${line%% /*}" + _filepath="/${line#* /}" + + [[ ! "$_filepath" =~ ^/home/([^/]+)/python/(.+)$ ]] && continue + + _user="${BASH_REMATCH[1]}" + _relpath="${BASH_REMATCH[2]}" + _filename=$(basename "$_relpath") + + is_junk "$_filename" && continue + is_junk_path "$_relpath" && continue + + # --- DELETE / MOVED_FROM --- + if [[ "$_event" == *DELETE* || "$_event" == *MOVED_FROM* ]]; then + if [[ "$_relpath" != */* ]]; then + _bk=$(batch_key "$_user" "$_relpath") + echo "$(date +%s)" > "$DELETE_DIR/$_bk" + rm -f "$BATCH_DIR/${_bk}.batch" + log "[$_user] BORRADA: $_relpath/" + fi + continue + fi + + # --- CREATE directorio --- + if [[ "$_event" == *CREATE* && -d "$_filepath" ]]; then + # Solo carpetas de primer nivel bajo python/ + if [[ "$_relpath" != */* ]]; then + _bk=$(batch_key "$_user" "$_relpath") + _tag="new" + + if [[ -f "$DELETE_DIR/$_bk" ]]; then + _del_ts=$(cat "$DELETE_DIR/$_bk") + _now=$(date +%s) + (( _now - _del_ts < 120 )) && _tag="re-entrega" + rm -f "$DELETE_DIR/$_bk" + fi + + printf '%s\n%s\n%s\n' "$(fullname "$_user")" "$_relpath" "$_tag" > "$BATCH_DIR/${_bk}.batch" + log "[$_user] CARPETA ($_tag): $_relpath/ — batch abierto en $BATCH_DIR/${_bk}.batch" + fi + continue + fi + + # --- CREATE fichero → skip (close_write viene después) --- + [[ "$_event" == *CREATE* ]] && continue + + # --- close_write / moved_to → fichero completado --- + _size=$(stat -c%s "$_filepath" 2>/dev/null || echo "?") + _icon=$(file_icon "$_filename") + + if [[ "$_relpath" == */* ]]; then + _topdir="${_relpath%%/*}" + _bk=$(batch_key "$_user" "$_topdir") + _batchfile="$BATCH_DIR/${_bk}.batch" + + if [[ -f "$_batchfile" ]]; then + _subpath="${_relpath#*/}" + echo " $_icon $_subpath ($_size bytes)" >> "$_batchfile" + log "[$_user] +BATCH: $_relpath ($_size bytes)" + continue + fi + + # Sin batch → individual + log "[$_user] Subido: $_relpath ($_size bytes)" + notify_xmpp "$_icon [$(fullname "$_user")] Entrega ASIR1: $_relpath ($_size bytes)" + else + log "[$_user] Subido: $_relpath ($_size bytes)" + notify_xmpp "$_icon [$(fullname "$_user")] Entrega ASIR1: $_relpath ($_size bytes)" + fi + +done diff --git a/scripts/xmpp-notify.py b/scripts/xmpp-notify.py new file mode 100644 index 0000000..9cf9290 --- /dev/null +++ b/scripts/xmpp-notify.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +""" +Notificador XMPP one-shot para zzz.qu3v3d0.tech +Uso: xmpp-notify.py "mensaje" +""" +import sys +import slixmpp +import asyncio +import logging + +logging.basicConfig(level=logging.WARNING) + +class NotifyBot(slixmpp.ClientXMPP): + def __init__(self, msg): + super().__init__("zzz@librebits.info", "zzz2025") + self.msg = msg + self.add_event_handler("session_start", self.start) + + async def start(self, event): + self.send_message(mto="jla@librebits.info", mbody=self.msg, mtype="chat") + await asyncio.sleep(0.5) + self.disconnect() + +async def main(msg): + bot = NotifyBot(msg) + bot.connect() + await asyncio.sleep(8) + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Uso: xmpp-notify.py \"mensaje\"") + sys.exit(1) + asyncio.run(main(sys.argv[1]))