From d62c3f7b46572458747ea6344f9cd94ac9edc917 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 00:20:51 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 00:20:51. --- .../20260508/20260508002001-Binary.backup | Bin 0 -> 297773 bytes .../20260508/20260508002001-Config.rsc | 4644 +++++++++++++++++ .../20260508/20260508002001-Diff-Config.rsc | 12 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508002001-Binary.backup create mode 100644 MikroMaster/20260508/20260508002001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508002001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508002001-Binary.backup b/MikroMaster/20260508/20260508002001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a6aed9abbd8c1e29b56b9c4358a010ab909b16a8 GIT binary patch literal 297773 zcmV+aKLEh*sF8Cmiv$2h`lRc9b{h&Od{-zkY_d@R000O80004Z`T(2&Lur`rF3`+i zihui~#Ion^)2@sp&z%F-pu?S)j{?Yt^U*Hhc^x^Fo^H9LKBN^Y3D*1J7vCoM=cMGR zMGejwF6ttsRaB?!hx>)ou~YEqlvXvNG{~p>)Tw;gs@u+;W6;X(D`F%q(0DAw0P8}v z0gbA#!Z?PW*-LARBvb}8qt}P-Uy#4@U|X%V1e<_l*I~P!TpMB6HSR!F5YyBY+CH{= ziZdO|DJ)0|#$fcGnYU$r*+{ePrdyXYhh2JFQM2<^wY0wIY_n0bBuRJN>v?EKwwuYu zX8mX2g_U_xJNMEUy}?dZA7wekeNosPuIRS%uGuA{jR27AvvM07c~x^ulsrmDwsxF| zj|#R(hl5*JsG<24lAV*2t<&f_(}?u2zxk_VQj@^zQP$vv-A<2q#RL>Qe%Ev@h9!j4FNH;PB%q z8{HQrb*1gZ^*BpNCXz)g&X)_LW<=--dB(#do{qJ2W7>&vXA1n)*awi9O{)GGOhY-T{6L@~f!x>(ITJew?7J;hCCF(%3 zW`4%KN`^d!@8FDgGoD;KwEr9#?%aK6lUyXahSd6F`r1vn2utwJ1(istg&pm-SU`{X zh$SrG=-TM_(b~cj9@XT4Nd#a6gbFz6{`13RLhzOD6f^Cms^Y70o9YL~v}@8_$KX;b z;*@OtU&XIs&#wkyTfqw%4o@~?8rS~ilx+ik(cc*8)` znN#H_HP58&?wjW87b_TTTvI0Ob+1C=m`t|#^Ys`K>t6VDYMcFquzehrcS^F|w2t*? zZ?W6ucr!_sLdEC^7>S9rBowPgke$X%3G<2`8+YW3@k^{H{}CQh`~mylB<`7DVuz&s z^9F1XpwATH-VSU%3V8}o+wRc3Fh99tHcnkHiwh#~=#;lOVBKwLN-T?G<`J!ZrgQF^ z=&36tr_6Me>Kass@yM!ojJi*$yxRS*q|zJjnU2+rKXTF_)5Oa%p6%o0B;$mrF#J*IJ?A|SA9InOm{1>F4P$mE%*$HZ#Zmoe^)*)2g*n~AQF9UR1~ zosw^4yqT#|kwCGVt2PgbYdM3)Va`kh4r6@_xD#}Ce!Zv5P8($}Z<@~sodp{Z5WXV6|tZ2a-|2Tep3yi1kb?tyQ2un0@o@1i@uQNo%GJ6 zMaT7i4X?-112G+v@FSgL!%JhBI$NIA2P5?UPr$r)Z0 zxvi?s5)%#M1sTw~d$u$jdgZ)5)$g6>Vrr~6)ny&azsP0quY#0UFNLT`rK%j6E$lPl=82pss@kjI+GWXPhwK0 znwiUGm1E9c76+zEdW$+@)v0lWNGi0 z5=tTqHHjhdu7c|t^%EW#+`Ec%g4`#=jG_H!@hrp4$Cm`Mwj1hyO%9uEb`5I>#wsX} zohTmbU$=7F7(QPEW*|U0A6@YLOg1@qU0aVI^^aav>tLys$nbT&za>jivf= z4ugWKBUR~GS}!w;txL-0egL9AXfNS!m(M>Hg%_sny7FnsGs=lr<`&{c1)wxSLG){m z26YQV+$~%Xn6Vh1y>qetrhSdBG|9^eLQ|~X`xxHG;$`Y%@mpDcfLYDc0Rafi|NhN5 zO)u5QB=kfFQ|mSv&q*n&H=U(tae#PNi08UfN?x9;1{DmwnAp2%^FpR!q8w{!H#B@) zsK&#W84?h}K%BHNr2NQy{g*H0ok%@0#O$J9>}<@R*4SK#MaO6oRf3I%*!Meh>-y_q zm0;WPh71k~ZAs-_N1A*EwAwYn-=dPNUbH2G z69raIBSjBeOyJ6io-xVLHCxtTqizO?-MC?LfX~( zAJ@pS44k8H=PY}G3b}70XHlOjEwP?~#-LS{P%8xns)0pIt%1zj*mX;!1v#R6abDoL zmAHUwXtC0o4**bUR+rH_qjzryuK)z$4#YTZ@ixz#swO7XPYe9DKjpyROR?$X1KL@F zWDkur23WkucRN2ZLd2cSn5NnHVJ3=IL1ow**^o;P@s;5>o}A);V%dqNHWh*J5oNUj zbM8aM2{QeI)W@&tNK8*37Z&h3ZnLC#-oMqcTHEitt@& zqld@zx~$$DgygJQyEafNME%xzqEc@O(kA$CIhAHIU!&eULDJ3-fij1xmsenwvxiBl zv;8~_M<0`~yY|6{gG2_<3*WY;E~fLo>xZ98-l&Gt3Bv5~6=BeAq$qP6g_ZAA$e-|b zD)=HI(ZTCwl_(ZpT%L?ciweKXWhXDu*Yc~(fU+t&gi+RE1S~q>iUvBm%OjpB>V?pY z6d#2HF%6^{>Cl}H6y^^w^*5QMO@6Tt0I$m#*&avC{m+n>PVIt#$F_hU&jml1#=8;W zHb>S!$e(DLngF;6Td>t5NtUf&6w>_%Su_WJninEb?Y=}u#M0u>=?#L|{HJXR6hTEx z#Cve{GpSm&n|ZWY${V2@Y8_*Z+hkZfH4tg5jJlOW7wEloc?3A9s0Z3RRh#ShF}EHo zn=$Qq6-u$cx5|^ol6G0-M}f;D>+O(({H+<3*!yEYly~#14h+GRl5frv>((t;3V0BL6K4n> zo9!EMw9?7_pl*PC7>Q!6XvsM*&Zj>phn#t2zFql5iI&aV<2xe$V1Mx}yqZ5He(t^# zp5uSF{kuuPYN(08MtSV{qFKxzQ#GbK=oStNrRl-=iHcR$!HspkE&^rpx6yod_TX(u zsbc3JH>2;*7W7%b|E{S9`z|hHzAc?@>j)WQDW(s5*DN9>DV4^iDH~^Oux5y6M+rRk+`4aQbYgPnFqSqQ0orH05F zYBN>BxJ5YRR`8pK6VOzcN`0?_P zLt`p_IM)SQ+1`jHnuE|rBIxGn4$f?ae!cK8-R2J3pY;T>N$^_gMbG2_Am-(6n%n0 z&6UrlE7+TqLXQ#Cw|E$B(gZpWr;d;B(7^I74$UFhom?(n_GPGN(EL8akiLkJex}Rq zFdde9Padom85yauq@v-{wCwFwnzA@purjn+`rVInv4R^`EE_uUTS!RYdyhP#%=*C> zYSq<0_cjCg8Ie(iDG`EKxID|^$FoBQ=S%W?&yun?Lip`Xn^dY5mOsH~yf@au?pcLk~^zkD2un<|Y1 z6cQEM_vM^iX#Bj6*nR)i)O~k8PZVx>^#tavfkdNZ!17wr>0QyHc@_R%e8+dJ#H>3d z0>)!T^h#H}%zC-z2Rw``EV!8#1d4@?L_G<@#8pzivZrD8IpdXP9%8F|@bzc<%rx;C z+fkgyOZuFcxA4yQc7H?@{7#(LIb54uG*>x>VO3i;Kt+RNI&#ia5bYCUV! zDmE}^HA)gFS~m&I^Z?KAr6P>Em=D=6{7}>CMnwD9wLSihL;ZN~{MkDH^czoB2Y3!X znI(KGTv5?yqodu4eTFr82L`*o%>H@>W};ZKY_KW22(7Wcu0gGscp;S#X}vp$fK3#u zw~9CR-kE4B?gE2rTlESv=e8k*e33z(p#6#>a$DRUW_Dk#S7BI2%iiP1IL$7z!eXe8 z(uhit45vkF{yqLXyh!d{X+tL8P(a44=?@ z(j*kNw(UE73{O2-v(QRh*sE$WUN$f=lvo}Jk5UhfCZ-fYG)Xu^>@E5~T7w7++kcVC zN-@`{ImsRV`|IYs$vtMZsh|lTbFcsv%X8r3RtHK z!A@4+uw%3($DquCwHkRRljGOwVM3h1&s+lNKP{n5CQZRfVk{;WMLkh-hWQRjcxO$G zjMK@$s?b5Bxz}NK&jm)eT*w+4`Jk-FJOSxnn2}*rAL{QN_;M-FgtX-N>`ZU`vKsQ= zKuzP`>Jh>Hx}8v8ghO&OtRb{Tqz>E{BZ|p4X(>`EqBbnD0;O(XX4TWlAXF+nOi-0gPNp1PLQY`IR+~*` ztRgYN8ALM?MB$ZZk2i}8>AF~Mh(+0cT>%al@Y>GfFf0Zz)R!ve9GOqrg%74I7U8dV zEi+m^ZPtv$q?c_jz+r_jMZT%?VSyS$XT9558_91al;k1{&bRYeddB?|YH-Qc`3cNn zGL9#W^BDt^&uzL$<7PgeO0f4|2hR;FI@mEXR3-1T0Jr*UCl&7KRK)I^(mm2#19q?o zHs|k?U#QKp{R&Q-jP6^&q-Fwzp4UlA^0tZspOU_LfkBVC*KcY+Na`!A`oHWwL zv)CfsNV`tWZ$PzmX1Rfv&W~ow!Y#!D*Gks#n%KnhTOs&^kK(rK6DJ4I$Q7LJ7|${i zb`JUTk*NNzJ-9#VAK8Cl>@N07jneCb4H}|$xvR$Z4*JgMH!WvE-3YAIL3^o*sRf6Kj z8QQhZBYqq8ZJiU3x7grUA$6i9?l)gK?lBRGHBeM0i{56e*?BxB`}t{mVv_)pKL!$W zrHg;k`F1Bgm?r8>3TWXFAfG~>-fdfB?;sZ&^oj~bjDiqd{_hT999IA zC)&n~&O0!XVabrB_gH&22xTEwvFU-Q-(J%TfP8>@x(GXf!DQtKHIwwCcuRVsJZ_}s z7`xWwm9HiEXGgSUdGr=Q+EY|?6B`vp@{GM$k<>6{<&rJP4u%oGXx-p15rcZCB6C_L z24W_lSc|ut<&F<01Af4nEy0pggR-4BLT_{Vca<1PLi7>4$lsGUM?$zg0)DxyDDYeV zIN#Vjh#QCYr|ozeggi-&1%RdfppsvzqP-wH@3LMN=X)*Q2N}YxCcysb4YvL=08N>% z$RPAEnGi}8|FIixccKM>t0oOIL&gAEe6`%5+(U|~%p($NeVP{Gem@!Y+b7bax1#&MR*uvGB!V95gH+KHVYKJUg*A%Fv>)95QeE^k-R`M zZr5wHBeD_eX@3j^8V_WO939)mtsHNz@Sfqcafo37S9EgH3qhwXq^g`O4?zJD0)vGJ8y@Rku(dW5vfPp}gG7J7od{FkA zTs>9mA>w9}BZD++y*U$kX8t+{&$YBRoA31-BBxn4F>xa)A^j(IZ|d6?8j^odaOzoV zKzm+mlD8ZBlFJErGo;czShKBtU|YT~-OtSHHlcJ8Q3If3L!!Mg5+}#`U}I z=bi50FjHdRCAi4@yH{%Gg5CanvOAyc!ZiSow#pD#mHVf96_uU;nk^D1NQ_5)1qRW_ z*+3#SeMzqqaB=%Mhe&OT3VWHH{L2y{TWll26K>5kX1r05YvgCG7j9GNv; z2W;MDKKPI?Yt=`P!B+Jknl~jo`U)0$54}1zErj*{0usD{^gDud*QnmuVz>5mNM(?C zbBx%WD4$Q24d;j)K)x`-XXuFWr{~`CWSTPCmsHh$B@37R@gUCZ6rgxA;F4#AJ~OQ- z(deGhuxSSICl}N=bvGKK6~b#6D{bfU|A-hbu#hx)2G3M707HSfH3!T+?mM=Km4Vkr z;N5{`EA^4|lXp(*}S@)#I4)m}>qu z%^S6mez~d|?H(aw+0?YtuIr47e-V-!oeqKw8$6y4_>_FHOv8iLP?Gv6Br>c7wbX&E zXX|OXeg_&znw$NXuhT-*qA=|fck!W6ucjdElrg{=Xg2`rD$Iwkw1{l&Gfyo$MuIb5 zTOY3x5P?RqyxtV?qq0>`<(hVel^tTI1ZMqJ*vUvsmB1W<$>X>?O(VX@PTAFZ zgnB65c*J{Q3G65|ZUTvmZH*oR{DTz7#AT}3I%9J5QoQ#6z0V@;4Z{NPdhh*5POD^I z)7&t2K_732n$FgirA(e~(Dc9c2Eh%<_FV zE?edIu9>)lNn|#+XR$sWyc>XG31gVbms7aCRLPXI$D6Cv|6nL&Zv?viQ28#UoXB6!!c6zvzoa zbVLLa)78{7Pp?4b<(X(fg%8`?gtt)N@>Z2aM*XxvK(Q&hbPxFwUeu zb5AZ8=0H;sr3zkAlk_c7Hj1^BoRt$#Zeo#F9gY3KxSdNK{9ee}7wo}Y2gs2ef_T8L zM5Y&kGi&rVe;+BpbOI0YxLaFD&pZ-G848O2Yc_$xlvr8p4^gRxHil+*@)d7Qaysh! zc?LB~d{Y}cM~F4NF19cMicU}jvJ4)g`3~l^YizO5f?8c-p@>Zyqg(7~+6!*mIbk~fhBh&zO99c?`{lg`?(<&Yff{{6 z83$=Ex@OdgKWm+#71tZW2EKPSz?}(C+i!2XwZq@_j^NTXKY7g)Wo3Hn%0}5bAU-()9_8y}a2Xav5n(2Vp_X$2c#TH4LZWTETyma$_V_fz1=+DGX3iaR^m z@vV^-0t-J2yJFJyclR31w#0p4ky3~Psu?d4X&wX4$^sws^1 z5t}A_3bU|ioPfJdV}tnbPxoGVpuS*o6w#vpMcWY@Tlu=6sY#Jy?@$d~izW6nlx;JR zYj*fy_2;8p@SF^=A)NdplxpKsp?vpgO%O23UXaD=pm)$ep0)SbsM00XMral9nI0N6 z5!$Wuaj*YBlspO4j-84zwbXR(r>}LT`Fr0A&9zHXpX^|h@C&3K0ce-qBwliqR^jPZ z9)wIyNX~w&dSka<3M$Bl$u<2QLnkXIhyo5kCfN}@_z`k;|1b!)QPfjdne3Hsm6$o; zae}r6r?eAt6w9Ey+iX>At>FZ%LYuPKIIf@+5XT26=6Wwm;&dZk=i0%K284Vs!JrWB zlgpT&&+@5xU&ZWDV3I;oZbsE~D#exD{tuSw|5gSIQTYQ>7;8N&1XrDD(|&IK!Yt|Y zGFj$Zraj>42GwPQ=Ui0$H3%SpN}o2Mm}^OF-OGS#YatA&9|j~aj04*pM+tRz!I0%x zr(i}gp%QOK-yNX19)d52%$d}C2k2E9$kU3U!>;)pFOn9f zZOUqpf=)EawCM5zW#Z^tuTC-z!eZ~WaE%kJz~$VkuQCa=Rt9`vnnC1sNkaHZCv5IW zmM*~zYFuRY&n23l?WG)UmF3-lZMXx!ayfg^6^i_H#A^>vy<{gX+J0{APs-TiXOS zyl;(aFA9P)niRq`TbVn=8kmH$e{c*To#gpJmQDcBW*Z)+60B&Vu1Ech%@#MpHVPNg zfc&88l%BC5V(lLKwQVO}i&{aymQJSZ5fP2);ar1XGo*=sZ!!Dg!o8GR!=*&}wpZgE^x=m-P9c?95n@2o@Pw030TP>#Qoq z)6=Ty`}n{~>kR&kz9HnM*fPdd>BAqo2FuSJmm}4(JX()2o7~$;FiS&VE}ah@rbdnv zF$8yD2MQplFD8`W%f~k<;*6bA)K?=mK2SV&}i&%||n_T|Ir%zF=1%KiPslqmEI} zzi*x|+?&_Sj_^-lO8*&XBW!rWi~0l|lp*0BU!qMp#7%Doj7h4_Y}naU0n3KM!~CqP zATi>u^UDqdWVxFWEZ2LeZ=nf0I-lZEBh7 zBv83FnwKM*-0wZJ$o@=yOCA;+|7DlM^7`2E*tsh~S)g;=;l75#@i`Dj*jEO0aJT1PiC zag)QX8H{^ZPy^$?iIHm}a(Ve<#kQ6JH%mhJ#(Cwh$x0nS#Ik5S4?Ed~jVwi8TNZKMV4=1 zLdK2={mv0JMus=9$2Z9?9feCBtj0bHtD zXtP!$sS_^^W|e!b&gj@$#7HpDL{HxqWh-6AX#L2uNU|O)GiX0@)|fD{u2g`YzXLb> zW`t(EAQ{1a4#uX+>a9>SGkm*~`5A})g2q%_7a&IM*K989?=`7+WE-wBgY|{`4JJ*a zJq`m5h;0GOt$5)*R_GMgceIEY*rm_+m2F?784%x%K3K84!Xu=c_$gvO%N2J-ytik3 zGJE()k>6NvE5h8dd4ar)Az;ulFx+Uwr2EhCRt+pwRoE)sQI{E#1vEbiQ{%khz}#cn zSC$2-OQi8i>Cm`~RJmaet_Ce>6DH{l5XSKA+|!R?e!htJxI6hkLBRalDAko9C4bR8 z*Nlm(G4npy5K7<20nYG*MWLaWq91>A0ERiTG!JHbD_T}s>qUrIGjokGk*LSAKgkT3 zri)*Dg;!yR;mg82)(4=mQO0CyCh&H1diL^M?-3e^5-_F{lmlt#-E9d?3eC}r>a6(?$pwKCKSW4Qx*M5OR$w|)Z z)dut`*j^BgFP8oy5xtv0+}j#ejw+2wkQoLJS32tqs85|0QkBHGgnuFfzBc|VL?NZG z;n}>{%6`|Mjcpr>eo;UjbAd9Zm$=B*%**s|@YzHRmBOqefjZ&cVy1wWQ-g@w-iqn$8wkGAZp-+O$0CS}cE)NT|`>JYFrw zOMjmqaL^kqW-Je4t@IEKLy;EcP);=+d(BIYPbDSpdpcs{PKSso1u>3gSLZ7>8nEx} z8*6I8yT5$W>f>{l5+J-BGU+I_ddM~1UTe-rgM$7E=>Y@@+sWk<3oVO zYA4p6&Ra3(?|Ut8xId-f@tLh%v1+@y_ znM3oVesdWg1d(UVC|NDig8xz|D2b-`>f%%Tg?@+}Zq^2%UxDi*yG($7*o$^wu>l#k|nbBfgw}i^MMK za^f!}JDis$kWZjLUt%00wz-{47SxOS%A~ilDpPAMj}q)%VjqKlyiryjgfJJghHIx= zTSye4!xPI$;U>SX1rld!=sp4V2Sj3?2;I&bH(7tPobm!a;rz3e5vKNq&lgy*nyOdZ zZ#7&2_Rf2D*Xe}}(FSc{Kp&XwptMHdlG)gGe%~@CH2yRFi=_o=0Wm{lXq>7z!W`^4 z(aGdVL%(Jf5-G!3PsReSVwfm|h+ndPEn|Z4bkYyO+b*n5`t^|G31XG;`;Lts)Hz1= zERNWn5u%Lt zLM<(a;;MUk_;gT3aFY-yIAuF-9=nz7@E>qhE1WLi9_HGPzt(P7F&~=foS2=d7O1XE z=-)GNrf1{}_~{_ay|T5JL7rjfD{FVru7x};F3)6lh7NY)C)a>Jz%SpS&g+b9+9jt8 zSx>8!r&eYIIiI%J&>;k^Mif!MC1V$keEY8Mm*7x<-NR_azWe5?FFl%TISa%8>bIB& zUs9ckIZI~YZm&&eDD1Ubhpt&y{w-fQGb#j5UU}$MV7#CuK$tl~1*TAZ+d6lan>Mdw^*25Xnl94__p*DEqDMjSQwBFcY> z=!$g>HHpLLh+zEd3^y_nP(*ZB^6w;5iAa+kkV$daad)$WX`~T>CQDJMQHPn~@>>5T z`3TDqn?tZ=8EPo$ZMxfIjv>a?cRUZDn8`coy-+IgIGoO~BeOu)!=%^Vh>7hxK~6(| z)@RmU=B*i*ls@f9=2DnfeB=nnX@j9N-^yrzC8LZ#LSH$ zub)e~I+b9q%NrWFnFE!U6RvlIdKBG?)6HP@#GmINM4|u7Sppki5f-$(;T&vTJY1(9 zWzO1?`L9zh_qaPodLCc${;m{hag<=tdAb;4Vg@4qe8786h%#18Frt}BSTY%g3Y{vAc0t>4RP^#Lwi3i7^*_*XAFw`k2# ztds6vQDCRG&vGz#uE;t|EF?^~4#ZOFzBB=p-cA`|hnde3s(7?8CBzJzS^}_erv2N{ zpilRb!wY}9z^S0f8SC=90lm60agQoEs`=Nsg6WF^K54**PLr~t^OU9V;&g3j%*@M` zB??Fu_3GNGe$AV%rM>{ml~Wf|N%W_siF)qgg7a@AqA``1uV$ma>ZPO2dim8wuy2A$ z!;#|-8VD%z`+wE0xqj|m$ zq>gL?di4=~6w6wo#r^yb0&4CBJ5->! z-A29a_J~+`Li$yrq%KQ@OmRJEiXUKz3Yg#TS!B7&QAmHd>-06E^R#$})xu>*7n~H*&-pz%qCk=lax=qLIpok7YC(MHpuf$y9?HG}9a;C|R>seUuKg%uSK*^@!~wpoZl1&3 z%a_nTau}cla|CIIL;3pjs7X@+5HK5o?CIGxmwaatDaGklv{La5S;BUqusZ+X7p`3H z^9fO!Na7&&s}v_=vcye7vLJl4O8@Oe-zJiQ&cH0gQXUK6jnh4*;zX75IpsXE72g+u zqh}PKm?S9JEcc|<`}CbaaX76yut}Y?nto95T{Ng5Q|4%yx_$gk;)t~Of}J&3LauBF zCa)EA87E(Nr{6klCY#6>!M^J?%-c#MxLZjQg`FR4aCJvz9)sf%JBidcrdv@MsmWAHR%4KWWg(GQ9Ag#mlKnatC{G>W zPsB&un^c$41AG5RM@tNF2i1qaoHO9x)YxP{WPPZAd4!`FF*R`Se~a9~EEIA+8F2ee z@~SYVQPX$q2;6x*tyB$)v&%0gcZ*Jp_$h!u^cjTO574bvZcMhAK2kdKya}BMn`|GG zB{lWdDEj{Lhe(<*TGOB}K&^P8*LO)9T8FjaOKmj)ukcE8&(Z-E!j4_a$*&Z& zDzhe|N?PfhPY}~ou&F$B9EH|${6_6}(LsA{vvtI70wpz+E;RjG)nCAIRB$m_h}=O7~ouoy=| zKna(q*57}wP9*^xndTl!W?e-SRK`?C3;<&f1Tan(5go& zLQ8@xAPT7uD$dv~bI+qV2#(An39=L~9+)E<;9x?=IWOEe!@YLA5!1-Ib7Kd$n@t2h!n?35 z^ReV%D?l4%DBeg-<5P0?QM@tuuHw^`2WF+hIsRK4mq*oNlKP(}T*t?~0lLFbyxEEc zV%TQYT1@_}*QXwdi{{eANd;V__7Jg57siPC6z^3C5 zTiluM1VAn>#5B2Hbi5`x%>UyBh3eZc=r42#ZX^jaM{& zt$7VGgS-ed-uq^7p+k`^;SeTU(>5&ChEluC1MTo3X-a$#B|7+=9w7Zm=G%4LRSoD6{;1F7I?%@7Isg8Qla zivTomI9tt>nNH+<$L6X*p=QD6;9i>{Uy@9`;JyO%IN_(j$*^QIfURZ1rP)E2McxIy z*RtBcWWKt+#Q109f_dZ@Cpmtvlj4Yxi?Y#&V8uwOPB9*d4z-XG{-121M6Uud3zf=| zJx0<&SV!huZ_Zc^d{ZR0-%&3@$UjTJ_H8<(z|DS032v_)pAL7YYGE`KO1#0b2V>Fk znW(;Ea?CuRRaxK9(f9PGCriHjKk!7Vn_i-QLKOp@g-TB;rk$X*cLiR;C(;7Y%@U_< z_Ca7!Q`KdxVNNB!B;X?dk$q@}vdVUB^}0CJ3X$90IkDWNo4wi$;?le$%&&YlsRsn| zf>h*7now4VD8*n`&2WL+90+AjyMHASpI`Zq2C_dCa#mYdv^UOKU))3~W#O0j5(=AFIy=N}b^vP(c^tv@hI zY?-1yeNn+ROD|uSEeSTK1?=|m4Nyd>{^?BoTcv2_>(?6E<0w@Pqtc@{r95a5ku@AY zEO@&Hv+>{D3Ux2q4MeuSC0*FYR~|#Yi0rfo8}2RbLKd8$;TWG~p&wJ6LU?tS)yln` zQ+mnV(~kCq^}hFu39|~~syAU@kNBQns>d1UKR*6N5P*nACOF`tUcSCVp|B?48tl3m z4G5Fn`JIW#gUl%-T3TVQij9wjD3UP;`gnpNT*t=DDtX}k0JVM3Uth^Dnew;v*+O67 zEO#ueS3=yVVK4$pGH&`)+z+s5M-85eFg8-CEnHX6Ga<%wQG=r|-U5%gb6ythNsA!W z-;U}hY)^bIZ~X;!c(i8Clz&wZ08_5!A3C&p3D1O=99&)w<`#Zs zwp8%*mA40rD-7?^+i^#HtA2uUyb7_q9;Ww4i}sIx`_mH2zMl~{IE#1(XwJr)nUMSL z84{guszIMq&T>JK&4}~eRBm!}4_YbHR@BC`>gT zFUt1diTu- zw@h23LO&Q$-~cxSVM?Enm5-!(KQyEepd#M0|G$C8Y%E8T^c*PP#@Df6g<-U6*({bA z2v%%be2Y_%FVS0D!7XOb6~8)IOm!_tQrT=4EZnW=6jG}duOzXik>d@gXxYmTTiIVP z4_?}2X>x^Wa>X>ObA`8hG=TPq3|`}#7#jft`q|2t^Ie{Ag03VOMVc*^8ZoHjWT*WG zt|l)CF6CeD5(d>;Kc<0V+U7?P!m+C>pfLl9F^*20TEG}5GhUx9H0?S^ojV!=WfSdB zi5mtWbkoF*TC8-%W>PZQBH;^ZoJr(u{GTpk8o^^6G^hN8s|o83`J}Qi;O0W>@gC7q zQ~WSjTw*SbC@=j~%bm>_bCFcxEqNueZbQ{Hglfd!K2*7cJlaVrhpij*PUU2fAM4gI z($h(Qj*W0cZ9r6pYtpjD6_JOv)+bZZ;@0Bilq#jseyD=4Bq&X19DsMm*WlMY?Ju2O zsdRMZu-v^+8Z2c2^WvNNOpsh*LKNDz=NHN}@_$F4mO?|gV!m@OQMV9#j{@Qe& zHGSguhxN9p)F~C@eR%Pr#T7yP1hl?p$6zaVx^g##rOZa_AR3dX3*0CH2`|+G;J~o) zdG~Pu;B%Uw90bkGlr$2F6J5c2P1*nYlz8WHA0Gi+)`_DYk&u%+95?Q7v-``nU zklPqzhh0I1Xxd^T+MKyUhBT#4(SW8(h?Ha?0xC>7cnbu1iT#Ywqpj=ESGJ8|d`Zgt zGK}sI$m-4w$ZTrBsNj65()5*imDwD?nx`N;YVFlawS|wQf zQJTTJCc{_yhS$b1yC}J3#p>QNJ);}Pn6VZ?X>Xa`CX9--O?{tP2MTg6*~gA7?z_r- z;_<0pV4YB&)4b`LB>iw+DSyjQ)a3T+AK|`{H{I3ehgLfFhrZAjYBj>{jl)4xIE>*f zwpm|adOC3)5%I*t?W=FWwYfYD5{rEB-_9Sk>L80zl)1B3y4SqinZd9^`viCMoibq?B|ME!PQdESzBWN%ZCUbAH>!45jGFE+$nwEnR1eX{&h9J ze+4s8Lq|<_vG_)$coRY!wEx zrI0ltM6axNBawDUZr;zIr`7+Rn5*OvT;xXmUaFhIPPCaX9_0(Y`d0?xrjWS3-}C@b~m zsYxaxU?>*mJEp=hjWxu(hkaUr(gq7SKm>%VL#i{hSVHeF@;M~9hed+UD{ zVTAbOpT@Xl=37q&f7s|Y+$eG~ge65|))Nh3%b_wEmDtgozkl#AGo5lIfVb+tt!vWm z8b0b*@_Wxm6(axzK>EM;=l~Hnq=R^f#a|J02voweM`PHJl$;dxi!r8!1tQApL^4|S;@^Zb3e z)yf=_QHMZ8m3+wc(#L{(zoOQ8gY(f|=p=fTB%@;c4~4^;`w2VM#WjCWb}35{n^TH< z*$ctAEWhUs+9Yh+4;#>cBpU#Q)%np$P}HzRUNO~6@)wi$5lM;cQs2iGU@WK^+)2#O zHP4hghJb>+P_11aK18GHu(&0G?Zy8_Uu6Tl-jVhBn?LccR*|fr0X+z^W_D!@jPBks z4Eo`m?Od`jw$Yk%3hvoKA7C^T^t=aKn?t-I>ZREd{-FKT-V)?Cn-WD7S53Qy#w8D;LWhDH?}DXWvbgVE4z(kz>c_yr&sx_ zeY5;79zGbVg)o-W^9i;`maP(|akF%f-s~PZgC$zwk&Bm|tpp-r*#v zx>_(dQ8AMoS6?E01Q(DYjFO=7Jb{y`Q^+&Irpvkn{?Fv^q&SiRl_kbc(U{{kRLcVv z7zn!#jz`CMg8-dEdR{$}x1J3EbNe{&*|g&TCMG-f8Ob|?Kiawp6KPsZMns28sW7qE zh%HlsY_`n>?tvKnD}XveD0d)rzl&@yJkq}7xz-$6Ii9Z#RF89Q0oe^_ud%&}77nra ziLNqCP6PS6anThjgAVHw<#lvtvA|ss6RiR_9{>+?IHyxNnq6sc9n%HbT-vpVc&>h$j zZ(jJq6Dka^%S<3l?RPhFBu!uoHxFoe^2TtuBWw(2I3nj_B+&bL=zaK9^ANI<%LlZ; zbN4dr^lCw1)Z2?z=PMyi{VW*Q-Cemjd05`wKGU-zSzCOXLAGvK=ltdGF%vNKlIe%~ zOPj+d!5JumT*d_WMdzy?pXU<3Ms-O~^jqbQhU^`@p37x;D1qMyPJHbm61mSu+uo^l zAbLhmVQIAs0@ql07MVkD7}2)(+RpDTuBsWwJ8sreK6SB8@lfP+unmgGcGDE?PstEmrnx5JjQYpY66B=)!^+7&Nx7Cy4Q-@JHGGJkU1P& z&r+~5>c3#qN%Sw77Di!9A~ti*K-BDpwRXxJqp3Tv?!Y8&VWk37O;hMfR9(iVqtmOI zvLZ=t;el1ps(?KSkn8&&)ZoNM%Q}P&GuUm?qbJP@+g)%1`H_B^U!Y3wpX-+U|EMvXQj9e<*AHh(BFJ4T3f0S162o-hxNSD^7T^>adoSM)| zQ{;h+IaWK?uJ%w?dRibc6G(wER)0IgsCx!j(>o25`2}R6BsmVY<|Dizc3nv6?=&0d z0nY_x8pP8C+oILufD?TF{;ruxaJMP3V#}v*(M~_u8_bA7*&;ToG|h&8V?ti(T6^#5 z11&X6U_OEw%d#6JRpZrsZ<Tq2N)J%Ds^Q-7=aV9i_2fw9I++BF?xoz9@C^f8Zs-z>wfH08wa=umn-XqeLt6be zE@OfWhx@9EgNr-U)&y4EzUdkmr^4!F;;?VyIkBuh=!^CG{U+RiXu-_skW}@wKz?@Q z?}rZoHQdQ-UJ7o_tB_IQ2rmWCYkoIkP!Fe!>DR6TWz4U?hjK@`kwYXX=tZOfz7dS^ zg_ju2ulKEy49MQ(bnMiOMamKf5;yYG$ZE4!_cLiM87Whn3GwE~Y;5pDv%Uer1FsGb ztLga0&eBU4d{$h~peohMQtw{Mx0IjC=}`at)Q=F^Hso&HoTSDP1jsW81IK30teGI2 zT^R(SD}{l;k2t34R9a)me&KQe#hNz0>MZ|7-a;2L{Lw59=s|1Ew*l?@j3!=xb1XwB z+tY{c7<4_HpY#>Cy{_8mRRKN(nqM;Ha#xW_oA`@3kiJ`A^aQr9$^YdDs{K%lvI(AIwBRl{zZ?n;e}N&4!C--!7Anr`w@(jcpyZyaW{t{uG(lsX(-Hh3)}`POFNSY3sO zw^2ye8YvZ^iW&3M7FWi5(X`o75|R zZ~9sGUS_+6er$_8lBnm;xWyf{_R3v-K^4Y@if8}8jbsNbDwZs_khb1-GqF@Y6@~#C zKNx9R&9el-B4~*py!aaZl=mYWcmBiVGXvPKn&lz)sYZ|G+#j);y-Y+ zxQ4m3*L$TfGH1As8H<#g{q7W{d*mVEM=N?powR-NIy7~=K^ZP%zPss7$@dTOoUA>C zw8iLfy}6@f1gWLfl#)${p^E6!ML>}cNxx-$tkW(sGx&}mn2j3OyI^u-Ubo&Q4;P%( zwhsoNN(#7TDGu$W?b5{)(XPiQv-8Cu$zuLQ zX$}R*O0nQZs$8q@iGC-LYrC6IPeM)X!Fn77U>V)iZiV^JYUozik^J)TNDLL1}(I1GtVzjZVWv4 zknsf*B3MBiP1!#HAD-=NyZI#2m)bMmDJi)ba1zTVt$5p+{(LxUZVlLI%(QBcC=A7I z`3D*S&(`?I%aXPDR9dLeZpE8ht|ylJvDdc1{h)Kx2wB=u#{mKv;?kr z$$-msHPm?Dr_ggxmwsifH9*_{oI7W=xM!Cn(Gq*zBMczz3S^JaTK`+IKyx#=Vc~-? zncSPs1xBU#%zys;d_uBzD6MzImQc=$r;u~Qt{|g@{N0mtlv)JD9YY93neyzM zA`68n3sN?^rU>_xr+6pVwu|PlWm&U_ntY+4FiJ_;HHW<-`*l6#$1~HZ1{DVnmoPU2 zxQMj#rm8kB=Q=n8CICRC7_#9g^;Vzwrqmt43DQC&U-$q5?G|HjDG!k=U zsY$k3weRO=OQ)%Gh7<^^7z4;^t2hByqk72(i-S+w*dZ_=R}>ii z>XCwvMj0%wWwzE8GIgv^2FCq;@IadbVPv#{*@XvAmz_sAIG!!^&w-r*v0ypc1dxv# zlPU%H@JiuC(*JB^mMOm9NcMWu&YE0V>*FbF+xhkM6=@7)FlZ!~5)ocwv0q*!Q3EZM zm601~A7`?2FVDFm$xVVo#5R2Xqot!ROGxGi3`^E@^sE%70E;%G)RYVsfKK=-i!vy{ zS5bV=0>N4!04egC!%%556AGV{<(cAK+y+4n96D0UKtHi8lrkJOD9?bU%DQ$gJ<&0) z4)cc6TL;SR!u+$IY=A3AsiVa5=s2<918!wdcXTCK#je_)BAoA@Q1KsL^YuU5tHNq;W`WdU z5I|iwP}N}-;!N{$Y^pP~f_&B5l32$jtWTyp z{Jb5*5>sQaP3Js>5aLj^wRlPG;2p;!8}<*GyXhBGLyKKS8Zz3_fC0&xEQ;78Q79B( zi=7K~y+Glr-TcKBTC3m93jT`5Xq3GdWwrkxTqfX%@-@gi9jVnPpUQO|572)dIVoF?hwE$&S?M?TQ=i=;@49ZP)|7}O zB17)J^27Jr+e%uztCzODYTUA^;mAYF+GVmrM?9A@b&u680++l+2V zz?E>YU-LF+7H_Kh>lLdcMiV;bzL{AQ3e-6I@Kq-gu=a~3DM`*1lm35Gu{|WDkbQtN z)b@CU09aM?MD?JuN=zwHQ1^L6y?S`DACn5M5|^1x(=QhDzcy!m6~`YNHWOAL?jeaY znvCYwk*_sC%5QGxxK|cc?thv0CiAp5N`0H8tRjc3c`5L z)7?)I3Kma*y>JIx1HO@6gk_Dxa4GC4_m;E{1~PREOK?7pWxAMi3Kct&0ORx|R!fmY zP;O>L4_)?3VZp6}s?RyX7AMkTQ8T4-wEv(ylw;L@xwnpA5`LwQNF^ycH7t9g}5Xuq(8n`+BNW z9!R-n>IqWTzq_?EI!bET}?sxbJemtq51>r zv@JM+ypFwZA)fHm{)gb)tLeBif@+jtdkpy(mmgR5_lhO6-G%UCq9HrfTh&{;j4u6- ztS`Me}+bwsaR^Yx@DK!kxJ6d4g&o7fskmXUB z$uklnbNMHvxlY0B0d-P?eLy$^ZmKzNe{q}u1sz5)3}j{7DD7l&P0Arp(_bJJVIT(rq? zZE&wQgK4Id>EpYM7+LAv{G@XmHsn$4I2?LY*3#YoIE>SJMbl4aaI2h2Bis@WqDxYf z9KFR_pU$BkaC4QTZVE9$1z;#}QtbnRw88ZjT$Sdeku0lnpEr%n(G+JgPho6wm;qxOaN}_BUZ7NmcT?97Ny=a-;I`LL zAC%uW7@gk;o3CJ#WQq*e3}c!JdRp3Xj4vbQ*1Tvwn;_FTN19&dCg&U;G!a=bVQV2*4v_eZ0~h(rC^bbD)7-)y>R z1DM2Rvv*|qq*7EYSSa-Ws0QBdLj;l9AW1NI^A4H+G`T)aT}m9XFd74yTBU=#u;=L; zmrQ1Q8m|~!i<$MeRBD;pR?Uzqd#35#1iTASH*&h!?zH@Nj!c7n_^AH6npyn?rTtXLmb%?9euy*@%# z1r0$K?noD0l9Q53`R;$xr*`<5D=e!kYxl#Uo{v}_F7IRBMd`&|uOITZe}Ro>qikjz zSu#Y{jF70BNMNEXHc@+5cE-g{{w=HKm&U!!DG)^ce5~DG9FGT_rn^&f+rSc^!JgC` zDR-b=aES@(GB#&ObW^)&fyrTB4}Oi^&qzq`zDq^uKIoRK<>vy3I|l6hLYWdi6`@ei z-y+1D*WZKsklaqNEH8yb68ohXpOL4>%isf$ES+2gE2GDSaE*nv<+tAfZrsxNP_@7>q#Bi#l$QvyY?pq)U?v0k)rBT)59RU`?W>@)vAeFg6iKbS|~Y` zYmV@{>_m?VnL!>GBOE)d#In({3;nZ7=4!bc%)i>;Q^ST(m z#*aWs#IzgCjM;lX_(PRYJu?{=p@|pM(L_1UsDM-ptVxp?>4p)+`O@6IvtqZOYp+0#bcS#1yuvqG-)!$II8(CNQG&f-_!bL3p7Ut&ke+{4R^WRg&)J0fJ{{!>fX`d>~R7MRAMcoVeiGtvp*B{&p^?rde z^M&V_(Svc^etInySBWqc@Fi3DXQJQYeVTbA7ssjkiv=!QA{m)) zUnXbRiNnVy z5?UX)6nB;W>(cF}<;#p(gv*7aHUlM$HMm+Dr$fj{xJF)gZ5sf5D?1WLsOzbD%Rs72 z<+hVTzYQnupr$6UTJiNNWUPERs;~C*8jk{lyZ>}D>;(pxuW$1Dpjp-fx z2wj)R*dPKmm8@p?(E`A18@VW3eID$r;;Qpx1csI%?=V>`^N`-8i;s)=o%<*YY73AA zsqb}fP*n~KvuT;g`X`Xb!q8CO+N& zR@$=s;%ghO{yPD)fnHOA##x2Cr*PpN+bqZRGdv$3YGfE~1vXP5at;kmK*YMJ6Tp=9 zKKeI`8lXP!TK@F9Jp1$}-<;?P*84=~^j_bTZ_T*&t@b11oQC4 z4TkHf?3aX4DJ`1WCbh7?sUg|#P+aClRkEq^45WEH?mPrkc`bo{6v7G-h!z$pKSOi9 zW1GK39zHnEL%SLlh(y-xI5AgPad2lCGV&p{bJqNzK8O;sg_hREA)eJ7Q=a#AmnSu_ zdjK`O_N8xi^{~0T`P1D&IxJnzlIZiJ!M9DBynr7lk^IP%W*|>AA-P!76B%BR$ zu6%26Q?J7Oa_Mcux=DRL2uB?bvU_U;QwzVc$<48lNeKzLcCWOV6dP0pfCuSnHX{42 zb)Xgmn;c8jaubfc3@Fx*I|k(wU0l|!F&2$MY|!hat3teye)HqLELF2AD31H6*EFiK zv0X}^V^}|h8a;;7(Q&I~`dhIiocWZJSNcqaHJp6OP>X0;&=`_xvidfSGM0cQNKcV! ze89{`1N&-Yp#zVlsCRWz6y=tlsgst%elbD`|A0R~OFE)(L?@cRg9PEhrVx^+3-KJnW1zgN3>~0mp2EgC+D&9>K%RZu;tmUbGPHJ zymzj1Xs*XZI;qsrlROH&^7W2qOi7_*`>c9?OW*wsF46C<8!VErtxIG}+$oK&Ew=Ty;zZtdjMmnxuGy2eX(6y!{7a8p(f*?h@;4%T-#VPfu;-r=iLqKWUOy(>pr7>40 z+-b0~3AD;(@0d{@xTKcafo~;J>tEY3l`0%+)_*@C!;1R7LJU77-%R9oRm1vaPx`5|pQc;4w%nQ(;n)}QC_vi2 zR1GvvAMUY}yw_ca&FWtG0;R2YVEB@xc>89j4Nlx2Z6eVo4s)n=SzrCm{(;*TfP(=J?<0^||EmxMRS@^815MxP)ha$hgHD;p5@c_#e(5+a zr`8t}j&kh^{&s9mjO)r5e=GJO+>h*U)}KF5+s9)>h{K6Bz0 zNP98jqgX;V4lyrsrPg!0Le6-)Q6J-&qvqShzb*^zsj!#38VT0aW&`zPfugZkZ(68L zidg!sR%ZBRDRNCUNAt&qXZg^;Nn0c>a&q>|@e9B{Q^u}qv(z%-2wGkz4FqWmpLE)! z7E8r6##%uMU&+kU(+z&}xzm{;NI4b1l2H>8^t zkA`w$(tH(bWN~h~$>4XJ7X6A zscm=@EfJfwJvMM`iPyLX0EJ3@2(e2Ye~EGU!-56?s_U7B(Kj>HJ8mO87arf6Iv8zQ zIiyy2NB~c>tVa~&%w|y?yEe#J+>9{Wr?*GNKLD*NaA0<^7D0~p0AMM-0lvx=aja68 zA|Qrr{;-KDygy(V>9N%oIEf!Ej!kU}k3(>vXY$d^?Rf?V11eWpw$9qx6x=6g@#>@N z>?!v@xak&L%)f!$>NLGvN*St*`-H2kGfo?q-%cP`h_J^1ir>QQr(LChQJvLv1XaMZ zfi(nmSQcn!K1C>JX|*RV?I5!!k{i59uhX2^f*W)-qS;`dW)=L4AWNXN zW+EJ@vmK1jW!0uo*+y45;q%oKNSDkxvLdG32;g#Z)HXz4M20!UXOBc?2(JN+ZXN#^ zsWqvRWmz~2Xn(u2WLmLQ)JsaOxR@K-8-r?pVe5&vmVO30(T3q^m>1@`tpwY@iw%hP zs}j1HL=(D|N^Ura zK;4iZ-#s6!pQRF$Oq&)!X0fyR7s(?l8KJ(sZyXlB90|a`cuVVfc*5Q&(=Ox_TfR^K zvMftonEXPrd`OVsAFh@&ut_1it4CvfExXG!SMp}mzIBGw8j>9yH^s0FL#qTDaYk#K z@w$qMW^BqrU{IC@m7lY$IJt?Fag#TC43d9id@cVCH+XmT&pVJ!zu2Z(^sJOm!Xn-5QNJF_)H#JGe!;CRECbfEVkr_t{PurV z(b->NTP!gpV()f&u={A*k|<;C>N1mqgHu6f2@D=qc?pLT2@7Mm-!)(>L8M5w?k1yN zq<01nKncvJHD|@m#0C$4|7{>}O{e8liWPfa`arKO_NrMaz1~%`E}`*(!zcaungRUX zag2U#0|(aKF!J4GB8#D-XLhU-6Vp>6XHbUyz5`fxbqFWD$=wZ)N;TLT69_*&V&Flv9|-Ej8yAqh ztqt|LfF=&GPad#ue7O>P;^T-Z&e^+o7+;1SUhzSV z*t)ERx=53#HVhnVOE7s3P&U~+|sr4;RSuT~Ah;*-t1db;)taULOh39>>4gZuTNMQg>& z^lpN_k~Zp=Egp-}lG9>#v3H@)gGQ_AS%V2Cj2{&ZUrlfT_;VY+8?W`UZudrKlWXBRaejT#2Dd_4Bfm3=rmhg43z+tI z3@5~hYZ)BvA{4;yls`WdM~EQf802sr_`hXDG>x#g2T>Ku@)Iql>c6dT8ry`-Ww$fu zX@eKF~Wc*T`gB0acWMn6Do;one-z0g;1B` z8PK=Z?Wc`9&`3H;T<^7w-y4AhsMO_zEqgsU2ZO*}xF=-_Hi;W%ZpsT;!d3Zw*eD6=6KdTYNCfhP=3U9@vP zwi6`+?F55k-{Gshkh5Kc1~_v^=NN!n^a_g_LTipc?}kkoAzmI8i11MQU@tOHGQP0R$iTh9Zau^+ zo9aZ?w+jV37C-3aFcMpEK(auZGL3hPm7}lu{aHskR5&lkbwAxRytyfYBBVP$M|GVO z9cczI`O-IKx6e=VjS3Q}o$K?ox!OqD+iMtZBmHNaT&gFaLMXcwkVI!iuA^p; z-EoLjF^El^0GGW;9B7~7I@^&69BkjylpRAnBh^1 zj}y8^w*z6gN;*TM6hCAzF9H_@BmpvTIeaH zI`N$K=P5KC=E07^K};B7jMEE+g*~VZ`{?N@g568*N3nd``$!J?wla;=loQ_wZGTt! zM+KXYX_bxH{s(8OQBL&wtYZs$YwpnjUtJ5)M+0tdw!Z{2Pe8SF(?X`v!9@tda^fkX zFY}3ZUI~`1qjB_8;?_KFG(%I7B}({3v$TpSO`rD&0+g&q089V5@P#IQN3VZ4a^$&F zDrQ(ECQ{qlP^?XW=(>zGjG!t1>A5Kz z2qSOA&Y-kBldiI?-k#1^lU!PiZ*}czf@vKZ#8)&~Q^1uG_8p#IHLNlYu=?g-9@9NXhY*A! zO%!%ked#NA$fYM)0R(s*1PdI%O@Nhp2bhCDA-FYgoeZtAEy5@CwUMbYue+V-rpDx` zFBN)bZEI;wjIUia-7G%4B)=gnU(BxL-o)@1T$q>R_&lF$T$}O@hJyqEnpekJT00r9 zoT?OuIXc?c}qxu<}_IIn4;Wt3rp~+MbOP&SHD4|AcC*ap5V9xLu z12u{aLT>yWPF zKExoV|Gui3IN#eF^bk!a9*@!p2-;eS@kP|xroedVRHt98r#&2Zm>*1NSPtA%{ZkPm z|8Qzu=iTu+lau{2eV-~Yzi76SBw0&@1pzBy$m(i#bZ-R}*ujy@V?Uv)zNo(BP}u-& zE+SBZr)%Me)c|-LJ>puEY=wWw5dx(w3|*gv58f{x8S~6_ne-A`&{=PC>F?ADq!6R5 z^mB{LctDK%&bB{KTPRS5+Agqd460aKarkL0RGFuDr_sQAWFh652j?PuV=laVA=hp5 zdhi+)fQ|BcGOPYnt2I#P3#2~B^gyiV3)6jplz5nx9T7-F_l;~}j zMl-4Yra&1^*$A#4rh8{8C0RdspYa&~Svn~pa$Pr`$0m#fg7AffE6nItZQAMvpd44e zgo-7wBr-4L*|r*4+P%Oc%5XD4-1(!QFKD=C){+!QH+PQza+N*;T^3UZ4fgUXKsj0R zhtV`3w~sT@wwOqP;sx7^PnYp*ID&3WTH{t(9!1bM2JrE_4_7#A_4HW_MMy?7dN_AM z8EkY!IVp-i_DSpgPkb3aX210Q9zgQ+oyE;6OO=Yo9Jy4oJWR3bAo6D2w1lnBDfukK ztk(+J>y97e{|><9E1Z$eL~P9$P4YvBEmg@Ww+2nMQevb|JY@W%k~_ZP*kTq_9wZI; zsPD+9cQlfPCJ#s>{XVY1ODacEhqDBR&E#vdj& zBmw3P#X)HTqZXA2^ty@P9BxOw2M~k#<0Kh00JC*W+@+RoBLz=aa-HEk=I{g-M8uB6 zcWc5>4mrA=mSgaitK(OEVUhNVbbJ`rsZa%vFgj%*1oKEy!!-O!xWWm%Em%<{p{;e_ z0)<^wHyxRUqp4A0jSLNpPg}O+>=7rk2Xe!G=}`EF8JZc1H_+qUgRipggq5+?E{g#f zp3jP~h2#=gse82-V>e%HmtFqnWB?P9xpBw^?!&Hw>X{UyG|p{RvY7a7MWa-IqO67C ze%iwovXsmGZ=I7y84KLyPZpK`(3ox#NAPL68&ra>Bd|bi*bk5cHlR=U+JT{AfCc~9 zZvyK5MFUzr6P9nDs@utb3E%b=w-V7Bjz^xf6%QS>@EjTo$)PEnrGMK)o+Blz>%hY6 zoQFv3Dew4%NmsOa`dTg{mF0&>K`yXb?MDp|N8WWdJwe9j8^kJ>1%>H2kV6%4?}Ypo zxC7L*>H#w+=%o=DJ#Uf)wf=FR{VNskV-<`+ zUU{@LT?5FmGH)ixr~oGE6s)qfi5$za4KeR6iUKc>yLzSv9-1$&pI0rT-z(mE3>*7E zxu1mQ1|QPP?aW>_Lf|o?`+VN}qga{fplsuni5Zkxg~Xd^Mj?;4(CLrSH&?j8 zz1T#U7P#>o18DlP{!oVBYO$ZZ+rq)=C8f^!EirEs-bp(3PNq9(=bFm|fT3y;XWUdn z0Nr}dsgImoMxN#JuST@HT};jR6?)jTH+eC%qYclSW>Au+TzxL@i!Tf{7Gp0L9(Evy z?iCn41%k^&a9nt&1jlLbjbDiAOJ_FCBrZ^@EZhWSU>o42J9dH*0t#>mHY1ju+-16; zh;GD)(xnyqJ2bA(C4*(g#mX_=qV72P+FF_>>|XLgyF41Ezub)}P|n-1`4D4@BAz_g zO>~%L+Kuw=W#ie2A8CF1VPGTp5j?P;XhZ3~WVyp(LT-fECUXEI^ho3{2hNu9?-x*8G`iiWcvscmJGzfPxH&VFXh@zVc{$2R?4%FsSq0)=a zWeLOz`aa0&Sj;IXR+oXRJ4t@ylF=Rn%P@4V=UL`T|^dkPP-gn37!((pzi6hxj!i*k1i`mH;+ z&G&eoXY=oOL0USo{jlkLpqRXFP_K)yBbw9Zvnp`bl4ejzAG7k(_@Wkh^>R(Lc%`z> zxGCwjgwi1cfLoja>5yC36Mfj9nQUJj5>u#CibyNeT^z=iS-22K0pYwR%eqC~Q6Zcl%*#feTF~)~&R6yd{-EVZ_K8q()e|dpKBNcT6 zx6Rnl>@b>#Jx%qIvJ;vn@k2NFddUT{x2Q#}_U;=~Yu^eY?Li@&Po7^$hUzENT^n8&k;5llZ29txhrD5T&a66+7K)mej96c( zXw->1h4&?5*n8~?7R;Zo*pCXWxoWYYW<6z}D-9pwCC}^oObRrzlFD&RqGxxW4Z^0@nbFeRwX}#-U`p4*kn?;MGj20kLK<#2vYyTBzJJMdot;*sCi$)&S3$?Bj6AW`s0pz12(;?HNy0nrH0(#5=_z5 zAsbh~8u!LG9krqhblx|HHMkfrAL}-NMY7M~gpqx;yaavPGNA;L8^k2u95i}O#2Q7S zK2yD4u&MQ2RfFTa_P+4PBSGJ|$(n%bh)szcmxf;Uuuw~s!TrwAH4pRJGm2hJ&)dE7 zlr9j=P@h?sEnfJnX=pN!+9uALEc&)=m~*%>bJ9u1@#WA9UZB#y+?uT2nUO=N!9%&=P=X&X8?hNMGXKM%d$R(CQ)5dgkqW}<- zIY<8O-h8T0#|3tFqpMTtCqooQKP^28lBd#MiDX&g(9ReomDhePT}B%QZVwP@k#pTyCxVCKqN%}TjMB&6y*4QdUxoPO{wm=eu+AVCe*NA<)R@ilX z#u+2J4>T5zYM+p4zBArn@$D7mZ|u>Bq$ETi#3};t=fEt^l2+o-O4q!6+qSWuZL^@+5J5 zNlu%wP5k)KNT|`Z${+u{%uw|oeSj5_DAy7hYV%DHmpqLSTJ|c+16mdY&1tX67SSx` zy2@-yw4Fnpy3gxPfy@TE5O^PD-p!FJQ`5-8QEGY`uzB**CtdLKx#{cU1{3j=($a!Ja=Y?Us zA$r2K>)Yo31-a>GDu@4YL|Dha4Jc}HmaZN_$kDM82nq-2uu$PO7XjjU-J6g7A37a} zU3OF@dOtAh1$>xt*%}#AbLMn*jM!jpBeO=GV1kJ#xauwu{S*$5J@vplnmk_%zd5vc zgVQ3X{%tv)uA2QoE#=cof1MN`YMsZGTW(&|c^LUJDJlJ;f*8NAo*1pT+<#RhS3t_U z)+*MtiAo_JtM3&Uq5$^?zrtgXq;(J>y(==79g)K!VtNtBqRPt zt3Uq<0SCKYJ>m_Ce3$TI3FqWMgs;IUPq^PF&EJ8P3V0Z^RPaprT20-VhADuUjxi$L zVfqCquMv&Rj-jwJS=dqifmF&?hsM~7h)%IPmeULwx}rFu9oPsPW#v}M*`6&PKug}I zr@{Mx&(NWtRJ7leFLBfCwAFTmJ8!%o?V0}X?^%w)pRTivz2@IRLI6o$#_pl)<|1>) z*T3-Zh^w%qc{=ttj%<`}b^&5?(~ z{16y5N}#p?N)q5OeRG=@Y4f(eznxY2=EDU%%P(9@&9CN|Y(0ChTgg`SU~Ubjd`px4 zmIsS@2=>|YpjsT(v^{5JG#vd+?F}H8gB(`YR_FN!W48tt{+I4kAAp-dZXJROC}`hh zgzoe5oX(aogYjMl3HyvW*$7HN&f_{i z6dftg`h<`T#uoGf6d)QXUwNOgjc%lXE8+M*L;VZxTHMb%_%HUq3x` zE3<}>U^d7A+-Y~o8Ar#{pV1622=+(3Qt2kHj*%ye3}{QL8RRB2c?1P8gilI73*Z1kK` zyiBsr7ZRMSxO$kyWRW`ec+w?0Hgqi&Q04AUoovrnD$|@{<%`r6+qic7&>+jy=~ma3 zyZ-A4Ho8y&V*EfmqsqRLk~?+k3LdtVmab=-fjOvpCPUx_0HUmQoE80s7*^u3&ITI_ z%2&!sorXKw#FYI)5UPJswXspxGZH{-0RKM#z{R97&gNd+9|l_)gIzt6h2|pdWw=AG zZ-v%n>*>uXY-wasezpSDk>*21G<&ErqLyab_x+HOLmKT}l55XQS#f<3DdqO=-J}LM zRX~Ba!CwzO6La6&tf2BjwLTAcAs}O}52XWUW9U1|!Tfa0ZF4ttTq?ak*+jD_sjhuG zZ~R)2>ntN(d7KgmPe+G>RePtFsyABoI1WJ zJ*b+;;6w?OSV*Mf%u1m;jg3zgLH)dSE~j67N5Z)ju&RA-Ab^#;97UZ7Zsj0(6$n2- z6t5RtHw6!GLQy{tk$h|Qb;R_f^ZZND++OrJB&~k6DXf`tBjY)Y4cP}Y#|5fxQO>T* z{*Peu#11{32&ZO50!j}N6v38b&4%_h6D;qbrSxynFX}B1^5KIc*Q*e(6hzi`M~@~L zFaS+g3ert7PV)RTB)rdn%BGqV!S2<`3K4MRTo$9_5`^r>W@Hn(liJ} z{96jS;V8PmJXGFRXt1xLS||@F34jiXT21y_HMXlm8kB|^ywtk8FZO%#gWbVGH@WO1 zw3ZM-dFdfev$7`nHlqWtjC2hR)!sZadRx)*6j!`}I};7Z1}zFIeQHn{bjT3XrtH$S zybH*51-Z54Ir;e#Cv|v-!Dl%vNI;Jt00!5U9%Q}P8kkOmY}B5wU5$K)%jVMq^1-?S zz?M*%m#`pJ7s;{3`BeA;rfbfY58gVkv_6qV{yYB|c3?5mz$$~nA-Fd;Eldr~IGHM% zs;1UOi#;V$;{$sW!l;j|4;*u==|m0-w>~n#drXr2rc_(*-rDShsUC-DtIwR)U=66j z8wj7|%LUN{!W_7&Zl z2@u!7e)iJ%(U7y)Z`AKfK;%_X#bf{s-A?4g?+g-wKqj>iDT-!fWIw>6lbw&Zh5g1? zc}&88V&JM-9V`{maTB4bLkH`Q(WbJrLkaak%ggWNze%l#y(V=($^=RTIj=*Q{4hVy_!tg5ZyCLzg#0^ObTV$D~Q z+@3`T8x`6TodGUz>zLuJjW6viJwJgctH!vC5rO|5hJlbM*3}-{A}mEsD#qIvdiMIu zZpbq3P6w=NTPWxY<`qoyzeLpebS_i!*Hv>nZRWhrO6Ppx*&+*5s~0yz>7ran3g6Y^jP;Xfy_0X9o&T(z4a0&$;*7+KptkyVZ~5p>Qz0l$+>1*4 z;&5Zpc3%KTQoI5!3w88Zxxj!$7PJe)l=JX+=59OM>PpyWi=WP;u`eNP?iaJysxlT3 zf!ef%Emy_7GtkJRA*`ZJdVFlUbNVOS&$&d7{xnJwudpawDm@uhd}6ZiTLTxP$(MhV zcJhU=@c^997r(C)I_~KR-0YR0KgWl~m(v;6&-WY`!h4omJ-Zi4!rNbO5wcEAbpiv7 z^>Oc|%`8_g#lzAa4ETo7x9+>ih7N zYm1QxEhjR_qyr zk(1Q402kcF+u82=!z*2uH!#c~ScG2Zv}pAF3%^XGidUAnR&M?V_ZUO#e#|e!xWEiM z8xVG0gZ1{bKVnNo+_^O|Un^_0y{-(R7_OXTg?LfzVhM;#*Ns-X*A$H)+40(V^jhCk zaP|ko*Y@zZSVmYRD8v8=k=>@+^*Yb2A%hv21uL^~jLkdASylpHjtU>#ep>*pJ*DZ7 z(=L*DJsG9JCTAAg{&{Q^ot1?mZ-vc^w6id8d>W(=7&dWc3s9YpsnkH5ePw%H=BLtD zeRjYYpQlWI<@4zPdr+%Dj}Av(aWDR}sRO$s0Vf|Qpnb@QR{>LTsm2P?nAp#W-Q?df zZ*-ll*d2#>GSm;df$X3*_duX4MQ!Ojq)d0y+DM8ogqf7nG>O3bN~f}2pZ@$#P$`qh zSKGmNgc0WS%EuWe^QzRS<8G-r_FK7*1481-ppuHkde0AxdmJ(_NU8#rHS9L0L2~7A z419aFdYVDj#x&7kreFvG4OcrfZ#*(?(FI<%U9^5(l|S^d4Njzn@~$g12&p=0wS6ks z?iTS%;3xDMDu8apB8q36lU~w@#*#_5s3~Uz1p7_Wj8-n=6JGY|OM`t^lBwrZr4xLV zV(F=Xr)*gzt&Oqk-_>N<*o@BhDolmjb^2Xjebay8V{Z|_Zn9$WqTVzfKb;Yoky`2& zl4_%rni@Z^KzQ7~3@P#oV&l8$r?IYbwH{ggMkG#l z_Y?-$+`jGsnoe2OuT1DXLpzmS-8`a5pOweH>;EeE{rq`SpxKTR6z%6N^TF5_|3$u+ zzfCot)D$z3dwwp0^43f*HZZG6U>4ji_o|R*U{(3uWhX<%D@LU;f{t#xkG7H&waH8* zM?0D{OT}y(iFuWzGS32rpspH;`Ika*#_P499Yqy70#atmBG)Po1Dk9;GRM%$cW`{cg9=>%q2{}DMbZaDGuw$?%L9Rxe zd|9MrOG1=7Z&=yC0h%{*EzK~C-fANri;rwPbv-}c7v|s$SPdx$_~uHX>lHFJFod#? z43yyRQJwAZRk2%%!jyP1r@`Sfq}+34@P$LogvzIeHQj z4@)EqMvqbS!gt~DQpDDJI3bU);H=b1=N@M7GUTy|e=P0lIdcFFNq(p0UE|tHncn7% zM?uNdH!7-q_@CXW@>XB1AX{hg-NbYqk_N%GK%?Gj!EA;x=*$e>=SE0(+)F$WkjfbAG@y0WlaH*a?!VI~qnJ#X@#FvQR%`YCR*w zCy*b+1^I&khgwP=^?h&|zN=m+iZAM@2`iphBF*jg14?b?J`Ry>#8lgHyrGaKr^U}< z1i+>vZ)5Ps6-biDikBo;_w|LR;p&@VyTmD0HS{FFnXPR@vitp?F3p^1LIF1#(XEL| z2ohs%ew0zXR5(yagyLw3<^^muLGC(hJ6Ia)h6V-J$TrqHdN0V@0@^nDeZmvG79h%Y zHW$r&%X)}Ge*h6A6W2&BtktrAd5NLTa}gO;>g1>|tkS0$c6#1A5w$(xf*(D1ZK4c| z?oe*HUC*r<;u31&EP_^?iL&Utm%8SYevDCmR9(8guDGyMgnWC>ZzPlDH5+xZd88DH zhWJo$lujtz4iZ0P=g~$&Cm!b_(xK)HJR`%z0P#?ew|P@uJg-75E%pnb5ffKf5tqIm z`uE-H(UnLGok1#_HPQ)-FJ1WaqJ|BgEKZJ|TU9+U$+T`rQ&_z!DxB z#t416*C-M(vY3a|LyWJb0A2VDNB^iPU?F^Jp#08kqWPEJrRl(ihyDIb61DS|R<0|4 z6?puNQ^Y8dn1cw|2)@WuNLFKKey&WlOy+~abH1GLz#pjqd5yb+d~U`mhMPhiPw&9% zW;5_#32-`uwgqM-q-hlp%+C?3o((a_X~sPirgWl_NAmLptgbfhjQa7a*P&oghs>0x zo9bVHTNLeu-N{KyLrW)>MWrANYAuJ$?hUjVQfH-%6LW(nB1~p>wArca==?hPpQBJ0 zd~HeR$dCpa1biWZr!Ki70$f{D&9yD6x7ux~OEH_8fBMd|4G4lf<=%t_IIy~PX06mb zq~BWYCo~1)&$+2E)j!*nTyG~Z@_XhnZYBhXG*jP0Empwc9#3xNH`&EK0+w z{SVXPZ*4zgzMhhMogNw!PN~(VAORt=MjcfJ-&;g!Kza4QFAtr(jdj z-^(~yb`ggatvbqc>h58KLl5kbtNK*%i^<{>vZ(JbaeYKrwah`@Wc`~TY7flCPqw*p z|8h*CY%Lp`rQ@VM+^W=s2Ry{Mxz>Uc*YMP}1(4A(iJsgFlA&>TIRR;%WJ;!0Jjasx z-T9_$*mql8?5xI69sd2meof2qm$XJ-D@LRF+}U#9(5Gw~4I2{H=Frwi5vpNdU}V|p zQ`4#^<_Ftvwb_zOOM52`xcu zGGSjD?^{)#QhQ&#^-9+-qsOSC-vA3F%(BDz_+s;NBLg_Nf71aYSb8m1p$~llYL7Da zpbCtrr`8`BykhgZou8s?g$Jd~y}%k^O$IrpH((pju5u6CbC-O|JcWPM z9kH4(P@%ATCgvVgMnfFlIbCyVHa`9;l1#ZlF0}yKB!|6ul@U4q( zTpImBJsnaDa5Wm~QHZNScZ+AJK|u+;eu6YVrfIIu5mF|hLYy*s#unS;kDOL3s>W^T zAcrfxc5TvqK0UN7I+v`5q^{5X#BNZhq{tL)V2OZ!%Ou-O_h0{E`#$uw+D)!S!s!4v zC)FzI1QNQdMSnd^0)u^|?pzZ&2#ap1NFzrJ%ntm8d}{1$~4m@7c_ zqAtbMaslz9Ifit9X{z_ah^nKAYh`r&KJtZ&FvNE0nX0u>L+X|S(7%GfO;`Rg0`)l; zj3j%7@HbhDcb2uMPT)mULg+#!?#kl|pKzSVHVQ?{jl!? z?}83@f=R&09=N>!Msukg7DLQnWQc(22r~G(#GBwqV@s{(NF#ui0`CD2J6P1TvT)DH zHCO2bmPHF-opfA<<8XnWSsIQV?Ip|n>Y=a2B~~PSlID%m*xZDR zH0nP`I9WO6HMq2LYV1KMrF@RbC^<8@@A>9vP+W4(5QO-~aLv@ao{Iz+zF7}MvW2iu zzn%=tyK@^y?_{fICuH(0mdA}6+gH#RuJktnYa)%svWT_d;3gvQex2JVWNH3ys zp@Z6g*j9PUs1{)R>7prtKFqA?5LlUgHa|bP`*8lc`U{~Ja&-ts_2LyrhQU;*-#idj zHJr$K^mbeE&p^|h$`4@2zMU$mn3%PtJ`kh{21k+fCN}p6E)NQmnoaU|4LW}~Yc4w= zI6%i+E#4*pHvR19U*gvAV6!GBV2awA5(aagGOZRxPpU4t^5?giTo117vWNZiSIIcJ zmgf|nU9bQ8(4|T1+wMZw1I%1UKfj+{cu{9253kCJ2D!B`vh@J6{ zuO~F0Y59$&QPM;A3n_{a^*Yn%p%Idx)Qiii4`cV=#7@Fk;*nSz#a4i89`5^hXr^4Q zMDB07{63120Pqh6vmVv?t8rQ80+qe>zLhy7Bpn|(d9Y8p=^cvXB5sc&vy2rxX*AM8 zEX$&NpJDQw3v9dZn>6GU?1*yv=)d)Ru@B66?|`05Y6T@xFUF(~J`@mg=uQ#!)1YJKLv?R z(PD{8{!8Ry4(dCRFOlf>{xC#vd!-u!9JN&OD#tSzDQtM~b6ChFI(evXmRr^`VZc`O z(P7q#YQ7&duS`;yJ!ph)bFuOY;2Wgwv2x`LGtgH9`x`Pxe z+2)_;b=`%EGK#)?|JVe*Dj$$Jp!(lPsPm^p&thW3+YeZGpy$L|fPq2FBCa!sU5#Mk zm1;7`wih6vjO-aY=&;+EKB92558v*$^X4R`_yQ+;nIm#fV>|>?C#G3!AZ&`8g?VwP zJcSZ$|701r2HIc$t@PX-ncNkPX_)w&z_57h9Vc)xC zGGu5VSu|OMz{KnD`qpT*I*3I|23{V+knqCV*P+?det=}F3U|a|IT=OiD2x1zD#ds7X+grj9 zc=6x4qn{q;Iusc;`B{IG2O*$`*-Ef=pn6Vk3G$yOEekBZA;tNU84mD~)u5s)*fZ{# z!7Ug0?i8Qzl9IIiSdHZ5lz=%D&)bt`4%2|5Y3g69WS&2l`a&jks5cGm0OGy@nl86j zju`OxE6%_3qhMEp`Qk&W;T^4&sue)yaC_beq#_Fve%Dg5=1=XNOw~ObMnV!e^{W#)q0VGhS0yCyM~oPFb}V;-zsiCwV1J6>*oE4yM|!TEmYwTo-F1%~ObVHo zh1J&N4ujZF=9lVo`vQGhT$E7F&p1dYAo4JHdQ~WPW|WJ-h-I7~`F|(xOlhUU71+#e z`Q)A;w4<(UsD%5Y!iG0FXo~-p$fI{OJ_Om#f3y62P;bAlCKAELn4U}H2Fn)BzduQP!;6MS;duA7a4-qK~30y?%`(OrD;0jmaH>v+8b6J=9S&mW`ZCg7U3_< z{y*-6Qx7@vM@&Bp`r{4H{$;ipMtxKo$+LR9ho>t`Tcbz`B2HsF7fGyf-#nevxUBwT zk}jwd#o%*B^GMf#P>W}4gGEP5Xr41$U2|Bca8Sh6ks#0>Qs=%7v@DiHn*6^Ia;ukg$8ujo*1-s%% z^piR?N4^MmYNcN{T|o2w$djR7@R9f&CHRMJx=pRo)J`=RKPk_XeysHjH~#rl$#Y_D zy+DMYdsj=VJuAXT-aMK^Kvw3)s*h}}3@m@2=C=h;L-cKon5dibn{}Cf&)o*15}CYB z`U?2U700qy%(cXQRk(wj0opaSS2K?J9TtVg5PZ1~GV1}-UjIO>w&WaanjViXAWpmi zXJ{116iM)boLnFjg#Tv;oQ9Q{%)pF)nuWhzvxhRf8=mPc4Qg}jW)@xfZuB1}MZVpN zttT0E#QPef|6SdzZ!#HSOqyu}Kd97ham z^~``Yqw0Mg(nHoeWGAU{;3K3d0tMmi_2Y~__H0+kJi6t6f)a5WME*FTq*-dom44?9 z!fB-HIa16Cx56BNwpx8E2?xYxfBRPZBdG$ljXqhn`mAhNvZ<7=llHjK-DUsA!q&vs zR|T(3g7OHn-wZU_!06ocDI64jYLBA4(Bk2`=c5bmH@i18_5NOoB69}q4VQSSi1Eb! z-LOL@_ieLQ;J08`-2C0Z|BGmhM*kLl>-j=4JaKx}y3MfeYdO@)Qpb}M;8a|BG5-TX z%5NIfYI?#k6V;Ayg~XgA*AHPgMGc7wUu34C_JO9ZPekb5Xe3tF)(rXse3KtA(#s3*Ng>AKbRh4;kWFNjtnqf_N3H<%A;M3##Z zcA*E1__MevcE4lRppyH|G&P_yfQ-TzsjYvqM%MU(68{d z(xi{Bd*fa&uYsw?USz7n8`ny*lX8saS=DXRV~EekWQL!bqnf4=hOyQe?~y+8ePki2xYM4Dp>{1VMw=BB6cQO@-vFP&;^| z9%*mfTqcn7#P0USvCt$uiAcNLt&>&-zGu|>Vnk!8-R`LLs;DTsPa8~K*rqsQm zL*mGAb6iI#{)$Bh$xu0I-iK1zSngiLP@a0662NGw<-Vx%`>m4!hgU6o5lECa#~9?@ zNnyd&0hm&QGpM|0K>LR4+x)r^+krSk^I(K=*Z0zW#*3gL8G_zPN+lrTR5&_WG8h@^ma8v!xQdop4;aSRXhE*F;dOC;=kiU-us5Cr(s7!wJlfc zy}Uqa7A=|LyogkXxr_n{EdyCSLZ@RaT0%_noF=R`r8iIs(xALraG=b0B+>Fp5O2_^ zr*P@8$|}1!fN_pvK<55=7pwOAkw{7?JEk2$)31{%It#)7ekd`dj9I-mcUwhGT;@5a z2`+M+ubi}V#$Xq%8tIFBh{NbeQ)kn1jl$q|K0Gv0Th#<8_1VPR44wjFIb*Q!bw+tL&W<1vv2qT_5uL;8$#c^#T#%58B^R^CFVU2|R9&-gL z*LJ2~*da4*wQt`j@BfmQBTgK}r?!n$Top2NO4Is@**#Jkm3$x@p} z|A#OJGZdU%?2>}cVRz;N6FjYsQfTm=76R?12xH^YbIA4l!Msegsp=hn;<#&Z7RWoN zh7Jh|!E~@y#Ar;td{JQ|+LYTyQM!I-a?WXMXkh1M=~8t5#$~0t&T^Fqv|*=Oac>bi z__;{A7dQV4f@KpBHMtUY7KhSalUI?bSz5hO@qZ~&3QG$4(ar);aT1}4`QoG7nmq`- z?^T-k%8_CXwE!rLe*)PoJ_$R8rJfSRch=oRMjr@kudEnRyyR&FEEN)f#^T6H9vPsY z35CIRE2%Tejs)@@%v*;|%l0fpt*umc*FbdE0If--6VI5)49UT;`1wQ6cV)?r3~R}^ zZ8L_p(w38=I^@s}vvsU^?$6ev-WK5h#Q16_m1JCd8GWWe8|=Ie*>fAw*`% zyX~A~3D(4ftpvDMdNxB76C$w{Sixmcf(T{UpvhImgGU-WoAaqj!aX=C(J-G6z01#l z@_Uze4y_n|i-J5I@+EHH*+Gd%z7DMek$lf*Nqp!(4heB-5P!U5a+l^^J;}mH-d1Xh}%{PTz zGw$Sy{h@Jz*Ar-!;FNt}MZPXC9VF90bOf!+gSk1(rte-lN6 zQB=K~+Wow?-zOTNJnK`<%s}%)EOg9i+545e!&P3*VJ6W(vT~gK{oX(S zVcAH^E`Qktxyu$*Zg5>#&mHmMPv=g~C}PF$6GQ54jkM=x$h*zL5*TiFc%oE}^$BFn z+~Z$eyIhl6-G15!Ll9?OAR;CBYTuv}d1$5%EKxRBH4bbx7?HFqS08U$;3HuwGSWwo z+KOnJpWhFv@Au+(-f`=Zqos3X45CVDPFX|AUUb+CTmM;M8GhYV#B53HWvHHr`xE=A zm%=}7z<7oesxP8gk}{P;%1N?M`W1Fu%KCND0evgb`{2-UHg10f+b;N_4VQI6R`wp8 z)^kY?SVlS~kuGjFQEtDGHshEqK`xm9M%$DGQr$h$W|4qOd-4It#)A`L^&5n?H z_%;o?bc7}Q3Ec-n?Uo*C0r?2WNM3J$paq|m-UcPi!LQolRVlv1F7TW;+##ginTT?6 zK0SXs;4kA+(U+q6|Nb#V(jho^$hk5Gtb!HcWBs!3r2BYW;jm9?GO(|7p6imwL_!v?!4zHUsl@ILGi~nBlL^M|^nkxW z38hPdlWFVsw&h?(YC7xGlTzY!@1%5-1%jtX#(L?RR}Z*41G|YscJdX<8JB9aUuYbU zVKZ`8VO4l9w(`Aa%-du zjmR)ZEdVHmttYz4{T4$nkNOFs_q7+AEkcm&3c~jnPXJ^MHoUa*4#tzbOqNx=cWMk% zSz-_8or3w|9m87v$^`{I-76v3L|e{w(K1+!{AeCa+2$H?PzaXy{XJRq!cM~;jk=Q5ml^}ai;~F?h~05_Ry1Js z2=`{WPBuhlC24ox;?HOtt3ynSG?`he($#J6UC~Gq)Quq=r(6*n`>TXXHVJP#O?1eI zZTj;U3Q%(}DzCi0MMOm{4_mOr6`l5qqlTV^Tk^hD1BvEV??g$8gJ4~eXT_M^U!Yxc z6T6zd?ZR@Y`G}ZP39YV4%U+g;*X9mwRZm1a7IT~7`K*{Y!8?862Ag}xz}aLymeYim zcFLLdFnRq#v&w$1P&6|YhtctI!D}wjoaa*BYA|qy1Hs>+@^l#Z-S-MsM;2})2iJUj z4wMH|=>N7NJJ|!eC>h)X&){#60Pi6}X;QwhD%U7$s$wD)9IjF;uI#Rvy+`;jt<75| zOQ;Q4>Fj4l%iRv}DQYu{gm+s|&POZ_CPp7xiRv6hx{>1%wF^LzScFVx#N_B>)fOq% zq9+9qFjzl7C0zqtF>v(~_a&KrM}N+Kmo8&fUQqqMG-fW1K@y+&&M`KD&CI~uG*Ty= z2F{gf_QsUw+vQB0$Z0oWo@8hwYTE3Ve{WTlL)CG6rvJWIRWzqL;l92nwEBh~ok@)M z%f<_27GL9Lgo$z=zhd$K$Uc*?xI;>`;7j!WUamReMaabjjLMe5q^*M{Hv+qqikh> zc7$0=jl&qa`NBmP zY4MN>I6vi%9u`dN3t!K-E~VNgeiH*CKE}?8m`P1tn3K0adm%xi1V<=7QvNMulFZkh z`-%h{ZwCko44tc|3(~3LU;9ky&x{PfE9k>_Zz#)Gq{_?_!Unj*H}&MnYe70<7r3=dT%JZ5BB&@ zX%1c1y3>Y#=b+KA?D|IP_9;oRIpQ2i;R1v-n)b5y^?vYk(SBPYqj7j2S3aJ+_T;IA z2<;QA_NOa3*Y%)tFSyq@8lf}n>s}i5@46sA1cNvdLw~V_dsZG*2;!uX9jN{oSdku2Ud|&MtgsP<-((ekPqFcu4TocT`oB zYBDpWtDiRCadKVeV`yr-@reSQRpz@9>c2lf{gyHa`YlYh)JFzFQSccq52 zpBSWsMJ9BgQT|n=s>7^$gC%r)qZKjHHs>4jtBCk$9pWMbIGcd8pd$x}qifnYHUJe1 z*iyxhbS*rwxY5}jTwT(~NzC2~5RoJBoGBz-pM3#M$aBE^2VNKheazucLP^^@^U4v^ z7Y*3XVd_x#*MXy6za2oO)Uspa7HpfNlnz2}moY!f(0=19bO)C%g)Wd#iD0SnWHO@_ zy%Dfi&wcuZ%f|e*{LV5#W4Mw8MTwxVf=qtn*A=ywW5aIP zExd>1vTOEFMAABR3akisLG19nVZ#BGbrvG?AsSxJ2z_nSat}UUeSFkYTP7O>IHdyN z&v67hfFei>>1l)QS69PiiLov9Tu|&TK4(-wee54(&%{tuj z`42Q*Ak6JdJ*Kij;*p6GXbX)UMOSw?N=mg1339s3l^p9XK4TUPb5vWB){zQa2%X7e z6KyTm%UvCSM6vG1(HH2Yqvu?^xR#gLVn!mRUx4K2Cj7)1MQixAAJsSRgKx4$qo_;N z3n_^iuuo{Hl2#Bs9$^0dwE%N7=aoalflGGMGixP~ClAWzu?X3wB+r?+dyJrNS`GcP zIC>qsOh3^?+4O7okw0M%N9qXh%+hr~NLqyKSxV4s5UC_}Z<~x=i!jIl44q*_-0HY^ zTG^q(%gF%8pel6BuVt=sjg^9Wh^r~VWc#6(mUib=!H*~;w|Wn$Z-ZcaqV|$4w z?VN;N)8}p6jGE1ammPNs%G0)T{D;+5HS1700VKi5G0mU_T4Q-4#a~>*07)s9puZrm z_1e9hi)hHS&W=!ciO@miZG*QaXRIoyPAQZ97|4$E>}ECCaO|ZqjpF9O#}kP#qsr7d z7jM`xcfj%aK5)wCq*6(9sxrt{trElnLq(HeJC$~h13Zs{N(C4aOO;xI`_oL^WrRJ= zfAV_yUs4*6LkSivoV2n${};s%eHZv(H_gU~^E}i7x7fv$*=jzxez>DemPqvAf71xo;2m+~nu`Us7o1@>5XCwuxh-)0hHPFu$T=8W zJ~Zx3xen;(o!ql42kR%bQJ@*^y*vd*v@W9P||J#g4;HTh$)}_dFDWVF~ z)H(4Ggz{4W3Y30Ukjxo=>uNHr5E-gsBd>(SKqYqYqiZX#0E(fa0Cv*Ij2Rfyu`Xz0gxN)-Cfhr!F+QpZqqGBsrgO-Z_1C?r!7Y@i zkwnf=1kbF2H+n8c_-#xwT?3U{#FAZD3iO zFBC0Y{a4ScFBMcF^xh$Jw~Rfa-o`7AoT-=5qu0e5F!IFpZLOgHEKK(U<@ct#@`8}+ z>ZkCAhn$F*Y=yiwrUVU4R}k8@1kMAAAd#ewQKa2a0)AJjGp0tgJTxxUJtsu&dlvvJ z*CPu)A`OJK*#7kN)S;d8tZxug*3BY`n&~V1r|`S|HyOG17>}o3j8=*vix-s>vUHE( zM3(F8?e29D$?%%~I=BP2t|FYX&_t{nbaeP%3=P?fYgBl*9N@P221OXe>?P$*orU;O z4PV4}tq$WDmh?-KiXSH77*!#6}=va^|^K~_Z-)`RWx zch$$7rpj|dPF|eqbS5Fo;cSxuUG_{&{#^7;h=Am_^W}r`c2{NyJKya=%LQyhPICk6 zVKci9AwNAd&U-D4GoGo=$|W9H^-`)JHr>w{Dz6~f$Hi>M)`@WXo|%rn-9TVO6gNNi z2z9N;^L;F}pz;_GbEszQ#kl`J>_gC$fb&ax&`XI)J%v#eIsu^{_(^cOL27qSckP_| z(U2iF&9cxj9>SssaP1{2t-he&aiWolC-#slF%k}da8kUu^&;Ww2Y63glI3!>oa^r3VatY%)uD;y>Cpdp#_fTEuX!=^R|6|%jWRm zu9OF-0KKVJR5G|$Id*mbz2J4C*;D|eqES?I!J`Z@+-pAoUV3nqxsQgP(%btM&sk~xBTY(cy#hW0C+km>~MdF_&SR%XPhVvvq}MR zYdj;zr)Yq2Iv6i#jzZxoFXDzOA0Nl+&|UP^1Qq;*a$3gzI5e$K?5BoDaju$lw3IJ) z6FP@!^W7;eBv1b{$v5Jgf({Be8`^Z?&vLV64U4amezp1g-L~CP_Pa^T5Ey;t>ri^( zSc&fvDz;RNbsx5}DrMIuyBRODpOna7401M=+KWGv4kp5D(LRv1R@&YPF{}o(!Ra(4 zqX`^Y1e7;;*(&UYxBT{l8d2zOt9(ZbZO$Ca?cTQYuePo#fG-7K#d_0f!!R)UFQ@A;cjBxG5)fL#i1z4Q8xmXWKk&38 zI1n>qy=JPY5;FZ}>3)CJiU#uI5136E0fLZ5{8$9(WxH<%pH60rG_}u#TuW>#H6;hW zI7>X;;W6D<>s_Id=a<3)=KX$5+-PxBCchwe2LZIwx-L;!%>qm9qW~8h?S+#8x@RP& zXq-*3MA`Y{92;v0-jxKD$=Z!0k;@YpB5*ki_=z&tk4BmLl_!j)%(1+7tb2tWz8wI| z+>?_doxz<#-tx^Bg)f4QEaB(RXpLZq*>MgfW1X!dpv}TuJBs7lY#JmKO0?~FA)tR` zTXCwHL+jI#&UYRKP!LZo1K09Ao6Oks3u5&-8LI!`&TicbQvqv< zHlAN{_Pa(?tMqNcmldNm=xbdJ$fa;`&1t0Fz-$}zPt$8{x{1P#9qyYU0iq>-LH zI>U5LEAJ;6u6KbS^f5OmZcZi;Ytt5A76atRQ|e|SN!l~Gf#sy2h#B|hKT!Zo1^~R( z5ZTSxXynN?(6NoFMc$h&nVaI9#PN+;FI1F-;9qRQ4VW4>Bwe!d%!G+)(3(-idnv)u z|4GBeUXlcZn3chuvg8htLd>S~R^czq@f*IfT4O*nL#}fd69_q2goE$p#k8;kcD>h$ z3@<7&dS-eWC>y@tNa>-+2ATqIE-Z7Ni$1Rx3%G><^P35VgqzJ8lGtWvhsEB=Uf#bw z6aVHF40Sz1(hxP_iD)a%qtxrcRDL299ydHeP4-UIXjv@Y=^UBjH;-a8q1*l#^z;XU zeOy1PaHSAiSH#BnPTAdwoGHji=&e|fm%9xx)# zY2Qu=gp*h@(;j|BRx=Y1k4Rg4So-Wpej3tFf-G*TNjC3Q6S6wxhUJw!I~9w{&w}a) zC1cM!o#Q62XTqHv_B26SnkIL5Pn5_XSUaTJ1uR`-{>uP(GAn1ZIi772#Q3df zz9NI|iU$}_ej7^OMhj0$*@E2h_aedjyslaKa*5~TPiYlsj{X&qqR*Q+kXPlK#Q#`3 zk~}%RtTO_u)w`N_NMJLx2?Gs2@Wk5hWm9i%T^fU|aBgCs3+|%p!`?cXhV(Lv$f7UH zNw~~U0@!!yTeyP(Z7W`gP%#pTw0pMm)J8X9Xkw!|*g5kx&i>>Z)Aw@q;Y|8=ICoKJ z1{8V0K5h3%Z`9$>*z(_CaPHIU;jl5qKvEg!tG%v$Ux~ zJx+8AO8U|G3;~@hO%|{p>$_uN5L@yc0bNU84?$ibA6ewTR4Y+p@@hMQQAo!^-(O?Oj`Kdc;cRLila7{(x?EQVYii~gomtNbX4+H zBfG^2Wj5-~)+Tr|bLVRHrEIixk{D=@?LgPpH8`b3Z&30j)f~1k5az#eSKZN94Qx|o z{@-wzU*f9)S~7It$;(;ho!dh==<=uV{%u~rFW7b@Ttn{9gA2yOztPSDakzxyJfF_1 zw=V8|u%oWU{Y(qBKr?E<~Coj9D@kthVrwE+n=% zn)^3|8q@T%1Al>3w}_-zTTElN^-alT>gMC1c=!i(SIne4o6VW!yJ~)TPq%X9FGEG2 zXrBzFfz|2XleF-BgmZKZsTdr$Fk#(gUw`wHAhUR7cP$fk|58O)FY9o08?V*z`b$v4 zH?`QIA0ps4zYxL4Zm=AFkG`$&dcCp$avJPNO3&Y%bn<36UmNsmaTPzVzB3~^_`v|e zm3t@KuS4-?P9colBWoLF5!XZ%&>CFEusb#>eN``X{hx~YgGA()uWatf7* zXEeJu>lOY_${UN8c%I(=noX0*B17smqisb565d-}Zq8urL|}n`oz?Cp&2)SQ^uA?B zTir~pOb?X~VfB^sQ?CXNWZO|BE8V|4!j=OYzh0kgPEwXTu2`eC%Z-JUj8cZ-tnX%F z_6AcPR*DwXT|*^TjDIUjySKDr7*maU4&-lCtkk?_dpHl=#Jv0JS1vbD1oNp>*bA@5 z`-d5@e9w@pg?tw@ARe?Im0Gnmmw8!AbeA)p9N-K#N2;o|5iDTLZOhoK#G!K-V#h2IZUyQiJm17{5+UBOcALTWo45*B>UAE1|Bg?l?7nR*up9!_zr7A)16SzSfj zZ}Wjv^JTK&o>-U0NFc)Odd%a9mn@X64H_axvQ3~KIgdQMg+gvKAg2tvWjY>ron4ny zTHydDt3MTyAzMlA3mfQC@MXbd8aW8ry@i_5kZM>_l)RUSdAM+oxb44t0LAKFL+`mj zwUhJ%YiKJ4mJlBc4i-($(j@)X+ga%alkfx)RlwY=2DfHhAqk)%W#+{3dq=lpvaA~8 z@D1jC3-hGq!+YAn6;b87+^i$p>l%}U(4rLu7v@CLlQD`yMLQs2TawPifa5kWWk(~0 zeUrYcI0;gL=+Eg27k{j_hC(K&_vjV-kQzoba%w)MQ-K8iQx2l?l3?arW=x34){o}g zy?jVXBehg?=mI#u`-v?G1;4hs0+zWC99=l=$Tx~tm|4Hjy(x`WDI4fK4q%t|B)yZ&DDjWQ!X@c`tGqv7*YWD7*Iq-(eOoZ z;kW7$W9GRNBmroLT~#-S9e}!Xu#e_GQQgCN8M%FFsObfNn8iFIrk=B&@>>V+_x8M9 zrBC5#5l6+cR=qQT3gulW=`^Sa{Ii*=ADD+SRNR(Hi_UN1umC+SZa@L}1yy&6W2ut? zT$=4ghbkG75TB#gp|W!Ayk>hsn0#C$f`pwImrrj)syL1ir~Zf3fVvG=AuB{)M4~0( zUD+;!80;_l6WPQ2+_t>A3|jU*0W>B8tFY#5CQ@m{0RKM#z~)7^T9zDW+t6C-))cg4 zpq=2qe@BD*1K?zN5#_wy30UXiG4t3ZNBrcHZ0xRw&Q3Y1N24o+PU5Gms4BGOPxj!P zUUEHgqDA0BHtEz^wyQRAj_pnrQt$t6;|2+sX=P8>7;iYz3lPSA(KzkV0J+}_k`$@YxNEG=Tp?J;=Ea{}A z>E3kWxYpq=6Y>&#p%m{7Pb6<^OqiPPts8>E*(q)yxFv`RGLmk?mwtIgPx!w|wZPc@ zGDdve{A3Ssc}(-f+S~}i0?U|*!%9m`K*pFEz&gyw#GC7us3-wpJRE(%K6Hnj-5m~z%7D|V;dMK9$%2sE0MLLjs9IE&)2}nUAbol zwQ1nd?NxxLYV1b~qOn-iJ%(iN@{+?rcvSTU}e_>Oj5Bw7Dx-KlxzfC`4GXjwYJ-UlDSIW_C%3IO{SHD!QAkMFh6E7-C!V zzM2>SD%!Y7q zT(P3}dUZf|FI@4!RRr1bhe%UH#W{+uS$R=%d!7l6U{?%|Ys6egG0@YtXc0YCo>Hvl z79S;cErTM_2~=0d+l=!vUnj$&&>>r#m~1PN&>*F%uXB`N1_A=TxCc}T_^9-(^yPn> zR%0|p(v8)UyIBNZ&wguCW49`lJZ`xO3!$0VWDtowF|Ned-``qcn1hy&T;&(0WLiwD zu?a4y%B3J*%)l9gMREQdK zdiu!?YGgU^;!%Ih$RMW9H90hcchRj0nJhbp_4dL= zWXHxcj^)A2(oQQ3*{AL|Br%So2cG7ysfL_818b!E$0J-kR-w8;h>a@Cz!@HqTqV<9 z!8bn|=~j#seVTq|V85bCuOlw~p-`B& zAx+rJ{B~KO%#q@9%ocl=2{c)+qq7p+ai9N`JnPwkOXpVV<>(c{-YXgwVE86?-EDu% zfmPr~`3>&3%tak@pyhD4W%gbPNYNdsY?P|~?RQLRduoj1*Y|PkbIy6+uf@G`T!(Y_ zA^BJ9(8FBhAD@y?iY>MFPTlT=R<(kH@Cd(pUF*vCrsAJ?o>T zY^=avpN+2AM)lt?XQu`_k{HLb=zfFZ?o#~Xl)@!LN>-8!giE(&Aa!G3UzJ)?+;u&T zQ4JTs&QC!A#=tEI*uv{hs~qn#Bz2DAam94#bl+evb%7|?QA_=`~fx$9bMCHtD7 z>sP;-h1VkRb4%I0Wx}>usgU6JbCokR(GKHl+|?ddkEt2MEBHS?Aj-;tN`ymr+Yg@r zom@|ZhrDZ+Oa?Eg{AepWA25aUmyYjMoNkU# z&g8x6#2BiotWwgK{nPLMD$tnDu*c2L|6^lb_7}!f1H6tnsl50*t_U;j*O+UM^4E-L zCTJwOMqW(n1~mo_twCPh+R?=Y~XxoEu zU~RDw1y=$^U%BE$72kvYN7|MskDd={CoCuWJ^2Aj0piF5pod*9`$f@$ zU<8E`*$5>+Pepx+9tLSnP-Ggy;kT5L+Zu4>K)F*?xaV5#H9W_QH*jq+L;X{KjQ_8u z=%FzRWE)GSTjc_Z986z6O{(kJKRV+JvUaSKF^&u?wh@W;;>yMXAHD1)v5G;i^!7oB zet~L05%kU=V^3QYYnx3e1Xxe*)%-G?AN1 zU0gYom6xj|)oA+Um9hNzG7mkL)zSXXjRlRw7^&HJ4kLz5VL69@zvQZZDEgQl5?<>C zkr6uL#^n7|Su9diO5?Rj<>{b~Gdb(i&VSg-R`TWV{-kXX#uni_Og>~F-s{_q0F7vy zMr&{OU+UpwqB0^Cu9UZM%Cyw=hP^vc523N`$!X9pTi?_ZH@d9=N@D zD}Vp5nOgeHiQ0=Cu}w zReZ;!UkhHadYRxPtqhfzRq0!?&KYxsnz0B4S%bybn2xyk?8IwnKA^&YxUsHV4z%Ui z?uZI21>sn_$VA%`AFH5PNb%kdM7w`d0p@pUg0}UF%w?#KWd)KS#IoHIZ{nM^;t#4P z!4yrBG09P^cOcbBQShv8%{nFUF$Zl97i10;+vK=NQ+I!TPF z9-d18_mb!3$=8!`$OrShP+Om_9kR09S8`Q))o%-(Rp2r-=cZcdf-|Q{@qLL()x!F+ zu!w>2HEQ6ZdOu;!pX+@$bLX}gT_k{QK-8o7<+zRcAS3hQAQU`fu!;XG3TXXb83H~%5vs`V*zTBD*vz1g( zq{N0z*S;ja|Z#|?MEhMTNbzU~H2d*#v&+5c+rm#08^@$qw0Yi?!rZCSsr7)AYn_U{szm8&zxNY)aU2w<2~3~s z@rTnHy|h*#&0EA~1>sb-#DJQF6dkiWXPsxBLQvZnyW4v7^5AJpF(ne-GcFO1n-TB( zS}B1V;FW}*=7!7UoLisJG*y;z?1)KaR~XJF8iC`XawMoG=&cz{?2IbJ@Ywk3Ap@~e z)r^-|dc_fyJbop0Oah{I%J{X_UM+1PyrNZ@XD*J)Hrv{90aiVIH+n?!mCsS68bjG6 zyRe5LrT!^Hxq?Wg9;Y@h(pG* zWF?Z4cl+sC8bVIe>s(LQFeQ}1xmTRP%N0zAzI8fQ{N=42{oK>_`i9HgJ5rDI^=txV zll{x@q1sgWK#-k;xLD{g;gB`U6c|~@UipdU6cXB_8SMP7oii3xK_yo#?d3C7|HBlo zkgyN>1C$aQwP1G?MTPSVeWlaW8Iyb1T*JabbtDo04wm}QT-sAwTz)WgMV2WM=Or*2 z9UR^`BIH*nz)}7> zoCn^s>d2N|uipuu-e3 zmex!f2o9=y!fmFUDoSNSsal~zxdoO zV|>g(NO`3w;=63_bxBy|d)8bUZ$x}Ra7l)e8VDQ(se$DL*qS1Pquh@AKa%h39kYcf zpD6)Vu5yZ2FEG$@;H^~IGiIH?5xk_xH?Rf}IK$)KX&>n)j)PDjD{qp17F|b0;0^Qd z0os$M-74SXC{ucJ(D?@)YCb3S!PpFm!5No%X~2ykhZDx^Xkj#VA{QFD{v-MJGZu^! ztp~{rZ4*|Ag_5MhrJ!S;-%un=W4VbOa-1xeo(T+zPi83w+ylb4=cg>7a+gA3=pNi_ z2`X+g9MyWl`=YMr>)t7=oS-VGI?1QxJZzPcqVdN7f3kCAR^GRO=k?AJ~vJaftKAM z8w6mcW_M_?L^1hOb(>_*dxn4e@s#-%k;O$YEy`0%1N(Gwf$G>|aTJ_o=Wc=l4%s4S zYg=oPzsHyCb}v;XPZ|W zk?iU9)R#f3n;6}I{NYgEN)DOwMXJG1cm80LFp_#wxI#=&e*6021b|O2+;(UZI2C0} zouI45r7R|A(eRV^G@Bo*9pBq_p*($ttMdbfgqKT4=684fHiI>VLc6MRia>9ysR4r?Vo<1DeIG*EfF3tJfCTqR`g@fD)pag z;OYSyxFCZ_SC|4%ZtZ*E8QCU-Ib?1HhxrQKTei$t-3Ea$sHUNX*O%|;B8%En>%U2l zCR7P95?__yZVBs-Q$_enjwEG^(*B=91K(JTc5DuCq?8;}n(!DK`qFqRjMiul!VH?- zBjr_t5M@#|M&y5kYcXQqAyp;^ALNMx2A;W%AQbG1p=_^(_w;u)^jGFC=6c*+Z z=-UbeINu%S(?0D5C~I_*7B2{Q`arC9;`Ya6qoNT?_35E&*+-0;N*;Oa>G{mkHE$jlx&N)pR z8OWo&$<7LUV3xm4wA0S4g@*syVaLQ9BIWTVSBaq?ZuDM%6GJOKdK0jNQ~LW}vAvp% z8Ir-?E1fv~BB{7snl>$t0XcsU!h2AWMq%h%Q-nA!01b|sA0#s&0}k;)Gr_25|A3>1ru`Ap$--#*MVRfe=LurDpLwMlGbJ%Fd*wtb(J2q2K1 zW@^0R@*kn(5v&<}2eTsKT>Fn>&(v+$VJ%cosPt#oXh)34e?BveVP4+n96Va_Q|*TUXIc8+KME}ESmzX#SSAzbEq%&#tEk?<{=){ zw~%e7Lv+}jFejN=|jLUvN7APLFn2G9u!^FS0mnOzXm1GRuhs|V;(4AR#rE$3#E_{bScjb z=DGc7u*?3V+c5Ilh-p9vqi)MhZM#3}ZF2QifN2|PL|~9f`h7%-{M;WfPPWo?86q7G zzH`NDr)(^IaT>|ED-Cy8sQf2MK6#3iJ!fK7V6mI{N={CY z;h1Z*uVHc5zN~K0 zs5dbkSo}ih``?%yizBZ{{{xJ#xY*A<7&A5NN-&q_vAnRUN176H(9Y=;3UY+?A%(RAtf&}YLj!NUEo?tI*uKsnLg zkU*aNcksA4;F)=n$?R-lFY4mmBLVI3{P7Z|Lndv+V*9iKhjYjXi)id>Gs^Y3eqS1; zStJK>qlu-?rOdIq`BH1#{)Z8b2yT3;y4P2r_M6*b;my48FTk3Y&UbFeEuGV@|E*C> zPH?3cM%)#>(0I)0T$tt^OY_8(6_~5clIuZ{N^a^g?s>2(I%8a^@F!frtxy1rFm1dQ z8CTc-^-UfoV9%Havn{4~>OtTSKhrjp&|)JVn-eR5OJ6&91oKkets6oBAbD7KavD5T>G(u5MpoKrI?k2L~wAGD;xZCNg0t= zztyf(rq~3FPXlIOrW5u$h(v0a_?sXC?BDC(jwj&}^kt;ZipfLF%#lW-@VJ!CWW;c2 z0Fux@TU+bdsj?;!L)O7B3DQ67mi{jknu~8}k`N|ZClSWi=9OoWdt{QZq$k)RyYe(n z8tW1kfu)PBtHAB`p45RYz<`gl(viH>g6y=v{e=1!xx(=o3?#K4dIO*8E>ugZ<;dt>aoD%7y}nDW}@z^HR+%LL`fKtVm0c$s&FegF!nM!;nnNs2{JiL=|GM@S$4J$WGM4HW1O_f+5&3cn z51I=@`_)x{JX4ivYruCuX2eq=IJG4>LlnhgH(F-C8!|Gx>fL$X*?XcV!l1%b%qXq^ zlmyIB)KW&3vySo9i6glA{2 z10h2~w!ebl7SNEEJU?-A@1GO1uCzuERErOsZrfwQQv!MB!WdPLCdUelFwQ-X>_kpHa2k@i?)M%5uGPIqMX`W5jk83=13K9 zA`NPzwNd8>!;>>efCMq;0QOR(wy$Y#rb^cW>d3P-^hBMAQ{p`WR7 zg-!tx@A!xZ)leX1g5{RzB(df~qc$*o46U1fDyuymsk)z~o3nO8;8|7mpnut91vmK~ zXm3ditifM4Yk24dFxB6ktR~Y*D+YlKnu?(?;#G)=cnl*G8W=2wLY>x4>9P=57yl7_ zAfp;^ob$Uu(43Q?`nJ4^q~oPf;zjKtUNWg-`6nfZY=oGE^rTA)Jh;=r*FFK&7dzkC z1B>oxQtwSIj{tbzy=@Fy^MpDQ+Di=d`e%`#iGS0LMA$o!@i`O^Q4b#l<;0{aE077A zp1LnY2eEKgH*{>~?`&|%$8vqA$GKch;nQNvo$%$X3!A_T6YN4tj2zq^s4LL!oN|~^ z{=-_K$qJQAELFBBad5m5xS2PDF2fuCG^&MZ0)S_c&$*=C5x3{W#G4Ukos)r=Ksq1> zCg%pt$xl@XF!SG#E&lUVil}xOf2V?UT&{fFjV>fwILuHOR{D$h^A`2R7}3wR>DAT$ zx}QKNItwUTW#0N70C`R_gCu#dJPJeBl zDCSK;kb1ysEVQONcUx?$899i}pB`=o1|N>E7tU2>4&c?zp$XG~UE3f_eR(ZbX}~E{ zuov|}P|#eV+EAF7>oQ{O~_%pLl75e0xCy7x!B#pb?8lOY`u`Zz=dwK12))pAynqwcq>)FmB{E@Ue`uvS7q?1a53 zouKJEH7rH7Ny3ERv7}(a7!vmF?vvvD<#-t>w4%vYvPpEB9JyE5Nlx~cl(Ss!HHiF& z+vowwJFGXElK;Rx+jvbQ7I6;w=Ht}vXt3M|%KoCD0CIt(gZ?NU@`UQ1P7j-z4Z!3MPf7!O1Bg_?ZY6?`ubGh#h1) z@{of2+2~llA%D?%`F?N&AFv2QJxTg5(>e7D*8AaVb!ARzDf#_39%74Q>?Vx^{nbe* zWb5`fy$z85`(|SD(Bv&K!O~~~a>nYz6+l3l^f5yF^_RnGu0ORqjxgZm;>u~xPZ(-~ zdC?0{AM-GEs%?ltK2HBRR#UFMYp_V))I67TUUu8JgXSaGvs#49v3e9BpX)N;XWdNq zH4u00x=0DTWN@dTFOO%zyI{toE_2q z9OOub)~wk>1-xQ={gB+X$@oomTt?0@c&K|QaTIS^vAc>9D1yIk43!3p!bqW}jC4S^ z&brb8NcX7VW+Y@o&ULNw%nRd!EWbQL>bnGt+iv0 zH_-TIx~>>b3WUtqLfb#^om&0@woQfyhn7$ zn38;^V*I&?HX{T*U^xjp5@FpnU!jRs4FpDH|I$KePj>1{3iwa@zeguTERlp5`2weq z#3t>m<>*!qkgZ1SG__r7o4p+tqJ1x?&|%>Z9|k4hv4j|%-s>gi2(%rSrF2|xyA>a4 zB4@hZ7Y9y~&h)1Zo>no{rSB4`ryPgxnvCdVEo`FoDWliuC2YH3=9o`6oPb&Ul|0RD zCd2hLl4yJ614^HM^LaP^obclBm*F-CGX9B7;DNf0MFK6+3M+IOCh_i_$!vsGGav8d$Db)?%9T4ZL;Rg+h&W z306Iy_}=%;yLkMxqNAl^11n&)_%V_=XbH-K5Ll6tZgWT_o{*6SfP7huC#zW$){ib+ z_X?og$ar#TO0(2y zkV$2U?fLr3QRq#`^i93Bh(&1tCXmPgziX(}c>_>pn(M_K@MoR<$YKp)5f9X#1nMGZ z1$2v-s?lL@jHeHKu4?KzqqVouF71_x-91`|hz&Jq&&BC#Z_N}HH8x<<$m0}g1Vl*3 zho%NnU3@(;&cLR}&0`U1Et4BHnsC?8`mzI$+z)VshRoS- z26+MJqy{QDBEaTJYlhQAi06j73y2*lWEU8FXIQBW7Gq78I%msEetmXesBJWu=6>La zh<-q!gYpKr`8`k#oMhQ*_v&#lmbyVA>w+e-+L|IOQ=~mJHx_FVQ#!>B$0P=za@^k%&qJ=C)D5v1{ z?}poiEcx_k4pvjHuCg4eNR?IQT}7X{?gVCJX89LBlc^`8n$O;jo{%sIF99m;RAUjx?XG_{W~zw#po6OrQ?8TtBzdp!RiK-!sGA&k#y(cIWIiuQlff zI|kBwK>U1pCs4xPb^n{{b&;aCD?a^ypaI|_07;VA3WVH&_~2xO$| zAmA~zPsAuY-P>MEUe%*QQ{Or+U5DhB^*M= z?aZ|cuJFOuY2tG57AA3YRem7!D5~XXoju{-K~oolMfl7uT8kJ9lju z^3`RB4TRh>=k!GVQkn7AGb;F)*Da2^2wC`R{VoSgbo|Rgxekk89|jS@sXO;;gqu&x zDVT6CJTcgmp4NU^xU~Lh#TJxsOf;z-&$6`L!2(hIjj%@jhg@d=w$3z=%w);~RV7L= zPG$=*_w(hF1A3q-PJ@Wf+{aPpw)zPLiOTAxI zOJ`(nY|lM*Y>!u}tXlTY#b@|eR~R$eavBV5P8B5@p@@2==UmBJR3s2&#?(;u0f}+&XYOsz<_bE)SFI+U{Q| z8S2ok^6@$NoN?TI5Zub=|GCo|&Fu`Qb>Y(4MzZQoOHPm*TA|=BJBJxLPnIG8O9f{C zp7`yT&=FqGl4Nl*&W=F#!U74J_IpjwNb+q*u^-ZIXSJfZZk;~1+%4F=Tz*fP##;8! z)NU(i#4pj6FqTjamd`CsF=L~z)J{%k^-?qSO_uvaNE*NJZe}#w#1dpvKGK{{$15)J zXj_?2>ukB9MWeM&iRuK9v zbESE<*GRea9rU_b@qCzqHyhrJT|?IPE=1n#{8UxB+`L339it-K98&YR+${l&Cq`Wx zlj%GxEbxcH6u-eSvp%TZOix@)!i4s1TI1mBBuL)u#(dPvRg8x_gKR5HlA-D~UAdYF zJC|=hp**gW#3^dCikIAAQ4L>m+WT|c{%0LbW>5MORmn&mT6r3|g+ch-%FqILtDwDG zfWbUx#CO@+mkh84RR{m$1)$8RbR9~utKKRxMxe-y`tK^J$7Cb_pCt|i6I&teYtEc$ z()n`!T|Vw8 zY`jS5X0iT}7iCgWd1YBA#E0jXH82%=Vq_KV@<|`qas(ZE4cVexvDAb1ZM2cl51Gti zM+UnD2zzXCNjPv;3HE{ylg&EH24PI&GtI-8i9?12?^`ZTOne-3_Ix^!%w<1(dEAo< zF1CSYre`S2P!Yr;BU3}h+3b#!jI5i?kl{2mq0O{dVa}BC5;!{Pd~SUguhx55-~?!* zfh1FfcSb40aEB}cPG}fKyMz`^RyuMYKQU}f|6hSDRyi^(c;lf65rSmd#@V%x+guwD z7RBWhez_LC<4tJh_E%0rksh436G}jKeqkwG3hc0JiU)pw$CrpBi-D`Ubs@odpXHnP z$ILzniORY9CQ{I!@SdU(=Jh;cM9JDUSGWIP|_GI>@a9Ho3EejT$Y@^ytDGi3YBO@O>S72c#WI#)ce}pB+m(rZg>P; zfi45hAzJcdL#jJ?IM)#XIEGoyRtx~HD9TawY?S{%2;U)yZI>Ty9UiWZ#CrZV`cqBo z(;5^rB<7(j)5^<8a)_TS3Plc&SjQhcR<7 zO#w^^6iU{cRRYLBG^RU`b2YE<+(wp>x&EwXBJZ(4%f@2N6D||S(uG~gkl@Q$d(K`q zS~qaRn#-Paw;^62-5t-p1LNH;cUJ%dKXMfs{`vLa!7NCIPX09|*wIio`x^x;p%2?Y zk<+O>1&!;k3zwf2QsH3NFeOd0JpYB~y{gwOk%onrH*_|u@%1bsOBVxZtGfdz_9IrK z5m`y7$X`8yJmIlAqduKB$8>GFZ1NBXHK8DxYe}*b&~c!Gt1r_W>^WBlYRZ>3LeKj) z%kA`TJXi_=m>PNYD&<$1jk7EjKKoSi@TPsNeQyE)aowXmOW0E-xO&I|;9`JZ%LRHo z)(gWKbTkx)t-uMkMSJdJ$^te+n-VIIt7=gp8j1tx#q%n2Ehw9gR&>`L*l;WnHlaN$ zhGB{z;@JMym`EMEf^JqH>h$_oB7j=_HBsDm0 zAFus~^b}pPO_UUI+F6HIg;;e}P8gvXZVp;|qy|mB97FP5jfd=JvWnYY!nivX$)`>T zn5?DizoCrws{ciK5ee-Y3jOEoh{d*ocors;=e8LHr(?z za2Lb%qO+k&rWuud&V)0Hg832149D+y+Nz!7sA<8wA-MQdi3AKTtRn?mlw*i=pZ4iowvElm@JMp1tz zd#i`jKP)tNF8yCVw)ug%m*O0RS?k!38=K-9v0~8&Nyqy1SI8Y#W*yJPH0IgPtMjAz z^V|G2BQwYTactO+^1^9?6^j@&$GUDwDTUHn+>spmv6#8YObu(QTZNSV4(OT;6!y{ozfU4pA2Fo8(8{O0A`dHW@y9aGh{@6E*)?#e#%Q(oGX*G`EajM{Z;>RT$Km?U!&umUXc!+|Mie zMCl7aBUu3M)iOa>aX=;nLwma#a3bO#!v!y^x(KefbpbR#mJ8V6Qg3bswp8X^^_?Ut znv(fn3BkJj&`0*huVhgt4C?cuZUS;zhU0=#8Y&I4CD)D08kS>s38xrHNqWWk^-R`c z&NDZ5uA|tAx}^ZXpqrj5orir6V0FCN=OW6Q5@k)-vX(i_WG)o9M1Ttx5|g_4glWOy zwGXF&UIAKeJnI|rSRnDX*2BLC#f6IA62yQS{C}G)pk|s19)y+fi(xliG8R*88VlzM z`!)f}FA31@6@~39)^)83l5{gy60vT$vulJzsLJp=QMcW&3|=~v*uP4M9vXR}_7;hn zX?QCh5)hGN%MBapGQ9nzo6)gHlClEkwJ1m%dLI&DA~=^9d3I0iNiuI#GsIN)*x zkkuz)cG>S4-FX{)?bWUR})EEycL>HTG7lowQ;6WV*Q}fuXID!(a-rbu;@w9!}fu5DalkR zHt6iq6GX=%Hv@Cj{xOycnIYHG2<-xEjLY{B+3CIy$)-tX862GFN8}iz1zs#?%(t;9 zf5@>~rS68;9^<`AbOeM$vuoq)TOf>vttJ|3=YD91dLh{kfbH{l(}I~$#l@H3gCYfx z#k(BLbNHDrk1JobR9kDaz4#EA@F@UsjkVeC>lKw_Xh`@D2weficq|fEC4}IIPp3a@PH_&DC11S?<= zKlS^D$^6+e7F%>ctp{=*S=#@`ubj9M6M}UTy3KASlz4ng6z-4Ksx`%kPvJ z**Y4%nw&$(rIgYsit+SN!|oL*#`Q$;KsZRHa-lcQ_BhZB3OVN6O|kb-mi23jRh|VZ z`YRXHf1Zk+_Q!jnP*$9;c*G$52?mrjUywQkSm*9s36v(DD#)JQ`heoHSJ>Ay1JV^@ zOGRm5mM3Iv!{q0XSQPgo#v@dP9#;B37zlaNTPtAm4`0{qnhJ>d zqXBt4s)vxKf+1-kAUCJA(f}Kk5UJ|mx4Ggy1u(?}?H!Z!+n=jRY)JEawE)h+!y~fY z(RIhm$N!Zg91ccyL({K0P97J-siQZ5M{XOfGr%z@kfhmZx`_|d#Xt5rRqgYyT?ldp z(wD(C8s5^Ae=bnChc0qg7lNAABZUHciV`DLpimY<;TahQvc9d5LG zTCn$L&2gncy(X0@y2U~Zx#%J`cM2)8>!T&%#4IWf_a=X2!TG@kL+ma611y8pcH#j= z<)$)7O?#2Zl)b2J(PpRf(VR3lZ=h#&ImYr9`0HZ1_%Fr}@^g%pUThuyekG|do= zj?b%l{HoG2Wi5q*W~pfGzLU*RD~gE>5aMQBIRDdnI*~!g=kpz&x}($kPUL$>cB(0) z_Vqgu2X1GhO#z!diaLc((E<*uL6o=Som7)pwO_6%Q&MlRvb|%!PV`-)FXmQHSF@Wb zV&TIqTS3L3=ru;B2jZ5v_U*R?b-%L(WYe^xPN~F=sFEj2##J?rH(Xzul~{-kIElx` zOj!t#90fHkmqSG7F)Amsk;IFOMS!7cX7DTr3iP%`5JiWO-Z*rrkuhwU85-x1Majz; z%c-U0gSS^ggAX=7I)Z7E{w|1Ww_D{Ua%zDLmUX+&nW>+LD?Vm_)B=ib-Dv<~P)7TG zHdLZy+-iqyuCgXIn}db)8wqfktu|dJ)$YiRHX6=jOqx?rtwU$Ag?!0%x)(?P0Qwt` zGA>6g)MtBUv>WC0iFQ1MHFTOD8u>z`Fxc`A%-}|SGNB-#}7Ezx?z`$Z`04 z=uyw8M3WXrZk`GRShWnHCuGx+m>|2Jaun>nS54Nlpp5sWELpB9(Od3O! z4BZ8E8I$StgeTJ8EVyLf>4=~|Ql>TsR=HBwH1g0C7(sj$6p3J26)cf@m3o6bu^+28 zX3a{rF9c}2jm;bm2soj>*el;P_6E~xy9Rfo@8ns55vsCq3X99v7f*`r6<$?}n}1wh zNGW7fIlCpy@Xfncb$@d1%77gBDpWia(hGuJBDz~4eHI;M6b1;hmz41i`-=M@soL~I zz~|vG$|lJf-!L9wQi+&rmiMY%7Np)m+paLi--yKsoc(N{d3k{bQ{$fa;3B*^_Ib%< z6RPjaKP@L9BNrn;=Qk%WQ{?FDGTo0%A75M@o77DmaBasAZr^-RSB@Z|GY2kZzzr?qLNx{(j4SYH zwjlxVofq{f)*zMD)!o;ijdPTY;h8q%2Dx{2NEuMh=?xXWl$piYo{-1CABfw8vfq6` zO_yUFH%knK6#Y^j11<*%W)n1Kd6pr+3LuaQ5vgz@G$a$fM1vmMU2}^|ea1P0_YV)xK5W-#tPJis*^eX)z@1C&IWWX~cQ@Rx~8vi$b`LnelfS zad@;$!mq{AImVz7X}R`N>{@4=Fg~IiRwAfZSdM1;tcGOD{A-X~#Besy@EKAS8{lt6 z_bSVI$9SyLWiKj{-1@DUTO+J4MsZZ=senKaCc<>&2EBGfr%jx{IA@B>?&@au&+%s5 zo?D6u6*p)r8(ZM@TUhpc<}b;ab_1t@Bb`}fZ;BdL$uB164i^rWG+lAo^}D|xNiz{1 zUY~JGyIx%KQi7x3*}z<-GJlG^4n<5^znZ5Sqc6>gN$F|}(7V5t0r~ky!bzGF1~L>w za*W!8XigX-X!Q8lPAcmkcilzGF7r~emKis3drx&lWa87>>e8Q2#uZ3`xf-kcfNv(4L1`My1y((AsD zj0~zxt(6GyHVKvuMLKK=Gwtx zOMSU9y`=?4q!IVHy~w=v9n~x(9%vTtAMyRD1|?i0VF66Qmdb$Q-GuQW$xb_y2+|bs zt}jmlLAcDdAW*lp7)q$YceWYKMO`_w^pRqvfM!xis>6xq=#dBDEvi!>^jt|SI{`KR zZ1)eI9ur%!q%Py3I<9JSQfoU_uWXWMU+DV}>OS~u0^+S9L{H&$9lB|eBGcaCmANr-q-nf;QsW8{%klgSulok^;qJQF>7ia)6u_G#2lAej;oJNJ3(2@wNS$9Y+tPMn$BewZzA zCR!&V>1>BTbV$IeU7T3uTGW+x?H>jd;RcU=!l%sXKBDb2a)X*72r4gYnC1#h73aJ+ z=UKrt)e+4AQCd!KR<=26HT*}# zAib^a48~3<7!46)pBQz{UzIMrzxEnoflHm{XL!M8KHXr0m!Vff@Dmi9k*(sDmm@u( zUx6iM02gRG5hN;>1{Pj?R$d8BNnyCbZj9WMof)nqEFau;ECK;#(k6=ReQr6kV>gSz zc(PgCBvh7*Nvj+23j%jK!sc<7t6MK?`?vLQ^Wb+vR$y#`Q*l?>_0jj5r^F4gi+XDFc!EK3YG3FPG3`zWEo>s~g4t#gYIb5L{t~ zY39OAXtQCBW*U;lEh;oI_n0-Z0M(ct*=KB>4Pts7hbRp@Rm%*D;}iV%>7WNzR0^0C zm~bZT+=2%Y=P*>xmdTNKn_piTt7AEQ@5~`IuNO2WM4FMn5$#uB|4UCAnuh+4 zJ-=N|U87$l)y0$84f^Z2#SRbx#=BtNoao73WEGqqTU{WuzY1^4crGWVS(rzrGBC^T zDt&o42!wyb2&&uxr3D+}j|Sn3P@UALy& zI;;?%a6_p(_hhOaUf0{mCfWPB!3g!24o}&k=Y)Ui-vAQ!1Ir7jkse{! zLa1GLv@_tTf8F>1af+aAG3RE8ck0*=4aYV0Iab1miR)9Vc|D7wbQYyYyY)-^7|N~z z4n3d(xiJ9;x*hEv80LbfsSo0?!d@K@y_lJ#me=N(Sqc~l)0e2 zc`kyof|KSnC1r8iHC7w~gcL2D)nth9Vg4RKKRILL3AFku0}+tmjDLpaCdEQrnr(5X z>ps+}`4iD^9GQD%U1k<$NH5WJl8YWmu|{3|Q=8H_<^L+eN@p(u=M;IEYFAQQOh7^O zb!(J`X(Yp>;F5(pxvn4>dfKy8s^>iMBp}H~cQ=gK6{g@TLv$sIeWk?`5zv&C<+VJ< zS~K~l#jTaZSj`{pc)^}DIey+Rxz%0c=PsddSmz%O+mvu!-)oT&VR0OFl&8=(08#-2x2gy@^-K z3ZqQSY+Zd)uXpU{GU%JK82BMI$=QgjyyMogKNedU1V6wq zxAAZKFhCKfH~oiNJjsIJ01EUAIrtlR5|UYmtRiHA_r7MGe^oR{xq+EvVj8>aF?E9g zhz+t*aahY?&H4g7*?s#r-86H34M8e>z8^>r+OBF5+y;VV)lEjS(mYR8nfAJNx^0OW z)3^-_OiS*9Aa*iYLn+8EBnE7|n!i@fA(FKE!!}h49mG2k;6})s5e-?=^Y_Q0T-Py_ z*Mu?Phn~nDB^*teJ?}{;e(1oji$0n=950XnM}SA2cLd+*^+_D&D8et&kr4Y6Rm2p< zZ?*abWA-<`&E;jjM}5&G+kkS(`mf4-u?5ywSS{zQVhmPF;Nk^^G!DMP zQh(E)i@Dawt|lRS#SwhO0=C7#xxSFT^R+_?AaHUjlR#rg8I>pL>L^~?$iuY!dO=So z)e5+s8zOTP3}!5%yEO$-JCG{L^O~+%HqdiwALN^&F_C%#fxmXdS2XpTD$40b=jo5- z0%aS!Zw-uW-;HYv!woi&l1@ZPB8uF`+pyWmC>KWLAeTe0HTn=%J{t#;WG)$>Rv3eh+D z>cX?>+patL?VBM+5K8$W0M-{Cr=Hpq#8ZbN~;4~)WnrsLfxNwuNMO$I@#BRB@5Xk%q z233acB=Kx7+HV2A#+?#L;X67_pSHtWT+rS3yk!L_+on@;!DM91al7!5Y5+f6H4Huy ziOI)0SRb2Dap+>r610O?Azm?h$#1MFh;&DSvV68m-}J~i*U~l|t^yRA#X{O(6+3Ge zdoLrgG72+n-B>sf#h>rp8jDiOeg}%02AI>o!hse`f|@h6ol+^_@hK3Lwh&eBtV4;# z{ywlZVE{2=mpgHzTsxYlDS^sDB3EAe>ZlTEk^S<$nny#oec*b}8Ias>4+s~^nP6NR z#ab^T59%in5@a9xZId%HdM)XuhL_5u0Qk!lCU^5Bnxt}Ot3V9~HbY4*2xJ~}-9954Q1 zGHy%i4hpoZPI9d!UKprrm~ zgcGNmEH3P)j#29d2gM0$Pa|`3HTb0CtB0emC#a`(!LLI%#0fGg=wOG=P(rj0L(kbpIpqaOekm%%;B4{ zOiQ*{7D$RlUDY3ZyapiDRR!*6Qz9lUuOpe{P8@=G4b*}Cc{?pIh4L?sn(317}zsTD_3!m}#CgH~tRElD*% zZzobY=no8J6_1R$UjY=pQHHzKRt&E^9T%s;z9T(&L#4k&BC-)%4hU+llT)7zcv2T6 zC$c_pbXB6>*f90ky-tJ~B|cna{FS5)WPkbm;p&?Xt-~e1*a&#fQa&14<#kQ96;rF_ z`WBAWU|Y8e2%{SHZKKpLyR;O_%i({DiNRkErG9S-!7ZCH z?wTO9UcMu2`eUugvWIk2PykC0+xoHfswDso&6&p7Vlx8xR)b0r?VtT>emmj`VcFyi zi)KX{9Vo1dmRhR~4Q7jtbFody|HPFi264M9cG(cIu946wkh;d8e?4W!{7rZmK^D6i&IEDh9$JIJqm;Y4A1zQ#!(EDbkL7(YCD|x70KR%W9Eiser_3>%vD-(A)4*>f4cADQ3;1_30OVKRG2cfFN_IZg z%}3!+(qM?|f_MlMEs&=E5@DOVu%k;6xm+D)`cfpD#i7WP`vQ!>vMYv>T4s}A&=%0# z;oqf;3Q_bBu06Kt1!S}sU#K@#o!yOb0ggUkV%NkEr<`KTlke=R*71YV{k&+M#AYDj`-RxPH?e2*OP3 zECsMv2V)nlmxT8`var|TC2wdvfhcBQ*Q?C0Y>v5a;ZR!#PNqR`l|{hu^C=sOs2Q3$ zH?K2;ihQj6&H-wH@mud+#-@{8vp+k!tR3IVn=xp>o*@Mml0wr2BSl>m6~1?t#HwpWmXxgzW(+o1$9MwsvD z$wY}I%M(Nc-F|uVCT*``-@=r#s1oksd`^u-`q;blGpV95jUevuhU@0l78xJ+68^zN z=3N3Irp3&#!$!x0p=D-q17w_cyW#^m->8+Vr@2d>aZMYPId^SV>rhi#cPlx3RbS)F zE8b);>m>jYIdVVgD00ViLpP(J+MZBGFzayj{^h#}N+yZ;J_a@Yp>wfeJoKY@w+JP) zSk8Ju8l1@ifnOJw2-1br6hV)OOuAknzG7S)MH__Uh}`WJ>`K9lb0R9~+Ns_7il`dX z_mf2V`eU*Nqud5q3UT^Ezw8doo^YXbC!1%5pr|?4eMqH>Eio2+W^5G%9(b7J8oFXI zFqUfCHTXF4AvK&-Qi%S$$`tp|wUqzu!Wmg;iFhHwb4}trK3I(a zF&w?%zrCFk=%A}V-n=^R{#icVs>ZTl zjJ`hR#!P|$=3LPE9_{UlsNIhXU*-yskhjrP;G2|x{}rJX#3K+o#ci&cEATlwI=gjy z4Ik^J1rEw2^ljaC3vxEtrWeGe+#@%|R8oGWZ@UCoz&l`XU{fSU`o;vd5UC%dQw+ zf~B^0EjBl^V7}m#TuCv(C4Tv#0HsBIWHXbnfLW>HAP*5-MK!|+xU3~=n_qm$W=6gT z!&_*fNznH_W5hr3AX&)K8gX;0*?gr20-i8!Tuxor2Y$hABOJmZOi@Ea@9y;ckq1@G zJQ5krY|d+}Fgn}9rQv1DR&#T>-FgOrdr7W<#B@#(nlqjVa>HBK0uSTy=i$g;D#U{d zuk#njNR5*qumi~ogml78grs)f4{R)WU4t@~@tSjZ%6`5G?+spo$>kWm8@joq-D-hT zaH5#E$K}K+i1$KBI*R<$tbJvqc-y=CUuXFpxTg~p2~#W(!_WLR z@xbH*435@&T3hK=_33@c#vuiLvU<29_4~|zjLj@YgU`_u-D$(dtSDf12o&FHM9mmK zg}lz*R&o1`1`OfdUL6u|v^s#AqAF-BQWUXAWvv-4?WeU(+FPE z3}xXq%abGhDr{e#TGO;cR64qEUz~mk_jnlLC`BCAHhGzz&a}WYMo)Y(6 z;1S>IivE?9i;9f;g-HPmspAfOrWZZ;#yEq+@tBq0JBcz(Wg5N!yC@(YaKb(>J^B;U zQ7Q`w9fR^_B7L|lNWG~erW21+UD5;n6_K(^c)bt~Sz}8->=(tlxXJO=#*k#;Gi-Tf zaIMZDYRJ=-W-+Urju?X_NNM(KUD?_#N;;?EEjw zCwP+n$y4Bf_9MF2GzP{BmDL^$wT@-^RFD-aC{w?&s-&E0z4f})(7Smp>}dqJ3Tr`` z@27=wh-gl+0P&ol2^X-F8|%&(Wd7KGcYMly=0J<0aX;1Tls8mD z&FL3g@1wM`kUE9Gms3*$w$S6MC5RcXl3(ie|HdRK(x<5{UXE|(A`ELgaSDzr994Mn z*rUy(a3DK}m?^mE8;rxZOgk&i>@07D5_vP}ns|*jxf?QaoDo9<2(bscM5An?9odWN zMhAx2+l2RjnW87IHGc<#p2+K}c{3>5{mA|e4_INIqh9jBTmUzSA*>5aavzV?woqq< z8f~Wfjg}>vsEJ5BZ3O45@lUg_ChhC(ssSwk=C*1on6a`P9wly!-%ezA4)PcG4CSCJ zvIJbM0enH#ck>YB1781ZiO#I zutoD8l*s!6Ju1F)2@E2!1CN2=b)g%uaXa*41GpC(dM5`(Tq)$rw}k~`y0PsxtF>$b zo!7|t9Ge&I2#vMBmetQ*q9Zb#M6Gji9|l`ay9B$2HJo!*T#$z@W%HE=l5Q4 z7WJT)PK76PcHpePlSdI!v-tfj09+R6Ji888rqO z_=2$pU;7U%m|-MU7=N41&Bn=3$^LZPx^8ajLxv>vun}csoZ*ViZ)GiTg^JSY2wu}# zUy+1hrM`nR$YnQZl?f7Ek8==DE2*f!C)2#{(|Z?7jmImLmn5gcjS%ew&og-aCeg`x|%vxZPrOa-Zq;?|r^ zPn(8Tcta`rjQdOHWPL~hRSBu{VfgeUo*gc=X~nhn(I-l7Gf)p$OAO};fzObsqs~W( z&8xzAIf(y<1nU>k(TO=1#?rIw%&0mY3qKU)E~R1a+u9==6vq5x{G0H-u19n4t4kH_ zDzL0Swu3EYE@`lBGuLO%KU)o__XHm4UTos;YbYD9G(1-HbMImyUlb1@3$ z@&lpdOdfER42&gQ-^%E)?}n6!iXc7aUnSAFJSHr!bgjF4SKa2yicBO1vAMv-AR}hW zE%aRnddvr{(!CiZXpXh`u4F!18Ai@C$$c~D@>-T(ptw1Ie{}!i;pR&*pPhbTgqY18 zS3aH~`1XY|i|NOB?Chla(71;?y*B?#N5F^)2s8yw8}gh!&5XtYVSKBPU)rj_(?5<6 zRAC|84y`3fevmKVheOo6BE;pn4^XP(`ihdnr1YAto&~5tsfJ}=#CpUJweZZ29#}+IG^-4i& z2*L)z;c_6Dki$ZQ~rMeUj8v0sOau#W?iK(e{(N)ec^W~G1(aJ3d7Z}(xgc1 zv9EkDA@{Bv9w-_U2|VeK3&oNZjz~}PDNUmf2 z)%qXU04zu2-3_h02|R(2u7I3-lky|xl^__vDwziGyvNiN;Z^FGs6{!Jd!FAxjj{UQ zujIEy&VDWiRfCc>L$2Jk<^NL{& z+%}8=AsnUQ`};768#PHqSJ)- z>Q71%|CphMPEu*&j$2rLLslEnkxdp7g}ovLHS>vzIslwh*~-y`v| z>rU9LM~MGQb99+rh}gK1x8HdUL^d=p`@GBxLxCf|aY~Ezo1eFRu;9~##^O0_{Ga6Q zbWFB0r~17;%PdZt*QtWnW*4J<=s2J;Rn<4R&dlN*+WQ6^SOjASC~dk`~0^s2wi zeDcEp`ynBVooGDuq{?=rAt%1i)geVy&g#a3? zPg}HbwEVImJ;fWd!gJbSfc}Vs&Px4t*jal8m@rF!v$hzjPMPX;_-=wuNcjj8 zMQTs#_9|32$wW(_N)s|xH=1IHOHla_LU~p`8nVIj%jHTfo_$IOS~}g8p~*3SQ2;`m zkn(!HrFRiq2Ey5|AI?~;GfRaV0l>#&soBJ${AO{djai|!cEKKV1vLt;h@1jR6ezRJ zj$sBq(2fVhZ_-TG__BKUCv9;gLl95rl2#~|gi}*@6~RMepu@l@=34wFLs4zkJ?T$5 zf_o<3f4JpMb1{gIL`Ol0O5n#$U~?yBC}QZfv55V3#?^<$de9BKnBfUH?`{g3@D}Y} zvup%ZTWN@ROz*<*09MMuH=s6WvKM5Zp{Xjn+GJwSXPsk}MXnIQ$u<^kyAl4>e2xGV z5jbrl+pb>>JmfEhIUSO^JX(5tSDl?qYKh>}w9*7xt8Xs(0Re7I7-5(PL9rEV(&FGK z5^n@6x&tluI|YqSloQ=+Z&C+gE(!QEo5t@*f@A=tS1L<}Gqy>YXSJk2j!6jBc& zuq|+nU>5xu)Tj;cqOg{NGO+x^zy2eX_XS=v{M||dmqGDrwWxuEEr12Lg&tr;xlQqb zB2IQQg?vZ+V$*@p%x?I)7B@OZgY%{tfqSJz%`(ICouB3gjjjXg3IGqfu zP}CC%k@1SZ=;>vri5wH1xWi!|(;!T9MOw8Ydbn@4-fJl~105{b*V)FH0)bAHH){vE zDFr10md*duE*2@np)H3#^I}8BlRTt0F6t133K&g8C-ma`b9d@`R_O41aA)(5sbA+X8npeSo)O3I$qss99B)#A@0 z#5Bl}E5|5)`4PJK&LQ1&TS(gFCi^~?1-%;mzr zcc&I_5O*jrbDnhxQVj)Cl=dJWBWJQ15!Ga(T}IW_jEv-Uqd~71yeCq&|5ZRvq{X4g zwAqIeFR^34M#&7dbQt81xT&5wTN+8hx#isq7T(Z2CvQIVsF7gRo3#@0E5S)4T`*U&SK)>BL7qC@=( zAC|Z@N|Zi8+xbgX-`F0nJUSE_r z>sG?v9Mi+H4Yw%u^=$$a%r4sbF0$^(EUe0qfhr)oSFBQt3T0!%<@^HeZ(N%aw%EEo z=$G?6QEE>@s9jzxA7PfUW>gdFE9%;$?0{1ZR}(WDW~0shIl#f4jLHE z)AZ!$8W!px(bU5_5dc(EAC0&Hrnp>BDQO^7K(n1#6KG-JyJmWp?%>>_pwR)lM2c3{ zgB8>?ZmP(o28L2YjoFZI&KinfnmLNpqYYuqNiy&YzkGflw zDJ;z8S0BY(ar!=pEHLwIKwb8%HL15fm+wx#>OFYylupI!6!ds^lVaz7$f|aH-yBH! z4Sws54YUjr2O;yujCUg~wJw3C@}Y0sDv+T)BCS#5)EI+Sqk;k){girNPq${6Ef}K( zk!_dUAVLb~#%?_6^6`EPK6rc%9k<$$54d!_dO=l0p%N!3hmn4&4)r=@aKoGf=2R{& zvkz(tzg|7c?iWDZ14b4>)rb7YIZUBM(p#3TDVM>w#c8oUrR* zPMFBOl$Zl|(W^n0?3%*{L>VsxD)3V>HHHxpX>e9gZ7O)Kb8sYD&=tYzHE?@n2@4(w+Jii?Ti4LLmK0!$w&5)#+qTRi5`_9Z*bT=qs@R3@qa=Hte1DOQgv6y+Hup zJpWjJu2SJmOw)4dgECX{gAgZ2IR*5l(&2h`axOUNoMQGyYsZmIx7y?e9=x~X;QHhV zu9E&P)#SCnu>f)&@Nd>Xc%G6tJHLIwz_kfhq&jX{E^bJXY5Ur_s(3$*^ypkuKx(8c zbXUnZAG>TH)IlK6H+WF=vV@B4zlB8)E!4J5TOvkujD$66aY296sajprZo@d{NXlsl z%jsWFO@_Wca09Y{Xm+@$Y1XfJgLd++-Yq7WytzA;WH|P`eZXVMIq3~H<@FiZyRvI8 z(2i0d{$ldUFwj4|exkd@ai%ed3$W2TXJcwMv9^NG=I@F$gzteBw;(Pt7j7Zvca3$! zA7Ht>j+?zxo{qi}_ljFtQh#Q2l%>j;!R=g95SELoE!+H1zJE>3t<0p>#isJgTgvHv zE5gk-X%m%A^&d^{X^b~OB~_nhenf+dT)#Y#^MpQR-{+dV@C;S9#C8}02_5LzNrjSc zJ*o?KBOn>9zAh;QtZl!F#sU!8r!P4W3RQtVF$3t~;;Hx&-uvkGqFH1fcPL;=_DFKh z2`&@>uHe~frkclzfQGue2Oseji3eel#L2n4!v?qoP_&YAq?^0pptvP^*hqKIQ4CJ` zDi6P+$;Qy>xp9}pX}5ozv+zeEt?|>xsq7#!5RE2#E*#gu&3?VL*hAsuR!N2&mQ33T zRW@}2U9bs>8A4u}Ll4N>ZK1<8hTi*$LYCN>b|is{1&Yt7fHfN6jq6IK-TJ!DvK=rWnRoBO*Jmx~n;V)fodr@#Imi@gLne#O0wtzJ zRR@(5mWQuUUB-ISx*n;=*MSO~`XWw@2@zth4R_%o%~%FPW$BS@UoLQ6d$z<-6*APy zmVs7v<68sEvSw=*zR=}*>%LpB*8uU8L4MvIX3PC>zvp{xb80Z%S1i;`w~`m&K$8mE z>RC`*OF$4w-{*+_-$FQSeVL*E_c78^G1?unt3DcLxRh6GQTNX-P7Sz`I9j00Izu&f zj#8d92%<(T+znJu2tKpxmD%vpaije88*td--Tx#`$k_YB`HqmdC{nrKs_zEdk#t@< zY-H`D5!gv#0jr<@sc`$F0AL^XU@`l50_-hnFFkmrt4wTowDC&CBrG^)R#rzoa^Dvwo$?5bnWR(*v)s6MV)662UPPFsav|!Bq03DCa_d^gFOMRF zCbLv0q$12py~71cA}!yXFngBO+SlHYrKrkNBq+vD+9*Fh zK^rKHx4jVv0fCIj_mMyk61l#-Xl>M0*AC3^JoZ7$Wh2Szb(rtxH31oWtKfX2O|zBy zUwx2fkf>lV4NS;i<^)$6hg)9o( zLJjPAA(4@<7umwv2vqw;_%X<5H>`;0L4kI>z%fOB+neUe2`O6Z6BX+r%}i7oYS!%N zP1CYyS#4HYnGk4o4Eox&&b-kz4MB#l=BAxGF^<CXT-S16N~$*3Z&}q&Ej-voXjY`9tj8WB&e%hoZ2Hsz;Oh zz&s{@>WtikSozc8NCHNLAu35ga`38Bx27(Cut~>e74G+p!)>a1fPz_&c%G6Lheq3v z=BNesxy9yl{8fH@+p9*6^T#m~?vuECrz#gfPIF>gN3nJ+;rU~TDKC48yba{Ehq4Pa z?q8nusZzkf^%rsVFrS7#xWcYj?xo|rslQAzt53FR(TkxN!Az|fh{x&f@NPZAV37Wz zGdy*Jo0^Z;;RC__Y>R6h;zvdZVeuB>0FKni!ET*38=?)_io+&wTN1m4&Et{nCPG{O zv1EeGJYf`4!vHN%Lp3tY^xE?r5xi;h@3YAYWHfk?NjZCq+DI#|Y`(xZFIC?5+$xWJ zrb=gx7H%SGtI&k)oRLC}4zZZ)np-G3In6k`+} zWdfB>w;n)Y{Qd241XSu117q1Lmn&wQr*Y}WbVNa|i31L)ib%SSbonKR2Q)q2xMA03 zzSK$;$pkUsdFlSjSxq@DLa7H!OR!N6c$QBK!WcE+Ha*Xx=}Q=eV&%2XsRo{49x*`1 zBNm*_cFM{P!F4CBQ1J`x%mQ-F7qF>GU<_IAK!;kcV=8XPEtQc~{(4M&))FQG`h~1; z=t#WDW;O}Sb23QPUV{19tMIwk6v}Ytt=I4H(-XOHS_J(*DBz9G;}~u|vZ{EKNcqG! z7@ZZsrSY#-`BN}hieg-`f$zmyv2_Q$`0GzpHUA<_$-rjc7F$v=-%XQg!9cS(>RI*? z0`^r$e}0{gNPL*sn|8`xx*_F`6}hM0tRBdz>hn<6S!mUhJJx|aRvtW?jq^Ok_qewa z`G5wuJ=q>*qt}^E(|sp-*8f_E;;l;^mP0I%QoXRxi`k6B8~-`qz#jw#JBGYG{}(PE zgeKHSfuSJqHljcX{CVr_z!w9Sc{!yCTmxg1_36JMd`$a1rDq18EbzCQ2wa_0`DICN zvG7~#5)=H-YaS%f9(x)>g%Cev1x>?~bky}ng@8Hagd;z8`aU>nrgl*7uLg6uld;7p z-etpDAH0!It9pUmc$yW=|6>e23!l}b!se3>T_a#zbo@ue>8ebYlg1lNyJ7>Zc@mrG z6nhURHm^bm_u^N7^z?G>uZ2Pb=eZzLiK-3>cED?~b=zXVC5~5Zdw?1w_O!Py?I5Aw ziAlJ=UEdnu$>f0*(M=^Z_Qus2}!aC0J^h?X<6EnZAQK6OS}&a~oEbM(lKnwzy_Q9-?!Zo!PR> zk+kr?@9X>*bhk6iruFpOgSnVF&ER7}^h>(2yQGm?YujOHv4a9YO6JA~nGU2S@}_19 z>HHQuLP>G!lz`HMqp2r3L)GrUbpQ$jD&b)h!glNH{r7TDsX=BzW*DUBL-_)^c30o( z>W{_?4mr289^VaCYm#*$x0s8E>p_91*6B*jzBmkfF^n_`-Ysmqf6oXsDt@cY*0k%t zT~&2e3hlx-8LD35)+VaDuD!-THR9geSr0(776sjN^W{jnhOpCEbG)*t-9yt%l8Upy z!TuEYM4*Ma2J89CngA`V-vSi*8VAACf-aeOP>8$QT&X|eb+#=PQgbbplV$fiSQe86 z6x{3LHpo4utDL>?5K^}&P)xW-(71XrhQJDg4(CCts%afd(F49Hb(fZU=z~`1{XyFN ziF$s&umzkPP@@)ig#L0S)|QEkW?}q*`Sy;XyC5;MFl3KiF$L5srt6TKgINoBO}+%b zNhH0{wdESI)2s}4f7Wa=aHr7X&>w!8`Kj~J$q%UG0!a=!wXl73J!I&SM@OF>j-LicFkJG((fHEaaO|h`j!EDfpM&pJ|!5a^+*f85XK3CvI;GXv98u(D4#u|Ft z=WrP^VPL+|KHg=I849B4eE4<%ZDLKHR8e#Xnuf^b5?*oCX6V4WC`>*50y^}j&goq6 zpM?eia^;sC=Z;t~NE5AAeRA|cn3ksr4Qu8Cgj;S(uw0(qKoA}z>^Ik+Ph%_ zcur==mY`_B6r9;Gt1W1}4>ctX|HFD7VJs4ua2&wy10o^vw)Eh1aaNZqM9$BrP5282 z<@m4qFMMhLy!6J&WQy)6=pBS!l_i-#G601XSzrLJtxMitYt{Uv^Z>zm&97&5&G0hx z%d}c44X!c7{?|uxgB=)MPNWW%paTo%`}}r2As6F6w_^1*%_Ww*h%UEfj8PFQ;P~NrjSjEG_v8GCmAGt z@Nvk_TbS!Bq}z4WQ9M)PbbCghj6ZXPy~MUXi@(GL0wa5^GJCP|4ZOqm02l0OWE&5f z8*nVn$3Q-a75!wu!kfPj3+&O!yAR5cSuXvSVTv#?O&7)oK8R#}uR%2|zF{ zzjn+}e(Bw%-5Dvef9Y%3rz08s(@#hZzDA z-j1F)?+k2<3Na;7*;A{X0cQH>d*Hn9ycSM{aJejl)yyjl18C1fRbfcAgQ*o>TipI6 zztsvm#AUOQhJA@>3mNPG7%3Ww>oRo?`0<{+`n7?(bmSpM$P@)+)gNp5h>$&x8Yxi5 zebv?l#mqJ;VnZ{F1{thh`}W#w`4#~=_T&}jBSQ-AtF9*D(KPnI-)g9UN=AMujt9;d z^EFV?Y1@LcOA1j5={kGm>2S}52kcn0@k@mI^|w69JpCK|_1Qk!z@tv8=?p?!1A;VZ z4k54%K@Pbvh%2E~Q~{c=L)Kh>@|*ZJif^F};e^INVF0etR*luEdL|(^M#}2_Dk~#F z19ZHg)Sxt@zq zAoxFpj!FTACv1h4=Ojj=P%DO(A>`E%hc?HOx7=fKD42##lTi96?d`pw`bqM!;>YRA zU|aB3-_sSz#PS8$-BVd=`5->WoESCvAoe+g9@{&FRNp_71R+0(F5a=VllU8dKimG4 zNhKqcx5+j?ER?Chc|Zcqq&|jU(_`15Ym<8sBg5bFEZy!am8~PmtcZ8+rh2!!(!?&uXW2I9ZaAFC8vZN`Bt{c3`4W)(hh-?@J#ID@uq+Jte% z@;>t?#OhWj#py5nMjef;vS$xr8KM9L*&c@sH@2YFqVZo-(&agK5o9gD37XocAdUCt zJOrGjb$bMghd8RZC7Qli9Z)1BB}RJmy;>bnB$dOD0XcNZeSWGb+?pU_bSBJG4Vk1= zX{KIP7Fmy6Hh#Vpp7N0qkcbv4;XMm_mt2vr8lX+y^79G8ul~oXhg>WhUb9`hgpC;w zVmZ&pj%sz2ctns3VtHx=VJ`|V6Lsf!)g~MgDOtB9f&G|^%Z36mtqE^o?gy)!ECsDD zCelSlbBS>pXKRp)&ue>EdIPrHxm9I~z;GiD@>oQQ1CFZu5>MTM6k?$%}`O7(^&zvP@ zJ!L5r${3Qk-M~0_Cg!G~K%G3&idnu7;=NYjA_V=S6ucAcr{DYR}#;WVQZ~umNVfq<#6r@G#;`}EOQuaHODNz% zDMcI(@bBQLGd9=SYicYlUHhW58MQ#B*n z8}aA-AIQkbK69%nn>XGo9~5!#pkAZbP`pTW|E+8aF;ebJ5w#HKv-yR&E0YmDl>4xw zM4JFE#%v}!?i%9Pp~$QQ?Sy)e!p!db6(qi-HsrUyei%V{=56WZ~=161>pO zE-EBMu1ZF7mgsVxtsG8sLG;}$)hPuK2tj+Yp$Aj8Os8~f#971$fjz7>)85*t--U*Q z{W?-L#|jy?r|rQp&QD`d&`a+$s*M0ywHM5cF5B{7RpE|O8T-+j%H$Jy?_(?sM2UA! zU%vZ-hF^-t>j&%F2W)Ls)^==JJc0D{c*sBkQgRWYov-GKdxIrmXhBsQ(pQ+Ts=5z- zr%>s^PdSrtV|>^bLi#q%TJA`i>f?D0I}92C=Dd-kf@}5D<9bW4kft03o2s|k?;iCT z?cAlhIJjk!H?GruPBj(fuHNEHZIgEwLYKszrw>XXBjyzGWslhdY7}g)tEN(^H%)ut z^NS(>nr~p3wiU04;bW~?t0QcqxnKi*UFBdZ&(_ce2EW9p<-9Op3Ij~x{w6vyHBBpB z1JlYJC0FRtWsljS92m2dv`wSP89O{hd3brja%+0Ilk zqvDN|S}y3}>@K3I_TvS2toH&gJI702;93brOV_j_0GTb{Lk#X_9;nzvPa0^`>9G2= zV*S)}*!q?Rvnv5GQ=4BMEm{`P*VlSSbaMjz0D`{<@HmsRoYL4LLjGybUD5&B0RKM# zz|a{%2db`LK7s7h<(szpiU0sUj9(Z?o!sJ7;A%0vy8iSQC@1!ixG;Gco#(GFRZqZ3 z+a!)dUTbGHz1_jBqKP4ivcZnbF|68{9fp|J59(~)gJeyhp5CqrU3R-{#2J?S!3e_H z^#KJ_*rY9*zL&L(7M7%;6R0Rtappj#h+LZ$4NSVfdv$Xmr7sUto|XIfint$2xU^IES^*K@mtXI^pNV=(r$iJ4X%9*@;9P`ZW^}@jN7#;TgLJrGal);A>471Wk+GFy6TZU zkKQ%YqnIRHLkxJ@BqT^?74{-ERVF_YL1r)vg>0Rc2?Di+|Nmx;rEWbXBEohkb@+L; zrHoSNfWTF9t|wtg4s&`5m2+E^k(}wkLH~>XFupO(WfX%UH5Cw+kk<;WaKHo>FvK?7 z(ihDABmwZI!ng4wJDX6Y#{7(L`3jOMaRTEkP(q7fWB(MY!&onAj2<+$_`IknM{}gm z$x{~9&QC8*v1Ns*&;ub)@Z3eDHy(A>{VSZ4N3c4K!v-+oA}sLPE)Id%vOc)O%_apI=8 z+2#`e8e!c(!%ifZZJTul{;=Pq$cp$I_oGD`4ozowG`}u4azGd2Wm;pLDn495J@M#n zJE(byc9LcY3SwhnmzNsL#bq02f>!DKscZwMuf@KKj7FS05fT$_f}l#+SLW;Z56mpl zA`LLA&LcG1^3sTYnuGPK(L4lC8b6@k3<=fjrqs1k=6uOp6eR&7M>hh=8h4FOh#-?c9`L`ZTTGldnW6rmi_!hXP1ZL> z7T8>mIM?s89EM2oXVGC`7xLh&!V=lfwvj%@ZY1D9*g1m zXchb8ZUYYa@&5|TKwwhNo&#C;)Hy&gcCXIorsP-kV<#SOjc|2yi8AWiE0!jM4sw0p zn39KOCoy~kz%wZ$P5`R`k_%WRNydu;1~myz_iCMP!bCW-HX?I5Un`G}v9GJEB{C~HjE69TrC z)JY4?0e{HSxWHOKI|Pp&3d^H_j|Q$ehPyCX#tb}|dvO10ryfDN>9ki z=-~U=A8 za%&B7*f7RGEY=SUXZ!rKo5#B^2W_uzL;{croh0KI$@N$3XXQx-Bx)mE_iCxk z4WK#xh{c|VP1A!JhF+Wg{lWMx(}*r;hJd-pA6GV`2IAsM@Q)3J< zj|HFRZR(Up+b_M5-|jU2_IYS$pySlAwkK(FpkpPH`pJBsqT8ao;&lwzpM+91CVe zapX<%eA6asVHIQCg~fKC3ArFJAZuGHjr zFqqO1l~VtOLW%EF;E9l_moP>{L$1c&F7AT}@+?wI{p}QT_jFP))%O~iFWZCdMwBme zxAX~%CLbC7{0YH5UZ>|)eNHCRwAW0%lk-HM4c@u)Qt5r|Pt{|4$6G;01)|Q#6KV13 zh;&d5qO+`83?Hr;;oath^Jb5uxtI|d*9`(8Jc3RJ80E&4+~ol$Odju}b2rqDhN5*B zhxD$vUlWW5FdUbbDo=3&rbgJ@i=)fKR`;gyoHG;*2PTtV5DV@MBUF70Eafjf%cYos z`PROzpg+hyv8#T!c71bbczxGkMULewa_mx)iv+|7J}YETi*QbuHajhUKK$l^hLSwT zg)o3ueo7plvEoAyLkBWoZzZ6t4M^W$Z?S~ZDckGeH?C#q27cS)mmP@~isbZ9KO0zF zI`86YV6L|c5wUh{g^tU_!mkdvXKvmF33mPQP+NQQ0e+@w{DfQ?Zo*%gPmbk=uBF#> z2S7(C?@9f|xK~TllyBZMdbBj~lN(1CIDf%2A zagnKzx`N1{+rG}4QDO3DvbrOWRgW>bjX-t>%zZ)@A-BR5$%`!in-tvCSLpO823#E{rL#8-=-x|A6@bY`s{4doJbB11UZfO z(rT^1t!|TS+%*x}aQ!PEP#`V3>z?CAsKHc zEDzKsO|E9;+RQ9h)&IlJdm@p4W*ZrtT;dpGx^h#Vq+P4BO|Y6_D76VY%L<`m%U=+k z+JK^}r~VxcjbHH6fanc~zZ;NN>?m)74x2PGDc$7v6gLg_P=VW6TUcgH0X^j5pWCfQXIhypTK2LTTG@0J0YiK2U z4Pm@;@1!Qrw*vbEdc>EWhf|sk98O!;nCG&LH-QAu3U9V6se_G9+XwnHv6);;+b`K& z(e&D%3p5jCb>eppREV1jMff#h67Gx#G(Z}n;=WOo=IjP=PXV;IMm6#{jr%J9Yb$%I zyk|s`{H5b9A^Z$C5Yg~A#`smLdUX>eX|l=cPArAAmHQ(Tyh{B<$2 z!@gxP7-H&*kh$MJMgIa{j#N&ySHxbCREVwMgh-wGY7mAzYAk`NM;wj(_grNNFiml< z*@9fywW?jCe7BPk@^^&XnR$0YdZQq#Nbvu;j7cNRIUg_AV|43yV=f0m9VZI^@oxRVrBJ&T6uAk5CVfr zYx{UYol$Jd7$}C9KB{%7DX%eAN-}6is-uS|GP`J7$fN5fT>~=nNaNl~rYlG@AaT|o zuf`U!Cww?eoT?OVoSP6~3UVZ?ndfv-PHeE7YQRROQ&z06=1*|iB1Qq0;nW9m-KtOI zaPVQ>?`0S-GB%U&a#eDz_hk)g>5S~!jaJkMtbR=;pD5)1r}qXKs3FYme-B!?^au;` zEcbw|y3ObG%M;I~siR2Qz_-^wU*&)V)vN_OMq|E714c4@P}(1oltBYH;U({YyO8De zSI9SIrFq|#XP}6?G3vcVI#V13l~gc!f|&+HtS0c5vERtllgVu?yTG$N$XIS6_3|Lk zD}%=guS-8IAvQ-V=tS~1uWK3Gbr6L`D04iO{WUs*$6 zZ)w)LXidhT-Og^KK)>0kRdK95Y+Ycn7004{Rnc7SjWE&uGw@3|(g_cvk(8DL015*A#*cd6sfhdzeEJ zK>+C)B_U~3g}mgyA26fJY7;w!`TmwwC@qEAYPcA#(!Bk% zhPeL5u@am~!ugU3owCf!7j8h8f3o)ru8>yJxug zgWpCI3Q&k#%wV*B8V}guH^6{+W^yw2y(atzIOID93L)k5>%|4Q^?ZOA!JWP(n{*C* z-w?1d?1yx^&@o}y3VWu07wE$op$sswHH8@O<;bsnsM$Ue*nD5lXvWcaDbh7>Kpl=? zG~dG_H;4F*iT8bmZGI=$FNiurNS7jB?H}t|jN%O_hThgMmf}gz2V9cOk3j_z)crp~ zPf4$0DSyMOjy>z#{b%MiaJj_VLlBF)m>cL)7r=xj%4g3Ks+~vh47+gdD!9(Lf&T$G zrr3RYbo4$W3aN`#9rwKvkKV(6)y_Lh0L>9AKSUiL+I)t6I9}lsCVX>TSd_Noj`gz|&j{nK&#%H&nPvesxCud~X_%J=u zE!Ct$Kq&0D-p#a9%uI&!a5~hHW6JR+fXDYm#kh;3DHFj{u&dq$_^XB)Pz-Qce0F0 z!0s}qDro`-sOZXqnC-Yz-cdXGj-NTp(Uv@xf zU>Wz7j}Q^G_MY>GUMe{riSjj(^l+sFk^fb&TulEe=Ua+@3*K|{E;oVZSDjp&&^y`8 z-9YO&VoZ&3yCEip+5Lc(iy`$5g}{p=)H}#>_blsx?qOg$^I}&}o5?lx;D|tJi@`lA zdNA~?OE1A4Sz#Ui(WQwkPYBu}#w$rNd zR7^&Gl>V2@aYECZldg`Oq*9)=nsPSO$oMoQ*b1W0lIXz^y`hsdDl7<*c}gOQIMDlQ=EuT#bYjRlAFkC z%F16EdimL?(6`Fyha)LQ&Vc8cmekQXcBzaN(QN}=?2htQg6uRvj|uq|!yg;ImA=R3 ze;_Y<0J04oV&1t7_D-j!OVh>7G9MVCE8IuQksu+WCU z!vL^+NvKb8k(KB2<8PQN=+P%c_aFX~PPFMMxj;i@?xrfwuFQJZn$0uG0ch1)$p-2@#AL=(tQrly2LMAR?F0OsRYA(aN- zqCw{RN#h%aRaO-3kDz)#g1#AN6FIEMfS0?-cY4~htkKd=S>NWqY`Ua*gw02jjQdtc zs$;v3U0uTyv98Zb8CRTYB%qhT%%rSoBe5pJ)h6N7iSQ)POet5P0uM5QrQPz~Rs7%c zSm-CaYs6@gEl_^B*T-L0K3XU5@iw_s&BC5-smFv1~y71&^8WDuzUC9BgV`Za z&-KMLvJ5X$aMx7UoQmZ}2)X@w4s{WhmCpcB8+;puY!A@*XLFkFEI4&r3c;m-fmCi* zfPrS1s!5`2`icP^!_PuFU9K?z?izn-nU?G(mm<7A3E`2%$L(s;L}JT^Iz6p~Hi6`e zyf)1tJj`O*&hNjy+qB;fA`S~-M^1vjfa`ng_105srVLtiwd!^!Gy+DYXnIizeht zF{-!oUWwNXPP-j^3Fsk?1Vh|V5$o3Agkx?n2kP!CH5uICIysF?dA|N46UhKUB_E1XWS)T0c0OnV{8ca73x8u6*p% zj80KeYa)gE`8`=KF4g)@X4#2Bkt-zUp9AhEpjigRGZFzlj1lLkFboqU>6Iv~2?PGD z#&C)`)N26>LDqfM5Bq&xC^5&j@C&5agdY6=nxLU?D5i>$2M#y~+SB+^&aRS3yX8D1 zI@bFVB2a{Ih8^)_*}_Yx8PIikC64PZn*SE)970E{h0lV%-C!Ds2m5ZjoXT+Ec~@HT zao9H$O3>!LlW2QM`v#MY548wCyI(CU$b4mSt>m}at~igKwrV1M1UJd}U6wqo?r+zw z<}7YX#)Ht1g``pWbL~xpz1u#~=SYKW8_m5QSW&Uvbo-6ZV?}8<&T0zYLGS^7Uk}~!bP#c zoZ|~(3h_#_R=33%VG*;N6{_ zYuHG!J9Oa1h#4PbPSNoAT{2&nhRXl8>L)wdR1-z_b5Ajz;L^Y8?Sa{MQLNDL$C`g= zHG|*Eh1%j{Y9x+pGvSZow#L&oS_&TDVPFQ6MQ0LOs9@KyPN{~S*haM_4*LbHRtzJBoW5m?hk}z@sT=@Be_pcPip3x+Wk@F+5uj- zWx(xldqus|=C?9v%FZNAkcWA}ll**?R93!IcomzM1DGv5pUK3ih>3TC0Yh9_voRGu z(7w3VbI*Am;{!RHegV0SfA~31zx~jzV_gjRmeHf5nkgZj<}+674yysgsJij5Tm%$k z&~b~2hFCC^vQ_C6NA-&JUBkkqj9>!tqQ<~wrZbu`A>Q(xk5f=0WDtD2`9TaP(`89Q z&TywfrI|w8d)V z-=$@bf#`CFk=6}$5qC;zv?A6|7XuQcEzKA#!;$fB*|0H0VtfeF8Ky`saNi1xV`L8# zYv=W?G3+Vgot^H+T-lJs1V?t^(&}#4#&zeiiNZQC&giDHgO=tdTa6^@F~ERElV9Z5 zY5|&BLCkCSYf-RMTRt_bEChB3jSu8Ij?+MeVk}A9fWw{Kl+H4)hDlVfIHugmuGU9U zAd1oe$_(gfPp*~nzjDlXP?3wJrxdA!P}rvxT<+u*Cld3gS8Eh&BFA$H3iq(STc8M@ zp(hkMf(0sV%H@U7eHJpU#Zgv{x3-+iepZVXC0Kbv8mP?}K;+Xg+kZcKv|(2jYGG0^ zG~y%VW^C4!)<*~>(IcYdWZH>irHFVs^Mg*(2YkopN-?+w6A!4DbI zUT1;3-?ohG`;Px|7-4D?nw-fYajgLWf z_VqF^HeVD5J&;HvQMUl(!kyp}t{?*<3tE_71DI7LnC>B<`7&R`U|&fbI7e{Ux@N1iz}U2UxSV?pJ?g2aDV8|# zGa~*<4OYAm4ildadr`kyATS*Yc$j#|D;YRUdRq590rjFIAJ-WmS~jNvS%vJs9>4Ks z$$rsH`J zyW&q~xO26|p$c;S-#HMP+>7gwRjhz%EgJFb+jd(TEN0Sy^Np8J8L+!Xj?dOB^M>Vp zTZ=t2tYoX)A2#V>j^>a=hXR;OsY?;VvVxf|-N(ReZ(^Tq&yv8Jmaf(}8_TS?grJw>&5dw=U2)7p< zF`5ixr1p`Gn_cwwTnKv|>;@&Dkg^A@x6HtY1|EujYC!a5HLVu)a+l-+m{h5xO@x{> zDM#M(kJ^sqRzI-`Xb2(ixbrBdXR8k**bb(bDXVTI~#z2N+${ zHe$vRu^?G?Mii3o;u$KXVjb6DGqvR?jos}{++0rj<65ff4sTajqjQAg513IjcahdR z=+cPQN2dsv3$24+>Z{AVRvL<8=zItp6k4|#jO!vIFMgCv2zPQ4a zQ@G*h*9C!z&aL?r1h4JKzil6dk>6~}ynT-aw>PR$k1T(W#An>iM8B=^2odh*f1`?m zP(P;7?uO0AF>2gqr!A=-JcYe+FJ~1q6+q;vBqYkJUovLU2l@p;#lKOf_7mv2@~DkT z`!LI>h@4Eh$kmjVZX>si-HCnc#WT3_Ks~Xy|Bt>&03=}Q6iNel@ZFNR|Lt@P01v$A zU_;n~|0_TQ%M%(0DtLN^b0c$X3Wo!D64rQ17@WU)oLeb0_8>WW6j7`bQDY8L^=&yW z%WUkuwW$lvfPKq14XJ(~iHkJD{R*Pe-zBXW2M34vYDBSN`jRe5m9c4bctu}}f=I_A!s)ShI6t&Fh74%z;V4j zXP{gr%>CmE=Zu!X5nZubvU_57{r=vO^L6-00mO_U&jzuox3c8r>2}S>+Yz$*%SMm# zyZ?rn2Z)8q$ie&LR-8tJ`7C^j%eE>8pQzePcJF_K*3YB5=$&Q?Zr7mu^r3@*xUF;! z5flX6YjE8=9u`?F)XPdGzb-xX#hp1wS=T7k9v}TKDTgM=_dyEGDKe`Yy-Se)F>pMky9G7%o(BDoU=BN2z{XlOAxuU(T_{rpjaUxd+;pd3~;!ai)3srn@=4|88_P8rya z<{4MsMZV}nERjp4J+*2)2mXLnj!>Vbo!%C#YM%F=7#1E4KS=xR?VhatJ&5$UJo6$z zDf%cKFVwt?xzj2zboG{uaK2S)*4=>Ln)VLa2pPFtZq1%;fdARsLoc&QQn{wbNK7r5h5kCVtGAa5Qp|hs^KY{!Nr@x`Z)fV$QsBPr>7uuH(o_rC$3F*(cvXIz z7{2;pDnx6ukG+ry{{(P}3`jfatgqtfHpvyzAVG(^`vLTvNBfiIF_R2U>{46yTik83E-LNs&8Hv5vt<+8pm$RKpb!SJ#y*CV7(-I%vU2 zrA@9*AE^s)I34MQ>y*Nm%dCD3-x`wCYD$}*D|nvp$spwT*bcP5EagKkp_w9ufP~|9 ztmkpTOc~x83uveZK(QI^SX=V4o3(ZVCZSJPg&k^?cZJqTk^)~iiGUetzbedhW@s7Q56r1wC|x|&9L7Gv5-qG z;*%ZRjr6Qb9C0^gMY(4ZiRl9a^BgSH4K*qW0$pvQ{|}|4v7i~fNxAR7w39TfQ}guP zP4DOGHhx5Ij1LtFPux6yemWt!sd3EEoTmLMN7}}ansH;x!0^fS&p8mr!rhG z6+`XpXf1kxw)ELP4(u< zjg%U-$85OjI%ka34Fx|Rd_K{*NHtp;h012~mm0gCphOG_!0UB+G1+v4yGRdR^4l&w zf;BJrOz#r>C>9^vzS9SccK~pZkinj1Pp;+Xd9UikRDn8=PP}CQ!@|Jo5 z25aFQ)V!BxHFLu)VB#~r0($~{!?Z(^I__^5ec-Jehbd~%7RVXm&rxV7FFf_uU_m$@ z(0(76?|fIiqx~m-a2qL&v#Dd}3ihu>!@9&096b{gx0e!1T<8#ds{1e&-5ckExAuAK z`cblBz7G6065Lt_YozN>N030o+G~Zo`v@y)^{~7-O{~$>^>?-9z@+z|)4Fc#M z1Dp#pdgnO*alM{?u2(9%y0u4~JjU3OyFjO@NoBh#kN7bufse>cvz2guhuO#JGzyj8 zvFo`i{0{=*Cv4JZ?M{ry7&Tt`3h9_(qb7P0M(Sz9QwsyD=h;F=_N3I1@(&`DE)_oo~dugS*v;i3=Hxv((|ZB;ih?uBPq z=pTF3vRn*sy{02A(fOm2BqvvVXEm7ym~TA;w`h^JV=F|uX`*I+lWJ{N?9t68!}!g_ z)o=RnXW^cUD(JoI8MRQt5 z0YzrCQJP$^ZAxEEy)Y2aPx5)7HJDz#>y$PHP6jw5CuO3wVO^#tbaGC#&=SHAwrD7$ z>TSG1`9GJgoZ>btJi}1^{w9|K{?hSpKE;g??c_f1AJ>f|NiEeqb1B1cHgSt2CRW%W z)C?f{0*&ad5XkL^Daid@;m71uG+S9m?Uq@Pk!I3;3N6OF^I9zu)3tLWLl&Bl+?T%) z*n0)^0e~T{$TB)RxRA+|qZz=bTY;G=rR%p0<^mMAAL$w7U$szzXo)Yc8KHSbHPIP; zU&d5y`)hF?VQf{(jOLRG8}S(h7n~*0B#&6|jO3$+`1DHk0U499({>Z%&x{!jFbGc| z$M|NMr=p#wLL-k`g60$C$Zs-*=0(*3Vx}kw_!so!_&mbzmV0L%nzhZNqXmhE%fP5fN9jBU9ba(KhXs{l{I7m>+GAzu#u z_Q}JmkmFb(vmeL8nY2nWe@k$|9K8)ZYFYDM=H|1tV!iQ%zuPoi zf$~sz=Eo|mQ-mVZl5ZgNsVHzQq!Qr@|BXzmXVI=(5OXpjh1^R*CM{!|v)H6O)snj_ z3G`OvSEutgRcs^eA;BO1Z=F$3QkK+Vrr_6j{pTX!fr@rRs*vXiTHAzJR@^9%cc%1= ziEpa95K|z6cVIu7t*A0z@%7c__zQ`TjX`j@XAW{st6IZh&?o6A)VL4r$zV*-i;8%# zP5vuAj4kO4EcLtR!H%Lh3VoUv!Z}~n4!ZNAb3sNs0*NWO%5za2Piw#raJP>x;%;w% zqOJVd^Pz3_HTD|}Y{uL<&{gSIW0f8(MBqKT+%{Ck*2FQUjkl9>`|s_{hxHaTG@)2P z*_M&+q3k|ALc>!rezX9YrN4zVWYQ&Zrt@f;sP$zmH?|QL9l)1knc30&g}tW(fegtt zKh$m4k8!Z96h;QE>MBtxN(wD~Zgl~U5{P)F9MQH5ZOr~;ghC$Qba^Ly?q}7o{DA0G zkvR-DN-262T}|IvGjG^f)8IdwE}qe%04>Jkb-($VGu1kwCETJYgBb3?GA}nz6mwDF zq*Pdv1A7WZ$G$;**(JXH?yl2UzRFv8F>lL3kSg&nhkDZ56eDrMkO|fYNX^2Rs4QJj z{bL4jwM?(+WE!|N;wq1vW0$ClAY*&b;w^I|r~}*N#Y6L>40N(9K+F{T`jx`;g4JJk z(=t>Kh&7531(Q)`|4effs7sjw)Bd1E7=n-uok#JJMA2FGf7cS;+S~)o&{=u1U*>z+ z^|c2OkuSaB^co9L! zPWocs(Oxnj7Ifo;Qx`bn3leBwmVH|^Ft3B7XwUP}h9R`0pf0!eq%gVh7uet_SP#aji@MyQ`Az0~s@uipFPI(wz)4Y_vtsAZ6ZNkP91OHQ`_t|A6#b7=2< zhr%E~8_@r-arEo%>(MT)xoJ7rSmN3$0>Z#A)Em-fMVh&tXHoCeRJN-_3GJ<%*FP{p z!!Q#De!CP$@A1-{&OUI~wbk<5BcCiVGL>wb|}?(XWylP zF&je^bx`J6BDuOKijwPDfT*BIRBttJTfk%bfVe(;OF8ntO7XZ&LJYBTcAT?3zEDs0 zxP?uj<|Qf(FZ(Mo5mc^p(Yr*RX$)1)HQx;k>vK8*EOQ}*bTm-EgcbNH4RCBuBQV3l z7t+#hWdf$Gkr_NdU^NI6Q|iOO!ui$qtoHx6S2bA+=5Jx?T4k`#Hw;|#S#8|ntNNGu zu9KgMjzeZ+3)lL`v_hTd!RV@%rBp{A?FV;7*$0iboSIT7MkTxlcN_^&4P%uW>;D<| zFv?)sFL^~-ch`#ja|=N(z7B#^)Q$6ZBh*bnnl!HGB@GiH#MRWln`C~8xmAtyqk^w? z`_E(1g=V-Y)HUp0z^6UR;9*sAp3`f7p{4r;oak8S|#j=XH?HaWsMTT zvxRB|sK2xKSCrwJ8qyPHe zUxq^UR(${4ChI1Go30i!5_G4SM0=-_M;c`=T8i*rDz=*cS;(162HRQO^D!HLLH?oc zN6Iud@k?jih#rRs5tG|aPzFI?3*HB-WyOUm(~+z0Ov7$0=EWexX(EYrQf~tSvpk(7 zP$DZhbrQ1SvH^}LmMed{a_SXl#4cCj>hVeGRPctx|MBb8@#l}=eEHu0V1rU;jWchF zx6zoAej)Kq-3x+#i*N`EA@UyVbN-{vy;0XG?6ItK*2hfMU3&WW09B6ia9qY`C-XXS zxKD*S|3C%Q_ar>Hf$}-%Vq@O-!1k9`OvJma3CS!x*_9tA!5dIkS{elORnjbXo9z*z zWv2P#g`1SD);@^*{s!-`@J|5E6O|lfW*r>&fxeiCbi`M$`6;;7|Hg_!Ttwb;!{Tk6 z6L;f@8o2!HDb9R@&UHsEwuoLkdM2dj5%7e!GtGhF2GEObn zrj6dKy9t7yA^t~o@xb|Vbi_MQ!!i1ss~4mmOKgx)zRqmD=&Z&o3}T)>L*I|0N<|#_cuf#sl z+2XeVw!1TUkyIDpyo|Ju>Fo?DT$M4to_E}r*Nu6Ccr?&F0!ANXJeYJ>bNOJfKmewUD@n@FoGQuwwvfc*!LsbCR8g zA6{4zt7#)Xa4c57?O8t{_O=rNyx5;S6xRr!EJ%einJT%PmXHUFpxXb%Vj~j* zYnea<3v9ls2f&hVH->4YGHshHf{KysXuYr|_1bMg_GG>5zUqNqfkuqneQ+$8HP061D+m#(xy!`-#Q7mdD%UE z4rJWM2g}xPb}NFigBy@h$nh3Kl{rXqq&XXRj&j>)@w}xWFymh`+b`cmO4oacFs~Qr=LOIDc{ko6?!vI^ZMoXayYFQOk=DSi*TZ{FJDK3HLwJq$XZ?|e1P8r_-Cf+1*!);w1 zbC3M~c(EfiuJ5niGYSOaC4Ua~f1dR7&|g&7)D!&GO(o7|{t1Zhc*0V%l%iX9=nS~4 z4@#bV<>GUfF)g|sQ)RXy{*A;+>fZ0zeIEP+uw~MJTDj?X2{(uJ=ndo%>!(QeM*|Xk#N{gM3{vG)nA3jIG3Qe3ibWcxcKu{XQerO`qHw ziKpNs6Q|gliIx~im+EfD?*D&Mt~;RVtPT~8B@Y9m zrNWqxQf~P20l4(XEZu-xNR52^FzI{MOgd4?>mh$IIpC-Mjr~8ndzTP=vU2C*@d2HA zGssK|iQOSS_kXeLb3ESllvYx&hi-sVKoUe2bhJuVBRRupcb`eNJ}$IIpii`ZAfgy--^x<4Qg;oHynYkg^+7zRjiyn*ic!9vU^ zhezH)oE#G$@GV~-ngD@ps@b3j@HhnPH&lxaUY(<>s`8%?+-rWT@=lr)uD8y^n0@l@ z{!ZkSQWWa~Fxt6Hv|xq`Vjxl)d$x?QSDIPO(e&-S<|jQXJ(lmIcA)L3VeF#%+hs4kGH$({!5 z^SISpifOEayMqEKbW08Qdf-zca$-9NQ=4V3^^3PC(a@u!b}b`3-|u|vIYRvOj^p^@ z`>B%8^pDN1Xc|>#C*Z;MLgYVo09{I=F}z@7wM4$aY|sZC#clS~>ES^VfheYvWs?)| zq&`DPW6aj72+@qM?)69$hZh}OVZUIk4e}KFCc@?#67_d}Dsz7cx|N&xpm*2y^|J{a zVaY8rUDWJ3gd;A{#g;k!2$MM9z=v;f7@_!g}K4T)cGkFDR?=hdrtObZsmRa8fpzD zgP0QFn@2?;gnJk!cD+pb3KHJac_DyIKlTRmZ0UQVJ@Q(2?2(~RC!{yxTx(qUvIS5C zmF@46RC3e0eS}1S{m<(qbVF^kRJ6xfC<6*%Ql8rgQ?3#|CkOnLbS$d_=6YquGxFbQ zTzd~XQBGiqkl1hNlhnp6HwFAWamy1ypl!KtuHlluP6HU;L4)z&B4CkB_XQz&TyvuH za2lcEzqx@cdGpkmy~*L#?Bw+fv4;@X9_{N%Zo1VHUX_Vzjl?a#bt3q+*hT_rjGPQ2 z9_oTiajUnixQ)qN!T%={C7l(URP$#R!n?Xv%%W9QG)w3sA7xqkS`az^$aVP^5WgAYdt|1*TSS6SF{`Kun$q5YVmO2W)7%i#gcv!9t537jJHfujk*Fg=(jVa;SpGXH}hR(fYE9-|GE5oUttM60F99`w=bjdUw8v0Iqi4E}+n$5r^>`L_y z4EgA=5jJJU8r^5>-O}X)+y2das|Oh){}QT>j(QC*c`X9 zn2{CE2Jni1@2Hd5<@;C#F5@@>+EEr>q{ox_WjI4a#5KkMd^d|jU<#3O)h)zWM)mgx zEup?slwwL(FML_j1+|3BkIn_KTZ_k}wIRbG2s`@L`>gH zf<=0=URe{Il+my zO6QR;O*nx@#Du(Djib#bhsJok6ELQ|f;j;mm4n;i*pGGn5@kvjgJL$XH~$+lp)Wd$ zI`aLG0RKM#z^S({t&~M+%S|wX-4r#gH=cLH<-g<^^OV=7N~Y@WB0c4>y$gxkQGL`1 zECAYY=O7FoDlE*jjrJV9pGd8eNk1+W#=XvKY6IHnDi2WXm_1sdlsPxYz!#l;Q66Vb zPrmPj#2&x)d9(7|rjC3sm-4Yer-PI}*%5?U@C|EN-G{{JtApXI`-W}IQZ?s zs5Ea}EoOSGSVZJfg(RZG)~K6EH|XVwJu}BniwUJo&hZ)BX2EL zQBr*4hL6uLsfjO9r;It=Rs=n>tF5vjSnN}Ux>ElqP>%GF*o~k>d`qTacuMRh_ungh zu{tCz)#W0L5<)~H+uhw*=M0q-bkF2&3h%9+J98C8hzAZ{^Jy4~LA3lbw=Yg0;!h2~ zME`u}$xK*LXC6NX+4!8h{OYs)MwHGP_8tp$5cB*&#QwqW%xCEyDqF_?ggg)ghe~h< z!t1m(LP(n4<=cGEcp7T5B1m{3WjY>{NDoWILJ*GMOe-l*dYK&dt*iSI-;)&r;t+z(&w7zG~PlIEHFJnRrm`C84YW*|EI`iCR`(OQIw?{y*5($;UzT?h0M)esrJ{C zq|HBB=+B-dgEpg0$C^tyW1V1mAQiF%VFp%rO~i3JxxQA{G~~=6j=;36sodXS`~5gc z@Y5?7+f^R4KpD%WPo{5{USQ*4B^I>41gAX7DHFmC2v+Kw6XU!i{g?lQh4wTug2BKD ze+lMJGqo>FUkY3ybL;I_!a_t27DLa&)}*1v{m!+!vbr`i?gN$%IJ-66V52b)O5&FA zh2@3L@+~{4BY(S!NF?`rL88=@-9s2>{LwHZh^kJuBf(069S7Doyj0#X7 zZM8>-i<2m#HocJMFBRTDmkbck(`pKVZf5EgjPXF`r_!4Ftz$fc9!J}0nG`Tm@>aE~ zje_yh-NojJ$sYAryc)l2`}>f*IT_Zo5)n|Fsm3k=L2|qC51@MgoV8yLyK-l`(|LSi zTdP`%+L?(jTQ4<%egp|sM>;$`bzu63Xs5VCNGGd9v%KIn5lNhOQMo>K&5DP#`W-#kdSw^87Ln1eFo=$LaISmpvu*{-Vah`h!tDZO zGb@q`NrjV z^ImJkTyge`EmHKXa*!Ys?vRQQc+O8+Q43HI3)1maIQS&o&Cq7_VAg%MB;8sm43htf z1v}dWpALvV;>s-b-lKoz!!%>iI*mU$e@yLrb{eo-UC7tT@hB~i-GC3P9xcW_o}#{U z*y%%@Q1~Ojh;e)ExUO?9b_hCc2Blmm_36eOYjz1CQwZ_^9X3)4TF#PT_kRBbnN_=9 zu0d0Km{f7j(w!`LHXQlJVn_sYSGjnvt8i@v-3v4ILWL|SW$kFn|J3?*;dkTvWp-F0 zW>%zO=g7~HghlsM zla#CZ>wxy-d$OfjULZl+6KUKmrtC5B#)y3@kcW(WfdYT8s;1_ozQi zKs2+hg>8gLmm5dK@ixY&yZZowy{G99bRzv5ue5(cg#2wZ+6G?Yz5S~omapm_eUCWG zQMw5cfs&C2`UanltBuF91!hw&1DW!EN-~*VwZ6MBaFy$h&ybY1ROb)j z#tN4Akree3ki7hDh3OEuA_N^>8Yb5lnv{u*+{O_e6il&DjuC<=r)!u*O|U!z%=pX3 zF1u8N#(ES^z8iWoc!p3@}@=+1X57D8Sv3|Wy- z9Ss=iCo<_2>x!;A?B@f50l#2+O?;7P>TfYlLE8E;8_Z>|F;o_evU@%JJc)cMzMQG< zuhS+7;b?DNjDh)8DgX?>D0cvS0TPmZAieXYMg26Djq1%CH*-Uw$y;<>#la7(H;^O= zG~RMYk8HvZD!i9;Lc& zR7F)%{ULz0Wu=W&czI-on0Nc>&2IN5eg|)RjF{BFNS0&@AK>s02ij;nUSFW1K(?I+ z#TY?f+k^@yJyCK(RlX*pL4@!eLXYQnQHE!iBp;F`5xgX`DMQ50iM9Y2Zn<*Y3#M8m zJ;wsVwV+`g7Dg5-7Aq6E{#wjn3NN^XdpfBtaeC#3Y6=CsD;p}xRpief8T?#__|%ZP z9}HwUtwP`obcd`WF)2eoBp-gV@-a;QO=32G!#7x*RRyxyl$Ng*b{I2lY8qj!E7HP-hcN0Ck34CLG<3Kc)6 z<*s<=-VyO8B7>-E&HXy60W9IMOOm2`7VN&xlyzMCv7jje zT|2{JF%$kMU?UtiR?xQ@i2uI;GQ3Cl*SP7*gf8^0x<0xM#!)yN1Q)Ot2_NFIjD;}v zxqQ%75ZdrqlODMN^1xpN)XNYF@PYlLmMleyovSwuX5&uNhfI{xR!tK3Om7uvo_a?+f;ZmPd(+@2nZLvK8J#|H7cbUPSw&(vImbd zIt^3YnB99fND*5#E#~@22$;QlzoM@`n*C1(6(=w8?^BKk2LoT09Ajwwmy~7h^Y7;S zz?=m|qU&W5MQqx-v0Cv)QDoW2i1y3CX&D~SCJh)!kkKDDKm`5nF1tr%09#FBw2yn- zeeVYNju^^on_zIsm%t5I-6e~@UzD`vJ}sBdn^AI>dJ79${nb!^b10SGI*F0}xm)tc zHeM=Bvqk1Dw6j}p&xil@(6=!BN#*PJfi&%S3_lxSc-yKgP{aiHhjMk1fwrI*ydgUf|3B%dGxKKY`ym+5s&s#B-FTL^EE5Ui|= z2F<;tt6{8$pOscQtq}=VZq4C+-fdODwkn@+IA3osRb%d7K0nE+|(N_%CBQ zIohOzn;^AoDPBic%Z6D7H}R6G~r!pX+F#GjDhE|sl99c23%IfQVxhA z1#yuwe+s||l?tzec^$#mkd~k!np-;LV7A({Ks4Lb2FA_o%v7}*6p<*DY)#*SmJo1Y zb&{pVSHedoduFf)i!4aJ_JGUOj-QH^Bmo#YO(zfn9Z=dkg*t~Y{O5^(ym`F4$uqe$(i4(al3gY2B`t=&dA*8tGL_!r>g8)fdaP~S! z*?oRC(=gAgRg4V&tr$txT$c@$jhm9nFo}D?#!(-Hzmv{%V+609ZD}A;cib(X#Lc|D zUq{Fqufsu^2O?Hn7-N50qmX8k2W@yxUj68$J}I_2&tsH*#)jUi^BWYr_iC_LqWolB zFNb)puU82ifs!y5#-Oxn(1C2H^x5QQtMZif+k?fj?kx3hQsml7iS*xfH)_>Rw03@V zl77=pD5~i+sSh2mFU6$ym&qC`T`_>pdjHu@8?tRuC`lc0vB*jYf#UqFg|n)5;|)n` zEe!bGOjCYE>-3-fi7P0Y(gdZS7)Ww&l;iM*6=cRt`4RXh10`cP=O&oZU8u`Ub)@%Q zLA4YP!TN+~^ba$BYXET?#_@fTzNll{A*=eSiqI9fZzj1Vy-3A2aL^zOuoUdpG^#-l z7)RZOL+mOe=AJ4|naY&ZcnlkOTPjYh+{OFS-BnRTQb<#%NnUO)4R<4jjDknTSk~Fr z&eZsD`YSX?x{_C>>%D`pcd^t;eH&3rb#Onx|H%NqAl)RE(R1|PmqruHIW67!cJDBd zV?7RIdzP4JTRU8z=ffD9#^#?p?v($h zoO!!wH!(scxw1M0c?%@{yU>sTAGexZaDY)LImP_BJR`F$G@^#^iVfV=sc~}k1U{xc z7UTs5x=5lU!`^k3WpDW{YQ$`EHA*%@C#hNXA#4sXQ%C-)l(hGeW1Szn@ zObH-rmd>27r97P_n@xLTIEN^o4YZT4JAK;+k0`cLMjJmY+90bj;DUz$cyqsLjKBPC z?1CFM8}0bKr-p4Bne#WMNKViLyme#6fT3sLa`SMngf7>>#BWQ{JU-^Mim+EYx$tyt z!8fPNfTKvD!v~zV>u%^uDX0CmKlCIAK6-OcuS=ZQxR1=1ip-G!avv_63&HK$pO|1; ziuOWkKH4$fGr+XDwGg;WN{7t0DetGqFg{H4&|d4s8Vt{B^Cs!Q$1P)J{{PR3#&VGT z50y2vbD1U=7<*cpUB73%*-^eI5*9dNdz&NLCY7X1P%JlHYXl>Xlv-|2#4fu{)g2cb zL1|&)%anaF86mX4{uw`|!;KJ8uAZczl00EZPpMJmT;hF+4_+Hjno~>(gQ&GNV1yq8 z{3#Eu4r1a?f*V^@T%Hgf zQ$C>av~lh`u~EVW?;Iyax6Nswl9i%l0rEV5)o@5t-C}Waac*a9N~L`W(-~J4$PI9y z(1Q%@*7!K3qQ;CI#KB|)9Q;-84j~v7{jT$C)wW+z-M~9?R5E4(*7%(@EW{usRn_aV z9k5bj|IRbwGF`19!eJDd+-Pi8QzTPdR0l^0tgQS74@7q{Me^!@Uo!&UHrSEs*;V?Z z#{EsO!XzVtC_-9O=jmow8C+Zf9!_XKWSSy8u$zApzw>i-94ftoE9C|Ib-!Dc#@{^` z@uEi4uZ6CyE@u?ooOvACC8C{Gh7-R(3SyeG;nAX9m%#oGV5XOm!FKSuZ!Ek48uBO8 zM75&P=r~7eEj;)Zl;$^^qU0uQB-d6j=bYox|cV;*?fC90%ZAuCQp6o8P#`zcB3ofY9`G#je;I)`!J+2Xz5qPeW>&C1juE&qlS|THoM2>?+W5qkdC{_zAgN;jpfm#g7c+?bB@$<}F`d`=I> z>+u}?X!F!}x~Re`z}M&w0=(Qc=RaEh#+d02G2g!*=KBQOl*EFN*OO0>g7`QoA;)l9 z^y;09*BE-)HUHyGcMSQ+DI;#8fB1C>2x^EJ-;>?&M){UMKVQ{iA=`qrs@?PWL83G_ngi>DUnDmc8!>oK%d(k5w`HDWbcr0%C2{ zE3N}l04c%SDK>!E6U{yTF1PK)3&xC{^xEv$E%OGbPykHmS{Yh=?%%SLGL#^L3_w#P z05ui|Ho1P`&T9`no%yWIRXVi@rRV}2*vg9%Dpqs95j?F4`5ZRd+W|28R_ddrU(`XP z`ic%Ei?OBo*;5L7XEfrjp9i!7diVBiB6DSerj=Af(dHSA6zIIrqx_@6rLp1c0KV)? z%xm*3bHn8%E`WN77Nwg`nDp1owxG{0kK*5xF0Tv?C(`SH1T9nwxBS~^Lry&5^tGz0!!)(pKO$T<7E`4X7$hI~IsUX)`EEpyeBpljmB9d0Gs*f%}2&`JpDq zySZ%>Z4xBjVJcrWzN&lP4z51|?3@`D1J|(GngK7MUE8kw(@75GXA|FyB4B=77RFT| z>}RbY$3@wr8{hX3|7-tPa4BqAojLKNVoBN-MOSh~u_hd*>lat1$s7r2BEoMDPgjG6 zV=Xu26aD^zVKUJv+s_+A3l!Yf)DoVY(V2P`0U0BbUyPkUO)QPonW6uvDXb?sek!Mi zpaBKw)*<+_jfjNCVWn=do4pgD{u#H!y1RS?S;_Gp5Rx}J+bhwl-vxA!0meMj8j#;41=Vs z(>3N|lwBIP9mhk?wfRDKFr$T1a2YfQddg{(Plg_chkeY3&O7 zE8)(l=B^klQXT)33v_?ziVyKV^x!MornYsPg&gUUG9r898f~$2rAzCAz4cn1^=cU= zWw!QuA4(`ismfg{$%ZS7@{Z|-&uQE6q!rWc2^CRkef|_{Ai3a#Sb3*!87Cjx!)mRV z^fFHVTdsQ5^YVDW^;u*jE`_|Mke$#GZCFscPPKdyuXaOgO8Ken_yLQhT%=)tI8oFA zk4VhKz-YL5VqQg(vJ`y-JqIoCl7TBPma`%QO|B<;jRB0a0lut`Q2Hzjpq;*E&FKvF_2)T*rH#qmFLkp zCe|AJ67f=C$_=(uM#?sQ!jG0!6)Xk<8Qf*}j{Ui|f^+k#mW6{@5S~pk&;R)O%Jv52 z$?aVq^L-WzLfOI;5wc&XEtrYSoq#s9yHrq6#5PhJ9h>b;oI-r_A3Yx!_sE@~-4~Sw zLOo9DAo;r`8AEk? zfv9o_I)e4Yh_-ksSH5Y&3j1*L)RW;Z?*jj5P%Zl{meVixA&lAUas7In8fg2eJ_d!oa-giM;6bH5rg)hACcfSVhdXV{ zQoXLuSS^C)Kn$NDF67ihr(Wo{<8Lx?-bkEc^=_|(5P>~ z@6cp=51x>?-(Ix_a%9pm1a51GTsdxS5r4?llavo{iSy4=@e3lx8Wm9RO{>Up&WyuR z^j?xH-fdNu93j`6(Wily=2zzrQoq~toCV4gEEup%*c#fq*(IVe1RGm}pur^rN+A9M zFe-PuRXo@ZNe87Xw@?4w7-5=vZ4EA~oiC=nhTUDaegz;IBX>SDP^-iP@oHmee-4?> z71d1JRGhkJ_m;^Ef=(&2j&F_HV&t%sr17LAjX_$eMJLvK=2ayKy%y1icUe$goH~za zZi_VFppK+NvSv+pw2yNW1-;`<`JH%0eeqO5(Bc|w!716#sV_GwH9r>+d=%mAC}DMq zxPXL74H1F?Q9Hmh(2l;>VFX0@<5$pl8ZqX(x4!2XG^Du-7sL_}MDzq~jz_Rd<7 zQ%lF8d#T!XQjRRJqN#-W^mJrUE3YXE`dRJvLx}RfVy)wqB@6T{PoBodz zCj3ecra<@^+fma*;o?ct(ywoJI=!0QS6U;b*L&hR*VLrwD90nFndbgDAN*Q;VFg@F ziw+wYC?w2Nl20hvM_&8V#uohz48b@n`C$76XL0uk(x|V4bTDbwwXu*I+KzTVx7U;G zqZf(|#Y=S(v4>=;XaMm0Iay^(PkR9TvC`_*{1bN*xBjDn*&H6<3 zGP0c!Leyk`RVYelRz+5Y-9S=`nBone1$`T341Bftg7$U;;EXNEVssO{G-g0QU!`1O zU6+-T6_J9t=ZX7P?@?p)L(ED-Pn9(i(xY)a!Y7i4bz6&s=UIhd163ph8=^qF7Zc_jeqHNa$2;{3S9>Zo*O{8OSkcJOxcSFxZ#c=q<)WdMGTG zrS2C^;iS9VsmDM?it~na%7<-nB_!|ooFns#Ot3>dwaYfnFwr3?Yz0d)H;D0bwwysg zJ&-8`g(PCj)9(8A}}ZCg-a! za6c21Mxa*!X)Px+=q9fJz(Q*8Z$&nV%g0NkL7E+KU`u=ZL^E=1NU-jsbLpOv61FMGi#_X67y-L47UFt%D|M02x9&kF3$8{K-JjL=@D#y`N)H` zWlR+cL;KI1rIUE~(a4p3*8?PmG(zbh8??B`1}r%pkq)XK&giQM!cK_NXz?&uA`|sQ zYcm1sHpYAFO&1kD+#TWr9vh@Osk5ru(h+-xcP*GQi#HrAKVG;Bbf^|&5G86w6>4-6 z7-*8g_fV450UpW{1nA-8%0V}8OM&b$6bCqQ9;T~nsUi}7__nQW*JJEAH-SjF4s&56 zXl}6!C(fLXb?s~cNG9HNnsGPS(ULv#^}yWcVABbU%Vnt1V>IOxWr89_1I@#aFkrz1P4rk=Sa>tmV4iwyXGz}=&AcRuN$9YJ-{GtPe~P?d&iS`dTIfSGO106#P5ov3OM5BR6kRL z-)k9~iTc(=3|o+IQosU#<8m~o8zIkMcu_hKn09;de`B!*EnPZrl>xc(A9(rxV-Tvl z1st%x#yTc|6MjhoHOi^!?I03R=F|JKwIG%b@^q*wT>x+?Fapm_l(G4->?0D#+cO+i zE%{(?atFp(EN4&{=!>*`Y#1EusD$7`ufVl_QPUG=J$%4-FTiSZne-xY&I7NTi$4^N z;ijUE{c zqt&UKk`lnX;=zYDDk!*5)vz$R9J74j#>grIPe>=>P0pLrm|PLnDY)VDgvM|9ub+Z$ z<8d(1F>+|}|JYVmb<5aXg6E(028b@_{o&G-QtMcn`BS?)mO~zzB%&o1vc+E%4^IuI zVyIuUd51Y74OF2Ycz>=a90+jRTETUHUzQ{qvrC|?Ho{ZNS1zxjFveS#5t>;5$WWm> z?a7x@RJbWDI>gPB+(_30!Aq%{g_O6rMLO;|?~S{_m|G9lI|x!mGmt6c0Ny9c->VGP z#<;V1K@McslGxN@LZMzKt>;sX1S2y> zw(b+2A)$_k>Lr|=4x4ndA!}O!`O-hY!sAfMMN}pz8ACsVts>Uyu3n+1qO6@ftvy8< zTbM_#sjelK3YOX7kFDQHW+bsSoRiQjWEbQ`N}vCi{aF(2_EVHvhU#zgzF!x#dKY-Tpieh`Nw|Vo1ZNyj zM8Nj69w&;v8wlnECWU0srnwVFZ1e3pRSeAAO@#ndsl|aTpxGH)Mt}rWXdj1c89T%d zRNhghah7eRs_^)fY6Q;VcXBWA8>gcIpN?lLhA8ZA{(u`7qfiCE;f?$|E9ws<3|0CV zH!4<}K>~j9ji=pC7Ok<8dYz;Q6{VN%hP>#ZiiBnaJ9G*J4FuVvf zM))v<4LAaf5jT&{4{bNPi#$5JHQ!h#W2i%ZBnm4|UgZzI3h*U@nGrilgrBZq)63o( z?{y&-IJNA$11YadMWWbuko99Gkg_2}O_9^w%JzQ15G^;IaOXYFmae-sf-6AlV9W$Y zDrhc0DZd6TEO&pLWX&a6PqyF<526CjEYw5zZlM3U?q0u+Ff1x_1^q*#j(F5ky~!Wa z;G_o!@^C>Trl);_C_XqsE|%Ym^nR)U%bWiH+nlDHea zexCSqO!UGY9|lC!k|sxy#w7eR%=a0fYCk9$NJ+yFB4_(C;@I$eaJlZWSCx1BD4LsO zLI1GwP|B-t&6$S<~<*IDqr zzQfyXvPa59X$~Ftsx%)q93Zhha;HR&!}L*G(C9l3=KMln8EpqO7nvQj=mLe<4Q_6!oroB zb@`!)F0~#TFJ0&Gd<}K^gBp{}b6+yT-F}e;s+Ux8VJxcD)J@&QoP6b0>UZm*ZQ%RH z3$F=l8g`$mg1dohFM=w(ET|fn%O3QH34z*2Fjj++!O+++^<4!T!Q(ug#Jj8wDUZ6Y6Z8~#h&-l6|octiwSP>-0 z>;u#69u57qdSV&%;0$=syC3tKZT?eksGNjC`xGnf(9C59H|3Oq#9bA$38%30Z_HfH z7ZP|j3qBoVxpftSnO;oqimFOpA!!&ID|9${vGDaWv!DWON$Yw19>Jni->bnbgz>n+ z+-TXi-5s5Va-^`ViA50g5bGPqHOj>a{VcF?7K{g0DeY~#K1oI5VSqh8k<(zaI90XmFy!GIod%S1iC%MB zX0SjnLdQ#w3roGSuH^A>m!ko>yF8ul{oOY?3CWwtwP8kW{xohYoJ?x)fqbVJ_>bz2 z6B{5FlzrCltXa{#V+u!w6)njWd);YI=>73kN)(ga=Z_BSXk6vh0nIJA{?$L9vlr0!alt#p1V_os8NSm4RS;9BdxL)KImqzgGk*e4gjGtHmx!;giO1cnLr>G_QB))F3nz0 zR0^|C+KSEStJy{Q$4x2-doY5jeJo#fLYoS#p(4x^Ysm@?@^d@zuiY9jur!1?x+z@C znj0I~xmxnU=4nM#;tycngUL!Ltw^(73>TJBo+x~A!3|&n0x_N^#jSTcJq!Z@3y9}iYoI%JG=kX48O=?6a(!gzP1x6#= zA}PQYF?|q)?yLS>4b&|PL!;i)D#$(5(Wzj_O(y%_$iK#+ho~kBbr$?dSz66Ok3#pn zlRlZ~IVBock1nY#ikyK`3-APbwRhisI>@A8{admpsRsvcjD6Pp&+C6cD|>UomJ)qa z^gi`E;j6Cb)KCaV>eX~$_$$5Ew`~-mcAl7_yP=LC+*ZyPcu*xU*F=p4bkJkjawD?y| zx`k)J(NCC6hij^a3@Pn|Jw3$%Uo&a`x`*AdG!)e4B-2k9i?N(dfmuxmNRk0Jfv%EQ z_h&)s3wET{VAOUD>uMW()WF1Xw2buVNu#Fs`_XegL?e&kKVPrQl43LyQ`K$+fb&A} z2GUr8A$;gL3~1sI=GXPC`pId~3q{Ed%1lNlc>qrs`Zwe_GQz@airLT$7bw4t0lS0` zI;8M6@riaNjaH)_Ak>EluvezJv8oy$p!L#?R`Lp*#6;JN%d!L%EM3H%BQY!FYz407 z`mbMB>UP-OQV2>l64DT!Gyi}8B^Ur!*{RoZL{lv@KWcn&Z3|zUiHhG-@}SKO0IjH^ ziI1h=5i*6aC~?1zkx-AjVtcUl|4=ELd5I5{JjEk)V;pG};laxLm-4oM(ETQ^32b>U zO#D}9p&m8`!9U-8SmmS_TA)|B}Y|JG9JBG1eYsTPuX=J5(DmILm&EiR3u*A`cfyA#V0`E!8?9Xzp~-WC6txV$Yb9_Z%zQ zC7GbLBC@?dFrABgHHsiX1$!rr`C=<@tm9cB>VJaH`=V=Par=^&Sj}dk%a7wjA{$mKg6W_!I?q78(%VR z*2#{CGes1YJ6TJ3hT6*##8t6Xdh6=dd_&maQ@guWEA_U0+c>Iel5fYdi38zUq~J zDL4?65e%mNVO?vM0{Ml26QnOL7;Vc)D!a`8nkgGT5Tyih%M2}>LycwTi9-PtH zM#Lr~_95WknZwwMaX{_%))^ju*8^9XyZ>6)!T{QvN=&gL%-Gtbm=Q?^&Daed%w_lCQ*m87 zV%qMJy^(wv5znZ{j3yb zW-mq_PGgSwy=vE}&08WZS5@JYpIW|C0>gh~D;nN|R10c8yr9>*TBa>hZUfWIPb`b9 z$RmQK{y~0YI2L&lCO5IoA92Wk^b)rkUJLzWu!2*xeu{ExfL!R%8;+_@Bb|2WEOA*n zi{e_kk2+beOFD#(OJa=z6vIxl={QKO!ri;5HnAc8W@!R$rbqO&3c>9^{lpETFJqRj zAi{*#c@X3LS2?XlsF(5Vz0f8%?^tX;%+vdQN(aRa6u`s*A2Fs+*&vXudCwa_8YJEO zXi~6Q2(UybZzXv^&y-LuP$E!|UG>041?}J`ZYL2La2})dqOl;(>z{B8;a{iRI3`S` zbG-V4XYx#MZwUwHHfzgpPjVEA)os4Is|>q?|CCi0*%;lrfhg#}063|g&ktWbk{WcRDK z#}Lcb0b}!9h!iS|IdGCU?d)gWxWa6HEqW@N%8AA7oF_X+r#-n_IkLtC1I9bmm(yv6 zsymq@;M~1w8$;r-@Rqw+f%zbr=a9rgJgIt$v7+|it=MioS%yYbISH>03vJ|xOqLHU z83T8t-9RrzOW7C!l*ojCvpqXF7`-=YYkM>>1f1j9cymBDuo|4MSPDu=3>|LLxt!D) z!v3RADf_(7v&}n3T38VDim%Fg8k|095nQF(C)n$7>`9p_$tcCEw3id>v)itGGu5>u z9{16j?xWS@alaUIkmTv+#k+)UBtJpU!Q9%*E8E-07CF25d#=1bM2DFu>`gxY!f0d> zuz@-t6WZJ*#kY}YzP9?Z|KTKHj(BQ*NEctnU%Y*aX5NV_RFQsB%Vt#l(gjt;UssZ+ zvToZ<9~t%!K`QL7qXKf*mJ(xq9O_JYEg~E!{Tfitiyhr;ARM?oIz|B>8yCVZ85}t8 zn%0p7CgbM4OMPZOvA9Hcj1()q2hfCL+vwXl5VwTwf45os2uu+aX_3$(%N9d#;*0l9QM^UhJjBxplZ?@PpM!s znfW>gt^#zZ+u(e;*DqvW($7nx*v)ps%s8D_NGkW9oi`D|SS;W@kOP^4`XrpN<@{i`&G{_0|!z>Z6cL zHi&2Jl>PSm5{1qxq#vD}y;~Q%vl&n02fzmj8&JyfWtesNo!=2;v5^BchWMQcD%XAw zs%f%UjsD*5&IC`bZ+7*cb?dP=<;wXc{9H}D#W11N*MPTzN{v6bY>SCfbd(mDL^I8; z3kl4zpi@D)*vdQmhx6)W12fv^_>v#6im_^T3ke2sELLMqwyhT~BcJZ8E+@)?Q%I`{ zpSpuzEw=gggq=kSV6pp)jJW6Ufdme}vi*wMfTu@LO_T6>3lZ`9q(d4JEXyoy%7Y_` zAC7?sn%}owdN40_y=F?YK#FZ#24d)R_DM_72a6gqeqHT5TrZX`;xx&6V#I84g5w%n zv0i}QVUP^U2DI2eXuDSp;=^$PXeeYStfQeyqfN-G;M7)46Ao zmlC+<-{x5i&0_$g(k%$)17a*UTs*4u6thFQhhZNv+_rhMU;FcxT>$JnUHR+uL1aOZ zWH_36e+mAHF_vXx5hXO>!&GqZc=jnj&sTybX~5E9frFQ!0Ga-G7i0`>fC~8OXa$t--B{{)qx-#F=j3q<4%DEk0%ft%eao_M&VdLTm&g6vTY#&>;qW z=J+4kbN92|e*DV7eeD2~i!=d zrvaZR2bNrtlYm4*fDJoH|BXLjMQt(2GK#_&TLc6??~lDRM%jf`I8-wHWb180lW*Bt z)9|~1Kca>;yC>U%L)oppo#GsJ*`JzO)sTqA&VTWG=l>YiCm1l5l~b8h$KwW5XW&2m zDl$Rw?znn;KT=4awC&t0(L|6uL&DWWA~1mSm6&|H6M=p@6p#pN*9sew?Hn4!BN(*` zdJG@^WuGG-nR1u!QsPL@l=>N!jxdjGVmaTu7nN^%YP04*L*2KGc-s~_4EW@caXlZ= zk+agC*fqz-*VOOD5(GL2{;~b z4{5MdHZt@Qw8eW*R-VD1-6O5sho!HeJ@eTQagiAPpab*b!1Rw}z>hqklCl)*beCgh zR*-VkdfSi+JUOKCSPP*FjgWv*TClAzE(XG#)Fw-Eeio?L|ESS7>U&k z_eOGOM$`n605(;Vy|a%@d#8^}M8RL26=MfI#ASpZ6at{XZ-pFj=LpKeU3xfmMVNp+ z`lcRol=k)?XP{WSI%ZgkN!^%!LiD3|fYCYs#Ic5zd~<&8BU%ho5-tppB*dZCw2mo@ zrBjnyH5a&l6teFd07OsMqe0`_f@@Nu{hWKy*)ZY}7F^pE4Ej6ghjRR;seR#O!A^vi z6tU<0i^|3L!uOxgo=VILj8eVJ*0nb%D%_CDdWkXZqnpkYyR2i;Uix<#-OjeeGy680 z6tHuk+)WE}IR}6{1&~bzg_6f_DmTN*RuDJwrn3<@Jlc++mTB9{-HC?X1TK{l1VhbF zoOCnfav0WMUS*F?xB$zRP{4^skg1H1QkVi(>PtnMxP~M^VZzgWhVT6$b$X+srLvf*f-R?fe$nJdHfuI<^S;^g459i}B)R^QA!syy-QHQ9T=_ z!XxeW4g$0`dg>^t)<9h;DZlS0 zIDVwtZovNz&l?fZ_lmWCh2FQ#VL2Hg9uT@UNH@BR{&=}skoED(Xs}k{6w)+8LMO{v ziX=5;4x^2&ylIertOl1g%fJ8DJ>E;Oq|HUaQ%PvP*?XZXqttSZp3h8Iasqq~S^#5w z#*A?V1amErNH;``%6|+6*m|3398_wpDN^dgEgOLfYxn?YzliQ-4bQ5H_eM4-NP8TW zPFxz-&v~j3@vvrg)-A-t(n^V!NQUEZ1}@>G`nhupmG7RnvHs3I_hgBvr_6{_v%~akBrZ}ICteZQ5(*+Uby(_8J&I^q5qy`=V)HO~CI~PQs~t^mzJ^+! zWu$Q4w$?AQFM(gt;{1>lc$enxO|+t$^CzF;AD&Y8_R>A@j>JJw?W5Tn8W1coC;OW? z6>4yt!ATicUic4LaJr>3JJh^+BSDqgR9`s*DxU&4ucqlg57bXpY+`7$0wA%M0IRbD z^qoH6)rwmE8`lYh@>(2nLs_5xI$@bu#5zivAKp(wG*mhR2tnN2JX*j)Hv6Hs`N&&ou-BSdHrZtg9Z z=I!x=OxBu#Gu@gGQU@#*LbTE07kWyY$~kdFPy@?YL33Ph8jK9e_gxW6P}JCy&9V3v ze1Sdsw9{INRk(rX?JqPKVv2W(_F&c{+Lj**%Y33}07<`ndr~sjUEKVCF+&RDY2IpZ zf}?&ii?}QlTZpm?C5&}C$#C3?oV#$UEcS7mM31;%&*$?W5ZDFwY8muFf1)8P0UbPxCE`i~h2*H#~- zPaa|79F4$E(M}V=)-5Zx1bRKmjs(YQVi- zh2?61;~Yd2zKUmSBD2$QTZfsBDqaqknRuCrbZ>4l1&m!pl)6duiOZ@Ybv-&)iz3vz zi8kz&GhZ~k#Ea5{{?u-X!#q~{q3RScI?q(~EDkr*w>&!=jLe9zn}k&OR67X~s3f0Z zvN54yu`ph8s^Z?OY3sSHP*-W`wDjefi2r5wRu`x;+bo1L>*!lC^oiwPI(YB7VP44aN`K@1o0>3ZYs0@NAjS`ABJ}p*;KGSMSijk`Q zJ%@uII@CW@t(*BwTs1=XJ{lG|O01XmgV7_yclg{tX>nTVaa+*n1ZI@t{f7m~TpSb> z`Su{fb^Hxr8h)!mQK>l~{H=UlzIh255mYoQL&#p+Op~H<9h4 zIwl=H%!q9856bb>HDI!s!z`2!01~cmr5!u)LtR1wTj1<}qd2_cpoDXB)gKe|&SHNS zLB}tLX^pzKvizhY-Z$Qw=AM0>RigIK%@;qrq5x9JEMx}A`gL`A%dpo6 z6lSj-CF);1QxHjzY=Sjj<>&_m;CAJtO3q28q7kIHrD;_GG zgIpje)P5!!WiIdDRLUN%2X){I*u4Gi@k6yZ_@&Mt0=> z2SW&r;zY}R6Dx41X6#zJ{6fzOV|=4;>81N7g{S-q&AiI!$AP8{iq@rObZq3yl5<+o zo{E)vX-)w{Jdjx#-=J_Lr!2K7Z-?oYOnlckSj^Lu zuA}6tY*;*Lz``h&2Y?4{bQe}b& zME&ES84Wk=W!_L8e0x{9yZCqQ{UghdoW7 z#i_M$3MW`PjF!Qa`)*J}CG}Vkk>|gR3zM=MV!5p{hI|jqQ_LBUdG+P(KnEd9 zatJf8{M84lZxk~AMaS^-o!t&B_ZJlm(;Pl1!5*0^>6D{Le>6$*3+}47`wLpn0)Leu zp%4rtU!fz{xAd`e>~g;B{>ooaU+=Qso&Go?DrI8OJ4)dIGh335vD{41mooaJEfJr2 z`qutjK}gvgMr(N0r!P8BQaB_MPGcZ7FI$q1;$eeS*(f6_tOE#zuY*f4CX6Jao?$Gh zB`9>oa)n6|qJVJt^xl~Ft(K1zP|t`4x~BJu!>d{PT1}9A0+8Xw`hI&f9m~-W;hyCo z#c=Ou4Kqdl-CrE_&CS54!jRYR+dHi16Z1p?1f{2b%rCKF0DBIWm*kY%kI{azX@L|K zav{H6VqOD_7*%k$94{v8NX_A$Zo7c_G>NX$K6eI-v%!LtQmR(Az%}nvc}uPgHU&R? z-bjfiklMjH_p&c{9r=JTt3t4B1_$$>o#$=pCNq|CaV|ti1#JIDb*W$3iVp&$+cK_lav>P`t7h97(lzuV2-OXN6Em;kdAyc($p7g{Kmwli#n>9LZTQhI|;2+cg~ilN#T4Alk=$1R-bFwWb4|{hzTES&MNfi zh}i8C^?K9+t5C?IP-d0Lq>zZ~%~|Xn`KwIUjqm{Y_5xXckmOplDe(s6<4xS!xT!#g zA7T%|>`moH_*t2+EA3Z&MHSb}9eh>OwW_l9Evv8@3$FwlKI6e)|vLEYl`RV~n4YtNrjwJ*5a+gheeW7J)`$vCYUxNC>~swsh8}lQ957`;)@W*ySm%NFKrp)c3;PUoLc57O4)orRi0UC7LObU%|K?8}W0VXH=p zr;QU`8TygDd}(lW6C!#r)Q?Dm;_J5WqL0{4op+SzE9<=8!^UND2T+Fh0Pr^hGhm#e z2V@ZpU778+-0}~mQR7_$wnT@F>*29n&R=H7)I}*eG*^=h4v$ZOdZBg=N(wdLkwG?x zU&D*08I7xAy}P&4pyz7}5PgDR0#|Hu5nYjuNpaHbi4MzqF~F4R`=~9sPF~C)P=NU~ z)R#*RjiAA!EvqLXPdlYH64>?|;s^mdG9w`9@PhpxFY&$WDnATsGOCo9I*n1=Z8jUzC`Hl ztQ4ZTdzs@+PajT8(jr7dZFc&xBqQ%D^Vw;d@u!;&*-qH#B~4t9-GOkBBG_4L^%G6C zQRNZ1Pof|_nIhoSQO@9EB>b#F+|K^zgZ+G-D3j{7(a6l&$9k~tHYne5uKd%N5gbUP z#0`)kEDBIJW8v0UxfxZHGp?sKcC#$3Xe$BR$(t;ct$F(!m|b+cMMS{Dy1_9wLQ37K zbB-0}1Z=iR-%8&S{=ZRJI4niokK67(n)vEyhojYT;x`#>=kY z`|&)(RVybTjs^Px1`94_|B6llQ!XDs>#-xUvIZiveNjZasck8cw$HWeJvNrqQVs;! z|21e0t)%s{nB}{$qdUaI+`_Q5F5jXm4IQ$6Uvd=(I)-tn6V6|75W6*#q>#IS86IY+ z7tOW!Gi6P(&-sqT3@ipQ>Ncv#B$KAl8N?;&-u(Wrc!5xFLbI>sM2FA6s0K4@HX@*TTG@6K3BBr>uM^5x|B8?E@ zB#VHP@t9BkodlIxv<@pPkq9b&lkc%ElBU4icGyq`BsRXQd} zh$CC{(6T4!wp(IpF)9`Nl(KwhW%_ip?{Fu7wC1~d>`LH7a}4iS!W7{7BV-ILx(97x z-b3i!6-^Y3Q%m|zCfr0RrWyID(IY_fc(5^~P8cEg(=u3MgyTy$hQ9K~U_i zh}2fo`w5?xMho3V-7xjv!+%@1PxrYt0NlHZE=v8dzBtkdhh*E=Jdc`Vpq`_K&#lK1 zT~BuX$_DgcX+gO$r=Kxk-F;s7SJNI1NXW--xgT!|bPo0^(OT2sd37hvuquy93t72! zm)weiiIm6K3A$cZ{DAmuU)Rty>V>?TyH=2GtYjWZ=(Ar|Pl+YJyO&#D;$=ff zc+b00}iXzb>WR~1|BLa+S ziR95tKx{G$?6khBki*3&###Z%BE^`;Zzpg}M~siHV7~7zz`6}Y-$hBF=EXs;oRrH5 zTbf@6Enmna&J)zm7vn4pXSz}Q`#J3d>1h*!aNUYEM^1$;w|k*ioJsOfRZlJstx@VY(ks*aq7yMc#Igi1r*1evDWNLEZLgJWeCv* zt8jm2PkE&Dk+2R+;Hx6khEB9@L7qL=NG|2D-%li;kIEGTmd+d>jMaj*2pxQE#VB)E zfo9<3?JN0cSCCLm-?J~u1s73i5726Nv+AR)j)#<}PZce6F}ZMApseTd(U{lI-n0QH z3spu^U8<3Wao>Xxpehf`Gu!D&d<+Ev(MeX%ZnUH+K{xa$qwMY0%RV|`YmQkXjh1BW zKE$6POC7vM2(Ma)+%!5+Ys#7x5F%kL<@3?YnF%OF4#{ zMog)WpZ3RUpZfK;LgspF=IqQ_Wk7Ui2qbz1&;e=LvdHV{2mKInrimjrE%ctz+h7rr zd_BToo4|6yu*QKsDtj+jgEEGyJC!%AuXSA_>bQ@YaNsbEvp$X7@qqgu1dl5hX6LDz zae5zDC$f=`+F|UcBGIv!M?=~hZZO7r&pSc+B%zKbD%cTe&${2*JgH(q2*Qo{$!rz@ zD`j{&&RcfyJilxTi6-RG&2^Y-Faev35^NTfcM4r$ws%6jr6@jK`xprX2CL#>>s-2E z$6m~giysb|f6oB%YIoDqjrH;0Vb+)#(z!cD9g!*c5K7#yE~keZjP#3E6&YY`KE+0f_z!oBJBkYok%}Upl*G*TF@%Rmn zGV%a4eHj{}04b{01}Sj7G*j{@Y+yM4NDc!)v4mqjTzXM_EV3h*~LCH^4bCd)Yr^OV$*@%_XeUI@WM zvKYsiy2}eVrZdS5o_HnnZIMenYRUw96JUe1^$d-n54ncLxozqqw)bn@*l9dD?Wlmn zCpAv*GrIe274Qj&9%V}I-4N4J^R;_n^9MgAQyG=piys=ej)QY>=OEdm7TEkLQ8<<$YjZZyLZB8~VExAX zaH~+Bm6sWth~fGzKo7FcCU@W)>1CcJMO`~B)eNgIlR&RTl5LJrR9z;oTBo#@n*13+ z3LcJK1L;O$sVHCbEBC8C)hVTc4K;4NmsnEnvo5FBj!7)r9Lb>W2z$qa?)Am90$ut? z!0@@bbb!v20)}R9m*2yyUnc^Y`80Hzc29ZiQRBf4tYg>sz*!UR`gRIXTk0WArew!7e{Ao+|oQZ!C>yn%BK zyR|}I9+>Vj4IE}=K#@%~Ug%Z!I`x^%grQaAlVeO}?k$lf71m5#4(qP%Oo+o$LynhE zl+7m>m5uMDa?HOBrMxAM))hyrbYS4j6^$9#mcbc!idW7i;@uL+{!wq-5t#_}(!_gY zC^%TciaNXMSTPR8X-|@`obe+7xqKt-+qq>=T?pXoD&IAjV~DgREeS|4JUn13K_ld5 z+%&R=@*F+ej;o4k-C~F+Y^btyWb^3?)&LIYBl*u%C<{wjI0FV+jPNJ@=H#R;Ra%Qm z1{I*$kTg$|H6^tl7zKbg4#2%PYZ#=y1UWpc&Ul_07xqVFSe>~!`4bMI8!}w)0^ZjG zW28mGypC6zM0b;+RV|d$7eSghmOSyu7=2N8Yxc2q%1N6gxP{*OM+UWRiiI(v`_`Mp z|A~%)x9q&oHSgL#;N4H8(nL32DhPy*180S24fT^$5gJv~sU$DBX2}Y7GOyL+431A& zkId0})PW*y!t~qH5vleyIRGAzeQH}9;NVDnE&?-h$H6%T2Zh@6_Ph5A$jZ$kzp^#TItse15S$# zGNix66>~No7}O{nimUp0r&1(KpR9&wEWQ{<=fh)Ua%A8Tb}h<^RN=z-!Ie2 z4ZU&mxPtY8?f3yl`}MyMb97VGF9zKR!{v?*t5GAyjz?C+|$O2C3$^a<T+fvSUTwYvItgLqIVmSi6Fl`K=K*p4TVxV%+>J54jIxxX6K;_bOi?w`hY2${ zz{QEWzZvvf$EgtQW}ypvLfC4?>WI_rgEodBA=lsKlytB>B#oEiPW8OqXo+Eo>9h5f zQ|+^|o6z@8vpJNE>BI#i;%}W(2bfGpdi7}J9Nk$c3Ivmpxf0n(2iWYB)9G6Tgr6o} zLul)4%f~C8TuV=|jCm%{R#njs^2SXun}zj*a5DB~CMnk<5rV8YKjn-7qHZ)iBaOVT z-v%r`3E7A1bx~RW?PwM~ifqTUSv+VU?xfXz*%YY?0Sghn^TsbMO zF@PW|I&!HiOX}stwvrZB!3?wZtIK{x286;*!O%?uAt_540y5TVXEOa>LZt|yUmqk+ zVG?tEXmobVw1h6DKw@EjKUH)uHR?ihm~sHh@>7a1XaG_&Oq5J4=BPS)-&{v~cw*Nt zM1saci=yD^9b3CWG2ZIJdQbSre=9_P`~Lo&y(x3luGv# z(~GvSrQE^?cxWfm&g;oG>VvC9RgxL=_n_wp0h}>~0y_LK9U$LL*X8s^CAdJ>b z=->>{$58em0N9GRa*0^8`wcy@mwmZQ2Lq`#9SrKK|0~$i=0@tX!3ejJ9377+e1US$ z?l}>IBH=WgGq8ScDw%wvALrS$lKU%?&-L7}!T?uGA`hwd?P_ z^fq{q+0AXUxxOYt-r)jxfvOoYw8fG-)R$iu^e#ke2W?9i+$|I#UfQ{1PfuP9uvcY0 zou-R_l`1x5hmvZ%>s~rn&?@9j>4CN16O%AVk*lYFpE|X<-vxcwlRX>02D%}<;u;Z9 zvuU^izTU8I2Mi1UrA|6y@b)a>=}ADMgUJSEx4t&HqB7_N$oEMqSi||EY+o4YkeTB$ z?d|GQIqT+|v6afB2^_};U zBniDW2TBY%6SEJJJt}W&G%DO7lqN4B`wCGYfYP*_FsL%$ae4mx|E~F1mUWWd>OVbA z3{osUh+Z|*k5F|tSKW~Rcvsli#ggMhShpw9;3tb(T6VuAWM4%>7ZX(J%uWq6mIqqO`5@!GAp zO0T{B$pbqntRA)U5yW%J9LQG!&uwGR)jO_1mV z8Z(v=nPvMecEFKl-^->UD2(AtDMwq9(&C$tJo+i7B$1eWQ}^Js-QX%&j`>_nz;KrU zQcfmIu^FGCC}tEp$x|qW7kylpG!r{%&7c-3l)_2DzI%jdejVeK-{qceeJq%GIR|QX z+Uo>`Kb`D^lPXj2Nt2eszrP>W!E_;muFzNN(23}Fb8K|{06i#%E+np+)Qbhtbm_n? zlmMOr02oy9D13K`chBbj8NB5Si*O4t%VzKvS_2L5+%f&quKRD2LRThSb@C@pu%Gz? zNMFH-NcxCdJ;>x{X1t>yDBz_Zosd-@P!!0<*`ot9*RY>WJDVt>RlWB+{>^jWr zo4WXnvRYETd7afsvnpUfxxGJ7mkeO}ei|n3woALeC0Kgqz<#)+E!U9(?&lL{0S;?>EYm~_%&i|yUeXC>_r7p|sym26bs7{KGW~lt!94?*PkIUJlS{D11mn(z z^Ykf^M3mZkr4YLP7Bz*K0x2NYjIaJdaA!&9P!!c!Eqtf{Ug!Gz^-q%4!KcjkFr-Zs z*nX)p>(RhpT0yiy`hlZqV-1osS#(MKTo9nYq3q>)E7lX|L$P|eI#FWxB(OTOgU|ij z=_qev2LdP-S{0e}o{S+JzVsPM)o7CAI0ND}JY0ep( z*JKs8hA_Zeonje$X3j8<6|{O-S*$;Ln~4mXkiPDFqBZywwaO3Jq>SiRBOojH4@4Pg zD^13fXY&G;!zZeq5=4EfAk>Ld-^av*8Lb?UPUN)c_vSQ%1JSK;YI*FDWOay2ptT+v zjJDfpT?}0ndheA6I=pm!kTv3qy9+M14j*JTz@Sp%mRx2gR$VXG|Mugb`j8@71%fe% z=4NeQbs=bSH-3zkl)l+8gr?1@|>XclJPyvF(Id`9&oTvxXlu5>y~GUf!`T?&pF$Jf)h^W_Fpy zK_L96L6(9-PGZU8GxMYT)_h?VEK$XcD#2xaEtCII5y8SZn;ubg;K94IcTh5$LUqP! zB%2H_UYRy1tj0FD?6YaLUmY#RvvfLSmy9-^M37e%W)9W6&HMuJp>c1@`5!KWsnvCH z^YhPZ4^u|zOvf$9fDaYuQ1irc7N@6qT7xEZ66_hROi1pV|KAc#OW!{D(Cglq0a}-< z-KuIGw2o38K|t804I;YZd?ch;^bd$pBQ5su;7`v?D~oeBi32>s(-iXr6jB&|s+m-? zHkL3sAin``HY;3T*-KbQE4A z_kQ9*%4>stDyrI&O+#9>7X*osZ}`Y zC2$d&xXaD~5lfF?a^j>06PfB1rT=Oy(VIC|7HN4Ng^$nUj+wQ#q-?S^YGxf~z4+{T zH2~NV7KDK}k|GczvD!~2QC0*kJ^|b-gO$UY>w+1JxU4Hf6iq=ay&Sukb!^_dry`}( zgconw8ll~v9*C(aqp~Y0hzB1H_W}Oe;{#tfP?d|fiG%!C+x*G2vxIbsrp;{5wpfxT zJ$`!fxlYIOEzI*Tpks@)6+hSAZ$|GlH#pR{P5t0X@?|QkzoximsS+59z$FbzL!;QC zmWsLtZKFh85CpKY0kQawA&z9b(Fs3nD@VA1k(dccya#I;-UaDX7%q8y6+~O&l_QyT z*bHFjc)ajWN3f7w(EL)V2Yug~q`ln%8raE#zGBdENSO&64h1REXVeVZhU*^#DJ^IP zz@;Sg#_=fy8dhTUg>0Uxw>B z`lb8HTEM^8t<=S;OLZmdF+I;QC5rW4wgh1z0vY#S=&StZOdC&;#mA^sX|RUy#$Psb z(Cy9fQ>R7cM*}%Uu3>--*mTKs_||6o&Q#5ABJo4Gg&&eNmqV0u5Gq?G#7Hb>k-lH2 z2(w9$BDmu>J3|9K11tc|FsX#OoLr&s1AYf&LLl(T%I7CWZOKd6@aaY)nT{KE6IJGu zSbmDE!~n$n|K$TD8R|+jG!TODvBSibO+jqA18U{NvXLoFUQVEc$0a~qgEeu+SKo`d zADV#p;(Pc@T|7SQ0anH8Iin85fz#{)8y?j(q$4oq$#1$FuN_l6b! z_hW)U%RY@$zHu1qF0HWj)Hw&Si{oAro45^6@5+`J>$Z%D6N;)!FI4|N{q36?m!baX zBn2D#yLo;lmnjX?XH8KIT3R@w1|az65c zW&Y>aK-r$t{yPSmw`BH?=HNPUA3l5{F z(CqgDSB8Y0E{w&schb}uEuJ~;1?<=%zwtgYZjN!OP&9}#_k_KgK>YP>s!0N5d8p3L z)N2ZNfJdZxWpS)bpzB9|M1a*eWDO1Xi|a;3*L(y@|Wbu=f7Z0Ge3a~j=q z2|*+3(s=+wlif&y7B8gw5rx)Ez_?$jmAT8}(Cswkay_n(2oJ`#3mj zQl6irFQ{TtvTJjmB?!2o^%nzdlzAZVyqqPd1H+^RDgB@1^AkBc8mt%m5US{rZcx$Jl zB6@a5(pGvtWxJO%}f z@&@w3DnH==dCqTAKK_C|`0HmcNM($8qvv|8J<*xT=9oY;1k5dai69{JE=lETq(4v1 z#@Yq8%%PgMSLDopO~_}jw(kswKKVq~aA*iolAYw(9)GLjE6T-+l;erG@4QMNZ> zZN+dXTn~a-`0c=g7c5HVe^aAQbv(rOM+kca zMVRrkebmy=r8{yGap{l}xXbuVd1M{(=XcIHC$J?7?-y9+tCdE;xUFvZKUc{~$;CYH zlkJS;%=R^&4xgq(2d?pE4-!Sf&bRB?W94bC5*eOUM`{39`!o=sg1kVByUJ)uh!`zb z+#GE^*v^t3_)l|hktZAt)3RI6_Z%P^f?N`|jU1pZYyte_?r&^KUEiav{bkrCZ<618?CT0h$36!#6%6 zmfz|t-VJo%Lp2GW3^|J`x;;%GZ3$@WZ-6h%J$05}~#)61DZ505}+7 z=9jQkG>Qx%-u}CW)!&qtF=QA(Z1JT-VnG?|%&<=BryMIK3Ii%#D79f08$k@P1Hfu7 zU;%&N)efX9`;5z%1LgOqN?9usk&Y@Gc;(7D@OG6?huQhdQ(H-&hl7%ZtBE4S3YT&!nbZ)$Q5d&CmYKndC%H#&(_-1{Nt^NF z|JIdV8e?}yjDPRmQE|nAY)B8qOnX){ScFRW7k?ZxjP`GJj*)OraoTn5$s= zOHr%tPEiMlu{F4BM`842w;*O12Ieu}CH3R1jNIy?7(%@LJRAouPRjqV+fDl0zfCdS zT#KDnZc1R$O;W%C6cQeZ{F0Joe;UXMVblM`wJZ2K&S_2|JKgUs-&92;1pfo-tZiMD zq0?cpCNM-%7SL6(o|H?=w`2=10WKBw0<>O3LJI3p-I^PATI|`yralek`I2*{M<=uI zP_eNiCddc7E7c@OXi~-d;M}KF{vP4hO;oh?y>t$^c7Se4ObxquDv{3 zV(ml_TEIxMHzoC7*w~I0n(Oo%(r{ncQvFLq#Kbywg3V`Kltcp|e)J3*MG*TYmUei^ z!*p2^wpzGa+z`sSY}l-xP?qN*gAd-FYkt7pS~<`$vJE`i;dMO_2fT4YpQlGDq`D}R z5*xF%YcE5qz9PCvabUSLj4V0j#QR(;PEtwDW|1ngh`ri=!wzYbqF%laH_r``G91C_ z<(l?*f|h3K`iy7Q{8W-(DwfoV?keQV@z?Ar3y~LIh!u<=NS!sYeMUS^)G_VDH_WB9 z9`my3900>3wXCCD9mFc_76NYHsn;S{>gmn3mYU)SqV^%yk_3}fxH#|*uh&fTv+Z(B zS23l($Pd}9zwcjSEx~(MTBlHx!N}O-e+*FjuBomf_xu&N6!&e4s!$SR>NMfC+Yv`d zk+$+5$Z#AS&TBO8y>}|e3{%9mCx`GWRlnbz-N$|75+lT3%w50gMY-xAbzSin>S=xV zIhe(j!_E#V`DFij%k{qW#5KJe3Y@hH+x;Y#sm7X~1|+rVQtw$|GOHF<4O}s>BGz?v z>(&vvueXv95uv{+qM~FwO%XkgLn(C{g}mcR-}AOMIOCYKp=pHplXG2A@Cf_RsqQTh z#0<(b+IiIYbYq7of7&8_=bS8^N$;e^X4Ssaqf*#d&Pb$K9&Lk@C#J-cMI}qo_V&?g z5;rz~+lyIfFqV5qmr-A48FbXVY{WZ-&y<@zM)!VpDk6Oc6r4j9Y+j4R^{^U3%}^9} z>PIBHnxKxBp(Cr>ZBGtyl5tV2maP;`hW?NlQwqC*T@r(D(zLgqP8RLpSM@B+MV(UJ zHS_=NmXa%X?d?^OmA{+}ELYuXYq7(3yUs+&0@@Od%`0R~3ii-FxLAUu^Oeo7Em+6T z#)k*1Ebxgkq+dfCn|er;ZphVvLxCi9)*`@gn$^2v3azlql^*~ghsj|nGOHh(tyDuX zY`B&_$1E3T1?-qz z41P4w50yJByY%m?kQNjMB=phxNP;OT)wvhd3xQYrR+69r8p8a0gDj{tCk`?>)%wB9 z320}B9eJbB}Y;eHnhB>CMRNqXTkK~(cy)t>YV@IDyPL(aC_Nh*vVBSD-#{b$< zbs#%r6q}ieqxfB8zlDo-r|-53DdwcWdGR*DElDCic#ZWEZ215l(LZE?G)-KRz)1cC zZv?W?&2P^Xp97>gwm)bvuF9|*N#w2E>Elg)F9+ayE5ZGydMGpIpiZ}j%Fht?4-c=G zuOsRbl;JsR9jKsePFdl7B4~s)P-Vp$sYBu#^tdH^s{T}1C*NN2Tv`cS690Hz+%Tb6 zV#ZpJe#FM9&*Hl~LnUA&KH-l5w+DPB2?dKLLG$)Y_DIW<`4k=oD7UMrc*`s>ox_`* zdzE!ubal^2ZubNMGw&Ku;fe{<^aF@yW;&BT z#r(A_ZH(FP?;UotJf;(CR_f`bEUX8O9=_=BhYUtTt7E8kF$kz?GfrM={8Yi`CM+ux zoa;Nk-b|@A)$5ehxkqDPUd~3=MaEJ}j}tqgl^hBm;p$bqrB}uR2|5?pTSsUUwV#(P zX1IM_ZrGqmV}fP6nH(%KQ*?W$$=@Z^eA=vFdi_?5dXw&*9pGAjh>h?- ztL9AU>)r9ed2KnGk3~un<8+yE2|)^qe=6YT#1> zX|bJzU2A`eAK`0B0Tm-|1Z56?m4IrcO!$!V=xq1wY09zz)AdBY0!u3mx%t2AH`cY= zyX=zqF%6oDYNCFll?>N1)@{%6EK8xt%8Q4PhEh-+A5bnG(`ut->pR5PW$9wGi{j|> z+l%8!l#^gyN*;~Lro8U8{b>9akWhu2*@{k7-58z#4>5fgRV8=%i$E=yoG6|+6ztZ? ztjSWM>12Stg++Fv%xY3o<~I0cHE<COw550?m7WK#0l))$C+5j2?B-GSHk)KCH=;a zq%evO9`Q&nyvXPBU;_j4y4XaY!mM*cM2jY$k!u$-fD$VOvMRMTq7ZEBz>VQgY;N@- z(DfnOJGYknw&)dZ>Cc!``b})%;mC{ekdHP+-KBpx4^GJ*FH}Ct$DlQiBW6v#%&|XoKId67NIic& z4_0vE=1c(z%j_|S>65efdf`i4$)W7N4a83nDH2n(0 zk851Eq<}&IeSJbk@;0_5nqNTbn2Wo_m}V5C8me14nE5db@8BrBuij&1{qoy9@y_DR zZspuIp?ISS6GQ+q3g};#1wg;Psxk{eS)+Nasv5%I7gbz4(5ZlFg|b9eWP`IlR05)IYmri1)cc#nw;0_s;yLpA&65~d zhAjcPjD-olp$_we>e`TIViknG43W4>OEMlTZ0UbJ_cvoJZ-wEu1z+aIeV|v8E)g?v zNl>&8y<2VrJ1Dnue9YZhuM}|SMh5$OtUu<*XB$@2rXy`_bMwi?&f`prpOS6V7|%9= zkn7?FlljJD?kNeD3OcZ_-u&>*N|uUpT~lCiuVwt^y2g#}ZD}!yRd->w$>ny})bdko<}Xl^ zACZhgj~lNDUe#$Qa5bnBSThzgBFus)u^>jnW0T}AccBEU> z#iu^a&ly}c+ThKJ(aF}(&=o~EkeW%p29$F~0^X(2hKro|7;}`E<$~Ls18r9d@O!&@ z^Nwih(cmfe&E5VT%Gxninas7DU2(#74cap*;CUsDLAwtpV}4g%J%ANm0wj&pq3XFcXK935q* zAp$t>0OwjG1~ju+OTCUOW40c--th<$RU9$cw36=f_w%V@h&tsc!!b2t>74;PukiuU zPfiLvUR-~GzM8Af&KtQEA2f9KK8ZpLvf;^mu;%vnl+E>?-Rdc}y0&}3Jr5@AlGUQ? ziovp0w+32&D-?k=Dj#H<(}@MX8!IAphFskIL*f+2CtMpMOR~03gz?35D`M4noJ0Rp zQ9_>>G}iJ!?K+c&27vwuaMrah31QuC6jWAF)}_9$t0{Kn?$us;jW>XR)jp#d06pK+ zfJN`49j7Jhq!Fn9WVpilt$p}W-PE|q58n8b=v9x%ld$r1@S@yS3$)H=HwmT8=|kt+ zAOW&WT3Y>@*b?nWSH^IC$FO}eUPoLNGapn{Lf6xaFAwTgQg@S_Am-Q2ukdS*w3+eb&9pU9`3Y#GWdV=5%TxtTqP zyuW}u`U?l4N92F+Lwo{z4+)s0^4pXc7h2-#vZA!%U-?}yT$M3_e!ck5yAUuL;fj5Q z^Z}g2HH?!`JRFuyIij9LjF zbX~4vm>rGdZ$h4UWHNewFJ7y4Ge6Uo_;bYsu_48EeD=@|F+_VMdZxRHUwFF;QDZ)N zS2J_&y;q4aa(7NLLtCn$Eycra8rk=-L#bLRn4W~GLo9vt0AN@f_seLR4Q)R;N}1SE z9^(ozQsWpkdUneP>3guEhso!k;&Jy}jkSXUtewUKarYV!0${QZZIB-{E&_<&FL74S z4Q9ED5p8Ad-Ka*^Dvu>>b`e_NRUGE?V+R-%{3TYz)0%KR(>4o#c8I(lZ7LeD=fgYW zp>viX-7Bf=Qr(~lOp=Uv*m~Re(<;%KblIn zyqf9I8PVmq>}zV?*63%o+J>sG;!6Zt$+1G&<5A+CMU00Eaawn~;yN-m1)fy9PiCg2 zU?=3Zo4C_yXcXE296k6CRnrpB*$?oa@7F>ilXFz%eRWZY)?u(~zGQp?qGwilQdtux z0g6Y1;CIO_1PE1()@UaHo?7R5_2g3(Z z0E-5r+yQRP7KuJ8zx#`Up7C$M;>2fvo!(CR2Gz#n)E)#)q)Zwtar zK9zKmjt2{!4q+)qyskEG2l1w{ZX7RkXXK$n`|4}363#|>*5XmOxbvX6wLs^&d(*&# zuuYVE*XjsuQ3lr&y`DW8b_aWa90>#c@MTDCo4!dKxiWJ=sA)HiJ{nOy6JH#vg*ufu}op%-X(r!v&sI|a95C6m=&J~zh3!%?~h zSByKayC8$5LP*OT_|e8N8A;!4vRA!%FYFz(esJYL4S~ZsnF1s8j%u86e?n&|S5<-d zfk5pV>tJ89RX#1d?^I3K{|8*Go6b0{hPsDbqQ-Ntl`qo3gmMJOM=6(VkWZ8?CyL<) z4CEPuYO>7Kh?IAlEtap)Se|5pD)Wr`y3Us$-0QVfMD82lse3NYr z;d+1%db<&>T0UQgu|JB?W9MscWj8i+isfN6l?c=y;oQ$vk-mj9XUt6r+dWd{ZbTmp6Yyh^A-JN93dCWZ=7fGWx&XXp`^IhAi4|$-z?M%j2AIE z*w#KyIDn!~V<(HdnE`_>mIqlyLB}9d?pU?TdC<#xy*|hdNSH2;@g1S5JAM7LuH%}px$cQ9b}ih^S-k8;cmZ`3kfmKzo=mn7z#HCYZ|%75;5FOa{@ zfqh)n-IyzOwwdW?BWCV=Q*yR!6k3l|NT(`^?ExKU!hbzRvaj_2WHFgc} zb?2xt3Xw!4PuRm+T>4s95+x|9)>FH*RH96{rw&D{tW#w_lGB=lqq^o~Xgkp!>n+kvW6jMUZ_Mykx>rhVOX*>{znEj5UBQbrag9 z!v)k=8Rzk814gJpv(R!k*ru#{s)?kQVnzDAj8Z!Qyd&B*oO`ynTSzkKv*#W82nF%n z6PW}Vkq-J@45?RMcAY1X5TE0gmyZ`cJ!WMdb$BI!v!mmd2r7Ul_0Fsqvt|xhlYd`T z*_Hx-jL!pC#EroB{4g%ox%A%tqYn1%2rf@#LEB$&rsX7P-vyN`3GhSFLMh zfsAj>(rc&ultq;Rch*KTe2+oB4SRERuR1u~ovw=V$sWIpo5BsnY}Yr_`k6xQY79+zJw-L$cwa-W*4`Cc{$EkP+$`BvuLnDyVKvL zukJJJhs4O^lZWcLsCFSwijoxJc-_Pxj(jt8M1>F<4Kj;UwnFL5rx#l%W4%yI! zlmfapCL=t#K=BwSWMy$L1Wd!5%M0I2)^KNeoM8zAu>jUXn+q!9DcJsqe9Mr+Iz3?>NvxLTb64ZFjb>&in0L8xgBHw-|HiH7P9p3M7@r_Cg(N zMr}oZ-Z<~HmYl?;rcIc}ws6PVgN_DVr?GhjjtMxWiqM`{UAQRc-X(dK_45n_thFsJ zwkYk%3$F59WPP;8I;*A>MJqU%-K3)yZqD8Gk3VEzY}t374%{ld-y+=wDFj&263Bt? z)~i&iHN5Gxr1zBGXwZDbm?k*s=QYhCD7Ww+;1f2&7&B;t_cM3a>Y!DqpmMTkAM&Dh zzO1~Rt5%6*&q_1wW+ql-q79VY2nmNKD-ZWlp%9dTa&|P;g6a8=QZH&xD3FRXUv=r( zPs%6&nhsBw@b8%LRlHZjVh=dk^2oM7L)H}P`qkaM342Lb1eo%=j@CNJPoaOc6z0hO zDjRBEu=4-{*LFTzYbG^WSw{Xk8ezEQwL^?tV#A>vuSKg{9g^+%JG-#JK>zDGed?w4 zJaZ|D5yr_QcCST=4SQakD$d;+f{P;7#R))nDms^`n7zk!;ha z8ff@mUG{|SdF&Qk8j6R-N|Vr2R@UR3WXDaEzP6EKme8{)d~Au_muR{R#o#^pCb(qf zN8=b}3*fI#77IPzRJsoPC{Y?SGWmEFc_M{U0GBJXNjv^3V19?zZ?MxdLkmSEn&*xF z?WpS*RqL!psO(J!0x71Be9=p5rSz@%36f`0hYG>MP6$U~(98vNIFmO9B>@6jc|eZHV+_wJ$kg}S-ikKO}7pjBz7 z(#;JprLUm6Y)s-B?%ScIg1GA|Wl_6zP3VWE&vPYDu=F5$I=*i{9^hf`AxLL~n2b82 za~bJmEIzh|7MALu-M2nPGLpNb&ARfc%$4&yL%>}lz0#lzjs})?X7wY6bpz=D8z}A! z2t+%8;#a`ypWh^OG>%yUK%{-Zn6@&RBteF*;5s`sQpXJlMlMBzv+y1Ugav47W>6+f z7UG5w*(Ouu4?`%>l15hI0Vool$!KxSwo_%+AmjG<;#zHN)Rl>z zMXixm>Er`hD@f9C{9F}nwjp3PKld(T;-0&Z zkklog1qsj7NIx~{H$&>}Ov8v?x8gJsv%$U2NH>Ac3%Z>F7qL=%8*57qI!T3*Vo=mb zMG+*rNglxxI954T_D<1+ntUbo@Nl{aL2ITfOqno)7%O{8c#nV(686)!95@#I`_7VWb^(?#Sz-?T-~-*> zPA?BZLOi`%O%2k};Bgrf6bFx#ApY2D3E#S9lsSZTL`rmN2c1Ievi5xr-$6pKwX;oZ zdStww0ag9)a@LAO@HKN$>7n^`4W9AijD-|998DKh)#5WIMGa$??rlRTv6d#|(-m6M z3xh2)>)*|GV`On=>Bu7eX#hM{*`fl)!TA>BS|*WS;TN95sZJ$0!L*fqDlW^R3CE*9 zZ8A6UJg=20qvA+=ZRLC-p{bXg02n-_aY>3}QWed%#TKJ)^e9lp6Qs;c8(` z37OKAMn^WxfYR}2+lsbLZ3816ZtfJ2YGs@PBYlW%=-bmLEOZMCt3h`ruW;z}2NWKD zGf#mM!C{Cg1cCrg9Y+PO7v4eiI*#$R$zEs+_M?bpetgU~oOa*T^&3oKzj#Q>m|d7n zXZf^fTxN_@@RP7fnskTIt|OnoopSK-A|7}JW(%%H*#>|g zfPg$zAd{&(ix5eya-3|wlj2VnuiJWWi_e`7)nf}&`j=4d-KU3S!veTDgV$BWEYX*+ zW-V|_mFKX={%{m$OVOB!860x;rV^7Em)RI4dJQ1&v5*F$A)J>eUOrZAqoOcNl#mg}Lw7=O8GS z2TGLS6a!EU-A=P(BPj1tkrxsZ1QmumavjuV1Xz8NfHS9obCtFO;c?Ej^(cz38x`%* zK%G$zCjI9l#gvrEeLvMR5NbWxm0|o@>#qGkOxA?!QChM`8*fc|D%oPP_xbljTBCm7%g&oQZ zE>gr2&1?qJibYcdWtgDj5ThBsR1bwi@l<`E*g{XaUys5hNM_&EXkMr1TLDJpy(Tph zI>F@1(h&fTglgznM!aj^OxS{G!T;ky1PJTm(}9l`-18N1!<;Nz`kz~KmPQ#k5A z)Z@}X#zF}2QSr~tnKoZ(9Dh4(EXP;xTtIB#x5U&fF8WX^f~G9mpw6vLD%hgT?X~@k zPYG3UJDla^{N}K7-g2TlGrTA%Ksloj>0LFgvBUdC?ktKF84k(_(ykZo-{Hi}6P8^H)8O?Q z@Kvxj4?*KaLPqvE2!whzCRvR5oVu(iMW6BFzRy*rnvcoC!z z+7U>=k`?DaTt4I9E=81hjBdKWpMNgcQXB&Ni@MomS*2n5QLLWKWo~p)G4F6weM#cl z*ELB5y=xjBDJ!UA@`w&B zc|>KEW*D_+!c@s7uWVSehFrdzOOF?0AXE3w3N`5a1P?C-#RAZa*UN^q~ys*!c-PcB!-{cM@^tjduT+z9ze6-PIEvnR^r;= zB5$SM7@r1O^hNa^$;D@|UQ^Gw9Lq8bV)eUI29%b5SmUZwj@ppEtS)xo1!)B9RNf_= zZGNn~hf1Pvx-Vlqcng&K8^okOBFWeW=tF7Pz)iR${na7i=Wf72RF(w(4Ka@mSoi0<094& zIDxmBlTll$ltalcMaU;Nn~b@{Z>I}F9q$9B7vx`Z?NZN~fz18O)Y9KE#XL!u(G$@Wi5gR16rv29Z9 z>0LD0KGb>U5{M$``+7sIBVgBnL6M|6x35IQvBi}Nr@2}(TSXTs8$fn;==Umr)M__Y z9Q3r^uA_5*q*@nyhr??CaYD`NG?(T^cbyP#q>|9|NBtAPMnu*op1M#Ky_Z$b4yEx; zy9I7q+vsP^NHIaYO+j>UvflU0?Zlh=?7-EuM`bQuL9{lmBbub~ zV7zC0_>CNTqe5Od(*pdEwX=CCTTeLgzR(1 zb)werH5sgfoM8%P6=)P6z6|H9lh$t%0}wM2Q%&^`p!{L-Kp8DQKwaZqtdc@g%{M2ax+kMtgKFk&H0!ttliC8YROzeaP!+o+_ zoT*-lr)JYSND#$%=TqFVT8X#`n;_>UWkHkMVs?87_*)U6LOBi|iIU&Dk#s!DQ$XB_ zpaTK?KxYCJtY8%dpiXv|(J5-@1x#^-S3~@Nd)APOMd7bGm8@D!Q96W^siu8>Sq)^- z*6H_rsM(FB?~ziI6FHr)zVzxD2wGQSG5-w81wzTQf_b(J{Rf-xau+Jlp0#uac{Lqa zM7~LdyMe3Kt2{?Qyk7yrFzsFlh*qF^JwkU6SSscBE!P3Z=mRLPs{dC-kJ^(!MdP4; zsc>n@wc2o1c`<^1$%1GNhyuFL2a0n9N#c+C?gY*+QUc_V8(`f4Y{-VJFJt>Mq^EwW82QHB2m@K; zC6bQIsEJJR>|{?#RK4{&WjoCVoE(a3Sq@Ke@G3{p&Z`D8?}dMSeB>g?neHmAhj{L@ zbc&UNE3Cu)=NnQph9r<3g}h-N$bhqr>;cxCslcFdLh;RW+AviH|xE`(^ax_-GLl@+g=>4f;6SJ~O-b$kot5Pa6L+V;%d(bQnJz9>ny?0%*g+K>p6 zEnXD31;~c>y-g$vRf-kRbaFPFNGzIZIYw~T7dT`DM~waqhU=oraiT|%%I`=8@wFUa z4AdG>QG$vn;{%A`JuapB;(m1%9;bNyk@4`9FX}M^b{~ws`PlS@nmPvqu@@UUbiUMd zublL=f))hJfMaZ9>&z|~xLEdCkhGzGiSflC6a`vQ3$vg!uK(O9mwr8UJ-q^;Fc`7xo4_fZ2 z1$tFm70}YA_v>Zp)x$m^l`ca=*jmG~D9MF6hLk2B2OO@Y?P4p^2=?;metMY}*r+{w zxJYxYChJsroo(m|t+h0@mpy zeBJK-9QOPB)ciYJPONCDvX@OvQtrz)vKq_c`QaAwWD zff29_4H>d{Q)a6`c4gbmQc;7`!=eiclZ<#$!_m9dh^0*e?hhTXf(w|S;I^xcUzT|} z?0AGIhZ20vC6p&oPro=9wOr%e3f5^$d-vY~=u-(eSFh^*r`4vQ@vwsbrnZV=m9GGGt zQQXBE8m#`#Ei>)QpQ6#C4}iHopAx^g048w zdt$MRIje+I4zQfSJuYenelIB-mG}@7k5{Af=^~nPvBToaL2e=ZM0EWyLud&?d*k+? zW`CxX{nV77XgUJndJ&=}_D*pzY(;7S+3;6Tj1baM!tkQl%;r8o0^|~yw=);8GnEuJ zpT^Xx+QYP9nznn&ibkzHm|V1ol|4aC;gR zsV0QSz3(ErO<|!Vv_{ok)OVFyB0cOI>A;|L&IY;Zx95iD|I-UN!A7B@=zQHlC654q zT(k=1mQ|WA_ICYL3X7ohO40oF_I4!WkDz8WhueU51AkfHLdv)Uw|js9bnAIqD@z0o-# zNSxs8-fHX$cmsySfi0;Qt^O$iEXn+Un-FjSBwE4bd|!=G&(v2=3up;}%<9|VF)-Of zkgMF!C!e($OqH-PjgQv_voBk6+%beiaWOYbx@g-eGpfI2_ekRl90Ec$97!u*o;@8H z!FkgvPe7J!b&SkW%FCH) zAD0DCJ@^TVhh&ow+r#v`1U`lPJHn}Pv}iNe_S#4a!r-FhBv@Du@Gyf$-Lx@p0n3qu zc<&M1d|f%mVzj~1x$H-HM5fSp9nS}Rj=_OY_OVN@S)B-S!Qr+_c!R%&PEoqJY}F|a z$gjr{JKNV*K=ZD;!Rd!bZtPXuZZO)P96Sbcxkk}Mvr=RFtc0vcMG&zeGp|6Fc;zbI zzDl;(+<(z1@+Rz1WT{OpvUKT8#e&EsP|toJdbwo;D3A62yYw`XM)E=fZWP3k;Yf5Y zC2v$VzVQEnMs0E1LI&-rZr1^qZ|mEI)ubbNVSEp7ijAzslvhOgPT1OVj^ z>SZxyf zt+rP4KGEYcsO~cJ>iFZ*uTX~HkN?-~W#ov_Wp%2|I2{MlpNZb zFIKMYE$fOh6`#D45~Xg6wsKd@tZ|MiN1c490Ui^AQTdn`G2wq34MLH(heNz>-Jidb z&$F!Sc8o~$bYM+e{aA80T%N}9yjilN=EKFY2YiL^ML7B*+n|(Q=jpi4heANk6t4o1 zLrLvEbj~gqcTy-j= ztLw@l=U>Oq=UFdl6^hkVn`UBOD_<~619$B39;4z7xSbd{+8SxIxA7|!hQ?~%SJPfUY*?e`(3S^i_^z^hV;Nt1`v z-Jc_t9;QQp+6G5kne#PaT)Zw$0KC?nChqPrwxkRCQ^HTo-8HUSrY-$|$wO6MXJG_^ z5IBx-Q;c-N%GAt2gQ11F9qRg;lfUx4|5Z}PRa*S1j-#^=%ts3Fd0Q`164pzhFntg~E(%(fL_$(sjUw=v zuBYk1gsKXUB|5z@nh{qbQ3AA0hX`#BaNDH5uEGyTVn z_w&bs&5#k#-(uPbyux+ho8zV^ZD`?q;{BPpJrrbdSMv!Ye6cT>o9&YSzXM3Bpdfdf zIr&TQ!H(c?_HQ86#BlEQR1+3b5`PJ~*FF^%a!#Ia+!FI@X-%5AD=<^C- zIyqsULnoArEDRNDnI1)wnZ7w3sJNxntz{>#x8k|h4{`l-eZb}1t4$e0i4^83CEXuR z9ER(w5pC$Ks7PDfr5~P-a?KWYTqY7XSEfV(BvoMzNv>MW2F$3fwYEv{{mq*OZsoMi z@)Z?vj|2>nji8Z>Q=8C6P+ch0TQvN~!gPcv)4-qqoLFkbyUQ=@KmXq$*nI>q2Eq{H zSQ!KZQXjFH{?N%?=aPbCwLRfbE($KUikH<2#JBs;B+xIMc61$7q3ftGAZ4k_CTX*8 zWe1WbDgIgAzT_lpqNQRad3nBr&oYPGjw?zahDYDU^6@jdB+*)Z{Gl~YuUeHPK`Y*~ z1D@zHe&cq;`RvxS)gEq!A`NZobX&>jymJ5elBx}o-_?#2l?#49*kZnN;&@i_>2-Zr zO$E7~W5_#5yEr@vd0K0_XP^^E?}4blgy^+04(O4W8RQ=c!l?9Yk;#)(7dtqyCz zq-`wL!i?IOv0W$7DQOJ!1$nb>hnxZbKXqQG(AgTlDL`^h#8tV}N-X52Yyk%Q@K0lX zwWyq+fAF%-xN1+Xoq&qpZ+r?u22Y?&y&lAocCf zI-oX4WAt05DLetDQ*QAUgZ zuE2zWoH;vlI6DqJdcUz=!*#M>lEuhje06P+FlSID2SU76yn7;e1(|PgB}7BgWPaiS$n1BHop5U#?sm82MS0WKIFJ6 zK&8&GFU6XBt2l%8Io`S&>;43L6ZWZsD0l|aj-LOMGA4T@=ZaG~u>SkdGO1UP_J+XT zp?Q2V3TBY0QQZ7soOqb;Gm&@te3|=93KG+UIC@%xERP8SWb2x1VhVYwokozC(t(N+ zE$q+TMWWg^ccc-8;{4?c96Eq$6dF7XrsDickc!p7InNFzs;<9x7QRmC*PJK+6lQel zvPxYCX;udxOQ?*b-U)&41g2n4S8<>UV64y6mq}um=0tkn_jBtjHK2lmU`E3ZU`aWN zpr?@uJZ<4fCX@!*8N&VhBd1)*0A{MWJ_J~?ATYKjOivoex8rCJQO&62Z?Bt-Gil;n z_fxjqAg$N%NDr&kC%eTkO3VYpjnUXz<1{vPNGo_C_9DqExR3YxHOFGIPQ^>}zhy-s z$*g*U`5ES;f;Z^;#8CUm=ujD_VhVhV(eS%QelcOkVQmY&9|C=Jk=l}nKg_a@-Cm)% zwi^?tSe)z0>C-tR<@(kgQ&75@6J7HtnHy-19-Ds9`Q7@a6g$MBkkd2G zk=zM+TGR&K4lJ`GfB-VM)o>+l^ueQ|w3v+r1@0R=qLwX5Lz zI5s$*tO=Ek@1erkTO0b`>brZmwlN3r-o!pUnWJa5s}VKB3#wX8>pCim0SU)(LQVCL zeEUWLvnmc@8?bSQ()p`h_HonKTOUvDdM34c5*5$}^`-0{KX*Zd_qM#7jmqW=##lv} zER&?b$8s$XfcBtD2IPT&?CzkRLZ>aMLV_9#KB;o9kokJ;a$UFbq3=tj2q?5@!TnvzjctY+;C5^hmG&_f-(+=c7dQT7V24JMKFmIhW#iZXD+Fg zP4nNv*xir*fmI5fy)361w4^8~`-JlAKB@=5g;=|e@3F5pJ;RJFiYcUazq$m(%*-`b ze>l)iMDH8bQ5w|43)nUYYn^K9$JdORb6Ex}eo45+@(9Fd4n*L-Equ5Ke*w7daxp7E zJC=I0yGo7*EpA(2n(Q`e3QnNq#m-w)!Cj%=yxi!(C{D0?)Zs28$~`jp>0If?+1jNE z)5;7`xvWUHng)a`(Som85~mS>372=riuvG%jubBRe8M&!`2wa+iBQBe=5UYr{HE1` z7EWKnq!1Lhrp`EC{AXn@K;jlELcSCpEnCJ;dnU>=$=iTfzFl3{QAlT6)*b8`{O3m$aA?1Q`?%Y)AR?y2 z4v>3v`8*Be0e*)>vetK_8~Bss#dI)3qus`ANJiDcig@nqRi3v%<1x;!Zc+W&*&AXh z_Cw|~({&GXrm#|R)N}IXHjutLgddy~@XnuiSSNcaj{V6F1B;{qc(YH*QN+0MU z=h<2ii&G=;`Z#M!R8o97*tg>9zC)CBaXTe4-!4dIl81ZjrK&1q`y?nGyy%cqKOlKY zPF*9`KMTb?PnS26XQLO*R6BmHE)*BCk9{ zcJ!X10Geoc5KyTZjGu`u=2OxmT`pylyL_SWCagI;O3q%pKg>fQFKDpH4hEtK!nqLB3KXCzu z0mTOdm?AJqDqR_`5sw{#N1iIN?C*8^&G)|x@if?ID!|EhbDV zu}5NXAW0}cDftE{=3b6irK;;S&Kh= zX(ooKm2=+gniJDDYDtc&AL6LjD`*VR(`*I&-cQbb#8^z^ZSbD~*tU3KBiCJ=^TJ@& z9l=Rbiyn=HheEHiujYwGnr3bmV_a5~2&pva}AQ(BF{V*MFqeK|A_ zgCGD!i_7XE!b0VME!LZolh2(~ZyhdeZGF2_Ducv|8kgCSCj^VC;FL6*TI3?q9`ZLrPm$h!;<6<_zPN*}Xylb=`9(GUXuTa~KFc~u_1mw`RsENH{ z5Ha_{{@!e$&mS>h<9G4%=<>;LllmC!>~<=ab7TY8_2-D%p$6#bNNpAXSNxdmpg`vZ z^EAvTADKj$=yN9B-c7O!8ayxN6(#!NUrnwafpp&s-sM3meh7PnOLaDY7Pqv4 zT<>-MeR-Sbxh^#|={4uTv^Y#xT9O-*Y4QN%8B;!LkC3+>5ia#XjS+Wwwp)VB!l%0< z_@ewnxo*mRLU(&Eas{=!;@%3^GrCf>W~P7Hl7`d1$4*4??MNbH2fW)iQ}(*=?ROU< zg9CgF6-e2S7Eb}M+xbz#E5*zHa`c)=NoHuB(z5qB>Rnn50a>Xd1f$5XeE<3A!kH>6 zLegUOIoHovwu5^TgC>9H6aMIFsSat~C-qd%L)oW!^zMpsAsZbxtQ|rI!Ub-DIiWR2 zKrI`74MrmNk;WWmCPd;jZo@x9R-?8HMJRPalxv&PwL-ST`|@I|ex3I>;04CY@Eh+; zn3M=ny4(TpHY29ZGF}JnO#cajN2`9$9$Y$kh#LasA2{GTvmF|QBex1qlT1F_#joGR z-bi_-rOsM6+5)&#GnUnL1V&4T)nZ5cCh%yO4^_j-7vWS3E*ZrJ^O98^LAp&KyDBJc z*U*mfN5`NA2x$0Dw*Hk;EaIxkTUs4MZ>KGjbzf9Jb3xA1!KpuxsTBZzqaa$uYp%|H zpp?*KkTlA&QC`!OQ&mIeST@( z4Woj6z@VgjScs^zg@vvsHgIChYYyk1U#1*zw^=HNe%wpKkzOr|s9=B~A93{6Krc6? zEkNbT=wnyTra%K{3lS`;+@`)L0AyV@`u0{INw<3rJm_W#XC5Dq%{uE9#WP<5wgfW< zTy$nDDHu(TQGlPVrZsy$`c+F?Pj}mv`;@^Z1>v>ih!p;#i=!t;fioj#G_@l(AX+>< zbG9+q-V_tLvVeuQ8{hdA9LX6%L(FKoU7&1c?X8OtTz0KV_aQQrW3OGn#K|gbIUwg{zu>NHNC#zod-`hZwlawOfZyIGJ{E zzi($7$`DgJC^KORAjfe674NhZc(BGWFzv99q#dXX*&##XH$SqJ2pM_CrwEEol{W}1 zdSc9WVKicN5A9ZR;OE)3{fzlqwK#m2$)gOu2DQlasIcu)#*mvbw{o{QaaEyC=3V&O+iL@#j$iog$RwEiy zuqH<+&FeDPy!v1jsJ?HlP-0hfSVq$Bt_>4*W$??1z-ZXT?Ijc)!v2kLB#j875=dDP zlZ*qqC@#<@6AYAr^`+mBPlcmn$xJD+Ivs^97{7luZ0iwEicncOghNmI{^4S>r6fy0 z@Zz?&aMqtXE~L;s9BCaJAAw-}UCS#3EG9sOtoKwCkp3H*!{1AJJ}c&4L8uvjl7OEU z^lH=}j+xviugCv<-|N=Uk+E3vG5E(RO91&uTXwdi>K+h7U!O~z7tvUn(*UKVW+`Hk%-$BcV? z+v=>?)%Q82M1sXZ8NR_5*zC4rgan=PHA{w{FUovtLRRm3MR#nfXQh3*&!R6PP3XVu z)&o%VU1)3O3o(Mqwn9eD5k$OJxa#qBfR_s_MjB*M(KcKTOzIGSGq(TN#Vp`Gzhw3@ zjU!S2ch}+d*wRrG`xVlsnEa%I=9b98|IHgrhJJWYiWA&Eot3%!kXn7Bk5=722JHPM=V=MNP<9Cld8L%+D+y5cUkE)zfd$rb< z5HDuOCs93YDGZ{NOm3*~gMAF~f*2>8l~Wxi;(y2L3K5i0)!GU*w}S^ni--az{J2?l zX)TybG-(cajsAn{jnN$#al4?f+~ldVtU%)E2;I1c{CjiPZBT?N{lrD+Xr_27K4x+Q z0&-hK)mLZTBsn(}!npLBy!wbaVq1yG6YT6d0A6=0LwHOWWUn}k`j-Y>3$5LR#VQV@ zGd*^WzdwzT1xWd4o}04Ulq8HqaX-t?#bFl(7|ck{=|)Ns%s@ULRXJ?07mN|NRsyH{ z%B!Y)62l20k!lDi&8WeX`60agAYC%CnvJnuf`%#FtHEf*sG_a~rsm%c(ToTSB@QX` znk`_HE7WHiYDxEaDNJ)wM`4D#3@+C@@{&PHlo&by>N3N|lerACf|<9h86pU|_ohO`Uk#Ib@y>wcg&-f>XD`#BPKFA+n!{KlqW{!8aCHNj}N zliGh{j_iA*Xci}WQq;A0AZHX)e;E~z3f#7Tlu6`AsO^YpOj;8_ z468@_y^bF+raX!&KH@*DC#v_UtzyBxTNn$FK+a%k5gE0kRrYM;QvUb|Kxf!Bm>nd>_eZ^&oY9PrZpBF z!ZzAj<OWH zQ3JR9a++j$JBPnCH)>B2(y32YlR71Hn7^N7sQG5KHPhw`^sD=8FO0_ot2l#}^JvfeSvtJ!S+Xf6RTdje- zG@06`?J75OPuXwpvyS?W6z_}qU_1(CuT*S!6{ZejBf|HyiC#o~jcE-j_$j3$lWzwt z?Z#8g1tkNxZNeFrDLdyOqQ7)+KMX@kOAQFkM8E+erhryNKn5A9t>)r8e@m{pk} zlk_~bT3a!+r&)#ZwwA}N=w1?>WSV_*PJ zxEw1q1kPZXfwjUY#w4hctQDFY1G#hLeZbhBKcuc72$n2Xoo*`2%kxE8*kVudEymd& zbFM7#1ITC_7NbP5b?)HiL_z!TqM##X@u{yPmeJ8b0}G;PHVH#Lq`|B&$|ru*FL#O2 z_3OL88sG@R5|U_@{`?w1XZEb-FTt@9XaO0c6SA0#(4#DAjvq1c;l;q7_@JrE22*152s@g8 z(&yGJ)}pi73y5*aV|ABnTQD3Ui2g&@i-?D{A*W+hq(}Tub;Qm8;dM0w$6}aW=5r4e>YEQb?mK^}2H+Kd($!o%_F}MfqS9vdb%F zdCFlZXG6~~pp)5tLQVQ4!0m z!DWn<7B;1a-v_v}bs&vuV|BG|T$Te$SIc&sTp&PEi|nm?7NPgu&cZ`Gx&h`ER)ln@ z1LoIq0_lXEjGEp_yn$Kw?!~9^?h!`YuNYhX1?(o_2so!$0O1zkia4?T;Ck+^aqEWv z!0*jQ1&uoR%FW+dgrn-`GJU!&=D+SAT?wy$Yp$E7vEzK5vINFTaMDvlO1ozZ*5~=h zfF~i)Z{MQirpdfo9@Hj*%oR{TVTZgKIkot_oG*2>txGU~^+N7Oq9DW2OBLDI8@P4B z40_AhnflF)nBzo@G0dwGLPmr8)AqJzBLne|=_uFrp^T)EUpX`x%()qF~LDf*0 zYbJ1F*~533H?lf7^%Xor%P!F6juhbzzpx>9 z!mtAHBpYWet9sTtH*A_tRIBQ?C z_-@@}3I69#zSj7{fZsAu1~^;i{Ab{;w@m=KEw!*sMTbugb{zywUa?6+fL%!$_oi8B z=u?`6tNtgkOK^`D>Rg8gz(lAkQIP2NAlF5s+?O{sFa|{L2u4Zzaw#`+w-9~Qp#33Q zBJcH++rM(2Dtm4KT+4wcO)mo@o^N_#0E>E1b&qulTZ~g{C;a&5MJFR>hngLd z)H#sA+rg&y3HrU1^~9!o&UL5l^;NRACOcQvEYf0})FBOR>Ku9^&qqREXcQ~RU(1v& z*=$3@I0(0RJUCd;SMf}koBBm3_5YLmUZ#Xcz8zFhYjLI(7A9nU2ET3CzrO!H>+$F` zk@g|P7AHruT`j{TFK5w`e5cT+k_})&X#J=Zx=z^201C9h8r$S<7R{Zp0VWy#8n{KJ zLNz#W?K>`u^`MV~>d69F-6`N+wAF0O8|eJSxbaZ1AO<@A=S-GVXIxIyK6aE@YX+zK zx7CDCKHvYL%Dr5r>fWWLmNEog$YyBr-kg<8rswGLmx?SVu@a?$#P3VxM-VMh);vFm znS&*G_{EIkK+_|rDzQ+=4dqQg%vwjRQOR%Ko0g15fP}lytYObY=5=bF1lc==-)svU z07XA;hqE1%nL~`u{WU^EQ)3T1xEWLqW&>r93Q=D|MEjcPiiN;oB$p!#>LG&163}1E17XMiFq+p(ZIu8J8!F$SvTDcWS_@avO*UbGbsoj@8+77@yf`i3sf*uD=w0 z88MU=3H<_sIB?7k-NWK7?HXet=|@^?^#JWadGFpodHvNK8o7M6F{kbv$5?K!GL}H# z+Lv!oPi^5k_4Pb&+Dk+GMx^K+$>JUEw=>+Bzz@u)S~V3^EH$((S`iA%3{JB{3NRnM z_`qoggb!^890qFWr4u`IXSHtkJ(6r+-?K9DP3ov;KdZORvySgU2Ss|-dox%y2MUpB zEt|2#QQjph4*`Id0d`<)14z}ZN8`kFjzgu&^EZW3Xg^G?QXDc~def_IWQO+*{B5>R z-nR^V`BtwmCq@Qr=_I9Rn4-wudiLCqeO=w@537gx*Yc~f?;X*J;Gw4K+GbpmLYyZ% zoI&UyA=b_t0rm+6s*Yy%tBU3;X@C=p&QkkcH_+IJe)AmP%Vhf^W7soj=^% z)8%@iShJA74hqfTkJr%q*D3;8H6W4GToTg&fPu|5Nic~Xu(XE$${MH=LWa@u#20f@ z_}&UHOhFw|I03@!dmIN#zE9ott2*J{6`JK7ktwMqL!hYgYZQi3Dy2WUK9ihymJ}Ud zLT+NR-^>&9l+Sd%wIIAW@|AJZk(J3f+YX0&-4if7b`dCuuwx@)k3t$)rDNpdJ4~it z>X*Z8UAv^*>hsZA)x|cNG@;r$EcBB<^q5z9iuQ&}jJDJQL?}R`KaWL&FVEoy_5MSR zg?oEiIJG{6-YOr=N(m4EBJ1I`(QpX<9*apJ)5Z%kXg0r^638+>e!Z+ zZ^BCf8t>z!J2>mAv9Me{&qW9(UwM+W1l}WFh51n$LigUm?Ed-oI{zjne+x@6P~* ze5C!#Om_)gYk5-bHIVOJ%s4Cw*vh@RY9_TMfs3&R4zqec~bChJ;#c0Q2_Ij6$l!I3gQmU z1zi6kEKh6U{fK61X)ddeh(iqrUWruto^>M9bnL~qeDp|R4cEq?*Hq`C4%^mqd9IVo zHDEdAD_OLkK8JQT`4;LQQ${si7zkZV+H-iH{PEr%yG{IY7x{6%TMdp2f$R%(`}>lN`$Y%~8Mi zAOjZ*a10l2!M>#Y(1at)#fVqPN%)Kqpy$fzzjVKQ{gVJqo_oh6Ru0fF+!9D)?TPe~ zY(@w{NOXmbG2z_GHWzWlxdYnk+M{Mnw_Ie)WwnG_;A+DuS*OSD(r1mmG* zq$G$LRl4uPIwOqxtvD&oNYpW6i8J{X1|C+LobQ^r@{vD0O^NA@5~X_wtMkZf47z75 zLF|a9$X#qgtm(vZH$+LNtU|l3H^tsk2K}`vT7H zW-xGRcs8Bio86`T9#)Ak>;i1hp`2@`MS=wtM)_kr^Dm$kFoiErR^Y^_FCAnEA$#$g z*w>^dlr*N@M_7)1Gush+SYy%mL2$o_e1jUNPgHzNJxzJ5z0c0D_CEO@zShGB8A~|& zQ?J=zv0UL>TiI2E<`u3^seM>H7=^sGfSB@%4?y3s_G|CK=|da;e^{Ffbp|C z7}Cl2q!lf3UL%Od;To11rR5&IGyM)p{*bo3_GMU&wW;xNke3aV_xiCV?$QpROW4>Mc>ex1np!v&oIxTz9&cLgfz8 zDPhzE*e(-ha=3OgOe!CjEnASA`QK0 zPNsc7L!r32y}6NLlY+%b@#fB~Eqr|-#aSz)y^Nu91N(w4C}|**LPCP5^^}th zEdd?Se9WEAfw!WcE)v3`gWlJ-su0mr(0eLt?7;Xgy~ND9%{j9~T0w7D_);B5-b_AelR4x~aANbuMQ_P#MSe!35?LYcKtTS_po zbC+v%w-ShpvKXJo>S(3BzoY%<=)AyEQHMpo`$jMQgZEG85_nE7b=4PliF&zDGW8xX z1R96{*Yci6NgwJB`XdbguvDm9DDaf9(uomC^d$U(G;VR6nq`qSW|wir5>oUc=m2ug zTQ7y1P=tuW+gecf!|>f&>M*5I0wMya;-1M%)KT8c^3B))mMkF2)zf@Du}g8vULley zZy{&AMOajJDNa5-@aIm2z)wUknxIy*gahf|RVn3yf29}M^ahnkYs!5JPoeuY-o`}^H{pzyfj-fx&1P&8 z5~YIlW^D}=em91s`5U)_ce|I51a)EYLND>$k#w@l7Ij<)=f|69M=fR5Z@qdVf=e+&%ykIfO~jGRRrs z4P(zN3hLEyYI^$t5K1dHU9Pf}rSjXU(Bk%`_kECKF!X%m_?P(b>$H|SZy)ULzW%k4 zpk|k2fK#kP%IIZRTZ%|>Wc235a#-_v;aiyOe!-o$POi4Pcg1YmNy7m3apOHhHB!Ww znQPhf6^ZOC6=PAU>x})ADec@;fgFEf4BW{IAMTXMEYI&sTA`Mm*qM5h1>-RJUV1Lg zspsz`BY?IHLH2SixTXN#s4jw{TH%Py`V~MONiS|fBGDk%lRoPF!z$6x>NdR`u=o%0 z6(fKzDFhJ?#lj=Xl~gsaNOp9=vr>J>^6{GT2+{L=jT%fEG7y&Qp#tGibjF6Ah-Z=< zjC?C$QdyQLNu8ZgNlWDZ6-WaMLtT0HHEM4Rsa??mq0-AZ!6RWNh}fX!jFjrU`z*Lq zmOvW{IlBuPnW^d;l4(`tugRezThFxMh^qtchKv##)f#W8+t?*#hAgqR1SwUZ`Y_IY z=8c7x$1v@0Sg0-`f-8Q*Heac?98-zJq%(j08BIhjOMjz4-PG)aY(Aq`DftcE1M2)~ z-R(R1lX0bc71{cr&7nV-_qYv_Ap|8qGU^3}Y4>EXD6~luyv^JeyOB9_7SE2C>89SC z!^C;mlqul38}V!ikzj^?p;v={a^Pt3bkpFt;0*I6TWH-y%5VyRcCn)Td^cW=48V6z zyd*G8Zqh>ZS#*Xfh2*|39+^wuA1v;5q*|AOoqz+Qc6(`~V7LX{4pAbd)P8HH8XK%@c{ zZ`vk+4>ztwuZ1(T!4L$9kBQZ0EK`Xh%wVj#WF$Y}`pagfwggYLwlWl9vTC?y6hhss z5_;563D6%vBT@|#-84k-5a&y(m=n%i8>htBE&sw{|E_Mp-=Q5*w=+=c8K76xuCH{A zBx36yx#^2u1nK;e-{;7J?@gF8tw{!1Em5gG`2VF(b0;~aIkjFFLcpV!AmyG%={J$h z?3IhB3bwbg?#;y-h3t<(F(!ATMGG{1Ea(>u0j0|Fa3hpaM4z&uAP+?4O}6BIjY2EiEN zNQ@#611a?PK6TXnKN{g{C5*lD;^i$Tcs&z6?RJ%R(&^<6z*91O(#MZmrY%F9y_AW{ z+cq*QN_qO=$B?IlJ_F`lnFQmMI#Z}N!*25juM|m#(Vpp|l`^X8EIKM8g0+hFY$Xhg zDzF)P(+`iEvR~9$hEOa;FCC7IxL={s{`BsfQ(UgM*F99Ut~)_8hs(s10SSC<`Fb^t zNERh@tx{R>YuG($6!k>s#fk^_eIj;puiZ(5Kd#1YI(hZ_rDf^#68}6vMR%Gz9|JuI z#X~Hw_DQsicBk~vgLAHh@J=kqDDvt=)#`TdD5j#>Br`ApI?r>L*5yV!255vmnNarx ze)&XLPrq8FIBh_@WXGVhqPG;@AH27GgqeO+c5GFaE(p1}+5t}l!+ob`UwqEBv~wOv z62|=t0h=Y&uNmK-s86nCmiAW(0!zPD#7;*~5WBWUFO@LpY6G6O9}B?e4Z8ycSZNIj z0r#&`OC1ZPCBQ1Dw0LS;BA%nkL{4o1i#se71TMn>(=x4F#5{sr zS}KCeU*Qojqa3qBgFsr-lX5~{teZf%7xRRh zMye5>4YV|*{Rhta!W9u`WPttwa1*9=%PXj1~f!_(BRm7W;9i*?%ZKz zozkanYAtNgiNWFUA6NUpo@E92wKMWrnJF!8wmQQ{#9QUwrX`?)42_KSNg?`1Le({K z0#FKscbR>`r5WI0{|+@ZRL2 z6I&)DP4W(cEC5h3Dl8bZ;DP*r7E*VZU&kYgtlbezP+4|yV_5vLl;c#G!?0iTJ}Q*%cZ9XM!z1DlBK-4&@0GrR0-W)zB&B4`F4~i0?dIwbOO1g=1MN46RZai|a zl@K#fsv3chY~7xd0)^KjpF`Z2NsYgP=cHJ{NJhcfJA%yt`kh~1Us|S_i2~j$byqd3 z2Fd^1;O^Cou=(W~uKr!+Zx7|FI8k4`R~;Yk!MQCeJJiFmh`md8ZJ^kr+~hq{}aGTza7flNmnz5(RvFbqyy2gBVW;nD-x!12x-$= zfq14miAU|2ifR}_!uZ)N7by%+FB%c9Mh4U>nq2AhwMhgBH*|uKk9MW|L!desAj(Ns zHffgv+{15ukH;z6zg#7j>Ow0lMm4~PfbcO?D9!}`^Q|b~Jx1C{6iwGn>c@>FY2-5? zgkr~~ycLq8kCJv&0rZo}vVj}-lne)#ZA>jcHm+%3NaWItdIkqo|L2v!Hb)|9{k`TV z^E9kzTdfV&3L?|bNP)hA+d4;fQnshsC1)hZ%M%dR8sUHw03_)K*AR_s98>2wzfd(W z&Yn0m*oqNSSs6j_D4R)r?ek0K_~woOd#9`q-Z#Jo#1BX!Nf&$443*0t;s}+=e>feo zy{;cPGG@2&(i66crLDH57`AomZdgjIoOqoT8#zG6kgo*&@8s)__y3BR)pCVZ@N{fD^!ZKAEp)iCj z0MVQ{<8MxzIQO^LNgZlU;ri8BjkM0Oo2Qk5DqYzS?R3iS>Kg?;x-foGC+qom{y&;>zakq|SOUBH+Sg^I0eTb;Y>@P-o&%!ASAriZ z9!8Axlc#xEq!Rn%NT;M_R3Lz#bMMePpmGNJoqfsg=M917mIhAOh3eomBY$O=vjDOi z>N?&EdJr@+E8suPQvr@y4A*(1ZoKY8=B=$0q8>*w^Ua0?A>2#ui=YSytkkBW2Z3-a zQ(a);$9$`T30iJ~yDhDqY5*WkSRE#b5C0#hK-n1GjyAVH656on@4@<_fxswfY>0+5 zkp$>|6FhkF?02fGq{9S>ix183eQ}L#<{%bRgIN)sE8jFv!VG;Lz`!x81Q!h$XqbaH z1%+No>!Urh{%4*(hB3|6%}Ep6{trqyZBWZDEHHKH7Tu|(#l);&k9iX(sdDC=vxY3G zRmIL@c0)Xm=9(AO#MW4KX3rs%83hkGFfBbDe7?5gv*b1ILPGq0r($sdnKbWpSrc}3 z@4ufTe+T5uiwgyMO(G!3Sr9Xh=jq+=o5ZO0Bwnh%{6*b4LLfYSqef7P zxcxc~pzFg zSu$my&V`*n(B6Ygo5)K-dUBO9_tb%$izW0%wL(7S<6vW;m_05(dPJ z-Vw@XhZ`mU{`eUsBOb6R#bXXJ+k);^-&=uASA8U#OPu&@qFSCuw|z8@s-c_6BUd@s zGv=NBg>hU|``58Fqa8s1gVuEh6YP-c1%giGZ6!XMbiA2rc51`|<`>F{CMCU6i4bGo z+U)mmCp1q`b2518er#x%8Oej70+V5OM>R=C8F=p&Lm{FTidhhKET7Ohc9!y9njWk-f@9qtwG+{kY(gA*2>w@EfF7el!uVM z>)5SP&aT5oTK0U(<`yTMHu6g#9@%K;;6gS2um&(#YeiQt=?+i9M7^@P%EMX%vXc&7 zt5Y3uE#Q_ae)&s4S7PdRO?hN{1yt6N;(yo`_nyp?h;cL7x@yfhjp5bIsAA^;u+&Hg-I@3d0qK93bt=e6({QZkFj{hc_JlG5Yr#dt;pJ z8rZJeczoxESG+a$FG0Xz_n|4~NuKueW|x_eGENN)l-3Ng(XYdekr4|raizyZg>us0 z{GoSabcPX^q+_HNwQzdn$ucopx3Ng}=85BoRMv14p7WU}H+hdi7QfRYQTb%kV&CcIDLYu0lN#WM zUG)-cG$N7c4zTz<8;t=6$b`426xsPaknb0!NnmRf5c;p=Ijt=pbnzZ=7b?xanhPon zXjTwb9eO{i_9RD{qXz?zDHxQCP7fCvNLe0|lZ96l(gh~+BKfIlL{qkuPm3KYq+8l6 z4{0(ESup8h*vd?@)((N|8;rf#L>Saj{%KF?5wQDg;QkSQpIsNN?|eML`flumf6t`y zc6G>D!^G*K1 zkI9#zpIjx_a@$ALfDX^{4oT1BCMp&@Y^?K&VZ=%F8QVgj^_K-e4mQ;2=VX6h{uwOr zC!W|3fyn!DP2RuGi@r-vjd(lEa8_=w811CUqhFb6-vIj2y0uD3iZ(B7ORX8qCT+0>buQ!_(D# zhVhw_C|ekHZkb2o1!*4pg$DzBLEh0K%_^Wn;Af6uH^}P~*%I;POY=gO*Dypzq@_p^ z99k6>*>8@Vun4Zxpa^k96@r338mBn9+%)_?44&L+$j|fMXVe8jZ{C+YH%eV&`Kf{w z-=rH@f!HC<3lxtyvfvem_rJEo__WB?cNT3+qhVwIv27DTiaOJc(V^imU00W?Q1ft= z56sXVhMRVArm7!k78@*=+k=$HDu>D=-#5n)e}+_E0JV#~U2a+2?{=T+^OQf(m@4XE%Btn-qX1c)|KCHu3)?I{~q!&i)urnHsB zQkAFqU=T(5ixevdtWPF^sX5JVZuFyZD-MZ(@I6pr@sPCy<0JR7DNIrmR#3*ekiLp=4I@G9!*m^hRv^9trh9`O_G+ zkOA0$0)OhiYo&$X$+J%;p|WyIv|rO~W9j6*Wh z{~;w-25pjW0*)p*Lv0`n*ILW2|!5)k)Bh+6zVmIInO; zr=;jlst;$R4u&NKbj?e}+SM>S(2G)*v-@C3Gl>}<4^OaiotQ53-%%v!sWeuULr35; zV+@mriS|6SH-eR*Z-WaWl)DECco22X)Bu2JN{GKU@MpXLwqd$>%9ag0=q-FP*Uqm; z`N{-?a9d9+QE%A+?oM!BZ_TR(9N3g&2m916dNldNQZ%;9L<-W0yT=vBawX93ahDS`}cgw_p;>a_z*8K94YL+HOhiqs3&3)g-^N&Fxgig?MH4w29n8s z8|`KVk5&Jvu~aECV8~Aji4$uSVAHp#+fKHib{McTlNzP(QRuh!3-d+?*;-$q`Bi+A zM{nDk=B!FnfVl0V{O__=7gOwg&%-|#fnY23-y{c;I*dTXu{|6iK;!yNhH2|VijDeAZ*_WC?n3B{QhwzQ5jxu=Tn|642v9_0DvuD2S zZ`wOWVJIeJ)EztEatH_e|FKQ^5oPn%%9d&CutsMyk0$7xs{-_Dssp1|$XPnX9#am7 zE>j-OrUaYbbIzXQkQl?pIJ%2cSp3e1g*e)9u|{^e3+Mg_`lXTB@Z~^os@v=j12&067UUVuJD5lZTD#rlS1In9&gYw*p_onV z4ecxEVZkTdwmL-O!KtEcL`0A>naa%^`6U^5sSZmxnsDFtIH!%v-)H0+ko%FHZU&>C zj~cRS(RvsF6D$ zTUEnJ-6>NIF)0A;4t23*^z1Mq&+uGUC(gUf-GPDVV2_k+jb~=Fr9Huye9f>7pLg*- z0m)jP;fAl>0Z7d~7ydx_($n}Egd^Qb*G0SOPCu!%GbimN`CY~Yy{=S??dO2dwHg@i zE|oe6$O>wXLN5JCrZg13-0@&%#RHbpB26d3wo_D>9il_v5>00uGKHzxB?1t3DaR@< zfoq7`g_2YoaLKgVi)fwdKQrT5HQ>E-R#9>%6B#u+Q`+nC_PiT%Cc9i54oho}3wE@x z_TDmBa?mMa`^q9o-@!`8dJOEGto9tM;AIN;1e2)R%JmTDs7-gq>pfMcV4b4PlTs9@ zPlEW@k}Zh{$0sCQs}GH7LgUwU&$aR$$}b|Sx1d+4eXwnm--mBQ4pS)E7>5#J0|#{i z#J^R-{U|Lj=G}*`pjd1ynq2f9zsK9z3b;1>FMR#Qlc`16Oh_ir54Mkl$f9T_NY;CC zKeSF%l0WJMC;@OEAdjBUqjKK;{>UQbIs*5ypB?hcM!1o7<6iIQd$jmr{;D=fV_mrT zk6Y_$yi9wj;Sr z?$W%%)=rbd&t8MQdP1krln_6xR{spa=^f7L!rk=4<%!YVrZ5i%BKdTzzGc10zyelR z%gWTt-8ij7=O#Kj^3iUp!ty>jEzod-Zd3ZX(D6MC7Pw5-sbIe3zt^k#R;Ub!qrnt= zra@Hi%#oEa$L#wQ55bhHyFySBF*BAYb8&HvA`wRZ4w2<#|JX-qv^-7S^4dWZ3RNzi z)8V>zb4Fc9FVo0ku;6oFV;(4NQXrg+=P;u|FZPr&y|wKuQu8yg+Yj$jou9xkFI4|~ zDyOFl4+-CjB``SipZ*9ho5Vs;ydgyBTSt5C@qI)r4U$P>yOgu1kakyJRcv_Ax?t;m zn%?qYs*h|vl_l`;gm?Y8Z$~`N7KR3CJTBw9V`sgyQT4!v=Me(nN~A_xY>zUaO86`G z;39T3=Xgj<$-1z$2v>NrS41AypsZyoCf&c9jLKLdeEYTI)>B?kA#cc#oB}@`jQT`M z*J$V}-etudtP%Yc-TJ=43*K`F1qAYSX4GQ(()QOrwn;2DpA}HXwAR7iQ0P8C60%3P z!5oOm8y%rwb{ME>Y^0SEZQ5f7q;Vg;!KNvlah)}zBETqgN3>kp1MLTeunL+%q9EP$ zW*C3fsBVq##u?^&{qdIUTiy9z^ZmNmbwO;1&boA=sz?&@#FZbiW*b(&N%9UFC>vsd z?TSJa2xJHo_^3zth1{RM3U7Dp2!opZ_DIsb0Ho-o*9R`00w|s~DeWfA!3C+Mt{lu1N8a(x96f&QO97zK(6MHOIifV zBih7ZhAXj8eO`8KnG5rm1sQIzvodnMaZB?I5xBGh$jhp^mJf0Sbo~R@P3R7s0C?^I zMvPm|YhA7wzjy0z1n2J8%580lF{r(3;-UQP^%i61?L)AXka3Pds$@UmO6!+3E_E#LUL1 zA3TM`ZRhfOxYeovoQ82n8as5jj^9Q>io^j7gK-Q^EBY{_NM-|$*LVwSxf8Xe3+6Iy z+s?6O#;Fp{2F2QpU&_L+&(@dxPK>n($G6Ga?(Yq~CWI*I2Beb*_?1y9E3Y@UQLx8+ zp{%Teeh2^qDFA0R4&fVsCnk3wF@N>u`-%Y(4fG(#SOxdrf}@VU1Z0+m2y27>W8kiC zB-wN1vi4=%cK45RX{cX*QXEvyc^EJbD2f;4iGNP?<{oK=9ySF2_(pb35^T|38SsAe z`;F*CIBCImIE+0HqP>|MYJ52jotpyoKO_EN)*&3as)J@f)SmkGsDB^tg8c1?}r&TFk3S|dZ%bWJdQG`q2M>bp?(b%Ec z2!9)9qPm0!zQNVkGs5WLp+jo}EWcdZ?C~x*@dCN=fr07-*RmpPT6?>^vJsUA-ool8 zChH5+Qi?+@coJi?QSTCs!2=zpil@t0v>J@b- z?vq1iPhwX<;vM+bHcip@(GQ40=RzRvFDoJYxZQcv*FrnQE?Umr_lw9yA$i59OuK1R ze;H8uUs)A|phoq|kNc{zL@n4`*g(?J!la658J0^An*lc_B0VX>YxySKK!gN|ZbY&0 zyZVG^lj4pN%mb6qUR=yQ*(*fVWDJZ@M%|*Z^M5FVBr1ehOb{w-Smcp9;-Ykg+XK0Y z6#>{$cgpQ>XAEvu2#&6(lp6pc0RMd9q6sNz3hJq9F3WpQi3f9~u{sF}^q~aVFQQ)%UX(Y$b>kEiVfCZPy^`32L3s3iF_I|i4|EwQu zcN3*|jjt#Ki?KcS54jCW^RE|#o-OGQaq)mk;1fo>MSr|E4S2Zy6JyuNc^gnrJx$>p zQ9K)*M1q8FkB?E(!`o(evn!O{HJF~|t?KFO&o9w(^=g?oHLJ0|(Xpm0+GlP@TgQCB z)-tM>b3X@AF6!MmnG9M6aS-T}@9)D{=nLPm7OYl}8`xQl(+(QC&DrZBO=#oG)vWJo zXa}`z&nCll{BZ|;NS1)Hs%p9$KUXe;E`D0dOYEzFjsf~8?6}v4R>n0%53i#vy10B| zgm5iVr-cneJ*rA(^(~QmX+?*c{!F1i)qt3F81D{2xwqNKIF1XRbhDCBtK#0 z{S{9#6ZD6Pc6k9Gr^FiYDgF!jKMk&yNmCjs_jZw*v;fX+A{CUG>ssBi1_KWV>s$nl z213Vt023Ea=L^ScR#Ob)OUP$l zM&_{fJn;U1RQh>Lj|D=5wx>30MoP|UV4%qdMwi2~>@3wRESI-#l_hME;huoJzlkCqbk?`Zd&#bzs?#;sh07eQ)`$D- z)~ZRWRu*3$cKyQk49{0XoMqAKNrxvRB3C=W1}HZWD2abjJ+!avHh~aH91$f49D}Xq zL~VM~1Z^RB!Ea1Mj^(aw9u!~3T~Et}ljQfv5iC6si?^IHROKuG*B#oa{o`a4N{r0? z_sHl)8NY>BAm;JCKJDo${Hn9=> zSt=4(SCXFn5%`IcUIRUsQWzxDO%gYX|1Gn4C-wS=W{Mi|458vC9*b+t4+L}cKMC}5 z;NoOck&4D0X~n;AsdpZW8WcGtm3Wj{BBK(^6)kEhrTr>gIF-rV-J<)kLx>#;a7@gN zeil3sJ~VGUpue{BPWcV&x6cL2sL_xC@43WniNMqO#X$ z)OTiv?q=w$?;UjI3@+Z=LRrcw*IaWQpioX^f~Ug5z#4PWVueG;&ovJy{czy0375hR z3kru;{!N4L9PDF%JL(V&A~)8rX?WsCGQB~3Bix44#iIB?4l9l#r4ck6T&a=M6W^!J za5sK~ZF(vRVskQWeaf$G%ax2>l%QqfX% z3$%VFYM4+c{*&O(GIE@u6}y?FGeypWs*xgRfXd1RO1me>M1JWY3H0vHsnS{C;co;z z)XVJ^bSb+mE6@sbbmqQSgkwuyiMH$|PVQgz4P&;d5%*A3D*-i#m8@A8{0AAI#{Hiu z{8lWEOJsnsFqwm<0w@y0K(TpqJXk8afZ8Ynx8mMPQL2PL=v7t0Z;h;vscFm{iA&?@ zX_veovgu``DAU_NrZK|Pg;QVpN3XyvIfe2#cJMZO&9=5|X{`YMK#UdlBiuQt zneDMQLkQ2988w(Mwdow3w(u5fiDXMNgLeCg`7BHh<4MAvEnaJKnadPpyY)g&PK#77URjK+3|{!GgT;T56E_Jjv# z6T6wczm;{D8L}@wJz)~HSR2ie>UAU!S$7xLCA=#7K`J(i#P>(VpSs(|08=??5>x)- zNe6HZZr}$c$9oLFIrW};b>Cec#Bz{|nV9APQLVV!buo_*+uM_sRbnpza`Tsyu zPV(Gpj~a%CHW_^*O3!(XL7OVoc8uE7iQu$lzY9$r9p0=k`RkgNOv^(& zv3qi%K#PHj9SNF%TMla1-?dJHTFJ2qO5GKG;b5AntM`uL0RKM#z>ah3a{!W2%?;-4 z8(z57Sb{m9@{D?HQ8T$F^X|6XsOV-(1rC;XS~-RP3ZD-7XL>W^gR`E2ze=&n0Ua-o

p!@S%ezZYeytMP&!&hS0XIC3ZR3XKLM5#bO0 zu3pF5?BLTp&acz>^gz*`SNAlVC9s9ii!h+slRb&0CqjH#L3ee<#>3EZF6P~&^Xou0dqvvZDyM(bk=yGn zTAAl*$b&&0EU;L)H0oa2P-vd}$K_Q;I8Csk@)rPRD~>ZVGSHuku?gt+KYx_nx|A7q@jV!pc; z<;Ac>x=-S)>~S`06XWtrtw6xScFL?V#0|0_ed9H97k=ax;wLC!pvb(8z6y z%v{oiYf>dPTDeA(s+I%`NzKVpg$R7*>6m&YYX~A2^O|0@o+_ho?4x&T)NY#v}=AXe)p3}#QrcI5OBNO1xGR;ACA7k0}A@oaFHzYVr=0n zlWVF0+TJf%S7Y|q5(#b;;0M;OijXysPVZC7ElNDSdN6O@Iup=L&vnt{<@Ml^c0(%W zetX=v9;nv_y5((>evz|(1uyn`Vwt5^F$|X*xgOY2lp>*DX3YR$y9pnyJ>5vbV+M3B zBbM~nFATd7m$9=K{%K4Pf9(520TF0Cx$omHOlFmFHM5y!tb4EBBvs@=rWX#18`mQM z+K`3E6D|)_Sw`9>Vc;}*KCJWi4jwxbk8=MFlq%n7Qvd2ZIRKkaJ`i_1vnhd;rPrSt z{i9DZ002LV(lck)L@y?b?DT9tK-RJG@;MYmljcn4-UMJPjZGwsZj6wXP}%JQH&dF; zmWE?!QiQ<$bGr}mNRFq`{3A8eM?!yVKjAV)G%8TdS^GP*^NCqY_shDIr zaox(9pAwI~pLHleD!SIAZdz`yzPH}GU14s?s*c}<_v!JCeY)oN;do^i7vMrYbkcG` zLT>eQM(m-lkEYFL2g5Or4_R?L8)v3L2xebm$Iz=~wm^M=u zB{$eI-E$lwb^VE>!Mx zzyF8JF0b~#;c)FO!3QeNzk^qqa0GbeD|GO^VGJ_z+q;7+M-y*Ic`+MGM1m!a+|i7d z?#%4T6_fY0Z^we;RJ^DSzxY(!STbgAq41k|ufv#p>$5~OoI1nT+T{!uRumJyZXFES zN-YcAHz8D0CnR;iFMi8U&*c?-+I0}%x^4#JE@5a3%X}Pom)St-g4vo8W1+#c zT%;&E0Vw+jAK6?V%qbU#VwW7$^QaLvDoTyL;hk^)XV1d-R>Cw&%BL zKzd4C5$%8G>*OB-JJJ23);st4PibgW_BfJD#($crJHz zTm2oIsbDA%EI8Y{eie=b@{XB6U^ctn-=?c60)AM<7iHQj!3dHu1-F<9Q|$(W$ieh; zg`65R{`Eh?!C{NaE4E2v|!)-9E ztJPs@YE8TiuUwtWPA`+FX0G7=K6$&_p7KD8@oE-kaZzK~CPyK6-Ov78vTL-&c-v#gY!?Hc)U$O8TUu*5 zXa6=5PXUp=zty4yanP6ZTyZFMo8%d-kUDGJdgU z*Pl!NkWa7}q9km&@2p5l#=e1OP|+D&7nrG9lL$JC9@V6o+LHdP9skm?zKBx4?<>cv zH^IL<4M4!DL^dk;vf1fuB)gTQx0PauU=CbaSlpT`e}mGFDbT3WWT3g;uVpD41Ro_T z0*=&O+_y~B@a%lY?F?WK1a4SLhSH{v){H#*SI&b6Ob}Xc5VVo{O!$MqZmD8)v@>3- zbb^s$X*$;_CZ!JagD^yOfR`}&Euz5qKx_O$1YkfXaI@>TGw{(vJ*^6$v^M=Z(zN@3 zbE;V73`I9qO@~EQH$QYH>b$Z&;Wv%~P{jT4fwLos^}CcLepk=K!UT`3y$KKH^xb;8 z2J*X?-dwmDh*ssM^)s*n=m)nl(k)>xDev22Jj@}VS=6G4MZDT$zrB@R)c=6g6VPjO z9X-3y@AM=+Z_W;7ta)zO))ssO@c+z~hvu#Ui@AC?$L9jkUf9v{7eV@;` z6Qp1pCjmD8QVIDS|9dW3(JLRX!%;_oqPt<4=p5kDVyj%maMeE)# zMZ|>YhOa)v_5x*AKk9JoM6+b;%wZYgV8=kepC-^wyZrG9@;$P>4UntHeE^&vGSM`U z7GF?qDXN8-vTxz|fcBel&b%q>#+k5q*8>=RhPV=WwQ5}X6nLt|(rh-jln~0xYm7ry z4SB4DET)!$1nB-NzpSx&qjq_{7&z>*z*uEQi6&NO)i@bOwNbTB;f#xPdbN$x&|&)h zbp%_OhuRM*mq5wV>gOdS#(dMuxY#8Bki$tIEBU{i0t%G!fRspGA_$>^$(fgnFQFm`8+`$~&kpq4KE`sD zc&y7Nr%F=2RA<{!sm@(+5+8js6%3>(Sx6EG)GS24xTv$|ZkMZJ8xjB6$kC`SIryLv9#Kl$j>5-fM?%;M zV|#`=OUWfXU>I;)xWw+PJZXMR7b1$z4Tj$=lA1^FTuLuj&{G-3n_pin2 z=&(;o6EN2%qpXfPTR>E0zSvVPXhp4F>2Y%X{TY}3y+++JL*X@lH>{BccV^XHIFws3 zK`(0f=EnwxM(%Q>C_tRkA}Jt5e$o{Nm3QT}C87P*-l_wv=6G0|)SBMaj^x#XAWpFP zo+bRdxMbPj<`*z)3NV~i#30913sm(HS3XWngc;F0Ir~8k^QzE8`S8(FDaUZz95rt; z8}F&U##5}^f~-D(y|ErHuD{8K-t4UzWJ(+28vus6xKU=v5UA-+t>k8N?u$9aH$Oa* zgHIps?f?5R`iBTRCMk3un;|hC!BddH;YK}>I;9}wYl8Y~sWnVavX=QZ{9@qk- zBb|qWAS$Z&WxmBM9T$= zrpJooo3VDDA5{~zE&k9k@4q0J%l$}&K!Xu^v;)@~r|9u2{I zNbch&!NwfFB5rWJ#~a8E?7jvW{HkHP2nYt^$UB}MUIrW;AZDuae_@as+{e?zdO(Z~Uyz`hS z*0(f`fop{o^@Hnqly%#1j zi*o2C$-emVCXNE=Mla4m9nWCcTAnlJ;+-z%e+fx8DqmcQ1509e?V3&dP6d21XG5_A zKgW{@u%H5Mld(J?xF=DTBgcV(tQ0;!rnrI|S6KJi3eOJ!x5ZnzMevMOnJwD>57ujO zm!as#YP5d+UuJvnUJP-=w>I(LVDLOe8wPoK@`#j*%Va3SK@#*uj>l{kj4cYf-RP&qRU>M zw!UJnc60rExq)>LL~f>nXvd%h{RYXxrb{0D%(|+CR#W%4Ccuy#M8jKGHiUI4*O9Y3 zWp8b|g|+WLn_*`)`X6q4zgV10fQhhxMjU(`(sK53PY=pCS&18!$(~DR78iNWj8A{_ zs2ASVI%RHQw5sO}@FHhHPqczyb2RjJPNPs7@Eo_e=9yUV>Bv1l*^NE@=0m2_w83W+ z#{3mN_^pZ6KBF+iaE!)j2`^lvg~aoFg16be%M15BoqM_W{+uK_g__;T)e$RJAs`(p zxN{C5lOThXU%_<}99M37YwW?f>`nL(h3;`$Ti+i3y1iFJq}6^O_2wN0j%-gF zjGYUCESDstByde@>_(Yg{G+{@4{qYY50TdOqKO0S>%9c%lu(ml8r9JYwb9>tN6s=k zCMuZ;>w~PiwSxu}k;=@<&BcuUjJpzmIN^pe6jXOo6rA4El1eZ@KqYfGi`W>xR@W;67put~&8pVzl26^lsX0I)+<&hH3L8NpO9>9>6$)CX&_KcC z67)imQ%ExStgXU?MObNQSNEx1?@K02j>wMPJUd8t4@)a{G_}B&j*G4Q;?8Br3Am8E zEnG$VPSz|gJwpc3u9;^%xCd7^@!P5Yoo()+Fk=! zTxf-II=IugH$I$C?XE+Z%*0mE4VrQ7VOM;I>`qbB)e+wv1(Xi>8_F8^w|w+NCNz^$4I|Qj^Hr?`hsS{JN%joD*Gbf$>KV^NLpegz zS>zziBe$3*qQl@Pz61-kv9cxCXo=i=$${;ZKjC!roS+^Jr;R3{2Or4W)M7r#fwZs~ z6$tbvfD#aws<(U*s+#nJ8x8kij2Vh*l(kjVM?NBu^BE*@;Q>J*f!_O_N{j5_q2=~W z2Wq3MN`;o3kN!I*_^Sp}`}Usu&Sz9ZR31fZD=mRb;1J7ueAr)`V{U%n9oj}bAcsqWxXc*kCe1-Z=`!S>0I|;Ai#^k-lq<+r1 zl)u_%DjabGnsg5@!EuVE6J2Y}6l=zsw?wTc9M+^-VXq&eQtzg<(&&m2Y~nw1nO$zfDTLIVKzm^9uSOu&1ZvFmBR^?TqvC4lZHRFq)-h~kGwvfmlYSTo{@Nd8LjAdY!TRl?Z+h4_Jm`u&?!Canu#YKxI&;{_vmm zs6x1M&USt6WHd_8M@6=Tv(D&u%;N|m5ry>k(ye>i<=}|C!kETjk$Di`gj%pp-}YZ8 z2oc{DabVCd8Dm{#zC(>(~sg9-4UxF@3(mkDJj$%i!)s@hd zZRV<+TJxWV#panMs`g@x7uztB_;(PnCrR1aB0tLNEb}R|(@R_8!&o@KzWci=N$o~3 z-yfZ>t_RE)nJWdp-$r`s1si3AXtvaS&%-0b^$AuUK)Zh=+4NgY$uul9-wBV+NINm> z2uE}u9Pi_oO0JWX502TcwD2>7)|&M%x>>mzrpf|TC|_CVvOdXEk;2=Tjq!+F3?izR zDzm_%kiD~ zbPBezFm!o(0D?Aou3wJ2MxVj1_Lv7o^?P8|5CH4#9AZ06Q$fY#U5(7Za7=HGa!D?o zP#N${XJ9-|#%55yiAM2xK8PhKQ4>eOWQ{28VZ&qi+D_gYHa|toA+*EF0|@Z1b{`~5 zA`Fkuy~Z)-Sk`=DcTN+OCU(_dam^xyEuL}|D?ftS!Kic`8v)o!=mBEcry879w;WQ0>+D16h<~FzV1?m@(L5!geHUN% z3~y6mTb6|uM$H$HNawKyw`tDpA2SEU7QYD(XQJlulN?@>eUsVsONSl_1GC@8OF>8$=sy^J$mq=%TTex|k4w#RuY(9=WJ;_> zus^g7F(^-CTsZ)~`ar;~(IAtVxbW+S5@U@>)xG@v{nDsG3=yC*+qWmi2PHwpDpojm zE^sEiZet6ltf46@`UM6;Y1iMTFSx_glJVKmqKxoyS^R)Yd|u3bHzGs=6xM?vAcY}< zPaK(H+fY+lh6NDVrnu+Xs3c3Uin`Jl*<*4(ke?#AFCym|C$pB^4~|;C@}ZT84Y3xX zQH;L)x19&SV6*c))sLOK08>4fM`Q~YB(K)6jh_D5=fy>YW% z1%%NWAveDk$iOK3m)%&l=Sz+v8nV0!$4^ND>JIkvRW2XAx< z)W&&EPAje3n%p73@U!Q0kBj&FC|A(8LAXWgNh;S6UdrAj_(1tFNr(|jayA=+AmtuT`tYf|`#nWVI`{gQ@MA%>s8!z)j&qz} zR?DRCE!dBKzjXkP{?y)pnHDnYK7!4EkhH>S86t@ilA~*;Znui zDLvO(U85f|I1O$nAq?59nrF;P0dD|Es^#Qom)v|mH1IDY7vW74eofdxTPi=yr*aoQ zNc~0VjG*E;+KFR8VI11St&D*pHE|hFq`me2Clklth@@;-29*^tm4fYLerKAA)Hd0n zN&Ackpz8SVe`N9}Y#Hc9qkn8pHt_Hh;>_yqMWK;3(8}%v=kP%C;pSv%uU7PqO%+4Tsz&_{&P|ajYP6#`mT{%y znZHK#E|}W|Agh;gK(koXS~5%vBX)PL#gz;>+<3Fh93#Dj1{fB~FUz~X+CBHC{tD#f zL67x|bG?^E`JHw<(*)!Jsp7Fnt&6x%*U2w9{cBY@FUQtgvoYOv?JWI+^H1g`3!Nqz zRPY#*i7|7b25uLe=&8X9L%s8*i#JJxlhg_#ZGM|SUY>Hk;e;@$BCKdaTm=l2Bi?~I zXMReX0qi$`^C}8!f3f0PqzR*zku#;TAf@ydv@DtNvc{hJp`;gybDxCT#Pe;6Do)i@ zB;Ad0XqYUrW+m4pS+w_76UH?~1n;Pdf7RC|W=KWQ9^_@@Qiyfb`6HW%|3!$eg^e^#vP4qH;BkFXzAOJn%wWALs1Q^|}8r7t=3F-Gz+fgzf)vlnGl? zwoOtf+SBga{TAZ8OqQhWBqk`vKF{HUxoGEiSo^^)h#wPdzs4LuyF^VpH-WP!^kSZm zMs}ytl@aP8%gYAIyiR{VPHiKq_)QHOmPKL&-+&-RbBH_L(|1Z)iTUMaQyB;0i8tt9 zEgKZDK|ICO6ke`|XZg7~O?Ya5FDq|wS6y*eS|Kp=2WNMUU_R)nvvd`-HZ=SPOMggt z-qOpuP~9Ii`{NB0t6$yFx%b56juP6 z!D<;HVPJGw4VxIfz2kqCaHpLhJ9Ew5BfxaHpVhU8_qHD%tb+tkXK$gS4naR+^$!Bw za@Vh1X*%YdI3nWgh72}fTi(o>C_q2UN8FhA3i}4WUqZr^mI2)~aDqg9stdpN?IZMU zqi@&BUA6F1foFx}DLAOu$Nj8h0h%odRDG$)Y!*FL0l4%e8NOG;kCctp15Otk0(XRN zaKN^x88w2=+4>%|q=}#%%>tkAZw?U>v;rBXrbCifp*P`JjH_t#bf~j|BRPIa&)RGt zB9F@{-0L7*&iTw>`taY3I6k9$cvS90`Bp_73ylTl$W8BAcn%6T5O|~0l*_9{qC5nB z>PQch1k3ohIFVt3oQf%fuYZJr0{P-yM5I%>q{j5noD8;lf-HxCNLC|qQ?IUWBhMCx zNnVeOH0S}Dgr`;GfvS&hRi`lsze87^JHaxaiCs08s zAu>gKx!N~+-U8pGN3)B4iGG`+e@b@KauE*q7upO)ru%A&l}`bsg)$7e{K`Vr{cFNz0Fk*nx=w&9SeY>0Q}+jqmzJCZRl4 z8rw%F3XpZU{94X06}hm!xM#VgoxswZV)l3lhR7W-7%NWQN8~?12`Un>r(~N}n4jO^ za%T$Cpb5?V>o48vqxMF;8(vV|r+TR+a460jRwjE(jfZ7j)k}oGn#2FcfoA!kG6n!0D}wl1o)uTNrp-t;cL(@)-{zo_JR4Y2g3< z`!65C#~7yZ07>Ek%xCS3%Dq1W_6Q*�VkGU&iuL42V@kwy4I;b+p6! zfve*H{yQ^;N)4bWkyG|)dQ^b&OXil(PHxr_5v#SEaIey9QJ@gXow1#g35BYQf)9-xK{C_ zfG)mMnjIpO&t8snoku}$W;(Df+6;IWmb;3*n#h)B< zf>PmnvEt6Pb{+jEz1IqRl1I?~I7>m7^rQ;cHMleXo6`L7&q4H(AyRJ55li|sdcGTZ zJLydM#)}w+>%Pnbps&xCw!R<>anUC;cF+2y2lj1Y{2Oh}u@EA}rA(q}q4fdh6Xf}a zDkb4yfo#rz&@~WLO-a(}!ixD*Av;eLT#IcHLItc$=>cd#@}@W@ZP_@`d=&6bI6ofj z74Ma;a&vXsgRkDFqe#HNtTH`EYM-&RnAoecF(%pKPvO~zSp2Ll#3mhd;ARyE-5{X7 z#XFD4-(_rq89n9;Vh(RwP}1tqaKs>(I^zRTGbff9f~b?xEaNfT^4nf#Fe0Py_NW9sgi=j*llSpj>i2C3jHCY6G zQ48t|#his0?&Vqa`d3h7RAd%6EmLa)nE`8`g~uK+-!I; zV*w=2pm?#t5Ag|Yi1r10H8p3r4~>VxnWWtq#&BuhRFFO*%jyTy_KvrC`jY1tfqXb3 zg8TU=TvO2#jzBq>e{b-zyS%zWudshi%&F0`MeXaEgLr|hDk?2C~Gw5@v5ewCQ zD^gpsu?KS4F6Y9xEn&=7^65ESAg39NDZt@C8s(KqWQ5Z5D!sI4k9I6(Ucu|d@1C5{q z%JZ&8uu*5;r}*uJB0plmfK^bm1z^qV2LXycvLAO{B;YL~un7e{Kn@E2({WIN0KnME zq$Vsy6nJC~>*R)I_DHZoUm}Cr+8Go%JX`6=UrN`*ARU&Wqj`t;Ii6{6|O3TYnjuamO2w8V$WyRUf}%{zX|jD^nU^gWuk zDh3LY4;J5_vJi;D0qoA)BlrZ!^XFQ_t9W7lVlA?!x~5SLbho*<8J^)%UM*uE`ldCm z(Ycz4hYoW&SeZe9)2UAFkyPIea*2({(=bu-{r)>1@DyW+#4?IWMN821RyrMSvTHs_ z??Y9!zV;T=ID)w*;Dkdmo)G*L&D+MN_Bc~Ik_UJt`>rmnPr*Z}A>?G~NrkGv`ki5M zbU2TK8*OVZRC>>2j!ulIO29TwxGJ`5o<|c*q&XKFi)?e0>kjscZOR}mx&JEV^$NEM z%4St=t34+4t@p)cYAX^taCvmh&oI||e%a_35ut{fu>sa3@AWV0O@xH;Y$LzFOE5fh zmo$@0SRHQO5yYTX5Q4V+YqSxQbR=K24Yk%4y7@iWHlV1`hlTA3RWe1{j;iA7NuD$I zvy!=)|AQS}_v=$OiV@M5B2AMs;D=+Qs0v~|f%E*=PnU+GF;GEKm^^EZ)Kp8QiT9lx z$xzyJ(cN}U*@tvFTvdZp>`TX_d(sQhnhI^L1o$fAm(IjWF?*ScT*YQo$qO}nLYX8; zHGNICE?IfC@Zo<0HLKJrf~d`thWySJT0pHKxiJkCmu9O(E75OgSRJB6Ke5bny!X@z~73xJIA`~?@Cd-Jy zN=M`WXNgCEnb%Md?Dkjh*iGofMke2&=~$s zaz3}V)KOu@Iln~Vn*%g<$?W)buN(KptEj^320+*@ZRih+uP^@hPgz3e{YQ&(A%ju6 zzcN^xLcF|$7gLfse;-w>Fn;k#CwI`l+jtK|D|T{9Z>4O=aZG{Sl^1so1a)_iVZch% zO(Wwt!D9t;6C0+X=TbAfukLu+7QhJ$2E-lN8-U_Heai|uHVOayeyx<~x<7(ywP+H3 z-@>j^x8_b;0@=+3X#YU853J!FG|J+pzs9Ls1l1Txk{=+Ye;pl4>mH*aiQBVqqX^l{ zff^Vni+q#fcDv=K9%AuydC1K!&e$K3p-e+(>x(Nq6NCRPlEqUxy9HBTmwXS50Zm&{ zyk$3L<_7ifg2ZTBa;?-VyCwTN%iL)yN=aMo$UQ*pMra>Jw>LkFS^Df8W=YX-Ec z&ikHyIjDkehAvC>LnJr9`qTok0HL;=|)?@4QzwVvOf`qge$~cKWPR zEpSTn-K+6``G16;)9SkTXdpVVj*fflTqF}pd3_$1I-ExeK>2Y(HuY>}-V7BHcS@#J ztPNK(&p$4?9+9jZf}u#Rd1l}{9{Sf6d^TRJH1$S*gAPcLrEk6Ud&^W8sV!)%i{-cN z8R&{q+hX4wW3$0)&Db|n4Xot*aa7B=sSwu{wqI@9!W~QZVh%#O=tw)wDzK$Px$U-I zWJGdWSJCMYzE*ac)-D%~S8!Z!*@w^L@CG@eG#vROSV0d0IxESV!y|1gm}Ayn6A9TLu zzDG@{bIQoe!D#nEANoPZT|fhf>w@?)s$qBhfFW}6+}8UdNRio$i@Ix?q_J zG?C_f6mizbS{ehH?ga>7ij-?DEaQB|+LT6nUQ!Q(>u~7BT9f-O)*woaF27N`J{VH$ z$_6SviFB;7f{(f^>du8ii4RRSSK>^+lwz<`UWs_I9&Ef?pr%+DNdj6jINhzPvpGA! z0w4qbH#bw2^w9zYn5sQrL^O!LxTfTnv_$znICyRe*gwMt7-_O2Kamaz6xp~dv1nDk z>G(h9MT1>&Nq6_G1&a8I z$0j#V4pwED4u3)s{FN_hFR%@a4NNsLOe2;5-@zh-&9}1L5LYgSi@dGX%$ zlJkWAcu7-U*>1x&zGyCHpY)Y@RoHm1io4xN(VQJ~&<474D;Y`PLpV>d3aXH1vyN)@ zGnK>+5LvW`eaiL-x*>bN$s`-SDM?$ThiK@8sGd&fF`GS~d2HF%gxF8xIk2(n>SsB= z0#ZEl&;`{aB1^MCHESmiCUa?}SVBMq*w8Zc zTQm086>XzFX;Lw+qXPt2)t!OK0W(vb`jrf2fYU4lAYhn;{1w1i5!W5ig~;IoV|CeX z;Sa)fec77RKrk0rg;l2X$p&Js^#jw_JrgHKmFX*Hv9X8vN#)JC!xCGE$NFXL=SCs>zg>^qIefdbJE6ni!$xply_vT+Ui#xe+n?D9mj zOV9o!GsC(HC$d_OvPTtpH=jE(cwwIgi6Vb4&+*-$g-DYnbc*$pIMe}XC4mD91T@fQ zdoNHkMXzhwLz?!x5pVfuc1_k9zn$P>TNWO0I(w7tC31BYH9YINlxbQd1;J zQ9OMS6bi`DzubX}x&&1rS2C+`WJ7w5celXY|Kju74uB1Suc6Xi9*?Leyw)c400Jd@ zbtRv<6`cpKJ{C9aVCmoZPpa9F!5VR)4$r?Z^W0DGhM2vvP7j)#>mZB4#BK#ShgF@J zcR?RJI8|#Z>&*PjQ34S6{HZa)KWu3UW&H3iX_0z`)^cVMRtM=NHFp}-sk`TFy^wn= z%va_!eTRijLHzn)BWh2%JgxfNnNSskt*zK)U!}i?$24fXOa?zz;M&r<@ogOnT`=`U zwuFk5F!P?UlV3XdsM;Fh&G0O*b5(Tk&~oIE!N8wJ9M=+vg8t0mI5SV`9`v`WujkOE zzKvTR!x>+9IiOW|E!)i;Da$@u4{E)XErzaQ$#7D&X*$HA90usWK$YVm;B#n))6u3_tEik_aAKtw zAdejKoJ$0?k-!v|(|XCL!{{Ch=M>#mdycBPFkEJ0e7lELlS zj=Ki5#t__ASd^Hb-s=SOp_2@fWf=3Zj#(J6>bXk406PP{-OK~gJRQJH^&9oV`!}G< z5D0+}($LnE2F9>gYVMoyxP$Wn>(bIa@+qVlNx-_2^sl~W4b+BL8RA6hs!Nkz=Pvhe zNnT4aBevc=y3bwj2lGyo4R#ox7jhw)x9}T!aa7L*v4HJeTZem=+-r1YOD**SW&CvE ztN2zJ>M{H&stKY*AYz`;*Sw?h<{er!+T)u^kA16gS(FY?qAcX4=#KbS#eMGr2!2?3 zarXxl=Av=+_m)iBQGcp@k!)Gy5uTqHdBwb?ddK&f6a`Q0!l}u-o-IYrcHLF z1Fgpz!CLo=Ndez!WAbhxrF|Jpe(Oo7k+jm-a^E4&@2quQce3qrvoqlwq_94grP9w2 zZd1Qf8qB~A@P5FZM8kTucF7CR{SlK4j;uj+CAv6GRy`wl??FQ$8-Gek$+$L>5ip0b zmr&rxBObRE#*cQnF&*_QnnMmnJ4#R1({NyzN%~w3Oi?|!*HDhm7di96m`>Ig#!AzM z=o^h?7j76@7kj*=pV)$qE^!o!43NZn91%oyl6W!bEM?ve%Q`o0d9(0F%nd-OqmY7- z86Phu9*S+gd=o*Qby-qc;eY$GytV)yN|_HlK$jTD#!(-g4i*w6l&Gp&`^!H#h&bf5 zLUIS$wwW4QHRR>jt7LppDT(AyX1mEo`;o!UeQL*rqyKGA1uzac6E5Mmnu5HZ0dER+ z=;K=(ZOFcXQPyZ0u^B-ZIR%}v2cBkt0{!?ji9}Ub8gZdz?yK^nAfiU9_)0sz^{g@a zYUQ83n9=?UirnM=C56P0_wKm_hzXK!4`KX%o@MJ z5@M)fPr~hGQRT{~P>l0?LN;9@&YsCpf1UTk5kk6==ST6JlT2M^AoFBU1=%-R9(Y`v zWn~~cj4T;q&v@rLL|U>s5hk&$NDs@A2r-55hAJwaN=;Hy6uiQ1?!BSRBKO&_Qd+4( z(DJn}LV^NRN?fLlFf}rf65L^+kaH7jGr`+wHkX@W4& zYON$#(-p4e=k_$>BA>wywQ6dUA$CkbiBO?)V}?}Z~= z%N&;Pyu&T-SkbkbVNb$~DZwUG%2bFm%wJo1gHd^*$TecX9_7>#@IBcK8k@vbtgjxb zHVex7s(HE^y#4u)Erf^_qqx7{5wS*I0lP2IUtrOQDMp?tL4bhbS|Dwf!U3)nS;$sc z&xU7x4B8j;Y1-V1R)xdz-DllAo8|EiV@B)P`p`h%=knyZ;&(6T|d zvorB)0w$XcU|u(mG+EXsk67EKS5sK5i&hgNK%e6i66y6xlzAOlPYIhI#YkO3w9eB< z@mIVAn*CVFdjg@!v}XYK$$l^|$ijOd$*a6AT*)5UnP@My_z-W@vqsc>a_Y`R#wOdi z|1?tw@y`Ry4vv3s-4!fR1m@xfUILXL(e1`pYjWjJ24QG_Mxz-4^2KD+20cI@C1Rlwy(@p;FyF}cN^J>ktOs*0vuv*w@Yo2I20RKM#z~ACK zSxFt|7l?(&N$)2Ys24Zx$_o(7z_iy zM`hrstFENMz+3kpAcRp@p*PV##ST7dVAx2Ze$uOsM(qK#?(Do31(LD+>}(bL2XM)v zvB|WRQv~w<7PvMrBh3x?9YgrxJ98nX?8giqEJrEeIsr?R7RxNZzIyd|*eCX3 zlgTMjAm`N$YSdqD6L8d~h0xMeBkmYnxe@e+zf_@VB4j$;+>L>+(%iL{6NPXMNunzf zqDOCYesrxCX`?PYexfeM@i}dN3mg`r)aQ&g)17GFXo~kuD|2cs%1~s=eP9&TLy*r# zeb2uIJ-EB6&pTY6ZkRe{nBHGBVDKDzS|Uc%6MS4P z7FjI@cF2v#Rc!o+f+1c}G|?x41W`>?W#edug(1LETIcg)TPC|P0KRemDEC{3$X9F>W$gi`#>ZUV+`R!wW-np%}p{{6I=xe2v=$n?Ub zLaGII$c~zNwVC8YRu03U+9eAYCEd{7-8&*Td{}IB(~w*Thx3)#OH6dwq4fuD+o7>c z1@09O;!NgdKT0d}6{Z$!BUC0@m&lZ>Tq)@{BHZYT(~UNIu_Tz(4;cO!Uj&(oyHN9H zgDmHLm27G3iZd2XtM^dsWfr|3#L}5Zo#Q6ev7$cc?LrRkr$a=#+Idqe2B$y(ahXO< zU&&iEg`?mQJyMgAMF_WY_$3FAM1ZnlvgDX}EJRbu;i+&CpPoH4o)wprHB=wjwon&w zLXMLxmAmz~6WtoS%bYg$LC0(IZDO$WQ?D$UcrLm!172t0B==*9n@eOCL%qzPW7Mf0 z74#)J2PV2lgrVpIsSR2AXS}eeQh&nr|5D5ZR$8|FjJe^Qy*BkZU#R4$dbkfj=xB33 zo8>iR;uS5*P?fiadozaUAYdI{YqHY~FX$2z6~sC;Nj;hh!a97+qAply;dtzQS4{Iz5`36v~=thSg$BY6d%Lx21WTwP1} zn~6`xf5i)TSpuMozRNJDtc2)_*V z5QYK{$9wo$$CVp{C11r~^!8}^M3aJYBj_DwdH}LWCx;53Klrx`JB$~4o{gSIz}8-$ z*@z_+DY<_k1N2K2SJMO6Ke4Fw7d++vxwS#MRw1`wb}FH=Q*z&hbI#~<^}>}PjS2l( z3W6yszS8WpN;XMC3_$r#gMvp*+(#9)9WWKYYBDSih%FK_UR$HxXdojzt~1?5D{Tbp z0gnrH3HuUhw z=u_BYFL;0+-*y$=TC(pkl~SUKUiGct$Lwr4m}9UY>^dWGcrIV|NH2cj;c8N#9884v z$;|?$Pz+M5#j~!`M945>Dyx>o2&{*3{?8X)9MY^X4$O21S@`oKK^*>YsAL9s<^rTFvO=%3RqK;;uzO_A{HD~71 zKSSK^k`4EG7jKz5=J_hvBSX|Q(PtqE(h~Jf4m~O_f-QLlS`OL?=KR1?Hyp{$83awn zv9uJSgqus{Fj`>xZ{ZkYE0YML>j*CWM}&*j*gRx?{34QTErc|Am~)Dv7d$o#3i#)S zozHFC!J|B$WFOP4pMyS>J|q z=B=QAq&qY0nQHJguqv$67VaE=q$%?Ya*JhlVb?5#r5rXCp1i~QclTkuWWQqEejy)aZ%?zNM`1}FRXm8O!hRPWUh`x z#jf5nK(%+-xBgy;Db!2r{_EIh8;l@O07ShLcr@NAz0j18ZP#IGl=&n*!)sq9TjyFD zEBFXMNdC)>{OLFR2kI<|9J$QowC2@jF3{yv0oce=aQ9-7Kt{Pu;VrM~0l?xkY$;mu zcv-`{QG^c6i7dW42z2V7E{etJrnk=9h9oBsW}D^NCGaR$6r(OuzV6KV_+Mrq5eQzj zu!x#<1x4aId*gwHJqZK4B)6VIqZ2h#I`X0l)ZU>~jQ)kswNKc+?#rUFhF67RRN&utceUcX9!7{cB_jL`f&k$)v4QefljC%J}y%tbp6cE=^ zo;FA+gB=9Pjl7VaF!%0s;&rbnj^kb009M%Jl?{>}WPbO7(aWn5>R-qWSng1NbJ6 zsOc!y?^wke14rTC8%Ja-A3OdD^fn2ar>rx`5kJ$3YJJt!JPs1vU< zSN53&dcb%$Km)q=jUv1>V;76L^QUu21$}|i2skOgDPo@NmD^h33(neV(H z%yK_`Wl(cSkoC&=`zC~^qqvZq9I}e6^5Ww-|B0dWaep7d49^po6ka3$7706q(`uL)eiK%NuEYoUO z+Hl`FgMwp$`4H+{u(-w=q-nCtiq z)tDTw*1AFx=dODjqEQJ(Nxt5ikDg#nHL>_qJ!~_evkcd#pA07+%^jtYK%*YY^ku0a z7SzcY&K8zsoM@+b)y`7N|hv2Avi9|9wYxZ;tj0e5KFa~Hohhhkr z{d;7%0fBaFtVz@A2OvKn3JIAyvOW$7u zPJcXs9W&hnTFt?~SW4yWaA*tWWkw9CmK8stv6Pk>tVB^|%_1CT`UV5m`K2aA!7fvC zAa}1Sb7zIZ-f%^u)}em@?>i3gB^xpT<7w}Fsb%vH4u??M3}0XFH(L};R==lGEy1#9 z#_hDANhxY@jW+E@S+Xka}3JIKJe8cOiw^K!4 z^U7STGkdvUzIk9CZ)!pY$V;%~k1MOeGhX1^Zja`rZl2wHd?X z*-oX}%>=aDaDbY9T-Fr8N-yA$Mt&9^mjl+Z+zc|L3w42`0b-E@vu+?n0(X&^*(x2# zepQ?3b~S(3hdEK1t(q1P$9YF4JXmh-+&JoH#dn=XXJA-MKZ^T=C6OWLch-|1|-OW0QL}Q@7E0{xiIkPJYM)+r*6%fNHBwdECvoMyi?k?LzeLVGbX!B z>&&4`MP%tebE^R|%dX1yUa~{$yLivc5Hz@t&L{pR|LtrNm;5>G>RYO)83yZzAvd~H zXS_85D<}>Teeu-7=76_SWJLiro`3KCDv2jL;5GSd;>D(2By>hT?IdL5p`A%SVj#$k z*knOVC~WbAr9afaK|nVxsCZTPVMd%!lihtMe+cdY=X&3r(IVK z6sqI385+bmcb0NJfM_k(V)l^ZCr>|u;coo(HOapq3~pnDV^89CG(S8aS2roTixmzD zaS)!gn;rkBjOL$1dV1z_KMG@EX_@**iQ>oE$4quFItes;U!@^Q{nn2P&{!5!Oq*jc%z0Nx=s)g+@0vp7FYL8%((eSbs z)^?9)NKiLYn4TcgR_bTcDDUjX_u_6nEinQ+pdhEcmvXlF1Vf2H=a_RfsJlOz2*J2ty{E#%l9}K z3?TdW9~yhDA@KUPT7_-=?Fn(bWxe1_U|!KKo=k8K+F_bQPqo7p88fDT+W&VPacLp^UD`Y=cMAs(cXSmuC%YKQ%cR+ zx4R1W0qZ+>ruGygl|MUm;!A?cU->T^?~+yivYbM;u~|*3dDDueW~*7i-z0`S_taBX z`CFNwR_5>$2^(#zv+c65vWu_TJcGaQzeTn76%ZlQ+qEQ}30h&58e z{k1cLvVvPlJ9Ih|0w|2r^nYeyJIx4Itu+(uz_P)w{r=bJR+DQgFXI|tjuu>6+wFI7lh}9&;9A! zrGLY}S0~nfBYz@Ll0?slryznA&?{CHk(+2eUC6E+!OfE+)}j?51kXh|y(Q&2;*)1@ z9~Uvc@*nuh)Yn9p3@?|C^5GaGrWs9oozm@-si`scCx$LDUuNAwFQD)bZSHng=O>i6>}OA=6UTIb1xJ1Gon%aJyCuM135~qs*h>Sk-yPz4-sWbt z@tF^Ewr3Cc(-WnU(MXDUu6iSAqS0WJv3TMJ-A>?rdl5AV zurP88Mdv^$m9PTPOap9VeP9}S_)3aqyM}yu-52v;A_-pAca81spZ)~-qk|we>X7Xm z{X8X8f$>Svld88Utkt;~3X`2h8CmRuUFN^z;{H+06791RuO$b@s#B5Ixf%|di=Gv} z9Wkf-o-GPJHdp^9&2L$IZyuNilPN7>fzczPO3JbI`rmzyYtn!``r+K>%$&}x;!Yq7 zy~kVRiTehpC`M)5+<0`*YV55E0$6=p+;+M{E}xXxn&3HDfpGe-fX`=CL3&UJ%wmYl zp}_!nGCI~?I?^PD)ut+b!;G4O!N!iI#;Klww2%7%$^s%stibXfD<~`GyiwSl&h@t5 ztihc+=gEp{GvMma#WQ11(ZO$TY*X}^rIkKucsdyuV<0)1O_qfI^aM53rU8c|$$3i| zj)Y6)qUFW{_$B*huFC9zQfO!Xr|LS#v7cY>XLM79PRf{zk^BYTNoJj#H#)eQ|4k2*ROGN*SeXa6J*d%$p$#w)GQwi?J%})q^p7z( zD}(@Mk!NwmL@`*^k>ZTZ&I_X?M8mVwl~-3H5D8m zNgCU@Y~|Sr9_~>~afeNP_&?`nmESH?OAiZsC9F$$2vWH))3n85e=R4^uq_rS*Ot_R z;`1U~peNxx`@k3xLlNRL>qp$&(o|oO$dw9V>awkmpOS`u9)vK{1YAq6ZyLx!O4i1 z!MH$U0@5$#8d{q~fwDK^-C!f~)Vv;YM+oDAZdB))PWGJR{(kQLFptrRL8}CV0_pFl z;)75>9(IDzsie)by^PTl?F&lsr=;=)=wRD<%V_~R0j`I7Z8qA@r%~WKRn=ZI3XA&v zegq3tZ0dw=YT$Dnij8Lv5qVAn21t%Pkq-GC4gS2{ zBP|O@9`n(ep1vIKtPPV22^D(v@I;Iy_bWT>1Mc0tIa7M&h%}j1JXj3M61!!i$Ze-x zS-9{{jkXp=0S4YRLZ1OWS3enKY?IQQRK(qiKi6END>O52ksoWvrjH(oWmMhSM=7-MjtU zzbA+BzY(p5gvfn+?y!@baBN1#l)#Me%q*FogxcbP2PuE{P1V{NW8IFN>|goO4>2n@ ztELC5;lIw3KV?r`Ze=2$!6S4sM6eB&C^d3qLulDhO>i*zY)C`9HwXj&MAD*8F3$YN zk#i$pNC+tgwuiYDvxQ63mBD5;b8^&%QpAka5=ehTL&L24lzXr_g_@L^50*MY< za?>mnk0hKv+)GnCuz)jmDsnFFoa(mfjRpY*QP9t@EwPXI%~=kY4&^Bfnjw#)7=4@R}q;szB+6f)?)s@@W&*maN8*Eb0=>~k>r zv)@&$RLc(YcE#MtXoj{!#v3p%N^#4}!w@q!cFcR=I7VxwN&e(~^8BFi{7>+z{s_2; zlY6zu9wm&2x|ZyX^+437Ffb^opCW9NI~~ZJwIBvD*m-S11eO=P!@#lMS3tvG^wa>` ziR<@T`~Yqh&ZqLw2(NoLx6gfJ*wpYmNM@@)^6Oa!(TFk4`1 zTN-=@6a1+-G!>5XibxiUhz7KjdCW#t0{wXf@(wU;Js8aiR~VRb#fsp5B(UI{*Bw~0 z9!pp10omsMaktd9-e>MBc<`w4+RovUIzKQMFb>MPu1~mUXRwKbvcWAS5L=KtDX~L< zO!x%kj$Qw)5yh=YO2ZB9|-jAZS)yOM)1&g8BiY@8ErbD+=+!)8J@k89c7_ka*5` z%SG~Hts=Sj2}%Oh02yh#I|EVc%qVqh6(fzf`~3T*o(Y>oBw{*Xk&vXEIlRUPKw!=qwnmthXID6TE6TcUvn^G36pGs1ogn$9?cxaO z45Bo3!_pG5W$x0%Y%xS}$@o)t;gTf^DbYPQ1Xhv4LAlDihtYfsrEw+tCUz zzP&5Z0dO9(0$r5hP;bJx>C7(2wamrbM9lhL+COe z!I1lf{Um6|&RIQ0uRI5g2Ve-;W3-KNK8j7mOl66g{#M<)Edamb1=5mmT5GC-e{zM^ z+D-!VrOccAqtn0;i6z{pCkAgeRhK8W-p7VwrtprSLvb?~l`U#`r9@xiyZoxeCj~HP zyw9Mt8*;QZRPK&g=BQ!H+Of-Ey z7^!K(4Qa+(!5z;+5TO$nmARLPLUX|b|2h$dQ1QbgB5}{nyLCi?g2)1iX`eD z|B06reuhiJED1(lG$L6J!Xfi~$krYWzCb2ac4rGS$p>fK2tLqVQ-rB%O#Jh3^uDjZ zD;ENh=y&B6*wXWLll>VviLt-W=m^30)Kh`TjOyRz$4AYz(k={K;b8CkhtJMPk!yMm zg}g4qn5va|809!qn9OJdMVBb#vRP$}hb}R60I+pNge<7k2#F&n5@|>F0VkyKYVc~M z@P9NA1w>(eB`vd_KQU#yX03Z|azc<`pe)*Zb7qHyu_c1+Kc|F5#2%x(l-m6Z~A_0v&v=T1?eX!|wN7#c3G2 zzuMR30UIZ-fC--`pxoUBTz5yfYwhrX3q4vfO#b(BXFHXtY5Y-iF`ce;2nmR<$~Xsi zCDORpqSz-%wh&-2Qoc!wEYBu3HZc6PQXA@Rw8$cnIoq(jFAg_rDbs<;6Z~xCgBe^e zyBZ}u7Ih*-X5sp&S>HD?#VoY+h~C1{j%xiyE}4NNy%6=SlC z__>YqO~H5($-fn4(f3WwW!Bf(t6289ekZ#x)11DWpz;#0%bOH*ER-;&QJ2@)4-IWs_g)WSNqgjWF7z zN%&(2*8kka&pJts#EgYdMOK;6R94)jo6@6o?-U(y1dmUKL<~P>(1YJSc1fN)!eY5I zggY?r%l>M#pE;N{?%7!*v$~8YD) zEXgavb%O&DdxP$e_UgzY;uAnJZ_EB8DUX)+nqVNTg^6Y+mBwl8^ChSNLn9@Co!sFF z4W-@B_*Yp9gIYk!sVwG4X+6agMLvx%6_>B&t?n)w(WBT%o@_ShH7QmCvyQTGQOt#? zb6aqC#64hF?I3K8R3ab`*Uxr`r@M1TIR#z6Zk6RmVh2{Jk*x^f|4ipqv z>VMDg8!m?G4mD>=pST5Hy2PYA%aP+r(PPJ8MieO6fhQeCb&l_Xl?h98pD9?_r?P2NFeFE^$Lo9j2jInM>(B>%lzOz&CFo4+s$enB~f4PQl!BG*l zA^kM%VCGToeWD`zArt|aW60sdDg>C407#P@AQw5Sd`n+$i{#Pisz;_YAqj)A8CmCQ zw0yC!9Bub1_{)bjT&-bHN~+0gOzn-rSx+w_2)ce&r+J00#k!b{k(?*r1@g6suk?Z;_< zQe`#7dMp}GUS>@6h(8*o5xt-iX;>Ep^M5%n4$cUDyRO}_?Z`JMXT@n<-6)2p-ztWC z9#LvHrr78gw31tx<0`#1*dsnPI6^9GJ+EN2ru%WV3p4Idg&<4f^zLfV^ARSwlBoE` z1XX}1kp@*FccdrpXi30;Ue@XaNItSmVw8yZIv}f#K3V1+MNf8uiaGJ(f%zN)h1Olx zaf~87TTz$9qUNCk)W;&(aT zkOMv|sY~q+E@Li@?`^lwY&yq6H)Y{vppiI6tcc^ZU7~#!KqlW)ryhQbqV7MXkH#dh z4klNzWZsr;xbn0D5R?Sj%gic)2UiC}6s03aVAKGbqC*HaPyxc2O11$V#=77H`t0-w zS}t^EZS5qyqqcwwlm^dYxwp&@HNDTUO7s`!1ruxPXHW;(z-I(;XVI&1s=_cE_0j?p z^U{AuPniPYpI)18TK@TPxlz(e6T0jZg?1zgwE(QVzT>$_-Ou_to&`$u#oJ0DriAs>lU=oR+xo2ioIhA>tQ&FHTUzgaLM*S-D8z zVF>WnEmuGfz>(woPld{>3h~Uosf)Rn@J9VFFw5VFg z^TpjXd6%srJ~NN>sCE0X)a6eIptjDB>%iW>4$_VPyO}5d98xr4<`&#~rv*uLK9-4j zi(RS7ZLKve4T*^Lq(H*l33_Gtb4<&v03iAVdjzBC z4_mMIup8%BE_KKsKqVqUzI!xLtz+5;#3A((9lP2`1imTU*n&h9*u=Huza!lHQ$-dO zb_GfY>X5v&Kn0q>bSpKCmUUB|f@gktuhIFHAh91v@&Y;w-Y5Bi)?0S81EAQq%202h zdA=K5Ks}zFfxUpR9nx6HNjDeGgZJmcrrG2hMGrWGh0v!s=T@yslnCeX#m#gpi1^U! zX=h~2ruOEP5&0Ql?B6-C4Q?BUvDNNX$0sfB>^O^Cf8U-#PT(|=KA&{n|DGU}3V|2$ z9zMmj`{GIRm;I%NxJHss%q->u=@+X~ACTS5h7Z8J2jp)orDP9Qy%t4}H>f`3^$1J{ z(Fc0?rQ#U{8_NGJh71qVyG~aS6H3TuV_}IZD$^u#AKwa4vy?6YZeQ{j6hcyqSwl2HdC7$m zvc#%!rK_#X<8n&~LN^iFe&GP(gYrcRl0eJ#z*b}KlxD^Vep+vOTIf1$V`{vS0N`5< zD1oIynV`skO*%v~OXI0NY)o2kgAaO2^;oATPDwsSK+Xh+8q}*Xh3%nwAo1cJYL)jX zA14O9jhsgvWg$X02e}?CK+fezT?^V!o1aPU4o{YN@Sskf*0TH2X(kYib6jm=@*&lQ zw+I+30wD#w5-D15nf=e}0{8-T4Q+-Lzcf|Mj-a|6*=lICl<(ibX=aa-;@j=WT>iP7 z^he;1AhM*09&PUdzZh3L2Cd^9@En^3`7tNT{PG=Q+{IA!=n-EPkbNQ20S_VRSa&2< z>T)*40#)oXhB@TV^qdbG*BdrzmZFb!nb6)@Dt#yxPK}r{Cox#1`XoF5y*|X2a?}Tb z=mf-?v)w6=c>PWMSeO5dl=mQEKS%9t?rZ+7kJwg;LRgMzsR4|6O@Xx++*qjc;=&>w zM0xB3(m*yPR3nX#JH>bPp6+guJeFjw-fw2!7~Kl@S6&AHf|;#r8d2;;AjEDVj)T?D zhw}^898N5n$fNjGz&xCQT8d&7FFZ9;+7o&wqks+8*-`*1H&h08!~=RS;1qN1ayHNE z0%E~ObSDYjVN3U-$-@|J9aYiGkQ=$D_)`8NlXUQ_-63U0Z;trYrv;L%^fWb|5^qMh z3I?JDy-2~XjEjM|-B$4;D2Zc66dT&1FGIq&l$3*aRkg;>z7e!TTa zgDRB=_wFHR=3M8pyxGFAGjK*aRK3RdK$8~Afhc8@osLUH{GPoJ{qZN~>nLUWF)j95 zqOMLWI2O(@Az8KkCawjMf^?^m51-pdQ42+qjj_z5#y&z}m9lWNpxNq@4YP&vIb+0hJA3s^@rb9l;;oJG(j zr{K28vD>|?tio(1sgpXunA0w}n zhWe^L*fs-mO0BTdVKA*G$ihiR@`1YcHI2(8cW7I5M&rotls^ld8fok*C^WxdqfN9Z zQ}K6h0!T;twG$VUCd?bXj6&Nhy4>7lzKZ7c90yQ^ zWnC>Lr53rGPa|>yKQdpR8MwYo-5$d0Vy4pG*S;QPk)Wy*K;+NSQe46NM*)@kmma(v z7q4P%b(}u24h9X6&y;jETMtiH+ce<$iVbpF$FI`RPwr$mpxuq&j2p=rdohiNq$%Hs z*q*tc7yc}ha^?*4@}q{Dwx-JvPZPoqVT8u+d(}3Gh9NTkz?Z6o{Rmct1v0g|Ww3@k zE@pnN3lJ(#FJDl!y}mS8 z)CDb|ded40HsRUr5Xr*-a`zPar2NAasYKJL6T-|GGg?4Xdy-#M?aQC4XipZ1fdmVU zmpb^f0Xra7uT0x?{|k^oK}s40-}geg4lmRj#0aj&mA@Liq(H2D$wztfr0#Dcmd!1^ zDay%mi4ZNg;`J+1=@JIUy8@W{NZ(|PZNehC;4AkVVsXoRU`Xz8Ug0wSV|l?ww&NEy zl+J8}$19@6XE83+6`Va62kuLnVb@1TalqFkV^q-nFD8)Hf@|Gr_TvIAP zawU%~7XNnQC!QVtPO3BgnY0?{HKBm67WH@ zz43Q$?zJ|yGjrXq`Zh)g0TLqrd|_s8;>@XgdD4@Egb&1}8E>TV4>=GsNsEmy_P`Qs zS+hLvc*J38-mc_HyWidev!zKS+`@g;1SouRfe#+v0L zU>18q3>jvu@BX#YG!CU`=wijOfT9<_W*U)~xorYHF_MG0=k}VVGhbnO3b4d~Vq*Na z%OIok9>PC;akc*3^(gOqukh20^4*rep@IXSER%3M{W=u|tqs)fQ(qDoE+v&)nB5gR z&esHO@7_Vak2kj8qq8sJOjFY>?dhDRc0 zLJSw%>Oq#yHoLmJSC$}Ob&H!$#H34(w=(n8hwA(_)dx_@<0DoJ(XkIgfV|P(czGl+ zj?I7nqT_PKma?J%4bXag><1kCr8E1wNQh|*Yu(!AiOYZQ>$uf2i(1zKui0w*l)4Z1 zHO2{F&93j6Gu>SL3$&pFdZ;XdYdShFwnTkUMtA6WQ_xM0j3*ltNf>MOYRD}X6_Tr& zG)-EW>_z!6BYZ8dTDW>I4KZ76-^*8S(F~NjG#1eJHCHM_NPO89m&#L1fM^f}GHJc+ z%#_M2)Cp5;z6c5xI$&2Ct~CKaT7TwfI60rREVsLd_btp%Oa{GOJ(!;)6{;;j&`&^i z&`4kP4mr8^|u z6&RbF+(p%&Z=)E>wk)@1Dw`ZR%I+`b(F?vHCL|lr*qyLmiuFsXsZI9)I7~=9@PkRO zeK{^lT#M26Ci2gKY$K1x>{DdO(=vzy@aSZ2tvxD#?**`SfHlc~yLt47Fhb}nXI`s& z{XcR!Y9n;HO!-#?uCOEq&ZYOS)!eUR_aVz`H9H~p46*QH59HbR7Q=EaUb;jNT7$CzVQisNdw1@k z>R8&-_xbCovi7PHOmz&ro?qyrojEsmB_Xc%={{n`4#zH#Wft2hH)i?_Dw*P5Muh#x z;N7@8ms7WZpk!4S&%R!16!E=b!s~VoH*%1+h+KY}99)m-h&r1 zu`?iLE+++^au*`H$S*&EaZ(i##H3y7P`aaX(XV+J?T4~{oajjAN-VH{?gX@llO4fI z$2VBn&A-mF>DMMT!u%p{Z?Qg{ewN$G%;Kq?2$K1?wK=nZ-v=Hz@k6 zZF8X1hNjS^wa5=7+DG;-lwxkJ1k(}y_2JE@_wRVwkK8w#;6kIp9Qf*B>Nw)wFrULw zCmlF)iy{lLXo*v-hdh8NgT6nghU;_52UoZpKu>%4(!5e`G)YpmCwY<-v}AXqU&Oa`N!Q2=2@ zoA{-V0$Px~d?$Ab zQy2MD$CCCptth0&T;Z8j+0&!I(W7tf@vq3(k#7RVbR5z*BH(Xp00<6ryYZbC&3g~h zcBSa#0u9lC*;Xlp8zlG7TNms1gM}`;P7xMdFk6u(hYlfA_h)81QP&0-;XP=x2uP|@ zW|dQoP2O(kuhnvBesf}9cWa>aCq7v5mmly1AYZz=u-QjxVK9TYxzq_rvCCgX+>$Vz zWn5#KkMFK?{0{3_8?8t#!NY3S04b=+w%x^*Mr9W#RnK4P6Z8&wX85jvw*&tZHD2{$ z+$j(XxYOG=3$k>Mz-Fj}?qWwS4l0LsWQD9^T z0)WOvw$8=idn%wDpipaqa-=QSINixe#U&-#R#SsZwXFVL1GHfXai0W}D(-9aA^%96 z)b9ifxhw#Z-xgG`iF*LuTy+$g(l{(>_aw&p~Ca`sf z{e{9(JoJX4py&8bg`}M?L%B^E`jfs1o!$2aN`tm&%QBhj%sBVny04=TVn(%RJC!7A z$oB#4s1v~JUe;}cyKLjZcXcAwVzL;&D(&Q?HRcI^+>A{xWO>nz<|!#X2Y5YrZvEdt zFl317V_Dy&fV12N@WiF@;`$E0%~H=Y(G>r;f5e=XE2N}gO^C>sx6otHM=_sjdMET~ z{%aB(KUwp-v;a29x~MrEoiQi1ESgf8AsPEo4`j>J8*;oW4m6)!ELG|+|CdPRz|)Zc zvHtHV`>_)z(?D}4|I%O?xCoP(T^c4qG3zP|vJH4$Mu8}{`T*Ub1-23vqTL8moGEZ& zqIH{wWl*U*A?gJw`m6YCyNc$M-aB;sr|)fqBU~i-xY!;%5hV#bYZB$ip*DK4$0`1>R|OOhV+kU6NRF#RfAhUR*#l{fxOQ?jj7YrW9&@P}v*qhsow?@$RHDZN`a1Fircd zHn^J-(h-IwkM@CHCs=r}+&>*vMsDKU_~Q^g@AZUHL_#g&0H0ozk`lvbR?7(EkuN2Y zKUMOCYgZD!Z8>}9>26$)p>x<0bZb1%wPZ!gaW`2;l4vBhN=U5-)ZR$h$jQi?gAWt9 zv^Ek}t5jCd4hB2ILdjL?dFv7=y(|KJCXh%g$-Fq?)jFh%+WLR;61TUUjFWX@%IhB( zHEZ*^5&UdeFXAD5J;u8GJK%14^|afXCd`Y$(ZIQc1kAGDj+!9ho?0v6MW$b{>LE&% zs;kcLUq63$^e4?xAL`?}I|44{r>~U`Xv`|gGaH+I5Y@0LiW4lx%|9x?l~_DnkA<&5 zvuc5+XbFbqVu=)%ZB)@1`w50qbG^2A83gd6HHqx&-yc0?n*9o0qNzNSUHbvPf8bKp z`S>6<@p8CVL-lz-y!DzIw29&cYL{!zQDji?nXX{6fUJ)>OgM7GYo}*oG*ki9xae9f znj^9q(;}B#6H-V};=lEHO+sC|#$kRD*rB;qD%jjo0^VF{6=XH<)6`knqWR3~S&??5 z&|+*ZC1lV4jPD+xK&3Ph*1R!Tqxu6D9eVcS7`6!-&r0|FzL z);*cS=Y*x%Zxizj{_<2q_54uYC$ttNKH9T5@y7@n&owS_ckWO3Hj~k%FK*J}d=kuz zWisR03IXON?Tt?zX~iSzqx~3^V!h1_eA8d4O1k8+*}sVW4G^cYzJpN^aLK2Wz6iSF z)v3$S+Az6}?=T&!hY2$Z8AY$UBX`}~Qy zUa*-Q#)%G$p!7T&{;{s08=ssNBHa~@@cIA0RaY&}lCp#dbQuhnu}JaI8v);QM*P#s zc3M$>;L9)tq83c$gNW~{PSP6K?CX2O4#cU<-B+KFIgd|@E5A&BcM3XY1j7Dun?>xF z;|m_#=|mGsfc;$(Z0DVh(;Y1wfcxadmffNg590!cJO44{AUI%8FK%T|`;TX7j0#r)&Tva9`K4B1Bu|e$Az3v3 zj!t?KLqx}-P5gzE3_n{M9^l_Y8Ld?IMwkILw}~#o>Sg7~5ADL@%1G~^nL8@du^E(M zO&SBo>Qpmahx_zKI5o2?4JMx#F9U`JjAew9H{SJ6Lr^2bD`j3PnKAf+bX*b7%0mGJnk?G-pWd2!Uzhd*wToe5N^WV|mdzHuLd#ar7h zH&1X^2eR~`2iaIn{#=FOE}}BUNp*Q96Vbs{%zT%sr(YmwXA9#CHRVq5=vc#4^|iLB z8`IP?IFKDz=(T;fz+Nus4DIQj!gl07xQ>T@wVEqT6FYd>Qcn15)$zQaE?*R?)~=c| z0RKM#zyi(>QgVB&PR8ah`!Wk*6I5t4a^+^!-}{yg`g{4c!ZSP&3D+~~dQYN{Qnn8W zmg-XWc7Va2gWcpM$+?Gx@}4M`ra692e@GO7nPE+GhoA|B>|Zz8&7Oz}YG~s>JdXC< z{POcjalmwk_wbRM3O3pX2iD+%CK|dP(Zc5Jtbk@JAhfulUPmd@ma@w&LU9r%pMoxx z#J0bh#JzVrL1K{}KC?}ji|p;M&TiGeIgiONr-KiF!q9K8bKnS5%eE*j^_MHVIA{r0 z^N+MdxnKW;IyQw8$`LR0++B#9Z+) zWxtCm5lszPvl8rpr8vH~|K!cI)P6R?st~@bgyk$qf0D`y6I(JjNGlNyadpb2dl1*Q1Du0_e{i%TQeA|JN|Bd}@!Dx<-SF-a2zb)%UOeIiG z``9MRE_mwnzY=C~P5l0o;|WM*$W-O)(SP;evGAm%uq^uds$g8c_eDHsOni`-$fs|&z-&+rJeZ8+~WipBPO_BBp;J8jc#}o%5t{MjE-|nwItZuxA>&z zvlrO?X^QozHjlaDHmhMOm~#oLSQGTXp5}d)7_?GlaUu=7j!1+ATx6=K3_@fnMiVHS zuq9%n2OozjB|Vlska~EU7a)n)D#Uovsii$|Iy4p-t|z=8nS~pBLLn4J+fCi-s#5?X zM5rN^*iF~TE_WPssIP0TqzZm<9_MEr6G!UkA+f(bcLdv4aKm!SAlDoG+1O z9RFvQ@8RYViQ2@VxYawlZ@NGopk|!`!%(*?TPet?8(IR+F<45|A@u64m#?{ z_>9f3dGiboQ1l!BMVoXEZPDFcY8i6fU2!$uUNFVxYgkPCH(PmGzN9-6^>vFORW=FZ zCid%#Ov8p37B_9VHJ-vZ1jfpFV>?=mII;BjMYdFG$l{NqZFeCRhX`Ok$Rl_4p;En8 zXHsx?%{rw2ceO9-x?{tvAe;}~6QAM1PVl&opBbF+W}ieHY#Vjxz~=`}TKaL#agbON z%!R`yL!gUWM$Syh*x;&XwrG%qu~;sj?ew-wSMJ9>zy8{komu3xzWg)^)6 zjuf=uzEp;Rx+8&8&a@TNQK+^yL5fsWpARs%PM8NdWSS}^0T4Lo0jN*zlvX40M(LsZ_Wz3`!Du_0t&FQ zc6+)lBFBg+JwKUF)C)#67?H{nfXx!?He&XyH(yxf-tkXaXgCdne#C8P=MQHm2g(e~ z5Y&u;6jkz?i#fAmKfrC&z7HO5>Iv(68EZjOSRn*{;|-sn3HI5Rq>+W>82mK`Eh_uZ)`2_foYUENp=0@H zr5Wa<{89(mCMA@j3b-8dF1xBsLAS@>TLj%ssTz<}#1PI5-liR50|2PqIaQ$nX&Se? zAi|;|MH0}B49-4cW}j`bBL$%M)#aX8j!%*T^Vj`GOjjxk5YS_!?2@5j8|QNHstkdW zq|tTyP}vM?Ch+xp5CPsbLYELL0qTp!c#a?K`6xuqvS1{}6EMH_=%yBpgOr>DC{L>v z+sU%s4HzUv$;v>tOn$E6#E8MXWTDTYcP6%%^Mmi zuIX51jcM*>!(qfvwj|ai?0zV7kNz21@F>;Xq`%}@;K7{HeBW~X)!cYG`zV;T39zTM z1u1oBD-y$nh<0=@yVla|+q!F9=6XXztOPlDa3;jh*By!lL+-MgDFCS5b4?-DUi{+V2TlY;8G$zXP!c(jR7*%F|@u4 z*J7-$YZBI%UEDn}%6UwU?XDLR{yUH8t-4U!?6pPCT*u~2KuAQ%^h*|Hij|Qaur*Av zWKv}L=jsgi!R6ypzfCLfP>94lMtYs+@@d^Ji7tMOg(kMi+6jm+8WOWK$m@1I!XJvu zkPdl()ObSRx^x@IIw#(1wq_tzPlk3p<$Ynuq@s9^>qX8}D0AIBrF1yAH+&$FUA#Vj z;a-qLAX>qtuSwtdcbZ5SI7KO(j)A-H(JMJI&PT*8nMMEcvzbW-v=mwtyF~q+b1Qn# z1(Q=TlKZ#o4e2WuzQ=(};xny~xYkhBO4j!T=JDC9m)>K)d!a{E8*}_1dE|24jOX?0 z{02SDb%#VQd(*Bg%hUGot#%MZG{DA_7mjUS0)klP}1 z%}$*rQz9Bjs3@9NP9QZ=W%(MlC09`t8VE3=6Nwu zwG6tYIZF3t2>mer~Y41r}P?cb_bHjk;P853tL)_xY20?Vw=^`xg`4Y z*j?PAmBEy+m%m`>*|x_~EyB5IG(qJcXv@UeYwpsN|K4jO0o1$_@A@$R?Aey7FnU7t zd9h3;R^Z>6tZRD4Z$J3sNSIl>j;+J%-;j@Vr(wyeBONe$eCWU|z`|eDK0(BQI^U4!{|F<)?J+vnyZeOmK#I?M}s0=bK6{q4QAf2Z1aHJqr!xlJ~yWY?|Dw5&prA^up6Le%hG z!pvZ@rbK?Ol#5qopo*x`W4z_f#Lzxp0jFwxZuC5P`wL?M)w_0@es$9}whyJy6_K0_ z?x0f&YwPm$>#k>1%4QC^9J{bGKhN%;-VQwNtD;5JQ`5QDw2LngLQ9uOG&j zp&Tj!wceOGdT|O>au&nOh@g8#Jl0iS+l;89%=xjzU;95N|0=f2cyLEW+yUz+6MqGq zb2+R}65>?IT5L&%rd7UlD+b&>j58Bxr*zY; zq#6?W^v~jr&b1^*26F@w zyFp~T;7=3H%I+6miXiO<-nLc6!V88|UV!g`Ju6pAn@32F3I~9TpSW!g3Df!gl3;oi zwWqaVxdi*w20e8F+CG_Dbbw7gBuG{WmXVKAlSJ)W5r);;MQhO|O@qI5 z$3e`AgQt-D;ko&|*fmlf{B6uuW7Ri!*rny(ofWL+o){YEL|D$Tln!M`N7_1goYqg6 ziIF1v?zBU{WHoiAQ(x+3VaJWyQ0U|XeK!1S#IF84DZ?w7Sv3)%^H=z1wFv`J2$+Px z0&j;%*U27I^ck{VZCONde3@s!%<83n&ynBTo$0GKo`e4uY*6e;^856DtlnGbw!p7+ zE2#|IbTB?cB?WR7&ouoYD&&Mjd@)^NeAl@dTD~E^`^{Ip{fbB|A;fRr*MWZhyYz$; zqz5g_sac~GAn*qyi7WZljSS;Q3~d9gD~U3vQE8~>C;A;(`+6OfY=u~-yjWhdgqiCR zmXl``KCaFir3f$!^o&x5Mx3Jgjef-lOn^=>W}6=tJ_3CaYC5Qslw2qM(lZNeF@4jD ze=OK>UHh@zK28=hTbU?w3Pczy&qIhl_o3n7vAMD`6cb_n+M>4~l6ImS|;bfn15K;a-6T&&bHB2N`$2S)L zmVB&>@&b(#5tZN2cMG2R`DcvlYt3{XVj90Q6TM|v=918n_G#9>O4BbzYHza;5Qi9% zMkKc8QbKvg&;+zhKmAM&bwv|_H{{N2e7A)cKXPb?SAS*1_)!h)i(_viuN}lvHWYw! zOBonVP;|);6vT9T(1Y37kC*59SYx-6T6L!|)kC9Lfe_OA{0NVVwr-*T<0RuHA}ze2 ztdopb6a->3Bo`TMCr&Hy`@v&!z)v^=wGsk~&6a`_-9pr@ZW0u*=ip); z2Lr^rf%t}@z?V48L@W5kb1Mdl!+;uQ*fetV+y^Qc&4K;G{p_g;{J~^pOYp+9w4~8f zooZiJL%gLqFOR_7bk&1)23)&F43rI$wp!0N9_PuWX(UjjkS9%4QkXey{*6-Mr~S_Qv+GuxyA9)Kn1)lM z9zKYHNq@MlWp_ilhO-Ca`kQnP4Qi%fUFU1Ce)V5hl?5Sj;F~%vy=_2IhXy1GpNl%% zIaQaGBSH{@asO>^EkwMy2$M2nJ$+%TeVyA+fG|TNkiml^fqfOj-L=Fbptf|OQUm*v z4a$+8ag{YDYc#oCL4e{SVq9&@fU1gda?@h@socVop-xdd{90gObL z8VvPkl(w~XkQ^&c5BW{F1SBJ~7F$SO+R;jc0Y^fL3-<6idVZF`zg@ZTO(CEHm*z+dywwxUt{1%(nBPzWZJ5bV4$Zf<{MGj z7ux=dHx2G10M88LzRI14r_(DM28y-snbc%ZHiM0TP9Wg5HEb6P{JtD(+UvGidkcf%ClvVx>v`|ba5`JWj69|yspE$*6?I1fbwpF@b z(jgjjB;Q-j?*8us(uilj%ND|DX8wDIdT*Xp*6m!SQ&2iDQ5t|^-=zN7%H7e_29rDo zOVcO?&Md(P9@ZY4Jn9+V?`hz!;W)ben@d8lfc|iO6H>RCcdS@i`9Fnk!M1nmSv%U| z1?xk#XuyisU0d~kl_}CwvL~ttY?N#90F0UMho)PRN5(v#O8tjMfJaTm-?lClVO-9J zB^&{*j^1{U!e4KlL7yZtPo>ili`kvB>+1T|C`iyRpQUh{U_Ar$KAho?_V{T)?O{}w zuxDWpH|akeeuI^rngwdqN<4&awo<#U1|KD0n>@h_;6a@-A1aqW;VY@Y@#<0k_l;c;vm-3qbdho9H zzZg@S|Kh!?zR0LCshVRl%{f1H82?1WD9QN*B&3ZLbm=#^rDV5$5(yhb>B0O-uv&jb zdpQ88+9zL-NRVbqs$J*D36lt|II*yP-YP{R^s5qm(qUaUX0X?++0X~}o}3?~&!#Ah z+VO}7K_}{*Uz)})_eZpZ*kVA4IKZ({CfH6RYi5AM)GR49qWP~g{#P&7T`*sbvnS_< zW?+`V`&KlSY+hUd_B!x}>qgfPoKW82>q-qiDAW}t!G*f(YYcQw4y+~eAC3UtBYD&q z*02>({^n1*)UA>oP;!f^@iVlY+a^kZqtr{FVL>lCPrNXeyAz>bxWgDtx1aP{))M`z$GGaFso5>u@IqphVD&uYhhGq7DC{HC`yP50+2IBRr_S_xEfJ1N!W z#9lPYginRC(KRQsgk=|e4e!OVf|;E1nrwN2*We9^vc$%-MnmsFYOe|n+{+Jypi};k zV8MnCy`AC=`3U}xxJH0qR=J?OB_+D!R~9ZdA7?)!A=wF*x7w<7y#Mtur(Q3Nfd~UB zF;gEUHhFHUPU;JZs84r)2@!hf%&_+6Ho^(%$sPuj&zOu!-Dkfw*o0c-UX;VaAT*(-riJ~9>?uyWta$A}pYTO?aJNyV&$}}RpC5i8QB>X1l$H=09I|MnT^Ikd6^GUGFVn6Jy#rds?xGuh@ zJp#3MZIeN`b`y431-sUxz_|W4$=E;x7w_zFIQ-85BLw1XAaH2gzPf>s`Wr3alm_Vq^B zpE^o*+tnpz0i^6{?6JH9Ed=>cAvnI-o&>7i?TOxptOU6P*_T;Yl~5< z$_r^fU9l4LvbaDR_T%BT0XNHHUMy&MtHZ#OCCRlj&wM*`(DJb`mqNDSr^CZ$%GEn_ zZC>bYZ@S%m{ohlaSS zBsplawpeAbvY$?mo7W(I6GQpwRe&vf1h~b+@y35AB`IppW?tBxT*kEhCl2KV%E02N z-am$r2B43{1ZtjuikAzc3i3W9vIEQk6a%K;EP$V?Vl*B3&}LS$XL3O(JH|;Fz$bf} zXBMqjloQu$M6>m`t&skX%%c~M+rbBH1R1%^iPw!Ai?gv40-W+lwfR=2x_{D{tZ5mS za(n1~__Cnt(c+0peI9kGO(oTqj4r@aHeWWPNegeC2+lUbb(La1xXFU=FB;Q~6>ilS zkoE&{4COl(r_&UKhavla6xvO$om?8zU7+w-1+bRk4K-;keARk&efCBg-NGs>?9y(p zTNHLyXG`qCpT7ojW>5;wy=?WT#B-ba6EtiWEhS2J!Iq?V7#R?A-S9$xdF`x)=`(FF z>kHC{E!|Q%!-H=yr#`PGdfJZ6TrYnuLhG?23HG%l2I7Y)9hiExb~)hyM+w0gSkxl% zqF!FyjT^X+20w0LoQ%9_d-SiMc3UDfO_-Zs)Ht!QZsL(3z~x1*lhM`|q%5vC!u=kq z6R|D!;shT*m6XYCLzjJ8rAz*UM3g|Chm9S#0{2MT!qe#SNpH%y0WqR(f*vNLQBRQG z?$4I6`X!e;Gi9g=Juxz}BouzOP(w+vE6x_u50lIAy1`*-1s!Dg2N$ztoG%Yh{#{c8 zSvLlI+21}ml`SGQ?iFa;gH~{-o@r`GC#2zMY0|c0P{D`z!w21Hc&RJ_Npj-TQi<{d zcRAm0e*ak}v(AWY2q3J#Q~Of5vrP>8-jI~uP!~ptB^R4 zgEU66sKNO!R(aUBxBvD6gfOqh<+yFWc>-E>X#|-eVT6npuez4fl4H8Ts%?5~Zh5L> z7aV<>X6@^nt@7)fjKP)TW;UmsOF6q@mfp8ulbY8TyNE zn0L{6tYTK*&9;g?_X)Hg+-p}vAZ8!H?8ql7%L%-}Wt<3ZpQ2K36&f2}axye6sF~;F zPmsB8@BsjaAZl;jCJ`hOupNkYL*|1?3`8>g$U)@L6oU&6?ABOJz}bOkeh`vs8jR?5 zEqeK2_P)R;$-?)j7-tw*Q7_j(Njpr{U6Jz5j4WY z<#>`eJrqAf?l@<4`bOVjDA$JaA?S765#o(so#34n18M&!B0ooN?!G#J)7{L0xBtrH zt$lw&d3E~(u@f1kdraa)4Iq*mf`hME7hTTwiZSgj z6NU7Q!^ISm!Y-AL9u9kbdgXuWZ7S);hr9pj6Ll&OZmp+t&?O}v5_92K3UWdTV}|sc zDOdT%tgfkS8CPqro}__n#KM+%Y_L=OSp!oW9;EXSGRSv{5;sO5MK+u zEuzr)`1<2O=8(p1$x(Z#$%R+0&()8ClD8yKy(P3m5Cu0dfW*?hWu$+6C<}IaG3$Y&_hfo&;@a%wHh zRwrd!a7SNguGeXlW((SexZI3BkP8PW!ZTrKc-T{=6FdMpyNPr}znqUavZZ*1F^ zWzIcHHPejMYC!aC+1FIZ&+IMYa!5K|2alWlW~TcBeMqY#Jgco}>s(;`n~`|9t)y4T zzdnpp$9RjoSubz8%nG=Ou7@KRPnCHN9J(js!(dW@sjM@Me~`=ry-po$1%I!0?Ks?T zbwq=ZJAVl2;RqjuziQOXCaDcfbuk_?18_X39%Z5_sU+9KhTVFi^JU8R?oV2l=0 znLT};lR76eplTw)ZR3o)AD8vYFxqrQ;2cp5$kq}BkcL?|Pk`8kdeUtICD+)BU;IvnY1Z@l}k z%lw6ZaNkEGX43(ND@zy3LA{Wd*A-v; z>TE_aLYE^h`6JbI5rD$Xq-2!!k?vG?0>01$SZky+=}k8Yy;9!- zVfKu?Vlb{s39kyr_ThMk_aVsV7#RW}$>=`kgrPksCr!vFsL>dSI~piMbn>8kz=@vLdD@JrBs(XiwR2OT_-OL!QFr zy9ZpeR;GXFxuHaC1IxO1V4kiPQ*{|`WZjah3HJs&V`LBE!BmH&t_*rb?fRNrAWz^I z*m~JGoX5vCy@U2&RdNEGV>}v4bus{uc2YQU_E_i*P1u|FS8MP%&TYwo1v!_HGuMS; z$K>CF!delvwhPF?U`6dAYNBHx%ARJ7Ybw1A%7BX30_w!H1tdImm(M5u-D z|69asHSyQMm>@%~YBFMWF9;iV;#AZWu)i8h`k0qI{%U&qQoXorX`HOFfbC{H85xgX(%#R$O?3vnyTzPcYOUg=-b)tBW|oAMW04qUmiz%>v+}=58x@0m3Y%fXZsv6EkS6j_ zu19)MD~E^O7`S0EwAy01uuL0`pz2y|REkC~gMcHu+jh(*{H6Ndh!fpd)EU<)tp&9H z^>_(f3YK1m1L1zP8eP0gqsqp|Q)X_I$Wd$=Ip(8d_~H{g-gOZ={@~ycpR7jqW%r#g|iK;&s!Qf$^rb9PQG}v1j-4+W=}I5LW6YP?X|2wnxQ@Or9_6Ss?ifxr-8E4UUouSlBrMs) z;sVQhtn|wBu*pcnC4`i?6@RapPq~KVb)E;6b`MLLQ9esD_pGXH7wI@%%5&m@2BP8_ z&MJ#$A8#ytVrEplM0%u(6}8An^KV0;xZEr(L89O}8e0ngfWB=+K#IquEiKhUTDsZt z`W>8575DjM$EQ46qAS1NHB&v}77y1S&b`1BA!&o>Jh3_-kNZk>;V(*l4 zNv5$HQ~1;cMj5y~OhYg9++eL8l@Yz{ZcH!uMh5ch>%`%|qU7=<9vUxf2f&8-uyE8x zbi{m`sEw2h2x~%VetJFIjq5W?FjqTY7}xro)r(vD-~j9>X&01$?7>7w@n zy}x4C`t!&i&sILI5&>Ija)A5Y21pNJA<6R@V&Yal0<{SVQcsK`o>FvIRxGq zO4{b>Lo!RkG;E9BSFA*$G;#>lqpI82*$XbdW^a8a{@ZM`F|iXsFK(TygVP@d{%^bj zH{a#g-bsxT8sOzh+1%@B-)s@#f_rMhu;S?py{y=qt2(s~{1~L509Ub59)3@r!F7kZ z#{+j9poGJQ-HyN3Hp+~K^Go}Q83=V{Vkeh4DUZ2zEXKr*Ashax2?Yk^w}aAcMHwzr z){;*bi+9&HsS+K#dbv%-2`9BVb6w@7F0aH?kSjCbCti{XxeYRinoAWG*L5zYvjWPb zrI?~15&g>llZN`W`HoPOkmDsTD~@94R$(K8rSxq_RsD84_^m(a9Rq@2kb@7!IJ6@j zI%4Rx)&pcF>FMkvV`u1DRWw))a+gt%P0qxlp35C0Y+UP@{5ZrhTz~^|i50gjNKMdC z46!;P-8v2xGU1?(f=P<{Zn6-ni@L4YDypk8qg%!9ngGlQaYRgUo4lYZMJukg8)A@2 z)5D9U&~GzMCtL6v{Y6(AAxgxR#qndlBkMDvx~xrj^=e2~JfbAmF4% z4AtIIr>OPy-5X#IimQBpqAyx$@@T!-QzSk)kYMTZ|7d}d+-*Lf*ymG{BK=JoLUS{! z;`JEizGeXt^v~j}5?~Ui{V^h1Sa6 zr==}w-$M`|w`J76Y5hSyp!_bt^v0tsfqn}z*p7}XQ3fmg9v^%hp=P@GvS~YC6kK7W zNMjc_EV|nLkqYg5rc!}cRYfJti-Bifq}d%MO-^aZZhfo+i)D=WFO*}|m6iz%tOrPf z0A?4vxPRY+ z?vKYAC7Xp}7ss;(pSd>ivnMehq9sAl#nP0i0XZSC370DfCdXemJ zucnr5+%xjBf_E^rd_FlG;Vr0smdW=57ZAja%~m{jE9de-Kq18ZB$P#dE0_|Pc2r3; zc@upqTzIa0eFSM2{6nR0xiZ}#MMY$gFylS*T6kcCyl;C=uF5hG{R<#F0A#!rKh6FD z&9X{SCCN$mK^Yt)tD318_bnNAj;b5-@uwfS_h(jfV=8JFRzHg*PgSqBJj;~J`%&CE zoILvW>)Z*Zs(Ua5=)0>7WXvB5lUQZ8@!CzEKX_$Zw8O1bx=%>jS{rdt1OeI#GFET6 zr|shA3)cm@%+62`K<98qA-S@w;ezuq!KHd(?zdXj$<~NXG`-^ZT4)gJRvpc>{l@h% z^5o=ojZmHaA&QWi<@q$>>0{8mQ3{j%fNeF-$%hg}SkT`g5MfqLnc3L1fol&en=sWA z%i-W6kNh^rR!}GPbLUU08ujmjr;e}zi&k@w8Ha4z_A<$l*OGv?qrRG68ks>d9Q?yvwh2#-Ur?LsAOQ7waG2{GzeYmhg9^6ZQC{+5DWVtFa_U@`|9wU zq5Us;XTax68#I5#3&u2Vn?@*tp%Yh)`Fke;Yopchu?yk2axyR;xsvZX%PQYL`*0ho zq;5Oe&jg7lQVJro2$r1O{>v}q2 zPsU&{G^7$<3be~XYNBf1fx#Rn4Dsj7=s{d54H>he_Vo)La2X9~W?;ux3uSbSJN z_6W7Xi^)DzR*{6)XFv*GYK*}52OPS@JL4xet~lm9o~&U_*SnNQH$S{04hhioan+Dw zJ;|HDK z`~yAjX#Ti3p$cXI(%oR=yf(WGWV!lC1dHAVQR*^oq`?E{jopAqimczjewtj%_VbhF zi=~2SP3Sotw#G>=WB}HM9?3zLAXquqwPC5pBA6g?m|X84DcPk|!vI=YRr~JtflP>R z*Bk_$FjZZdO8jF|n}L~e2c~|1lKa%WHV+9WBC9!r-psJxmS43fuC=ZU8W-K#Fui8V zLPEhR4}>t$z2<%r<_bK2{%f1AA=43diFsbKxJJV7*3fD0eL4i@v*xoR4-E3WOzE1> z`IrnbJ;=a-siZ;R-7?s4_QUP+A&qbmum256cwvd92qxlwiA#^+z6jB0L{MLcyY}XL zz(pITV~yAp9;6kjd}clqBwT)0PHQg@N6u^J@1l556y_SyR#7GT;wuHof#$r-oBf>c zjHv}+&0FIs2iSqIlUQdhisJs(JE~fH%E#5(i$`y(v`q97QaQ>w9evya#OOZ+HgAp^O zAFsfjs4N&JBDIWfr;vEOohROH2HDj)QH{Wj2!|LQq6CsyxjyfIH*_{GXYwCrE*hInywJDM+BVBO0pYRKYTT_9r z`oXWNV}tJ<)HE|p?8bBlcF5Kk?%58t_PX1Yn{OK58feF4f%T5)>(D>ZO)V@QDvyu06hkhDEO z#2&{B2Fexmykj$ZA5IJxJ=8WYr-VC)k>-BzHb>lE3Bj~%%W%#1~7bA*q|V=@~$ zv_5hSqi2 z#Fc6F-)PWXSEKJJqN%0h0cmPaO!TFc!|E$$kPxSVNHui7AH=D;#a~2^xWVDR-jX@E zTZhD+>qmmOCW$Dv?+-y*9#yWe?1;-iPoSsgnMLIKd!!EQgML!*`+rhVD)fzb+1eTA zQd7$E=*-!a!ZT4oqy7wS)5fw-o%DgyQKOf5zIZAW>U{~3yUoy1{&u~Xz2JlL9qY)+ zTGU=|9gK?bED-JV3UTaOXcD6!R=w0**kRfGQI zw-VpE6R#%}qRGG063Q$5s@rh}pnE*U-Tdw82%P1%Yj$XwQtV@$rGR^lx-l&(w#d1f zzj~I+_mo_G#=mLH{$s>l?BplHa6N}hq(69H8(zdh*Wt>TI7ZU*yStv}ajYwrtzieImJ`4FLpbx1B zjh#J1FcpIZg5->_ENTul0-eN9g@Rw#&U}bF0?=v%EEXsW_a*3Z6%;fYSgTL<-r83l z2^t+RRTR;`aYXE!cuu#B(qWfvPBZ=B4%8F^Zm*{PAEs>X<+pDWuq!_4TKcthxUP`W zERy9Y%z^vha$opeQuL;SGm+xaq{r%=I=vq*nmySrBqF$6j43`qW#?EKniGpOfNgnB zTbW_oB+)UX0y7ZC-DE2?~kbbq_?Lx6w1Aqd|l;6P* z<&pg#0qR2^AK;5fFbc9K)%)WDc!kMnlFKVwQ~D*zsx_PUpD?CP&3@`AG%FjBHwMF} z7;-sw)S9XCZtki-x3w8QEX`;)@SfOE&_2Ma?DsLN!qeBfhdNvmT{(Dq+IxU7B7?q% zPM765KaG6Ab+^CsM)Zhp*1NGK5pJ6FjQ96;{;7 z0UkD>qe{ZY<-rf_b_Q19oMh#Rs-CGLNAgMYU~YM40fw{_V~pEbmi66!*oBq~IYQiH zro$jTa(Ep1j(X`wo>rE%w%lQJs%jA>v$JVX*e>S^C~gzIvyC}-Uz}ZILQiR(B$K%- zk?iqoUi$|WkpT_sdO7yjn12Y*OVHjVAHP)uD}(?tEoqC#u2y)YTrn_f^Yg2XJ>8Uo|VdZ9QDmV>yujG-G3k%P6aSU*{}}OMKbSumS1d*X1CRT)u^x}z9*h< zut=PC-qE8c@AixeZqhcGvYSlWzH-+RJSLhy_4q5ilc^L24o@RfX!!e1RrY`{y@Scp z%6830KTL9#S1HaDn}_)^(Nl}y`sU$5?}s465gty1$RLk|*k3lg_FZCv5{?Lj5d2Ua zQ@u}oCizeD(4797fbF&a{V~GG!I;(ID?jeN`%bPs*#fz01FN{*OfPB`P%35FgVW#0 z$15QR+M}h_A^736|D)#xB~^Hw&G&z|UA(W}lRHUru`#h2K}Z!9FDX zwYX4?1mnPr7H4+0Ib-o^?N2=|*va%3`#XN~G=Ojp87}*eBQdHLU$7xxLN-qW|6c!q z!5UsBLQor=?LT3<=bm&P5;9n`B>CVkKS4oyc}#!cuwin}4ysHB(&V=m4sOlAWf7RI z613hkJO9?^2}QVmv1zuWg}V@+lKcd`JDE=1R4nwxu;&uwmWNv9`^y~n`WboC2Y_)R z*Lz2gn|&_IFzwIdZYBt80&C-AWxQkx1tR-bP*}-Tx^q4(WUit&&qj`G8YT1+4~u#8 z!NmsXE^1UD*&(M=Jf5mo*1FYz->bEA?;AZgB);HjC$;Bb1&zi64cUm}-F7M|nsb?k zmgjI2h5&tO)fg-r>34oQT0Fa1e@o#xB=sHtRttS2OMYLQ*Uh#Dt01oSC9A^MqD@qC zPs1W?WC>6bobveh9}9Q!6^J#RX}>6Q6htou^xwrMHDFJ#@xhVB9c)J5Rubh)oyuAr z>$@Q*2;#oU6nNH;{LA+Ao_md$yfSN&Q01IN^pg8+Z_&1Urig|kMuX)zF=&F}7vcA6 zCcnB57vTQ%xZ(h+&Qz4=#hdHK?tB^0yxT{oci1~-H4T7NUDptXb5Sp5bV&`5_m=|A zL^4A4ALN_yXVheY2O>`HAvbb^{S$X)LmhZ>DA3nm(z?AAief%y(4lQQ9*k+xzfVV! z07ew#GL$!R*xHU+{uJurnma>UPBim%M3;-zQAXm}mp`6dgb$FA3C#i=Fy!TM27yY6 zW31v*PPl7Wq&p+k4Mj@*%``AXmYHtSFP1-7YG7mgfX~uBGeTTMa5x?uA^$zCX#{v zV*PC2;@HZM661xgGQt`k)T)@5Z8~tvi4leMxh?C z#xS^!t`}>1@cCw~P6}l9l97;p;C2)zH;dY$^um8k?D#N8XYL?#BjTFOGFz5ky=7EIYpdph9FLO8Z-v98}hgewr7UY%xbcFk!0 z&(TyT7d5uAauFB!a8)00f~$#Q{5S(vkkKfVrNfTkDYR@4NVP!YGeq9S(&2Bz*v)z# zff3Mj`~Q~mCr`|&b0vsj<7yH2E|UaHI0!nFKu1+Th=#dl~W7R8vVUaz8j`M#EB zq?8|3??x7t0#}S5pIUA3hVa`z+&9N$g!b@h3%BxQY!fY0VwW=o&x?T}M_J+_zw@t( zkF^Zlzu__cT@4R8>}oQ~0GP-45q?}e=y)*pZnF2F#=9KnJWL*FRy*weTs#i4{=^vO z#>vU}2#7xYThH9mE%Pf-htOok?QyCurYnjV>J*eJ!A%giUx;5Qd~}xMLP&78Hmc;* zCSc7Gjg{x#0RKM#z(m&>D+ikG|JL0tqr?mpy3?$mB==SEUht;iaU>34`x7f=(AsgH z8j^gzy-S9xgajI=4v~BExI{yib)4j+k7c`=_!@ZCcut_?*E%uC!83cOf$K-A7Er8M z{U1;@w@B|6Onb9ihq$FJiqqI!U1)Zz|MoCNfW^ZY_>(geP81kU{F$szP_75!`_a$E zd*~p3-?f6BSKeKdf(mj>x+GVmb4-1bw#JItDQdCZX*QO8@6GYeZCEPryn=Yx(nj~( zh__9T-CUqNdiie2GL5By=Z>kfmM937vMP4dT5gxD4~kOHai@+WjvR5*B;o-TSOo1eD7X+ix|_W(pN6mCsoC`1xg0@v zKsql}NRG*Xii-?;~IB8$77{7KSekV*;xC2i$x=GA0gcin9^P^lVNQ`td4j`CtLd=gSiF|MP|Jz4MS+C9Gbo!X3?n#i#o2(Ffsr0P_!b!vtivSFkWi+8?klnZ1ZLtrU zt+Lcy$JYopW5#}SpSFo2Qq`A=Xpn2`MLK*YW9*>PcyK{&S@GEj`A)YkrQW=)LZ8l^mPJ8kxayB}%18bID1)>r$ep9lr_mK3!Nk zy;fn$xHy1p95U$p$ZMyXdZJ9s+iiGc1?N!EVJAz5DYjoVa2l@YpNPbsLU;EsN%Q3n z_DmoRoreO&JIwJqEj@&()&Q>8L_U)QI%>V1hHr8OKd37@OwnznheVLA-3I}4d7{ch zF>D3Ap)S0S#aEaHSI+0>ys<&)t=uepN(7IL9pWWaR~?3(R4mSG2H10xPh79g(+~_A zoY+wzNyKOWG*+hM8zJZyaIy+Qa_yQN)VI_HdL>Ir%{Id+*e#8J@QYOxAv+x;X;pQk zxvSUgLK`souMz#YJwlv2Y;c3Dd5Pie;1>!MH9Syi|0t>B=}1HhAryU2YH_NfwlSMy zXAYuP<=kA*xb?SX6SL=k$HXR0W-)2)&UitQe%TM=L%#6fV|#SXOVADy6O!(&5Kx^O ziuPw|PDnu)QmyJ4Jg-;FOKj#~H~E`o>LL}$UAsXRgt(b3;^6Ece8%b-T)oV3!IYVB z(gX{jO)O)&W`EXnFj)Zd@V%RWmrNKa53Bk(IF&>bd=A%AvgSAZlA?&QE3}J7oUULE zGa@_NKI{3o9K&BvHZMPQET_z}g>VzM5ls2{j*S0dcPGK%E1S(D2{k>LWOR5;v zg0p%^E_Uv@%Eq911s1a6U{Yc)HfA z4+P4JBiH&}-s*f6rMwCNyboA!Y!~M?M2pOb3okW!Trr_%J>F*LG4e!^TuNBgoUyBF zjA+2})A;F*jFahXd5>e~(_~X=BW@Evh59mtufmJEk}`hYF_e!Au!vS#w)*Pdol?6D z9nn~)lAsJc5ph5@A;R8j%y$KU2297V#w`=(Sa9`wmRd`$fLHS(D2DKRnA>m!u*X1N zwePfd(VxFBfiWGd?+~Au=A5)<27C7zl}PTVAVlb4*|j?kC}ho%N)kR?W`c3-@k25w zowp)zuCOdT1>)TFcyDy(*M?&6odjfy4v3y&_h>5xFw;&H9O>RWGY;)rHcPn@`#_nj7>FRa@(&@;-Txhd z{^AHdQrfA$z1BNJ+Sx(OT-&y&NDXSMNf3P$$d-E?6TKJfi`(?+n;FucC9}!hg7y-4 zU0;B}OpNaqzY-s9AW0@KPiUH`Kq&n@Hjet~o*3?F&e*oN3uTXhHO}@umn1I)DkbD) zoDncQgRnov4`hTjcdGplX3(rMN13XOQC`ba_yNHZGXsK&ac=poeN=DMq6+6~LFDt+ zvY%g%Ab-+3HM7~TFtfc$BEMaQhc&g>T>AKng(ZELHI{28Tf_^^uw*9WB zQf1_6FEvIyVm6NHM2A9AP~OM)8lWIS*BzcNwi*w zwn9E=beV=LCk^_TXXV&Tl<+MP>L_2efS{ARO^GNLQ#i_F=~P^zn1-p z>no4hx=;(^6z5era3XXSaum!bPTDoR?SyzF;0?coV>*tup%BJ&M6KBWp$!L=`k0Dj z2+C?SlB9I4UK)f3$-<^=jRilv3o22QVA1f=j^||oLwxGZxItqE>0mbpww!pWgMMs2 z=Iivd!8Uje^F7;*+4MWqepL=V)f#dpfpj{Jy@f#d#g)xkG=m6v3A+RwRAE{Y8PLl) zI=Pv|!msW+MfRw%qWQwDQmKjR**FyDAf`XoW=gezkY_Hdl4mHqE3+o)Ae(0UXqzzy zU$qyAu`+0;>p8Ss>%kd!?<9%BWOnG~VR%0nUf~q~CuUxyc4t`!&LyPye&rz>!)DHS zUyGUnD0`%~9%J`{_D;ieUbrlYO7VhLMuSz=pGZdPZ&3$m7mml2%kl*tz!@pujvkj; zGt9u6XvE9Q^NqLYl=uN^4u;Tug#opH?l3$agEcr-v*%Y((X-GB6nch81 z(5EKq6j){KAD)R<_#DvS(+^S0B^{&h+T?{r`5Zj6SpXJF1K9H?Lqs%E^Nd;5#KwZ9XZahaur-nZ({ z4|FYFgxBJY@$g7|s}khW8PqDUej%dtdXDF}frlt*CDA#atAiAD`fm5mC~e8b)mUNS z^vK{1C)kWE4Uh;v&^Ek&GKlAk7C*Y;BBGnWNcEv@Q`R_=>Q2X+XX~3BP`FV{tC*Ew ze07fgPON>De)~AQFSKs$D|3#k0Ol%m12Hk>s*wsF2Q|9by*mI5`n=kynwBudzz+o7vV?c{0&Q=H6TY9n z>ccG$ia80y^9|FXQM`PCy$zi(4?D||cV}=E+_yH7Qo@@f>~*OcWUNA-pd#YO`@hRN z{AIr+VuXFfjz|7-`ldTJ>cuT$a@yT@dRFUZNo5p=)EQjKHEg(J>`v^vlh#S~yya1r zS#U#85n5DiBB_-rufBrx@|4&f#hdIc@W{*t|Lb0D?YNXdZTi3#PSd;iGz&H?JoG2% z#yIB}V@K9|vdS!}{3MCYZIKg-8#+NZJ=U|ObphR_Y8PS<`Ggan!xMuNh zP5ZNI8$p9$jL%dfNj&Q&<@g#2JyabFhV4ouR>ncIGJ5JW@(w0}l}@7j<;PweoC<+pul`=NP{EpZl3+2JSnnJ)VlGN-t#`m4F^GwN9) zz3MU1W>0ZY;X*e-W$0@--Rg2HW6MBSSubLJ0J#G;_SkWnM;g_M)Y~O0zBAooQfU$P z$JWwHrH4F4WcFSlobo4;B1h5b-%Sx;=`g(fQ7yva90GW4zp*Ah)<%gWA|1(QowqMM z>vw=w{pp@l{CCQujCkj3irXJ{;8?c2R;_=i8A#z(R*-jKV7Cef6;A*xN+l!H?5q3a zTRXO2P>6X}At-0~E9zt8tF4me5k;`}-GkhQf zNI7t!7|&cbC$;T1Bpuj6fVFTf7AU0>lX!myt|dCSH$$q{mPV7kavZ~%v19Pl$F$n%P2#7x<$Gq zM0WOgvN$Q-<1Q@%HdV6|V$ULQ@doW=wB+T~dWE`tb8Y&^2^^wF{}#kdp(oRoU{F6u zD-kr@4nlk@Bo$7N3xLzPFV)8({KBBWP?5oV=#aS*=Vy@(xz;Y z)3SQzC zM~YmuX(a~9`{SNS`JXd9AyDz1guh`2EFuOctDJ?f$v%}#k}i-R?0D5vrKyE^wT0>R zv868GDu+W;KKIECl~)Pwju6fv{ZN0rt#HoWxdd`>7Wbfmj}tBelFpfer- zq#cQGLJyUg4gev@$!Lt*(sXfi32KFa(TYr}*7Vjt#LIc{J?@^;%iZ{Fr2gXwS=Ttn z=#wk3!fYFw7Q@Gl1%wH>K0YjeQ5u7oC?r=GlI~l<7n~0{?4gqE2WDv`-~D4K_9I=8 z0UK0L{6DOsBi57?{Rp)ssrY#3Bn}2tvI}gm{2?5Xm6l(aVf-x+;+`oGNv4sNlqO6Q z-peLZe06@DM3FRD7rf!V?p532P#;S1qZ(n|CiVAn352fuJyn}!k^CA>qrBP!r5()2 zIC^yVqaV-1|0lW#;>S3hfxlSZ&O>#(TlU!MNs-3VSLEEWb#fT)v>n=Cq*U(m9-1Co z^FzPszB3MvSHeWC7b=dev5J>9J(I;XK!K}t^yjX%(B`tSS?>R?#ZpMwg+`_B8TYS5 zzTN85*>Oi+s&Do!RKmtai|wQRWeD$?j(Q)squhNhfV4mv)2i_c^>X4z#B+J07Q0bD zz?lAo*^5}AgB7{+y4K5d8 zj^MJq8#G(^K0AG8T}9xltvF18O$MUFZ}1=ZzL`n(opjgeK}}B_BDiIu^VNKGYhISchC@wS>NyqA&zG4P^4gq+i2KAjSg@^hyseEmw1cC;&;XL7L>!+4V!?=ztOg5ryFl~ zb7-RF9~g^egPQ437P6p(O1rY^7`H`l$`1tGH&(f+QT@UR=0K-8#XmehMYWNBpk;e8 zv9-#gU+jPDJbO!U6pR?YQVHkOP7Bi3CZYh`j22ZsJ1V?4VWD)VFA9aDy5wngn_kr( zZ3l2#=*F1Z3Q_6H3Q9S(@32kSQ~#vqg_UuseNa^%(KBs zqm6DnHc;8A2wbh$M77J)Gc+MPLNV;*+pZG$<_FH^5DXt{#2?LI zxU;uV^9pHe$~7B1y>>aNu0okY+>x;xwtwY$xfkv7hRH7O2Dbq;ddZIUZ)xhI;TV6z zVfUy=%HH&1AOIY19s*>6l^=%yv8E5E+ES39VGU_52FppyYVh(456BxT*bTr~;{>mQ z-Vl#dkH^`xCghdOXHSq%=M%;B;5_T@$6hMLX^NrB<*5x zLs?(d7L}*T`^qHUq*IUG4-<+t=P%ZN%G&tTPJ&G9pTT5eu?hFlHB zZ@TO#1rWgfXK2FDh$Gx}M+1IY;}+y1pjaUkZvESfTu~_0QZn{A5d%-Ee^`-}AuRCt z+_DeKCownZ0H&7?weAuvlEHm&aEhmQ3qpa*PoBOXi>jVE@7g$?BA{edW27@@o?D}! z7TPb%YqHhCAV|ir=FkKCYpHvq@_{+Ea1pj?5*UTU@gLgZEaa{lAM^O2UnizO(TC+m zt=f-AzgR(XA%a8fxr}=a{52pYuaU;>o|NvY1#Zz$2BCn9-6hcG6+(Wv4p39Re_mvd z;r&oS%Gpw*_jTQbc&vq~cBR!rJ=4--} zELcc(c~hqk*&y|3PZne8b3E1J|GJ;d^oX zoQ{R}03tW*w#C(=A+VCmN|(l;O5)H$8jEkZ7IAxq;UW#2P-5Mp|3VPuMtAj!KYLl| z)i$=sdRu}vjmq7_>!rBz$Y2MgI(uN`YB~RU0qGwMgCKpNKg{@v8gEh|RWaE#5%z0I z&}Y?oJOYO4d{7s0@!o#>cF-NH+FQ6XalQHhew;)z=CoQDz@eXZPvBiWpfS?sbtFx1-AsnOyvvLdpx5zmtJFfkxr-X*4eI^#H7cO zM$GpFH$|cK@d);wYp(g;Q`_L%PwR2}aODfyKW0%V{GS6}Cg$FxHebx)gfyj^nKI4a zQ?++$T2t2`>wD(B!kfM9d-7lm0a4P$O4zTMe``LKbM+Oac9tgn(7xKpJAHG1NFwq0 zPu2|#n+~kJ+MEsSz^S$2EO+9@<$C;nS){f}oeplT`)b9nVpcJ*K@REJxqDuTS z6X9i<`4g9Knnrk0y4Jj{w@IL#9pAX3{JiISV6&HQXTBMMkr^7J&g$@B;eG{G_q}wB7!CSRVn| z!x|2#ln;fMoq0SO+FdczExAv$5nE@mL8)@`^Q8E^gWa*j*WfCfTZvsdtA6Ifjo8P5 z{KxQbgN^L~lcJ+QlCf5A#6^4PoaZFxUN#Qg75n0!*tEA#5tq9-@`3M;nL%asv0N|i z$%+rtlqc8>3d-9LwMVYzAl5Sf6fQc>k3!DS8YXvRCg@KKeuyvP+#_i%$AEi|YoRHp zVBc+mpp3EXH36LI1Gu&Vw_|T%s%0#5Cf-i(EbM%O(jfs4G7@dec7uq0wvvH9P;wf4Or~|ELL4;_?(BH5fyK{piwX2v8N8Ws3FuT zUKeU&Nv}$A{U|kKRYzkTn_z1$5E|m<|AfFNUo4|$^FoG_me>Q;8AADuEe>jW><%A= zBdPc+dHs*J3-Q==XoIr5VMW!S?7)_|^^?lutA_jI$YkR}zI~c~20JSfpSm(!t?T(#FhcvF`?S2dFpcrk7J@f>{ zO0f)oobeWhh-VMz&l1Dx3_OpMoHHwzQ3{MpD@XVKHFM*NHU#57Ag;C^j}xK;%4F6} zSQ74H9(CjcOV8$W&`7xRvt3sVWBm=LJNkL?xA7`sO2^^?Dt%;@NzHG}#{39S8X$O! z;=p@ltodXu*xMSYDpEVKW~1IsTK7$q8AnI@FL$^JIJ&3=un&y0yD-S`*Gc^6!K)CJ7rs zs~o(Qa!6gz2s^jl@Sc+vNnqnS}X@~5v3teRL@^kVg zl@FdZ#5aa`Z;P}EmQ^M?)pjcDN?D6b$JBuSercnP<#Axc)Rv=WmCxX z-9fN%?to(k0i}%JF+o}0Yertd zCBbf3Xw1KW5s=dliqQez9y{=GU%>7O$rB_#P$A{sdMjvG>%>-y=ulZ_$HWA+VRdIcneb65HMK8R~(`1P0au^(qP)X8sx zxfk)5CA6bM#61cZW4=S^rrImc%v0-Q$iUOW56C=MrLLHd+LuVYXY8rG!-)kfV(5IO zarF`kH2q3Z=i~P$#f7e>UhMMZFIWgb^0XR zkyJe!0O2t}wCAB;16It_mJovZe`xl*>R0kteFXQ7N}n8GW*4{12d#n2st*W#?qW57 z3U5Cn^^)ym?_rah_d+xaSygB*^Z6M@SphmE1g@yxg2?dG;msQTOxifRZaW9ld?@q? zW_F(5kYldrj)Ix8R{=`vJleVId{CCwQmCLjUTWvUb*ev;(teU+fHx9xA3$-f5hLAc zd7tKhzSr%!7e^{xVfk_dC8DwTA(|qv7R~*HVIIv}P1C9E9YYr(D1kZFhp7I?{^s*t zr}XYN3S#kXs*m|2o+5?w@i!wC>p@&Dhm1sC%%pH*zxwjnMZ;1M^pmbEmraP9XXS)& zP303z?qWyUiW#Oa zc$Q1vU$I{amJ@ucto5sIO`bZMZrQ$uMq5dvoX@4vvTMkV55aeUvf(b@3Ceg680{p! z9JITfzEE`K+;|a7sH0ZD-GRk{G{aog28>N+W0Ald^y%^E*J%Q}4#Xe2wK1gsLKcwl z>@xMl*|Og5<+&!~KvOJ-*{y_x@>|HXCJZc~$W4EV;NHh0dshs?hnrz1YY|-|Bj#r)?QL zK{Ep^wl2O_00wcTD@yiuIVqSgrXk_mpkK~I@!_5mF>3RXz4f?Fo(v23OMO7}UbxG*^ zK|aX0fKDFO^3^;1x#c!rmfP?1a;2oZ3;K{)M(1=qs+3)k2-r8e)jM4=fp3B5(A=Px zAy=H`5<28Bk6mBE*9DU;Rpy2f-Rd^h09I=(UwO_HMvZkinFS=!Ok5{ImR6uh@w&yp zy7vt;AFC-tn>ct**^jNk7FP&qkthOpKt087`S1yz?f*>t80SbzK53EX5{v#akiLwn zzuJ{5t1?%-R^t6r!u;v>Bx8&;+SFiq=38XzU<}XhhN;0ziF5||p8S4tvqiV|TVEi^ z$HCaw_C(#kk`RBAdUI0GSetlP@YGhMb9{a5c<_i*&akoumf(tmQDg^8{UKWq^Mdp? zQl8b+%ov+bD@4eVHU*C&yn7f&@JdUfP88rUdL>OEjwZ8Pd7mUH{ExfcDg{!iHSd7l z-QxbTa!FAXcG=fKxICLqI=C`+TtQ~VJ0dnqWT+#+RA}P3&59K3OubZgJcM&ejq0<< z5wvsz!r|ENgCi6I%tLKD_028#OjAsz)cWG!(LQLHD>0wmDTGqYk5KEyZ;V*w%?6)P zKy)divQ~+4cSr&H!R%0Pq#C{7lA)&Ksk~++Uq$!I24YE!7hu-7LK{785Fo|4Aggii zfQPofsrGx$(xV|5ya3xs7VTPK*-55sJfrz%{#}ok1KZg^2}69q4j~@I9ZK3b=7d|6 z+qQ~TQJ>SiL06{|sU)I-hQ>VvrnNc0<0s0uy~AyrUS5fIu=k-oP;3W73uIVjaUG5Z zJ3jfW7hiFcoY%s1;53?q@jKxa5mp5TgyHH{k)1m$k4N#0|Lk=8+GojBBS1ygYR^Il zsoR#~bsMtj7u%ptgpDN1KpjV;w>l1JlwaV9FL#Z%YM*=&vvp=qcWR*rt~3ngZF|5N0ba9n9lSExT}Zxx;-fg;1IQoYT+&ne`kk zjZQZzi{Jd4v7W?pOhom9|Ha-RxE!E4!N~12{tcdkd>t4=Qx%?J{fI``raeMPT8UfT zYG*|{u?7kA3W9Lc0=6zAUDGild5K{bI(fMQ3S*XY928jY>%cLNrQvy8m|YRLzKdk7 z(iVse`qKV^HH=}TcRGLBIrNAUy)B?c%G!+MRd8)#?$dlQ>)s6-fXnS}(M z7SX}WlV{YI`6(=4M4=^jx@6}dr5TA3_QbWgUIg+~9jMKBeJ4eK)6l0H!_H%FA}fEd zxIrq#qE$}h3AGF*j0?xGlK(73x9xa~7y5A#Lg=Zilc>6cz--5M=qPYG!v$-Q;PL;# z=EhJIz2ab5;by+-&5U#tz*<1CnR&@LS=W>Seq5{z9TA&oycd3E6WEr%1o*GXcLR7?9m;uNo{_=#-T zMUD>%nB*-@J(}mga|MpnT`|MysbOm3Uo#2Qi_8oM1Oe zLPjF$yhjBPS9?|O7aJ=2w$M*$XkYjbIfr|nf-zpuUdI>4%C!!a7vQ$CJBJ6oEQz$7 zhwCaLH>=9Qo7YX~hv3LYv10Z=31p>kRN2FY?vYCNOs10U33|@ip|)-w%?!jmHQ7-N z445};7C^s>O>8NAAX8#Sh6zvS>9Sd_oa9f?6<}~8ZK2_bzo8eO zdZkl!T|qPTN{P*9t@Z163buM|3(>at-I=xmTuD+mEQN|bJuS(A*Q*2MvVLosk4)Lws+kdd<_#z z*-%<%y5oHc>_;Y8aF#5-I-`uX_u(7W_R{Mg3g_q|EfRQe)-sAL>K+9_( z5_PcA2SmQV?=m|xmN~&>>M5eYFt0{=c#h5M>%JH8_0QZt7DYo>A9-9HUC-ta1QI5N zZJpqyecBs1Dq0<4WeCFvW0W-DHK{PMzg_GR|1i^dO`iMSINDy0QPb1_X_6wrH>Rgv z2oC+ASU#l9p3SGFE?{aN+kv7pzX>dN==F8#RT$i&q%0Ldx?4Lf5<%|XnH!|n7X1`+ ztC@g>O0)u#=dE>vZ1Y)XYMaNOj->lodPNnvpx?e-5TD30YN?TZj!0-eFct`rVi#D9eV+{-6XSa6tmy(Oo~CivtfYp> zU{qFJaReeehsjQ zhB;*Wr@LCPM==CVY}??o(q0*}k|X)Mf0!4P_aO&WLQJ-W+dFpEiu1-;Yi~B(SkJjP z-beaE@rHs~HaQtCssSLBS1_?fh+TJkqwi*n``1{=5tQxDO=%ZkyCcn>R+i_H>zs$o zANZMbP|IsKP7PJr-wnOZZ*VjJ4Mf;#H zf!wY5M+Re=oQ`Yx{v`qjPsb|aIi$Q<^$MQR4TpNfPR+1UwPjmE*AhsfF5rWtUdVzi z9qu~R;nv<^OZ04+t35EZa_e9d*W)3@gbD4tbaW$Awu%ise^*Nc9$soGN#hAN{3Y9N zUBTzpo#QV6g#%Uu#fxX(uzHCXi!Qr`7F1_eD46)90T17pfBA5k(k~xAByR==F_=4$ zh%0{X)buj9m^dv0z_$Rm)XaH|<9%_aoO9G)t~?WgvBN@GxMx~iuNA0O{xhVbDxsmY zbSRcqV~sfqbhIn_ZUn+ahkwxrGEv)J=5h0Ezk5ZfKiHN8W1}on7_Ovlu+hJ)#?f!@ z>Rn_E0Mt^E1xCtuyibN!bkbJ>ooxFVKx#`0sWch%_|H>-lrbQ_68&$|XaK4M{k-^$ z=bSjSCdYLGYQ|2&XE1KcIa`!kFHO7oBSSzXH(mqd-MHhx^c!1PwxMXq<58QYmTg&} zG|W_)R3{pV!vBx<_TpdXC+Fm=ep|%)-VlQH&W9n#K@9&W;(Dj*+gYXQ{@s(j0s|g2 z7-Hszm4%z4>$$H79e`)ndxB~1RAPF}BWFU?x5r{8sSYY}Wd>cn<03>VOx9 z=UHT!svGqK>}{*yD*Ac=w!K_S_~w`!)%8iDLcer2Er0fgc%JIU)qff1YJ@e>5afVtf{*^w8`nsx<6#*x*3`SQINC?90+<4 zAS|OB*D;%hqKyW=rAR~LRP@Jhws7#gSGUQA1bTHp`L7T7c3fX0X8@5Nl|7Y#q z|0=HvoTa2_r)yCB@^N-27o}fvXNNggNu1(-&r{6!Pe2HXI*98L{|PhJ7Eua@xhFK) z3!jtIJU;p?$zXe}dV6FCrczUYZr?TBq1>t;fx`q8L(8}FfsVw@@64NO3)~IKzz-$Q zNFIvxsjc5fm%`g{v4SS$)(^r}(s>@)W5^$xl6X!+jSfn)=+N5^ry30gae8(R79K&{ z7Q}A?I_6^GORR=}^m}a)|IGJVqh1M9cwlkRBFU_Vi#DhfGxCNF0dz+DhsZ!Wu#H!l z3p#nrgQKG*;nm_-fZ8x!5Xeu`7P&r7D~83lUDBgumBj0)D@;F40EK5N$)24IA1AO8 zyGak5wlJ2X`p?*XdbhlD6uk2fk^uHzulkerC7seGCZyFJ`DDD>ohYxf^2Z^wFV1@m z+0GTOfbvyz=pkuDkTUCQOry)J>xVwd$)YqqkB(0~2>%Ynw8fKKx+PT0&7R(oMQwP^ z6lE}}4vIFpGPgpZP=u=VLiinwYcP-&({NbqIC-_(NJhj3cPEg8$T&FKdollt_8MQ7 zHEYU5*ngUmj5Ezp<((1>Y(II?9qN0((yJ98B7Xj_IXM)!$h9EVR)%`f$EWLfr@stt==NWxwsrK*CKY44@p+M&Q|wc&eqZosZ=Gh3pIw zIOo!gwhK327G_Jp9xgNPN4a|J9MIkgciKkbF#jz71nO^R=Qf=asRv_pLlLShUKGF! zv4=bZwiEG46XPdAon#UZ)`*9Y>iq*@rW8X|PHk888HxXG3^R-YB=zrljdYa(W$j?J z&zmXLPnDw#MfWrZ!p4kdmPzJ3mxyB{;X;Y^*A3I<&m)!gb0km^l3_*b4N)#{#oz?y zf`B?X;mpa;#3k_}yzfg%wvb?QuWpAeysVg#%S_u_-%?JM!EMqcM((~5oN3f4_r&!m zTizq6VPmr0i;{(@-?7tmO82`qvNlIG0kn*%MpC>_;9Q;T`X^K<9X--UtBKcb8)|FY zE3_xGn;+Dew~16h3^4kiaD^?d^%uHxTWYgg$Fg1t`>!M`s@E%Y-Ec_3IyRv8bjs-) z_hPmtB3vmmz>7rU^2i|amV1MDCg$MHXQNEYk)(f;bqBcnc6K`WNl6YFyEhDraNU&- zTgBcpgYdOLheJ+P@{NjCA4$$nDX|E^aLL8han8alM>#)Zuo0ifX18@!r3BPT%qGNn&I{%FB8^a#N(5DdfBk=AnY z|1s7b3@$ma70(<`!#!AEZ?P+V({KQC&)4ePUkEuSxzKpebfqUgsR}YF-=2yU6SkH? z;ZFsmtyl%z+XAZtTbO;?j`hG$#tN5Gf9i5j;0^IVKPh;-G3b%yc&EXPAmo6hwQgfZ zP;e)Q#ry<-6J8m3nKUCKO0nQZcvi}?T-)t}RC>grnu~9;x<-K8nb*n9^eFbB+=0}p zI%P__#ZCYdPpbL$%3kBC~^@*g^HGNva^T*dF;SHGH8$T;2kP2nMttBKTjm2#3!Iu3|0%EFQRc z_D6TueC>zvav2EVfB3WIYHX?1rvqF5!szs*{?XY+mB%pH-s>0dz!r4;+yZTHsBY5M zaqY7(KhNqP3TL^+XQ6wG=|QRE%RYWHo!viX{hFxQfd)C7{@h!>g_(hFg0Sh13fi*+ zVLKfB#duUNkpf z>tgC_IZ!DKI}eS~HC|x3lU(G-Gd|wC9?sX2^{9_n0#TDG$d>qYif!LVWB#Wy2=~j( z+$HAI5%r`sHh8?AV(?J{FfYY)T89C#A&RhQ7+eBk2rF(CQSmwc( zlzxr*-M1N)0!hLMvN>L>qlc!jGg>oRAc%IU>@NBZTx+T;L1@qJvJ%(}L3fS-;Bov! zgmUf62Cv6#uJ(`OD|X|`>$oE_QCl|9D7Ezx_9_dVV&i@=oqEI|v4F<7a$v@S3eq)q zi&WOu#;S>y>6kJx=Kogo`6yhgBG!j)e7n)V_@J>}mg|bWt|FjHjJHBLpkNXwv+Uqn zfys;O2BZ$k$NjhL$>Nh~X6bZ2!OE`Qrxoi zJ>G74Yfo{=I8Y~cFQp2-17o=n?JmIj< zi)T8`qKTW(Fn_HvvN-%+C}cKataBw7YQ6Dk(e`3vx{Uw|KxyqI{8uY+!Sn@jaI}sc zd>ZJd3dy+f5JpNV^be>})S4}w^{sGHTjvx+ZDKfdbKETjlE$AvF3UQttf+ObUKTO_ zONsbzBCDb3UKXFcWC@RyDE8uW+AqGkiC>NUWhDHJWhOdHO2hKg1MZ@(Pf&mx;oi@N z(2$VQE;Q`ZE}YE8niG7%iOBuC(wptp1P7W|AF=E-w9?Nqlj2%k0Wo$;Zyj zb$i6l3+9Rt4xoHoK}9nZ-1}bW~#2juaa|RCrLm&BqB-1_32|j_-=_2#t#$n9yT&mIQ}?VM9Kp2o45I&_(sOc1J858lap+wEK^6L z={Vd+a-t%}KE^^=h~R*ge{*yqX0&fRRXgo_KwHEn!lOtKU+`^A zZW_Bk>1&zL(LhOO76S!H71tgV{}56Bcp08USskdC6(R3^Q!k9C9^Y4LV0U)57=zCw zd6Qz{lg#R@w*gZ54_>;D@}d$G63ymqu^Tnw3O;;_0ALsS8Wy;?C@VTxY#Ow6yQ4na zV5H^dFSn<_OR%`DgSjckVfP*}IyFvK8fN`)sQ+Lo?-iQ(E^3Zef!l3TX@XX!NCq;* z>N1n>vL*$jX}q;DE{h21%n6k6Sty0NHEO!|wJShroEEHEwgLty)Wx-dS&P{ z7eiLCY;j+?$1=jIWoqcs_QPO&lPts`$8eiqwZ}s#v-ML8cnig1_W)8Q9Mwv8*!?(p z9OPgn=)X{OriD$*Fhd>h!|rSnt8}>mH?F|TbHKS5llD5#bUo;Vnk@~`^HF-C4=xKy zvSM~U!)!)jiWEj-Yp=y+b#NGk)*8Wk9OPG-yh&(9Jzm}FNd^pk#VfHj#Ut8%5JsK_ zxZn^-N+w~bFMvoa@KWfNPPDtP$PFp@=PbN2U?-a2euT(wrw{G|lXPrXr_H-43pgow z8B43mt_-}=?!ckl?eVFVEkWz)<<0j2Sza7Bwt=bpNd&+?E&3C!2q`fz@l94e5O)hL&IajPtIi`}3PNp2imumXbb@+OJEuEqa{ccL1B_#>O1f zCH_r>y~3`$CEye76e)KKUx*HEOahUYaypDM>ln@QUMX|IA%$?mUTT-|#XVVqrd&CkB zQfZI|rKjeND@p{hZVIzyF0D;X%$YsLqOwfLSYT*i|J3fTiDl97dIKf4hR}lQ1ob`k|KQfTejDg z>Z9N2WP|wwE0|mfAgsZC>vI9wzH5N5%ei%+I^ zSgviWb-?I#wbIwRM+rfKR3D(E&}fV3K;I?6(`h;_L^i}j`(xK?KD-YV{(%z;)PR~~iMdkCBv$5=I*c@tk*7KCHX5EZvw^}ke?*_EUy$y-c zUjYN3175{OA#Gn6>q>7(pTZ1%~V#-G+&GCB}C6$q+P)8QnQ)a{Itjq5z%%V7nHGN(T zXc;XhOrAEuf*Fw&`sIV>%0#*lI&9^56Oh0(YY*Ix=LV$Z2m8@`eB-G&0XX`Yn=x`S z{=%isxQ{}0?u`*5edk{V+F??{5^F5c7xBF`M_3>be8>Af9iRMNV*32Dn_}mVkY_eQ z1;NB2Tr%Z}0=IGmmIx)p0RKM#z!#%H4x*)^*oQ_i{)o`ol_iwQ*({DPJWsw$4ZCz5 zYr9w9Dnyb6hr`>Q*U&7Ky8sA6JX|g05Zn4Z>1#QRVa2ZfkAc~xT;3~&`w>B^d@^2k zqN4&B5|v#VzfRQ4j_CO@{^ z@Ik2iBr46mS+eJt+H$o_>#J?~?2T9A_gG zoiFT~&B4?=4ABwM3(QcCY)!gm6;{b<)E2h59t;8=7Q9>z0<#~cB2yK%{NK!?y#C^&2z_Q_z|K>Y_#UTZZ&q&(%*>Ly&?SM%3N8X*QEBdHWjgj6 zU&2==#a&NKyWo$|NMkOm<>hHKUsxEd!I^|GalJ6-@bI+K&ilPQlW(7mP9Ug z#cu%cY^pvc1T|f=JS_03t}Cw`Dor2r4l7SKac(wGuQ4_bs2uHLdSv{J5y!S#S=$rl zO}oQkXEXSTr<4hfiK3eClgy&N=Ai&8g0K+tX}5Sdl(<}~jSL7^P#8{a!MWxMwhpSX z7%wOEhIE_OAc!2&E^5)Sxhjy}=&8a9s~Kc)!6HES6vW#*(KbkQ-Gbg;$(&dYRgMYa z47DZMPA|MjFDqVKPU}kXK7LPq{rt#Bvc#$w!Oq<>H-UXEMpbhz?NE=yz2b&$^C+d* z60SAqkMn5%i2Q-3e@P2{P=+>>joxAG_KGw3(*S%Gr1^i{HM84R?*%H=mBOX4^5_!T+KNHK4C37MldsN@PvJSDL zveI*p>4=jO4aoaDl=f_YBVjkwmX!=s@oH$tJ_|yvR9}-h0(fwwSjauSer98fqH8S8 z$CzzLHS&E4&;FfRmUAP4YM#Tni;}IhkardYhfiR>^&UXs3-Mq~=S2aRQw-cx(aeAc zbbsW=rq{u;n`N<`q68W+S!yTj3X8nU6looYi4V$a9(RDP<>H=5t!B-bb&`QFAcqSS zkZ?ec&&ZmAx#Mx4#COGCF|WSqaZnKIyMo~ZRb~)%cX*?UNF^ARWx-&Wm}aVWYatBS z)eAXT&k)K|~L9(m5_$3%;v;p@Pnvn$Xi``?zd5!1;xJ zSdf!i12_N2^LcWRQeFE@g3kO(lO!Hlx7Tr|H^&&t(B7ol%D<$MJ!}Lhj7%?n08}!^ zpVGJs*yScYuOT_JY55>&^7O5db*4$XU}RQ(5%MPfC+m=vJML{v(i6#CdL}$psn-8q zQNS=)?bV;|&o^~6zEs}4=``WbA;q`tj-LOdnZ!(l4}`4E3l6TR!qcYLN0!@8KOIov zE3a2d*V(eu)l(q?%V(jz42TfV%L1Y8r@)8c%ekjWF_3xgs$|gEj*EoX(?^&q?X`2U z_8M>xFB_F^etyzAKU<3Y{@WFY@K?zDoXEiFU4hp&mWdb!md733PwST$jGeQot$(W~ z)(yu{`+3b(R8smriZgMNBGU}wHj;th=WnA?)Lt zfdHE{2IK?RH&}-4=#%jWppb(R8@{CrAFJI#-xwSGCjKG#N(kNn)W}+LM!iIWMowcHF-u{=V9X{@B0gdKR%pdjxOQ+0O9~YNLcbEoE|OK)VHY(a3dp@Q%z#GG2A_ zk_56G0Y8<~qudp^FkoIjqIp#@!V)yC%!)#~z9nfmstOVjyQR(rftaGp2@u`tCRgSO zkelw{{C8CRx^W9mI;eu3hBif?n#{2WBsvHv42fgJtc_xhr4adiwIvEMt3akA z{fY%g1dE8R*OxL+sl~aPau(B{er+Q2l#$O5(;{wF=u~~R74-@C2B9xJ=Z24+@2*@E zvpFln5xnZzc+gT@8TC(QK9vnQM3#@U;%nj$$!a@nX542VFlF{BwNddC1&Wm|Zb1L$ zIU$`|7%n&9W|QBhY?rf`JY#cO3De8;)`wxU9|Dmwyn= z)Z{-_5U*3o;hGQ-dvsKGOG}xZ$MKb$(#++{cz#f^EfW3lq&iZ)Uj}P7?VQI5E!6_D zP7T2n*BV9LY{iTjy(R$4M`sPPk3+#=| zB=3(}MqUXUrKc_+++W=@gLSJU<5Ub7$u%!3&}3$ViBDY2l5>ZbAnSxU^K2Txc6{V> zAuu_n)7bJ0YPCosMue+vCEc6Xaf{pJljHgdWW`R{@k2L9yy-KAYu1N7i3+rfFS$wq z1VM>~Of&~LF{r*bb$Apg#gE`Lrm7lU48~w*pJ;t6TDeRW^rJ1e^n7-^ee-o~RIgMr+t^55SqN#rBZQCcK%gB&nl%bKK4r zP02^N#j*m-c6xj9nFU8fLmoe%z02DZ$;CWVU`N!JA7J4DU;-3^1K!=i(3#Q*60Hm~ zZMxl%sIadE^!A^=0W3SEk8RO4&W^G7?mjk1c`EPHyX+g<0WAUt0Ko*$ro6YV2q+%Z zKZ_#RxB0?LFm#Uq=|K^+d6ev5@nc1E{1P#N4+iXfTF>ggcl~~2y&&}LY%}B4h~Y)M zf;*st#6Dyz>UmW+X6VeyJms4aBQ!cYGuW@z02Y&g_!u15fF4@_l^I>O7u&&OFsA%C z9zZi~jGLR8wU$sYYd1cQCeuWU94nYui`#R# zN%rACS?0kPWv1`8C~zpMf5c=f(`6K#g{|3H%)gCt+u%ZAhjgPQ|P|cjbs{ zmfL>>d&pZ=NPolV-c1jsM%O4RYDaaBgIwNz5*`T|hnu^#UhJS7e2Z3)>Sk<&@Sb=d zWlI{|p@)giS3KxAZ}(5aN-C?L^gfa2%zVQiKTC@OI&4&0+qjgDK|<_+K}o2=1ws26 zmp%snh`&M-m^ogiJobXAR&yjnK#n9-ZE>XAl&ZTk91+P;DUh|E?K_x3N)fNQ%JFD{ zP?LfsLVO069hNPaVhl<7?iC+NJk`-ex(cqN1h^x(&HFi<)*C@Q(Ga(OHCg=@sFt~w z2BodhHObn|MoIMPc-FfhChRI0Opfw-|J#kb=*K6`i(~e3z{mS|4>E#j7%OJ=ZXtD= z`}QkoMh9nxwhtuP+Q-*qF}_0Xiyzw^n;PbQt$4X>2m9|*3)OhfXLsSkrvKj(%5jgyo#zl^ORp$ucd}wALyFfV zuW2spUyx}MGy9LOY}QcZZ;TmO<8Lv6jNSXRjv#u0VhUW%CiQ1(N|0Q#J1O%4GO z^b;5J;+^w+0zORr<Z-66=;Wd)F=)tY#0Vym5|?ML^PKT%I0jgQBtc-q#k&&y9Ta ze(Al50z3!l9Um9sX+ya0bkC0K5qS2Pq`Op!f4>-cIMfxlBDyE4EAZ?HYurfrc zYs8}`H9PAW_;TYH#mV9g$!2*PVtkudNtfHvee&!B_W53f$ayItJo|uxqN<`!J#I?C zsOSUi|GUU7US=0`O?2_u<|8=NhN-R>DNXWLuR$(B3Be71e$7^Me~^hL=@{d~ZAl>V zAkU1Jd}L$BOe@7`RmX_iu|Tv=DCY<`3}FB)a&K~G3u;Li}@Vq_cv%8IzeftieFh5Eb&(&8PX|?It zsiYme78pEp##>D(23RP**xIShk3Rmwr~>|JXR+;Pe+^!4?e$E*PmTXp*e!M)T8%pW zFM2J7CR-lWZpJ7xO25kSaRJwyC>a|!_1cUM{@MBD$cK~*CjA#!_eTZhg0BGvLS0ym zcqWat1h4*r>XIchbx$>*^;|%!!auasJ~FmY*nc2!-ENDQS&=JanGj&m-Tp?{wrpHG zt2Ukn_hB@nd|L`e`vrw-RbW8DSx+EyMLz$>5nv=%sHG`?LSZl`!pl9IwhQ2-^AZ@p zYwq~=6VBDPNQsB*r@Lhp3+V|;#9)Lyd}#07_gSPrbYj1bv8uVzUjhAOBI-$c?ESNK z_5d}V#adxkY(tC;h{^1mmH&`(w-@qv%!-e>T)>D7axV`_Mjdv%_vBut1@HG)X0m|G zN`3A#GbqU=x}wMXL*N@YI@8{EcnWs{WardC1LsjC$ZxXPxdYB4ojen^<9#@qdiXNa zJBEYwe5dl1uRco`570b)N`c`tyCZ_0M$a)Sh7m>*Ni;6#JdW)P8S{AYuGMY6 zjzgCM97JQP2tRxe-*75|i1r~!sd^foV+mS1c^!#z@=@y1Dzc-VIFxg5&5i#+_! z8V!@~e$ERuy;C4H59H2X<1xGzTe)Xki;VzPDlDwxu zonFA1RYgsj7I(Gzq`tKvibLLnuMRJdaMI-n8VKA^!Q>tkOQc%qq~b-+As3-0R`jEk zW)TyDY!pXUl%+Pqe#Ro_5EGBEKfnV$X|i4uva@4tu*JdxN>y1oRizmK^W4}EmMxMH zt$!>=VS{+ISNm>AGPP5KY6dW$@9YUNu=;hew?=OzU`u9=?&F-Jb}~d`119g}6rWO{ zEATYO7l66+Iuhbv|1?V)`VZ+1pYYz6X&Y-E;JD*GwLC11f=$jBHi$Clh*xz>HCb2naLCJ4gN<642Gy zYnpjGWWiX9QaJtPyv0-yYLoncuHv(QGTj_ZK>q|e7)3Rs+@bYeB}3D!ZbVf0)IXbq zF_Vk936=-HS^$L;Fyfns&Y%hd%VflkgN3#!EgoWmNow(+f<7b0SWzySpg`7@0}K-d z#GQB#EZcbeD{vzstvNp8EV%>f;LKJeY^e*FP@qZ!9BoT+31|Syz;oK-e86rz^;U;t zaiXK!pew5mEf+9zbQfT;AluPK@f;US#( zbwUThqW^j~bsvImg@E-EPEY$N4WT*rcdo>fbgT+3gre(xriiG^X`w*ZX)y(khGGa^ z^B5-5V6CHcCVL6VkOGie=`7yR#VTTZO$i`xaW+Xk$mUM5)PuQN+iP@D2VLaNx9~Xd zO;|=f!q|{r2PKxnel8jtG4M!T-WUNbfS%!MO(Xs9B2(C9QFf5u3LA1jg`E0uDmQ)Y zJe1t@_?LtQgI0lyYKN?Ayzi{13{5}BzdpWyL!usG7Al_nJIY+<`$fjL;+$2Qma^>% zqm~SiX!Q{;1nUYzxMQE`E+4K6ikn5+yQ-NOK1)1P4}rZ1JUNQybcA+;*IWt+A_S#m z?uP>5sa`WK%VB>}Ee?CF`0rn7S0OBSE5_3c_~BUeYouBD)WXjDvNq(O>!jZ$nw@+{ zTpPnvV$*2@3@W^PM-Ra^2qb5_S|^NR*TGp%fH1~a>(ot`@=9_xB1YWser`eaF|GT- zCDwLp`1)hjxh31$iuh{PAqVqRpA`evdSZNzh@Q>f_Eik2G$+}{Rat1{bXwT=$Z*{S zK$}P;X;C)uqeih3n^GtEQZL1f@^(r9p2~9nFLP5@093lb*pgU}u!Jha!BnQq`*uu! zmZ^I4AnF2|v;XIoFJ-h}8+v$h%-XR9Z>Nz$yU>m(TZV!YG;vniSrQ_do`Cu6X$LnN zHcyk~5;M*l;V&>Lw`mbuw)wr=U_EAYvYZj5ERkFa$%aouT5h)iB8_-2w~+yqCaYiI&AFK)ksRC%D6^a_evd^abS=WW23N z4Mg@BS=k(SU01|0qb0jDczeZ{-K}smwY|B6K`%D+5$T4Qx_PWfV^9u{TZ||L?m)o! zblieuC;dyd!~+RWbTRNQ*xBZ-R85wtsWF8TT;DAro`Cs8q`|5fO(S&Pi6{%>e(Q8c z{<#m@ZlS)byjSFdY->EbN|jQ7C|2vj7f4wmuS_<(W(PoWR;lSThYI(kvZ`6FA%Q8z zXFsLKO97>?CLpe5N<&nZ_jnoy#xI)ai+>V~8SPtVx+Mrf|7Wq2E?uUyQwFi!Z58PM zm(0g23MBqJ^uCit_GFca z69eJ$F@R9v5uDC69d4d3FkBOSne1|6R#$VX{>Y6L4Ig{X%))6s%q!#|qUhR9*j|DH{%P*Y?ef8GlkSttHgfq~^fd(*I$tB@?s36dJzl}s0ex}E4Fw!LC zC9|j$^u>N5CSGWZbBi~WPXU5UnJZIIWcoMfRRozG!B@am9199W8Y<6MO{h5FCa(MU zOSqcultCe@Iq>I*7@dzVtoi@U8t z4U?KzQ+j?Fmk>d9DB=}Fr>x3Kyj<3-(a@6D^yNy-I5h?H<$O^utmUS@qMGCUb^^S4 zrRh3@94>>B%b^gzx9hWJ)yrhV+1zV_dvFD+f}qhPTJNT2|4O6VO}>6a{iAGl9DKkF zQJDhQu;O{Aqt=PB_x1jHw>&H_NzJL?Cvd$_9@%esd_m-62OR8|k!g=IWqe+)*cmZebL?v%H%4+~Fp0oSz`$iz zmEU)>CUTPku4r{jl8XfMKE( zq<7fqCOe>`*~nvBG>7$hU&HK*mXBK8`61|&$;P~*{I-T`d z2GRiSEW(F4pp{7A2)*}#0{NW*(*c!>)7{28ZQL!LDSQq{^i($%y^8{_9Rms7)RacL)ll59X7AfZK=`3W>oP3bl zp6`c2DPIyG2@f0)m4_RRX&(47#v(sf63k_A#VA%p29=mn)_=&{g;}^6wQ6_FV&`De zQ6XzzpaZ@P@1ZZfb0sgc@pJkKR=-?yWOjUT2?b7JN$$a1s2FZa$Xbx=J|Cu>;mFk6 zN`0Tv7geXVTSbrSyaV2^1$-ja`Z%Cjsbzp7r4+AoI$fh12+SB0+QXYlvQQ9KumXSO zGH<;E-Y|;6bC9Pyw=eCcUlt52^FQqd-2Q?X?;Qs{9X|73pmYmCJ3IdL*_RYFG#O9I zSYb#&VdQ#vCRp#FpRKodTZkuq#FizAE~AkgFgr(eeFn!ldZ?l*H0WG#>%?EJCZi;F+o-Lgj!xwcn3n zky^;x&JQC^u{n^|hzjuN3vup4=eefQ8(4zOm9&FaVj(8i(NlEF-(OH0`_MP0Diy&(fvkfUE!H) zr_)9X3yzi(K(V*Sd{pE(dk=|n`gOcf)bWhD1X)|xc%DfDUWWX~swjE#*K;`xf~J4a zkw+eDHdl^TV`Wb&uVpf&Z6MxC7|*{~#g^M%BmlcE&tG-`V@9LofEP?iETfi`lhOkf z_(x^#IaI%6KsPbT*NmCoNd05g2Fn8q8K4Mt#v$NV6h#S|V$OnnK_Y8>;b+4D!ZEi1DLx&hKVt-yu^f zYC;H9@<3U<1c*zG(O%Vl|#0!MCWz6V=5lRSz;mo zTT1-QKLrbDcQdZlAdD!M?~ z?7E}$T!q+^)<57gz#vKjQ1k&HNB6}<(6tLT+xne6p+IJqv6t@ULwNJelNc@Msh^>y z9wrB&C6iKL6rXN^tU%!iub+r-7Y^;;BdPJ3xp>koLbNI*;KPQVgccvKMcj3cGesbH zWK~(cR4Nn)lx$bgn<_FDR2!@2!FWwwmH%=o$bA)^DW=V444ZZbWpY*BHeD_JPJ5#P zsQ|$neejGer)oW#QZgE$4vxWoHK}7}OKPNl>G zlY7(0J0ks4lquDPqc~;v^AUDIhvf6XwyvCVIB~&g+StHRlE1oJzhANqeK&sNzRJ}r z0286vGkMSB0ssLWmrjuA_6fiWgy= zFe=UF*g~P<$qZ71@KXyG1s0)+4Yf$_F@oS^{?GrR182FdN5^$N*Y3)0uBXFDjr=l}xt``D%*)U(wham}nMt%AU4dc@H2W z7JE5B-65{T5{|*QyFxnBa1z~%OW>vAKE`Q-JLcWY@tTyD;_YF!!6tQ^1R zn=LoEp5KRk3HbJvc5dYM@|=6U*zN;;p!PbQij#UV7B`OQsjlTAR+I* z!@_xdOt>YFo;WLeLCdxCGL_@esRguty|p!nrXi>)loy}dM~@j1oHJY0Gb9%P&3urK zaP>)oKCr0zCFRSP!MXu&3?hsb6qLw*#FRcWp#kftBe0t{DSsG)G@L87^#J{Gpoj5_ z{)w9VghAW;fw(g|mrDUKl!7Awbq6;vW4l%y2ixjtTABUInp;Xll+X;j3{FvM`!0P{ zJXSYjWJNc3Z43qn45hr7e4Ts;K^X-D|G>O}@fqkpU{}h+6giMYbsKU+L9 znjI9E18K>VR2x3lq`3%rJE^aCqT!YMs9IFWXXKDtZNu?8KSfBvi`~*2dIiONRaG;p z&HD687cKFMJe0s5*ecD4*@&($zkD;h=rh{tOy!pV7R*zZ?^S!4ZIXZd{tDnDu9Wp8 zcjPu5wP`ZTN+_gWF&-U#Fe~_r9-0_*#l(rOuj} zCh{q#rj*}n+Z501l%LV6(k)F@fS(=Tq0g4>3~Kqc*#7OQvv7Ys;{BVi^?!J4+ge$> z7r}|3Y5R&uIWVp1I()CZ3rLX<=t9)iS5SCiB&6g=uhISGUrAHStW8tX_aE}{HD3q- zBuj`G5YD>AVhe8oG1CI66|+)<+Q<7(AcLNmbkJc(u~R2bbEC+h12IkzDd*!w>L3pUO7FmxWY5f<#p;GVd&R5`K;4Afu`V3js9ZMc(x3MI^+B$6ZJ zY}u~E9O@h@qL7w@19D;yph}S_fww*VbBxi|#H}7!_Oxl=X@dZUNX7wCR^LraYZCn!8Z=CaZPxq@<%N-Rx1#G39 zYPfN(a=xU{O(Dt8y^yuD{Q>9jUnHA&9C>M$*c(Ask4?GTpA&zLtwF?J_OT9BPQ*P= zG61>6Y1zeChpb1e+HZ=gtUx)*5s9MHII9t?EJ~(Mx2z|X_b1*$R^aM~49k_cP(JJA zttlOKrQCJy89Pr0HhLZ14!-va-O$5RYh{did8!#&(RYJT0|6|-x!*E;mQqPYq0xnW zO@}eK4bd{guobt%rQzEUWYu8sz-gh$*#auWH|^2hFc6b2K9>QMW&-05Qg-xm1JnpN zv*Wj~_1a(|=9{(=Dv=J!|F5_2AOIlkrkqYBx)H?HDzH=rlG{t;^d&Ga4Mqzukx#kC z{I)^JxgJ*fvA5!zQEWijU~qSX>!x%bP;DhzDp?4ETeqdQO^upFkPBQAA(GIw!E@=s zv-d}ltd2!aS_R4tWTv0*UIRtba{JWvkpdXHK(Cl=4=2g>-BN7%-$eInBRB~}>=1Jp zD#DFi*q#W#@O>5h8rsvAnhk|)x{Kl!Va-4rw3$dazYfIsU**LOY43NKM?hj3?UazrV7iVWhr-wF^ZyJy1;R;amZP;doMr?MD z*lN*qPK*zNAdWNw0lG~S3>*_T7=Q^$o!^>USVDB^WS9HhS&&ybRjEwJI%{>onGT!C zbhVkiS9ZiFEHFrQPdVj-PY`xV^(FO7T7OH8iq;w~%;W(bBt-ENg=1JbgS?gLe)?-D zGcC9|sWZ%v{MPVxN-CTHh#hGVIc$k@gVvtY@Yq!-ptA{j6J&hTV8tUu%!_~{G^ZaZ;YfI(PSSP?f}`QT!_%DlJ%cnIA?M-Z~w<$`31ntjEM3Ox3)occDUu=-vOC zKS1+Nc-2IV0aovqu>+}yaNRF6ZqsjQz090FI2*|opC)R$u5?+XKIYB~T0G7$*yhxr zdCb7G2;9!Mo5zuUJUB6iYxA=1%vt^Shjgm_*VE7lE3!6>{IXcTRi!gz*?b&8+rDs| zP;pUz!Nf3cz{PW=dS=qCI&)W@7r)C>{pWKFaz*`xZ1W2rvUv33Al<5P@$WIFI@68x zz|tYVKbQg6#+KH~9KEMWZV<+-+o2SPm7DF%l5ihgED}1n{S-`&rE7_SjAZh6OLhoN zS36bM5k1LEOJ{bDJZEC=?e6z2tf`(d@Vrmjk|Fwi8(m-y>5Z=E5;! z+4@E-Ik3eQgwe~>#G6vWx|xBq@8)08`(z${VdSTZODebwDRLKUqgv>!+Sqy`ITGG)OZcr5o0x^u*w%{^)Zn^}T^&x}5EAw$IS z7$&Zf<%;HZ9C2HYufE}S<)#rkgt6TfD1uo5eNCwMK)#Tn(ZI@Wt%f{wvceY$i4zTN z{k3-;c)-4DIVZ-{pLD$&&mf%>zF%UC{Xk8juQFYhenf9BYffDN{Q@LpIf{S}m{r46{qmvXAkZMUtiy#Ei01mLeQ1nvJ3% zE9SqGT}YJU@h_)MU*H5!u`drFm0VNMp$qaN&<@p>#W z6C4%1#LnjoEW7^a?}F^ym^+*QTx?&pUK{zfgnTAl3Hq`vmgDv2C98S?uq$}l#)VVh z5uIwrP8`?OI>IvpuvL+>)r--#T^v9l{X z=nR~N9Edc`=h$t=?1&AMn8w3C<;7C?6bDi1v6N@?qGpH2evcG=@zO$TJjk=s1a7>d zBrXI?5#-V$)JD(mroD~8PaQqcbNpF5q?ZFz6#%B{T5?fw>S_~&K&AL`)==WE*yPbh zhG!k1j)eFmY@%r!|9B9gu;ZEjq;(-^Xgau-R2EFbJrUEj_Wwsw89 zbr76DGR+JTBC!yS($rPW_}Fcj@}X5ng@CIv%Xkb-B|1TS$ml%A?X6s->htQOXx<7` z@b~jWx?k4?PySnk1BYnQR%pN)033Dlgh2iYbcF@FNYf_rN~uJ{FUIwoZdjx0PKJCg zdRsN+zo;vkik4@g;fgso>8@^k&!zo*f$Y`rw@VzxrdUsvIHKXk3bug{jO@0x6OnQ( zxY&O!HZDz~jeumt7NUeBn#_Hs|FfMSgggCrPVS$@I|uqxd}M3SLLN-_)08HOD)Pl3?NL7TGEZ7s`U$FdOVp8GLv79 zua40Ig&}K5qGL*qV6U7*satGKbv7|Mazf_$U$AfPSm8EhJ;69t*J1`TvGfprA`cFw zDMP?xCm@qS5ue~0f>IerfLF7Kd++a1P_7YmNvaw|Ll?5cuX3zk`9=Rup@@_p32TS- zRrk5KmK#uGUQ12q!W0sZAnP?8Ll5}ny|nzQAk^Rs$7FbsI=5hOY#2P@TIo0hQ;PiW z@ulZje`@L5!;2FerY~L@N5h&0fR`&DiVoLTjs&|gsDE0Y01lVP3efXTUuo9HC>|Ut zAcXfd6J$R_uM&0kz{qSGVDM06X}o%j(2Ll!^0JfB=csGoC{ylAc2HaH%VMz!iu_c8Z#np3HZngXYKn ztOoDIRV0(@?R)8R?!EiLk9sNQIrZ2;DYxP@SaWg~NdDX*@@MWn$J&>DcOq@`il{u5 z(BElji|GnkFr#z#$~8>DE1A@HY>yoo{7QXSczVN^U=417-x3(UeidxeWz*Y7Lhdml zP#iM&bAN>6lz2Aj&r2gu7$(|n#7z58hEcK2nS(U9C+6g)iM}*c%h zC~GQ7yBta^F;3@?z&ux1Q@T#J^omqdA5f?$k5P-mOot=$J*D@nvcVx-{hD|e2#Lc{ zI^95Bw4@U^+@jJmmL!Q0)e6rNV%BEwvBpz(zr4)6So7?NsH-1f?!xIx+)tpZR)|tIKVKVNml#QMXDgY-vD|x z#?RxDD`Ggb*-$#2Gcflx;fBs1lVZ)Y&)^@J8o!69t_Ci#N8tP2$yvSDULO}lTMeAc zp5>D17TtInG5XK*O?@sRXhC(`40XtWL7^T@*i0-f-$4=4b8)gO&6Nz;ip(C<6B zOTMq~rMNzp1(lNojM_yH>K?eLs9k+X`&K_`tc|CYtdF$k`zj`2Y8y)`0Ctx4sCO}Wld29+!+a6DSYep1T^5%Nh(bGe%46f=}olJ04=-}Wbiw3LAej^y5Y4pF8igboE?vGyw_@AkA>8g(ivNeD2x; zU`BolJiw)IFYZuJz~)>e!X(|gHxp-B8y2H`I;rC}Z(ko6)(o>kWm(d-TRV%3GWHHTgM)9JL*nfFFIXp1{o>9V$ojtGr^A z+6t6Pk}zx8LJD7AcDJ6Wom2(k4E_Z2j*pc9Q%lbfZpxtKT_RxWHXsIn@;FhN^vYru zc9j`uxu$5q+W>?l22=%>h?N5jwlmu3NcQ#kq=lHjPtw|E6*4^TKQmW*(I6HclT+?yL z2?y67N@mQUKMqhUDK5!PLzJkym;Jj+qG(vwA)ir(m)z1x0ZKHE4)C8YO<5hi+`veB zy9RtoUeS1{K^QXYc?mloSkA9DQ$fIFxjq+3T1K0r$I;ao3xqSPHBJsASpFbV_9nwe z)wvO>yjavfbInx}MuK8~8X5rIU}?atH|QRESVl|ln}ikNFoY`BA|m~z1?5vel}Z73 z1s89Q_!8WqAh7DNv~&p(lVj*E_c~I>?L$$QIn2Isv4`8`S_Fz;E`jkRkzlVYxdF(s zPTDdl5NL%45y1s$Oi~}j+n+h{+i7lcXsy86&|op4*$qB=t{0pf`UY(;73Mf!-dPk7 zFf=s8cAbp}SyJMtYXmBgGNjHAVva#9t43^q!1UcN`A|RRKd(it@wz?MQQrN#C`iZ#&(=PRYYL}l-XAsB$%EpTV-SPu}anwU3>+4-4H@;DKn6lQvg zaM|3ulmxl3uDF{IG7`ZShE-%B(YlmlIoc7>D{JASOxMiqgIzgiv$6VxSw7MgO?u9b z!E6Mu8!OsC&vhsNpX#^l;QbEY0?7v4Ljp?;Ng%S}tSV&#h+PU%v51w>U^O;_-~>Q@ z;z`4<0fSy{by|t;lk%7Q+hKQ2Su_!dB%)pm^_!y`d3=w_ zA~fN^StUHz1dbVEpm8skSVyai-Nr5+ecj)=(18^HY^HLM0Pe_^5Y+g;(ThXy^%3KU zEJ^fYshFu|bjYF_Zl`UBA3ka0IH=Gg+(E_pazaBec-sCR&H`o^l+@>2DLd_i_`^za z_N4`xBKV>=xU=HVn@)m>?tGnhh$0wI8>4T_fJW#|un)e?`uhXruwlbROi^t`1JrYQ z#YE+Zhp$=9s|PT_UswS(x%v&5`N)s#3@S2$I$A9{xCk-on7B>d%9Ip_nvN^<+^sWq zr0c-@+96!od8i1$=ythnB}a+-kRgnqWTb5>Rb|uZUIC>mh=_I7*&wOcI>?xAD;St|g!61vACObsNbS zXW4l+Ar;dGF0|r|BT^3sx=%yW#=0G`!5wakC%^Pp{8I3noO&SSb? zq`>1LBLS{J{$;rIZRI)~K&vq5EOy;s2Oc1M6=c$Ko9`Z=AGFD}rweO<_S=o@6v-9; z)kN_N@uOX-kD-pub~?+S0gOuA0~4Vq7?f{k44DEX`CJeV^Zo zL>G}765DCVW`{A3`D(%E?3sS$T;1VX$D^=kg>klQ>+J8f4?3}}1Q2xR->{E7>EO2)seQjc z_)gC|ukpH`PlsRKCc&G8MccvGJPvxdL{XXyb1c+745RxtkJg(F3Ce{~2y#<4E?#u6 z@7YPLS|5SIavyDb7PAaKBB1Mb?NMJ+fSWBs-_TA!8X(*^nVED=^v_z6Qo>V)%1Dz| zoOa=f*MB3E^gE8*;d(V5`-7VP1Mxvf_dW+RDP3Pr_Tu+YvlRQ2qXo0dhhW4s#SlqYOHQfkLM7%-y@028l&V1_J)WSno3os2{TSEl zHl&Cce6FIM)h7|(mtnFzI~MiZJHma*}vvE&9Zd}6L=IZIoQ{T_-hgl#KSve$;5Mo zR7DSXs7WPIOsJF;Q-!t$?S$-+JrK(-{rc;UeEl5EX)sr2ogv1)AZ9w9ZaDJBxr@ci zNz#c2O5)f_Grr7Z>d*a-Q&)os-s8z>7RSbC@nZ)waTY{Ad5yUYAOII;~V5!)U$ z{P9i2^=+TY3|)9wiA|kSxv!)71O|4(vEl=nHGN7>F}3R>4g+jYl|#OvAZ-rrv6H_s zz~9TUtMZ8-0c5x#&Jk}}UIm~rz|n{-MYg>++0SAssZSg??mRKGc_fxeC_O@S78}92 zv#WdE!ACkE4;RW&s~bOI41^&MYq}o<8=8>0n0i$JBs%1pdMB1?dQ9z5T z>|&e-IJHz@s%tl8=Wk%fi2ot}#IY~tJnzQV(k?xPoiJ8D6iA=a>mrvaS5aw0EyRu} z)9Vov2DY^kcdX;xlU*1`d*K2bvh^qKw3Qv+}h+7vWH^(I+ykd=FRmDgsr&c819O0NytJVk36vnttFoGCY}xr6Lpn#)8~r z5Ui(a#B_wBxE=%qDrRHDEfVFVYIb(sicBRvKmopGQ9sW&<(}^k)7KNJ`nn0ODpW-hww^ym(@?8vmfd0; z{11&LPZ2nes^VIb=Y{ihS4O#>kbqaAE=t1=t0$r3%vW0787rOEymC(-KBJ4k_$Z-F zPw4f;?tf?tg-=mquf#=MS|~rCzswX)Q6CznqmmBk!H`3x-h=lsI?`vdwvv{_zEOCl z^Fgw(>OKmNi3Prp6CxYd|E?Xpz~kFRJcY0Odpq)nt#B)TwaxUFKz40l{cjV=IdKy) zUM}0q`U4ku{;4*oE25`Re}B72yOq$YIl3RDw3Ok%ug%?${r1PGSU4KH2m9yTq>@j9 zi?%Rr3DmiD#W`cOhZ0Im4wx|Fx*xsgD6L3&SXAXwOVL<=BzIRcqZ?~ql9GS=1Mp$G zHavDxruc1*&N6}!Z_!Jxslw~;op2;;tybO&MCDi+-=tinelAT3A`(jg=7N>ph~X4h z5CRPSEU3)A;P)v?Dj{$HzduaAL8Zlew52ZFj}2aF(8inO&GW&GB##=Waz6GrA>qqi z9D_T2D#=!+56w528;?90{g)qf#0tR8%2>z+8MngbFhDyp0PBzM2_Gw&M2 zXW&>im@TT=0My@W*>icxTGAdB>fGWwi)aBRrx(gpkEf^YyELN*DURx!jDG}&0#DH7 zn)Y2lp~G>`eWa!^BA}@b3lo^9;*w~*xOD}^{aIfTW$1tHU=*e%a5_c0=?DZ=gNenl zHTK(OsMz#$fAw0*mUmxyE><8)BrTLG?E|-E7NuD?eTrP`RHw8)%J1>Esiso!1G+Bc z8wbK;_%k;q`%CE40}W9vX9}}vddGY19v^vYG$~X{zIT7f+V3c+3bHo%Za+UfI)02T zQS-!=9>2&!#=(p9sC@WvZzs2DG1f`dnBQ$%$$x%GgPp~|E29&ybJ8*F&@AgPZ)w?l z@i0o*;hzp4PLN?k+l7`a?qB8qjMN1Zul@+tVEU9@S$) zOVr!$F}=WToO^lrrF(D{F0aYw`EcMou#_0ulRZW*Agjf))5mPB!IPI&5TUXsZDDT@ zJ~=ym4?&O!?CNz9L&Z);li|MY2iGi;Ggo>7zU2vP}&6Bp;u9M z?yYzZ(virgdk9(fP%2|Af%zR{T)94jT^pUbi+%YPQ)m@fJEyBW#e1J{Js>xHd5^Kz z5+q+*_u5|YnTe~=q}^CAVD+qVX+bB9slXgNsGdrb(Wbq-^+0AV>2e_Z|3fD}g#Tv_ zT+Ne1$CL_Z*lU_7!#eQSE+?_efQhKny$#KTs=lH$zh$xx(S6vem-$P2tu)c~`ozs1 zqn5bhS>OYMhwI9vytNV-4Vmlr*vJsL|&P9C8B- zy|4sh0mSu=nD>8hZ>raJGRqH%WRlXNPg$wxl0!v>NX~z^tFcKXGi4^OCGFOX z$w(_>p7=M!P`ddr6ZF_l-%kpKIWD42LVVQL(IV}4?R}QL>&wfW4`!}ckO-<7#4v45 z_X@6kCr#8Y7Xn6d^xupEm+6z#S`^tvr1S~4oda{KGB8jL_s2|Un}!qu`B%lxuUx$2 zUYqa$qBG9yCe}N8I7CkYI3tFv8i<7o7x|xEM-&={T&KwAMsNlRQZ2xRh0)vtlEZ4e zG2D52{ho35jqr9OL_ilzn_rlePRx9V3_Hs5wuEU2%Vn&tKzQsW^u^>nSnI@*Jn7{$ z#Del~kookwH0cjPH6zlRLe0`q;VBhzbXb3tOh~s3{0TlJwf1Q%PIq`og*~$Z0^YG< zNHLDbqJw0`wFjB*6V)HuqCA0+qs^9QD6Z|OHQT?DKm!c}eW|4gFQJLLn&XhUzu!88 z{B^#Nq(Y3R$&a0(5xFof!0)#-I8d>kjo;)aRbPN=@p7 z0SvFYuz%}a8N*vkFL%=!KAs`=$8$6s3^oU(JpezZ4Q>Iq0-FGd>`!Iy&$Dkkn8j&RjOljdj)i`kf1PPGq@$|rF={}9@$ zOcq-OTY-=dv~9;Xri(r{pa=kQQUn`=6`!<5a--8LXp}Zy(BBvJYe$FcySE3=&go;V z>to}4m^>y@%5oq3qUbWOL(jC%eKn-~`a!h>zuVdBub-X|t2iv^b{tl=9~w~EW=ibO zF#@ssW=WaYjngJfg>}Fa(_}-tO$~s+OX)LaB32A=$|~{8z%FI^(ze47_hYSSTc$;i z8dODOkQ_(9f1;t!k5VqN>c0JpKB$?GPTqptXchZYd5sU|oT~I^Xx;hJH&f9Z0xTcVjZ%~`-_Vitt@(LU2*txQW@I+%cxyUreK!HWS zPCy6D>_Z%@elhD!aV6E=si4f}X;O$W-la>>&=eQxuVtDNx4jf=l8x=RVv}eNJcM3o zgYE!gEWsWtt*%C?!qk{{=+c8y>|v?*W&<^V<7U-{r6SaM??hJ9eeHQZc_)n{Ee|}q zoz}Sra#UiqatIm^gyfj(tSO#Lr(EH3jHwwqF^uQ%koAJyLA?!|A3EJ-#FO`1&?Qgc z;V3^C9IYeGz{@Cu@X_wV0SZ6B7?rF{&t+M;llXD=Bs{yKb_`%?c%yLL*Tl6<8(mBB zKXV#bJmkM{$JZ^N#Ptop(AJA8?k3m8$wo^cga%>80nGTO=dnT<>4{ovS|%y4_f6w+ zTLT2s5tms-8)sHg7H>h1>4WyL^eA?D)=imOiDbFl?+uI5CnE{FK&?8TP=-8abV8YZ z)IE&Bg;I7h6u_A2mnx9wX<%vtzN5&MbM=}O^`7>NubUyqhI72D?x_C5SwHP}knNe> zHv^c(m?AC`C5>Me!EN$^#=M2{^Ax#%XDqrdp~ofiuItlQpL6j8+4s^Kz>zY_s4TCv zL?7S4hs-|sYyN5>Ok~+72_@{5lp)&l%AR*%;b{lbUV+YJM`Q_*57@@|p)Y6h-UFE- z2(&Dz*Hj%Ny=|Ebh9G*Jk79~?$vPs^LX#QTjh^?NU_dIO+GhQ3&&x=JlE*h`R(_4_ zt+X>zvBk+SPKJqZy6g)=G!d2OI!SJG$i<9(sIF6z;0*pdpDSo^gc8mYEGxx zDESPNTb$E=7^fbTt;U3WzRPTF>q$3AbhSsy@-)K*B-_z`jZGK=F}VL3j}FPp*>zte zN7H0nqK1y$HP|111lVK1@TWu$_y|vGQ_NOsNZ)wp5##f$bMgd(B9hGH&)9PP%l&W6 z!fhP9*9-FDfmpGdGbF@woHIPOtH-0{mXl0tFUPgR#7kL0A*78y8h2w@+Mu`(Q(KDD_BTHR+U-`Q6KCS& ztMfGR^_&%pWH@c)m=@Rn{iy^p+19R21>P?_AC)Efh@Uh3ezP2R^jFm~{ouxnTluL_ zucpCyNxtT>vWRYk`j&Setl-^ch^`*JAQK6J#pss%H%EtSoj~tRo6B9)DIrg#DQ85v zfWGhfihx5n4t;D2HWqE?N{Or6b6;o|T4w*&g&_Q5wj4xJzeP#ac-5siHknk3@V4b zp9A)WvJJd(J38-Y)A0z5?f!X#ICbnXG5O%NU1tzd-gRc>DRoT~t|Xgkbk%}G9k+V= zGZKG|%>|d+@`#aO->;gq@X`cG^;Y~y(wbv{Casymfk``@oQF;Lw=}0UDR(K=P1i(F zZ&Aq?Ffdxv%d^^rZ+K-#vIGM~_O}8Kn#JLI-^L6-YmfoaFIXNqq$-Ix2I&|5ewuc; z6zY%X>wWuJZ@{Mdx#md+Vq_FH{5N0HwxnC`D*!I{%cCCKetkH*K#!UPDWMiHRVep~ z9mBOfxvO;u6Q6oA1rJ!yVmTAqy;!8*&2t1IspxMExLg!-nu}cmrV=3KT=9Jtuf5I= zHm)pHY>!+1qOv4!92_9sB6W`cok9~7SF7yb@37s5*up)V{P-#MC~}FO0&47n`0$fe z@%l*ZcwPX@(a(B;?JpKHF5KRNllqn|kxn?OXvROWKKSwyGmN6O&M5+w^^z(JZkNx3cs0&;EH6|@>veUArC3&6# z=mgycFWEjsa)a5=g3P-F%(A{zLAmlAyLQR71V7?1&mfh)dSNshwCXt^RY{m3$HApA zGxnQdodCE_+17u>6(<0BBuQ()6H(_Fm1n|60(MqG$w%}9v5P3?=-ob#OzAjF%!Noq zxB*F-;JusmDXmExM;uY{9WR%*KZcYC%a47m4UvNOv*jJ+V7{_|(cLdr{e87r3)9Ll z0Z6;vFc%6#MYppM9>T#=syuG<5?)KWI=+qoha$_&&<&ux&FU$)d<`!%TR~nB@*wqo zt8A)5v=jDZhwLAnDMNq(i6vwqZn+KSc;$$2|GeoV}P!Xn)C{cm5)17!*XK^y0j{CFe~bD>3Q zheTZ#;mjGz7xISm)5YQ;zs5Y~8Fr$8viara2++LXP&C6%aa;FBkw!7Gw?|JGz^i?I zZqwaIR^U5MM?|g2^VnGG%BF3h(|wSHf8nn>V>iKN+yC!GqC#AI;RM7R3%OXH;me3( zyxqJ?=2)lJD zr8=l%P-dipI|*|lsfBo>R{L0TByl)0vE+YZywh)!GO`V4w~VkV8jn*K{w@$G_;hx` zC7cuHtieJq(tqET;m}&I9r-}1FP?1PJ3--G&pS6r6z0kvxeCsrfz1C;d<7AlmvT;| zzG$?gBUZvwC>PkfGLIht)Z*V-FluS!R`X;U zP@t4l^2*3{-VT0X%?74#M9DFc4fx46A=Lbj<|s35Q6V+B{wb{>A=}l3qKP?l;hj=u zZyWa`m#@2j4jG#I(7olkeVWs6>&xq#4gc4eldW2Cu%;n`y#7i&6G96u^b5;|dDgHa z+&!aWxl7sqX&X&k6Dd!_`Tzm8S2IvnxWa$VtNf`YgD!5QD9|J@7;Aws4L9}v^u!l{)h$G|oOJ@OcMXp|2^iu16KEgr8>=#CYgTzvD;|jD34|s+Y(aKW$&!@MrXY!&mMq;OwB;PjyBCsx^3qIMjcW3nC)lVST-4y2K?Wc4nLnWb#>iFUU^M~+ zPYvV5jNCk?dfTT8pwOplNrr$6Q}-x~z_2Gj-y8{rt?Sc9jxxZExVK)va(7>=d?a$} zA+uUT{;lr68f&1V*X*j5`w}?7h%Ra&D@Y}YHc)kc=ok00V?P-dnd|w)w!|q#edr}l z@UuIXW2U=CgT)TyoOkY;Q5ryVt9p7Zv;gW%Buyky6C{iohi^?OtIckr6`y ztO;UIG3y~vwR>1LVHUit`;lcla()NXBD8br(m1%R<7{n&5G z_21iEws#JnKwiDdmG_b{kt1&%*Y9BPyenF9OfXOI)oSd(mCtnOtqKow0J4b? zszR=!9L2|RO7f=YflKmAcu&+!pQTmJtTh$&{De^wIZl`B#N9!>lHMNV6g|&ATkOwI zyZg}eCfa@}Mq(g?RJrwN8@!Y{|J11Z@rgb3B?1AJ z#u&FuhV2lh@$=}9Z`SS3(*s~mgYm6!*Bc$Y$QKv>5m5lRzqcX9QqwE*<9Fj6QD8|L z^K&|nHXg}_CALWg)YpapHUVTXf09YYpV_ZC0*A@m*o4aQ5~**_>24q0Nz6VpHxMd6 z14gcgAY)Y9sfjawK2l-HWq%%qT5R$8ZSeg@01Mvg_?*{}sWL!U<66u7J8@Lr3@V1f z?mbj11`ILK_TP;NQ4OnyMOze97pTp=;~7`$z1K|DDGMb^_!dZ__|kK}=7Uby)|)3& zXJ3w=`f8CAp|xT$s(+Au`=(>8JRE!&UDEa*7YirnioV9Z~p_xy*&RwTh@i!&{33 zF>1pnUUyCxv#T|+xNAbUzCuY;p>fN5b^>q0s&}-_g^OAKXEtT$#UUJF*cVv)5=_+(jLO` z=e-)*YoO9~iZg5Vl3fpyA8A@QH=T=|HXS&X>pAaJt)=C1H>^WWMHVC$P|Zu_5p6`_ z_&QE4fo8U$+p1bq{BTK>45xkX3`4?y%CHAztlBX%7st{Us0uc zNcug@@WtW&DNf2{bb@^9ZYcKj-D$(GdQRJU|73+b_54#QO$PLz-lzoS{c zoe(ZCBDQXpkcJY}(afe~`m@yyB%2PM)>GDv_zSiE$6T4G00g=y`Pba2uF3k|h^h$B z$A5+{A+5_|%{%8wVy0hww(6^KN(-h4Z=L#0m%a3-0zoq|$D?Th@R<@23B85&%zLnN zQ>e!jetvG&5X-uRB!+CdTBciwZlRJe;=@B&evJs28B#tl0l?LO#`DSvejz^!n>N!I-bq=mSB&>Yez!h$YAvl zM@Ni7W6CO-ruh=DCZ!6PA#Mj>q5Y4Q8szsw=Q}Tyju7R(p&4%F7bO$QA@DS~|54Aa z#DB6~w*~xG0rgcctuEJP0(NJmB1kllvbk%Mrg!6f-iSzj*TBbH+-xB$su35`+1&43 zfr#?VJ$6Vb@~`qJL@UXqEpQDG%|zZ%X{?&(tkXpcFZ56PCI;2WauF`i^eAX70(d~% zCwWgO6-r_L-{GVzUNh!W<%t_+!AVC#H(E%6EX3&2ZeBUPUk+mM1+;nZP zHjtBhwP@a%)=TN*8J_QM*hjr_Aho6CZ^s4B;$8TDyi(11>t4Q&MzV2f!OYDO+?Qm-tb+v1_a8C<*Fjvz)uH+V~PqPyeO9X){?#KjHvI4F!Ch^q68@ zC*r)ZuiOIGt6-LT894!ar5-u3s^KsFpI!w&Sxd*?zvTM$s3De3y2%D%*9#8g^}n=D zyqrH++|2%(I=BghDl&^Mi9ohs&xn)wt1|k4O$T(i80njsbL&kt`>nH48;QR}xJ5d- z{{olztn4OC3q}4FS6ynoIvl!EeK%9aS^QjCYh&dZ zo+hK?oOZxAmV!yUCsKN_U*I^by+oc=2qO}gnJNX!$+U9X4vOfFvq|xTgv;hBEf4(U z#INm43gvy;g6LfiR1t9%CH(f`?UDF)FO)4tHKt@uXvSv0cLU?sf`;Ao-^JzIi5U&O zol`S_gEk@TSWggSv{HZ8`vR5bw*^%Ge)ejw{|L3Sz7|?e1y;Sgbw4f^CNn?L2vA}# z^NwAA50>vC zpGZGQFZhJ2Uy@8~IM!y^B*|?;?1E~pFr;JS^EszrBlKX{GA;ilT{qX6JjEeKDyc*R zE=a4cBIjZ=U8-P~{N7v^M+t2j7p_K{dMAd z5MCeMkVH2%aMYW<*|YF52oKXtgv9d8pie&>1=bbq#!F8rTpIl(b{PN6?>g+fqW3xO zZH+Y7AFoOXTt0&Nm89$2=17u(aTU>y5co(?*$Lnf@U%|&SjF|Ix#JYo`2$~k+A@Tg zD+m|OEd`1{Kp1`3=6=r;!bcHit~%}wv*x684EqEk$9!x4W9;YV*O>P9cAoCzmPPcT ze`_6wx6G3kv9=R@v(QEW=t^$c0gpN&-v1>bBDXg1xZDljFcCtS!z(gY+!9Z;Z_tb< zqbQTOvia<}vDO%P5JQeK9zv?I;Iuxl86hBRCk^BZRN^IIj+OYzGvE;G zeMxTqt+5^&)ezy)7%81okJDwj1b{46Svt|qt%NzA_Ln#(VEfH-l=I0@|AVOJe`pJh zc_aP3?!a!F3n9IBBOc;z@@$N>Pri+8poa3I6$rU$gu1o#RY{mDmI>w}{l z8>G!1HEm1(YwT2;6UF++Gs)>;_P~*b;Kx@vlf`y~)fCLhY5C4BqD)5Yu!*KoN+QiS z>52?W#csnaoJ0#B99S~8GpW!OLmWk&owf&3c zf%kuE->3a;mef=;ggiGMT!`aO%$@&!Ed?ITT=F~TeKW4gL5!aWCv!?!3fOcgbMM-* zEa=Pi=|mmUK+kFvxe!@F_Bk*X{8AF{w-IzFsj&fpDbX@Si7P8%HW@mAl}7j0@=X_LO8SY70V-Guc z!6G*YLXFF z-4BjGNpICYY1A)0eUHqjK{FLU8X{hKh$eX=2p?RA%iZCh;ZvJ>bm{lT-Hn&kJUrpq zRJ#1UCZ_;8VZiP`WFET1`?ZqpI+}YRo7%^hINumfbuoSRF~uFoRC#Rh2r}_Od1<%y zoCdc=lgeNFcK_^Ou3V<}5CL$S-ud}mm3Rhz20CMz^P>m-GlJXHYcE{>13F=f;gn{T zA3d^oMO1^Uw5~H?6`!eds14u=Eg)+Z6j?nFg6_IZ`QAc^{i~_07>wd5dxm9$W;zu_ z)=|gK?(e*0fe)!#P(n05cMD(n{LgTbqm^nrAJH)8=q`c2cJ(SNMJbFOLv17wcdEAk zK9u4_p)%*xH1~2z9C>UU91J?hfvl-=eE_-z*{*Esl2oQV|i+%JsyU z8;1^paj3jl4?I5Jcyqx^S5Lke2KeL$VG+m17o~pn>0@`2&k#m)Gxh3S-s%}$1jd!t z5Sr?PQe1=r9;q7!rp{(Jqw}MRq)|1DpJ)j=kn7eQwfxX@lmsR|J?|L(J4X-GxNbAp~t;;ceam=lsnCn_M)?Bmq@z6+%-GVBY3#tyXBGFA2m{-*;D*#n=6 zH9#m^zDkROyvOBoYyHBvMoCUsYwOQC+dakf=#S&iz-APv-SMK(5Io`dB#+QGZAZs; zJQ(Bk5Off<8fjdC;iDHTExA%Bg#*~3Hrgl@)|EO8a`h{lNJ0%v?XA#9O11-|N9h&h zxM+@+2Sq?on{y?OJ#orb)b;i_1dJ?1&}DnFU-@;QTwD2QsHZuKPn0|U2*HwDsEc&a z>S@ayvz7cN_E-KXRLl!`tgF4##uTf`m zZ7dmps=GCB17jateYFmuI&_+E#VknfshW%o8jdq(fecyTg~N4JGj4bywN6%n zCg5~73{24eCv}T>2uQ0uSwk0VFEFYfY2=F0xNL$(HnrvsPe4u)Zwb@-HQgf_bu`=R ztfu5{>b5GFzLfrNL!dpze|p?2gAn0W-C4EXq3$OJ?YiptaayUfD;?-m zcP;ZiiHm9&%u3m{-hFDTgz$#^nT!L(wyeAO*h zx+pjwwJzsjwr-4p)F;N49t9Z_ZXH*0SJ@N5o7z<{Zl?D^n*uG5J(|M@eLn%p`r%qn zByTSt|NBgCH9q*HFO8?8)fCc;g*NX>@rzZm2`$!muMJG-D*ddaFJwOT)+7?>QAR(! zW5D93K+aoIt*fGpG+&XcaRy_NK#A!or@X^EWEnTuV#BS;^>tYOA3eUQ&CkB;^vG&a zJ$rRU_g-5=fcp@l^j1**qikli8mrlej*#Z6qFxp=2RGz`ld84{;NY#!?f4K@v zie?5mQ`1xB(DgA+PXzs2Cm5NFg8wXGUVYCr5Z4ydFvqSi!%=LfPe{X28_qU8d+YC- z3drNSX~%s^OBfG=gw|&Z)^=CC?p?C|;RdhlF6kv3tL#L)pf!kJ3)sWsn-KK>-pg+C zY7T%(yGCI%!;1~rQCL#p{%0fJrUB+VbPWLMNn1n7W=-UQaCxgyI(WHS_LWUCjb#V7 z_$L4|VJy3vzx|^J%xOG=#(INo`LBMn#BlA=A8k7r5FNm2Gr_QXF0KAHtrL#rsVHiNI1dy7^d5YitgKay#{fL=ja0+o;NaPn#k8ri>LuYj?9200 zQ|~ZKwp)}24fMN4kcqQ#q&6gbF%s}yCl0yLoavAMYD%~9mJv=l@1C3R_S3!B5&+3J z7WLk8)W32fVE?lVb2a#g7^(v*$XU><<59b7Nm0=)OBjeSpr|c`evV5_oE6zSvqL5! z5&R{K+*0Mjk*swSwvIFgFmy_DMFz}yCt}TRN#Ic7)adU6fAcLbOmcuGH1DfhC81m} za19lIrhV4Lj_+1ewZJESidz3%~rQQ)I?lZ zF}-^u+DXsNem8B}qUa_jVB0)zay)Dp9I~9K`OaK}YegZI`if*!5Y_^x9aI{MGlzYWhZ1O`0`4zr-vzjl!6G<`xnnryb>sn%Vr zy_DQR(@KadELZCdi{v=1ym-C$|& z!}vzpEbOszPFLrAc%EcR_9N^T*rtGBEptE_@48>S(5Dgt`YUr7jNP+(AHy{b5FAWX z<%U}+;gqKTt$LpW28f!lPefD1M~5;3j~9CyDUg)o-3~>lQ?3zV`r`OV(4~$iO{72_ zyLj-mBNM?B_(%Fmr72BVQ$hZSb3@rZB!Knp(UMWFA$WG_iCGlF^+*XB7JZxj$XlMV zz<}9#N~GW{nwuE)4X486e~Em>bdd6hF-L1cQ!VG3QMskj|Hr7MhSA9eqm_uqtXS{HeqDrI0uEUSgn3cKn|9_?UsLJdgvA@Z702EsW9?%`s>}iEng^ zC$PL%&GsD=**a9itj~T%JK5TnpzQW5&YFuk%0OCIAg~hQCGr#SAsAE3 zZG`Qhle;0NH>vr0UnN!^%GxFL>&g`o3|SAW8{8Mt_d6_-dO0~MlWD05Y=7UU7R@Bw z-BNt*i;-Ay7ewEoXo-5-bpXd;ErA7-T0s8pjB7u%8H|6d)*0MdfCROJjGsomCzOip ziuu)LpH(_%Tt%lO0n=Nb#}~y{trA6))Ve+L&rFfLeTOjoi~*^eon{?=mSn%de)-ug zbxkygs+p4ef(_v4_;4=i2flk~5(@%Pd}zp*=H;ly@YAj>MB3+$)Ziok+axER!c16e zmPS&i$!?3fT-SkF!&aicRIO6gb;J20v!4M3G+(T3ocT|oL3>Tid=i41f(py;AI&O7 zuBkC={Eh>9sTvBO(N$;xb@mt~yn3RpcUKr{=H?1n)Hgt|;->>84qzeG?3+10u#08s z?0XTr;f-lFtY=;Fgn+I=${RDE8NPG`+Ti&q_6HRVeg`poO_)$Fpxp`W;mMv zmBjK46mGGkVkP4XHCnBzrYM{TTxFmvrmZAa)Y=5Ji*FD7%mtRkj9Uxrj`WXm_?RPj z?zMttee#6bZyqJZC;iN2X%aRRV7ZH93hP2oD#eE#;BW@Ui8mce7E=Q*+%?l)RH~>b zd1}ECMb;i0zd=g@?8!K^RSq_zxi5H^`wzZu0NJq%VE?^GOoZPaisp8K3ZgdRJx0JO zX<~!F}M&GGA`2$3-JqKb+%j#2P_IE_sD zQ{XtMH=Axan1OaC=xO_j7a9FU&T^o9mr*T_^qkVtJ#??R42Zr1S%rr3s^&UYV=nX) z!v~AbaRZCIkOR{G&Gjl}HJ`7W?t4STg(D{b9p(vBAPBp-eJ%OWD%m#L6??S9|ieupC!pb)1XqEvl zlxZ@|X;2P`8!c1p>uZ7|iGThXnFHo8u6iUfT-^^u_I0u%Hgyu93rG{xEFSY>RBW4i zPDSbQgzgB+EIxku^)qAe5np98s^cRr2V~9)4g_EyT}T(ILtZCUkEISPQ-p)t`;8VD z5YrqYd|1A2Q?0WI3@xd?I0H;K)bUk;?Osxz85W(4jRBdtnu1c+Pv|_!=qSx80Z9!%%w%ewx&79e3hYTc;Knz0O!@8$m@^N0s5PVqtyS zugX4qT6gDZHl|6a_uZP05EZN^Ua#SNWnS#b2{Qon z^bo$P873B0n0isxAtu0-v1<80k)-|POt_xFEpOrJL9jm^`==i?40o$nGTFpf}ZORLTHQ_x)<#M2P9T*e*@Ez=BHIbY^o6AY5Z>WX{hM>NKL4J25zU#Pb8P;=) zo6@x24s-(5_FLEHQj%wVY|6XJ>6r3SWD-&-=MLF3Jw9|J$B?33Ia&wQ;%88r#k>|5 zeG2h?exyipyB;JW57++|#C|uf!w=`jU0rnRD7AGvKsvk}8|o}Re^K1T z{Rz~(j+!KBg*QV8z*w~eCg_^Z71&g=Gm#@8?mIv1?UPi2(Q2!P8o5Jmpb&Ru`+Sq7 zD*dkZo4~i4xE9fsF$9au!+#rQA(P~D~^5}$_VWFnL5z!U=s zBk^QS+%;iI*V#(X_L3Z;hmO>-p!(bb6@lH)T$j)sEM4*Sl_BY{$4)5n<{sqkiy)*i zeHfZ?1!qk85skP|ip0(#y?o^e62dIL<$-c%ErJmc@$#8UZ?38HATjG|pGMtwSXwvX+>!l;^GZ*|axb7)+Hd^OWDxVz|na9p2X@6Cm5M zQ7Tom{;+U~E02~g93j&iRBx6eW^D<;4mYy6ud_kA7bO%7Op^W=N|xYmjG$_XgPg;g zWo>rUA!|)~);7BiPKR-MjXvs)jj}0w&~*QsRLF{xtr3%#RvC4|$d^}HG+O70he)=Od{R?k)Q< zSC7&uy@&nXFx>rZ>>OVy$q%Ulzu#VP*3e6m(0#${KH|awVbhSLd^Rm+CSS)~Aap7R zyCkpTun?TZh{VIY=Xf-2I1aQJstuXx96Zunm=pPJt(hck&=eyHPJ$}L;AGQ_9nV3} zLA=`xSE-cO(@Ymz7)ESMk^=PRdl?O*2yYsCCLJ(Y2XL+BnH}{fcRB6QDVW*O!RRAV z*oSSgNhQ(w?iBDeXESKxn7ZIQ7~I7lQRKuZXu{7&?pNnHaAS)HH=vi+4t!~2iQ4+Q zHE}%ic%)3Yvv5;{+mfY9V?~f!>5*y5KhT&mcXPzzt#KTmO~Rjp{N0WRIIu@qb)T|z z^!s`3h4x8a9b2h0BPq1(6g>U{iYcsV7WAuq8s(}{B0z9DoviL)fl`+B4K}7(^-ySG z!hVqbbvo$6T5%GPtV1&k5i;18q++z0H3IGGEJf568TcP1xJl%-rt?s z!WWnD{nR&5Q;O7G0UBfCEMivw9Xt&5YAN#hK8PC+sXg;OAlUn5Ot?e9j19xG#0NOL z2#;3F*hwo((hyqg@r)BrpaOGKJcHue111H=gu#1Tp|AbO zKOOk_NV*(vSjNU zaBl@QfK)%7XC@7QA{3Wk$LAN(l$L>sCV^m;gt{$4J@Wgb=>WCj=9C9E6Iq;73w9&N zpY)5incqXJr?bbsN|~F)r!N>@lpdw8JZG&(n3HS5(~;+-!U`UNs;7x&yOu$Drhwll z8xb6~e{^W=*G73bQkA##5^Y%|fK$8UE{D`4ovVO@wOAWt8VLfBOHW+uSIY8{7HjIh z+2u!}<;q`yFK`aO^6Gg?GhK^2Y4!wKf`h7VG$Q(Jh)Oub@>p*0J>_4~vcmjc;O&WP zZK9%M!2>%w9;nG#U!Gfpuzh?~#+ady+{b%?Mw-RXf*A1cL}S`^1*4cmuj-&Oceo2< zrbv6O_rYa}o*yI@foLehO8*CccDP;p2c%+AdIAd>EA40hW;vi>tLjPmUfMvR#y7px z`N#6R15TX!rq~_F~f5C!&XV*p^Jyu!#Y;{Voez$C@C`Ps)m_E`!V8IZ18z z55y|hi&&z~2bUqyx-p8Q$bMPof?GY^LKy>nRJ^V4U)~=k%T_~3IWKB61%YHmqK`oX zdY`qhB0=}JF;sLU4f77?7JkG8%K%(u0f1DUY+)-6?3=^bje1F366gzqm~Zh|%HJdE z;&Myl*>9Qb0GPhslHN2z0Ik}tjlWYT2W<4o;40PqteWbZTBQT-Y1@*Q%k5$M*7m@P zb(uceL$fO*r+M<;cju>E_o|38NHcr>WaOcaX9k6x%MxNH#nj-4i4^h-&JH_O0xWQH z2I)qv4eVVK1@G`I5u1EbMw(711k2CQvQ2a%ORG&R0RKM#zyv8AQ%tpW1!Z=ak20^6 zKMqh{0@mKidE2HzhG%_$gN`tKQ&-01^g5`Nu=^qEp9@5Cn-tmQ_CYrC{vNuEAw}!H z6G-#ye%HG@hamF)vCldCgnpLNxW16&eFr3=x9JOiJx>T0i>$ItTOvyjAG`udINqnX zH!Y`9z_!UKyP+KAgwzGkRNfq9wh(g=_?vGH-&tU=AE_!;Ys2{`qBjo#Ux^h*5KNcg-0zA=hT|^ZD%LyBa68 zJ*FI`TVi|VoS-7s-3z`>+6#P20Gx4On~T3NAtKF#WbGUS*|B{tUM-#<|ECxtNa6`M z&b&iC>}I_rDRY%1t&%JDiv@=8+j~gmK1DHD?Mp z;%~rsK)*$jQXAaQaU?Ny9;A7 z3t>z~Hb-`DNf}mDe~Z4}_spE;Pmv+Xb&NjRD_JwjG%kGiJPEo8o@d&h?Y4mXt)`)X zB&0bdd#p)8>Lta5&Keq2JA(kF^8z~JP)Qh?0Olp9AC+j^5VH^0qy{0e-o9l%^7N%qTYUGg*cRKJd1u z$q4HOh(%%$NvHXZS-3>jl0N|FD9ESFBSO|_efT`2tMq7pbr74L z>i_ngW~~KWJE<$~$40B${tavR0B_N#H*ICxya2HeGPs>{iUYJ)k?CAVAVw-#e)~t} z)&+VWLa8B}FGJ^AT6teQbpio5z**ImF|f)e`B{r}PUp>_TM)ja#VgSY30C~43G3JN zS*6=gP!eojT8InDla81vhZTE$bjO=?vE?GBJy<6sV&b+R67oK70Wj$~j51_05HAvH zp)IH(P$|h7Yq$|JNf6b*_7`r$SGBwT97~%6oG8O7X89=!2}66qpfV=a`un0KU#7>K zMCLQE5qU=IxAP{2*J3`WnCwtAv(RKeidIZCGG%!=sHy$`i7MC^17vJ*Ps3MyXQViO zDXq|xBFDL&VdnG9DIi|oOLXAkoLdH>QY>G>WjE`MOby3VveI{|Rs9S&sfmZc;huhp z+jeVna5@H}y@imv-v0G}9Bq%chSK(ZXykX-R&7oo8eQXLUi?cc!0%Zd#-JYhcRYnJ z()gaq-(KTWC@n~^R|_1k0`&uwPK;0#BIZ_evYvZBcrQxm@7 zBy<A**0ipK_F#}4C|lnygoC- zkx($4iR>2#*Ic0h^-t5t!tJX>9L$^&TGq$abVh;gTvnX0F$ykGoW#ltWM6bsz67svypwTkE{Sge`5AK!W!iZHZ{)(wlKMvA;+&Pwpw=H7_7&5-+ z%Rwh+U=kzvGOKd~pIyLLatsG2&shSSZW8vK4_4}{S~(dj&7Y3k^Sg(tA_l$WR@N4n zVc%x?x9}s{QEB$#{w-@z`iDn!f4ns={Q5}z_l)KLu+Bza_bg-GnGM3kY%b$l=cBsF z9Qa%1|B>Rfvs26gWVd!SVK>p&EIvzV7N zq$FH7RdK8`6FCv3YAr>zRJm1(%&`dhZ)AW4+(%G!`|n2U&$4n=M!`EWjbkBU^s3zM z%Tr&bVWfKOho*3f=Kt07+M67napt}p?IprEn}^fbckwzALT}ffZ?B298L5HNmk{eM zgAU%l3v<+h>7Ve>^|qGaFV)ywQJwS15CTk_%90(#V zh@C@5#+I>wxj~WLe6iNfN`O=^8!0^)K#@#CoSA6-QA}{IwxjNx`5^G?&=dS^U5#K@ z>b)$qNcnW1+E?Kwm8;<86+{JL`V4#;Vr-Fdv%JO^4|Pte3+aH{biL6#@qSWii~aEI ztDo*5h2qZSSN}=ee>l~G+v(5 z!44 zT@)i+%3kricJpd{qF4QEC?shZp+~clqF0Y7GWYJ3chES^Tv}KY63g$?dICpA-Gn1a zmC0md#0f?3ZLUy=8!s%n(ID@ZRp2>3i#v&avF*VDkmBZoNJ!ZPR@ba$jEb}3b}xtbVJ*cB~T@Z z$Qb!@6v)p1Q>JnRgTv2;3*b5|qk#GzqL<|^imzOpT#W@ALnHzD>+JBs&QD*&*s$gy zMn+)l3>$Pn<`JtMS)h~M?EteKuI>(|P~#qZGqO{To&>EF#Q2JC1pA z>Us#-D%I2jvMN4^N^y(rwJ-io4?KP)4bz~*a!b4lw7eGG26>d;vh(a7M{F$rY0nA;e!4XBU)-t}w4v29LX zILfDPU*_O;9J8!_45RrPC{yoS&;TCQ z6{72Q<)cJQ;#o*maC$SrK+TmUJk9TMAYl zzlPo+2`!(LZ8dN#L|KqWieyf40x1-ozweb`Pf>yJwl-u+e4r)@QDE6HG;X%oC0S#^ z@)P6qZuGlT=xkS?Y^Xam^9rVyQrP$PqWo=`#R<$4baGrc1h$4z`ZEZTrj0sE;h0QG zo`N^#Cf{s^@A*Yy&GO$6>}QV166f1U8c_RsaiyotRRJ(gIHekW zELsHh7tmFm%h|h8`tnoRI+FbmmxitQq3qG7%TrKx7bcmhTQPcJgL`v3ffzjYT;ix>8rEi`3F*5}Y)ImR3P#c#$Hdw!HqJVPmg zYdAC6{w+VTlMlnqLF=toYjbMhQHY2x z={r&6^aq4zw`~0$Z3N>|dPxtCDzV+L;Y2ycq;aA4#cc@smXF#+&d4f7Hrmn~(Kf9W z`JyyWT~Uxd7W!-Uj3mtUuGt)QeU zzCWZBSJCM;2YhAlCQ8=B$0f(N#Tv~v)iH-6aXr~qMxN&#i_~hmeGGAzxa4_2;ff<& z^YM4Pd#w=XT@h3PnoNc;j7YFDAgx6xKLG7!@a-txK5|Z6ut3eFrnvsj!NX^WESS?~ zGvUdAF$FKaZYW;UnhK+$oB*7X2IIh-L;kYqsVCg6DGh)OjCze}fYGh>3foeyZW9i% zQ2e3@0M9=xL$ra1DhUWiDy)4t#yW#2*oe-rdcj*6!OvaON5U6%ADG1Moh<>lk?_al zG`2$)&6B-dGw*o*8>fRGCO;gZ8T8`_l5(xLd7TfY;8e)9Hz6j`!7FGl2>y`$k;F-f z6Ax}HequUx;_^g_5Lk$ZZrWM8ktHZeNMmQWSIwIA?dAppc#XM}{sbbJ`)JqNE*1atrpESZ?U-6k?0Nxy=%@)J4tm=ry{=-?_0pS~Hz|l$UpvtAPT;GV5$G2$NVfr*WWo8x5I$-mzWq*h$803 zxK-wdG7>183D%-PNP%HG#|fy#@4AUSzUY zzh7&i%n&}PGTV5H?d%AaNC#h3E!pf_$4>31FliN}1%xV^Fj-(k_g3AOD+ zuMi=r;oDP?jD_5-pA5fsq`K46hPq2`n6of4BLi_+6b8R+NeOoX6=XlF2~>~8Q=u{A z)JRnU_&D0Y#N%kD`gD`uH(1mliP95sN@aYXiPFNdf1I&INKJ<}N|k#n%thcUf@(Mu zy}RnpEBVl?r#nln?&BiZ562LLY9ErLvXEi=!^9A%14vlj(;8YS8jX@c({u^AcZ! z=h+{=7lB4VFZNv5^pT9i`(#9y_q1r@hk=En?_1Sbb@PiD($$Dk4{&HfHIoWZ)O{6U z@-N*48{um0H)23-#;A@aAm6nxx(wTdBNck>h;&07%Se~<7k1z3n*;e{Em%1806BOA z+|d>1CjL@r{7G1pT1v#ADfa z6QbRy;B{|^x@o^3Y)`vkTbf5$g-jV$79%mGBIViCm+mn#P(sPI%G-1`9B5DY;8XiP zmI77-rS8kstLGqZ{R+&1;UINcz=kvbb5hMATDktyqFVMTLjYrbmQ!BL;%SVsONU!d zBlRsR(pOqw5r}YB^75;E9@03FUH=k=11*NYhKJ=TL(s8F;ifvWMkY0AT?nVa3SWU> zNvn^w$UroZiFkPX)S~r2c>YyJ;TpFU#pLw45*631GtY-axWMZ9!LQ~vB{IAN$PA$AQ5{w znI>1zukc)FR_}=55NUBUjbr#ufL2LoP3%1A*bbZsiQP6Edh$9Zhy_b~Ex&^q9v}MX zib&IUwS(+nZ(o+3PKiYi9MQep(~Hg1^OR|ghyy#*@`b!(49ICa)SW$Yht>T0#AE;8 z2#~$|B!%g6jRAl`eJ$MET=dpf2H7Bc&$it=gri+kkx@G5o8Y9f=^dc#3bwdj!%)n9 zR>l3!bzeN=#DBhYZV?QanOX%SUU1GZiNycS*SHu2c{26R!K%-8^U?PjZm4!d!7Ubb zO~4@Tle=P&<-k747Mfc@D8PkN_-9HWL*qZ_lKao4#|GjcN5=nNls|!N{Li)}k0-cT{@!_hT|rgLdXpbmzV>^Huwx1aKlSo!k7x{xtr6iZ05M8!6zuv(+NI-m5$ehhZr?}rM`)TXGT-Vp3mZMBph5# z^7;>!?fdjE(~RUePtf3Cs!?QuxkY@qy!R;8e_!iKI_s`h@E1m-0S-9W`eD{5Fb$F}QQ79i9DrU~h0vSvqrMD4)ljo(Nq;dHTZ4NNiEprDH>yY_} zX6u{WY!5g|eR3-s#av!IJ<21Lt{@e6B-E|Tq96a%MZ?Nsbp0EZ;slSLajOu^q{3CH zd$J{J`>q_6B162dbMVJ@-Vdr@pF(G&DlH0!vJzxej$w`vMiEGPIZ%mUcDs=Tg5h)c z-^?T9(tU&OW*tXuPLfuyKG0gV^1Z{*3xAJU3Mz2p2`pL?1$KieGprgY~BR9_xTUhPhOxV&CnU}S@m-TaM(|@<*SFm|Mk(JdAHBi#)AAue_q97U~ zJJrgp3ukXrBmsLoo^_k04GZXDpIa&VbWDv{k0-i;9pv(|LSl}ssh*HW|Bcew4-#ps z9x*{tccZQ9FL>A6xrS!wgcsFGdj;5hOf$pS6RV&Gxfpu%4+U!$rl~$xPVqJRl7FjC z3FJ*v;AF}DEyP@sTp~BZ#;;&~SvE@|?QliwkWIYs$RAH`(+bi|?|n1`_6QFk3W3rn z4cd25{%I-lU`@uB`IJ`#2?+ku2sg@HREx+67q=UORixRWs#(a(HAOWS-GBA$mf0C+ z`W0$*vOx;kV8KtXOHA5@$^pArbG7J6Pc}9}2|(2|2J3B(i4JOsgqESbpVhxAfA?E) zhBXcHVo48oeY`z_Qi80bCoAuST+RpyUAs!YZ7^_LYMDyOh@~4`jrl<}cDllW^wD(B z^!c5ThZYM#iW#7X-WISShM{0}Eb;Ba#HCpt zb-vpEMFNYCcFtxi+9A%Lp{5%WLpu{sBh*BgFIL$((Vn!0v}sJ1x;D6LyInlIdGCI_ zygDK)PnF(Oc|P3x(Q&y#Xx_|3&6}kyDbDhkCQ6Sx)@1<6Dh)2x)11>QKu}f*e#OH8 zaM_yMp>TOZz+V?oPj7l(fDXkDMn7)G+*+7V;q72jOTh=shFA$DZ9rga1U7 zR(2#-2PxvuLsHqPT4R^L<64HIX3Qtvzkmj}n|PZMQRS6xKkSP1!M=8Nl($*tqU5m# z44dkI$`3zb>3#JxMg-5v_Pvcc4WVc2)Y4!KtB&&exJ#;#oA3Bu-<)~8T(B%6XvEYU zUlfEG5BcC&XhAqeu2N>|<*yW~DMAdhK3#{shsky#pPMo!5A3_O9c(?9i%DOPDm_l^ zsEmKNp#!6Fq2>g!PGhMocp=x>fv$no>V=k*QypIWtRV%wA#cO@CVlZgh1x+f7vqfJ zO>18847Ni(7+oe%@H7{A^;0>bxp6}z;+(|xJ7Eos5SYcrP5MvpO(uOeh~3Wbh*Gdv zc|GR?;{U)37et1NDH1IHig+9fe<#g3H6q)t*rh<_6T1ye8}w~yorBr_k@ zh|e6M>dVb=?R-i4dL$eM^QtEj^S`41DDnQ|1!H2s&9DA`M-2+D;)ZgRFA;Kg*-``g z7J<`o+z^1Y5tw2;j_d&g)}NjV?*VuN56rMjrKXa~lmr*#fv88Kcx5ITe5J`kF-i6H zkbdo>fBW9zwKBs<D6YKxf5Su`( zZ$&UQrN9OOCJBxRr&fVg1u-`zZEn4?pLS5&O>#?$*2C`Tq>c&ur`Lz;rH;Jv5aqM5 z90)HrRzk_W_#F5TX3Hz`E@$P?E(YdRL^E(BtJep)CPdKQv$vXwv!>C@;pOIWU}kam zngK`Q3WdnYUTw|wNifUo?J?)l<5h!n9IV1IZA2yj#4RJ7dqtVhP+40Tj2m=XGuD#Ai^4iF5B=o90ovj#kLpw=KJ&8wKpje<_ zcdyn}G#V$Mw&VFtX794d=8?7`FA+%C5F{u=w~mx0v~9(mu>k8LF+zGB0nQ<`_kCl6 zw~Sc%N$7~~p&Iqi-vEhD9a+V?Oa7&Si%I+=!z$ofk6rtzgD{DuEV46sm?YQF`+jw~abrT1 z`)Rt-UYKY31O-(XXbP=+gklu)LJRoiPE+Fh^Y`b!cJx&z8B$7=?&is`ZaIDPE@PNG zpl)bMn~ehjt^g7Q@S`<3t!Sh*gG6ARjE1{9cM@^TjcCg*_z=UI6;2|#?0v>VWzeK?PgH_-9r)Lv_U3w17ANL{a6Wspvdfz1*!aq5R5 zxC>RCN%G!CV^P|7Epm|fAm|WUn&!diG6I`!b z`Q3Lu$b%hD>q&%CO=3dupzLRT<&W;>fXgY80jNkmAFl+T8bN;!I%E;UQBxdn4hZ6?7<laGsuiTf^ZO`(cbLM;mOBQ(KjDuba58a}-`31bU3HXMG#nq54(2Nt)J z>r+0!i<(HD_Hp5ol#2?H;Qdl`+uh}Mg9$4J@*#^){~x#+$)h?ytwN>xJ(i2X*~2@> z!;Auk4o&)8zZtgIA&(0AMlMYE6Q4CV3$_FTzv-3R(*ogGeW?0{J9nq{{b5Nub-ecT zVF_`^VEw}zACAyhtXKcU+EC0fHZMz~O=r;x5qa^U2A&NX=m>NGqbs6%7&u8;{pJ16 zDhkyq#f|M0HD2?I=6>k(KPI`^16N<|K=;xIP_u8Cih=!X;kh3Euf1GO6lJtO=Z>at~tKjN{@ zajmZCl1?H5F}iPa6~cNl=a>cKdc=!Je~)dJ%bLlpdc!l|9uHn_2Ol}gM4p;m!TC;Z z@m>&!3}s4BCcax5@3ty1rqxS>E2pClIHBJQ1>A2x2aJ*em@MFR8RVzaHSXZET-}G1 z7RBp_@)lL$;S!#s|D__1*GyT)(SLW`a+C#`6-HYmleO?MkK@+j^V{K=X%gjz$Kn>Isuc;A<& z>rbPY``D>g^8Ps1N|qc~pKW^RJ%QJn{3cQI-HJBH#&~f1_|=7Oteg*~Ab*{KBveGL zcj&lKvL=iUy-9!7hD}AnPPfW#{s6^<%6zdi8NQ`cQ~0kWw?9L%-RayKY8{jC}guqh3j9j6y5rV zRrVcIwu1Bep{^{Mp)@FHmEbck$;fv#F_P0@B0@`IqGZUl0;yt)N!vz=JM>kdKV@L8 zbH^M^gAa=M!&(+ zb(ZrB!ad_g;~8guv}(IGO31nn|CJaM@s1Rv%+Kbi=)=7&;MLusRuuHQxa4DtaFsNa z?C_1-3wAz?FV9qI;*5jPu&OH}$oNO1YOkvtaVtvJdTX^rK<87QM1G-AM+0PN@AnZD zP-CQ7f8OD!F!vldtsL#b^6kEO(S86z?6yG_fQjDdK=n5`9?c^ukiSuAbt|sZm%9K% zq6rIlL%i4^*h{a)R}ZKMQ#8dMT^ZCImmFqVObN+&`7mLDdqB~FbO%}pKXjmtuJD%r zHxqsk?REo~^-RlkF~eju9!({$O%v5CAW6BRQ><-C$JEslypfMh40InBYDyTx(+yV* zK#>X-Y6EPJprT!tY+V8OMvt!Ta-__5B~7t64qkJ)Ud-2&rRg(`h@%BxqswI8%SAMg z<^qwdv2yCI@;#PAC{?J8=##`9#95g~siwf;CBn+W4-mok(M$KU zTdyxXzJ%yj1761+UKvGU$=-jbNddLZ!N)fa{9jTltGGD9B|vUdprEDpYO{b1sDf_5qATgUkz08{Q1`CCErEb6htUUUv5$LugcF$;ysUm*z^TJ5Ld?kgI zZsn(7XcIwGFN@19evAzi=&3EU{F2Hx(}uMr)2Y8!zjkn- z*c;-1GtM`^o3_~0^@GMkDgfMV0!-`Lu`D+w{$Ip0jyf6fDDzONOL4NPQqCnJmK%2c zl}TN7@R}xF#;~HRlUbTaedss!_}GedOhF+AG#I)Yb@(R8z)6^%;)zR#9WHV+CG(sP zK{XxTQS~`$$gbOyP2!9UXf7dcQ%x@9aY(!7(P+Dt0P}x`?r8pLZ8qHVM$fm%N{)DL+!;;YeuY4xt0t=KN`@X|-$MeZ>kSby?Igyosh7aw!Gq+xnq_5j zQ)*Pl;cDPLl=X|#sO-tb3wXf=9FItgBV81~Opq83)juu{uAxd@C6kP#C-6z{l@4>` zo7qGllIS~q4BvE@7QM`xXvyM(jZr|uykTLR)nUNnFGP2ny)#NgjrOxP3F71dX81aI zfd16pk=MEwJ$J)~Iz&}V=_LPaMN^v~f*O(CV-m8l4;;i$L2QVrZns8H@c?2i>rpIo9VZ2>#4LC>I5KmC&H(>PWQLQ7u{L42 z4oRDllLrm-h`@(Gk^6NhVsZUfcA9l{;0I?XGxc`9_zQ6i$Qj7L=q zow}Grs3*sF95(Rw%%GK)2=Afzcy&wU#R(22&+*)Vl@+6N=;7(tHrFA=WrSBQn+>(r zep5bd1AKoe?g6`U(4D2BpiXJGNg`EU7$5V07oq`>v}n{QG@IhO3w}{(wte2&K($&8 zdq6aqYqL6#J4}*`)w)DN0uo;uR&9Hng(~@L^4*i;pNLUMv^D#YgeOYKY_Va;SPBsX zaQ|=Wh6p>AYSS$qQ1K6D_32g>TX<1(bG=zU6|lwuvagy_eHNwTYOsZs2diulDVp;` za4>GjDE)83&xwfYHaiinnP!Lv2UrzKepYi@N5d_cU+#2C_y zKl+=H%cDW`p9twC&IHqieYM38pLzFdw*r(hpEhkzcU50aDw;tb|PI5 zTfCI&+0cFG5LmXBBn6jpV!W+U!2@;Z>)|60R7R~W@JL3tN#BQt)rdeFh_8@lb(>^K zltPU6;B7mbT^dST@Jc+80PD*(4c@|2aS<%PEzTj$EPFZl*$p)5`dnlww2MLB&Lb84 zh4|GGl*9>HLF10Rk?4`JP%v8=--thOw3_s{BZ{6&7}`(&PQGRWdfKC5YX>^iXOZ( zXT>+F=jdoOIH*XF2#t4M?rp~Qy*29Pr`w!7#M&T5fD{vPTKoL1B-?yhD!aCSMbA7M}`9ApLz@$x#bcGQ3@*LbT)=?~@z znU%%h=E|8_2S)foPYF7NGd}ezec-a&pX#_9N)AOi{^qmV^lTWfQU}VRn6W@S)rD$e z_(rsdXGD`{TnK%tYazL%g>u&6W7(|Oo6vDp(M<@>e%01M3eKM5XD5``C= z7drc!MWDTt0T767IOOfGg>A-jqm3lD@2WqN#dJ=>10EESW;kvVf4ppqNGxtM5X=z`N1RrLJrtQW6qSmt_R);_rvpFz{9r(-tdRMd9r_cdB}y>DUC z($@}dD`B*LLThN4=!r7jAVP6W@J)cJr>voI*aOQui{}n9nCYh<8cghgv332z63#2g z)-a6ZETHL^H+1dn;o2d*y!U&3LTqSDrTqfuhpda?e?t-1z3gh0BSF9$Uf>T_@#lQp$Vsz&<`+C%;^77L&-Y4#!R`TtY-V92kbWX* z$N9G`G8oytR49eA4;r)fwBikILBNbaE2#Jl`yKKc1Wy7c40o2df=U9ll?~$wmErrL zS%q^tD`66ZhJmENBLc+ZS!=2J$E~0h{+#d{Fy@rJKnu36Dm}?fe9nr%6D*x{m8x*j zoLsbj{O(0=LBs7Kjxlb-%O6o+*>R!675D1zKbp}kaN`&L)%-Dk_ z_J8JHGzwSQ=T^GtXLzIf{AW%WjCT$!~^xS@U7ZBlPp}Vo6Hu+Xs`CF2CS6!6<1*?z%T`9d-x2}uPx3JL^ z!9MCQsfzA@Heh#Saav-2y6MGDTA>7bgUbeB(QLM&tfJCog48Sv@{+7%i^jz{##f_C zJT8;3&@M~5G}4O>d+m%y?lHCJApPIbFbi1o=2B_6RNOojqER>y6OwNavF0cL8J!aG%GvIKgJ5#H zbMz|;@V+MvDvtXqv|DZKV#sYh2B09;6vy`8 zo2+veDQ>>v2KI~y*t$UUl8S1d&xioPvZwT@^P+1)w7xQpkDNl$e|39w5B`z|LHl?A z#LfVD%8zvvIlD>sM=>$Aob$taxEnz^HSJJVu~o+aiVxm50WmWgWV7{8xQ?QramVIz zpJ@r;eRqa+P(6}yrsK%Yl0QnF!Y+fhWLweI7`6P6euEvkcuWpgG^BBJ{CpQT6FAg0 zMx}Ovum)?fivk!RTsbktyNIMk=MPHZB^5W4wFh~amFw^=>zTpwy z7;_b;v!h$&;-YdztEMmZC5^KP2|?uuC~@Ozl_m)t}I_|f$RrXJp-)zUYYFt$KXHxKk`VLH>X!awdq@E2G&4zAG4;yt9zwl zFs#=^^fVV{F{BI))`!Cz23qvE$jDg_TJC4-T@fxO=RlH$dj*$vB*fbgLmk#2?!V#g zc&i#scfLCF2o`I8oCLJ~x*?y>2}3J7pMQ8L#JJw^L{+IZN7y^nBP|rq?)Ujo%y*W~ zJh+uq2M=}pH^=bq_@k(^Ve+c%`gJ|v?SdDC!n4 zp%0{<+Sp<8%Cn-t4rXv;$P@bl+|_nuALbVPK(RsoL`SV|+uXNvQghWuBLEm=tnZon zzC@c-N0}q83l3iD*SeJa>25^DTf?d;;m zC|LrseQ$>vF@;f%!NBPbXpjGDCmC*XJCtEAzSTJ0Q9kn@I5GUW?s60>))QO(3_7QNj*>6s z8q@w0zZk#uJR&SQV+}zH*P^$_Muo!Rwyd~0R)W&htmte#(s>eQaaR-z4ePw>Fh9s` z@fZs${EV-{MwA*&Nyp&yKM&EBc*wGfFBS-gsvu5mu>Y(LE(=h--2LliZS=BXd5@Fh z2zRK|-8bDyM?pp5)s@pQMWfoTKNd7Nwk{_2Z8!5@jreLtpOI;6OMs|Oc3Udbp&KOc zWR9yYTMo~#W`b7F#7Gs5!F5}qN_n&J4XvRmK(S4$$EVY8hUs8%GJC49$;6OtIk(5e z-Ab!p2t_mBuQkdujd7pT=8Ui+2_oSLZ<%KYgm~u(b)@v6#^<5*A@6#!F@<2GC}glr zCcqX_;DvhWXjl3{*;RXSRq>abC(b-kKrIda+g0j$-lpRW1Rma$6s@aoRuE19)DBj> zg3#P#J)EwehD@OmgG-!D^Yy(AeER6gH0#b9*iZVOE6+)Lr$|?wp=@gsfH{(dV6uAd zp4c5#UK%l{DChw;J}Q51-v^_xz^KqK~}xSBogSjJ3e zJ&_T2rx)Ae_UvtUSw^i-69SpQ`9+Y+RrQ;x4*J5J>=}||u)rdCll9Dp>rgCEtcKB7 z-Tocg`kmygKS!J(D~J$trKBW@p8=G^vXa{kC?A`|kLFaf&TBX4s~_y)5_FH z?j5ZMZHuI*LJH5uRZ0j?*Wv})WFsypY~RTYO)Htf8MkZwSLZ!YW2~cPiFiSWXP;Ff z9|u9>JzBSr7+9fO-FRZoWTMiaFaAzoxq&N0qm5-Et>#*7A4djL2^OwXf#P!{zqJ|7|qw=81-dP*(nxeU%rQ6YlG z{EF&8SfE)51*RBtGE3Ms`D@)lpTV#?`jmVv*TS1Gc(-k68d-{ zm(Ik*aeK(Gc;(V~@M|y`;pQt#AQ{_2CAe8|Zb7pXIZwX(i7bJ%5zr$GM7)~Lbrv7! zLr}&65qkZ@X?^Lz*c4%(_@$&_fvrFo0S##PYD5M~f#yH!&_Hr?EGQHIp4o zPlRZL`AbD6?O38yt-2jk%Pq@r#>6^Y%6SgDUdIbhc=Y!OFcafZJsF&>YvAebv5hBQ(26RQ4~GW)6*A$ zETo}A*}ymWPi=`{y&u<AJvmbfQz>@j@-#WXFvIm(t?Opw>+x)wRx#Y;v4b~c# znS7#-6okJkhV>Gr9Fxfj=VNx9M<-D zP*Q1RYK)|VOit$3J%Mb+DCsuD*iA$=vzZp9QHsSmubn01+G1*q7MU<_sBrMizkt=v z3K)rUCe21&%eaJg;DUZ4(S3chzsBUcdy{p1T=nU2xQKHtI1ZSxPAp^(0pn3r#`0?? z+onl>pEE_omo#YBk_H}_OQ0yViS}(P-`KFWADPUX8i;C_#?dO@4S4U4pBvKf8iTe# zN-m(m%dH&RW=!?mzg|tRo%azAcB=LtH9v8sbB5Z&BlkpA1hcvJ5A+cB zKU39*keNqs$;iMa^&u5^Xa+0#&Ovgi?;w~sNPI18@_nCmOF52%0RKM#!1#lg++@J> znZsqCl*JV~LbQjh?_bSN$5>sQibavLQj~^P!%K2xHKmT%cU}ZGX(oph2&(}I$yZAbgq!s*>R>DNWMC?0fW@rbEHnX>fS>CnqSw5*_eU67nKi<y8bzTj5KR63Z9@vfO9VYRm`I%`TL(wh6d2Ls_yp6V9Yhq4;`0( z)1KRg$_}q%CXXKCwAbU#MdjW{Ua7&Um`mvJs2cytO zD)omlDVJneoCOSIPBlLbY=WvNQs6HVB)N$yWTRGS^>a~hBcO+K^Od_WmzY#il{PCaa806{IT6W-ku1Vjn_ z*SvVHIK0|HJy-7hf0L+G`wC$yOlwuTz9-GxQLBJvHRNsQ`ST|Edk^;0=_Bf)n7oC% zNjf;=cOD)IU2!d!>{<5kDmJ_WHEsOJX%t{7a0fOa8U*bT-D>A@178pyOAcpsFTkvu z=LsWeZp524r{GisK|^k zoyBr5jbCSJlx&Qzuh^EEy4`Hp@cGu&6iOR33lmoIJgf(Ve2rij$x#QRK(Ep9i&eFw z+==-7z=lUjr64|6(jH?Qhuo+i?jRHtcQ-HjgrJ9j+{f!~0w3cbq7d?f8_v;}`qQ*e z9FHG1G&3<}+d*$Np(JXr$xr9+=7&3a-WBASKZ-WnW}X2sTqBFm3d z-NA*oGrU)W&jd_ z{JB@{b3q=}`9$=AWiTW)MxWZ>8HQi1c+|y=F`5a4;Au8QNABlwT_hELkq<*Z^3GUw z82`e6?^|1g@gaR7PE8Qgqxax4O-FOs;eLM-KfjNI$**d@$Rmfu#b`LQTOUYZ?Si_y z90$T(9J-<21u7y?9xpE~ZV7kEgX-x{ zPDq~8XN^pjO$O;C`M;6T7S6gk6%B>28zzvGiKPV(rpI96_jVJ=4a_x#pq}f<-TpFx zuC|H*@l&h$g2a^MX~P^0S=EYefeD3B1xHbHf`3~8qJ%DS1sE*jkVR>o)0*hIFGB-J z#(n1k(p8{{&9X2Y)t{QiV60D0 z4}-9dVJVNoGvK5tx#$&x_FraD7op((4;r=HTeK5?Dw=xGtq!|3B_fPSkiDhpUc<=qxAaoI>@_lV7#kG&%fv!u!Omj78P$+$y% zKogn!*a3d5OEsVhN4gb*FoNNpuoj1sg?$TU=O2SZj$1AS}GbsUr^zhGnv+N;;BJ+h<=pi370Cj z?!zF!QF9r*P(UFiwzFb@B({GKy{DR>3ZMsYUe9yPp-q6xH_-38)^{sC>p_aWHf^02 zq^Qg`4e#UoT!sWq8&1!v2q9CIF_=B6sRuckpC{r3@@OLpP>AS zD`=Ns;Y50z_uFyJ2kFUzZ({_co=?+`zKe<{e!=^FjxUv5x<5C6Dc#r%k8jH_^WdG5 zy6HZI6I*W5UOOrKIf0-d@4~O15$1hm)Kbq z?{rOMHi&lg5Kz?qONNdf|1HN*;AW5nA#vQlN9zm!Hc*;E9~IRBh@lpM72X29gesIG zBFe!D;w);!pMn(IBtKz^7V07wY81W?Z92I2EtwR!m>@A&rgSXGBY|cP2FaX2mKwEI z2*(=f&Rj3jMVu!$;f%}m3Lzod(6DJ3y^i_tPQFA6hk(qpDwyBZ(r0YL%j0+Cn z&z)MbR@e}%_+hGvimb`Ij#jOISqHE|zk~N0S@bdE*3}8Illz7lzoSPZ2@~Z(2bpSA zR2FAgaca+Ml|~oB%NNYgXBAlBa1~%o<0Rvwv9i3kd%)%SM6Ka(;m3?zbFV z`O#i%oImdh^_^>Pauw5x1-fO`px4V*5eD+`*&uq1-p&G)nb8N^ zsR}E=_keDiQgyp*u^x`l#n#^*6iy>8JyeY6Jt1POR2@Y~8h^V~n*2mOWg3Mn^xCefMbvdCAIU z{CC%W^z?w~0#7;sVAc(3piRBzi_AZ$wC=uZvVfUJ0sbMjBl=75xkDyV>U!Tx@^8>> zKub!Xvh0JN@D(qlE*d#^wgDsJhk8>-0Jrc%pA%J-x3p5|AwDI3#+mz_ zj`NGQ9T)pA7+H2n@P~Ya6aI2s_e$0&R|Ammy1vWQ8RlN(W?6YHXZh@q&O^XtfzWGf zaUV1O(E>}Yh2c3xeTH`Y0MhG(hkI^0*FtO~B?m0HQ0K_S00-`c>C=%tEfa~ImGN-t zkIjo}1<^b>7w|7nFFsU=&+Zq~XN*k{$$SoY$lSZ1zAQew`w9m{F06*O3586QCom^U z=b%L~)u>F5%J=dnL2aZ-N$Tz8k}VJjAY?Pll49}#hFnxpMM?}fN}C2QPJFw2NNvve zngK|5_axnMPvHnD$4Yc5L44xiTS7`I+O!+TjnO+4^8}N;Uu$sr>N@>(57N|(=r?#* z<2v>E9;sac;5_7+mA3~5)GuNaba!bEo>iE#XR8gRptBPnVz)6?1-zL?3%A(PIZ4nN z@+lc5`Jv#sQ9vzuAo#d$laN>q>PRb|&*pJEX;$9JztvjPPiW~kt3TNa*2U?gaqHZ< zT&H8_EM#98+^H1N<+!}I&5rMo%j(d|7o^R0oG%y;C5D^0v116-BV?dL;hFY5bFg-0 zE0-?904dflA1l#lOj`gBhEXBBYbR?=5h!kalz~2MEzNbT*vv?%TyJyOTfZpBVa2d+ z_ynXcGYI8=j%wMvIZkT98rziEqO0pR{nJabHWMQocTLr-G^hb!`>9Ybg{|Bb=jz%A3xcaz{C%piI!6r- z!J8hFDu*BYtk5J4`aFyx^wwt-w(~~ho;ojFSXXuTV#1y@Cd(G<-YqRc<}jVeBwX= z2+In5a}0Jv1sXlEDufi1o)fLc(+7yT?MOg*R>M}b`F{8}QLQ9cqMnBV>mjLS9`3v1 z$pBw`<4fc*PxC=u{@Dh&wvNyYqTiwRFcgl%v0eDh};)r1?(e^#2lrI*q*?p5BM zMP&pOJG&m5G9#!Fr6ZXm&OmqekAoaiy}pR1=;_4`!>BOV{0LRd=Ea1Lqw|64$i0hB z26{&$6jhozQ@NWko+4D#Twh;@XCEEgv#T(z z>c86f_e51EOP?KBgQG5nfoQMOXq}-a?BQ99{0>{Mx1XFksi*tAux;!yi#qq3#NDK3&YkqXgnV~!WDE=pp>pPnp45K?csncB(hItDqBzqry-r3#GI(b;BX zTtHeD{pD!xNc#6?fmqIk&OEus$nGV2cu+HJr&}Nq@3WrPJq}duz@ge5t#YXqMV6V$*tisgITIhSaw4C{0lc9~i#y&68-PVniypgnvn*WO6j;MBDWvQw z5;R7X9w3zosNJ0dM>qvYBM-v}SW$70sxJ+czxNz}N>vvuvkSEA_n=?4a;`euJ+MwS z%U^6t)C0l)R|9-A(mUKe3N(`P;oe7DbKu?jK%y!hVr$Kf-(e58PZuU;c3L^lX?~{% zFp&Hyf;1u>zo@cmF-f0mNz+m7S&^kVzG(UU?UFG~cskV{9E{s(h+x<3WTqkrD5qGK zwO-#7UXN@TWoLg(#Tpk41E><_5`WyQ0}4Y_{Z=|}?K$#1mIvHHvNk$zs2#gAM2#jf z07}FurVN;chkUC#%s*w3XF6V3`_F+u{`M*@jY$oK1VI5Kaot-PRSl-78>3uG9D=Eb zPIt2C6sklFDf^cx+(3mY+6|xno+yr5$)x9v0L3tOE1sjReeR4lsj89?Xm>Tj85o5{ zJc_HTEaW6<7pcToer}zN3eIP!p-k{|9AtAgw$LfcCrwph>{b~)lz9i$=3V`Ik5-Ni zxzhy_z=S(%+w;W=ZOGIBjSQT1_{0sqD!2%T5j3;LgW$sEtBm?3by`$mQCV-*U+fzW zle$^O_RYEf@BAyj`)33r=( z6cNi-Im*I#!h~3P@X`w}FWhQBdqt?aBYi}FaKb{X6P%PKikD_A$`ifTh)lJzxu)PK z?uR<YN74I(QJV>_u{)|Ug}PcfxYpt9by@j83p>(r79OUO&6o}{+mdwOWJKP2&S>Uas? zn|nrXglDM!$2|-zN3GKHD&HyI)?w#Sv~+rXss5Y-pTp|ZU#b-m ze1hveH|C$%AU;Z>onfUEX%*`ur}+n@_;$-rm;oImE@e6u5!%b21j|BVE*je3!*$fKNUD~uGVAi)oKTpl2>XA1zPf0wCw9Dy86Z9&t^l#6qX|pv~Qtl27 zmtD#`*&cs@tARzF&l`GfErhb^wop-KE!%_@jF=5`0gDw!`?jCIwY}Caw+C%-vWOej ztrvC|@p^AX7sDBm|^ zTRx=-ny>d`OYN}MFs31uzT-e3JsQUF<7KI)8cyq`T9W5t+qTc0t6i=zu`<$+4T>(C zwEoG%{)#dhm-9~TYBF_b*h_0eT%;h3VejL|Ay0sxhnQt;kPVVCPABdbze38?HUJa& zU00GcA}p(&arfV+u2<_y9MgC{d8M?Im=MxR=Pkc#j$|EMt8}*eIVgj-sP zfRJ6}GJ6j9yK$9&cmyj*P(CMv&W~T5!m}66@1=HLGz&AJ7-Bi83z{CaQ9hlYKR6fl z)165#73^PUcE~SjbiY%rfArj3N-~tr%G~^QX7)zf&(=j>VtR^Yk}Ch0E=@4F=ZT0~ zE+zaIi}aKK&>{SEBD&o9Amwef*$)dG-E}OATpMnK-tX|AFB8vUTW(A?)NKB*f$w&ozzX$eF7|Mb%~)W>K&M(;G|i( z&#R&TTK^4Y_&)Mg8m@HMC}S)DNe&+}7s~K0f_hF>74j*PBcx|{@?9GekhfecX(-|` zlFPE%qh}B-ZL_iN%WWY$%)7Ahw-Y&(&f<=i!75~sE`mT4Le0Cb{O!QHHm&{&6f$RI zu;O_r=>RelzY(e!EtJ8<6P%78zNQ{;(M-d<5pkSB^FbtgOy?)9jNozx-F}1uARZ)K z$|7cJ|K@Y#P0SkQ-Sy>&IV%hfG{CIL5dHt?MnvJe6g%ocp=%@0SPo35pwBuad}vJo z=1L#buKUNo0A9XmY>#Fu_N6kkqmOdXA{9R3@0bl`-(J}?=cjo5T9I*ARZ9(MBKKGc zP+ybSQ)EsU@DIGjap8f&;rznfg%1qY>Dg=6HrbF^5sN?|z8$$D{_WBR_2Z409;2*i znMoe^V)P7_W^kkopBTiis2fpx63df=Wip*yaky;xmghD5s3bDvhHp>q|dY;==G>x-|tf!z4D zy7Dm0X{C3{!H(Yj&_04Le(j5@!?LuvYYXH!B6aqfEuo_Ow9DV2{i@sq!e2SJtGEx( z_zXKfB;q_O9PWTf04-brAh=;h0|RcYI|$c~sc?tDo35cDD_-W@gW>)6S5ge_eZh1oN^{ucG#s z$u+~(D8)3M#au!fJ3@{AoH{jWnrB@-{TDb3ryjcF+k)aM)}z&}DeD2x)6 zB;z7g3o8*0=LWeG3YvLc*#+?Xh1$iG*$=aLO#O_}+FFJv_5-9hzY++h2P;$KvcVNLm^fpN)@Hci507vhWBLE&;n|crFM9iQNB@&= zY#+n)L#!5p%Rw*h^}XoMIe{G$Zv32uIiZw6v&znU`4uRBB_s;;9fMcUq4KK$RBET! z3W1w$qH!~u)f+q#LT$f-1cWdj_@`qk@e2KFk8L!gLb}ct@OrN)vx%Ak4X#}yYlB(b z=R{7364jJNVxZU04l(kT>;&nIXDQ1cZm6>55dzj7U`+>*+qiS9&cJVjbV(&<U~zG&^<5-J9XWpgvsKbNPktwdG9CCFQ?K%k{r% z?81I7+F-od9gZmc(?;hMX0ej}snxpPjO9?s3~Edg+}XNKhW1fk9!IB11eiGl1H}cR zgPMFc02RKniasAD7nLnRT1SAI=8%>OEn48P^Y)NqD~ufHMiI$tb4g%$v&IqC>3IFM$zSLiRu)Nn!83Q za<01MvLHUE>a+v9uI-LS8VtD;POw~U|CrrS& z`o(RFZXuFiUwbYsto^$gwSBvHuq_>Q!i$ED6aE7CJD_0&Kfn~GYMuISL2_VKa(B3z>^i2uHnHHyk4|(et8dIoF>^Se<@eMC{!z=@PDP z;#vEd)&6hTL#`^mQZo~|LqE~-0p1=GWT&DI-z$JTPD$n4Ok@aUKDN0y(Q(>(GYAw) zl&)qJc;9gF(KK|3Diu4h3KS7gL46WnIH7WB=~=#oJ$F{*W{A>o)fb0oBXgc@Q##UM zO(WF2GtI_ULv6LI%W~A^8|=lUNm}SSZZsLW<8%lEOT?H58frp%eADiz_+qT6x}}`Q z9hffN;vg}$6~a`!jfmVWvA6t4-4*eD*7ug^wJGEW%ZvpME6pR@K`PuI|A$ZEmLUv2 zHo6?_`tgiu&$~j{TL$W1E@i(XSMdsG*eU^3U_@7VfwP+KAHl&J=||@4XnudF24J|0 z&@UuGtWz8qN&iX^gIGx>W)+$t*QwwPjKPl~Cq?RNwBoAx7Ws#J3t7zpQ`h9J7-AE+ z!o6mg#~Wfnpug|cxVG=&jZLOum&$W44j1`GD@>WW+DznqAi8~oMH^10(7tK4HSVcS z>5c|Fo!~SdFpx0I3_%Qzc)h+`uK6mH1w$b@vr9!Uod)#eMXN7`=3jG{ZEB`X()x!- zl)J_n)3QN4Dr8FNDz^yy(qW}>1cMv)L%uRplY z%CDSpJs23P8ZOw*NsuE;C9_# zB572NMd<>Mo{X&pwQuy@0Jq+P!_QbmtYb@Sk~pM0{$@gT#To68ixkxLC}A+WZ7cY} zH>{%mTedW{YnA6_KIh-IVKS{V7?)BjE;GYAF~f+)V7Gl93D*3dJyc40whT4amHmF5 zJF=2>Hc@h%jLxnY5GrT_wq>H~p*NM$)Af}Q{k%tcF)As+ZpCeKj}I|Tev4oubng{t_jr8q%fnM>Pp4|N3;TuePS6{s|IK#s^@I!HTpjyk&yR6 z3cwBoAIym3#oxMMK-`3ex=uV6>fnr}{8hMb4#nR&kmcggO-+mRecH)8 z`=KAZlC)8zy2SqOjf2CRwM}da_5SZiUA1h3tC@LRt#X&V840nL+w)xbhbbx#A-}@t zxE7(PnK}vJ4}A)V)lJ1RuE1~#o>3J)K3XdFI!f;efHdkd$4K-TsfaALN(iX-#|!kG z{nS)i$pk>C@4_By269O@t|3r7PlSj+8}sjkqC_Bqa*}&-e)cl#?5V<9UUx*NeOD8$ zIlt)|+`*M-36&U(W551%*v;Q5$5k$<( zCpr46{}>8%6eTcM_?>4!1~^*O@Pa3=>O$*3*Ijq5C3Nk#L;RI;@%5fIuy zqe4;dWmO7C2U(!gYU^!&HQ$RS*`(G>Ev*TME+8LT_F!Eoif~uDSvBfk8K^YN02o(j z?hZsFY0+B1sU`HWQWBMhlpVQWIR~v6mpfd$g#3sa^Gfl8YgnP!2X}qW^@+>X^i%Yg zK$O%3&e-@{24Aa2yECZuC?zpKo*2%cmjn;uQG9|(FR6m-aq2!p901meqTD0<0Z|Sb$bpnn z%}+lh1Xq>5w{3i9FsL97A*So(2ASj9pp-;v%8Z^C~NrHTmUR`>A?$DCC~Poz2cTTEg6BL-BFkD~DN6pbklV8@w=yhN!(}A&F$on7<%WrsYKl~|a@^Lh1 zBH3$7=&BtSHhMAbRd=~NPO=-)hU);-fbtF}*%-cI(H5Qa>zYbtUy$y>M`hB{sOH_U zt-(Pt!qj?LgcJ?OF7@c5IbJ#?B42Vae}5U$X~TBSDAn=9tmIP^K~pj9~@Bj*)t9%)Xj&m)v_7 z{U#V^kj<*HeMV4-ThD`hP86BHzIq6ABtP${9DV0vv|aSWrR7GSp)TMy9{!rGWct@)`Dwt+UrQ?B`NtYMefTWuu+ z*1yATn1&*N$UdId#0rp%7Zb$j*V}!Kp&kp77|>gXqg4Jdh8b$cEe$uC{*0S^O+4ID zFc*opSO|Nl+cSTd)6kzXpLxECtegd10Ih$Ie~*RbD~a&GzBqVo4QDwS<8j`cME)Ny zJ~9C-1^6q^bz&9pfZ@Qqyl@G%#_lRP5uyT@Z!WmRYZ+cx@IGJe4XbY)``Sh&5HLh3 zbabQ;zyl4ADw6mU>ADWMs#ri4A3*O~TYJ4C^dUECZjUz@2p1GUZ zZFdf5`B|Q~)~T%IV_Gd$rPN3u=%`CZ`PE3tY7-LqtUO(VrcZARoka;m%njp#Q|Ye} zo_*Rnq|z5WL+dietG&A?Y1BaPTeicuI5g!AP7V5`q|3?+egq#d1R8 z-F7kTxEL8m+`+ynSo{&s%zlrD!x^6U4k-D-dM6}^bqR#qnVtm2Rq?J?_587neIv9G zsWfVT70?RNU^WhOA?;(|8^D}%PZ&T2pajth&J~QWPQ`#4mzYw8kTOpS5h#n#{~s+G zEA+*Dc*j$z9FO`9zkb@bhjWA8CY@#kmnIZ=w?rk(-jPHl6;+pmweW3+F?n&uerx)$ z-NSr%U^SAb-`*MakaEdZV5Cx?VwB?$%S2Lm$L6 zNsMQ2OD8ggI~_2D@6_lO>-T?}KG`d5N-Jl`P+E4kI)NMtJn!pNZwxJH@n5((Zr4&y z5aQ!EvE!{1r&piP*JL$>N;b5XZni#+wz5Am$TLr2>n+nkW$G(c zpdp~hzEVlpZt{w7^$yMtZ*|zJ#Medy(DDvenNT>srmzlOqR{y&edGRFO{~huDUU9S z?WD{mWpuC}n6*d9@s2|**bA+S+v-}}gjx>4)h^|ucpEb!}UP7F-LOoyN<0F{1 zg3p4@oDU$-Ij#m@R}sQEVZkp|>{<`C*MQ&Vr6Y*`NuqpaB7;Oy!ds%BLyYSqwl?TV zBSYcXCf91kx!aKqGa$THzAR+)L&m*epSle490~Ejw*DxLET?Kkb96M}5OVU*nur`o zVm(0%*=N9>cYlDS$Q$-PU76};Pwn=t+7feK45q;UFyTIdrSe2(O+g3QnNIDZz2unA5(9&m;&l$j$rTXJPAuR;oMtr(N7#< zI)Rzx!G+zCW}8kI2E2CG1I9Z)D6Z(4Lq5;E`0BgZbd*;asL0<$b`R_AJ7?5^46^ zArezz0;+nZ&;`FOvC42799<(kJ_F12k+;NRwArQD-Nz_Xl+{304$@+g6ZTW3H?-pk zy494uh(&MQS>#`nFCCnvT^xVs{o?!u<%*r?1qoCJ_Nnms$c`WpHUPxw$|GYSw=!>q zPHtCHJ1rWZgmSGJVRBBo>vw}LsFwkq4Jc=YDeVE3W#qIB#2C{Rg#?ElPT@~{ixtYF zCDGxtXyNJy;bRn(ue(g#Wmcy2V5xQE8+-Y3n-v;al<@i{{FY*xl3FdWj?@{6=M^ilHH6zGfA;u^?^iAS zlMY1|$D&nqF02#L1HpoQ&3kkW#*k-F4_0h>Oia)z!f)?Db4U&54tU!zK2M!E5ijVRETX@sNh~O-Vf$m*_y2tBo04Wopzs zcvYFLn*odQu2==S;kT8|=%X6y&pMEyN0;&>988WD%v-XEa^8zxARe;dDhmaq*gIE7 z3+i(yOPGjrFhz8r9+D910)VbiTdwZWl@n;FN*D6*z6DuFXMC>OL2nS=6E4`kYx1x| z>@>B?PT*+)hem?ib0-p+xwwDiQdiQH42UT|C4ebyS)N0`azkCGgndxDlJaAzt7^dc$!27Ss(o@qt~7N%F{@yv-dDHvJU zFIKxuV8sUuWW0A<`4jp#lKozNL){~m!ADfQjx{_W@5 zVnsB;gia!cH_s@_=bsBCL+NItsPC+Y{<klZ^RVGhtiKNp>W{v$lT(!(*y-d4y<4 zC|c2Mo{ur@@r0}5kF9(z{*WpsJ$iOl5;B@|(XE^01*}p{#I%Pu?J{kCNh0|~`^r6_ z(i4lL+|DB#B5-zXTLvS#e@ZP#URk_I9myknMGk3SeeSYI!FT+RP=3wM*8>4Nab6$G zPV=7%cuLm56eyH}8sY%Rfk%ah9sWrXW+P~g(KaIX1)Of9IvR7=dEinzcHdo{G0LTV zun!gtQv0xlO`Es-)}5gw@=B;T36=$ISQoTR}eS1jw49 zy6XMR%x!Er85rfVA>E8CA;H&va{+o0n-dAx^Q;zpB`p{0TWD}nC5Lq}C=Ok!cUl@q zX8y>CbyYG$n76M=ugf175ezSmB@~O7-HKaD<3 z)|Duf+n(F8xocqnz~5FYJwTh!oYT)nR0=l!_`#-X79SjoPOEW{&c$xMSw(cU`JF zErUImBhP+bL&Rnrvz!T9HMh6eUPXrazN6hlobbjSZxgu48Vo_2roqQDr94($+fju5ipFKdR^*Bvtu*+XoYfQ#l4&n!%qdZ1OR)lcB>7BR}r;a+4XI_#JShcA*#dwN1nvxZgjm9K>2M^%a`&ZkTXf8^xcm&*GQuU65|}q z0UFwCU3LGuRQ)d?R`9ma1wGc0`m3PIwWNZ<69zPf?j6jvnRGK^)VeD)WDC?Bt!e)0 zRwm^+s_I4BDE3ww&ZplK+s%G7uNq$ffGt%SobtG3O?hR6{_0FU^T9IfpExxb^+ARq z7+hi^R<;BdjbtcYfTNFhkjFc=TAr1#FIR$WwSFYw(uzyG_2xJ_eMp1PAPwMjSTlFd z1~(WCBa+7ng5}~-evil5nr;~uJ{d#iIw-xE@eOYJ`Lgarp#iU>$=Qp z{_8CnhbR@?X)+~>#ikwoj%@eq$XrHbeK=u(`?PdquNMD`|YI6)?7{A zql=D)Ah7&^u)U>&kd!DhrYBvjBWAq+i z{=WeCKez9xKNKzDB6jNF(-|t_OyX_Ktz$@b{9g!LvN;{=JjGX3A50u?qB_rY z!#HgELGo5Cu~ftD4AE**6_QSmo5#p5E+&Yd`Yb20G+mc%E70)G^r|Eo;Yse-+s({B zF^9oQCx;O`{m7rJXGS65NG#(%;)icwX7HzMVagX>goj_=tm4B3gZdQazi}q^z zj!#Y`@CSq>F~@?xHeS9hXdg= zo`M*A7973p^#*yji|!3)e5h%-T)BGd1j^{Hw+7_#S86{lhxd;$+ViHy%r)+7)(Gg` z&h}aiP0|%6Lcj=)?5s%^CJs=>ex*c3igNLxS}@;V>X>J8_0}A~Je=;dZ_E;(;0MHg zmWZ4n@U$+k7LLAhVVuBUJ}T`;%_;#rUV|6jsh|f=v(H^os{U<0#Kq`Bt<9_2U$Mx z=LQH9MxKEH`7MM-m+xk$+(Ul}nK*D>Htg#YQcw`79Y)9Z+ahl1Ac#b0oM|czc4t;5 zhx8s_yzy9UgfffVz!Y1ipK}5ZD$iTsU6~sVHqCgS{H)y3*#nKe3^ov*wHLg8 z2~pMmQ-30PkydOpigJ-i_0hD-Yk=*l(l-M(K$RHem2>y#C-*2iL$kbZUw^?l+GYpW#js)v#CL=g_GAzTi9~NcN})@uGm8u?l{VeFwTM^%x)qT z^O*@g>z&mD>npaoHdIEE`%`yq#RFz1nDx5gDItbunKiN zEYR!Cym9tlym=oClID!BkMmmxc4amtxORBd*(ZVTEOt7lGwY_fP=8CYJ517?45LU8 zgJl6j+Rex@R$v66N;R<~HY}p$NK!GD;2lAcYajB!wMHYz0woNP^4U^v55Q~d0D^}rK zH^S3PU+0CvYY=g4j@4fXVS{7}V?cz-Zc@zW*MPT18*~a~e?-Kd#mA1xa0xb68fS`;`yl2k!<{|o zg6KSCqh<^kC+jl=w%aG>jjc;<#B;hr3HKNcmD4Fu)U@Bx!O_-H2{9!Wl|)tHZ%K^6 zX|X6_sBr3u)Txr-W+kqbnx32}Ic@4g0Av1xQ0N|@`>JJLR;3xoewRs;d!LkPYa?Sr zRWj_WhoDHVU$dUM(FKIBtg|u>TJECe5r~_3eKIGcGhT*=%cSWf<_#V$2A^;IjrK=N z+8-xFy2RlL_?pI|JjG|-VBYSxU~4w5j4k!c(Vj?pfe)Vi<4=D zD0{a}wJvuEN-QzNt$FUjZylEIjt!*d5c4 z7nDk94D-fx6Vi)Wge0aFzwfrR}z9HXt z`0WRnE12Ze5*s7dfNBD>EXki|2n)zUrXE^EbIszfc9H-9mueDpAvP6TM9-4?2EmOC zZI7Ei1hCRFC75T>fF`UA%i2qydDtUR9^0Z&QDx^>m`=KOC&VzxiH ztiZr6X#tJ~c;7dFkCmE$!lfLFuGcQhUcHtoH&cjpoDTn^)E@SPZn|6kX@roP2gQJ5 z?Fj^#x#v9lB$+Q)_(NJvt|{u3W#E>OwtW0@GV5CE+!ydcGNFfqU)_KId;|%OyWXzpvHIYmR1-!#@ec_ z3nlmuVeuKRo(M4AuH9^j(c`S7{lq-QcEp3)mA_E{_^+EC1S1KKeFGw1jUM!(t38AV z@ymtA>7$F8JL;7kI`=2_I9lN-1={`*CI6xIfDNqdr}a9@g3Lj*wU=}exE0TD5C@T9 zgjC~`CJ-?AKogBIW;$J8aHMHE$ZSk0DgY*-qQYlTa2}WOI9`8mB}bZ@%v?8l9mwVe zHXB*Yjow0|2k(p0(;b^!-zDp}m`obVEyL$PV>;n!S8jFhPE`g;!vxolIAm{NN8@+{ zw)r4Y{>H&mq#=NbZ|P1eidB-26BKe9baQZs5*=yT&QW7H5pJ>r}e6-oBg zbG*Hwv>MRzbW|l;|JbQt6A6k%tVL6?MI)bj?T?F@j@;12F+N4{vj+OwD%A;5bu;>daIUFRy}r#ZxSbSPIxKd5Hi0R?PSfOnFW}(Df0t=l;qj;?T!zwU=^n!QPI=&8N!Cc>W?kg2> zyq018tT4M$I01_#H;2b$17**IahkPLWagJ;Rd^LJK04@X1BN5l&WvEyMSkZmubtn~ zSdJrzRws%e^2-%EVDuxlOac1cy7D|IRe@p$LiFU|=$_B6AO|H%2>bwVF)5!U-nB}p z4bRX75$mGhV$tR_?z=|WcO8hCC^6`#qrM`;Oqk)F(*9}BVg96q zRz_t{f4Se2zhZt73e4A$$B4_ki<2B*b*QT#2i}3$3&kFxo74n!0tT5U{ zKNuXR@b5#2h4uv7O`M6Y!}@k6HnfmywP>dV92?6|iEPG?VOw;qn&u z-TzyFhg5*gBBfEyJrahjVOcCV_-8O5sw`^ZeYf68ubFczA3eC#+S!m=HQ!|_4=r`B zIaj9l!DuL^2CTu%Q9Y-x)lS|36)AkMi_v70^vY#f`z|&idoME6du_vayHAukaQ-H4 zIMsG>8zU!9@!eUVsWoJ4Wve><49ilI_h*Y1PtGG&Go?P@M2&<$?9G;H5QPF9q}uL6 zK>nMg*wk`JsJzK9XqN!2Fx-ZFA!H4>qfv2OmUxJY(>^O{S5}e1*$SRHV9G@S`I>C*<=WUUDy~ zVmZQZZVaMGl5D{6F6&Rcvys8_(b+W&*VxoxNXu`mjOye^c2}4?^ys=Hn?3NWKn-aG z6VNM>0&YT%JSxsMKT&dr=K3yJ)q`W@y8NYyv~LJd^1$1q(>s`58Iku?iUE&B?O(-r z>l%uGv;drut%$tn=}x7=%HJt!yVK0%HZT;oNZsK6^Zz=dLge2tjOn{|4jPsZuT8x8 zP{Y_e0+a;UlROu?-v!iP(LF0Tn|`rovL%79b)ph)eBz!kd&iBQ@k>BP$D&(0wNxc^ z|BR8Ta~U`t$gQzjQ9;)mD8y%U1vkJ{Qb*&6ZZ_+%Opv1p#KMfZ|5?X-Uigm&DkHom zbBGq9HHl6jZbf~_;gnH%^IaU|Mj_1YcD6>^5P~9CsC6&3%)Jo-rV)XVo54BTUQ$W7 zy5;}7U#*?~eHGye4C5Y_2yK`TUqJ{5Lbgk~pabWaf*|BE_5|QLhV%3dd+(yBMTxGt z!Iylsyb|%k-{)v@Sevh+lKsH zRNIu=`!9@9u0|{BOEW$NP|ht3{a*x(iwD(LgSCT;mg0e4pmX70M_>ZJLN!$XMa|>S zJPEP&oP1^QK3J5v9AnF4VGmpOl6yShW!;ygLGX9!Yz&ylZkckvUNw1{L&2*IREMMhCZs4WK z^*@2S>OXugzF3*T8D;THKsuCUVs=nIdcAcRDZu1o6kdKWcMQHx`e6?YQG}J}e@roQz-)UzST)X#9(VK*4~Y!%V!T$DrqJ?fJ`8{ALV5YBzex!D>DP zpOkoKM#%0d54C^jT2U0KWNPXPe?H(MVq;43oJPRGh6uFr9hz_x-Aqu<*{NA@f<6(; z5IvR=U|6~!4V{qv!N)AT zi*Rh%-YGjeUyEtognEDhqz(j7Ea#6rwjrus*Zix!MYY}PHEhQ?0_IQ*0`P>i5td9Z z{46a(D^tzEP5xY<*soD;s;nl=@x&&)vTuKb5`6zuN4jUHD?h*N_Ey#H3XP^K0wA3{ z1UqY^Dv{S9WO&KVAt-inC9g1}e&P}m52188YM+aU^rom&_J(WYnGkv3(R?8L_KNBE z6p8Qlq70K;Tqd?CcSW&aL zC9`Qml9Eqex`B|v@_%{J<0}+O`e?7lbYuSyEw~6~0M3;FY*R;GNVY zCAS@=%aDd^p>xB<01Ci|py&$AZIlo(Jo~gu2MBmEE^Vc@IypKOuc{pXD-4A!-g4j% z8DSbP?>lVRt7ZAgPy1dbD_a4}k=tYnU$1AM^5~-hhmXsaqFG>6DdB55sH55ve?7pI zYE$%$Dr<+ejKD;B33DaWM0se5^r9^dkI0^5F-?2ios5zF-brKl_-1~^Wty;!C1X_9 zn|nv)%\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"dns.google\"\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG \ + routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508002001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508002001-Diff-Config.rsc new file mode 100644 index 0000000..0a33a73 --- /dev/null +++ b/MikroMaster/history/20260508/20260508002001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4294d4293 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4295a4295 +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4300d4299 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4301a4301 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4308d4307 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4309a4309 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0