From 5c01c4d176e8ac5c91d2afacdad71acbdc74b94e Mon Sep 17 00:00:00 2001 From: svxf Date: Fri, 15 Mar 2019 13:50:21 +0400 Subject: [PATCH] git reimport --- Pipfile | 11 ++ float_roots.pickle | Bin 0 -> 8159 bytes saved_roots_1000.pickle | Bin 0 -> 110201 bytes src/__pycache__/solver.cpython-37.pyc | Bin 0 -> 3194 bytes src/app.py | 171 ++++++++++++++++++++++++++ src/solver.py | 114 +++++++++++++++++ 6 files changed, 296 insertions(+) create mode 100644 Pipfile create mode 100644 float_roots.pickle create mode 100644 saved_roots_1000.pickle create mode 100644 src/__pycache__/solver.cpython-37.pyc create mode 100644 src/app.py create mode 100644 src/solver.py diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..b9ba84f --- /dev/null +++ b/Pipfile @@ -0,0 +1,11 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] + +[dev-packages] + +[requires] +python_version = "3.7" diff --git a/float_roots.pickle b/float_roots.pickle new file mode 100644 index 0000000000000000000000000000000000000000..d02155293dc4775b8056980c6c990170c939151d GIT binary patch literal 8159 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 Ha8>&sf87e+ literal 0 HcmV?d00001 diff --git a/saved_roots_1000.pickle b/saved_roots_1000.pickle new file mode 100644 index 0000000000000000000000000000000000000000..6d950c42b2ab2e5145dd2314ebf6b92eaaf8b1c9 GIT binary patch literal 110201 zcmZtP1=uV}kv)9e*~Q)6>F#R97v~}ig*&adR4_P&7w+yX&Mxlm?(XjH&cgEj;=TOy zd7tWUSA$b7(YZ{8g10_(fp>yCH1*TvR%j_t+nbhkUMwsF^!T=@=n zULJFj=GYgw`mt_w$zvVsSkuvPJfBRao7HAFUM@GA$#6HR;A**EPlk)dWVzaHM&org z+s=oZ>3lWYZC1PaWHW1ybL4dY{O3Qf{_|s+<95yQ>gM=ubAlTkU#GXcOKjK839tT( zyRL3iEG??hXfj`q7L(C@xR`Di)p|QytcJVMbUs?Fw&U$?v>a}y)5T;^jVAuN;d(n7 zRh!+aInj~Rr=?#U)10_#PEt1~ZJU$brq};&G9GWoyX|bg8Si%E)nYkVuXnrkbY5+j zv)z2TosO&RcsU#Gmh;7AJRQxqv%z*X8*iGEm;V2)YyQ1%PSG}}?DxN1t=7ZAZn+$6 zh78PxgXwTO-Hz5vuW345tVhGCzcF2|7Ngx_xEgQP)p$0`KWI*M14N>%r~3Sax?Udqw!#~ zX-p-Pq)+EX1iHTXU#c}{(j&0TwQbSx;anV zocD15moTVS^T}X2^ir#8SuKZieGGQP`D8cqw#LKttQyV7qv32l*;TvY##kOr2jk_| z>p$O-v*yqL$uZ6OyXFFQbHTQ`(BbZLB5Ve`ou4)}Oh&uuXj;t{+o7>P9j~hGU_6@a zy!6dtx0_bx%5c6JENA1%(i2zBh0D*sNY`AnZZ6g~7w`AKU96_t^=3Vrc>i19Zm^sA zkS5q@u=Cf|WU}+sw}a_m?L}?2yK1u9&Bp8LrWus}hg~zOo2qTb{r=~}YH55dhFzv-xzs9#}Zm>**}N%4X?POsdg%F<*Ljv(0+7oDMge!E|A~R-5J$N8i8U zbIGo`RNY*-E?yY%Y7`%>Nqxm+PAUsGG~T%@z9nFQ;bEV!B?Ahtt7!eDEBmkGC}2RO{7f zx-$0+(4o0I-_0iLsdqN@g}005isk)WscWuWH&b!=zC$fOlFJmV!hhT2J_K& zJF^T}X?BCzbWzPlb0c!LoGrbv)nGL934E7DbG7pOk95t|>*gA5bIpGL!|OZBzIAU$0h+ z#cViUjAqruB03!CAg91$waSmW-b|L&d}V2#O|4B9*yUuFe;HNHb<6v?Ue{c|Zf?*v zH|+O6T@R!De7KOeU7cl~rv#*^X8lA9COWPZxF>yU^OoH(gl2tHr9hQF%W% z?wXs_%}v|pX8rz$>xCD+m|Oj;i4|s;pVC9@c9Z3LII-W%rjxCYIv(Jkux^+jl9WfR&7_Nl`puR4+f+0(4^b! zMvLiSy7VgNa}!`_#%+hqtxNy6>6+Wt&F$Le_Wl0N)7fHE*}jat<$62WRwMtqiLlyk zC$pVRXEo2>7N1Rty@m+I=qwnAHe8;Z2Q{CLTZSK)&mQve`Gt{&R6qlX>MEa=2g=i-Cj5n(KUCin`7GMZvFm8_W}8V>P5u95H0E*)X1nI@N5AjSj%n`EHTSHW zd$rBI`~7?B5pQGbWq3tP`_+20m~Y1ulX);$=aOJ{*#Q<-hSh9nqZv;tYwdQ{+^78h z`*uxRH}`9s`}g}_c=pM3GPNU3=9BGkH?yCcPfJ_nbUYs~HXA>FGhWXP$&DGYo=r!S zsr`4;JfOV)2X@Va>gK_1^N@c36TjY1Tm$usZY%-afzFx(6y_tGj^YPj&9aTf_ z6whJ1p03w}mDOlyTNr!!>-DO6WcmG%>Y7K_&12f;vHkw}I+YnSpN}RyvcYyYJXqsr zyRi|^Dj#m^-3)kjIrnzv?%2z+jqaMqmEZsPu6aV;Jh5$_)bD>~HS;*i@~^YniIqupd==;+Er zOgAI$fu+>=HbSRXzVUQ0GrtFR>EUYXOXbQpTp6vi<{4#tKC^3{RX5LWo97(vf02$l z4`(=CPjkX7ccb058c*gH;PqsZKhw@^8R9$eRyHdugRfNat#?)P+#~17-SPX!G|%gr z|Einkx6KO<_nzL5cRCzS1~wR5mW9~J*)2Cd<+7SpoT3f4ZZtM3=Qc;9v#K^3FK`hj z%?r!hc~RHAxNct3HZSe>Z*w1yr@Qe+R57wb8{Ag=L1jHy`?AydW<6X@tf!OZn3rvb zo7vBNlKHTCS?T}3yXJrD=H+ekioO2ryL_iP*OsZ>c(7dZORDkKGpwhJ?RdJWre-tO zbTFT+_%Mdmk}tvee`V?aRbBJyx_M38y!LSa>3nYN?Z*Ci3`X%Oh;qKFWoE+pZAu@`@XJu zf8BhbZ9cfy|8g@O4SgC1>;emKvc?V8Wk&F9*gzM^VNR;Vn-hT)W0zsSw^ezdSI#BOovO~ zVzC|hsDmL#Wn9^KChOg5Ij>k*440ecYvuQUy=%TvH{WcVZ}t11FXy8TcYqth(-&i< zgS)X+ZpJIS*?eV5t$dtnY{xS2HxpEXA7u75-#+?%IVa!gn(x-l_uA(B{r*k=kqFm% zG9FrDs{=rfz=Q zHox2J9}zM#do~Ndsj?VzXQ#8}bg>x-12{Z*1}|`6QClyq7uL3|aIc!%9DiT>|3laO zv2OmHn`? z^S8SB-?sUCzyI-;U%T_KuI(6G?*~^S@aG$>SKig8vU0B0*1NfNPi(o_4mo1urDeDI zNBO@0*ERpF<5%NfdHHX6>y=~^v0($#c0nN>CeUey9MfhgLo z?W2p0g=#kxamR7=_x}vVaW%R)9<1Z|u#FSIzPaJpc%Lsu17CT@X%Il=*A|Iwwkzf> zt(FN7x%K^d@Re`AH6KUYRh&?N|8L&Ki8Q)6F|6Yxu#J<#zPSw<|tEc$~9w$9?XiBsyYJl&}@x;Qng<2101 z)53joOYu*&;2PjpwmTktWqK}Akh5)-f!un`;}bqF=3~P=QX0#ZKawlWU0Drbx+N%b}>uNe0P0igY`opSJp*W@(QtR{3 zWakaXIrLY|ol~QWbHO^!4cj;m?3*(%kSTazG{b6)K*XMmjUO)3+`?f2v>A=~jO*3V zeA|sMAqZ2mau?^-UzrH!)9B*-u#OABHZBPJ=0?ffZYSOCr^ zL!sI2cX*YVfwWmw-Y@2278lZAdAbX0ba4?_$3xsZv z_lwDTVw)0luJJaUGQrSbCYqa>4#T;BVG$SC-H~$~b@yVR(ZvwfF@kMW@UXRX{jlq^ z6%q=kzMU_P5ewB~VAgZrxoLydf!kVn!#w8EbUPM92!**eRgCrb|5nGCXml}!bHBINk1m-)gEP>Wv-nM9eIiHEZ7QFG%aEClWBw?2P|Ikzzpf+Nmzw+rWq0z-9 zVI7x(ZCo1enG=|E`q6}T&3rsta7PyN&2~9p-P-RBjs#&m^rUj_ z!bZv!^jFMXQKO41!8)!C+qeqsn-f}avapA%k!g;F#t7MSEdC-pWc~(mmV2K6+BMN- z={grQbHH|Kgz&frD+qeeoo2zouonZSW6N{5v%8v6js}^E}iJ)*atn3y3 zZ#rLyrnV?XB&wZ#SuNt4`YZF`S{hyaC#>Vzu#M}$J#%6MG-C#T6>qr0ub6ql^6_pl z*;KZK>2_jTGQb=2L+l>2p-p(XiCTZf+;ug&xE`$I`ml`~z&&%~e%vM}ZN69{d6OwM z=-0l_2&ZrQEwD;*3Va^hI4;_p+%0e&i@2fwin$wUba7)?$4y`xH-&w3(=~#BWQ!dl zXlK~Wbe#B`oLIX%z5x}GP75bziu05jz;XCNypy<@{>o6fxkeYafOXswws9-iHz&U3 z(eOj?=R90wgx~^?$fLqoEk=SpK9{MuOkP85WOLfBHgZi>EcI80%1Wb)HLPO;+t|Xs zIkAdvlk`us$UJ!joX2{+!WFOQgGDvLRw7z39f49Ty{2jysT|#Ze-p? zf92^KjV=P#aaY*JF|coLDB+ic{>IwLLqQ)%i=_)OU8aj|jO@mC3qEIsoT~gL;iTvY zbscxpU-2F8uF=IkU>)~_ZQKj?%_Y5q5;X15UZ~`)T+>9pmG@wCo3BKWd}&E$IBD*eh}aTdEjLJaGhw?DchBMx`YYxhsnNxwU>%Q!Z9E1Z zHka?x*P45<75_^>!r$`RkU$6`8{J}w*)?V`j`$(=EpR9>V?{zM9;>_JIy_FJi^sz{ zo&ei;B0Ov@-=!p<59Z6w40qlakH>~C(iQGvkp-ly9ZH8oW^Y|gH&SRz=`15=7EjV& z8JADi=;A4`j;F#lo(B8o@CWkhd`HfgJlAeKG~^^{23ZuJQLROEZD}gVc(o2%^Wi|w7I1F!O;`5jrb5Ey16+p;`i|?la1kp zWoR%SF2~5Y@gkn1zoSnl9(k@t7te!r{1FJxg2?0Je@mAQz+hE_Ee^d5Jo>Wk>nW4f4To;V&Tpq+cScn#cDFWj;($dbr3r$rD zZNe&O4>i!DS;1$iu+^yO%aC(zKN8~T!4uQ z8rqen7%5XF-lM8!eJ<8G^G?!v0tueJx=y+RSRWO%= z2)pkTStVhxi zCN(E%xfmdLMGGsw%V1+0=iDxBgw_Bdk}YsotqC^b)A}pl?lT%)d=}R6IoQVMVc(p` zu^Z$PJvJmNX>R-@HZwaH&t?Eb?|>J!$=PVhD+CNH1Jok+1^typ?28&*dBftl1nuq=0YW9}DcEEOXd2lEd{J&bSZuY9|2 zYjp7)SjTr^8{dO_=BBbaBYU@{j4x&g;DU#IcHF{nETt+so{%xvedt`04a5bS^lSUw z_w`rI{XnCOAHq6*1l#yA+%rdgg~OxbLe66ur0Q@ixlITUBs}aGoCoCz!GL|GV2?@q9V0NHG*sKG0Nr?D`x|!21bdc zCii!=_?T!&YJYA;jo<07OoZQSbnypR#~)!Ee}a8;3)vM5qiuX^?W|_J2)jBiBdGxH zixni9)wT6fpn$`uh?|k{(rXm|NTu^tsv(CdUC$92&$x;c=&yXc6KZsEB3Q?XVH+ob zeREPVt6VQeToeOOFfc}<5Q=Wrcrrv4_I4&IG#p7GBQ%AzGakF>WfCXVUwOKdX>@UN zSjWG?HvS#<%`H>JNlZBx{NtZVZGGsY~ze@&m6Bxs+T0sVkMV5Fx%zBr2##n6gwY9T1S>-zT`qI zQ=GY3(dppJ;!OH0=FY6q#aUn-XN7H?4ff4RTk?QLy28*bRtrl9uhwJ`oe!*&Jo=P% z%to8d)PGS(8J$bj&KGfZ{grQb4vj9(3F|l)Y~$RpZw>`5fozMx^ojE^dMmSVLc+>) zE@2YU5+b$Rqv+@RXT`|F_~ z&Ps`P-q=^k%7(~dG6HWB!y*G9Q8SU)iwo+nn7fch7Z-+gTm-gpQMhmJAk?9{;M`4Y zX;fGn*%|YK12&XVLSf-=gz1^j&D;n_8Y!_}#KrVi%w1fgivg@-2-_IJzB#TBVStfg zc8hTaQ}cpHG>{hMBUnLg=!-e==tM?;=MR&}qJ5L#h)REDnvXTQn7}%wu#FkqGiRmr z!bV$J|IunVKK(#rQ%mg>oppOxQEW)fKT|owHJM&zK=@EN8Bx&GDTv~r+WL`$2i_5|~ zE(hEA57;-CLO)NJDY+C-T6$NQ2l*uQb_z>}^y$VY`WDkc6Je-|$3!f{`V z(Zv;E9an;FTp9MwjW)ItBa-rGY6&sl$BQk;k2^+~wWH+mhEv|h#k33%+*5mDaz?vN zTt$E7>8`5L#noUPM_?OQhkbKotm(#7(M~5knnyQshh^k(^ zEKjqDYv`{$-8D73xE8GAKVci!hI{6uNDyHhARddIj`n3}mDyoycIbCW-5~;mnl7b~ zG_E@fXy)HAB5@u46?3&l7uSV#To1N!eb_gLTBpd`VNqzxXl-~Tsi&2PRG6?D%X;B9 zaGE%NvhW>M7=|aqzwIV&pue(a-cX~98^Jnm4BNN~?3=?7C1;Zgeqr)lWK&_KOfK_- zJ_f^LJu$B{VYjU|_FG;H&O=TyZmPfXbT`xJ;^wf9TfjDM3H#=FvT`73r{oeiKvDz; z(gRYjl`aXJcGzOkP_@lXpJY(#g0sY-id*TgtSU>5E>^IPHEd%8`{u-u8TxYy?4m2- z>XtTWoAnmRSwqLhpmXje$IQ$ej^&{2NW7_GZ1q=0=1!xFTf;hT1KYSQ?3-H;<+Ko* zJK0qs-i`o^?tIEomV-1(3AKnbP&vd%1SRH-L80oHLx*v6e; z-(1CW6_OIf$mjCc2e~~YAF$=0uS|HXrWJZbYK1YHaS-hq_CRZB+*yC+>F%P@MFZ;y z*v4I9-yEtUt%Mi+ZY`nwA zSrRPNYutN0SbxRbLo~YRU>y&IZ9EM2&GEUmXmmO&l3t!GkvpJPNk)XxKMbNuqIiMC3?O2|?mnc|xTD1VNYx z;eeIIY~yj752?1XE2uKr581!vEO=quuo?1cU?ewlTJaB>$<)L(g-Ptxe($*_*6z&4%=`{qPah?UipaDTGS ziX7Y~v6h^R#}yuvtWPOBSWVV5Q&JWb)Dj;lo~FO@GM}!|#WP?X&xCC}3---b1ObY3 z%sdJ}o`34P1VU2uDrzu%EBsi6e8S6=3GG`e^$tmApGjsJpu zbA*Q+Xvqo@k5njCd5ZhzHqn_>5L(I_fCt213YyW-<{@@Rbry| zsYVwsgLV8jY~z1m-<-;hd{c`p$-Lye)KxNa6eQ&JoKCTwP*Q;8n+cnT3KKRqeVRf~ z_j3J}r+bA)7q5hMyb8AQYS=e7l`P=zryOx%#aPL`a3%O6E9*^aS}i)HfT&X&xgsaIk46{og>}3Sw()-0H%CpOXixH3S5#9T zbcVh(?{e2kml;2{9+?PPnzY9LW8KAfsqKgl=&wB82Q|9*5Uk_Fu#JzvzPVH}j0lsZ zL}=@{CpKI1O&f!Cc!qEnTXEIQI2&V54b`HyD1|Gt_^AGhYxFUVEBdI580{S-UCTl55Go^p2y{_=HhK|4E>3A8_U3^M^<>@}H(Zy$A9iN45 zd=B=_DR$V26*n|}UJ>cajB?!Dm2OhJs#pifz->a^%9nHfu>6)GVg#Jn=k-?>u`g(J z@kLn2mtY%ThJAC}3S&w~Smg?3-6GuL;HsmO;j+2YLrlf$QefDR1D7moZ4QRbB)+1* z@^oL-=;CXzj<3Tuz5)B@X3{={)OyIWRh4Cu1*W`h)@VdXk>L9e58Ku^^@*hqxwOQs zc7$*0uZ+xZX>{>zSjTr@8{dU{=6L@k$;4kaGOMN>IoTOvKrqYKw6vseY2V3LDnw8# zY|Lg_Y7^hnUorQ6jV^uw>-ZsT<43S>ZaY^sE&k?jl48-S8V5;iAk}TBxlu^|T2iob z*a(SiLx!%lBD9Jh>#w}bpJ;UPQ&`8(U>iS&eRD)AWSw%#+=NsV59m|)t)>A2ZkM#N zK#0--*=++>&295Xd73Dj_=Wz;MEIpf7r%ma{2I3L8`w9Ok1$PV-E8N3*&7ssk)jDA zanMtxECjH!co=ELP=3@x&}TCu4T|6DuRPuFG`jdbtm6-`jX%P^Im%UD4mp^bwp95e z*iuAc|6@$DE;XoLG3ol2CvQTk;lbmOJMH36`YRLR&l+9)1=jIb*v8*r-yBt^{5am6 zpOOo)n-2I*=;@t@^CN-r$Q%GB@<{CaX!CAD%6@xS^jPxp6?F8%@Q_&?ajKVjb- z4{s+n-CBIfjnGmPyPJ4c#2^e=D27PMtxyHco^qBM<)*KT517TVj(f=5u{F9l4y@z2 zu#MxvzPTCAh#gNAOsbZWCYq}r%z{6TLT)zxbZzNg&WIK*%r+%^tz2HUi{tCBOoS6? zba6sh$BAGYCx(4;Q zDyaYS=d?1;~nsKi5R5Yg!^Gpg`^+&#`9%HLO2O`TE% z{tXv*7pKu*d6}ox=;Cy+j?=?7&H(%7RGP~(3H7Np=JKjm7}5DWtHQmqOu%H}KQ5Ky zM0{so$Z{Z}Mmnl9>aR?MGih{jW?08rU>j$JeRGDxWJgyg=H+dXl!(?Tw-hMg zQDk|E%&8f@^%ObsbV}6@(ZxAn9p{8?oD1%mbLIfGEB4;bC$J%0q%Y7p zy|CdiStq1Yv4UFqlLyu|D~S_idml3+aA4B@xCxPbo3G{2xm7Z-wcTo|@-5qQ{KYJcRZ zQzbcb8ib4lpG$s=r%t@0M300+sx(#EatlZZ^|0Q1)^Qo5aZ%kJIalhaetb+^Orwj7 z!#W1AjUha2Eww+04YiOy7h!>9p_&pYXM;sjk1~mo z{*I0ma+OM>i!rQY0^69vzB$SYLP^I{&`R;v(}OqDvp5`kWvr5Kk<62zc?nijP70L* z$9+WcJ=5ROPe)-f*XUva>$n7L768_RXnjqE}G?WF6b8dzsVOpoJt}_)Uy+!Oh zTFc8*ax6pRotl3Ni9DmYJOe*(Tms5GxU&9=xvOY&aaCBy)nFS(VBegb%lAU7$S+B< zQh?$WkT*708$u3SliJ6^5}~COOjB}g@jTYExVrwz%e;n07uSS!Tno1GpK#BdDpVgr zpkdqOYjRqo4XvSe8|P4{qZS)jzhw?2N=-sqr=e6Z-F{qKf5qH&G`gr^9oL0zTo3lm zc|8Uk4FI`=h|xgja-~>G9$u^`XHj{ZR&n~p+zs;_h0Rv^3jN~s^;bsb4K%vAA*|y@ zu#FqTzB!8oUnixy)@6!G>APexaQSvz$umo)NRqf|M^reoeCP6-=Y5PfaTEQOr@N^} z7dL}-+#I%X3)nZO@J`$$k(MPStVU}uDwW*+wbB?Gr7V+=OORSYNP@*u0Z&1hF zQh!IznX3vh&aE`MSi(A1u#GkBn?o+D@j+gwbEi<`vQw?7YNkPxqf^*7AYCW^|hj}O45M{4%xB0s$7UW>90K9oi)0+3#_AoZ3OI_qkQI*SSV~@C}-WOVxpBz*eOySr!T}^^;e$m7>zFO2J5&xY~voVZ%%lVTbmLvERaR?M`)PD>e^|!@U>gsF zd*);&s9jRMC_uHPiMnWnIq$scMgBQ0@5Tr*u`LOhRnBxucNA1TNPorLgEhK%2&|)n zZ9Ek2o1=J`j8P7v4*rS<;)!vPRJ$UGJ&^iZ<#9<+Nm~xAXB!T;s_9icOn=4P!!^2i z1gztcu#HE-zBzA=74^*YtMbTR6pD)9x1fU|48s7}!&R6lk8wZ|J&VGKxj;|CJ|3;V zGE^R;(Zyq79gl-;JRbJV*~FJlUgG_z$eBBBgy$|{hLp0mWl@moDwI{Kf-<+f;s9b; zkl$#PC+M#{-4ivscoMAR$*_&5z`i+oz@5z2E(J|oAamUau|uq#Pvi-SmeX-CK=`+L z{)1Q=7cQ}A&3vl<%F{hfql>4*I-UXBcqZ(dTPW;JCKiuDisFfs0jUPUEK+sQT5}4K zV@`3(Qy!EtTLqAD+PL9o>90)lXKQrv99YM5VH?kbd*-AL{8}!9!^;HYbX3?QWU48K zY(o@@9{Cqi=xXYd^~*BSJVR*~|E0fT?)e&Bya3kmLfFQOVBg%(sU|WOj^?49%?c`8 z8QzK%nwRI?9D+Q#XYP>wB1=&TK?SZP_IUjl>#t1nmuPhHQdq~!U>pAp`{o3SiuaUC z*;Ch&7IHxrvV**+#Rdz{QA%yQ)c~=oiqVEeVUb~b{Ez<1)4g1yi&wxpUJ2WH72GrD zcno8X<4Pr*qB^Buh!(lXthnIG(5{=|OVP5G%)3zZ&u!s|R`F{66?3oA=;F1oj@Q99 zUJv``XkjQsQY>Q6MvUpMy&@^-woHX(ad2&%wzD&`U#T311X^l7NuZ+w$YIN}? zSjU@T8*hPqbM_OXBz0+|2Vx;d%ZUDyEv5_=F5n&gxu`Br5~2^tG6Cs(f}vf!Re$B% zy-lNwx5GN#0o!;d?3+`Sg-OYh09*rkcb>~dFv(w*WD;Z1V|#map)^zyLwS}C_hyGL zuHs$#D^K@sjV|5;>v%70<9)DiZk*X-$8lk_vufA$62oCORlS+lG@#rP@m_8SJO_GI z!9wb0q+sLy`YWr-2Q<3)AgtpXo_YpoZE2w4-c zWroT4Bk$dAY~`l8`-uL^(|uH-Fg=DwoQ#aCe+UxRIY9qyTPw2L50T>zKB zS(9Q8o&kk{f*3oYzuM%udRy$NLUB?gewxpSK#gzcubBI$Mi<|Lb$lDP@g3MVCnKM7 z_%vljlr$j9CjGXr(H1&HMCv}}KvI}gCaK!Na}HIG4F|LMuKvor`<_M@--mVl0JiZ% z*f+-u%5&d1SGhdR(a*`Yvx7`p5f|EL*LDe&LFS}Y%({)?kr9$u{*nI5)BRYZi=V(c zehS<88QeE#C#9_*tX3g1x4TkH?(9k?U)D8dQ3Pi}xMfQhkN77sAgWyE!}z)Win(8C zbn#1A$FE=;zlMEtd3b^upyD(&KU@-Ad)B2%?mBz{>#fF+4@zi(kf5dCaSYXL69R7H zH~K3}^lvq~_#Ld{_ppsWz&&#Y3J!oK*_j-fn{%25?#K>6moH#YtU!T^BgVRs7)eKE z{>vsyjPpnR6?1>m=;F_?j=#V*{tEZZVSpTiiH}m>VKp-rpAj`{radtyB`&tk`IYZ*0~c(Sa5|mCU>k z%hQ$plHJQAPn0Ne#FTJW@lX8~bH_SfnmabE<2bO5SjWj=8z+Z-bHo!~R*E7; za%!1om{PJ7SzUpj#7J)7ggM+!uOQ=E0j`kUaZ9WCH~p1q{_h%HoC4NyO4!D!VBZ{B zw9{g;xLeXJE9I36vq0C%Sr9Adahc9FL3*RWF#x7|`cPcAVVqijWdk~mMi-}rb({{i zaeCM{N5rQxF$q2#kz+WP{s2E}zRSa?{qaIQurn6u;Z&G&p@_W3GZEn|&Y-{YGS8^d z#hG9oXNGN@1@47{}144`Bp@PPDZ`$vFveCEnuXS+RUA+&(FQ z?4Bq(PvBLjGmG=zt)i)wUnF<8gNVH*Q@*jiG{`h z(Zy9@9an{ITn+ZkCCzLf#hi1rl;&_Nkq}AUDg*aA1*>vGY7b}y?SJ&v`8nBLQ!Zxl2_suy)R+dbPi5y3XMII%bl`$EfsO1%k;Bje)xoPrvxH@Zs z)rJBu{!@R&+_g2jxDKqNhHYFI_RXP9Gh(yXDA5-S<-v#t1y=lqJcu@_FO;M^dG0+N+F@f0V7@8SR{ug}wQ z@}Q9{@m2AwuphlSMJlBOnAK}>3;mU$a!ZXaZUyUD!ZucL-yAQuxAJPIe~8pKts^;gVoG`iTrI(D#)Tf@FN!JH+PLGrln#FDOSLWSqHM+PRtmF2ujXS`@=5jwEF(A?s z(CC2}%Lha?8=Z#xP9oIurT|oAi+NURC`T_FiqNr!#~pQ7_JccVba7``$6a6>4Loe^ zV1*_szyYVTN*(Mhg4}zuf)OWcR3N!C*(~bA(hbx?aQ8fZYG8K}`YZ49t{Pn&1M9dO zY~${*Z%#0y&_;P8T}mpEML3vy>3CgYSF-HSqMRvi!=HyDAQK*W1*Y9S^jD_cJvF+x z7p&vnu#Nk`!{+i`qOq|VSh&<~acFtVCYiH!bL7j%2)uAu$z@`)h_LOe`9+Crk#I7ydtTQ1Ys7dkb^oM(XOXl#yJv}RB~6r zoD?^vSZ;kJ>zi4sc&Pr$r+b)27Y~PZJOZ}yNVsP%c~d;?#D}p|qxA(O4zm{VsVq+E zfivCnbS%nt(f|aHH%l}_NfVFKUorP+jV>Mo>v$||<8g4`oMfD7%_SE`+4MXkCz30+ z%_6ug`nF?up9dLORSFIW*jh%ld*&?lG_=xXsTY>y!PCffs&#Tu8cSTVTq0$q2muUNs(PV$9-%gj7wNBN*eemHx`py;`G-*T6bn3)^@d?3+_Nt{t^4SV#eH^7+sV>B~s7}R};!G`{ z3(mWUd_zYy+QjSiSBAJK+%t#UMz`f*O@xqYcpa;o)6j&# zMxh)8dsfJ-!X`uDgo-=;9!alNyivt zW+rf#vU#hBieDl_)s12=i?_=`a3O{bbMMn%`F8Ku=;8ygjt{~%J_P&bCM2{t91BU_ zw}Guv$Ctxj5Qj_6BXPJda*|wn5>QK~1vGg`=fK5>^;e$mBN|J2nC2W%X)hergVwy)+h8=%zaX$i%-EiJ`LOW z4D6dDEi;R;3FvnIfc(HBj~KCH`hYfGzha(Br`+rm{>< zSjQJ&8()NdbIJZHb6Yw;C`mrsw3F+7HJ&a1+@R#&$x@i^NF8)^)(1?CPiN=Gm-JVj z?#miodsSwu0|K%gLQl#w($eFXATLLXMASp}h(s4$@ zPpl>BjVhZoIOB){1hHGmyVby1Cf`f4W^dRo^C~yE_9F#%GtnF z1dv*Ow=vN~*p4{7-ldH1EPkfD;?(|Jql;g_I(`Y;_!T^CEgi9g(;JQPyjVuX#sSwM zL!Qh#fvZ1qq0m7&fLyoy55IxX(Aj&;#;^5P9_}|9UHlf-@jKYY?_uAZvKuF78F^_f zkBc|k5x2M%PJ?-FkPt$6R>3<$&{!hlu#~CGi9hJCjFdlWbnz!x$Dd&ve}Vhvvcw@1 zK3TVgz!$M9^)~j&%$@aX1yPPb^*YT%1bAj*FvnQ%#U}Ar{S|Y6)9B)VVI6;mZTti7 znd3~F+m=8v7S3KG0i&0tc6n430cPs^oSE%(MiM*o-^f9=X02iTpZaTpe z<7sqpd|1Z`U>hfdeRDkXEVW2cl!a23kW49S;_RXmoS&;=h4HJu*!gYxrDPvk!OR*bE z=SM;^2~! z%z{{1^4uDGg#z&O;Iq)fB|O+wuhq&HXVG7Iy0dC@aW+`T*edD?=ZN5Fui%yX11p;Q|VQO2uN{Wy>Z1#N!giMgQ8YQ*YuGGd~? zGE}A-UCdw|bJ)fL_RTrDMbw&Jw4yrRv{D?$d1rAB$&o~xLRTEB^_ixT=aM%K*Z?`X zj>o-({>sa|q(&E)f^}RPws9HQH%F={XYTY0v6kT9@xBxt3ht=-#NX6?=}`-29aVss z$fLKWdD3_u02`OpUwOLAX>{=)u#U^aHm(2bXVco${D z$C74}JC~mnp(v=r-Amy)ZB_j0x;#&GE=KfQoi)+I=t^?bs;bC(J z@6r>gb`XVNG&4n~8Vq47k4K<_i*Sq+(nc+)0b)p!RZ$QV7>ksztGn_pucy()^SPqHFY9UZ+_e z?#3Ej+yvHfQ`pAMVBZ|Ffm#>ooeMC{HN{dMbSzUxmSd5&)!WD=^KABh4cD0;%9kSG zkDKeSOoLl!ba6{q$E{!+OL*Aa!M#NE6nRd*tW}f(f@C@; zIZ5X><=N~;XRP#g)66JcJQ#Ve3fK-c^!gGjFrhQ#y^mkLE7Xc zjgA#Z$~ktFBd=7Bc98>&EOv-N%2aNxzw&Ii(dgo~u#VfoHf|65=G02^8wh}9C{kCO z%2UE?;t7?Ym_PBiZB7wKhM44^%JYWO47m%&9rRa7=sRk3aVJ>Eonaeyfrrf<49h&F zi&C8m$cb-0|hIHR>hTh#%kPMe`Wo;hej9o zgmv5twsCLRH>XfJrD3E)k^=^%p49HUFNw}Vwl}MZ_3n41l*{f*WQbbgrdTfTqrWl> z?yJ#73+uQaY~%j$u(^DfHqg8W4nvx`Nc^E>kSCEh#*!sBi;J@o3#8GxZooBKIQNx* zDITD^qgQ7A=$Lq*Mi&o)bvzih@ep{}+QGZTv~j_StUZM7(@}wWN12jA%qaSlCNi^n z?(X7E5D?~h6N<=WovY~dSKj4AHM)2htmEOZjYq(~Ilakf(E?Kv2}xB~xWp{0?j#D3 zqq=qeyFw}%HdT{(+ma(0@YCed@ksrZY49kGE*=f*cnoagv9ND0nNsKUp+Qrol_xS` zVtuQ;DUIIFG5h{DwWdNK6`Ha?=Kq0HZ(u%7e`OjxUZaaAz&f4?+jtV}n{#yHQx4kqDKT@SiK>D9Cj6^3GI+AM{q$FrKWx@-m;I(Zy3?9Z!R8JRSDU zAq@{s4W@K3I5D<)+#OaxsE8nvvR3*jQ86S2N`fvgeRY7lGi)Tbo}s_;bkEf2;#shc zXTvt01N-KLp{jl=!@+?t>W?kEw$YT-y6-4AT2CjlEuUe(6EEj&KK4F8Xcf=ZUzrEb z)9B*AU>(ngZM*>X&7m&2UFZ_zc2YvJ=hkXp%q}~j|KV6VxX=gYOy{XdLUrD{jFVcU z7wWIP%ok~N@nTrVOJEx>h5P250WaeybfPB8T!9g(_ELVyu_~f{UW5gcn8M+jG8v+C zGcWHX8OF=>SIqslMi>7B>v%bA;}x)P&XS*ZT=A}i-*VwtOKdGgnx({wnS3xYt3o9E zMqW(C{jygH63|7j)L(g-uhQt^)v%7&z&2hB_sq%gIQGxsXKpBxHs-UNSSro2Qnn%w zEhv^<$UP9*&pSf?;oz+V@jCq#bFbIv;tjBlH^MgF1pDTEAyFEJrlM}k8=76NU~9?R zH-Wf>p@=W*jGX*Nszs%fCpKHd@({~6>#t1nw`g?nR#?Z|U>k3TeRGZvliDR1&nR59 zkBB}Hl;Rc0(IkJAUKl5t2*ngBytC1cT*IQ=INqVZ^6lQK(Z#!99q)#1ya(=^+uFl3 z&0<01qtoEaP}?TN1&#s{XXP<|@}H)l@9AO&RHN9(NdfU*{S|ZX)9B*;u#OMFHa-aZ z=1>+Xwo~(xvI!S2N`fjf&HIn@@-8v7PwRk~RbG6G1d&>1OWtN&#fS7)zTJm4y7&mJ z=0zhdqa z8eM!6*6}IW#;0N5oZZ_+Kh!4(AVDG@foEhk2vG7m(ezCa0mdS?9YdC{97TYuRvz;i z{gs#bS&c3}2kZDeY~u^CZw?nrCqY+X5yU)MfyLzFS0@B;&WY2Uf1konl>-N9Ws2<7 zt62yZ@kRZWr~8sd7hi^Td=1$>~`9M55xnLFC>p*!4l)V z8leFBJRUmBR%DqdERxr;5y@ZD6~+(rSEl(7HM;l_tmDV9ji11Ma{?`AoaF5s2XV1j zLAjQLDpOp;auwg`n=Kh<9`_cM(yeh%yS1#IJ&uy4+9mS82e zaRZ9jI4_BHYk-fW%FZ)j!c%U*3Bxz!JtzVMr)YqKBrD0AH5a%*6l2&pAth0J*0-bQ_$+o_+^MfD*xJPJ^;d?%zB!AZ4MFLyjFaJlNIy{7aM8Bc~*%7?N$@pFZ> z$Xw)V=7$z>Lj9F*cOnfJ-a!}MK^NY^zBz~PI)u|x$nEB3C#eVZ2e>{PQ zqVjBxc=SsBMOtCv!aMzymw9px7v4b^-a!}M!M-_}c0m^D2p&f{C@GaUB{68@L03At z)%7{#DS6;ko=`|>@AcPb4R-oZLf16_Cr_sogyoy?K>PJvc>N8T3Y zQo2HR!1R;yVD|K*5h+}D*J@yCWzKhTI{g)Mr`K@d9dzLxbm1NBo3s84|C3C2mk_C} zGD4K1)50CH=kN`6Vl$({g{Jl&njex^@t6_nDvvm`{>sZdi-rsDpbPJy3-92*Ipl%~ z;7&B>#25fLXEH&D-TA+i*E!Bo=>bPRDG$;(zL|Wz3d&WSLx08GIW=5(2kSUDbm1NB zo0EO_k{s_KCY3<2rMm|cGtKp)|B-%_&J!71SFyR2B-T%#)Ay7gIj{c8%RHZk3-6!{ z@1P6sVBZ|B!5MQjQzCt_ITsU$A!E#6qE}B%iS(99k|!Su0`r{C%q^2kuHr)aD%m2q+X zm1#cEaN`}UV+7rJ2lvep?D9MunQ7f1GoXyN-)6c@g^cVEoq%;RKdW+H8*j?MRbI*F z#aMsE+(g5Tcd(8bbmJZDn@eJdZX^i+LT871r4Q-*O(~A1d7hWB&osC4pg7f(WyXyk zXl|}zp}#UzE}`MZJLtwc=*BzPH>c*tAvA7#bv6?B9NWOrbbJE^mCcj`JCr$-yRfNR zyolPp`}C%KSkZzH7;wEuWCkph=J zuTl1_oG)G&|0M4zQG#K6B9Mry>aTpet7*9L4!ZFUy73O~n=`^Cn~1kb7~P(sj@Q9BB%*EVnLi{Z<)IvTM3;`F>84!SB1UL+UdRQ(o~e`77pxwS`8fik<$B zKAjV4Zmr?QJLtwc=*ByE*j)09;%sgZk3}r*cxFSj3EX`vNvaY{)_gsyhiyXdbxT%+N_JLtkY=)ya=Z%)0g^1g#)oMXz6&d$}cCE0-} z$@BB25ESE#vx*kA@5HpbPJy3-4gx9D0M#BSla4#r&JdFc$^o!4=QZU-@*;)o|k-bmJX#;~m^HM`$M&z|C;au>rZ& z5KGy$v#LI$1_id*cWGp!g>NgcRuN>nPvQmoE9PFP;l?{y$BUsG?_l4YGk4wfZGwqD z4z#ppw{x%_nM zin8>X)1MXOSax$y=&BA=u?PxP+?XY6D9vP|ojl?pZG{NCc!lncUTdks@0A)Zyn`;h zgD$*-hppwOOSwp%P+_X&Q6o0BJlViDKmmbqr{+U_2{7sT?B^C9IVg;0R^!BL^;aJ5 zbs8?bgD$*-F1&+%bCf93FxD=c0_8P&2wh~^L_TvfrJu-`ygOo_Jd%b8m8gSfMuxMC zH|ei@x;JaM@DA4TR_MYzxMxn4Vjkk-ReE1pG{|w!^ErukRS`N-EDs>b!xcE2PM^Xz zsIhgnHzNA&`YYz%q2a?)BhoRo7D`DQsosa*{v9r}bCNeMZBDcd(AnK^NY^eRGy%b!d5O z5;u#8myerTHznuBph-Q;UF)pAlFd_jN3+!r-mcn9nFGIZe`?3+vd zLNcVz^>svMp07`8F80p4FsCc$`YG~5H|FhBWL6?)yRB%G#`UZED^BLuG+cNGU3dpw zcnACDoGxt3G2%J4m=ro)Cn?ZF`=-9%!NDd@QjxOE8}ixZ)>>l z4!ZCTy6_J6&E*MVe4)Hu*xE#N=F8A`>o^@;bvY@w^#ZcC4_82>mY1M#ETomcufOti zKhSXD9jxO=(1mxfZ!U}CCG0pNyl3~%sRK%u*!j?u-=rM&Zl{nSa?Nv|3vbuNO!=L? z{3rS=-|nXxF1&*-yn`;hgMD)-ZC)f<3Rc*5gWdOB^csj2^>;{F^P87s!Yk#?qZl|v zDYKO}k6-Gqyv$!|xbP0T@D9504jwjl;IXS|Qou?t?0`cD#iC^qrWx;VoQ36xJH`8w zrFo>dGXW&h@HnVx11El`yW+9`Uc-HN(0zB%eRuG%wcHTUH)fTSYV(>7A)R9nB$f|W z7Vp-X3W{Oe&nTWY?IpeVDr%t!T1dVBtiST<{-WW&JLtYU=)ODHH>VzqT9(`B?O1#H zUJ_RV4hj$col8&E`^j&SO`#`zR?D;6Ek_gBfBvq&@-F|O;l4ZQzB}l?yA%HZnRBRa z9v^}C77<7dENo@gPy~51Y@2c%0kaO|< zY4uk|=IJ!tcL&{f2i#ST&P|H`66}E!heN zRJ@}3hjAwTl||*u8t%J;?z@BTyMz1Yluq!~k+R4=b^1giNB|^zX6NyHmQz;+r~(i_ zi?|St3Z9(YCj2?O{))MCXt?hV)^RTAzB|}ACxRmdM#)IK*bJP!CS|OG)>*4uJVlIo zizbiBnquJca&t#?YM`(y&ZEEbGS92wzB}l?JLtYU*f(bz$iicFDON10LN{1?rn&Pz zq%WKjAZ$-z75~}K$oqP{Tc_v=8CG#Y{gt6|Ar1H4LHFH3_uaw1x#Z1LO6!Sy539B0 zlf{0M0gt(5M@p%kxK@IhZXVAem+rv8EaknJ{>sa|xQ6@gU>!r~zB{;YPSu0(+ks_@ z=!GKGDr=cDaU;?L|7}&yqu!_{ZQ$6=twC%fwh2b1zhZ8z;l4Xq#}vBn4(^-FOE|=e z!XS5C4b@u+hHbIQf??X_4>(HJIId@2acqi{bMWt-H81gVOvH+>x{J%}?#TK6 zb>_$wG+cKFU3UjvcLxt!JJ{|>=&a3-PF5S~a1(Vz9xJa+as+@?U$#OnnS9fZ?t|r- z2PRA&m_3ZE=&#I!t7^FJ4!Z6Ry6z74%{diKIBFi~ne5IgrR>OB;@uJ1*}742vh#B3 zbekElGnJcy14`l=`YWIAni{UVgRZ-SuDgSMbLK9Mvx9y}Cl;wPNa`CemBWT}o97jo z^EN+p2OWfeI#ptM(29dux;t3MjiKxA;J!IBOw)jBKD|s6&cUey z9sXwCT|*{G+~gG0JS&>^HmjKFwdQ%2S=>~A#oWy_Tz3aucL!Z}2lvdW4Wxcf?TJK% z!(;eiQoB@y2qZdo^HBsL?#UR-yw8&u5FIFrDsH8}Vs5G7x;t3M8oKTd?wfOd3QsFZ zZN4}+&+#ylPCOrEF>$`+FZGWEC^FM|#_9yro1k`G2)ET=F}Krj-5qq@9dz9t?3*Kq zv9-u|46+UrvEXzeMfv{B4Db?h>V&6`4-ie$56deGOvJg4HjmrsuMCyjYq;(Xy6z6T z?hf|NN$>NDy+~;n-f>oz=Y0#Z)bwGw-q@3bTw+^(bw&(M-EsN?Hg^$s)?e8W?xNwk zJ6K0R*WJOsIne>POE`e75fBrnh_Y}rUavWycW2n?W$6jH@|ubCH1mX|JbNgP(O-F) zchhj)9dz9tbln~7o3r40GDmLs@nR^uo(u*-ulZ(-I+{m?IUgR`k|%yqH7P4pu~IN;krBMx;yB)JJ>hJXBLJyd&c;rowDWSxjIIMgJMM}#6MYZhf}hi+Q$8D z)7`gKu^IQ%U-@?T*Kpk(tmA>ub$9Tvxm=-nj1CEty_K;t?s!-d;!+9r92#)9j#x#U zo@v>lMMc%xT5Y?wr&T;ycZH#Ph=$wlU>y&IZo7krtsSh;;za(lk-4I>$U;6Vi1SNQ z@a7fTCirB|zsa*J&65l>+7ss)*i^kU zH~S!F#Re!@rv^C0$ueg57AWU|No1ftVoIjtG5RaJ-D5S}b_d;d2i;+g%sLm8x>wzAJW+pTU_MF1ZFkUZchGHjux}2} zaBy*oV9Lz|Ru57?jv%!K){6fyqH%RDsT=~KbndPeaZ5RI_9mXDzw$DluHm*j=(aoP zwmaB2r>fM+4xB8+y{aRc11ybte6&CwNT||BF_p;Q!36T47dy zSEk(yG~9Lv-F64vb_e_B96?Ub#x0Ssurj&1(%ZB|+Ib`v9E+p)!J;WrS7XE_azW^U zuESJ`m*}rN-Agsxb_d;d2iOBae5^Zt24ClW$D zt;DtM^*|mVC{g>cir47v$OY34``$6}S`ByI!8%?K-E{{K8#|cf($Vseq$m~@{irD< z^)#1_Q!|}_O4c<`ULzCb50RrFQ9dFZL87ObpaMvAl*Bx}%9qgO48cHJN z1q>P9yIe@wb)F%VqerxZxRvgrjm(II_bIqVq~-xY#CGr2U-@$H(Qwxtbk`kp*B#t9 zhrZ*_DM8I0HSd>8RhEs8fD5^eJfRQB^(D&)iI)$S7TP$`&j<8Z%zaS9U3bu3chFsT zuy4+Wqa;g#6j6agc)Ty-|Gf1er42GZ)@05f!h`EcfFS>ano9@T%lxSR%D4NNhP&>d zyY8U7?qJ`XWL;(qoK-{$ZSlxs*+nR-DKJUoDO?l53jWVqRU{-5a-}9|N2=dGrN8p+ zKCR)dJ6OkOp}X$jp1Fg7JTI$}zH*2}o~by%qSD=&+JM>2ZqBL@;XCz~t7Y&}jL94Gic;e)t`vh2vGZ%4 zec&E2(u%L>ubBI)hP&>dyY8U7?%-i_xs`KsxQ|58j<}cqw2i4BM61ioAQ0tyNM5Be zY)uw#UbF>T9iXEH7x7Kql|13MG+cEDU3CXtbq5by%UO<@^`cy#Y$hWpy)Qx%BQy_Z zS5YgkWuo{=L?wALP1bo4PamR)VM-(&y_7#y|YjI{W%{>r=jiH580psVhntM1^QIlG%gJjNa) zY!xQr@Nmv^;i{V+c_6RP$)1C$@)AEG(ZL8+V->&9UorPf4OiVkSKUEZ-NC*&mlfs1 zVVzS=q>RaqD&6m-Q`5uH6hC5RC6#UR$p*+b(`)hP#dg2dUwN7TA6s`BrO8rd4Va4! z?yiG7bai!gb>V}%B<|em>cSZ~H0}FA;Zftq%-F$*%1BrNrI6erf5 zL;_m+6?6Xg=IiDDU_j~)PW2~9>JF|hmk*P#>S}X1X<8RuG;7)AyJEI%BPlL>&VkL@ z6A9t};RJEHd_p$)Urg5@=3fmc-9buskkTDoT`eD`kQCO5JfN^IZoYa&?ccE5CI6k% zBH?Myj9rK~nXm)Sh4YK2gdRlD7 zF=TzP(Wh5CENc;cI9^fuQt@+HHTc5EF<-yS;~G%9gOu(dr8_t-H|w+LUB`cQPg9Pt zlLc^C=XMCDzEJVz9PfAOde;c5987-owgdVE=Iamhga(xEAf-D<=?;#|r9p9;H%J{v z!_w)&)I??!_~YhrzP(0#Ffklq_88XOWz{B*)Xh4n`TFTjW z9Md^htL(KNG{OxE;?VQO78wox7C#o2KCM#!vCY#B3uCuVWxjs8QyWmagHxRrQo4hy z%grAqp0%U^8VI71cysb{sFJ8fQZb^X!UHZPUySq!?@$OF_S>bqnxBvPe-ORgf*2#|t8D`^E<>@H6)jy2ZgoAz5Ngk2zJ8Zy zH6U~cr#c%XbO*=fR1k9BeDj<+rPb*nCuOM1yWb3}Az?<3V*WXKheMAUkaQ@nd7Z<2 zeU+cnfY2QzbO#CD!Ere;E~bM-3&MI567B>KDHFb&Obr#qhkp*u+E4idV9i{->i6YXMci3Y_9N%Vrt?6#Y`cd18pe(QectYnS)m~wv{ zbl%j3%-73Z*nrX3@F_}N_UXb9UPal4KSPeP?B51Uh?ANwFhtqBUPwfMGAkI z*uGRkaI)EcT#OFMSA?dEo3H)kOBhhPgOu(dr8_t-C&Q$mRN0oFOgvA=!Ej~sie&>? z)0&z1K71Ilp0EMp0uepd=VZP9&3yebFJnOI4o-DBNa+r)E|*;%!UP|c9+cYhY&4tz z-%9wc_8L1vuw`!4iNK+>M6Gvv#3$2RS1?_NIId_w=nfLPgM{wj>T2`#lU}Maaa?6R zB2@lFOv@E+bE~gN`5>D@!KfAwLR1O#J3XVuMepRQ=IbNuY6gVvAfY=*=njs{g>~Rs z(fEw5t{O7xx596}9xN$Oh=xa{K%_-%MFiS6g-WTFfXH}V%Y6OQUE6@r9h~YqkkB0* zm&-4t3tM^xX$O$lUie!%JC#c*!cL<;(J}U{iWY4x84+pYsl<1uu4lgf>8@`;=nfLP zgM{wjxSV!EE;C_QHnDUu1`Lxc3?}(4d>E8g6`(}0rIG0v3Kc066IB)2U8@_LulK=C z3<%vpLU)kR9b8>*{!%oP%&khrELRyOg1xS>eUeWe&t1Ws6u#nsI7}_iQIbSU=o4V&26XP=RNIiw9b8>)z7O^(sIb@Av1tXPU@?aW+GkX9q+T%`xF?awNGe9;$ba#` zZitQAF<(F2Ap<&hkj@>Xa|g%eWFgXJP}o`g22D|lT!&coME(X52!RKb3sw-CbOe=> z(9l^aw6%@8jrsaZxvc@6J4oja(z%19G7!qh|kNnGd>(+F4VbMNAe}q7SWY=z+$lDlbArNw6WGClEvXnl zT^zbyd?4vFpRNrq^BVmehxvBh!+gEmJq_sGK{|Jk&K+DXr>-fy!1!63Hz;xtg}_o| zuWKWQa_6K;pX&%Gl1#|Y7cvP4sP1dNUhaMdbnYOXJ4ojaE|b!s>$ zTZcCpk}zh6M5|(lkb@(2>_kI16zI^?h3EQk^YwC%Frae>>D)m&cW}8J`&*tMId~_S zmnA+#s73=E9T9VAqwDJPDF5R0iuPnQ1{s2yhdtVSz1(9A=-fd%caY8<9G8=r_g(WB z)BIX>n&~x3Qn%~m;EAZZ;D!qkh4$v&5V_HT(Kl-k))UOv8{vrtbnf6(Plj~v;Bq;? zQHmXuX^KrTkC~auTHQ#jSy>F}gJ_V3=}L3V8prA-S)qK6&(+ud`K{|Jk&K(?= z^F#6pw_5rNA4VrkN>^-bVF_#LI{Sx&Rx zAe}onE~lPI@Pa8Y@7}UuP9isWN*48KECFbkv?xhBF z?jW5zNaqfY%cVS?2PDP9E)Pdn4LEY9lsP{Ll}ed1cT?m6S(AOuN)v=h#of+Uz0!RB z+r7$w&K;z42kG3waXB`ZFex*g^NW5hS>ZXI`20PQBXKHzvqZ8k`kpdbZ2wwtJYlAK zo%#A@zTSY&9h~Zokj@<(m*bD~5R{_{s0eGIb)@5fr->Xd;*S{j(K51fY|#p2pZQC) z39dofsr+bS5ojXY94$`@U<8q`4VzN7)67Q0hOYM{ZAP%-{yi^Y=vMre=HDY~< zz~eIsA*XNBJIvQl_f7*kcaY8q%PhR=S>cKW(zClU}55T$MR#& z*zHMoDb3_ar1a-K=If_>uK}GqIMw?hojbT(Zq9&)dYt}$dt`L+SeX(+d|`+rGAmmx zjV*GN2FfY%Rj+OD*9Xnl%YDdz&K;cUBaqG=9G4SBcfo2xMvoaIaV{|Rr3;=&cWQqS zf^D2}XDTaNIu`STU2#Cqg8G>GdLw+?fX*GHa|h|%!Erf1iOrU>YBj8KgYpF!4>qz_ zn3R9|m8HsDOL#54QOXrB@~w$U)44NWKi#Jd=-k1nJ_G68!ErfWo9EIQA{59}>I*o? zPM}i>-w0m%KyZn<(risOwG3ZG+H$Du*5}OEpUUSA=-fd%caY8<9GBxpiHP~XGs#m- zE)klRO}aU1_>-1XN&f1t7siUjx)?Yzi2#hSNPXFSZHaxwfX*GHa|h|%!GE$GZckK^ zoFIsc0;VkGWbN>qqE#SE5N(h?lW;WgWJr5<+Y>7a&5aV@9*GxsQPGxR6r)zDDgn{q!0rT24wEwRDXnI?%=qb(0N1v^hQrFUP*FsFxf)=Xk73)RGj_ceA+SMMH$paRsXB&mOxulK<*j-Ta@f>Rw6lDUK9a@tCZ@a_Qix5`ogaRpx~V z7p@Ff&SfY5NcYH{e%M%mw6lmGIx;79VBxH$K~)Q#5ClZgjNoy&9tf0 zHJx=Nx#|POao2btGOun!Z6K{9uc%pF`V zrzwVjm;8sr2_uX#9>FL!nVUhFl=4DS+B`s=V?+#uc#`Nw+^^G_ua`T$0hv2U<_?m% zgUjXor8$vg#09%_CgTf>Hu_DGSK<>$iF#y}V(DEdyMPvu)?zrPXEt9icNPOOcaY2- zBy$JH<@|0^t7^A|N8LHfP{Sy4elSWr9%2g4uG5W=iAW;qt<_{CQQb^+cJuXbcMbzG zcW|n6K{9u6xg2YR*T~Dsr^t>BdqT>PGs{ci8aYe!x3t}b-d%n;aUfCGV6X{Z{eH_=V zx}f=b-(ARn&>bXn2MOK5<#HnIBEPH?={v89bLt1wFoOx9#i;zJbBkw-fyV7ba!h>D zZ74*wX1-o-uK}SuNazj{x`X3#d@Q65f4t%wou_^5Vv6ZuEC>)DEn=91l%FRHlwLLH zEG{8e-=U4#Z@zw+n+AmL;8a_X&>dVXhdr9Qwum3-3#v4XsTcK6jCr1)8e9A(m%Gl& zTupHT!3Sh}lTSF1C+TN*i+_fpmlS9tpF@ zqx8?UI7!RZ1U9j}*6Pyc>*fBw(2@!60`&mN!~5tR zmf;)8>uox~q-rpA_WAYjAhzrB=IecT1p`8NkkB0@bO)EqDPA=Kd~CdrHEC4RuGEz0B)Na zX-=IVN@o$>*L5#TTRja|g*ehkKnrt~2zXa@P4o4ac`XA%cW|l+61s!qa=M_2)QhV5 z1yw<&C1@5B026J)xd~Z6wT!L|8frFt?t5elIiR|(`TDoJo&ljdIModxp*y%-jsdNz zI*EVYhB_R94Sp7*8AB$FO|7n-IB9e&SE+XZJ3`YTTfc5(zFzLe288Y)p*u+E4vxzy zX$>8hap0!0sZ;%eDiS}B?ZBq>dZWja9vz8^@R{v=494S0?35D#`LG$%;I|hXA;8eSi z&>dVZm%h)^BjJ+!1YPQ>4Nhi~(=Nop@=TGAi%07WmA(l+S~zLmTbr+!yNv;%J4omb z61s!qa(9n9BX<{b?v z-9buskkTC-mrLy|CJY5(MzS}XDi;#%=W80jWDk>JE~+gX40dQH)6*Y(6*dNri{=*-jJMbiSyd!us*y3kqtWfsf{b z<-AKuZPf$K*Dv!y2BhvFsXIvO4z4a2e@g=@2cgI*`k-t$zK!3BG3M>2hYPnS)%%*W zOC_=@@?BC+PmO3j%yeBa`EUbDcaYK@q;v;YSDXDU6*od^wnEwr>!=m67^iVgPc~8d zm^0%^XnML3f&ryFNa+qzx`X3#91qelp^j6F@|8zA zjd6=H;(llAVWiEbbhunOp>0ZK^~{<5oAng)_0v7ofYKeLbO$Nj!ErezrT(<~M()>D zSU^GdQ3OH^5s@OFNJ`LbKtYK#Q4`P+BGYw5+(qMxXPU1+%x4);x`UMNAf-DvE+@Dc zohWq^VMjVUrIHkO`zbMLSrBqdQrEgkFfcd`!u@!h3Z5LY^*r>pS(jBC92Pxgb zak-SUvXHqTnlz=MmO|S#g>LEs`2J!XzRNvY42!MmrDRXKFlamp(e2cW&DT%&5(7$i zkkTEbbO*=f1oPSaiF1oCi}*^>rBqquNQ-nIW8y>((l|uEoelpMWyeNgYt$>u*H8CK z14?(0(jBC92gl`XZxIfSlGIQMUa(F`{4#(Nh7$EkCPVN+?KB^0uYEv6$2Y_CbRoRf zeEns<&VbS#q;v-<-NEH@>4o9T_d&`7F=erXQAzxwT9*r#Mv#L6Eo|dba=6+Ns9oIo z?Rt~>dbu|nP`ZPZ?jWT*I4W^Yzoc$AHouq;v-<-NA7=dKt8u1RS`p>5peVT}Wgr(y1nG#j(q=(C|Ij z(3oiwvBK?w4|@H4z9i(&zDc!+wxn#>FxAcjzm7K~vt`MD+hYHukGEce* zzkCm~ECd`OK=D66<=Sq2)O`JPA2XnI2Pxe_N_TL%oG_c?L)-#M&;sshhHkjSa`7I< z$D)I?5=wq8LXev(ExGt4yY(sa^>Y7ZK&VbS#q;v-<-NA7=Z1MEWQU|J}h)X3V z?1K#TGmTux_N5QCg9nR)UB+1v&T{z3Ijq;0%-6r&mklW0K}vU!(j8n~F1IVk4S7!; zAxcFa$<~%Uca_E^(cXtmk?TRBInz=E-WE;$k=R6i-E>WW`-TCbJ4omb61sz{tL1i8 zVS%5;y_v~_YHs$TuJFd)I~)adl3UDJ#)|3+X0|#woO5v|<;?5#E%WumecOQ09VB!I z3EjbQxfHQupa{XSzE~)Bgf3C+72!2nUoUz;Gir>L;e_ zcllETLU)kR9VB!IS69oslybDIG&hlabb~5ORz;}yqV&I`+YjfP@sQLQ1zdPq?mhib zb-=?A`-S=XyZogAp*u+E4idV9<8mH@u_J))i$P)c&0|8#YbK@=tM7LPgzg}rJ4ombj>{1QO&}qnmSld}EW9@rEOwhN9U4|dVNaw; zJS7#xj#iaHTrGCgTK&m<{iXcbfY2QzbO#CD!EreqJ+ww+3n4ix!nDD8s(v73Q#3fS z2Sj3CvY5C_of^0ZQ-s^y9UJv`^YzR8hXJ9x6J)ugAfY=rE+?`lQHUX;nu3onm?uZi zb7V9m{i`xaZIDJC_@|yWp*Loj-;cjl$1-0(-LVY_-NC7j3klu9)#c_7Q^#41I}r_@ zV-&SmoHpO=C5UN8QIEAE-j;TwyZLBT$s}65Q^zx1f0)NNpmPW5+(9~baCNnOm~JuV z2#eg6jSwOu$^2rD$2U!BGZ-p79Ynaa^xCfjB1;-449^=k(l-@`VdN0R`#6_%3iI{5Jf#7hJ4oja z(z%1n61Q?$D^eCmJ_|9Kr%SX#RTqh;&@{$fRHtlK6*UO#GfX*GH za|h|%!Erg&`Gi2FJvsZS+ht$nzio2tqHP?F3qi6?Vf8dq5tbr-C86(c*sU{}uRqK) z8_>CfbnYOXJGi=BzLc=UoygKw>3iq`wWajW643YZLUapL#^K`BM2U;!o$e>RFZJ_h zGhHXQ&Tc^F4o-DWNahZ%u6E>0(VtZr3@-?;Jj?@6;j`4rhh63t;+MKoeXp{|>@ArfcaL)< zBn8i`t%m-S2p4q$^Yy#DpaGdXNahZbxr3|A&5~4jyE3F`wq6COwn3gm`L?*{*Wl|1U|kWb-DRFL4>iv?QNE_ z$dTG)%>YnRQb>->Dvc=7iqS;-4oy@;V2uOPcxbIIYP$YTE@nXE4$`=TH16Q)YI(Rd zfsDCHF}9+{xIP9cbKxKtyYo|)NgMyz^O#KWxFn+(n95x>6R1m>ukW5q8_>9eH0~gc zJ2);U*TH;t?n`aTrU`m`NOaKD&?C7yT8y1-%m(LaTD>}$^&8>7*X7LD@AC2nMD8Gw zJ4oaXt}ZvfOEDm^USS5OatIX4TW#WO@;%B&aNw8}u6G%=m_u>LZFkI=&APJb`dwbd zfW{r9aR+JK!PV8~4+Y~(x;8aT>Y1bl{5a8(bcomsqQ3&B!o)&=qCA31^h#}iT{B#) z*Dzl{+%*ko+(8<5kj5Pxm(!j$ZQkadCY+DC&xo7OOS2R5>g4It3m40sQU>2xxQwP4 zH)*G?W4_+v*EJw=2dBC|BytCr%PIGl%~9Ed4x$kV8$pC6l^o(Xjv6rr{oh0y*_*Cg z;hnU$OB?RGq4|2b8yOI}gGBBikvljphYsa+>FN=~mH{b{=%-Qs;6TGsbI+)uO+tw2 zgvj9<4rO{z`eWD4%-5H}%?*g$K_YjM$Q@iR$0Cu0L0Jrc+~vmf!`_oh!)|wrCxRNy z6P6NRORgrrVf510YTJCh+(82}cW|mhkjxz%my?QcnkXIF;nCS&ekutba$d4_?zDvB zd_jU#>T>*S)H_x8Vj+bLa4Ylm%e=J#nL9}44wAWp<8tDWQ7#t05lxUepoAcet^C>t z$o34qm-C$33c>zF!IQUfXp0Zl?akLucLxJ9caY2-By$JH<+ve^TT!QwMXa|g%eIOOTFa6pZb z@-~||b%T)_!bCun%t6D}!DOHo*r z&1RO?GtAc?<}(fG+(9~bkj@<(mpfv>q155tuvr;IlwoMQh|%&IIgmm-Tvoo8z#=-1 z-EI#csgTTguKD_9KF@&89h~X~kj@<(m*eCxQ1pxx(350RoRWZ1(ww+C+;D~F%vc7K z&Z-)w=}8c3mHSc2-HXiEFZ0C)bnf6(FNJjO;Bq-ZJ$Icxhvel_gX86UB5NKzJL?8;$Pr;fST>S+B!SwMG3TO51m&`y}Td#MUuYbG$G@x?_>D)m&cW_+J z9g4va!6`pr`eH_zN{EA=i8c=GPy1c|PUCHT7evL(mTFJ8L0VmjF`xwRb2TXG@R9O@9FS~Ioy#2BD*V(1xcqkNBj)R;`=|k( zJ4oja(z%1D)m&cW}8Jt5u9c@<;*#%ZGKs`@n>8%liWT%VZFpZad5`fpLs>Y%TA6 zqrPaqUhYc@1ZmtH+%b z)NxF2)z{3|%YEH|&K;z42kG3waXFD2Mwj}3A11#;CkG-6x`%}qBDWeVg;T72nN{x} zyJv-_ey1PY4q z$hC#j)k3lay^c+r7AHb-9H1YYub2CY0i8QY=MK`jgR9FW=)mMl13L?*B?muB^-_4x z5_k?Qg=0KFjjjZ_b#oT*Q{@}(g9yjZ&2~fw`+JA$7Y0=BAeB2vcaX>( zBytDG-~TK#ys@ zUhY^1MDE~J$ALud;J6&4BW!hqAD?*oiYmX`E5OY8pbQ;Wu%C?*or9DH7Bh{tf}tWR zM&!XTZ_VH#B!n7(E-%fp|m#CSNl?B>` zI}%bkk@?M&MP4JX z(m5u>kX|6`b#l}7hj|JE8h4P!9i(vwS67=2b_sFy{z-m%iTHM!7PGJtYx5vUTXRA% zW|lYKRe%_ zZ!BAYa3F^)geiC;&n0-M;*MXyG)in*Bd7$!B@f*ALJ)O+^Yztp0Rswmkis3La0kcb za1h0ykVSBQQf;JlU4&KncW871JLwUfSZ%ugh<*!j=$V7wkrV79=Iak-j{$`{IMrTA z;SMgA%Qqc&K&0M{l1@TmqHN9B(!N2v8G%G_NDx&BLNbF@Z;xZd)IRg|avKH|?jVIb zNZ}5S%OMCR=WiO725xhnluS6rpf-}4m8U2LyF$)_AwLJVS6xh932`_Q8g3XaK=bkJMYi~r1&=1>yqZ{ zr@NE^g*!;$4pO*-<8s_L$)1@U%X5RQSgz zx~%#7Q@NZ0g*!Oa6(EH>I4+mQ6vA9m51bpMQcK}FD+;!X4@Q-Fu0i=9kq1xcA|QCq ztJNTGC0`WUIO@g+Koar$tobk4x&7Wz;+ zl4DbRkDI{XJ33MC^}2!idbt}KP`HB>?jVIbxLD5F7n3saM9rFWcZ#h^G^I)`G(Ndj z(GDBL7mQSdvt~Qu4s(-lYQA3XW(E}QAcZ?f;SP?=Nm@I;eBg3dscj_#?A4*qOJCW0 zc#+O)^~loADwzfSnM9lZHL7bJZNC2PwhbuUK?-+}!W|r!i^-o*0&-+%6Vm@;!@d>Q zxQ}}UvGq48Bn-`6z(8}JGfj<4@}`bk!bW**SDA{ z14*>m86q{p@nU`26IdPE-OD&J+VC6@-0ODc>*a25K;jOPxPv6_;JBPR4IF&#V){AC z{s@kybtUe)eTe#l6XQn}hI6HAJ12a^%HSLkFQ_}2uV3b!4M^NU5_gcq9UPaF@+UPA ze+L!VE@1pgJfZrCS9-aqS~?&))IJ2)<93u#vz#rdrz1|;qvi91N*4vxz?^2MI=sYNJ&L;=S;B^9$Pj(jKWlKMWz1b0r;Z*>*8 zQyyEc=}G46r+cyii90yeQz3~vI4-A%Lh^4*v_a*I?#V*H0*5RgVN|^-)S+q%=aLgE z^AemWHm5^fB4xdvZoYoHXBg19gEa0SjXStlPN+ygLnX9|YX?{IxFQaY;~~g zQ)jCv;>5(%P+9ezJQxDbbIjMvJ=cK79i(vwY23l(ay)F#R<2F)?=&^$SJ@7+DODvz zG|UI7V-%a6PvmkHpp&vuc=|%~^>QyVpm7JMdI_X)2N%l`T2%U#zWL0)MAaN25op7B z^CK#OP-Kc|>vK)BB=kX7IlEnrbiK@cz1+(UXxu>>caX*%9G7D>II>desgi-f0}dv; z#}?E38Smbn*k*gr-M@ip_cj9}caX>(BytDG<?7%#$l#JAnzAoIo^?INAI;iq~10r{j z$Q>kd2gl_E>2+M%mk9ct=|7tJFUDdgDhS|`yU0aqQ)(r^BUCNfrAELNrJ3=E&DSsU zBL+n7Adx#r4kvmA_4vxzaTywXu9q>K#=eux3ig+USmgtRqtQ7JgQE<%3S(d}yhy@-I zxB74M^+x!N0g*d6)#o6QJ2);Ux0043K6Vr{MZ#hY%sZXy(8rY+a!(xHN>ep~R63uc zZ|P@;wO&>A1@raOebIo(9VBuGiQK{Eay~#o8YZ&tU3_H*9&d_MWJ3$hN~S4I(OFgF z(QuE1qV1YcZrAFo=IiCYW9vm>hoh8smadSpRFjewp7iAaVz%`ZgqT2barfpdW6HMOd-Yo>~j(lZOm#Q@du; zw}?w-qz{e(TrMZADJ>K~G7i1IZ^_#Ohl2D|z>u%~~W1;Wq0J=IbN#j|N2UAdx#rG7!x7Ro(sS40pj*sc8;HNmllJpTM;LW0GtLCV`ny>f4-wcS{K_YjM z$lZyS%SHJ~R#~Lk{SqpSgqDWF>KTxw_;7MEA-ts;C^QZ>nY1%Al<`zYnXiAkV;T^- zgHs(F61jtmr_;tR&q3NGuS*12@<-}iyowp`BG=ea;y`{u^k4mjF4AaXjIuqObzJlH z)BTG9kvmA_4idS8<8mo)OA<8XHj2J1BWDJGmNJ15L5kMZk7+<4JdKu@uEQbe>_`1r zs}q{9@1GMH5V?ay?jVsnxLj_IZP>wF1nC`LKa)X#Bfdc>Fk+0-6;iQ$5CKS%4?2({ z;b;(BytDG<&quaT_Hs#FB$Do>^qMTjRoQG9Y&$nG`Li< z7`{`{2%$L5h;b|H4Cd>Na7F_ncaX>(BytCr%Zc*YzH?QNQYPjt!vVWUNYl$>q-Zbf z5LHg1ho93<30JDdv_Y=3ny;7pR|6t`x3lh6dE>`6*^80mj+ zRhl;fkfQpoa4s#&EgfrJ2(TwN|lCVNZcIxb|&2UQVb zX$nH=QxnED8mNuObV$z*OlF*XO)Xc%a#z_?ld5P2coF+1#y5n6H<+qyddPNaGID zxPy!3d}0_;;?b$Wm$FFjEQhs1*R;oB$ScMZ?$ncW_*e0q2~G@vovZJ(%P;FM?e!P|kJ_`B&FzN^nD=6X>@xr`Font*7_t}3) z%W^r_>L%vvpzk=PAAd6}WyJ7v?=bSvrakW7b zhuMUjPEl*=S-o5YS?iGb`ssEJh}=OUcaX>(9GBBVk>!Eu&HIoq=Ew;P+2*rnK=TT( z#PzCqT4=A48xzvS;zvT-soR>b_ucIbh}=OUcaX>(TrMYrB$Tg^mU6fxfhe&ODy~0k zN$ObeZ3B~Cz|0RCvrG`&PZ;(}{k!>kxjPvUxr0RRAdx#bE*EJ&td|JCG4%-Sh!C^S zF(D;-xF`NABTQpG9W^B+^>pCK@+w`sb=Z9U+uhZG$Q_*O?vThG9G6RlXUv@tc@y8) z;DleQ1+~yD8%V$k6((TrQ`Rh(hrP`fN!*990hK#Q z;Eb+`*}y0;$}=<#N7z?d327MBMn4GU#cjt=%;y0xB)f$}c9xz0W~I=)r}Lh@naQ zWB@NDz-r}7*FDtC~|9i(yxm&@UcQ=MWux@TmToMP-2nseMrVGmlQq_VwDt2n=K zw?tT2GCtLMf%$s57aCBxgH-Myl{+{tCn4eX_Ol3uc`gqjuZx$6T9FvH7mA9IjsVIT z(;qi#hDlvS_VlIZ>zDa511fir${nO~2gl_k?mQBHiZU>PFriK9EX$xCxfxOdEoCk# zB7LsXTmgv^VwI;GKBRh;`TFTzZ9wG?Qn`av?%=qbBgGY}Wf8_(%u7@aY$8R4>E#pg zCYe#xB40;NaghL5K}x6P{Oa}Q>wWhI13Gtbsy9J8cW_)zFk8bJd9!#LB6>1EqI@_v zX&0LwsK|IiNXo%e+2;JBPD zxDZY#(4KE^8bA9C5fFq@WX_xCf zbnYOXJ2);U$8X+f@Enwcav9gOGMVl%R@?+(9~bkj@=kE=Lm6Logxmos*=~rc9Znx;HE}jkT~6>`h*o+zq~%{usKk zZ6{b!pEqAG_XPtwcW|mNK{|JET+YTy7ib5Hk6Zn?iX4%C-#?Sj&6GOR=zihjD7F=5 z5$w^dOk7+I$ydyGWSjr=aDCN)&K;z42kG3waXINf9~t`x@l?1gbHgP%&>bXn2MOK5aXE?CxSzx{-00lBv~%W{OI!Lw>O1D^PvyG?gzg}rJ4ombj>{#!?n1>cWt=CLjua}x z}Q8`Fgou8xXpKgzg}rJ2)=qFcBkS zVnyxKH_nY2ROp{;SHe&b*37FVArwReVNK8MR?L6kP6bS)V(9L&SAb@?wkgc?jWT*Na+qPmUAR) zoS^0iKP&>yD$sbw34l?}Q6rZt-g{&>x$KlUg}Lc8wL$8<=IiCoXF%x=Qo4hb?%;Ac z{Ro7<9sWDweLO9NtwO@C8r(68(5w?1KJp_vP{(HXx?Mu4RKAe;dbtZ5P`ZPZ?jWT* zI4&29SsKJQA-<%jJX$U0>{zIlv;@kNm6vO|!Y|I9?@d0k1-4PZCJ`1@@D#)!$VYH(xJz2?I)Z zkkTEbbO)Eq;gEA2nd51@;OM}H;cKNEs1_je)y|IhRq~P)!lf&;m>5f#(w+Hwxyu+( zx`UMNAf-FFx?C;N-Txw?v|^ zV7eoT*B>6PD;iL`gOu(dr8_vTCNmRRUOS9xs%LU(Yg>p((xa9mE+DzhX#ywcc2sM|5cRTQq_ z1UOE`tI{`JfR%OO2gUgn;$VJCH(k$sz3Z-TK$9?}}=6zFcO8=J3}yNLmzJ4omb61sz{%N?;CM4BBFu2*f! zrHuK?Vq^R}yUl%&;u0CVR8_{lM8?pzLWqYIb_>(B<#0;_LU)kR9VB!IS69nV=NxwS zvIlYn>7C*nL&*`jA;j*UiOr-$*|);3NaGeY{0ds46}MG8=Ie($WI*T+61szg?%=rG z+~L$|5!_{S}^wiIoP|REjZHn@m`-UtS9dX8 z@4CYVbnf6(cY}29;Oc7gu0w~^j6kHsoAeMuacXbU?N=N?@eIoh4MAdv2PqyVydzxf zewQk(dzh~u?w$s8?jW5zNaqfY%ZYel8L(1Vl)@?Eq#_+Ib@mt=Hn9aCXY^^rZNykz zcCntq&0eqjny-Jl`x(%=gLLj7ojW)#=fhw=;$SmYiG=NwyYdV94E+Tn0McBc4@$Gi zO@`0KL*bOn4_OZ~Uq9W04d~oKI(LxH9UPa_C`nYs`Gt=!BPZs(6|;fzn#2JX42CJ+ z)d`T8l8D2u8(4of3vblJ&DZi1I5;N6P+G0FAh z<=lxgxNj2X_i4KRTpq;m)9+`;8?l00lau}dxhnpr}5Qp?UX z%;2<{WTx;K*hWH(2@8f_r2Vhh;uFl*%RSM6&K;cU$&k(+9G6q0!YH?mF}TJ2Qrnj@ zJ0-3@LH8ZsO3Cn?FHD-8-2_0v7ufX*GHa|h|%!PVvFUCtKK za9xT(kvDHxbVIir0SDDNxK11gml9Xf2_u#&eQmSwZFyt$eAD$Ve}Ms+J4ogZlDUJc ztIY?rO^q<(Z&!rL{vk`iy<_nu$j%Al^d&75MR;jFv7Cr_P=0iw*GtUTALdI9$lO6P zcaY2-9GCMs3cU&Bsg;b=Dn5&2gZC+W#uj8j?<)?nk*0(433|u~$)&lrk6(~OA5_U- zgfhJgopo#V4)gWXz0-iq9VBxH$=t!ka$GjwwuB6xQoeJ)WYi^fO46efYfEr5pQ)$T z@J(tV@gza2bme%D`Fgqc8j!hzWbPoDJ2)=KMimeh<&&8f-jjWd+$hSQpKsS+kgrtM zLi|XPlSia;mU;ol+irc(eEns9$bifpBy$JJ+`(}<-lK=6wo`1O_%<3n*r@_X%-;H#`TEQJxB;0vNahZbxr58)Qa3J}s&SCNo$%W}!9M-S zQvZ;~z*m9ZZ(qF|C7*uo5fAxtgZ;0!E)RUw@gOHz0Edr}`o!a|g%el8p~>YF6JB z0Y~B8!yp&6XT##u)80vSz0Vb=gV};qnYIBm8@KAq=Ic-8D+XllAelQz<_?a_$s&ax zn3~o-DH3znU|frp%u3)0;38GX=S;>b!?|Z2egJ$Ev)WcS-rr!Yf2Qbeqg>{?uQ0s z?jV^vNahYMmrJ9fBSiAKgBB|VJ&Tv`L~)uR-`F0w55C;65%^xNJ8=p*<)50bm;0Fk zojXY94$`@U%jM9^L}XLtt=Fiogq|Vf0AFN^l683SkOEhHK(aNOmf@Fs-SWNlOY`+| zzcQe62dDZCq;m%s%kgY9#PFMJV3|ryVrQv9;(z;s1gbDB+->Ui8NL$9LM%e$`t#^f zSidu0FZX)`I(LxH9i(#y$K}MoL~Z;~c)VJ1G9dI!MOk5@J3Z|Lq%@7v1>!;im(#NC zwdxTu+NeL9uebSM4CvfJI(LxH9UPYnJp(6S6vakQSt}c1?u0#8;kjoM4bc7pu}a#K zO(D)m&cW_+JnJDa~Jp{u5LCd*8Q&?gUGe+1} zHVq|6HqWgt_V0tW9~1_1U(kMzZ@&KRPGCUi4$`@Ubnf8laxuivg>s_EPw@A>OIZ?+ zmy`r;CQRP6?C`D9i%#<<*%BPF6kkyaIEm?wG=KZS;X0`SnL9}44wAWptERgb@9UPaFXTi}(?=BS^k*8qQ`fxNf3K!q=Mam*vJOAO$@)oe9Rk2~S z*Llp>yY9RORPG>^J4odYj>|DzBfmj25LpT-n0er%nES#CPN8!#5->Dbff($1vB^&u# zH6Mz_7}M@naey`R_0#P&pmGPN+6SrJ!GE$GxfbsYc|t-|=qOq;tXD)5FHvEI>pW(= z3&GbTP0613LFpDy`_0$OZ5mLygH-Myl{+{tCrX(dg;iJ#zDz+|_6lM}vT6bwO6k*D zLc&0pShCxx9or_~|v2(nSyFl^MN&DYEQn*o(OIMrn#l{>gxPS-BSeiTPU6j%=Erz~k*=3VJb zvg|;$ueny4@hAyNlG^2pYcFrUUhWD8RPG>^J4odYt}Zvbu6_)kohR|aFb*VT;tuOG zrC!>pr9axf1f|?kx?C~?@qg5=2(Q*vOxLdKRSk&TK_YjM$Q@i=ExTO3umV&zvpPwI zTO7)e=`_Pspd~`3o=R~em&Y;22oy^4@wgns8rSQZ=IbxzS_VY!Adx#rv9z_wl+HflkA5|bQ$$l!QBwrPH0DdmprcI>Hoq2fQ<6U{PKJeI8QpWe`t`bz`Fgn<8xXmJMD8Gw zJGfkqyXb^>Kx!AJdV@7C(9G4SQ;fm^al@9N;Re4v6U0pU@J61%(EodC*Xg0o#n!tc0ltPb~VRtZJ zpU`(SAaVzZ+(9CDa9qym!TOO0^zjL%JBLMxCF#^6L=Qn3m&ijJwIP7xOp?pCD^k(x z>B@ZlGVfwQ_I9{3M!fN!s2o$2wQx+hncUJd$<9SJ4oaX61jt`%jI1Pr6aki@5B(K=zuhV zP$&ANPnr}($c215IZ#y?&TSVRA2W?Egu@Go14W3{?;||iegEa2oxLm5D zR4(DHYDL9rm9o+t(Nv$A%XPU2J4oXW z(zt`;aw0{H^K^k{m-zBIkK8z}7otxJUkTUvR{W3nvm!Mk^cBTr^uBtdYFc|i_|W0owirxCe!+t5ifPd@e$e- z15c1F+QzRnU*89>GoWz?Y1}~?cW_)TG&F2@`&*;MKb)dPEJ|iNuN`yO zUx9alM(h}1w$z)<*H8Cm0~&X5s<%QKcW_+JKJYLs61-sfO)Yu z6lFyAdkMCqOcVkOwOalbPxl@J8h4P!9i(vwm&=JF9xXbggNaJUs6{0{H8&|o zH5Iy_32L4x<*h6>eznA%faYd>zu>0tc3IL6H$Fen?UGP zi<(HlqX$HYTMSsivUs3Gw_t!H&As6}-mH(BuCJeu8IZVxB<>)IJ2s=wr27h*%4w;$;&IV5QE3A;xRZ*d3$mVX%D|qUou}W_hkbLcaXvz zq;Ln9%h_(CKRy*@p!R`ij!!VYF@K7z3c89^ay)l(h>lh^7+F&E`knf^`Fgo;7?8Mw zB<>)IJGi=BJ`@Z~fkTW2b{e)z$LT*;%L{vPZJzJSye8GH4RjZc+v%Gf?0X?FW;Cu2L$bQC9qR z{Fj~jzWI8O|G* z3x_rnGU!_U#C-iOe`-MD4wAToB<|p1xg%-M9MAa1uDUe+L8+5LKmnIBQzfc+*NKx@ zqUNfuRRJYd##;Tte7)Q+4M^NU5_gcq9UPYvyVvt3+AU5N_6X|-V?Q1GGzJXCLSPQ% zL7x~M0_5ox|A^meG>hl`Tl4kH{G9=bJ4oUVlDLE8ayAu`tUJZICjM>XuIKbfy@pFbOrxPv6_Ac;G;y4-B^c|{y@gf`s0^w@QO zMmi&kKR7pZ#-zP`Kz>M>NbaV>BjwAylKQ*p+UWa-0foDhX0@Xrg*&*q+WcXvLlK0s znx^vtzR4xA#e9>#7PXnUBqTLN)cHaYfRL5Z#Uq^T?K+nE`duE|fWjT5a0e;e!Erg1 zgRto2B2%oSM`dUo2%feB0<`#7XrbCWB-Y1{k+{ZNR`lwb>v-ntcX@mR5_gcq9VBrF z$K~c8P+_I0?9uB=+Jc)Co0WCoe%IWJ=@~uQv~SV~-Ytb2C#y%0>cr-2v*;uSB<>)I zJ4oUVE|+7-VLYeg8J&;!kE5OzSM)lxXHK08{#*LyNm{zr>4iwCIqSH|r!ZeHcS-{i zcaX##Byk7F<&+jkg9}KRPoPV(ILgVXU||>WO8Cw~UkDshgSveoF-q&PE~G{4wC3yI z?sNtu?jVUfNa7BzE;oOe3N@7ZFug>Eca#K6^k;jgt9X*;dN0KIQ@iXf$~56i^Y`R8 zw(3l#>ksqH1{Cffg*!;$4z8{?dm~;R`ULKk_-GpXAhoJ&;JeyrGJ^5HMK!fLkgG_^ zKEu~Fg;l;&XER^F%d;DhxPv6_Ac;FTE{Cb;^ksl(-r%HiXo$73u-vi=ZS`uBEkQPQ z!ifs7id?jIIP%lRTAkZ`{VvaAK;jOPxPv6_;Bq;3EPop}7=4?HUP^Az(%eDV-fS(5 z3vA(#`sBTkpxKxRoFYkUbpiABau+lpaR*7aqgE!ErfshBN z22Dg1Lf}iT+C3w7Z(pPzmEe(kVaNF*3MpzT({w5G_0wJ2fXW@5>N1eZ9b7Iaxf%&e ze5uq$ONZh@=OEE1O>#~2U5Hbu3@avPudt(%AXP17hAwBmUheV+RPG>^J4odYE|(J^ zQCEPLn>H}m&o+7pKl$`^PLUcEB}4QOm{9&HU#@GPA{l9py0ZCtxvLnExr1cxAelQj zE+<||28SV(d>yl0h$9UhBhaKB6H8Nwg@GbS#zT=5@!*2CbB4FBVZQ$Du4zE#4wAWp zWbWYVa`PD`$R+@WT%9gZemmP)bVZLE2Nlk+f635INinXbJ4%Y1n56{+~jllNSY+`O9ZVnwiB&Vhahl-3m`&;SnLm| z8=9}*<&6xe+(9aLkjfn#mt$PTrgMQRTGs%Pc^9{bWs8jCepNJ?#8TReA(MD2+yveT z?|r*&X1+c$Z*D;44pO;;RPNxooML$mM1=RaI@&650>T71BsIy3#jnG7Mzi&gQgbUG z%6G<9=A9`7-8Nr8-9ZB?caX{*q;dzB%lU~CRG_An7ng*HR8|^jGG|4>c{_UNr2tO` zS>S_lmj057sNBkYz1*!0sN6v+caX{*TrTGhK=zRsz+)9q-16IL!{Hgwm_+=K-h92>9So@4K`M8U${k!TmkdM{KV0cDS}xJp(n5TK)9eNtK_*^h zg8Q8iqu3uq!yZxaUUxQMFINUs?%-61A(cBgF2`b&J=n)Cb|!P&XoDzb4--Fai;i%t z<89_f26sfFd*uyqeB{~1-L`F7=$Rf~x_Zr20M*Dv#d22}1Kl{-k~4lb9AEy?h~XOotrm}G~c zQ_VR8f+wljvtsQG%ihZ#`0gH-Myl{>gtjunTEY`YOLQooBw zAqb1cVY@N&xV8KeT1q)wxR4xWit4K3REO4on6H<6lmVGLNahZbxr5_!vAt9yD+qCP zu>c8i_2@~BR_bTtWloca1wdAtFcJ2=%7A(=ZkE*E`d z3YqB{tmZ*rUqchsQW&M&Az@kytNHKyB+_g*gue9nauxZV>&fQpr+bP4nL9}44wAWp z<8rBO;B6q2Vx_RRgf4SIMCCqV8nH0U0G^)j)hXaEvPsiOnZsGnFkd?)&om%&2g%$) zGI#KwEa%Wd;&bjgr(%&X*@f`k4>2#@qN&-829TJ$vvt=k!AxS6)^p9*%RSG4%pIKS z1(3`g9GBy2i%=m!s%9XDjR}w@@R&CGC<{-E$ceJ(t;JE`6xrn%jec4w*WG%N`TDne zu>qMoIMqubnLD^#&JMD{!@-gO@$Yso*!@pt zKCwure#UP!UoZD212T7Ts<%KgcW_)T)gn>K)7S@p#Id1>Sim`FBFBpJF-HTO-uAc* zFiXQhs?VM1K)ua;{W9NfK;{mTxr1cx;J6&$(03w=DC6$p!_?nDOG0tw95t-GWaSfk z@CLM1Wr#%~6{}XKxp$kdkLdq2Aae)F+(9yTa9mDK6;lNlCD%$iC;Lz&CI#*l6!A)= zD|EzB@WGE24|ER;auVa#YN+0CzJ8e>Fd%aWr}_{ia|f5pF|^W$3ez)fRSs#z;~ciT z8N2y-B$P1^cn2z6nS`9Ac+n`g8}$+M^>QCIAae)F+(9yTa9oa0Ct<708%+sii+F-A zBTI(dz>Hua3E$XzsHZ}ZUZ~&Iff+r``lR`Kn}5oH%pD|i2g%&Qak(fW>Ad6~MW9Rn zu=KDSY~Aae)F+(9yTaJigR zIggm_h(W?i$I(w|16q+VlBKjz(KbUc(T(Rd2wutEWs7XrH_g|}eanE%9h~Yrkjx!i zE~h>ueH;=eW!t7}I#*FHP)i<`W-QqlzWUZuDnWusxE8zJiBsP*UoZE412T7z%pD|i z2bas)MtWl;PLDzx&m1RAz%9+beV^Ehk{a5<={dyOMxB%hJ;0a8X!^1Fdbyt%khz0o z?jV^vI4-B0$0Pae^^N44I5pCXMo5~G>nax!m#Gv#WvR&brY|X@nq$Eks-K&$PnBO7 z5W0g?{R$GggX41e$I2vCeKU&_w6xDQc|=;Lh+XMVA%`U*oO&HmO>tIMwqzS;S5?4o z%-2u%TLVgWkkTEbbO*=fqRA&$j?jR~qct=?OO=Rw7M;OI7#~`rFW~_uXM`91vY{W? z5?l30^Ysz^Cj&}%kkTEbbO%?Li}M;9k6XoN(qK*DHH%V7Knm8~72#_l%rj?YMF6O#(;d%%&>bXn2MOK5aXH=Pc~$5bXn2gl`PI^AbXNZ~xS zFsMT*;I*|pDJp2{wshanu8b|u$c+?<9@+j#dC8NTufLR27*M){lc=F!TrPCzgW!&-d0i`=g=?+r5gX3}= zdaJp75K7rA_Mf;7?@9>8C$EaqQ(`_dymZY(CA2BY@MxvyqS~x8ny-JmGZ|32gOu(d zr8~G>PMj_3JIT!pq%)?))}sO<%a&3AmJ^n_tr>|b;`D;m{0OB4r0&eu%bm@D)Ey*s z2T9$*)#W19NvJOjEEH?kn_zt^&a~x~Sdu(I1oiMr&{5gZfgI(c6UYuW-)5c5Y*#sN zdbg13JhuU*J4opcQo4hyi)Gh2Xa$Kd3)IXf2_u;h4pqXK0yYdwnPhIW0wf1B3bQ<+ z!dGXuZE$|`^|M{TfYKeLbO$Nj!Erg|8ul$_zRM<8o}87yy-0iFYpKwC7TME#?smy;2QF zxqrGou!)4Q5FG^Ood&hfe7y}e3@F_}N_UXb9UPbQyYRMfz9O?L4Vo_EvLPaxa@YP6 zISi&HkCWf!?h!xM#z=rlRHwGg*Dv#;29)j~r8`LJ4vx!30npBpeH2$rKvT9jvbAn& zSDqc|S5(=@WEVnJrq5bqO!$4Je=cdhewmjtpmYZ*-9busa9qv~h}+5l-vr2ZEO>CLX?@&xq?MAyZd3U;lL1Fd%dX3Ee?L zcW_*elkB#0_gGWQNIju79bj%IODP8C5W`E*(!ybLK!*pXiV!2?fwD(U=IeKP9Rosl zkkB0@bO*=f6!t_VS?Wr%nE#5sC&WnP%csJSL?nz1s|rRZt8`c5W#Lgto9@;P%-2tM zLjyv0kkB0@bO*=fasjwDb-oZ-OE(h{T0|;8RobR_v3!Q;AP7)L*EpP+ZJ{~_FQGg0 z^>uJF144I@&>bXn2gl`@kZx7ebNiD7lG#n~XT(X5<6#6GljTD0KyVD#m7KELBn6~v zb+q~VWo{b~x`Tx7AfY=rE{Cy=Kr0a_k{{Rmpf`r==a-aLVlt#4NA-awCujlUWjW7t zgbEPWuKD_9-pYW`9VB!I3EjbQIUHFbW|KLXBDK5M&B&|274_``Xzhtxa z@IF^b;1I&s>vrbrU4DB5LU)kR9VB!I$K~eoAyX$s#y{ohh#K*jQvxa#>HQ`6#zAIr zrh!@dl+jC&RM@IJnXjMj&IW|;AfY=*=njs{p;4og(it*6KLbNi>59JOQWuHtGtpUG zK2pwzsEgOYE=ox~H@fa>zW!A1W=IfXF00TmIkkB0@bO*=fBEsoiam{hmmH8pJ zxnEqUds3LdYed&f!)W}_R1bs#E^DF)N+ZyRn6IDip$3HRAfY=*=nk$fH=oeV0WOA< zNmiOMha02qjoP&Ilt5UXn|JAnzzlS%`gD9i((_6b>XD}F6Z$_4=-fd%caY8v_0yu5lr2#$C|I-<>L(K+`*}y z0O{Pp<#P6O7+Lc1*rk|zY&$dKp@}RIToAXSCrAfTFA$6Yb)z^!dXemI)RWBD%RSkE z&K;z42kG3waXH!e{SIK?fFQeWCNA{YB@9?$TLtuj;?90`34%&uE)Gk#tcycxy`FBq z-sR6QpmPW5+(9~ba9mE(hmWHtk@|u(MPtFD3roh>b>h;Bq-X3O5TCCPm8Pq!_eEGiIHRnojEwpfty0;#7nmq%T8i zM{s?$eS4w#dbt-F(7A(Cy#&&^gX3~;N=a6MP?=uIvh?OphDT5~-TLG((5NJ4#3iUk z3Ei*(dA58qM3tABuMd@%8_>CfbnYOXJ2)=qTi{HE%;z*@h_l7~>1vXh>WTyKh0~yh zon|L`*c4PsE+^K$QLi>%Kiz8#=-fd%caY8D<9_IpG>f3mF#tWF!WZI`m|{#4Uy) z9K9%+SmB}MD3zYG%LKuFmx$-}R`d1Ce47ECJ2=%lAe}q7x?B#G{OPi)0`=*kt-w!U zk={Y1k`n3`lMud9TqrprZKBR@t^wpIZPmL>*F4F08<4q!WbPoDJGi=94i&DqRH~E3 zXOAcq!A0?H-k#VOE1sF)D)q&RflHLy9bCIa<|M<=R1DxW+UZ;f zXD1SlVB_{$eb;=w-1iK~+`*}S0Lk3J<#Oqp#j*0iOC0;olS_6%=nCpSM$E zdBxY2@G9pJMb+a3{q6tE*USCffXp47>X(qr9b8>*4xFNv<|)!UiKGI3$8>A*QMeiS z3v;*+TbVY2{xqouP*%xXvR~@grt84zZw$!XK{9uc%pF`^Z8nUY>==Tg-AG2MQPvK` zS*_C|&)diD65@iXdKJRq#HK@zBSDB5rS=cz>xcWJ0hv2U<_?m%gX3~&1)4-8B+4Zh z?DF5441S~dKBA2LOoy{ThlJr?N#;c5((8+BU4J!S@AAJHkhz0o?jV`FlmD~jTrNr0 zNl-Ho(B4w~&DCS!VO1Ovn8fC@_0vDX@u>(7CpA=#qs-UK9n*l!9h~aekjxz%pAL=A zWi0~j*%+FVxq1rwrP8#P#jb2vtp#7!3*gg%i0l{-k~ z4pO;;tE(OPQiRYEGL;lb5!&c#yK%*^Go3Zj_VelJLZfSkJ)&kG_lYabzf~1*GV}Gr zo!o%R9i(yxsocSFxuhuUGjS-ws-jb~LCpx#;7TJZ4Eou*R32bCtvKBGVrAm&N~G)5 z=IhJ#GzL`e;8drBRPNxo999Mg?oeufoRf3gFpf@AFNi)2At^$BBW{e;Ip>^eXky=* z2JlDDV7~rR&S*g84pO;;RPNxooN`^vjp&(b5D@)MPLHgk@KTje?z5Kj(4 z%%5|R8r0~xbD4MRoaXE6=UfIWQ z%lnH4CzNU*%B`gbu@2Nq$2`9P)rHO1Pj?XmGIx;79VBxH$K{;zE&~ajD5x;~{bpQB zBxG7jO8huhk_Z^}%m~#1h>WOdlCR1DH*4K|{oCy`Aae)F+(9yTa9mFAQ-Ys2Clx7f zsPchR&eKWXH^-;Nw8k;A32jJDm`=ysWA?jV^vNahZX%i$=xFm?BJ zPs?WcHbmBS>Exrb`}meTW&sp!J3O3+6g1VY?4UQlS(h+hzsyS-khz0XT^f?PgX40l zmwfa=IfVvbptYY zkjxzymW<7cM8O19@XDtYMR#tAH}ZIRsetE_L)iBwCn$`l{fXE#ratDdr!PV7{yh||!3@pK@^jqhca#%5Y z1cW@t-n7l&YNDn|neP!~^wj5CjzE+YgCu>n`0?h>{H_VjigHeYXpyBZL=gGBBikvljpr?{XgD$|*1!d&CEr*PV@EaSUf_cLEFcYgyScW|l)LLzr? zxtvbcQkuHqXoQ1h%I@O~sAaY9bZ?bI(^N|}oDv!7(OHF2!IeX2vmR`|UhW|VMD8Gw zJ4oaXt}Zv9DbYdHK1=w7+nVsV0E_Y^ywK=#$UypvqY}2YX;FWXbQiZ03L|9A<6FWOX-#St`Q@A9Xsm5r3{ z9f?n`)f3Iv%RR|}#vP<_2Wi~F<#PNCzCU{h7e6M6L{q9sDJV!xqK^#^(uf;xh z^Tq}98`jgz*ULTKfW{r9aR+JK!R2zI<*6?aPT)84;5h!`ZF-i;%rpDcaIp9A8qpAR zSP)OON!^9`OwTr7FZUb+8h4P!9i(vwSC`9|g3#$~M?6TV18F$141%)S3)x`UFI=%S zhz{w^wZs}!j+O&-bG=?*x{md|(164poa)7p#2s8+Z9XxXd9r8j8y#=be@s&hXI0u= zqd18<+tiLT2aceTs8k-z&FWX&s+XFtPt2DYkhp^+?jVUfxLl5dK;+IH#&!==786>O z${8Xih8*cGjYlL_;KY%Z6;1K2@(*_FRp#sEUTr|)4wAToB<|q2oSYfbSq>7(3WRyz zzRfLNFGrJ^1%u}XISJzUbVEgQkK>HWSG?YQy~*ETK;jNg^(IK-4vx!FD`H+U1hDoZ zVc`%H+jBBIx79Hbvp{wY0U;XI(M@w8=*%gexm9m5Uq9Vj4M^Orz<^*P`@`8wveOHi@y(hpx$Y|zJA_iK;jOPxPv6_;OcVo z5ti=b*aaH0Ah8NqI*k!IBqhX0cia^s0F*7=b@)yRgzNpo$VKq0_nNMcu=g2IxPw!D z08+SvtE=V13@b!fEerq`xOHW&Rmuo5;;2Z7${4!)B+MldMBW^kObkAJnAaaNU;lI; zHlT0^DcnH{cW_)TJ~0bYDN|a><7b62F0ep=N10ZLlX~6>e)%Dlh-n=rmWi?^@V!|d zH(zh^PZ&_RgB0!{g*!MdClSsLNfu@g3yXWjSjCsetR-wJ&L#)yL7gy&reWWRx1NZ}4HmP4i35HR$nu-BzM#k^dunhA%=iHwF=9u)@ zk&1d%l?c!!v#wBkx4vS&ewkl2pl}B%+(8O=aJk&Jd;|wS{n2G2IQn`fQ(@zFC8aFZ zv7b>UE@4}0XyM+$zW#q@-A%}DRTT$tl?*gcQ-cgt)G`B=`@GM+_qi_`_<;r)WXDWY zQ15%MmlQHsiXYGw@_V3z8q`1sHK>V$B6MJb9O$41MHrF;6;j9`gA}q4h5G$Zuz1-g z;!j&+ulG6U?7i1s>%Z3DF1EF*H_X@O-ZY?a2Pxb^3U_d~xvYbP!5o+#6bCO6^tgC- zkJJHitMO%=3%ZYpyu~9FgH)56Dxh_}Wx950-!>p{2MOFk0(Wq?wRs(g;%T5I+a&6i zQ(Y7)3RJpdXdfitEx@8<3;H4o2RaE4kT~M>z#SaT z;aDS_iJ%J{sWY-uS!O6B>6fl^1PY#_Ex3k)kV#^c|#<*|}VbXJ_ z{hL)CZ@&I@A2%Ry2MOFk0(WpU=O7Rq6=lZlu~WHLs@zKdo0+bQ5UD>0M@Z5_0gkHy z_N@XksZqTFPBdSit)DO;a0dz8K>~MhX-*lbV5q!+TzERkspJqSwpnJ66xBd`u;Q}V zmH1hj&M1pKp2NxJYjdX<5V(U=oeBxu!O@&I<{~F!7l{@fO{M%59-%l1bdUu}6`?C} zoZfIKh5Ft9oEcckt2*6$y~;mjK;RA%xPt`l;L;rKub7kd6`v@5ym?3-soY__OP4M+ znbfDK6=4*4GF(7aU3EV*fcW^YfPkbBijbA)x9(j-1(&m2bvs#j? z>g=)zUh2A|MWBbAwmj%1b(Z=1Q#sp!z#W|G97x~}j^@&xT%ii5U%xI<1{A@_Q=mg8 zbFR~YZ`G-n>yQ&e3^mFNb~)-!b)Nb9-F?=8z#W|Gd`RF9j^?l?+^W*)4gZ*!xg3d$ zy3c=ZqK~t@Q3o5xL4ME*w5f*4>kaEVdV%@+*L}f&z#SxT2MOH4r8!kixT~U-sl)Vh zJT09f>NrKuL?cjxw?bO0zo7$MK%^ffxa0dz8K>~MhX-8Ii65?O%-6od zR}4tpK@xY6#2p;X5dc6wQ;ZU=%JkewMa4=m7&S$>BXLu=Fqs4%ZJaX1a4x5$xsD^( zny(+`*9=J9!Kto;B<|p7E>4z>Uyw?lH;Y^B(v95BoR1lDqz}eEjhD=OPB9BAti2ko zW3{g9&DX!~8wMoqAc;Fj;tr1H5LTTo+MYS)F!s@Y?84d+%pGBT92|F{U`aN-3-33n zLyendNL|ctGGG6?n+-_ZK@xY6#2p;XsTk2%&aUZnQ4K9Qs1nudlom-DrQ30Oq4Q|9 zRYA6kg0)>uJ13ofZZ%*3y4wtB+`*}KAdNdXno9-^k;tu;bL6>lV=*y32fR?%M`5?jVgjNaGHU=7iX6CU#6|VznXKW_m~J zC%q!QBjOZsqVe4IlF`>uxLu}1RM*b4sk_bB%lsY#B6o1Adm)iKIGRHik~(rz<*^{k z+kZpD^u=Rs*xe+coIQeWWHfkc)}LUD{DP$6rtUXi|GEbZh}=OUcaX>(9L+@#BVr)p zYU0h|j*H(XX(6&LaHQ>3cnwyDgru~Ouz;dFS)%kJIBLE=%^x%%atDdrK_Yi>G#AF3 znl}$HQirw-0a>d)0_{nR_om8k0A_n!4`TAi#Y(V4=61js!?%={4 zO~Od)NFnkd z2S;-bHqGWmfZPDE1brguIjHEsf=*#}sNK#vf0AmFC}qsk8b1u65@BHilbYPxP2;bB+?OL92j1y!y%2SH}yU9^{@NB z0g*dM9wroF@b_Ifwo0fYl z?ug2VP5sDpeR=({0g*dMK%ZJEPybDF2Nz8{xJ+Ggg z#`8H`5qqh|g%MsqF<(E+pBfOkgGBBikvlk=Ls*QyhjZK!=QbX$Buc&=m;>XR6_`y8 zyT3?tKYJ)XS{kT}#u2$QUq8!d4T#)9B6pC;9bB5@Ir2Q*M%}$7uPtYt!cx_s)tl2# zZ-Q*4?kI;G=sr-Tatc9_&Fg38YjZz0AaVz%`UNC%2bbpT$!kZNT%o(7gIoe3?HpVf z!|@P|;v-r5;(IFV(Qu?JqSdywubwksn|t1X$Q>kd2Z`Llg}L1C$LINO6|=72 zsW%Y5&F8|7fkLXdGCIBrhwu?m7U~7_wYgs!5V?ay?jVsnxHPBaOcxcdu_G-F{32h8 zL?w+NmWjcqiplKA^%{`+6MV)=3CkwdugurxUNj(b2Z`K4B6n~!m%<_S6)2bo)9*mc zIgXiCoZT^bEjy}1M^%g*C@N0)D(OpdaJ8wI%-4I^%LYX5Adx#r99d z1H_1z?{Um!K6i8--(47#2z$QU8X4PNusCE-M10a$R)@#mny($P-x(0OgH!z;61js* zbG#mTKVf{HCgZ}yVWTU&8Gfj zzJ8c*84$UHMD8GwJ2;v{xTMCRj4{zgF04C`yQ%vEF1;HV>6irB1y@8QBH@%|Th2h~ z_4>2xF&1D6OuWQQbe#hri2WahKf1n3w#`a(H^{+eTw3s^tp6?bH^JHxr0RRAdx#bnoHX?H-Q9> zoCNkt5z_R@)DQr{M>ZzPGHUC!i$Q9U{zcp5a$9&u>IC!kmwBQAkvmA_4idS8OLL0L z(QjNkCAIY4ng}eVK0x`Qp*=vw;)QGT2e70R9xtgBq@Q&j_Q^J2;w?mXJtu3$jn9XHvFcMdjWe#&OsTMm*lWKLYT1_Orc&_>S z-JNGZ<_=EvIY{OXj^>=z_-HD!>`&rsnr+aG(1QsFC!NXMEY(qpGV1B2AB7Hj0?eJ#>qcL-I z(^CN`@`75D;HF}umHGPJZ5fccgH!E=WbWW-j`tWr0?NV|nP|rf931W%AZRZaufe0X z@G<&?9Fr~OCc0E=QX@vS-+cWrHwI+x;8fd?%pDxfsfkvKw&fI67|eZF)sY}DA_6vF zu9OM(^XZ+aJk3a%rB|+Onta+N=Ie)fsR5ZgNahZbxr3uQ0X~JNH~~C4v084KTy}(v z1Y4vNkd?U!p-XdF#MwptbY+wr=8M*4=IdW~xdE9wIMtPq%pDxf`OH#!CiN)Kr3D*) zpM%H#C?6Yoj0U735o*tA&+&EUXmtFf-AP?#zFr7d8<4q!WbPoDJ2;y2me37km$>c1 zqzZr1rCdKDMCq^y`O}zFQ8@Ow>f*|Gl1{gc@-x3|zW!9MF`#n?>D)m&cW^YPZ%W>Y zU*H;RBa=6zlw-qoLm)wHcX0y>$vaID6SUPlREHC!*zNkN`TAjAYe44?PBlR~cW^YP z%FdlG5Jqq_^G$85IjTZTIZd*Ui@t^Lhh1cW|m3 zAe}q7G{@a@i?pFQqosk=1@kiP)xrTh77_9EKoLXL06ctbac?OUzi(YPny<~>WI*Q* z(z%0l?%-(7UMLMADTz|#eQ=Kx2D6Jq)y~M>;*lNom>gT?r^Oe9GjR}j-yA}CP zOaL+3iMOe5nXlj7T?TaSAe}o%=MIkMkk=Iii)5Hg>6t{H=_udnui_1+kE^SStEN=F z_^A!m!c^g}^mbEazJ8c@8_>CfbnYOXJ2;xt{6K#Zho0UCX+vWtiFlsIZ{ks+-*!j2 zJ3(P}JNiASMR)g_kH}TsXTJV*_Z!f;gLLj7ojbTRmsVGD6vP{Z6IDwJcu1Oy>1lf? z_vM#HzQUiB)C}j$y77M(O|I{lugx7bAan-_-9bWka5TpUlDcx$PLDk9y5ntTpsF+s z`G|--dabO91uTdJMg%($B!py~6&plOqmU&e8G%~8Q*G0BPtR<1 z&*B}mIm9c75E9~m#DT-iku(1Se*=fQCWp+OQ$)1cNzPLCe5#n!9BG6Hz1m6p0Z)p^C5S0F_b@MT4?!{X?Z1vD)zL} z-j(>n_Rx>{q80l~J`CQ4?oZg;>^-J^-FnJ~Z5`+~`cB-{opWJ6h}9Jv_Tt`RLw9vg zZ|KdX;w;_-XA5I~#W`#|VEwHXd|`tT(dH*HxQCV>fy9h_8w$;}zz$MNtA4U&NbT~DWvv^eGhqF8? zlJInv9Oh{2#!>Pg~`TiIim>f*gpmXL9JULh7<=^;*{^!6Fn{lYK( zE5z+gowIz7nJVQTYdGfDrT2i9z82@o{J!)q)uSU&`RE7;qd3dKikz;(+cG|l6%hit z71PAf;jJv9%*yCt-fx)=Vt7fW;|t60J88>}RMYc$=eFDkQOeV!`O!F5& z7~dA#{6!&nkMD@PT#109xm`zdtuUf6(vNx%jY68g2~zS80jW}e@=}6|Qi00S168FD z>LB%7cETO3gCh8loq1RM4TNS%+U@%IYur*8Xp^;@r^vxCHZLK(z=liyNAXBKsDRYx z=0%A1g%t;{TApA|QF(ssPdi6xk{6@NczXOTtmI_fXY-fpGv;v-P9qbI^Mj*wGK$jt z7=uQm->Gsy?o=tE2)IlbDlt`ZyvUg7iSIfqSjtOY$TPW6OF}(ccrGPWVS=(w2GHL~D2HFM zhYGomL~+EulqUi>^#%^2$tT!mz4iZ>GTTL*M`501r)k_5W*@#Zqz<@-5k2N z8=n+;O7rF{d(hXki?`OIlTZX2D{kdE$9X^+kRuO(O{ZV&UFp_mSxaf3_NgUn|C|_E(w4l4n8R~@Vz;boNZ#ng}`Lp22;afOSJ^0~@wz5?D4(DH2%#ydQa zs{42Kf_lsYKHs?pwfasC@IK?s%%X7|hPD%iq2cPZdOH`oa}!KNYpe8(xfMk}R%9DJn2%l0%tm=14i7Y9yI0@cC3? z#q9vtXur1Hs<_Sm1eA)S1G3`myU~)9CEc#MqFP^a-KoLVr4?M2-gO;<9l;4;+8CH` z;;a>RC~T{55cv#vO8yB1nOA6)UZ>StG&%rD*cU+V;WGdQigYRM@tD5da{8)ZV$OHDAwbv<0ag=0XxZ1_^^fmYU=yewc^L?=T z+vaN|=+`*%ve|h0r1F5kX4PaGXI7mg0GR@4wK)dcIp(%7^mJH1cb}0J!e1rFa`XKj-<3ftQ20FJ+x*{g`G)@h literal 0 HcmV?d00001 diff --git a/src/app.py b/src/app.py new file mode 100644 index 0000000..a073d5e --- /dev/null +++ b/src/app.py @@ -0,0 +1,171 @@ +import sys + +from PyQt5.QtWidgets import QApplication, QGridLayout, QGroupBox, QLabel, QLineEdit, QMessageBox, QPushButton, \ + QSizePolicy, QVBoxLayout, QWidget +from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas +from matplotlib.figure import Figure + +import solver + + +class App(QWidget): + + def __init__(self): + super().__init__() + + self.solver = solver.Solver() + + self.grid = QGridLayout() + self.setLayout(self.grid) + + self.resize(1200, 600) + + self.plot = PlotCanvas(width=10, height=4) + self.grid.addWidget(self.plot, 1, 1, 1, 1) + + param_box = QGroupBox() + + param_vbox = QVBoxLayout() + + param_vbox.addWidget(QLabel('Длина цилиндра l')) + self.l_field = QLineEdit('20') + self.l_field.setStyleSheet("color: black;") + param_vbox.addWidget(self.l_field) + + param_vbox.addWidget(QLabel('Коэффициент диффузии D')) + self.D_field = QLineEdit('0.6') + self.D_field.setStyleSheet("color: black;") + param_vbox.addWidget(self.D_field) + + param_vbox.addWidget(QLabel('Мембранный коэффициент диффузии H')) + self.H_field = QLineEdit('4') + self.H_field.setStyleSheet("color: black;") + param_vbox.addWidget(self.H_field) + + param_vbox.addWidget(QLabel('Момент времени t')) + self.t_field = QLineEdit('0') + self.t_field.setStyleSheet("color: black;") + param_vbox.addWidget(self.t_field) + + param_vbox.addWidget(QLabel('Точность поиска собственных значений')) + self.eps_field = QLineEdit('1e-9') + self.eps_field.setStyleSheet("color: black;") + param_vbox.addWidget(self.eps_field) + + param_vbox.addWidget(QLabel('Количество членов ряда в суммировании')) + self.sum_count_field = QLineEdit('100') + self.sum_count_field.setStyleSheet("color: black;") + param_vbox.addWidget(self.sum_count_field) + + calc_button = QPushButton('Рассчитать') + calc_button.pressed.connect(self.calc) + param_vbox.addWidget(calc_button) + + param_vbox.addStretch(1) + param_box.setLayout(param_vbox) + + self.grid.addWidget(param_box, 1, 2, 1, 1) + + self.calc() + + def show_error(self, text): + msg = QMessageBox() + msg.setIcon(QMessageBox.Information) + + msg.setText(text) + msg.setWindowTitle("Ошибка расчетов") + msg.setStandardButtons(QMessageBox.Ok) + + msg.exec_() + + def calc(self): + try: + l_str = self.l_field.text() + l_val = float(l_str) + except Exception as e: + self.show_error(f'Некорректный формат числа: {l_str}') + return + + try: + D_str = self.D_field.text() + D_val = float(D_str) + except Exception as e: + self.show_error(f'Некорректный формат числа: {D_str}') + return + + try: + H_str = self.H_field.text() + H_val = float(H_str) + except Exception as e: + self.show_error(f'Некорректный формат числа: {H_str}') + return + + try: + t_str = self.t_field.text() + t_val = float(t_str) + except Exception as e: + self.show_error(f'Некорректный формат числа: {t_str}') + return + + try: + eps_str = self.eps_field.text() + eps_val = float(eps_str) + except Exception as e: + self.show_error(f'Некорректный формат числа: {eps_str}') + return + + try: + sum_count_str = self.sum_count_field.text() + sum_count_val = int(sum_count_str) + except Exception as e: + self.show_error(f'Некорректный формат числа: {sum_count_str}') + return + + if not ( + 1e-3 <= l_val <= 1e+3 and + 1e-3 <= D_val <= 1e+3 and + 1e-3 <= H_val <= 1e+3 and + 0 <= t_val <= 1e+3 and + 1e-20 <= eps_val <= 1e+3 and + 1 <= sum_count_val <= 1e+3 + ): + self.show_error(f'Некорректные входные данные') + return + + self.solver.set_params(l_val, D_val, H_val, t_val, eps_val, sum_count_val) + + plot_x, plot_y = self.solver.calc() + + self.plot.plot(plot_x, plot_y) + + +class PlotCanvas(FigureCanvas): + def __init__(self, parent=None, width=4, height=4, dpi=100): + fig = Figure(figsize=(width, height), dpi=dpi) + self.axes = fig.add_subplot(111) + + FigureCanvas.__init__(self, fig) + self.setParent(parent) + + FigureCanvas.setSizePolicy(self, QSizePolicy.Expanding, QSizePolicy.Expanding) + FigureCanvas.updateGeometry(self) + + def plot(self, plot_x, plot_y): + self.axes.clear() + + self.axes.plot(plot_x, plot_y) + self.axes.set_xlabel('$x, \\mathrm{м}$') + self.axes.set_ylabel('$u$') + self.axes.set_title('Поле концентрации вещества в цилиндре, $\\frac{\\mathrm{кг}}{\\mathrm{м}^3}$') + + self.axes.set_ylim(0, None) + + self.axes.grid(True) + self.draw() + + +if __name__ == '__main__': + app = QApplication(sys.argv) + ex = App() + ex.show() + sys.exit(app.exec_()) diff --git a/src/solver.py b/src/solver.py new file mode 100644 index 0000000..457fa31 --- /dev/null +++ b/src/solver.py @@ -0,0 +1,114 @@ +import datetime +import pickle + +import numpy as np + + +class Solver: + def __init__(self): + self.l = None + self.D = None + self.H = None + self.t = None + + self.eps = 1e-9 + self.sum_count = 100 + + self.alphas = np.zeros(0) + + def find_root(self, index): + C = self.H * self.l / 2 + + l = np.pi * index + self.eps + r = np.pi * index + np.pi / 2 - self.eps + + while True: + m = (l + r) / 2 + val = np.tan(m) - C / m + + if abs(val) < self.eps or abs(r - l) < self.eps: + return m + + if val > 0: + r = m + else: + l = m + + def set_params(self, l, D, H, t, eps, sum_count): + self.l = l + self.D = D + self.H = H + self.t = t + self.eps = eps + self.sum_count = sum_count + + self.alphas = np.array([self.find_root(i) for i in range(self.sum_count)]) + + def calc(self): + plot_x = np.linspace(0, self.l, 1000) + + start_dt = datetime.datetime.utcnow() + + plot_y = np.array([self.calc_single(x) for x in plot_x]) + + end_dt = datetime.datetime.utcnow() + + print((end_dt - start_dt) / 1000) + + return plot_x, plot_y + + # noinspection PyTypeChecker + def calc_single(self, x: float) -> float: + if self.l is None: + raise ValueError('Not initialized') + + # @formatter:off + return np.sum( + ( + -4 * np.pi ** 2 * ( + self.H * self.l * np.sin(2 * self.alphas * x / self.l) + + 2 * self.alphas * np.cos(2 * self.alphas * x / self.l) + ) * ( + -self.H * self.l * np.cos(2 * self.alphas) + + self.H * self.l + + 2 * self.alphas * np.sin(2 * self.alphas) + ) * np.exp( + -4 * self.D * self.alphas ** 2 * self.t / self.l ** 2 + ) / ( + 5 * ( + self.alphas ** 2 + - np.pi ** 2 + ) * ( + 4 * self.H ** 2 * self.alphas * self.l ** 2 + - self.H ** 2 * self.l ** 2 * np.sin(4 * self.alphas) + - 4 * self.H * self.alphas * self.l * (np.cos(4 * self.alphas) - 1) + + 4 * self.alphas ** 2 * ( + 4 * self.alphas + + np.sin(4 * self.alphas) + ) + ) + ) + ) + ) + # @formatter:on + + +with open('float_roots.pickle', 'rb') as file: + float_roots = pickle.load(file) + + +def u_elem(x, t, alpha_n): + return -4 * np.pi ** 2 * (alpha_n * np.cos(alpha_n * x / 10) + 40 * np.sin(alpha_n * x / 10)) * ( + alpha_n * np.sin(2 * alpha_n) - 40 * np.cos(2 * alpha_n) + 40) * np.exp(-3 * alpha_n ** 2 * t / 500) / ( + 5 * (alpha_n ** 2 - np.pi ** 2) * (alpha_n ** 2 * (4 * alpha_n + np.sin(4 * alpha_n)) - 80 * alpha_n * ( + np.cos(4 * alpha_n) - 1) + 6400 * alpha_n - 1600 * np.sin(4 * alpha_n))) + + +def u(x, t): + return np.sum(u_elem(x, t, float_roots)) + + +if __name__ == '__main__': + solver = Solver() + solver.set_params(20, 0.6, 4, 10) + print(solver.calc(10))