From 56db074632a9d27bc6f285e3007e39f02c562679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Thu, 16 Jun 2011 14:19:49 +0000 Subject: [PATCH] merge from the experimental_package branches/experimental-packages/Faster_static_convex_hull_3 --- .gitattributes | 7 + .../compare_different_approach.cpp | 95 ++ .../Convex_hull_3/is_on_positive_side.cpp | 182 ++++ .../doc_tex/Convex_hull_3/chull_bimba.png | Bin 0 -> 236596 bytes .../doc_tex/Convex_hull_3/convex_hull_3.tex | 50 +- .../Convex_hull_3_ref/ConvexHullTraits_3.tex | 39 +- .../Convex_hull_traits_3.tex | 5 +- .../IsStronglyConvexTraits_3.tex | 1 + .../Convex_hull_3_ref/convex_hull_3.tex | 15 +- .../convex_hull_3_to_polyhedron_3.tex | 34 + .../convex_hull_incremental_3.tex | 6 +- .../doc_tex/Convex_hull_3_ref/intro.tex | 3 +- .../doc_tex/Convex_hull_3_ref/main.tex | 1 + .../examples/Convex_hull_3/dynamic_hull_3.cpp | 23 +- .../incremental_hull_class_3.cpp | 68 ++ .../examples/Convex_hull_3/quickhull_3.cpp | 15 +- .../include/CGAL/Convex_hull_face_base_2.h | 70 ++ .../include/CGAL/Convex_hull_traits_3.h | 28 +- Convex_hull_3/include/CGAL/convex_hull_3.h | 845 +++++++++++------- .../CGAL/convex_hull_3_to_polyhedron_3.h | 93 ++ .../quick_hull_default_traits.cpp | 39 + .../test/Convex_hull_3/quickhull_test_3.cpp | 31 +- 22 files changed, 1274 insertions(+), 376 deletions(-) create mode 100644 Convex_hull_3/benchmark/Convex_hull_3/compare_different_approach.cpp create mode 100644 Convex_hull_3/benchmark/Convex_hull_3/is_on_positive_side.cpp create mode 100644 Convex_hull_3/doc_tex/Convex_hull_3/chull_bimba.png create mode 100644 Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_3_to_polyhedron_3.tex create mode 100644 Convex_hull_3/examples/Convex_hull_3/incremental_hull_class_3.cpp create mode 100644 Convex_hull_3/include/CGAL/Convex_hull_face_base_2.h create mode 100644 Convex_hull_3/include/CGAL/convex_hull_3_to_polyhedron_3.h create mode 100644 Convex_hull_3/test/Convex_hull_3/quick_hull_default_traits.cpp diff --git a/.gitattributes b/.gitattributes index 9fe0b687eb3..58e3416e03d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1417,9 +1417,16 @@ Convex_decomposition_3/test/Convex_decomposition_3/star.nef3 -text Convex_hull_2/demo/Convex_hull_2/help/index.html svneol=native#text/html Convex_hull_2/doc_tex/Convex_hull_2/convex_hull.png -text Convex_hull_2/doc_tex/Convex_hull_2/saarhull.png -text svneol=unset#image/png +Convex_hull_3/benchmark/Convex_hull_3/compare_different_approach.cpp -text +Convex_hull_3/benchmark/Convex_hull_3/is_on_positive_side.cpp -text Convex_hull_3/demo/Convex_hull_3/CMakeLists.txt -text Convex_hull_3/doc_tex/Convex_hull_3/bunny.png -text Convex_hull_3/doc_tex/Convex_hull_3/bunny.wrl.gz -text +Convex_hull_3/doc_tex/Convex_hull_3/chull_bimba.png -text +Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_3_to_polyhedron_3.tex -text +Convex_hull_3/examples/Convex_hull_3/incremental_hull_class_3.cpp -text +Convex_hull_3/include/CGAL/convex_hull_3_to_polyhedron_3.h -text +Convex_hull_3/test/Convex_hull_3/quick_hull_default_traits.cpp -text Developers_manual/doc_tex/Developers_manual/fig/Cartesian_ipoint.gif -text svneol=unset#image/gif Developers_manual/doc_tex/Developers_manual/fig/Cartesian_orientation.png -text svneol=unset#image/png Developers_manual/doc_tex/Developers_manual/fig/Object.gif -text svneol=unset#image/gif diff --git a/Convex_hull_3/benchmark/Convex_hull_3/compare_different_approach.cpp b/Convex_hull_3/benchmark/Convex_hull_3/compare_different_approach.cpp new file mode 100644 index 00000000000..145243337aa --- /dev/null +++ b/Convex_hull_3/benchmark/Convex_hull_3/compare_different_approach.cpp @@ -0,0 +1,95 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +typedef CGAL::Exact_predicates_inexact_constructions_kernel K; +typedef CGAL::Exact_predicates_exact_constructions_kernel EK; +typedef CGAL::Polyhedron_3 Polyhedron_3; +typedef CGAL::Polyhedron_3 EK_Polyhedron_3; +typedef K::Segment_3 Segment_3; +typedef CGAL::Delaunay_triangulation_3 Delaunay; + +// define point creator +typedef K::Point_3 Point_3; +typedef CGAL::Creator_uniform_3 PointCreator; + +void load_from_file(const char* path,std::vector& points) +{ + std::ifstream infile (path); + std::size_t nbpt; + infile >> nbpt; + points.reserve(nbpt); + Point_3 p; + while (--nbpt>0) + { + infile >> p; + points.push_back(p); + } +} + +int main(int argc,char** argv) +{ + std::vector points; + if (argc==1){ + CGAL::Random_points_in_sphere_3 gen(1.0); + int nbpt=1000000; + CGAL::copy_n( gen, nbpt, std::back_inserter(points) ); + std::cout << "Using " << 1000000 << " random points in the unit ball\n"; + } + else{ + load_from_file(argv[1],points); + std::cout << "Using a model with " << points.size() << " points.\n"; + } + + Polyhedron_3 poly; + + // compute convex hull + CGAL::Timer time; + time.start(); + CGAL::convex_hull_3(points.begin(), points.end(), poly); + time.stop(); + std::cout << "Static " << time.time() <<" "<< poly.size_of_vertices() << std::endl; + + poly.clear(); + + time.reset(); + time.start(); + Delaunay T(points.begin(), points.end()); + time.stop(); + std::cout << "Delaunay " << time.time() << std::endl; + time.start(); + CGAL::convex_hull_3_to_polyhedron_3(T,poly); + time.stop(); + std::cout << "Delaunay+to_poly " << time.time() <<" "<< poly.size_of_vertices() << std::endl; + poly.clear(); + + time.reset(); + time.start(); + CGAL::convex_hull_incremental_3( points.begin(), points.end(), poly, false); + time.stop(); + std::cout << "incremental EPIC " << time.time() <<" "<< poly.size_of_vertices() << std::endl; + + EK_Polyhedron_3 poly2; + std::vector ek_points; + ek_points.reserve(points.size()); + CGAL::Cartesian_converter convert; + for (std::vector::iterator it=points.begin();it!=points.end();++it){ + ek_points.push_back(convert(*it)); + } + time.reset(); + time.start(); + CGAL::convex_hull_incremental_3( ek_points.begin(), ek_points.end(), poly2, false); + time.stop(); + std::cout << "incremental EPEC " << time.time() <<" "<< poly2.size_of_vertices() << std::endl; + + return 0; +} diff --git a/Convex_hull_3/benchmark/Convex_hull_3/is_on_positive_side.cpp b/Convex_hull_3/benchmark/Convex_hull_3/is_on_positive_side.cpp new file mode 100644 index 00000000000..a9e37bcdd28 --- /dev/null +++ b/Convex_hull_3/benchmark/Convex_hull_3/is_on_positive_side.cpp @@ -0,0 +1,182 @@ +#include +#include +#include +#include +#include + + +#include + +namespace CGAL{ + +template +struct Is_on_positive_side_of_plane_3; + +template +struct Is_on_positive_side_of_plane_3{ + typedef typename Kernel::Point_3 Point_3; + Point_3 p,q,r; + typename Kernel::Orientation_3 orientation; +public: + Is_on_positive_side_of_plane_3(const Kernel& kernel,const Point_3& p_,const Point_3& q_,const Point_3& r_) + :p(p_),q(q_),r(r_),orientation(kernel.orientation_3_object()) {} + + bool operator() (const Point_3& s) const + { + return orientation(p,q,r,s) == CGAL::POSITIVE; + } +}; + +template +struct Is_on_positive_side_of_plane_3{ + typedef typename Kernel::Point_3 Point_3; + double m10,m20,m21,Maxx,Maxy,Maxz; + const Point_3& p_; + + int static_filtered(double psx,double psy, double psz) const{ + using std::fabs; + + // Then semi-static filter. + double maxx = Maxx; + if (maxx < fabs(psx)) maxx = fabs(psx); + double maxy = Maxy; + if (maxy < fabs(psy)) maxy = fabs(psy); + double maxz = Maxz; + if (maxz < fabs(psz)) maxz = fabs(psz); + double det = psx*m10 - m20*psy + m21*psz; + + // Sort maxx < maxy < maxz. + if (maxx > maxz) + std::swap(maxx, maxz); + if (maxy > maxz) + std::swap(maxy, maxz); + else if (maxy < maxx) + std::swap(maxx, maxy); + + // Protect against underflow in the computation of eps. + if (maxx < 1e-97) /* cbrt(min_double/eps) */ { + if (maxx == 0) + return 0; + } + // Protect against overflow in the computation of det. + else if (maxz < 1e102) /* cbrt(max_double [hadamard]/4) */ { + double eps = 5.1107127829973299e-15 * maxx * maxy * maxz; + if (det > eps) return 1; + if (det < -eps) return -1; + } + return 555; + } +public: + Is_on_positive_side_of_plane_3(const Kernel&,const Point_3& p,const Point_3& q,const Point_3& r):p_(p) + { + double pqx = q.x() - p.x(); + double pqy = q.y() - p.y(); + double pqz = q.z() - p.z(); + double prx = r.x() - p.x(); + double pry = r.y() - p.y(); + double prz = r.z() - p.z(); + + m10 = pqy*prz - pry*pqz; + m20 = pqx*prz - prx*pqz; + m21 = pqx*pry - prx*pqy; + + Maxx = fabs(pqx); + if (Maxx < fabs(prx)) Maxx = fabs(prx); + Maxy = fabs(pqy); + if (Maxy < fabs(pry)) Maxy = fabs(pry); + Maxz = fabs(pqz); + if (Maxz < fabs(prz)) Maxz = fabs(prz); + } + + bool operator() (const Point_3& s) const + { + double psx = s.x() - p_.x(); + double psy = s.y() - p_.y(); + double psz = s.z() - p_.z(); + + int static_res = static_filtered(psx,psy,psz); + if (static_res != 555) + return static_res == 1; + + std::cerr << "ERROR static predicate failure!!!\n"; + exit(EXIT_FAILURE); + } +}; + + +template +struct Is_on_positive_side_of_plane_3{ + typedef Simple_cartesian CK; + typedef typename Kernel::Point_3 Point_3; + + Cartesian_converter to_CK; + typename CK::Plane_3 ck_plane; + + Is_on_positive_side_of_plane_3(const Kernel&,const Point_3& p,const Point_3& q,const Point_3& r): + ck_plane(to_CK(p),to_CK(q),to_CK(r)) + {} + + bool operator() (const Point_3& s) const + { + try{ + return ck_plane.has_on_positive_side(to_CK(s)); + } + catch (Uncertain_conversion_exception){ + std::cerr << "ERROR Interval filtering failure\n"; + exit(EXIT_FAILURE); + } + } +}; + +}//namespace CGAL + + +typedef CGAL::Exact_predicates_inexact_constructions_kernel K; +typedef CGAL::Is_on_positive_side_of_plane_3 Pred_using_kernel; +typedef CGAL::Is_on_positive_side_of_plane_3 Pred_using_optimized_static; +typedef CGAL::Is_on_positive_side_of_plane_3 Pred_using_intervals; + + +template +void run(const K::Point_3& p,const K::Point_3& q,const K::Point_3& r,const std::vector& queries,Outputiterator out){ + CGAL::Timer time; time.start(); + Predicate predicate(K(),p,q,r); + for (std::vector::const_iterator it=queries.begin();it!=queries.end();++it) + *out++=predicate(*it); + time.stop(); + std::cout << time.time() << std::endl; +} + +int main() +{ + std::size_t nb_pts=20000000; + typedef CGAL::Creator_uniform_3 Creator; + CGAL::Random_points_in_sphere_3 gen(1); + + std::vector points; + points.reserve(nb_pts); + + K::Point_3 p=*gen++,q=*gen++,r=*gen++; + CGAL::copy_n(gen,nb_pts,std::back_inserter(points)); + + std::vector res0; res0.reserve(nb_pts); + std::vector res1; res1.reserve(nb_pts); + std::vector res2; res2.reserve(nb_pts); + + std::cout << "Running kernel predicates: "; + run(p,q,r,points,std::back_inserter(res0)); + std::cout << "Running static optimized predicates: "; + run(p,q,r,points,std::back_inserter(res1)); + std::cout << "Running predicates with intervals: "; + run(p,q,r,points,std::back_inserter(res2)); + + for (std::size_t k=0;kB&Q7m;TD2GIA0;Sz%y6( z=7fPCU^^K#84##0<^Ht=KJXaFOIuMER5QxB2|Qr2QqooffdZd^K;cm!&?WFx_y!2% z!v_Lwy#ay5K7c?p?s?y|B!Cz0xholYfk5{u{`b-+_oT18jNSixThKoBy_dih zKyW!3UH{pg5FdY&>Fit4tk`VDN4A43ulaSzQKVM6LTW!3j$FfbUEAh-+jcYCqFox` zIuJ@(62bUa$=UFF8>33~h!f)TX(W~JSI|29oRzKUltDdV6W;w`P z{+}Er?|^UETF6Xc5RT1zEd@H@+Ye?s8(-f4d8OoCmk=~;5C8wZa+no`2HF_T?~6j}4XgHp<8!m^8sZYkJD|A^2fDYTo_ zDwO1ZptZw9%g5ALLC{|JC@^s^OCJQ69THKjlu+Ehm{3;s1dbpk!0Y|Y z@+sja07MP1oasXGsW!cUM4b1w8bQIp-TV~k{Quq=_ZuX7@^QSB`=4LqC9(FiP}10x zhvIo7-#lAe6tIJ~>+bWRd0<9rC11?`^;=OR8_ivk-_ElPYDTo8&+79ke}!^~yE^UE9>jjJa% zy~Xk|&P^ESz>WeKJc7l#1Z?t?R2l@8Ws6CxMPd%cLg7 zNS(1Cpk%TahW_XLK!_+9ypNBu_fNm#rndKeip3{+@1$1nS@{An^faFB4k}VQ>S~!jnFgQX9${7U((aN&Pk^`SH z2Rwo!0cu%1kjTakH_{qbLG;x-XbpRrJP_Len6g*Lu?{9i@P=)@+O(|x_kCtbsa-6m!54+7-GyS+5{}L^4Opz%up5+rw*m z#UEBLh~+EP$^sFSJlx(+0+L;K*8Ft#Em5l+jl~><_ipR&{lDl6D@hG7 zRTtGzSMR*s8Y(F{G;K@f;WintT?c_EODk#?Tb(he-P0NxvzD~7lV{KN3knt=CYgP7 zz#Fr3a`e@F|HIl*uY!Ah^yX`&W4W=5%9C>Zw^Z_G2yg+fy9p8MUczry7>GqiY2Y$2 zfTTYC9aL87y&Fi0Gvi(_gt!FC29d4R&IYAIm3d$Ps5P&hwzo&}upuiGU%#oawlrQS_+qL=kKgTEmMw)4RZh`7ZXoaqA^%OPnseDPVzLO5$ zOf0leDGH2p=3lvZTrhHXS$jvy3Y9PD_vcyJts$7bYI`26PyPTjQzlXz` zxlRLSRe|c-tR}AxNog6is+F>lG2foXQh`7bFYn z4bR(-g{H#7p)6o9&VfWY^gv?3_7w?XreM%(`#HebUgtu2T`+=p+?-drhHWB^dPqb}zn9 zWJsBju(qw{R8i`ZH?bdOMLaeS$W&UlE4N6p$=t>4*o=vg`TxZb1M z8R+Rb*VhjVZ@=KdYhjalkEE~a+d4uQj&l^0jH20%thKGBm zrrOT-Zstw>UQ!T|oZl>%?O(pI3w=MP*nnXH{c<%QpZv#@QhuLR6#-;L@~a3#n79on!m{2JG}VaMKFwflZ(=lGs6fJ7CQ!A_7 z+l!S?v!TU{`qVoyL7%xFlsK#Ne`ZGlnovGvrAdZMbzn&1ogK)^K0~L z{VH`UGpRLoUd&D$&t;j-5?Z(h&c5NRa&w;F@T^vX#V9EH^<%MmdJLYe?tW*yna|q1 zEdPd^?R&IM&o~b$Dw;bv1u@HSY7|^g#gG(c7w#A2zwAE_h^b?ex_wwUcH507)w&$B zy~^3s_3{7z^m4RJR(&r2#q)+9Cc3rPk+I5Y<$U`#=hB4c&K+Klq))0Yw%i7KDSOua z@vq~S4yLU~uU@>k%FSI`bLW=wT9bs6H@V)-o}Y7#Nd`@u`gQF1`nBI)mUk?YJbKhs zT{-JmC-7+^Ejc*|ALlW7&-nP#<;@k^u?;<&qx9~c?4qL!b<|gmwMOGCvwgHtza%H0{r@#I0D7(q9ioW;(j_zcf;JM?>sJ)O1NcOk)Hkby}37jk6zA zNtMaXUk7d1S(&H7>Z*5Na%PC;7dW^qWDkuP=(#XH40+5{Xzv=z5c4)BW_xaKKj5(6 zZ^>tRNKH-n2k^r*1m%HGd)fp)U+3){Kh9027r!>;9%E1U6)<;j>Vm0A3a@XD_TN%Bia~55cZEq zD(w9rrL7&=@bFGSK`1_ouC}?MboG@2R?pRsDrTHABmaYcY1ds=@j##ia;o|YA`^Fa zQD~~~)Eh&>9JrR9qVt}bHNH%ZS|vy*H?LsP^mQBB)jU&mbigG*qTpH2pYz+BG0B^M zFM!q-CUMY>cXhUZx5^vV8hEnR^}bBl#`n&tJGb9_akf)8^v!=*+MJFuET1LLUf|m8 z?i7P!mXd=ext`hPkGcv7vB9+8H+>5%A6mt<`LSl?B*|Thi{G)*zjSM!R#SV}JeP&S zS^yxcudmN6>4%wVhba`497)1(8{oP(*%Nu!1%h%*FBBpyNqh)%(G4Z?W7Fg7m>b`+whuhh=hvu5Jhg=*xTS zjH_#^t4*6dte&YcBq=~(z7YGML?qcRlq zC~dr_2POX?j?J#Q76Rr08Vhjgh1TQau1hrg-63<=!EY4}m)WnYub40Yl&R%*-k#I~ zFrttk?4EX;r}Zr_UVWb~bv{pjZU{>5u)67K7t%kM_OzVs>aUv-rU1aiQco%G84Bfg z?034|O^4keV9l?qnIQK$Gbnl?i~!zRRj>*XnWrH>^)#Vmt!cd&Ei0>uBxLUM2((_g z*xGV>_k%uy1$M7M?4;LcTT;is&qtD1nVbcFJ)9j&KoGim;)*NHm%B|KpN2+C&CXr% zjoJC_oG${O`e~r>G`boq(pUetGvp4TK2~LNQQ;pvvoG~wj1ZqS(gJ7=F&4kJ7wnsx z9U5J8^mQm%A&DkD32bBcMbw`YgF&AriZGa0B_+ILV})M~jfrFE%e^A!I<#t=aX})a z7PP9RW!e=R0|T$(`|S15O+Xbes^%fa(~u0&N8SQ$)d-!`o-yqsK*iH%*lT0AQd z@%UTQws*OB*13M@f19GR`*Y_ujGq7Gw)s=;7@oVR)6XeTZ#z2Eh?)hgL=Nqx zpGtI%uA^({?Pp_`ikeQ_i=#F>TT&Rgm#OK#Sl~bQi(r4Ce}>$sL2+}d54+#iiZZ&) zHQf-7VIx3LToFA3*1@fwWqNq((^5*4FlKhcJH8 zp87g#PYFiJEcGiVC%-qeUyK>JIE6O6T^nbM$N4<7=lgTxpa5)ORe;h)u@utS+G!-G z>?ilf)MLWO4V@Z%CefyD{Cb*{gY|J(7;z+{!NFCEntErB>gkJjoh4W+5|Y=fluwD4 zy6$obNrP?r6M~jbY6|gjACXA~H_UZ>cdmKJyku@3#xSHTG4>?A#AzxRM|N`IrXzz( z>H#FLjDxDzFn=_kgarHI#oah2U}SD7lzr^j{Nks7y!fY z-#riWC%_6QF-48*Z_4aczY8rBQkvEgJ!AlqkF(TmIG9PY*p(9CtrL4nYgY%@%C? zcDsDAT#Io=R!<2|Oq4^ux4SK^gIP^Ez@DwZa9)VsY&Y8%i>dppt7^AS7}?XA#31D& zB>tTEP~tr=??rnYR9b0Ih?f-%iTKC?{JoSp0QwPm*}e3ew zGR6|&C&S=5Ki1cHRMmEk3`G#Cq=JGSCBR8ONzcZLbQFkrtr=XM-n^FYpGDT*O2~va z*oEP-e&W!3LhC;jp)css(TTF${W~99^aaQNWPH5s_uyIVmHnZcf!@FjY|? zMfR0{l4$w`n5C|3w4!*RU&&eXw>l143Em4H#4z>qpmq^{)wBcanYk1@IN zZYj-wGkKTrN~R-N#-zplG-xU4WRN}Vv$ozhlih}fF~yP)-z%bWFC$JtJAT1f+4WaN zdu3&FFS6rLPqzi=T_ndQ1P1xUqWXfFD2Y5W)jUmdY#NF=);wABYo@RmT#zR6Iq~Z} zrmV3?Z6QAL{mGk~c)Pp%49sB#SVUmQ2)6ZU#?ja)laq5hUhhY<{nNm<**QPQMt}3A zx`Kk(+HYIOt$E?l80ZtYG{PM&3xU(dq`^o*N~MRk0lD9!iT>@Gg=$bo z3bKOznGV`H;2@BamM$k%4lqv>r2_czox*yryIZN7iE@J)lU9d`GN;;()4q6${jj^M{kHwio2xUa>x16>{QNt@Qs48e zuIp8)Gy0!~E2bBTtnfG1U`8=;K`{Bw5}A4-LETI-A#Z{-5}yjy6dZrwa`g_wM;dhQI$+X#3`r4XHg>K-RKUtKei!FyL4=*d-)HQG#i6JE)@G z(@T;}?g3E*7zBeTY0-`y-@m_pdC9cDe|PflpJc*seSNcr;EN?e!G*u>0_0K3l#fBs zWV{Gz;>dIuJ=3C~(5VTFyQjr602@cdeXq+WjJP1=QRKa;;~VFRyrCRf_iIhB;?c-` z9MHcrDPcjMJd3Ys10uZ}EPd^ZXyOvQaHxD*8Jb$9ywF7vL$oP zZuZWU?TbVuEeS|kpZ~VC>p>z% z!&M=3f}I2(h?JQ?Ljs4C35z|GygX!dIY&!5R(BJqLGMZbaf>MDsRqyLT1!Hm_%S~5*a zK6+jZGZ@F6(Oy8h1V@65#{^Wa5h;tKtIxw^mHlUk0~sJ_e0?zAx_=d%3#6ntlZKNd?}ri6q#quqJ0%$z+pI8_ zPmw(h5@Yfuk0>Z=10`~?hZZ^dxg!}PBYvx%({Q;&o!+%)pcZ&wX`Vm^Y%Xb{@vMTRWH6zmXpd?Z2K|X zl9o}HGDRaLxifHYeoR5peAs%eWAUWAdf(NhqrBdeM4k>G$1@KG(M0gcNQ0y!y4lj| ztWceFNoH{hya&NsIZk`8n|4e=njn^laLVXJ%eBq&{dg2=Ys+_M{(>0+1{eKWxJk7B zor0a5ZDckw+&J;q7ZBQ0DqW*hNLMHPfinMGIjgKCFr>iA)l7t&rJk~WJb!tTRZA!#CjZ{_ehZ8-Lqf zHfyuhO2EN!VWeFl{-a0IP$27**0kf8OeQ}*ed_-BH%~*$HKh#q@A4hg&{@XoL+bar zN43R+S!&>b6xcml0(Zt1cN}lONNaKy@Xo1D>(a#3N?>xLpYf9!sQ7WMHjqKAWbZ+V)^9%->ai zvOckCl<=FSFTv8R+IMEDw$tU zH}~44CPO6IidIO_C$9KwWF#-*6AmjaX^L^ROKq!Ru1_J zMa46J39bi!1?hEIe&vtEJj=8ZGaZ?nEjH`}UB7ri26 z_Wy%wUhrj**NR{{5AJO4y4fAHJ{nhK4%sM*6%!YCa&lTtSsPP700zbenbR*Gj3zCh z&XZ?<&UgvNp6`%X@aCrxcUzts$N!+{`}>-QRJ;AXy@6}JT`fc>apBC8-Ry9Hchu8R z7hQn{kV2T0NC5fpXoM;O$8sPh#UOd3hp^}3xO=zrYo+C!tPsn4s-NSy9ZbU`Z>><> zIfCKExATR{02%*SI?b``?q>gP%b=@r+5lj2I5W7?XnXiR3=X3w=L2p|q&^f%9baxU zv%xPbk)6}O+%sUTQJ|PXF`9Qa@@*Xmn~VE21vQnklu7E*y#PIE%cna!R>+^7X`t(T zcp=2iop+BQr9k2$N&1g<(HCiiVaSb7-OQK%-z*8vEbhL$vt0(rB!!aNA`8M83yDIV zimK%UcRmpiNK()z)#9Dd>s(`(A_pHKhA8OBFe4pPXsE?9Ohyxp&IM*oH=x6)+dY%7 zfWecyUqy7gGyWCn=1a5S%OJ|l5%XLb$dY^hApRc(xX}s~*4W$?xqcYTgcFVj!hzBe z06={kC{`+nFCkacm6iH++#1kxOhbxd$s;c>fYb=>PXKDyctu6Y=D&#Eac3ces~dof zC6wt-NEo@fNqG>}S?Tx)wOWtCkE&O|(j%!Vb)l?ZY=)*L$~6ilLjt#_s-d!Q#H8bi zn()HP@kKJz%fP#vGduq5hvL3(XrDm77fu6|`BfoKLP6eo&)&kHcy`bjUL$>YBHEIu zHS?FKJWc{G%t$#?+1}K`)jgnr9^+sZ$W?Z1xtFz6e7;dnRXh$#zzvn!*u`HT#VH_k z75>Q4AFp_}loA+Jv_J|nwEp+EgF}lDbCjBKedI_-V9n1$3r6bSv`Xaym1(7!f6>^-Y9>+RWPkM*NDCsz5m!pjfwN zW{{Mnqy%HlO^cxuYIhC|dP;z(MVo8|0u|73B!~nYt>fWoJcueQvbZW!W9Fs=$FTM; z1GHR6-HiY1x%`SrT(xZ@q1D4GFsMTJNfr`da2e$*428CQn>F7{=9}@+>SwDa9i9(j zFyDWrx;PJKj^P!OLBaE1EGE)5Zl4s6H8(d87RJHgNd4+>hd&suuCAEFt`FA>f?Q9w z&{R}ZN5chDG(B0En=mTn-}JrR8yx4Wyg&pfA)}QKbN{YIB-VN45D0X9{-E=FvH!N2 zIJ&=wJRnDQ_wn0HOH|-f3{BgKaxDi0M~ydTn~J8tj-<*EqIyeyBk4$|GgLZ z=!Xh9(UI?a>4bsee=xX-1fR#LuRo`yU)W0m zs#naGc@#LN$l4Q@mCH-X=IUo>FdbXlwnr$IABp8>%z6+NVYWYFeNAjN-+Fu>@|MQ@ zTF!1gc4G6OPcB7aLR!l);*GahBx+*j*O!V)M<*-n96%e6uJ^W@XqGo%MJgsl1?Zi) zg-o^TV%8sn+(CQ+(U51#L>xpk@}13Rm=eV<_JrUfD2=@9`ly?qPlpojq*l7|^?7 zp=bVLYwJPe@pNq+6%`Jsot?V0G#X=LSAJUO3SEh;T+qiibyXYN>DQsd)(8_GM|9;W zdx8J(vU`98Q&g&i*O+a?f(HtyrCS)g!W)3SauLcks5MKn_%Q!(E$j}dZF_e2m~uLK z$mn$GngEvGZTYs|-IUc0Q=PToo&6-SS(6-Tutynmz%R}@9)wxQx}#o7u)6wL{b46j z%hGUQIZz9XN-4PrnEVCmJbNjpMXSc^DuYpf-bSO-X6Y54=qVusiU%7ul&S98y!Ws< zkkCM^jF%|ZcKBXRPUiLhwic@WTpJd|FDmr%h7)uERCWU$uib_*GhRq5gIn;YZ-FGJ z`1)7eccH6mbOT|A@zL39z&MZ*RaQ0%2mswXJ9Na4 z(g(9EE1g_hmV>BO@)nY}~+%15ib!Nu|~i`q7KW{wGuzFwm!bmKk&A*}*4@hN8a86fkGv9~YUfGu(h z_eZT|eXsay4cfkhCo=;#0m~n45A?yVOWkcI5NY`MBr&R`!QzWQKYQI&W!&iK?tV}% zb+eiM!mi0>?sOe7o3Xucx1wp>wJb8Q+T9cR=Z{RPGERwyM|<71!Fc`PJG0;Zq~R(| z)kkh{7SrWP%XtHN>~!G;9>|Z0WoPrr({LP!*mT5K#whwE<0Ul^8-|BmsXQe`>ICc z>90+lZjM|1Jw4_dCxX+aXYNJN(4)a;)zxRtv;XiJQAGF;dfiw3*dZWRa5$J%8WIad zd8Cf~=v{6A3c}bJb4^97a&2?UI|(3e(DU>6kd2GmyZp2g3RVC<0NE2;DUttNu)Vx0 zd~LY#Jl82Okg35q7vRID3qmhlp6FCBEP9_GbWKm0&7n_Nwd9K9_=x|C46pKgd6gsJ zUB)hIor;?@GMy55ZjO;idoK#u@jdC3t9tlBVKh@HDWdsZ4d*-t{ zEz^!lP3UpJJ=7r^yBr&YJ2$E0{4XlF)91wtl(5TX)tEt+dLkvhJ0md}^8Lp#>U2-m*`r_ ztDOcH7Z;6}CzGeUbE_OTceYNK_4~KwvK}f1THp(bnKqj1zch)}R=Sn_(*vqc+h*$- zOii4dzP@Zb;?k2{RhBe^4-WBCfV(|DY8tlJ?N|me_6PA$w+xbbGPc-@XE`n;9-q~d zu+}p6f}-MVp6A5$*K}EOQ66`&42*E_Y@REVzQ`xg=dyQ=`On%zjIX>pr=xMRHY)C> z825V{iL7)rulviapb+YFdyS{RUC-cpj_&Kb50p(ORPvR$_!2u@2?3322~JxU={tt7 z-a|cSMDY<1t-pBN9e;ZptC4^CV|bW>TBXr!|Hxkq@9jjZ$$)*8VdpguBZ?xv!q8bF z?SLXGndKkxD{Kol8G@73Sb%|mv?jw* z@L2*I+%jABbM3xxs|h74+ga#a;ECe*Wt@^a0#v;8pJ4fZ14cHXgiu4$K|HBW+$jH3U0 zUmsKE2m$U(2%I1i^~Rlw2)Hc=<8t(D1IFF!_!)o)EB-5+P~uZ0dem7+8Tt-0uQU-D z;jXT+Z-tT5LsK)NR=$*~$5Ig$_h{CAk?uVIYbEYyR*FVISRqA>3BtJ};(mLR_5!b7 zy^^{dPqDSN1u7Ro1k0^(sV^`DU`s?GVb8mg3qq&?Di4Zlyld&DpIyHCrQO+zv+$fs zWl-KDEq66(Xdh8>=82?}G5q9SV1CV&)%>&!PyU(h;cBiW^nKKJ;x1nH4o*vzMl!jr zG-TzN9K{;blZbb9)bRL0=ql8jL6($^(vAX(dm&-(ghxW68P5TTR7)b(jwp|7Knnzz zt0fI6eMwzW>xC7Ue(>qPOmq4z(ZaYn6R}X$%NVepGI;Nr;GSmly@IdLX?ql*H zWzZYgJvjN$YJHLBes_0?-B_rb`+>pcSM!oO9ZD-ce}|_oqZG7AOx`yJ)t0X;t~P+*lA#_b{`on@D!W#$V-qTaC9<|XY(poUyu@P zR7Co)!q$${PPU~c#t((EhdhAbHLQZ-g3@5Vf4YS!;-BWa1hBZ@CW|vIi-1`P!sRA@ z?Mr10f~l$1u_DhB5U7UAj+@cCI$_UN2)r^$!Hu)=*Nnd@ryxzD+OMxd8OEP$7P;Zt zFn&iqz+IC8<*(4Swpji!-8OGo2Vxm4mWt?xl5=qyqfm;40cC!>vpl(Kr!6co7DtLr zp*NQ{LzyEZBfGPW+pX&b+Z!9_OYdhhFgGd0nEZaeRQ1S5irvWCi1I>$agI+MAJMo7 z@SkE=lQo~mSRShiMWp}oQRY)3zTx7O8i{_7@O9qCKt0E$RT?gn8r^Q*q-&b{|GHOK zPmXksPJ86fZi*!V9qAKC)rZ+E>IoXfKcb{7$64TG<&S2I{$fcvxuri8s{S)=;3Oo> z-Ywl-{mbh7_ZXoI@bY3}ohIgYO(9o{FC=eO)ka3pXmRzzTVJ)2Q3khb-URK2Dwyy) zDzFxm4;~?qL`8I=`MI|FjQ!?@?DXU%U_b-EMQl}~6f~8R3VV`E zg4rDrs9tT^nV&Z*u)8PA1&P*mR7MzPs>zi+YG|-4*6L#UBjEBG>2&HpWyfC^9sNQ_ zCzeAw68m0%`#p>&I}d2m(YWj0Qz#$DxPNh5bL*Ks+Ir+(F5bf`UdfRWbHZ=tS!s$%wv1E?W zu|x#)XTiVj?)w5RA9BT6;qCg{pEx4>e@i^Ci)FEo8P8Uws++OanNZi_&J#WMO8TL% zRcBmMH#*EXV*5%ge`wWs^f(-5nx5WfPmioIdnP>6(L$g~S^DjpPh@1R)ZO*a*<#Q$ zxU3BHeXM6s)x#&0v%je+VPwSmKYz+A z1T4FB@i5s>^7`PFV`Km3e2WJ*EI`7vw%v1me!ifxavP2)$PTc&I=#}b4P_r9Du#fh z>#@nu%n@qKy5+^iLQ;|&&o_U{1=LElb$on;Kcm$ni(;^rpt$9O3qdEz1dDE0H+qJk zg;nDp^>9ofwY++1eIND(04v2_4)Fyh4-v`AR5xv$m=Tw-r4?0FylQBmQTjbU<(od# zD3qJD;>k+fi#8 zoi8qyS5^wGd5%w%hfPiSGN|PqUBt~T#9Mq)E>(N-D)er#tZbVO5I10i(;3bVuX;0Y zZ>JR%Z>CMBaX{ZaaLvG|L)(Uci83|ya;|Ju$%F12yV1N>fLauwA1O3;G_XCBB3-c; zMZKLi!y}U-1{4JV2NHDiB|g%oG|Q?mfZKA-3ezR@sU{;|wa`jsMP3|Xf9eoL)7)QB zncVLuv0gd*>1H6i_n0C)u>_)wHi7HV)BQ9{IMXv3HLz@?r26$LInt9s{6YeP`!@gv zxzOco4Hg}rSIxq7yzBB9;CC)qck8-2UAjFD$e9un4Dp^Q+u!m|2CR+GDaFi;0$e1S zwUI8u3;(`MU{Z(bMAV^R^$9~B)W|4lzSP~u#zrk6L8t=s!vw~*nKu$D!Z_4`fkyGs zcYM^|Jihqc^T(1le^7U@-XpT-g}}dh1*=4qoqm=7Ydv(b2~V$wL$V70I{?Iu+V)1v za%bdNVFZ%XeS?rg=pt>5oozA+Y3FdgL!sM48NT8HI^vAuTHemk0G4@Y23 zoP?&`P59{_mUB=fPdGNdB&TzAZYKo=`};R5V5jT>m6M=x)?;t}k%CpDnR&%THV%kB z3E6cgityIe6J!A>IMenj88|Ma=jTt7Hov>dZ^prZq&SwpUF4u#ZEJ5V4?Vi9OHR&E zQ#%Rl*!$CiXMXuR3m8EcW@cD4+HWXC4*}5eij{&rIWq0RVOCdE(5Z9;NbKRq&qMV6 z1J>LW7V&Hnjc%P@Xg3Gszs@crJ z7pZi&QvH;%c1PF3Z*?Q#?D3rNQKkJQ;u#x+Ex9+?%-OBn*!X8>5M9_rYT|6k_=eB4 zX|vzHSq9P9<}i!im|DvZ=YJE0V|&ZOxe#%6ncog7D*PSRo(n|Jv{7y^dU^9Al5N~gYjjGIdUwv zf&vR%T&n#yitJ)yQ2;}|4(Ryww6sb62!#?V)MjO6!rEH0tjzGLC7GoE-NC^IKwEOF z?A}s>&4J57Rswy588Fzp%8ZIsmSg=Zanvm}iBTP#x3(w4~hn|Il# zG`VKRDC=Q}Q5<`^jYllqYPt4K4%ZKv_!#wjST0k0>+FKOD+9};es9ul8?!cIn{rQm z*->s26IunRoRCVDp^Si_#bdP{K%a6W{}*moh)cGILd&zWN_sZ z$B}XM+^X?oc&iByI9!*b?_n}^xmR?rmXT=(PoYMvEM76k7iY2DBsfAq;uw-&;h?q~?UO6mSoO zHV3U9Vwc7p9}2yu7%Si2s#)l~$t_oZ`KB2Vj*#ft`_Xa0w9JCC0Zg_vHEmZ{=97*K zA^?#dsiu~DAK!?z1%jE#fSq=~-9HL0E5U}at6v|i<#yFh7_I&mzYr84LH#f*aR}iS zqK+p9U?(EVe%86}>)0?OD}+c^wiH02nHLuml1nF`59Q@&S2sbkb4xFT{RUQNSrSYn znR`7l78c(^+2E=rb;(H`ZyFkxTOw^9=MaFp6V0I9l(3jOYNExLL7@O@Zv6J`%(1cA zeSY@Mm!AFFo$VKS67Zb`E)o)l2eWceCPuQZqn}=Fz8znkje=}!(1mQuK-erXE300; zCH&PeCYwQ2shcRl`NA^Zb#G*=i>j-=Wu{8gkTJNXuY)QrxGu}&x3B`{E zP0|Kb_P8v<|DHA{cuPN*qilH9^d^BuKhKpg3yHsq{y7Jx8CqGXyZ_(1MZpLW56vfz z&ru}6GK(A7Q|qeWWsvXA%yX$O5bGr>?AovTH2wH^e4%Y=^K9ROR_FCxtXu1w4;;B`3U z8ZZ~$fs59a0PL5WFitE5bdZDug8Ujzayo2_2@g#=Os4ki^i*;Spgin{xw$q@s8j5s z`+t+N;;5OXzh8+8D5i*1k60`{6+j z0*9;40oy4Se*mW^FZaJ1^ScVbC;fXq*ve^J@1k8As{B9#3?e3$*gbLG*bULGJp(Ko zkwulAxB3bE7dNpG*+{51vYN6KP`g);cPAZv($n4KN zt%T4%iRrz;ILEDfF$e`mVCw@rhU~oub>Z*7RTWCc$5m~6oNGKpW@BT___G~J z2!e`OAh;hL00zxkh}RBdBGd+?ZBtVxUhlx-qWKr+%BIsCJi^X_`sXqOHvDf-PurSZ zLki~><|mGcLE0)qBfMSL*=Xb)PgWu@p2W+=2+|{!ZHBFJFM`=UMe#HYu>YdKDmxr5wgbF5$xOU&Ej;|1>A zG6!4d9l^++SPQ^B;nGA6I=A;uWwDQfHO{I}l(n{EeSD^KM=sxdVeUJ zo|i-pT@BJKQNBO_+aFw;+QEj+GIhVG5Z<;y&YL^B4-EQ8fCNY)WhN)^P^h8!(PNGpmCj!2QZJqKjxXlPaC(R}C?;P6|@&tEMFyWNV8E@2ug%gLGJ&u#@g z3aRRfUahIU;}zq&jsoan4hvceqKDItY6>NQEA0lbPxHR^O~;r-T5v|O$bP@QF|V%e z;!OLHog>!A7g#dh?6ZBx@Ni+@{p*%DHQ>0hkl>AHtNLtcAt1!Vod=Y;SywlYHgS#o zz+d)N{J9;`z-Ct}7RFf4m^_=1&`4~RU$Cg6WnA0ri=dUkRqwS+$Li%4~|Z>el-bO{WE z0yJU8#YMr7AKN(HEMNr8vGM%R9|k-;UVZ(VX2VKA80f$zEBZ4H+_-fA#aCm4?_6K3 zBazeUsyiy>Gy?SZWf5p&U~|F+iw(kOjm3gx_$W)K?427LVj1XN0bv#6ERgnr1^(UE zi49JID!sma1k`D3{syysqJk_i&WmhLLc&5@%-6AI6UxUj-2lDn^oA!El=@D=m{Pv5 z)+g|C{`&fjo*p5p=nDeL#3D z9*=v*9S-RA!^BFZJR^A-8lHe+j|Q>AG}taKr@L@PYa?XWt)Kqw)zo`$npW?nKMCHYKz%NOYziQgUWC@U_Yips>nAD`jQg zJ1yPAeJFB(UR!%e5NUC?2QbYx0+&F4nMOZjV3J(%I@_-O>g(GBOp^qxe6+!w8FiXU z0MR#mT*a~y(y5l7ew98*2mfnTSGT!&LlAkk>lS8xyhe6**0psgU|iifIOrPj=K40B zgk&06o|6)1+^(LQU1;mtaR2(4e1afy$g%oQfLZmEva)XgD_`O;l0fCRk2!V&0geHnNT+mxqt?Ub6yruzlj}N*l-NZ5lnFqeyU_A;OG}gKJNq+*!t%OYO>jM!9mr)cf$T_^8g7v|a5?e3i=?u3CfhPXFJ*b)VGDK%gvH$YZfK z#4e3SkJis)xd)U)r6C^XIjcn0mb%QNkmGo}5Wr;u#T6DNOk)4l3* zO=oN6*0*op)FXRjp|G(;ny~Uz7Iy?VmMpBi(sATy^|jybrKf7!h@lj#!2hF}$_0B?{r^PFg zwd3|CfZ(L0{TR-jJYif-f;xQjrTJSRQr+%v!0q|rzIgtSL;-qmmQ z0psMh_f*BxyMmWj`yFQwiC+yY_}`}1>Sr&62@fz2r-Tu!=i>(6 zu*KqpLnAzkZxVRgs!R>&`#I{pfE78;Rvoo?vkw2SIhI6}I%V1&`on*TY1CelJz21jCJsW<(5U`xG4X%}t2N5{4hr{hT(9XNKT%Q2G;N8;zAEIWmYgP5?WS zIWvH!zHoo8G9jk=Zv{qx=f|7n(R^{g-N4ORC%+bxJ)me62CPj2-b-^zJ6+E5A@oxS zUE?emlz>u%L`>Q{OD?TtX8HkYK{F=j=}*AD0s7rvZ3&S9S$B|1_#cR?+o{;CpY--F z029%NVu6zr@vp`~R#?4OMse|=*;QjMI3)^4Cj585i!|i%y?YTGo`RRbb10N~Qhy9! zHVHIe>b0^W1eO<ZrX8ynzMb58FiPD`$g}A< zHkN2AZJn4E03KxqwQY?&|2XXLq$J@!ON#N0zLV)NGxcT~^I&&IY|HnJ4X31}X+Y}C z9*G%Q3nVU4(spZX!j&E#W}I^T4_R>}ne8h;@FP3)^m2&_UJR}Mk7;ei^VyiS?8Jm3 zhjOgNdj%{xcy#%53>1fDT%f1E)xD*w*s_`*^0qlg8M4@mtr%Th%$p6F9Sw}_Hc2Rr~#1V-Ri4hTrAq0d0 zX=y3AT_ zgMzjEQ&6On{^I1MV7#$2-(XL|IXGv;;*8*Bk|wqm4OB4rFXJ_b3~Fd1B@r+;WevW| zqY<13sA{hRb6+7KBY_|zElc4a3%syX)}59*#4!YFY86Rg!{OAU+f2ZZY2Pp||4EVv zqXQs7ET(Ey!N>#*IQBzP#geD#WqSvUSKw4*OjISR_%ZItCIk_Nb@ul1f$8c|UyLU6 zT&%xQu+fu@kvT1ujDW0nJ zcqsAvPS{uOIFv?$l?~B{)*r6FZZ&Qa_gA(q?Ek9UQ@MHOPF{@DdG|QD40Fu z|Fz1Zvdg4g#;_l8&ct+To<@XKozEiN+JXF>dk-M8YI-{S-2i-(3YG>|SsFDR7Z*7> z&*L>MaK(iS3xDXECXcQ)b;1h+AXMe|{Iy{^xx6rc(-`A+qgmn%3pc9@A2L9=su zdP7G}K_nh+@DZ>TvvbW3%SH5bXXQFqi@m+4jEP^Xs>CbYfY0+LB0^>H04ah5%10Vs zsKF;$HO@C)mfPcgZ0TA?RSwa8>>ov7lZA!pVsTClTa1i+HB+A_nj~TDslUCso>8I- zTW+2M{(E0d@8&)(jfSdnnmt2~m;%=8*Ys9a6{)GbI8>vS{mjn*$N?i%VT_fIw&Gxk z?n8dW08jfP;vtp@z`(IM$fUTQMZ80Mv@RSvqvF3+4yE^pLVobFqz{@|kQG@7!*X>i zYBgufOwWpyg^5DM0#!KLj#MHIgmWN@FPSq*G6$yn)9-8tvsi1agTZtxGRx~w%({UV zKh&Usoa}|rH{YAt82%$mWJ;{laof2YP%7_ee*ON`pPPM4RJCJrX;%PgN#UV=SP3Q( ztOePL?+zt7bY;KwA=G|v_kQ3CnNGG`ig+?8sjlVlIr+#ld|gL+OKN*I^2JLOiM9fN zMLxj_Lr7_c8l%$cwyYolPKZ>2XIJVYaU+I#2|{xYm?$$vTWOZAM*sq&gqU0ar+P{% z$b5cDwGPsI(S|JovnLm_*T3scEWyUk)hs*v7550c<6UHd0#OiOCNR91_NUnawDyyv z3@T}5%yxxes)@&x3_Uc1Qr|(Nzl)sw9%PsU2-Ed0d}e0rvs27rFdnBh2VA3! z0h>+dUVZacb%XQ?bBT03eR$t-kA(5T?^M0kgP&%4o}2rA$LY_qea_AT0?+_H-6U^c zxcvV;Aj4SezwGRCx)$TTGP+wYRBbu-0L&e|1sf}eT70hB>}LNxOzcIz@nX!>ooqVS z3J|uRZ9I>Pc@goB-b2t1sl4TEn^)!P`A-a-lK)xZ?|u$s?ps+lzRU*k4T@!4p`t#j zR{gC$^N+E7LG3>}+TPQ16ZdNY;B#qdGW2qDpp$!!hnLCEdJiHFz%K-o2QNNVaQ{Gb zY(99s0s2FW0-PT-Fe$$oT|+1uJBXHu?{pB24paI>27ypT#|FcO%qa)g#pC)+fij}Q z!~c2sJ1vSZ7*}Rnu^6RMCOrZV{##17^!H6H5i%>2laH+E2u%u36f84H64 zzj9|OMl9eDIg%V3@sg8^WsOuS5Qp|X&W~I?1^l(-Lo*JH;mx!txW$IIMrJZyUoDRmyPeAB;WJWvRQvve8)i- zX;fq=bFRe>fSbN57nYZw7mP564jUQ02V{l`+{x?8Yi&Ko*|k*-1{1x$z6ONP{KZX6 zOG^y7(CrH)B`D`UOcT+RVh2Yk{cfd4)u=CPQjXnPy^h!Uk58IhoPY*0KaW$zTeI~%}1pw~eu7Tq_q%M{rDh(9|BHvDbe&|<)p z-n+FfGVvUoWSQA7Os780>N24SQIe2fFM12EOG~|kp^<3uusp_WIe;?#{o5=8Llo4P zU#rE7CE~nzA>;x6cPwk!vgI~T>xPF@&)e>}mI&l05^GU+0xYt=Z-H;4R`ZPXaWE8Z zz;+iP6>mog6|O5yoMVM(FEtzL>NVc)vQmqfk8s-RjbHI0esdThipR2vxHB!&my8%G z|02$c>cEsYbksGKV_=P4e$aK>Vm(#K3?Y5)!^@08r9aj6BFItGnCf0%pgs(V%MMDT z6&#!rz7mI3WihupvE_S2{ioI0LLL8f086Cd$0rawrYqx`b2l zh&Y3TjE5){Mu|N?wR)Zm!{O&f9q;91MN*bZgcG z$mt>eqn45t=L5epHa8{>>g$6$-h%7Rj$bb&jqkdbNzcNz)yMOnI>V?PhiY0sXME?x zxb5bykEQ(qEjfK?sBVr$)J)4C%d&}0?ZDVaVQ5CiEl#qV%i}>~cB)W}M~}>&N4pl) zs1&dRDz!tDN=2ig-O@(BnAy}Rb4t5pq!{+|Nw_=Ln|)We48a>%U*Yp;;!E$phQ$Nx zG$c|w9DMg7!LYDce}Ei^#S)2Ape;leR&n!W*MaLO86jQ3ZUm2B=7Fg52`nGmWTkH> zL}ELT>%&70K9}tl8lioyx!jh%_u3XweWEFp*n9a1LN{m+uGn~YMp`b8zpf`6G0_x0 z?#FAubC8QzbaWy@i4ujN4V}=@0$;|a3k#z;x#wXqgYT%FfHe`g?S~$KAgNWu{Q1XV z`fm3bSHthZAht(16CZl-hXaF>SC!f;KOvkD@v@9R*5&H+x*3kTk}X|31q_RkCI?*= zFEXqGgZ} zV3)6`$n2_rc@$$kd4M8MM&d4e{HUfD{ZJTQT>KgnQ>gWFO)nM!l0m>B2&$=VXW6K3 zHsnEWkMh{x<_39K;-v)~8!4?^a!B+3Rw@1fq=jz@%Zn3J;(@BUsnWW=rl<_^R$asX>9|FVID{Q%er>WkJV28Hfex#zD1 zg4+8Xrj&|wxyec({s2;Z<8}+2=0_o- z9gjs+K#Y~NeoUSm6uaU<1Px{;X+lup2E}7pbG?A<91qT$v)8IK>()2bezi={wHvd1 zXu@BQcnA}PvPEG(5eN3zw)v*>bac$VX6@EH5tsvc+XiV4z+t+Oq3YJ66>d)2u3Zst z!a}13&L;czz2*h5MDBcVy?EL0RKLR?zCWLR(AbpIgYepwzvUf1F{yHn*2;I);43;o z-diBlYP(;HY5%l`Sg7e6MCWjtIEitfkX5CN_4%=9*N-c$?-#w9OR;ah^V8^7Tdlsd z_jvNG!2Ywb_p9LK5R6Z+hB#p2v3(fv+Wht+kW}13x-InoCv*Q{^%bR7o;UI_Z|iNo3>B1+!9&pyAb+j3S- zT3vm)h6t~*KIT-6T@G@%qdqLc+_q~Ybbgt1Kj=6ifgT&%6%Uu+4(Z-+n%$-NhSNo2?NxTg zTb2p6Vrd#0VA-6=AEC-JW0QUxKi%D}b$vU+BildtqJE0(#8WK?c6b#7!ett^zOt?y zKMc!z*nzWnVEi8467VBrYU=e&ozM8V* z5t1i!fOupCeRQcV_~QI>oRe$s+l&@XTuxk^+RQXyLjOxCnXm){SiBCv(~;o{7S&if z9$|IB?^8XXdN&fP&9Zb@`Y7z`QAob5ngNGuulL{CnyJXVOCyxsRGO+ z8my|6bTha{Sj?ZzjP@Tx9EBO*mON^^4j(qKR;WH2wXCd!;FCjGNbPw@ys(q=PQXzq z9NlxbV@3cP%hIX8WcY4I@WK&~X!1)-nST7pE~*IX=(muC#SWq0#w374770eg2SYv_ zUVNBov35Mt&xy6R{`(U3b7-i<#YM|P^FBmW;-|y)LVNbQV}s4i?MsSmXjoHNSaviT zed0NBw0iFB>WhT&`29PPQ%^eeocKWPw)dA6-pwO4uft%>$fS0_|Hu4;I`enCd2WDv zg9sa7>Rw)0kXj!UT0ei$WBL{zs=*9eZx_Cn1$z!6oK#~+zGSIMYnOL`0?K2&?+zp#8_x%AQXPG(*Su z@1>MR@Tw*eeRP0627c|Hm5=j&fs`DV-gI#(g%&N8M2t+_@%a>@zn2}Fv_Yf`h&bZs zo_HQ3M~$Uc(duBk2S#(P=Fa?yX*TAQPh;d7X3IiEe{O0QPNbvJ1e?yXS%acb(Dl;Q z$m_JY+Lk|{QYc{8V&;Sfcng9rmb?fgxIn|roz;mnM1EP->P8lr7%b+`%xW-5z_C$; zg(Hi@!`zmZiap4StgN_!4aLUR*4uO~f40^1cnzm$MDuL+ z?m`&)*X_mDUN%qs%nKWfgyJ(;DkpKVY8SCoaG~Qqp|o4};#j z2N~H$dB~PKI!4GThtJ7Bu9hSO_QXJlcdMgR2K#L?rP9^yjhEnggB>@Ax3}@i=I)Fi zlK;BYnn_N2r)nlSy`KfL5dNf%&t)qh-OhK&x(?Idp8U@@a2n_vExXjzpkGQpkBlnU zblE>SIdtaRu`iWHhy{OmLJx$1jWkX_ZqC}aiv2}n$9H*Ewcq{@&-pg#+9e}KN1au2 zVhOOlG`Lh4@)4-d41gw_nK%ddaLv?L{1?6lQQU&)V-HX$uvOJJU6}!pPj(#%Zzhp? zjy55W?$&0ZM%@dhmf2o8coP~oHulV2H=ltYPOhc?eQ3!3X0c-))SUZobB+-fr4<#R z%oiP@Q(%T+B})9>IJH$+c@n+};z~qdh2Y3@ZylPsLIe+)mY7Xpi5Jt;6Sz7zdl|2c zot@2ug}SP!*`=jSzQ89iVShwJWA`y8J0KR;CCc@zYKknOM}wUHeCIN{eW7oa8g?&p zpiDI#Ge9u0_h07>^=!@mNaQcf>)Xtn&HsEB}qsZ@d07L%mu6ps`bfkcvw!Sa*YW_zfOl(cj=a780=J-^ z8Kr#|LdCMyV5CrvG8k=G-f4$c? zHu^?J9@JZ3a+i${j~owyl&8xZGzVGw$kae}acF3!?7CxA_d5m6Py-1F;KD61qcmNa$fvob&OQrt)iI|VgbEBh*3@g=B z$UXqbJ%WYA)x#yVsAr671@4&_1$8v`IJr_fPT!%rUt_LeL6!KrD-jRA5 z`|Y>b=M^!2*EC*d%}b7Dea54jWo50tuVvnd<~Zg4ilDZt;y@c7n+*yYS1D`z-Ega` zQljp4823TavtNMXp`!`_&e;=Vvs@hCN=mk!;v|G1)<}0gvfUg88=k*KBfP)^JUr%7 zG_u)+B&SLx28LRGpb7&@GzzFq0GHp|vH|0p2B(;eH|L<46pqIoGy~&AV6ka+*?v+fILMFpsf=s6Vxsp3RuwrpCnBl!;m1`*^EP&E zRt7oraq#)-)wxHcx+CUWLG8El8=@ww-Itep<>hVLyFSch&p`l<(&_0$O8=PGxo>UW z@)=;pz{e=Yl5B0;dix_FTlho4NRGYx}TEz4GU0w@oLhg-;#0gwYer?)xw2*k zUaNgnCfzqLZn`uTxhVMB5-;z^R-D{9N$knuf$^Q+_KqaCx!_jdyW&NTJ85+pjoV?~ zmp;o$q%=!a5aXEPVdHhUF*`(?qwJFo^Xdi2AaUkHa$)mR=-2Cwqw2v?`XScnC`RBc z@&Uy~;>4A0(~V9?hukZ@TZO1@@FV`&1ZvsCz$G4G*mQU}IF>kFz0!N~NyQaZe}m+~ zu(zAepL24IOxJi&>_i3c7%Ehs{al<&O~nKx+3K-EgrXO}PJ_0&;nKy%MqGG!9_TTO zielvCUSwtpJjEvv%M0@HkpmC!=qkpv<~Y0)A^OLrUVuZu=X=REjjY)f2z#9`yi!$pAGED4h~ zSv>=W^xR)0I3Svnjhw=PZ^lEgzH-QIOyv#%1zAW!k3za}L-`VWaUri?JCQ*qC(c29 z5s(;%0kvbbT?X2eWpc6Vt>&GjOyD_{5qd zBqoAax#4D06s$j9lht0vu`MP#xU(Am$$KQ~b@yP1K%M_=M zFZn~+LPWj$lKd7y67vrSYXbwIq_dJ`rloF9HM-QOmRt!a?)z=;lw%FPe)`P~9K|6| zp6HuH`A>;r5x`Fx_~TREL04;&Vr_wYYL~5BxSkesW`ft`s$-;%wy}*GN*|&<5U3_y zo-B5+eDY^O{!qEPrz-nIZE#LSik@EDjPAcV?$^vod^cTDJo3Y_&qN?Rz82aPkmS&1 z5$Mq+xr`Cauq&5$N;D9rK=cVOFn&bWTTcTsI>?(sEbnto%}E!C!+9Sdy-P1g@$bij z);-7BZzg@~pqF3wXkTvWKs-m>;&XQx5TF!!rv z2WYxfRDkbg93TrltA<=!BMS?WAX&P?4Y-P+R2?aRCINb;|HMr3NCQrYHDj$l*90I% zrHVQLfw*?;P&?gO{WRN7hwcf9_`tT#%(!dN{QMJqf(Q2iv6not{V>GzUVv|OA0l~BfslxvNhG=&J9T=%5(rPBzvBK2taTGIT}R>Kjq>QtWayYAKpQdV8;V6_F8 zRnD$_-M>kv{iCk5ExVEk7uu@x0!JZxT58rRxFr7jr+7vAgOOTSJyF()lkajM=42fX zU&!wV`{#lk6A2=L5QZ&9%=Us7tBB+P7|5=ytlVhrYXl1%E{rg!f(_L9p5KlZ`NsFS zgEA40`ie%o#pRE!H&LL)1Am-&YVmlBZ$XQX^ldr%if{|LzOf z)K{dW@`5twn|iaVRbOXk>;J8r2$YIU|C)sHCleswCl-}!<6T5n8+3hO<5x>v$ zb!z2cJxgL*jV2Q!{Mfxwny!ffhr{NF!{6;PHuzS@q5{-_awxl}l0t61SV_pjrbVZu z_CXLPL?5QOJ|G|hV+5~frY-{!J71 zC<46ajhlthZ}z_PW}696$W6K3%~Ed9z3{-=nZg{k)JFzaV&K_5BWq9Xvjh7oVuY?g}pM8n}G)*8o@Gye;+lBO&63T{Jlz|we&0CW+_3{ z(DfI0)`K|c#ulRzuz7h4Lxs+&{5*GS9|6fFe0rJ~xOhXu^fc>sfWnuY3lT?o0zd)` zCUxu78C&L7`7+1!D_vb%JIt;3wy*j(M}%Ids%n+tqwWox3w5~D(do83fQ<*CY@mI$ ztW7MeC5vjxH3SiqkM0qQO8}t~1}Hays}n#{;pTz(a4n-{lCtsMV+oj8XuDFeK0EK= z@uf`qo@BwFyu1n>uig6S=U2XbEkl1Cf#Kpg&MB~CL>piym#7du9;AUFqu-j=uo7*_ z6|IZ2p^sC0dutIWlbZjgHJV!Ukp^IlltBqrMIgeh%r`*HC~E|Hbi&982xL|T;^*CBElp{LMpI2v%~TR6{VC-d>W1EJR60_C|0*^3jgd!lmDGyd-u$~M!uVlb_b!VS0{Qq(kD3h=GHT9Dj>ZnU z0rhyTW*8zz!uWgL*_JdNWdym*Hi)lPQ`0L^wK}@AMozw0Ad4&rFgU5HDUwip9*+Ag zikMCb52aW&X>MZTMTyMnVTJ|wnp;ytiGyR8KhL&$n{SZfzkkqSPANvJ^%w#vw--P= z{HmT(W{j1P9-EktT+Y`fiCG4dsF09hP|iGmPFLS_w3@6pU1jwCKkU%BW`Ri$qo(GE zsn!Wmq=o;oSi_&UXZMq%6<)raXFQt)6)%AXNl)?8(zuIS#>qcZ1qaC7r-}KUQ=AG? zuMV|R+dDfvXe9z)LG(C+lhWvAzaHBu=<{9cXn%$nz6>Gc*xrVOM#E3+%XVg(H`Mr_SzMC3{vcPEC3*;59@zxHFMy zetzUwDQ|fFwA^Uwo9z0Lr5Lk zaz2kVh~|jk(vXprXQ#gbuh#AvcCDsW{lwV`f1Kof6-Fn!{U^XwP4|R7l`#S3$H7O( z{kN=qZfN5CcV}lnLqn^(Hy@10j!Vs~22j(DMeAy=UU{n9#&9FS7lW&!vSyKzCUS^E zK!{ga3lcs}L=fSgJqhmBKah<7G>BH`($Q)XkMFeR>UOZm8hj|)T35%EIpCnJ8t+~< zZp6{JzV7wk8WYt#2YvXOYXxw8x8xW^&I1cnEqQX4x~79R?Hfld5q8|yY=@FE{d^+o z8TTO(M{Qj>^0-0#gZ%@pVWOlN10^bq0wNHF;M@;lkJHneU{G?GhDr&6$smDxn*xtEd+a0urR2^XxZKGOZg~;)I7e|kimfZP)OAwoQ6$Qo08SG zlt00pkpF6SnD}Kw%0%L*OV7dt)1LFoxwLrVG**Snm#@|%5;15wp@HhA_O#l_idVu|wHd-lF+JE^%ROD;JBHT| zOF_6of;9L$vM53r;e9Ib6FD^?qm_m?zU%5Oo@e7=v3yZhZE6WOc>-I4ER2lM`(5_A z!EyJ57p|vj+WywQCKy?D) z0*TAae8R=4qsGt~^ZaTNTo?vZh`}1Dfo2&e*>kCapQ+M6jK4;|10g`CiwCiNwbUff z_b z6&4Z~1LDXFgF+HsHhI+88XJ2W8#83eJ_r)2LWdTL<(}Ahb*O9_-JYH zsg#R+EtUZ15sXoe5-=f^0_!go~p&6U3nK8_u`w$&qO=ACdX+6XMRFc7pbRB)i#*x&t z1&_LsKmLo6h4>p2A`&8pZwu&iCcm?Qly97sr?#6MZX5FR<7Ibpx2Y?~2BB=4WzQIJ zkhsC})TrkAb9=5gAh|c#9km1z=Fk35H+CSGE)a|A_Bie*n3$LcZyO45I)uOwZ^|$# z7cWg|&qDG{spM67=gw431(+8>MdZPV({i~xhA*?0pS7wKN~P@nTstj|>JNuA-^|FS za1M+f1@Z-F_tyH;g=#A8$IVX^K85CT@W^gBM}yH5M;X{EK|sNGqEtpw#84_9yR}^b zhT{$yzl{THYL-DP$>X1Y_XhU%9`u_M$do7*KMnl6zSj6C1QGrEKe$#E#0!Aef-m!R zT*`>~4w(I%?OaY|W$A$j-qeDM&j)D?woSWF1ogr+ZFs%TCVE!1DTk8##5)!jrRjoU zip3{mW7|I$bEcq!CG3n9Z(iON$;{tPNcH;OwyURJ)i4&pTm>&qS%q zSmTdqQOcm?R$DT~g%;Lz#RsMch@>bHt2O1 zsbLU&m%98EyOQ}s7l~INYgF72M@q^9B-XcrR~qchz(D~{owfPk=U?qf^HO0bR1`qb z%tS|ATA1P(@gPEG_4rSNlaQ5N8+T?_mqTEo%ciq1(Pg9%)(2R3wPFrr=d9bB%XvL> zkVWq{OL*ZgAmd1|NT@6IV(S=QvQtteTB0y zyH^Vq9jSBSf&cQ+gtld_#bKHLQ3w%)Py`9$j1Ro2QcnO~J-auyK6v+!yY13ACpMn} z7gE}A30R6a=>a@~w!&e35~;E-#Y~CcE5|R>Of4_irx@@I=keEGWN$fJ2L z;21_7)b0cRH5Zqeu&|gf%7tL}6p7T$=xB~K_P6@^0>!5uf&^4>3g4%Y&x%h=$HDIq z3o^9r15~71kg(BP9j-GDh75?5G)Iq4~J z$>$Y{_pl`%*&6GQxhv9mm70e!zMmq{Zv_O*($mw)$jH0}=l8j3_Uxi(SNA>mq6!OP z9onjU1t02bG{7T7Mm|0**lSv1sA2wq7NLYJIs8E8t48+ptCYjBSfZ8lXq|>kn8%Wm zJOBJQ`03s5GQ3@yXiL5G5%=+`a`fG->C#efyya$MbAMf}#*8_IP^_baex6jKN8yS} z3feaq`2S&P?fk1SfGxtz^%*Y=V=&qG1>&JR5u7ZZ{V7(jtoKtt++Uep6n@ucm)^0I zAE6i``ZZJcg2|HmqGGZ9zl;Sgqy3DzxK&hb2aMOgX_AI2R84|>#E9tkYbMZkDOR7# zvRxfPJrln>CnnYAKI5aIZ^Ncm8g)B!+AP=6Zr7f>(|$aTD@|<|U1vU5t$;wSK%-;O zh8VaV3^-`y2iS^7+`71eSg(p~S>4#E_OnPC8Z0q|K-e-*IHmLUgkMH3E->7Jda*ky zy9;UUdiH5{ZhHL8HEU4d-$ohe8&HHP{W7Pg+@ca)hBV<~AWvgWn?)IT+8UhN=%51s z#m|Uw@L3=)Bos|*IE~;Gkx}5Ym|a}d0m>%Wj3c2nV-wyvipTAplef&(@}K3Go5Om4 z(<5UU#6`TXa8vrE2~*D-riTK{41a1y7m^xI{^hG?b`MxaC{ct7nsJ=_@(hUewSkCS zIP{~^C(FUC3PLOa{^p`OSEgvNy-Y@H2G~n`cXio#E`I*{RdRUoeXt(n&gPGRIPk`* z!%%O*h*&s20k9}uQ_m>gew;|=> zpsC2)jV5Jgg$D4@o;VHh1mGD=`70aWf zctBpyP*b$Y^vUzB`~7!%j7N$o6=G@li&_dzl+3afaXRX_O^!JF7G0X*b>+tGQg=R9 zH`iKrEB%BxU0FUT4L=l)URFt8b@iKQuqKlp-RE>kM9_Nin~3Rj#YT|`h6RIuNd1W5 z{;kl8n+sKDTsyCc28%ebs_Q&lU475@05srg2&Y0(CQDu3-00f95y!xNOC%mF>eSKU z1=JgQR4&62b`UF!Cs}$Rf;#5Ejf;e$63WE~z-mkzF?DuE@Lb^E&d;ByWUJ#}zgn%i z6cvUS&tGV@Uh5!=!Sar1uf3^S+gTx?rpTL{`?dmAy#e!qul-VIg_-HVy5rNdZVNKB z0~8WJGibp6`{RTU-(;}Ew19*t18E$4E3_kdhw_&ebbvrTL(yyCOSli0sDY6;2( zOo+lK+4xRl$5CrK4X$vVrs^w^`{g@PcU(R%C^^c)KPR#2?n- zpu<863uX|3;JzipOUb}uj-1*hNtEn5_U1~z4*_Y>Bzl{-4=$b=o<|OAa`53$c*{#7 z+@Vrqz#RY!?%G?$sl}vxb3&P*A&uErO8F+l@-!FO6dWGurb+1S8(IC0TWOfoPNq(D z?&CyNZs@L**T5%xKL><&u~VC}%DJgB-eO|%4ap${!t!RN;FBJ?uRN3j@)2RtkeATx zp7kK)r{N2|N<@sVHSc3A7*>k3uH!%Ah8GZih>48OQ$MU<$qOI?SCJ^7OOXmn32O9v zzVTSLZg0S*MzIn7yIbISXqGAKrbRjOsDcd*@d(^Jrv?!7O~nArTCp`X>y1rqwZ1pp zre=d#yiVCOEmVY0BgKFf?w>Jx1PnZB6Lv#78WiF1sPpWYnjd;|=lA+DpANXhXPA>r zeDD6t)p9;q@YDW&06bUWunN^>TucY@4QExv6*BtQoMV{q}PH`qaRe7wGU z=9xLbF66iMJ2iX7Q6X&{`Eg)bLqn-1e7(lV$V;jCG9={Iq|f$INN9Y|Q%GfWv>Rn` z$(SjKf>~Iw4Hio%2DxAWI}?u^Gv6VRlHq!W7Y3+)qpHz?!SnchGIWo+wIuAjw;&Zt z5g1a3)zi{k!Hg(5(zr$;rYOin>GkU(2&6%qBQcE@DoH^yG3so@!%vPQV^zBnLA)H`G0V(|O(+@@659?53l-MO*00&5>>RVKo!Kp9 zU?hnIiv!*i%-yLnE`4%3S_s;hGBcpY5Mzrm0Hkr(>?f~*FJsBTsH`55ag%tu$S%jg zeo=6ET+nW5?-9rSU2$yc53XBPTe&fesJJ1Qlc}ddugYX6eRY`it93c$ww7m`y107v zK*3f6lb~Z)7jx7xE8Z0;n*RvwdZj}BTnZ3aFtnpqAMGqeWdA%Cj{p4k5Jhpw@=Ul2 zKG{fYW!2I9cE0ZdlZsx6_My-1@g2XA(DJG7x}(j4hlA@GGB~xaZd*KV!u(fzdkZG! z6zWgw<>6_|(k!^!Fs_B_V)%YsTXZ zz%f%T3VZ?=SKnrNV6W_7!9b(n?;2-8ZKZ|y!~MEOt)RNLb{3%Wskz#R7a*C*q3y17 zXD37y1bO7owD6HV=SsD-*Y2ne+zE}KUh(*KoZB~MjpT54yF(0eFh}3gj z>Wra9SM$AH(ybdp7nHyaUo#Uh{2>m};n1x3C>q8<6#KVa+kqTI9rqV0 zPUO?ShKuS|FRo4LuOp0A0}1K1Jd6%&x^5dY4AGT+lIxM27_@PB1uFKmH)~0XUOkkl z@uZ}8D!NYM@xHI8vDG9om}UNuX4^nWUOkKNg!l(SAm2}>UedZs6*%=`uNu4t!Ss6G zsuXid3?JZ04_5QR_#A0Gv30VUaC2kSmpuPvqC&YCG8o35Y7v(Av;zWx4+gyr^Zjly zVz%-^mXTAB0a2^Tin8<&WJQ%;Zx=GypY60^QjU){-|S57e;HGa>b?(oim!)EC3~9_ z(Ac*ATR^HUyfY7>C;7y?eTstUX0c6qRV3=M1?7FJhpikyH?fsNy2 z3DBZsK&vRPeatifsBPeyj{Zr4s|V$5Yb(@oG}V<`FP z5;zPQ6H@hRw}JqQ!p?J%JM|aPm1U}!p~Gh<*UWH!Ce+WPRlAC^mNWz>ol=4BzPWWX z$W_Wn;lZW)ez~>};%JsH?};w;CeA3m6zcf${@puIFE?VGLy$8FOhnPS9H7{}FT&%t z#~V5vo=X|=6Ud8h4XV_g>C&2+1L@KOTFii0p_eWMkp-Y;CAtrNST+vU1X*!#g|ZrF%j&iE=0*5$x60>3cC^N zl3QJgOOBc8hGs;5IuWQw9*C~BpLW&1y@-+)LuNo59r@Bi4(2Il?_g>i_al@xkER&* zER?)?j#4p_pTQzva<@b)O6X(CbYKH*-S@$gF}mATNLJ|90@WpMhwnj<-3tM-PUJGU zZYIo~<9-=4IOmq_vZRe~o=)E02>o<0+?^&6qb3(wP*P%zG#pr;;S=)v_#Xi{VypK) zegzErc>Hby3JcG>mRl@qv(`r#6KUc6;v;mpM%HynTU&VK^o%BIq>;{)5I8!(Su-#e z48)H;C%O$gXlMrW6{!+>%(#FW38Eh*gHuvdXNifK2q>e|zCr*+?{zt>z@WJu<@ED9nW4nr*Lgcn?(#Z4fLci ze4qM;%Q`W`ZtHTXq9De^p6y-2U~j?f(e2qy4FZ325a9(uiHRsXL%>o}7v}UH(+*rC zbE_sF%dM351+cv~tE$Rp@jzZ>>>Y@&4hj;S=WDymA69Ru9I~pfSNz16m?q$LrUn|T zzFJTK+f|KXQWhvWy^r>G>Iju{(&i%K6XKo#hb2B0rCViO#UG;kw5V!LCOY~UCvvlT zwa8q=d3}TX%Xg3;+AO@t14MBCf4c+hy1{n)$KnR0EIWB$zG%uc&Sq_GS=P@y#}At* z)xh*kwmtT{*FzxJv#_Fk#ByzE&Z z+|2k`pkQTRu;A45h=_>v7jeuh)?wg%o``(2s#9gvPu#bdRM>Ghb8$(W@JJs8XvHHNoOKK1K#hY4^N;`Z>&O=hRK4B%-U6-i+H?Cg?-ckgyvIoBP zQ$Na;O7QEwDf0X07FAdvp8`V9eK`6*M(w_3n3?u`BH}M$Y&qX*2Ud*4xa(&2e1I+8 z+z6S#b>4R1p=11J^uLU6GM0{;i~n_WKj_a2N7Yis8;Z*fO#ew4Hgcx_<;4216e-3`$8a$ z`5gRd)Y1kRD!^9|G1Ed0G3NLOvTR?-&@rK@O2!Q9D}ErSt;+#YO+RJ*z0lMNIVtqU zi!b?+6-Ux)-+o$_APEkhCNn4gdnZc!oL1i^#6y;eqZr>4UJ&KAoCZDzUjA!Ovvn_@ z)^g#`F$e%)&=Ze z0IUoj1u=AK{UBtj^y{?u+HcnJa-Ry2pZwY>@IUq5GpLe%^3t;0{p}aW* z5t%VOZ)}=_{ivGU8WwynSe>rsv+4}nM|E(WfHlDS3mP$I#3Dodti6vN0wGu!kMFs9 zdAXgxm0iasFZy93ND&AW^QqR>_s)$t(43i;hob*&q6BNGe52@?pc=`21rytYnQw}Q z&A}$!qc<Msl0>r*@{@6`cEDhMALEdL)?=w+Ib>tuS&c$6Y1qRlSV_ z^d|2V>2d_Kd)Kv_gZ6X(K8f>)P0&3pyFki+Z|jE}mIn{ar%hL+@U$%zf6tZi5HDm+ zs%`6%;r$Z7oXBbnftct^Ka6Beyy|HJ`(hm=3IeO=1PLFjRhZ6S>0)>2r%wM@y6So8 z`CfL>XY-GYI!m#T>bCq7SUec*?0lwc7uGQ>HnLEVd|TCeyS27fmiiGmn6iLOd4s!r z;64tTdzq$|G5s%}Er3^GerR*Yv!z5H`bx{y4mp|LKk)h^s;o|uu-dXeUW=Fe z#i6m|$;sv*|MkHO?dFTYygWTpaXsW@&+$P@1fjq=Y zvzf89nh_N8lTN~f*Fb(aP$VU`%%zxEK-n-c3Dg*w05QGSe0=lC(^{+ErYX39e9;1IhlXksI*q!!4PeVF%#nQkcd8scVUu(XEYjxOQwuMs zl3A8+US0behmFNVxy>R_&|p{?n63jY{aM*A_pN{zc{StYD)J8qVwf3>+% zeRNm*IAj{j<2lk!3{!i;7W?Sg=KWeh&oQ!*nW)$P-Qlt>K`Phfg;L}9FB&6P=WrWk zWk!zN)jx_Td|)W_Tjsvb{WUa$b6mfx_X8%n;dfKv*K5qj(0|-q>9XBaRLD|VPVt=L zwo3R1H`m#}&d$hvpZ#nLvVukC`g8p#n}D%W=J`d!%$-OKZ>q9 z9t!u5pU563sw*Q!S!ZQtmQ@iVdygpN?6XI9_LqzhijM4vlQT2pjLeI3gwEb)X8oSu zU%g(vUdebo&*$@=gQp$fq=6;x#?!c}a`X4O3KB}8<>tcGE`KT;LtLCze*(F|#%9RN z(V|9y^xcvd`3EOCNCh@pWODNV$y|S%x#^YB{8sN3=c1B4#j^$?(d+os#fya2xSRgO zWo=DPRPj8(_b@l?;kN?Tj11u?dLI^y^F?a>N$;}yYaIoahC(aqkUf2U=|Bh_x>}+G zy4r>Y20-uQ3BVtG4+%=ufPLFyqKX*!VXeb6G9aqV_3L!XIX|I?Dlc7NcB zVu=-seuQA-eMf~PNF+=)Zq4lbh90)&0~X%4dRb-=)Qr2%1h;k#6F7*EAMYH=>>fit zNm_Vlq~IE(8A>&@yo44kiv`@Wai8QcHUuL?g%QWg3AHY_hr-V0dM7QWl!j400l`c4 zvg^e->DLYZ=2p_lUxh!AmtPcZ3f39DESz;RANl=+vy%6pL9z21r*`hvrp!l2);C8% zaOF1Ac1|mQR7XE(0a!s3&;efKuQD?;&$pQ__@LkG^|IdC`@3%s13!H_@rl(ecVrt7 z)qOjhyI5|Rop{o24QiQeDk zi2VNKGjIMaXV;k)uca8tM2NKp4eE{9q72VdW7cYW{;2l9>+5DLEF!$`dPv7lb?K4b z(|E#}yVYzn2qc!zqXs(S`R#4)g7<#M#0!ZB#{n`;{Lr_)KASggg$9H0KFSCJ*vmw& z#cL`kFflOA0=KmeYYtu1aY;#Laq%pu=ybN3``O;U1Im4kj2;W5qg;Fn^i8L$7YgBm z=~%3sZwUP6Mm<6yOa3aO@7B!O77u?AFxGBu&H!n$#%K+3cjV~k$NBlmx5?PXt@9NY z-WF)=o(TNIjhnKf5_>YJ@6EwOotUrNkdqK5IS{Tc$T&}VIG>kt)sCID{B1`cvh`8;c2qs(l@e~0^jwJfirrtCgQFv_RMx9qqRL+i7qpeXAQqycq(Kkz{Vq`lGqa`b z?QJ49Q)xFPS@jNcy~XLk^gAWiWks<^j~}NDQNh z-2^$II%;l|i#Y>;g&jWL^qhCGIo+b7T8ZOeY|mNu(YOX48N9(=4HeD4blp z_A_NjG(iXY7o6LyXAZ(Sx#pIf)d;z3Y`sr~Jtk0=wZK@_KnEJzXr)xQ8rq`}gnou!lL7*ZYWRpl3<-pM%59 z6naC2Kmef^>`so8KWe~zovmT<6^?LOznm|U(wkr)z^`UvZ!)}=_(CJ7W%2o!7tkO( zyP>V$J9cS$kSmObU(0{bwCLbSrP=(MnP#RwJ55FgMt#J)7DM04YrU2pi}|nx$xv4l z2q)kL(9vlfnLrz{KG2})u%*zk(20EBcYA~E z?1LS7of4qvpuR037kIGQSl_Z{u_f!bortpxtY~Zu9LiIuH$gft&d;ulb}#cCoG_z4 zI&#H1%WlIW?1x<@m?_N7E*YIwR=()?=&FZiCas2ixi;v$AG!9C!^yLwj-RyJj-&~w z`);Y$n7E9rEh0K|_gN=4^9&hYj$=bo4n)+TGSxRN(^9U_JhKvX$8NPfaWmYL}ga zcvq&X?=5M+*7Bb{bJBt|B7pBEK}_nPqM@N9E_G|Y>2Pl)baj0?xQ9c@3|^U(6vCa$ zd3ifhd4rnlcBe;eRu<0UwYf!e|Njq!p}<|TFF95^#XZdJDk?gFS6hI*Mj~}t$q@)& zAXBY)=5U97Gr5a$_xOQEN#%91YqE0ndxx{lP4ZwUH}c&IxoM}JLCni*CJ>m2q;K>c zS~{%;CFRk|7U0-}aXGa5egD#u3%(Xk5Z&d}p|^AOIe5!+`PmCil(1y*r z*b{3?D-ZSwf#8D%x2Wn21=p}2Z^vBt+00$(cpLVxtkmI73g@Hk8|o&hms0=c=L9y^ zAz$71*V8q;%Re<63Peg)XK!QPyU+oS79xoIx z!??0OZI^v;ObWf844evNSWn{&5BArtGeIjOM&x0_Rnqer6)$KZ{p;)4G`-f=Z+a#g zJU+cOLmvGvccIYj z5lN{G#{!MZew^dcbrxR5moTmkYWLXGrW{quMln)L$bLy*nzp(x_uC|i>~EY?{;s+W zmsMDlX}xfIaO$qWQFU!>Eno!4X-eQPmD|SX;I#5*xe6GinaRH_%(U9Md}RJZ5H}Z8 zpuiO?Ing9Uz9|YTz0_j^oXKw%xN@Qt0$qK5S`kWL8X}Owndj+N#~UDayk{XIQ{ovCHC2zXi!3b_s-{b?Vy*%pK-|$zu1wjoZDz0p?;s4cXilTa&mVA_&uLFVae8Vp95Z z2u>1ErB-)!v2@LYO164XD(Bq6*J+z0+HF>^_ztT@{)P{{0#VPuh_i2MqrhmN#2O!8 zSU4mioL8!E2zIwy@<%aVUXRIst*@tGGxNdZS;Gzn=FE&i%a&81uBv|W+1K8lCr3-K zkCj%iWXul*Ot&`R6wc1Nz=-CqQm=80kSNc=hCDq5Kvohe&E z`~FuR(ngtzs%JYqE^Ox1=~)@Q&}6mK(n3VfK_EkRy7ZRcx5ryr$j7aDIzEEmZluC3 zS_YXUBB}23rGX+xo_9Sk^(XhNGKnWSIUUqjn`Ykha4Uf_DQS_{Uh#!;${*L<&*k&7 z9wkLUG3p7vVG}j4QJ3KHHx0TusGhOhh$hNh>kitGVm74$aUvCq?G~S|9#)lQti}}? zkTv%CB2(~0Pn>HhTB6c0xjEyJAzNgX#-_xek!$zr=>pP!T{@3_EVx#Qv@L9zmW2w|fq*Q~!>E>7X#)ew`@EQ7yYcZOrbl4ygvR`I3UAw|>;+mU# zHnBJ`)IZRCgMLO=c&WR)W&3C$Uxj+7$t-Wv_*ymG2f4qYY%?Y?jzWD~+3O+_7gAaK zi1#Ff*pl5|q}AdHFTMA2NTkQ$AU&&=d4&gSpPn9HzmQ0NUcQo~La>9QqkL}O0Pz}@ z=#5G>7!R*BdiJ6oJ|JN*sxPD|uGLi|fgN$de}xaAk&!USSNLOA;^t;B{lXCOUQF~% zvEw8-Wcz*?$Z}V_)!vDj+OWveAH&0L{_@om6LOvny{~ISomM5)Om0U?NFrRF@#GJK zT8ch>I+Q;@3UxyedP#Z5$AvKQIrn6nw8q9Qx+qyr|G%xTO&y2w@~6Ko6@w|~wvT)Z z@n?#X4oY}~aN?17*s?dWm6Y7NyrZfn#)bWaMq5-=$m!&t2i^C-cXQ*FNtS)C+~!el zRFpUzE0+`tm6Jb>bQCBmSqXTA(`;_0;zP-AfeoQc)La1Bps!I^zg3~HN8iz98&NWL zH}4Rp9=kxHv63OA<81m!*ARh!tNPCcFFN39ggb9(iTO53lXrMIA{X+xZa)uad9nc3 zE)Y8;rx9!K81}HIy`6a!&cxVa1wCEaYk0ZKIusM}I%DKLJ7|s;!`$@ z>B-r9rN@=g;TlO1Wfc%yACZt=cFD=$bIEE)6}8Q;+47*{S-7b%vKXnb?&WPYxsSLfcYpv*@j%=}!k0^_Ew=Ku-JZyE-_nYK`g#1|0M(s0_dUdp&fg4iu~U^4DFpCnicWUK}MW{T``lHa1Tq zx{LmvlW_n!&cxm8AkleyZ;vfncV)eaH#29VRvA^(CmQs)N3lx!Cus(a=7>v8Cw>I2 z&qVR8SWt=K*--tM^LRrf^!ODXzr~lH0X8)3?u!>yQ)o_lAFy|FgJiFh((FdR9c+4^ zhV$CYcyMO;mFD(Y;<|fA|=Y~Urwtvh5 zQYe%|{;1?+^CX#CES;86x3&P{RZliH4r#+@Yh3br*m*(hS1POicx{nAg3Sg0iIpAX zBgx9j%{JHU&bPO(+9fyVFHJt-(QBTa8Fn@C_N7`QEzOQlim8}bXj(n z`%pyVFNPR>{{QM$uHdG7-yu{KndU^@*_UOr^P=bGLigEr(S%ZU{w~-OsX=;HKKF?W zxE*PuX!5HN9y_WM7(~Fo{JZ>Mhj;;DM5WpP@YwEs=a#2*u>{8k$ctrMRr!?n=~MB8 zLFxOu#K6r4yr?H!&`{v1@;VybxU|T~$fWeGDd->g<_oc|w!cpyejmamh+#dbZ?DT3 zDk?3=-0O*D=dCIKS#zo5ZJJ&Z%U%BdnkzlA1u$EaSR0wDdPm2VvAsP(z#_^f4UjB# z>EGJ^x9~E*Dr(_#dOBT2Mc~T^;C*;)T3NQHXfQw#k-M_@wxIksdX7|ATfY^nDtjsH zG2jZomgjSFkPH{fWuTOs30Mp5^W;hSJu`b@48PXoKKIe_CK_RS&AR`E1_IARftUK? zWSClzPW!xXefEN-(KmE&dAJpv4-twV*W(!$J;k#PL00{ssEZjs@9ZSh|K(r*e35F5 z>~6zQur(h2iZ<%l#mC8Jj-uyj@83xxk*=r&_#k!y79x!mt={om2IEb2IaeH+fe_Ji zG$a(eyi6)G0ZA=|rIX;T0bd0G*UrXDhF)lRHSj0%a#Gi7Yc;nZ@Q<%u*KsmEShKo# z5cwW-d5b#G7qTb2eHt^dRD9Q)prN-Nymd0JT5y;%dwNy*S!=6ME+)G1P=LA}#L!ImYtG^YE2A#G{ljzu?$B%$Bg>`2oMf}j)^k47~1{yeRS-4wpUM;o;1)kbQou{O!D7pwfP zH1@Xm3W$;8h(Vg|^2c?E!h6EF-Z)oJy2(u+leCO3?$a8nX#mQRk{o#0p!ajb6s7KuncrDS9Tl7~$Mg?O(`B&!x8 z(%Sp_Y8^9-4Fy;ify{XHx=2Wix#d@c_)UU@!kH)E7=HG`breqiW&zeP%>%}k7-$X@ z6rki?cV7IJWN!dzs}XSBW`A>K{<#K(8lpE|UQkZY5Zt!pTnA5wVm+QIyNtp`ge+pa zqBAlEYtfsoZmlQar&$H^QkO7Ev!uLyD~mcXHLTCiduU++b)d(OMx)^(nY_GKfk$(* z2v^Rd;?RK2>Ynp26^Q@zoM8I8ZD>Nqz`gDS1iA8CJy7wJ@W|lXoV#@Q8)&6Id-U9` z;5`;lkVNW9I@eM&&X7ZeLwQNr zsgwEm){v##{MQJ=6ydC`y&Xii*W;%SCZ)cXM?&Mp(m#K7EX_!_H&N<_K^`Q1a(vM9 zqh`7lBfGPU6#9uQ={pMx6`o?J4x4Ic>D|_o;!U+M-q~F=TQc@QsU6jew@SqS7nbg1Z zD8mFRpmv8Gi(LYkQNic4b97J$y3j74$KTNC`tEU-^;fmgHV#{^ZvyF9oZy% ze79iLY5mL$`KRYbd}A~Zuink=O^E8qtu}65Ft&7irt1kv41Gz$u*YKoWXb~1Q(9J9 zx*yho)$d=Lki8Mm@VPj*GDzD4)yFA_obW%*Yn3{z@g#u$4Q2jZdIezbi3y<5FLLp@ zb7kd4n!d0!GqpEhn#cP4#WbEi?onW0dJz1tEUW(ra6oIzFlFjyfP{9ucXm_y$ft?1 z+znvCVqaxsBzgO6&NiP!r2OOs1V5dc38Cru2Li7cu>L#0%T^Ai{t|Y>j=oKlzNe&kiXt7qkE3NQx@v?Fa$z5nmM^}W@`&3QXe<2(_ zbn^XPeXX+cPUS=kQ|OsPxfGS|iBmu0So13Sjg#u7)iEEOme`oX9j6BBac9%qCkA-O z@3@~R!I9`Bf7fBv2KprOOc9mp?`Y!x?^9l{I-=lJV#894@KcqPpCM`{FHL$q`ju^l zJ^F#g+S0u!xo}TH=C1~^<4H;faM!Qmbp1|pwri_{wO*r}!p>#N$98z6>XaPu@ z{J5?zFfb=2HmmY8Py)A`n85%@Ff>e~SN`7MkMHYyA}oz1)o>k&0`Myj?03<+mZq|^ zqh9$uQCDJxGEo15v``~gZu@Zk!qj?i&Ud+i`+aj2Bh9+1POWgZ7YeGr_-=0a9nD$M z#RNjznG}y2!HZm1w=w5mweTJ_vWwE3O(niBt#rX3bar-X5_dfVPY5BQUJcKvsAl(< z3-j*}jI_6Z%E$=L&1G65v4AH?dAhTc4wT6DyeNs~%{y|NT>n{C6;j&J(EN=w2$+f< z53V@oXlBtx1b){q8%y+0AhSz={syoHe{>3cA>bQzcAB;->KQo{gWlV~^m4uv+FZ4~ zsowNHHHGUXsleBwrz_N3u9n}eNO5$6XxF)5lHOP#q0VzXYRvTpw>rR$iFd9PNPSVS z1X(+3MAC1sE*M?jHNDIJy+!32BKxBgo7!b-g;xOtnx4d^TXp3a_1J0TPRqe8#&B=V zX-QI>!-@MY^3#ccQOd|#%cl0vX}VQUwz70(_quB-3y|BtB>1iYIJa(N7L7kp$inaL zuTQ=c6m+`d;l?HUU$1$o{x$9t!2YAaZ=S5eS+}Oh*~l^JqD^$Yt&IgT(bg8@yM82t z`meX&^8-C3DFSP6TEfbAS$WSdC{Wn9r1heAV&Vi&_aLdz@i++Jr!%5)rP(U4H+*UeieL9WE7l79dDl* zmRN5Pb8p4K&^#m|uBk~1dnktufIx3cVf*50G)lTe;mXz~rIl5*;X@wY%BJUwZY@E7 zf3B658o4#G;f3Ni?d(35K7sxk*W0c07jCxn&9!-$;h)5EISjF$p!Zm@s%5olY1Ns4 zsY;}6zPYx1Gw_R1#bBdF{hl-TbGK99!mvLM|F!tUJy)nzcbdaoOyuS#9^8`rxn6kl zQ`^*8x&6@anwmdBP){hh-0>sh3VEeu} zG2YI%Sq2MCaZ$^Fs4=U;%AS3sDkM*j2g__B;%GX2wt`71HT+tGX;=3muGW4W41Jz< z_5V2cQ#<(kBG9_Rt7*snnGHW`J8Yb&{Qgw3|@o zI|J{>MslAXB&`%N!!_#=Y<7d9^cs#r7@T5GWty3+LduhMJ%gVPnv?76n*<$Di3`;0 zSw!LsbcNg0UgeX|t*sZIY&{wp14H@7CP%$KRv_wUXTzbct}|EY(c<)(LqkAS0J7cW z**7O!FL2>MfJH834(t|=)_-*I6I1y5GACexq>YgS{!RyZ&b{L)y%M@P_sq)cg6Zr% z$8lZ$kG2g2%5rn@`62&8rvtY_X({DysQ>rbT>yEox1w`PcJFbQtp-%apw85+eq;6` zFt#(vd~=sHbm3=&3)WFOo1B?>EHlWG=-TJd(|SCRpOvo^F2=6#ZwY}oOiYl+iZ*dk zz%_~fx0K=C31&@8_bdd`FF*Rv+@{elXsAc=;8u_#GbH2*H>t83Ug0RFOyjXic_={1 zMZw-PhDk?OZ>nF^xIVC~;$OvlTTy>g)!48WQoD0pPI!mem##r(k=WF*xc&30eDkWp z7NdIdM11Ryr*GC?(M$g>!=%PcRT!*@1sXC7k*9j9qj9cJo8dj9DOqyys5`H|LD!gRAsDnOODv z{&!$5W%?uZ5rB}@L|x9f3<=n01zve}syDX%%K^O}&+@1`_;fWW9u;{fDm)iIdY;sA z9F(fZ%f9&%W^9UqQP;*5xWKf9Us*LBA;4Ce#V$Uu+t){Z+Xq#%x*r`AbF2M*R>QYkTZ@<4y5eUgwcd7R3#5-9fq;!~ z2sSS-w}GKnkMq-6HuVty;{+VO-0{KFI8YTt9aqyYdI?OpT^jab3#tiWdibTrlg`*N ztJAJxR<(#6_gOa+@7B^D3a|+pXFQO;ymqCc%*iA2xmIELn^K{d6Ua%Nwqe9ejY6wN zSEJFg#@gFH?E#P6yo0j>?H&YLeE36&uKYVlxwJ8*C?U`#<@!0P@9X9>d&1EVOib%A zyjU#Ss<9rq)QZ+;8ejfrz)OX^^oTlah^nfUG0qbo+=`fuXy{l&X)a}E2*`^7;Rh_D z$bR=&6O;E1F3HZBph^i1=a3883!@6T0pOX)r5ky#yb0)yxS{Ln)D&c__NEyM;Sc9` z2*mqvk$e#Q1YVk=EIZiO^0>c!vPC}d@i`QBTketn)Y*@v+3JV(S1rj85K z>m!kAVZ{?(+(+#A@!-+3DdM4Y1&wUg@3Y7reMkR73yty!Z#7GyEQHCi zw$i~Zy6i0zPGUvOQ_{PNZV79UeLu?QOiQq;Z$G*>#t=SUm%D8?~|wV<_W^P z6+DPZ3y`+@mi-S!52}sbcxoJ9{-uj*ex9*Sm<9*el4uDG!tH`4)HzcxM3hC|8v@MKp3>g11?=wvDRh%72xDim*!-cATj_* zP)p_=tZDN|MXY6tD9MR#{~jA-%ce|aJvcD~xHbEYV?#4MN7uZ(@@vPH0xm$9_sq}t zKL28eL{b3FP_$!4PB!{-garV$Yv4Rr^1mY$p8-hoRn5u+Kj z>)lFJd%FKCyTu5Je8aU3*_Hnax63ZFH&7kMl1AFv8soa8b8>ub*7-Aqbk}{@ z$sn->x7s||2@>O;lQjqzld;QwnG#b!J1Trq%h?!8dD2Z2mSnze$aiq*M!wvI4V{=| z@KQ(!%?^9qf-DEz&EYUeGr;Om4>Mmfi8goru)qTWtOR)&`XN^zNVvG_Jk3K3NxRa) zNA|Fx$;Ctf3;s@3Y`J@*Oo#9GLwa-Pm9uO(XPH- z-k|q0e#ss$1=n1X@dp=G<#ieDf-w*Fo~y^bFEeBqDSp&rWGzeJW*M08e*Bz=K+;hv zJ3CSX0N?!+v-mFm9`gGGi_EqZKk(B{_MW?3C@AA$Qev=l zem)bWoIpAtWP4Q$)=G*Mz5cXqB_}DK>{lsy5&JGm^v5P91_BSyV8pD@;D` zU8}m-1jCo1V!pk}^t62KtDzpSOZoAQvCtw#;7ulQ?Lc`lk`>^ zz#}Nw^Y;H$;nZErnEKTjT{jkXlDe#=vs^0i?~s|eIg^d*s*_UF!Y_<%vcH4G2b~FG zu91z>d9&qm=_b;2zm~nmDy*<+R$s5U)=#Ux_@K=f`3n1FaZ~?I!+^6b>DcxYVZ4Y-B(KNy8e2|Ih}?jjuL;4I~qx z0-5i2{BWnIk6M+cC+@`-EX#QN9~ao$Xua4y_DJR};KN4iy048+7fd@DyahcV#Z{Mr zkPpk)CQFCX?9olLa2@eqHW-Mt{pDf4dR}+t%^oKP7qZw3 zunUJ|t1m9iZm!B&!`evhJM%ay%9$?FOSjQQMDS%Ky+h!C)yktfYsT~(8_X?jOnzul z0g6PBbrIAhZ~H-RONf(-3Rr;x*lX#WX-MTxHO+1RlLMwq4QwiF4WdJ|4^;IW9Bcxn zJInVrJCa^2L@_#s*j^curV!OQs_ zbLa1PFIFq+Lqu{d-*!=Q1}rN9ISAE`-k8c7%Ekdd0=8>wTAT+k5h_qD7cI#u#ZWt!9Yz`fMl!Vtl~y*U44V z+jqc2^tLmPf8cQ7cAH)vI5Jj?Xw zaa(!RntVO-x4&Jtd2aK9>)2cX_lO(Cs`UH1Hp-G1^-2iF(x^3n(psS<7y)g`P}XHD zdu)U}zc}A|q&v}q#Jl1d`WdjHE1DNE(0}KLO8;pCd{I{e5zYMU+t;t||1BxdlNULX zna3BfQNGSDt4gPh!th_th|;*L#$SgR*mARj{UkcrR)^%pxWfVhnXLP-gu}5mFe{nq z$8T-2O)@Tn6)wZ=?|R?WvLIcy4O8^&jy) zBBJ2s<=bO0UH4ZMC1YJcA;BE(;?uqmtA1wy*0H;L+TM;gL(5l`UWS;$g}ZFe=sT{` z0uiDw`wLwB&XKhM(5Lwu{ZrSiiPqIdRf^IZXH0AbTs6G zZz2umvvZsY4+WAvk&-hjf%9JJ05V?kFeymE+T}=CM$|(tK=dXh$g|PUc%bGH{$qkE^yt=B!;_7 zcRQzQh}SRHht6Lq=EwNnnIJeVZ$=v|Ekb)Ln3p9OVCs7(S*CjFj^PVj5K*n3ag>Ku z9W~ik%I$Hd70lb{PL;Y~67^+$I_GGS8~t+rnDR^Oj`($e5O88)R;j=F%E1Y$H{)#*2N~HTcss zus^JE)6=>ZBFxG_w-*%!>;oU+;;@d@)ysGvL!-wOKRQG|3|${`D7Jra4?7bSqMfQt zPYx3Yh`Q&4s9%zQKCx1NLL+38Ea1YoJ9Sr6Nw~<>(i578CK>#h@jx=H9>^C}QX*|; zR^PDu0vH_{Q1-86`b{#FOJ4Bxi_^ctt1BuM^EpP(fo##NT!rj`K`si{8+icz_=;E~ z-ak4M0ytMmZNEo>{R)Z1dnd&;nYX3p{?vHg|7k5*1zUV{5fP-tgEw}-;Z;yeXM4Lx zBox&-UgzSBSCBfmgAK>A8I8MCzXr}#j3r-s9DRfsFe@;0Og0{N+&cMP&wPiQ+e*=A zedvDHF@U<>0r!ZwV#txg*6}{zPb#9K3PBFmt))e6T99$7q&z)b7&?tVIr{S_Q0K$Z zXN1wz6eBFUyCwtx-0@!NeV!!}(NNH7=M{9?+23!@#~QF?ws*1d>aW$v^kd@4U76r) z+V-hulM;`hl`IeDWQ=@(HStcQ;iON-qe|sf^gL1paVj48vT;?FOhs{*HWzstJb{@|jfCb7z`KYIUt8V(RmISRVbH_wTFu ziB5O%`LVX4Q!LVGY+PKci%J+%{8>kKtnSuA`R9=VT@Cx_eq7m|r5)Al*OK&Bzk@U@ zyMSh~s`}oAShI|4j4?eut>DExJ_DsX{G79@)S~pRj*}(=LWRx$Li{P92@C4Qu&iHd=Tlqj${|52O$Q(k~nVpuzws=r#27} z4F5y^v1`7-CXEkCUwB`18;D@_4LX1aK;g>D-Oi%4MN%2iZ{zT+^k|}|_?-LJ(UEh_ zdZPMCQIRDt1@M0rt9%;NxNDD}Iz8pDswcOr#mL^FR!lIdl8%PLC|zbw$NKtE&(s|q zCvU_fvOfe>mpQlcsDXdI=+70&70GPN+C@Y8|F-p8Ti+LeGp@xSC|?-n%4rwwHe5>k&2gTIyMac>Gj*5BK(!59JeDnUOm+>a;crm5hk>gQBv2mq zuiM&@UM$EjvoaU2PisAbCi&LMaB_QfS20MaW&LC~U+}`#ghk7}1FqWa}7@!kd-8 z3fH9nz0SsUZ99L{PrC$}K)SPsSO48dQ!BT5z#l>IQnu9tY2l>;S^bekS81wmsDDMM zq*^19&ob<&AE8odqGSn!j6bYjRllcz^n7wPC3wJ<*)xb@4hE7!)HQhR=p_aBGjeS( z;2WFDPEG|-b$|Wtr>>4S7+YYJ&HKT@<{}zl3&2h$+{in`bb4Y(M7yhvFZT9s zcYNWBgtphP-|O5xo(G=+mmk86iDF80(KrKKs@{a{fQ8BR$O0H=a#P@8@)JGdROQm_ zyxd^Hn;X9D9Ud-tsg5~C;B|Y=H+Ge}HZd_+Fy*)6{aql2R?k=fb6Bz7^~xc(`$;O` zLId<9=#Ru1NM4L+wuWp@EA1aB$|!~ItxrnJ%2C}4IeKSdaVP?3f8e*>%BJ2>w)Uy3 zt6uCHybKmg59{tr7tBYptEFaVWa{)RH2TkU)RdPBGchRaPdU@g9uL<4$$g8gXT*$3 zR@{|PVhV!*CIhINI&BmfjC3g;L6XeM-m*|Y)wTn|mLB0A>3*>%Ge^*nyC-(&WzLp< zOZ42XJ8d+jue1vpzl>j#SYJ(BU)`NXetz(sGk^8{Dl*G6a>C`}%l8SH1uyJHG=M3<_RLKIqvY36AKgt_ z&=(N2ta1bLC>i;mHP+dN1|RB-Kd4a07JONYPkQlrOqX@Q zVUCxjexVA-Np~W>o0Z>2RKIdqgkl5uyU+|-{iEnRZLw(2x-?l=?Q9AZ=)>`H&hYo}oZ37LZRHSo+N!2a7Jzm(UXI zTu{L<0<*)xzQUi)gB0#i-~+cbGEaq?jqd)irb3M^IfGYLNOOGu&QKswiE0_(=+dtA zRI7q;u@}X$u`}co2ajbn*R228dMj*WkKkGFF8wPXW<2`-*sf~q5I+kCf zWa0O_cUAv_Xj)slJV1Yh$s!o%K4kgRwE-zp+1jy&z2ocUvxaGqO8Ls9TWDJaq>Ryb zyv}B!mkQmE$PZbs))5lU^V=Vv-8r@eo}IJ)tm|hX7cId`^GQNfoxz?ldNjOrzWbA3Cv9Dbh#*Bf$%WI%a-96^f zk4ezy$ZOyitT!kVv|q4o!qHiZyuZg9pH%rmgKVKL&&}wBuUy5tgpkPgs=SOQyfh&@ zeh(?Uk737Qo=UgLzBUS!TAeU48Vn{ROW8Jb1StMfS88VVf=&pQR0aG-&i#kkclNEp zeAYGly7_o`-0-1$x~fTiJ+h~gPgLQIF~%Ps@_Jx{{e?ifWyo=QP>YNL2j|VH2lsak zAiz4-;c-P78cR=giGyB6jPj``+jHg~F+xnUIlww(ry({CA1+z*A*ZGetm(_jjDlJ$ z>wW1^zdb&dI8t?|E!|aqW&kXSEjqdm%mR&3N_7kZ&Vly~f@4?z7?xSQpgZ0)k`PK3 zi-&?ICf4TVBkB@?r^QuoZ6l#SUlvi^riOrTCD6Zfr-W&A4LbBRVh)x_*huKp)Muko z^xJ+@5Mwnm4IJh-8R$M#~*U_%QrZ|F%59?jvx4IGij`&{>ONstSq>QDTIqMnl9K5n8-tTay?*Q^aW%iCQ z)(HlZ;OOz!k%t-LrA!QsO>VGsarMxE{p1EEJl=Ko{Pt5?a5aHjv|B3i?B`;;=w)ivObF*SipCbaC+NxI-?bIRyP>^(+GQ`D$wYWbcYL z>q7!h82m-@D-rIW`c>SAafRp(;?S6GR6C@*Z zXbPRDolFY?h-yMYjRYk7M8kR1#IsD2izm@PYW^#F#8>+idI@9sS0)mNk-4Jm(!nQ| z@VulPv+7p)oCC#Z&bC91ZJ(dVZ)`NughfTYi0!;rWmF6Q*C%+UkOx zN)NfAJ}Ch>Rn&9iS~yqd&T)8i^Wo)78wfEu}$44m6R`<3pOZ zRW*DZo#^R*!%jWp|2A=xYkYSZ{8bX5FNEbnLg!10&-VcFS@Qh-Rf<`ZrqzcJL0I(d zoZR(QOl#o+=rOsjftt+A^Tneb@!h~NL-uQRbp;G(0E)W{n>H```|R7_og?zF7$s6x zYw+WeV>2p(1?i-j`ZjjNKd%HUG~P^4K7F%qm0K6vMDpXhNxT~?lD@m*U8(0W{dm}7 zAopHlTJx0cXteCRe?}HhT5qa-896Jh3_^4n70P-eC~w|u8ZR9WHf?P3VBAUK-^L6` zwN!meyh7%#f@|7rWV^h*R&yos^oOi$UgNKUZ=(HEr{xDv%8E1fpcFF5RUh|rzzSE^ zd!HWB{QuPumpNJx7Z>@BzLw}p8xz^TLa(c15kK_0+>(cA4LTzuVr`WtdK2{0;Bba_q)dO(=OoaaG zc~;IZOh#=NFfpjrfyVy%GEtoyl=_myLtp!E4>I;)>UW{bxmo@~&}GnWBibfmkVIMu zm{~&{`eoncSCrh>;2Rqv0akPOM0!OQ8csu&FOtz~UZmgJx37{W8~Gb!*$D$Ko+Q%y zqHr-IY#9|K;f6sSmZ&e^(ko%(y7?N=N)Tgn`G%$-M?AW?Y^ZL*I9k`iB*n&0ch4-t zRJaN-pi7#+(KBPUG$8!hl$AWmPVJ5Y97`8oY_45h-buO-!Xq$nO&Ur$AnlCqP>4$v zPS1FdG%iu&II052GSbUC;W1oC;HH;NQla(;C7?@sSTuOhMS9m&hXF|cWmVwK!ePC` zx58`(G5WO`E{1;2Zi$jo*+$>it%zHvYzZkgX(E=Vrwv|1_uldP&&*CXw1R-AD(RG= zWH3hG)-|Amc{Mk0-Rr!`b`s9zmz{G6d;;_lzzw=J+gfj|KNrotT@kTKPY!t*H2o4r z&t;r}z<-V_L{2*6Ef>@pV~B?`Z#%2t~}9GR1!%ja>XMe%5v@W4bFBmTj?Q@)+UStgDupM zii$(lcuh+;76@*vHpj;NRj|;NO&Myte$kJ7{2A#c*Pynns4tHG3I1Aw-3yJp_bjbp zVM`H4UhY3V*pnZ}_0$95ooJIif5Ebw>r9?T?vl*Iw^B9!H=X}FRb=1;k!>E1r@%K3 zDr0=(x^5(qwuAiaiFdl$yPubQnOvvnc>BY;)$u0LQ=Rp8mi!h83B5%0?A~%yrtCmYr;fE^2D8Y$K!wR~p{s%QJc^UqL(O}>zEnQurK1-vHrtBZpUx7$2*jgr5gJH6gL!9Ed51UELwpXd<^cnu%r(65Q>_dXH-((f>Gb@( zGxbiiu9NFbvd6zaKiar}-^FKp(k~gmf?yt{g%svS-h4B=EI9uBF-Kb?Jx6A| zzCGSxNiUuD*|YMCc<_8qn){O4qv*bU`$kWmRzpWu=;bAHKVfX7=9Sax@%Xr44ST#Q z1_DYMr^Klribm@>3bWpHw+o9)71v6KK77IxiFM#LH9hFP@5!D6{kvOxgA!T*l(il1 z1+bT}7Gv{YwIA%sIz*-O9?ri1A4lgMPxb#t@oOd{m&BF5$+a@G;)aaK-dmUKy@`af zzr?i(Av@Q~&K@@_nb%B4_Q(#ucfUVN^~k-~`}2Oi&N3Q5n!2ie4ZiL8=a)|j-?xcTh-LKga{1`a-oQKD-vRm9+-R9WheSu4ZOhqWPiUI*wD#w zvPfv!(p1fUZ%co!^(xgh-q?L*!09POzZ=z4|H;94DyF6em;o*?7-fRarZO}4o^dAp zIgw4#7@>|q2S$oF8Msn-`NmoO$8I&%fMOr3=Z&Qb;kg1UKM|rtcdT|xwqjnn!nM`qN{@|nYCyp?*`f-_;jEKaswo`JiH@)E?wHM= zxH5~F*e%|jUi4e-^}AG}ecekRv~#iHK$7(!z5i;8L(96QSKLSVU{{m?*a%;IZ!LMX zbP0krh_%Vi*0Y~6D5T^aQc^D^)~CEFg@#Ts%(WN~TpJ~-0%-yHH%a#(ilFSyKDTPV zby2ktIADubyOtS>zzukvHL+u}YZWYHr|Vg$vAu$@P|H{Y1A#^vE#10Uq0%yc^VH$* z8xT{AfH(6cgnd?3;`fQVxhMP>AEtYPvCWWLwU8&Fc)fV)5~8j-PDqTDn~EAc>+_-p*~RVc zyXQ*}t^gz{gPXu}IN>e#&i!;zkO~6D7wFoD37fmZ>35Zgu=PSxfzOh{UdsjYi^o81 zjTl+(u)v9A!_yE}EYO!$utaUQ=5}#W=LUF+b_}#e_kj>tvQCOLAu)mAe$7)THX@8tyt<}tkjT;gS#%@HM?>tr>hZpw41}+wDe>XavG5wwH_vqV zsHoo$#DHEiuV4Lk0A5`MLZp{87JswXb8kd*t7b%EX!wI<6Q|Rax0N}c0|zb^y;^W| zd?HN+A@|5j6&YZ7BL$YD2K;mx zYY@S@nSdW32=%S@ObDHo;Ln?^lxG0t|zJQHQSx+7% zE~v$EwYzAo%4j*Ao_u800cTHA%ujoXtYN9#zRZB^wN(h;XsLub zoy0n)GCU=Tn5Cg!05(Hk;q;pD>8S3dZ{O$=m7jYrjiuF6rGNX< z7zOM@=HZ{Mk~1>I?&7+<$k85j=Y9{YM=aDa43DqrF{rwa6S(?E_-~u z^rn64`$Guxm%@ai5?ZCPEns2-=|vuD5PWzf4>0f;K;=kDicaF}_QK%$FWim01O7Jn zGBr(tQ0#s`Tgb+ds9DRIp5lPU^Y&P1v)u@nY9R*%fGA|WHX1H27oYN^YE)4XAAx8A zQ_%infci;IO@J`V@3$OJ+Nl-d<$qb;35Yq{HMo8BVXME#3>9HH%1gwkXrxCqFDN%9 zKQ5Eu&g|y^n)-97k~E*gaeu zvy4rpU%(38{Qg_1WDD=QKhDUbO3b2x>H_|960g>9XdhZT@Uj^sDh54Fm_PT3yw=uj zHFKsj6nkk@WWV_j{2-joCM1L8pU};L;Ye`r8~Y*RWCR#Zb6>wcN$&jq9jQ1#N+zQ%b3|li z_7)^mIxOE}XCjaUD#XNLG%VeM^do_gPk>rrlu^2d-|-g6a@9^g<;{T>5B+<$;;4u{ zhlZp)8%ruHrBYG+q~woxB|sMs7&_wD<*9@aC)?W_9dANXRI_RD7pJF5(!YHfNnMgS zh@g43^DVu~h7`=jebunYo-{K206W`-{Qx$4t{kb;g!SQI7l+LWZJyttcj!bG^rJrA zYdN|LLb_FpAvf)*ANRj~>j-*fi$O8@gLIF*>*BVA&qM!6WMlL0#Urzkx`st(>_tz^ zO|oh>KXox}WK5430q%U>D5|lsf&KPw+hr4%_X2}DBW2|G&dLLsEYXOeS6cbOANimf0Lts-66p0R6fzZ zn^Jo9N!6w5Vs*lN&-+KuW~T%9LfrSRiOH<6&pt;V$KB2ZgSUkg`ghL$0@S}7{Vkin zajrp6w5T937z`3xQgWdD!jP(~tgJY=ZCBfVcFVcI5y3yjr~(11Xi0Ksnw1eVewl;D z_@VS3Zz|2zH7YT2L@HjTWKm=)KNg19#jMJZ@YKa&HgAgnTTlPg!iYAiM@)b(8vp}- zN>D8|Ww!8}0|e&qk0^1x(4rIw6cdeyx5t~J9UPqST%&FKv>{OXS)bHnpwcHM)cE+CA#&rUT;?y08r)+^Lzz=hn%_uR;WK|1r2+ zy}iq;_5if|=-_N=Zf?x9QbhJzRZPkmwyINn?Y`KSo4VRBbNcstf4}d=B@-|$V(Nh- z$c$g$^tctXuEyLAMQ~4mLhQ>chP!vGTo(R6-$s14(Bs@^(=|i#>N8Mc4epM{fLql zjMk!LFirp&>#;T|F3O2hI^~J>euF)xmiG;}wC?1mrp?_mevT_HD-g|?V`n&dFWJzu zYOA)d3;^NA=l+{ollAj{Ci5x%<5bZnoXSUu6AWeEePv8~#RPF1<}^c&M!6-=}Xfj8(gPB zX|_WVBn1z_ekjVj%ye!0&F_CWz%`Q73V{Hqk5a)OWA4_o-?taa{YrZKMOj;H&vVd<7m_<#B37eU#eFNwad-uY<~B{)d7&PpACvDKFz zI{_*(q*=h~x_6^ersx)Hf6s$ruSXiHoFkvhC1kE9fnb~e0+1M=1BV*; zSQPj4yk9*8L96lK5ujsA<9UiIhD+mbu;HzEb#6fRo z!?;kz;ND_3T26hjW;RWJrLjrn5=U!?bLHkU&g;st8^hE=0|OU`X2?z{k|OS*`2@AR zUS|u*i3<-9LEe%}HEFmSv@X_{B5P)Z?S{Wp)PV!SBItksva#WpxCuaA1!;_=4ChShnDK)%M$|pfAC^&@fyDb7E~hh2 zodaMzY|*dGMuvwO*}KI^Enz+dh$Kl>CmTIJ2t+eBPuG};uo*bh2G{Lma>9{`svLJ? zc50oKi;G(qY!RQ};??B>)YvQx52_F}F{EIIKw4hK(aGmD)tN4+O&>cs$G-<4S@kP0 zKE6P&)^|d7SV@+6tQsMtvCd6R&CcxDXk546HKa(>EoopJO;1Z7^bI|E=EcvI2<6HK z=LfX!cCxXoMY#4jniRE)`+9$K^QD+nT}u#4HX|KV$SR2Fec5aT+h9Doe-=$RZ+vW! zI3v@VM3nYAK!WiJSb)|U44jt$m+!#u1_YE{0k}U^QxJ@7Y-AhTuxxArG?1KAk1Tj}oAL|pbZHbOZg=kdsKc_M zZ(NrH-n%a#^x}tK0j~uwi5{P}g~8LGv%f1@a+@tmI$O&0rqV*Iwr(%SQ}O2; zq%Ty`r(o!vNYAEbn)3F%6VEK@zu$j53%O^89Uuth5ecPn*p z$pezc)X1^jeCj z(mA`WyCSu^(~vNL8uD=6dlQYehAB39qnh8=y`P=sD$}rQs;|l4+WfQ$wrZyQTx11s zBKf{*ef?o^(H&NN6iUMg6%VDmLk>EGVwJ?fQ(TEiTzqf%MQ`VF+k;1UDrG@#SU47K zUuj>Vsp{2AMeO}3zT=3oZ;YZd>~pW08`Cs^O8TB&0YNhc8G%BzfmnP@4>(g!Uer*X!0T=r*+oV43 z(Kz=fT^O9{YS19S*D})I-U{4kTz@4GZ2wN57v_*vZ||HNx}rO+YmfpZKNo) zzggC<`mP6U-I&GR4X5VfS!c z=&iVc;|I6e?xQ~4MZf&}n@%^mb!Fjt$wxT+FCBd5U65w;$QH2II#q0bo1*T~TMu&4 z%8$927;Y!h(&M;$_gnjdeWUYD7X?dFTLD!fxLd-o& z0J^a*5d{r{TF=z|m&2}=OAgUzA7BFyKQp~#?LzdsYB`>`zCD#fjkBQn#C{D7Zu{dw zL8p>rVRhrUiRyB&5Q$u-jkJLQBFVLr&zy*;;q#LGVSD?JLsMse(x7rgCi;)4=>Q#* z;i(M_q=!IE+315k0b=|7yzBofl;d+s42Fxx`|qnqxw-L5m-8E)6S;0t-Z-cfT~QLp znp+?39|1wO+av3Rk!1O*TnQa&WZeLYV0`}4&YdK%R=>K|VfqUV{Sap?VTA8jkh%PveJifV&x(C7ty=f|iYc(^q$aMO? z!G~O!a=38*JAXzJTs0m;6lIhXxKrPYBIW02WV#;^Qiv|MpYeEf4kl(FfM^9opvuZy zf3JPI`n4Rw5na{O8fGIV`bt{+Caw%`;-q@!iTzLO*sOS1B3G0rxFf7g*D;fGKP#O^ zz2Wtx`&nCG_4c@Ejva+J>T(Xq9(-}IgZ#N@dr`;XTnBDj#NKG(I-XxmRUeKwTeeP$ zhaK!5?7h4}pRdgd*Hnt4_A8okzk1Wuo{$>g?M;kTh{-H>HfG|yzMqucjK+ADZ$=tZ zYevHeVZAt(F2xHW{X@CK1vnNoR7*n*6D% zh2TK>j~xYlnj{_7&5(iWg`Hnz13(EaBvo}lj(PdcOM_F-?BZ=g9f#QJqTet;f8>MH z$M-b^v{rjv0I)R=#!B5&weVc|W9~W^J^^_}je{A@B4`y= z3hDyHtuyXnw84z8Fs}RJ(e~~gKz^0Fcxv;U$0kHy2ExmAdFWO_RV&^9G6i z%}_ZZrBdVWG(Kt?Te}31D%}Nq9I&Hi|IQWtDizw`y`_UH1n{Lro9Ye}Y6rxtLfj9$ zIE85w$N|y#k+A0%Q;o*>FMW4yjNAcv6C9GO9uMBrK4-6QJDFtyrkAL0FqG{n6YS$y{@=PG9oOaTe{rr%5jY9 zG+&J}aO1y&el}&QgVO*`S8TQfGiZYzKEMA{4;mw*;xay zL(-^^`_PYX#m$JBITGAj(kAm;=o8E;wKY}d>~^Og7r6)dr?bT*QME`i6hnZL;L;bL z0M;Nqplu;fbAQ61-P*_@41H^PM&$oz?D=_+Q2bGr#6fXsMm=0KTUJjvSls-N9wGX&NWrl zzy0yAUgb@fSre9rP^0r=L*tVHtZVzub>L#~XvSBGkvl%B zr|W2`Ock^xE1-%Y+YDIPa|LHp%fc6KgzRHlQXh`@uDpW|cI&|a=v$l*D?FC2? zY1!m~XD|NIss$ptWB}v!X~9*>AONuHitZhADhSDy+>QEEU7m&+0=6BF_jZ7jr;3bN zmkC>{alXsa>rRTDw5fh=`MChl$Bphhf8H+tE?d=X$-k=a?omLdzCJ$(r4)VNXl+nq z%g3zAG*prAXtu#jcJQf3mpIh%23z z>X?)4>)jMp9z46ZG*8b}I2EZVF6@DQl~yr3dS$YBfij_LKw?mDZjlq?N}vCdfprZI z_N1iTjfuI%QNlrWpA>&m_pYfd83q^g5JgbwR4U~Ks2!k`qwDz3TwZCaqSl{FnM5LG z?NBI2&}$rDwPR(OEish+Hfq(cwJW12S(PX9psF$+M5WpA^&U{MG`znMO>(vA(BR8$ zi2MKyf9e>&R`r?fm+TL}qHzlW4G+NgY+%ZqivZqR;~8RtT>uPz6XTO_!)*g->%dDH z5Ma$8Q+HXm*lF~jFoXU@6*hVI&~pKWg|r}6$kwO>O{GHIH8Cs%K2#l+mxF@@^7}qM z3&3tjITFa4xZoG`6+J1o8*nZ?^2;OU?VYQhw~zlO)K}cX<&)kMjrFMhqWo@t!g~a4 z?r>l0%kP6;73n=-Y?sM-35byZ#k95-pZ)koG=ZzW)+-O3MDVwy1t3ykuMhrl%g^)Z zA3(A@I9qf3QrvoVC;okKn_o%tpYx2=RDmyOU(lh_TWi++Tt#CZ-go1o{@Ps;9-qYv+qRudYtHC3V~peljyYe#eT$ zA(%0(@T})61YH_oLEA8H;(Lm44B8&W)2dHs%qQ$g|23^6tr~7@V61f==X3Bkl7mLXoe&wVA-7 z_18f>?cT&LpU5w%`={;I^zq*>Zr}YX3EEI*5xo^p)~h4%i%%R)3e5rBxB>f3rh7;x83`YJf5pC=S9 zH>KXCiDRfZ0NNzg)C%Hl>S~=Z{l_)<6@%2mc-S2L_`62_s5Ug6zwo5 z?uUA3kF1TuTo@s6K8cBvCB#aDkm?gXH85lt>VweDz|ph1%k<`lz57G1*B4L7uLc3$ z2qYMofE~0;Gb4kL$^Tcw_-`NvuXI>GElCFSJt5oo1H!LDNC1wq$L&idpg{^OOXxdp zRRYdpit6lo44zz`V93e#;~4AyJy+0kA_tWQSm)keb1Hl$gx}E`SHalp#>N7W;y~I9 z3%>;>7=WZ&0P^w zB;c2^Xzs|L2Nlh}H@|?r^a^k}3<6JrURo~Ar}AIf6h0JC*;(~a)f*q%So-?aCM;AT zQHT@?hV`o89e~$qpPV_bOiZkbjSH^UHqx93`?pziAsM+g=~GNaryjlc++9o@Fe4t8=LbNiY1&$RWh?e zeDybpi6Qfz-q>q_hBC7Ggyx$C_dW(49UY(~A9P>-y;j!IakpCLlP7Y^5}^D|643(b z9+ETIqm9P{evuY#%vUt%cK#gzWcq_{K)ImOA_bgSmr?ViAPB(uSdEsIuy(s^NWdE! z7Ne?r1i7g;K_ECqQvKa+vPV2#t%o8aAFd}-u`|JXRCtYZ5`}<}3313s(fm}VjiadY zwBQYqRk#~m?AbdV{^H0;S<8%iD=MIZ=qv_PX%WMD-&q63Vo`}8Y1J0EJ()5XsKGJK z2yZw>|3RrUFKnf!XB=#U8JR+&pilo5;GBL5lJo^XGl8vVJv29fpF@I(wbz%plY&VH zL8rHoIcJj%ub!ZuM05rPUNTf0hKS7i0#-kWQ-iK;zR2aD2Vil8o+$xhA28SmlL8yF z8W3)0$2}j91e%!m7LBt(&t@(IHts%~W;)mapigBgK1) z4bGkDF9G8QX6tft-;Yg8bSc7_yWIFQ$2g4HYB?L&F`)H_EnJ$h+F0S1o0&qxtS#Z> zxS~bsWn860{)Et)1Np6`+4A;y6<^`X6D876Z@{*E`g<{P@;d&qJ~1zjV`ua@Da2cm zxURTz_Hi!*lOgq-gq=;-;w=`{fGaxM({ZXqzm1pV$BQz)zGekiI!MsSlh37VKWUtDA(FTEg z3Q+oi-wPkPgyO2;cFCbu#bfDv%PUDBvCI&FNd&!Ys)Yk?ewtKQo}N`_R}~<5vzY4! zvegbR%6`Q0c|RvZyo0*YkJqQjeHgE(G&h%BKdMtsvKWsBkQjh&b98P6eGd1+Kd?tU zRmz!fy|jC#!_j>b@C2necTnRH4vn{g5FsoxqPYpZTIJrUzvEM(pxGnnSW$f=z#ktV zeQwR<89&omAG3fCb z0CQ~mWC5)V;7orFyuX2w)`K$_tVyHMEsj$lHfI6;J0q$4ei^_oukdcB>3I3gtv*6R z#z(%pxq6}k(XZt`#I3N$zZbF<>}{NT2I#gg4*!6TEP$MVt*COW9(03(D2zw9h@Sj@ z&f}0#v{(H52A5zk19}_+r&#kJNzf@m1YRlU%nX!;p@cP7NoTwsxb;`;fBIMbKc7Zz z_b?q(Z)Wc>D=l%h>ld^Iwv?G!($ll|xA$&{`W__@R<&Ojzke_A%fsf$laX!g=}m2| z(>+CQYR|AGgJjUy^Ne}4c#C5ku6O*G&UHTIXyes{APa6qqEI5Ts8r==>ChL4Wfw1* z`(&#gisNvJ_-}%&y`(HeHu!Sf1XwW+6;k~CRS(8cT;*NYFaC3qZ^>N@1C_-83ovUa zs*K+?Z*Dn=s)*5A{CGuT9mMeEdTH|AoVWzBs<`P8gLWC$ocH4V(oj>MiSO$*k0 z&cf<~q+X&^N<7}CDucQXUN1Ls`x36)ZCO#j0) z&gbt&(5etw^}Fq(?1UJO{ zZB$4w`V5AwOSK=pCJ)*?JGhaN{(HR_v@ZT6@5C?YrO(L*Xh(asmOc_6FPp3E1UNm^ zGy=eim67wRpv1lz`J0a~yQ%VDw*s(j=R5;DR`=M~>%o8t1x$)Vw#A4%{suhtl3FLD zQe;U~x0q4Em1 z9n>lm$N)Fm(b2ZY{V}SJXReI9b7-qe6kp+ELFJx~FX0}9P{oH{N#vIyj{&Biu1|JGWR(V zei+b)3~O7=+nLLI{2VR^M31G<(#g~8vQM`?GG=ABL!M5 zJF!+Ht$!lN%M}Xn>MPn$W^YahxNZy{c-x=uCTOTLB(J`+N~VqMNMq~Po(OZk8~+~U zS_t0oCH8*>40|-aky-Y;o(l@Zz^`;er+#!Y;HJfpsc84Fs{xosLQmx1Ykfck68yWg zR8U`mt+&N0Ny=m>JH_-6g6o3bko7nJ*4y$#XF)^%b`9wJ3FLMU?*jK^;HBBj_Sw&$ zJ(g}qfB%mC{{05Hm?VQ~A;*8DKb59?Jfe*uOSjEyztO^c2m4_yQVU`ceSW?fv(@wFO?hQi z^@t%glr=IB2ar3RbfD6vst8>e5Q2!7~47O&11)<=sIRUqsccy|30SiR*+t;E=?yaYIRL_v)1`8;$4vu zeV-s{YmQLE@Jk&7))?qU08Xf}e$SpO0R-`qQ+V=6?GPHMMT6_>wswnu&W%B2ED|A; z{>=|8juKpl*X{6LpEN~_exe;z7#k66DJ>FOBQ4mLs7KoWtM^#dP%xxM){K*~@dMbm zk`!i@po^Og|KJRiy-3Bc)W;v6r=?n4=b{RIeHV4$oH0FxGc#u_wCSZ;0??D%AXA?goHI7sDi z6Y{B*>FVRiL0bT*F-zNI+yhkz$~s2Y*NGztx;`muzXb6;=Piil1CA$o8uI(+S9}2H z{NmBtQ61>T0y7e8IBn#q-_M?(bD+xb=xO}l1W;iEuzHndpg{5zq)-)vUScEjKl(4^ zs+x_~ZUZ3^L|sZVY+=il&DR*4gew(RpgDGn@E~9|+lL}mcTAP1KncumPO0KC41gN9NXH;9AXb<(*m)th=zLB zqoSe?4%{J7MIkEUxcGP14AHSeIK>_!|efR^Z4S;OHj`j zeEC!(`vMSqS3t7^vZQ+YKdWTG=|)&pR_w%sWqT4;bWfy&hR6^xB27Ero**3XqIH(t zm>___Y@aa*d}Mw>js{b&*VfFI-R!uj6#Liw^{K9W=Z`Z%Aj%H*(f$tNQ~i(8Rlk`N z<0$4r)C%miTmyG6K8vo*j`xY{g74ch$)nSS7>mt-i|;edx@kF`6coO@5rmUVcg=;lka;O7*$4N^v&!lhe^D#Tj>Gxf)opD}{T zGc)4IN8iWXUHQeGGe95+AjGD|+!K)Y;6qq7a{Re$y>#+D1wKdaz`Lp_RPVVi>^pbxUR~Wp_N=3w0^dF0!cAnh*uK%jzp*tqVT5K$ zq7hhE;L>DKy#W*seO;OeMy}+kiTi8{)~L1r|i+>7w-{lu}b!6 zyq#>dq-IKoTr&yTf|djSzX$EoZcC>?m9&$T^a*SQUiH#V7@=S+ zI}sz6vq^)(dagIryDQaMCtLzSkNFO@#%ECiPpUyB-#s8B?wZ{reVCnHS~Nq77b)+b zb1&TSR8p?>kBOdnuc$cB7NU+h6n=^G8OZ}$b+>60f1TF6hO8farhhv(=Uh>2K5uLj z%3!vrR8M`lU4Z!)6WwLL z6_s`MvL#fS5xZ_OUhU31W<-siNmTxriDZF=dz>fPv-Yt7jgV6qnNiA3`1ktr3X}%! z_%!xGZw>r&Io6^sVLh0>PshPfzq<8m!RtaApe?pUgv;Xw#JOK+hRcmVOrkP1m9{bh zR-P=??9`8++5HdCjpX-7zO{f@pEv!yplbMZvZVB$aBMXEtyq$uN0({X63z$GF6x*V zfTCPE5NumZd_+&{q5)HAD3WJ2!4M7_7FbIxg_ z>2C$=n4){&Dcv{5(D%ZqMB50Y^+YSm?e9T~b&VgARv4OswK!ZYLFv|`VH+bV&<7R9 z-78wrjn?KDM`i%19C7G}t@DnK(>r(Cuv>9(c+3CQ0*!GGV0ZIqQ~^=Xf!OX9EMxGW zk<*<^a+8KO0eTlZnE5#UID5T1Pfs#B9MT(BgcK?weKR?s+AbL@OvHkC2I%*BjO4Yo zFWn}3Dr!t{=I2)$;QgzHu?$#3`LF2M(Ft=ammR+ev$7Pg3RVlfSyGlI|NoFs{9I>8 z6w=|oP^{=)98x}M?)g+kl>E>(OzfnysvS{B-WBP(6rgD#K0E2hI9ccY`$9Y_aq(8~ zO-wh$#guAP+1T`STa<8Nez~CjZ>zC{!O;BIiOcR*f5_K**SBjS%6yqaIkLg`A$~b_ zFx!BDCLm)~_c3}tmI?U7I&yj_{hS9McZmL0SZJlI_%|4#MEvg~#W|_C|L7rh8TvZo z@jf9-Kj_A{%;oG%_F|Erd`G8cfu>6az;_VEJga$*FGg&m}w{&RLrqUweL8f-=p;@yxty3`gQ6lJ?O&)Z`max#o- z{fQyK_pyEiL`=_c!p1Vt5fXJaaQ7v9LejkWjN zF~KpTXbXr8GRey9PFNgB*Jpr3Qz2#v&&+JVD_IA;*Z zThhPXXj+x9m3_<`E#IIfi8wy`y}4m!L=~z`d3HsiXEwavhx=MXb)dW3mxrJ$)FGq3 ziK59}fYgxpEn8(LKw@xnfGth&Q^2x|f8*qX)=V=pYJ`#cJbxA>PDu-{Ub^0OCH8?O z$)xzRbB*{;axf3xey|woY;mRoMXW5pKuOj>Jl^j=;m%udUJ7f#EoA{Z%=r}y<{`oB z^xSrj!(Z!{mrOiVYya>WjakZ0ys0{1zXPHhDny{-B==810ZI|{j=j$RD3kNaITLaR zLrmHQZusF6^jye?cLClhPY_h46^(;BMsSnDM2An0y#%y4uU32rtma?JCc;X>DBkiL z@I!Q`iN+Fx-BPN85D1eRurDg=#J|V+&si$o<}8R0pl!RDy9A|kI1$gxM*LgH5LPqj zxspsQe7C8iA>g$jwO1=-NstsWDw*!{bmd>0uS6LGVsEHwi{ zh+cIC+0>#$Ztxop@%BTqtl2&C*%0XNv^pj3HB#qt?@QN~KKB<5e?8kTO>=xPRk$sI z4D%+d^;b}1vnQu{d3n{tsqC9EK=M&qTRPHVd=>UvT5m!?Ne_=$eaTY2U8xiDU|6a6x+k_vyFEYG9t4)u{nwL zm!BpGZ{uXx4sd_j6CW2r5N!nj#GeU%I$cA^mZY7jS(&UX@O~Tl|8A(fJpz zPM=@@x-sH@#u-&?Pi+%bI;-;YG=TROxh#F(!o2SdDBCIFwuafny2Eg7c-C)+F441u z2ex_xG6?lu1YcRakRFvx^juWbiu`C!c5A~#Q@On&;)ln%W|H6PAr2%Q%BpZLOlnvX z(J%Nw+@-|{ChBjm_3NcE1%!Jdd@0Mb>(fi)yz#~b7mFUlJYC1SN?fR(sB@sPRyp^f zNJSQVB|U1HE^%ZjMe*vzy$`RqBU^%TA(Zn4pD-{8wD;r}{`{Sd_iXovw`g-0-B+|-CzG;;L5kLMj z2qY0&wpdZ|b)doclRdk`30tr_u-6VEyYP+xxY$Ur6sePLF@>?3enRx|C&7~~y+~YG znaa=G9k)n9O@xd{i;HuYq)S)p)86HOjvdWg)HlUB3L&Db0_x*bdWs0AHi6&8_A>@+I}MA7ei3yOy_ktj zimuN;4HYPG`=^`3py2kTTg8;xmhU)~!=}(-2$J|LBh8ffTJ)DF(IFU-P?{7!M?9?! zPvJYyC3^QeJwI_FA4@{c_PKxy9uLyi9&u0~sQ)hWRY_vfaxm4StYV_&^YgcQ6Ngtm z&|1vullfgT#1By7Ftb<1t}?pC=RVx|`DsaFQJ(X2(pf^fMjUVBxNp-C>tqj4c=*c`nU^tWBz^T3&;LXYflSwP zML@HPVLB|D^tb9|O6+|y1|_ZvvyE#MStKAzM4&37#M-@W(L#%=>ol{eawkaP=QQ3@ z+v1N}v?mgSIl5+`9FIPi6-grhI~y%x9Pq4@)6{a@!7cYLYBKdDd}PJ&}E zf_a0rHg1<~)kn^k1!6<=V8{&ac? zCsH8XKcA4sJIjux(xm!WYB)~Bf@R~pM?|~A6ncUa;866G9QkqE{}GeEQqr0wdGpB) z`p1q*(LR~$BA3v97vfs*mZ-(fxVCw{o}Pye`?nOke?OvWaGJ%Xim zvtt_TNlse1v@u;{_$(5Ip-_D)21rnQ1e7J5GwSI(%D&Gne^pCFwwmI!?WtMrD=z>2 ziwEmE-m0=_`m+x9PvvgIc6NIQEfpH;y`7yAg4@GG^Ow^$H{wQ19L>bxU){wXq~KLd zrfA!D9L+*Tf17eCuqn)5)d2s6aVl?0SN8Dn@88XjXso97sLaNl6hU(}q~Cp#v|#hn z8B67gmT z-SE(A!#m&h-FD_2+3~rf@8R=B?XsD*AEqaV`$MSkorl>FNw4p;_&2JLGC(TL@3jfU zD2IYFizn4YMYo&U;@Tck#A|EnY4PjC-tAMlRn!rxn7M9+6zG*$M~JzK#qPWzFP=uO zi?!kW{W@&Je1lRJOA^0hllUrEDrg#8&4jsr;!a_?_^vJWe&SR$#ATt}O1s)?cAfB6 zVF^)~)W)?C<;>{3dsexES)Qh$nOSyD&h_8*$K;T3O~{5%mrY+A^MEy&uP>o}%6biB z3^sY({qFS;g*-vNzzU_rCq#UypXI;bZaGteLl>)<5PEzD@P~a;xj2Vk-WSPC#qRJX zZ;p?j!uez@_?f^LU?h%pIynt`5BU0fs{#vgS=g5cA#$+y%rDgtMj5?L=CjjZs3Tjs zJ)8rzwMZ3(yjrCnJ;MHWYPr5hHTBief=|s$`)vOf+-}^Rj35ayA>zjmS`%)UeOU58 zimo#p3O|mYQO>?lF8hoSvdbQq5!u;=5JHi?XGh51A&QW*_sZrd+mU&cb+#gV{eS;g zJx|GtyWjeLW;w3ayokviClJk>--KpR9H9*@M&n+Yt3ZwJzB4p5uPr&<*r2A!BZMHo zK%Qq9XjX^8>SR9@6rpFbxRW#N8B`PO;5NM`yGKR@5Nifv0fTD@2|O=?0Z)n%qi9a~ zVHy3u1%)eCw%4RLohBE;2L71>kys$~?6vK47Y-%rP(wONBI0?3#U0g%j8zogCtq*x zAJ#WRuOY_7W3Q>~S%}1Z-DjJsqOG3nFr(^d@#(nFdZT#}XL79N%egq&#M`t{q3+B! z>JNX8i_gkS7oSI8ysVu4%{F*>w9wBjUvbs$WbL|h6eQ@>IPC3wE=MgMt}nrFa_qqU zqt$TNddd^p$mn}mdVd$uu`I7vAHbyQU5=KYV<|O!Xz;YRd|R>`a{?2-$U=iX@_nj zq1I6_^kiJy{*V#)uNRjy%gdw)Z@L3pyJ4bs$MS$tj|Vq8qm|!Lfhw03V9mnJ&H1R; z=I8H%`aXHW_N;yXV3TYGm^;se4ct8O@(#Clfj#H%`%04ZbNjj^ zMm!jLzni~nVIDD?cQWWfM^(u@X!Nu*8$%dfs%gn+67}bnW$vu>FdR;)-spmB(5^Vn zQyK-cJ~C!nqmhf)jAyYylS3irXx3GpEV zo05tsAnoZwni8JT{$B|iIpoLL1wIc5$cu_rSAiVp#M%`b=?{TzpEs$Uz}}kovkQI0dIq8tem#r&)jq(PmW-Y$@Zr%^go?#yx9)3@ z-R4qw(0|WG{j>4221I7lkgx~P@#1mP~im|T^mkKoi!>gHA&_2B3A;Mnx+YlA3EzK`xf zLcm_s$C5!Uk$o5pxQd<_;OYQ&ppxLXHTAaq+uj*&N1g8ArZTsZq~}%=Q2T)l<{T;S zKM9VLt^51(S8ayHqH3KazWL8JLKRZiH6g)nPVkkKlt~-j2SX-B?(IT9vbYCV0p;x3 z{J6UMNOH(9BOE+3rxS=F)+IHwlc?uV#Psudm-`@fbGpp{OQuFcMqmjoFnNrP&;w71 zu+EZ#6gp)Kiy$IIrzAa?cEbOuyfjUyB!+OHlDb);{8SZ%T*a~b#?VyOG1;H8ick-x z-E6;^iMy`2H|4#@?^tm8%(saDEWUqkGAl#=VUJFE)~sc}?4aZ(<14R7WlNrLgD;k9 zGzj7`vE+^u^SK&=m#pzEh25<$@(8Ny$E zrOaR>_78dwQ--#~rH6c50y~fD>GC1LO*nAy8%z))B`BIvFJmx%1tzqiy_HY-hrS<7 z*A*smPBjt}LjJD^iqOM}ZBA_HE;u*t+{*WbyY{2GBg^eQ;fI{X5Cs2661BzYL#0N4 z1!#vcjj|SfVmT*Sm&zRLC$HkrP zhGe$xAxSDe(xn}^vwjs2BzX@T5nF6hGi-ciY&0YMi!C-Rm#wBbVY4D8^S7_u$J2+? zn`dqF=V!uo(iDT3wi(!&#qVs^L9vD56$<{0E{^*;uVGG|@<`y+(VDwhVjnwi@&3Cw zHbw(FQ&u?DPA@K#wB;maWj}7e*`7HF3%iYow=sC%!+|nRCPV7%jCP8M57iZh1&gix z|LrWDF++xoQNkJN5(fOHy2-1rkIrAHVNo!|+vsV_Bw{dGYHQ5N3cE~pc3Kw~mrot~ z*ZaMVAN^|tHzgAam)Pm8EZ$t<*LHxF!jaQ9!%;V&0}jXS?E`&89#$X^Ot2SU{3-w8K3(IRM+ zFZ9+Gnp++fbr=I%tk5me4*l8)VaiaaQcwP`G8!+qy3q)kD-JPJMlVn)FW=$B-ZDABxR|Y5RclY9z1u+i{QbBO0CL?U<~$ zTh}vpnM9u#t1XmRJ|9BF_CRVK6cUx#h~as!>RUt#y0x}v335}Xn#GSVD?Pt;`RB}D zk$t`pY{Ux%xO=|~NL-ie{1AboBqCuFxP3CT|7*Qa+>Bd9b0>E0klpQf>&c*Vfjt=n z^zz;5kv&;XLdA<|k|H1@yV6HEucPYW%eKV^i{g)1v37~U+#w_ssZ&0=n#G9u0;{O} z8(80*%X0{x>}rWZsRj0E`&$ssNOps{KSjPaJIR2W!qAl&l?l3UB)Tvu$tIa!?qfLgBuMqYj^j~5N=IkX=93_3o?UwxO}^{>@QmvdW9av3;;n)bK%s?_>^#R9oK1B6`(H|0%^ zC_x)Coq^vwoAkiRzg$0KcFw=pRQ3+BEq{T2b&1+~ylAuo6F3<5zX?POBgE7~J^d0Y z`>O7wrdiw{%=jYLU0I0k5j!xL(7@_IS%{gtzS5D2CU5)?S*RC#M8Z8!6o zUSOwwuiOKnmsXz5lbsbD)>4pWIp#mou2jf>9VPbGu5q9 z-FqW@;_r7|lSsM4QUdPJ4FAEYCOn@q7N3b}Zf$-N;tGoi$9KIWJV-zQh;)HlHtZ=b&;vZ#R@J8iGMJ+(uLi1hUh4FfUx*qZn3l5HfH6GPQyYQ zX@XZiwZ2kn3eYU>tJMM`cGM4QSm|))=oP&dQFVzz-I|itA$Oowv*bY-b2@r zzs@xK(O}q%kvJqBedgr`?t(;xMDHf^CYPn=D63aat@-GJ-Fo+y5*{h!RGl4HzSHtw zH_+*5MNnboQe`fWKz-78zF%%^7*p9`DvONhlmydh49v!Hb8mdy9(4@T!Ma&5e+M04 zD1aNg1VfJz&88Y9=#&YX8PDmfH=WIb12kCb| ziQX5utIX}pDpHw0iD5e7qIy-*$=~I4JE!$iavr*oq9AtCTy>>}yBI z&8fl=C=m8%<7b@NrPj%5?o!RhTuGg+TK=R@DeC>}VUB@{aPt+l!L%e>aRCkFj4 zKRYX)@&F=3&Mw0PVr(Ah;;@Mzr?E^8*l%A;@ow3!D54?6Kii32^S$7W%x$kJz%s#d_?sPuyU_H+R z8d1Ndveu*d2dqKoyO_%8_c4toFl9LmF@%UGd-7F%8hMxrLITrWwSihoMz=1YCt|NF z`q{3s^qO!h)$*IflekcY>ncV(FF6hDue$U0lM(;DHQx_f1rH~$iD~Ya zefCek?_6s)xK@S3yfGw+y>EL4Z##YCDd+zPHWR06nPcK}_HLh=@h$7VZ4Sxp<3;lu zAzK0WE22YkNAgtH-!V@~?>)RLLcc?O^@qAkNC^rG7kpSC{(DI|$xc3`SAuQldM$GG zm47=)Sp9KzcIb)f#Hni!K1hYSO-*?Zi%~b-lb|XoYfa&lpm-P^=h=K=SX|qBS(iKh zf_Jlocu)bG=WnI88lKE3UOKW{eox?HeP-sps3?71-MyU`kK-~~ZV#X=dtH9UG5M%K z%Qky>HZ-+!+;HJ|@p6lxSiKZCFg>!pEVMV~8Mv-kZ2T-<@#yLLk*h#V?pIKgapmB9 znw1L&0`;@#{Icf8Z|4^i6O*##`Sync1Gvpi`q}NxIQh%^1^@j`KxcRk%gX2#8TK9-KA}a<5y)>$4UYP^b z5L3yjeBo+hE6j#KmC<9x?$H&5!J5odzeob0JEGvGOgS(4ysm@yd_fssbUxe~GGJ`V zGhkJMvXqZy9(n>%ioi(b=^N28Ba%7G3T}2)5Ivm#5t23#@tDTG`F+9}1bE%`-o~>d zLw2Rn==saF*pd4wAKjp#uXFrkze%mWpM9ciST^|3L(2m>MxIPPPrb$QIpD=`_{F;x zRgtAbmu=S3H&^}pkgE3=eREA0$J_hPDlC>cQ9TvB^5>)NE}bx~Y`TII-SCyzbD^jb zGLS|&40;W%Y;A3Uc*)60>sDn4{P9|o@4-f;wJKeHMnQ3tIYMc;(3hM5`AZ1JL#FR> zSB;H=2$d`rb3<=Q;?Wb9UZu%GvC`xMm+W`aTTdDK_LQMeM0CgaIB2TS{$lUF+(#e! z3AZcA9ho*v%3yvQ^dx0*DnyJqS*&Kw9=?EklIpJF1;G;1;~z@xf5#Z(rCI&Mc*92% z@_92~Xe(8ngiUpL-qFc*=;pOs^f}m?ADp2id{VKI8dqj2F!7^6$K;;e4&#OS^d*dzRf_vMV{%LVeARf2@Uxt}EuLJR|=(o;GA~n z8mlklNO+9ys(Q4rq55)1v&d08Z3_f!;lg3C<4g67L(-7xY4WH}cN`77Q1tDZCwFXi zy;EV*sAr8^kJ7cDRFwEEER^VL@kC9$JpW`UjdQXXdUe!N>k}eO^-y*7ji6u~sCasi znbw2@R9B_S63%dQ*eb5@&~7*@DfEv({Vh8|J zCd!pB82yHlIRBE4a@i;BC+l%UWfABRQux4b*{3JWl%N|dt>T8%LWY} zCQZu05dCd!Tpu-;A03|&4_%4AxH@ji5%Bwck#0=|GdOIV?fc_@So6XezEl;k$9y6Y z@uENI?|X}_179dY6AQP_+Sm49r2RlnXFa#=={(oq1P>DoI>{k8rlrNZGs7S6Gk<{* zPT~|IHkw`?0qXx+hr?%`h^2hf?U9M%t9P#jg|0)q6}$!nui0k^)lpuJowE@`bP}Nk z0=!Y%XPN!|!#8rt5kDs_a_Jz)e@6E2&CfPz>)r87-Z-J8k9_U`L`9L)tN}#+>YA7y$yine`kE* zx^k||yhA47RbWt>#4SI$eUDZ4^hK%Xzvb`4*A(#~B$oxd&iIdUGJ%J;5Nij9=!vfE z$xr%52Gu(0Tkfgw$2{U0gO8K%uIz#0y-AJgrb-vxx&$sIMd)IMy46@<<0Qq0fG_)7I19z+W6OVPE*C$2{xKFEmSv5>g-5k#gebJvl(R@vY4>gO~K|0Mg0Y3 zpFcOX9c@TZg&!Zp!QNi!5VZzP_d8uepYD+`K;VYLuwQ};CHXJ{`{k}*1g_oO{is{%L zRuju~;@{{mK{0DNb$eZeDZLv0kjYPN@tvhz;N@otPyZlC%ilMKurVNT z2=c*LnTV=V!*zETnL7h<_MZy@r2A}kpFsNT8cVNvqknuQ3YG%v5xOgad2K=qcn_g1 z>7hGFPH4N(U3-QfQUn=>-RbGJ9sw7Wk~J<{zUD-TT%LlG&VC;RX zt(`2m`A5zrgyx5`ylIm+O!AtvnpmfxVVNzqtSrb$V}i+)3xzImD|H!pYug3c!wBm~ zG@QiWv4&nplwFB+8I?N(bsUzrn;ymn$j09k9f+F^YWFK=fD-MhHu?U_GyQXR^;7O4 zj`dK&8vOky=`Dhdlf0P7=D2f1rib~V*}m#wS*PBrPDbAunu0DiEl3~+1_3~Vas|Tm zRpVH~w!d`4Fl<;ZzH9hO|mbzOiZkVViPNXm!)= zy8c!H8u}?89adXAnb$Wewt0Gh_h=dLnQ<_ipYd(eN!OwYvRc%K*GXt=R&O+I=8q{N zo;M8m1>W6;?+lZKSi|pIpSOp+12E6qJk=a?Q{M!=yk~L^jVG7m<1RxFQE%W);DqRp z6;w-P|I%J}b&^_74*HvD2;V>eS8b!|0Hs=o6$!RaJ~RNjA^X!q!C5$g|1IhFk5irxjhVC;G01rI^j z8O4?4uPD}E#*n#xKX}N7)j4rMlEUd4w4b@K<=G7R#1qB&UH)MF$(Vp3?@!2^i_-%V zmWC_A%f+X|pkvy~#n*Mu3B@+dsR}LRRnnaV!%*<%{lx}BrDw&=4|xm?T4pcUV$Z@l zi9u<$u0fVyKS84^oi$T<<*r*oaY9x>yQCGx#zFHP?%j)DZx`O@me~x7F*x7(4xKsQ zF;HeBE^Fp({>&NaY=VXJVX=0MF<{Dfm`y5cwx3NJs~<3a0k7qZ1Zy$TPR{k8NEgoI zqsmg^Qi)OVJO4INI%?kZua}&h8r=H+ErD5;fSk($@%Ua+4?z6|^0Uy}O7OeXXx4qX zEEe1b7{Y`PzXih#4Ab^6hW;)MOAMi3WP_jWtZ>W_N5pSBz07E7I`#c5l){++>#N%M zkilNqSa4GaM(lJDr%85{@*Z4)Y&k5~^ z;^#6F+r8yfc?tnvXoTXkWWNy2`-{FBjjcCyUf*GHv*(EO>3>>xl_||KsXDXb*K)ng z_ZOeZO=M%`Y9p6+<`eJcc^Fx8S^w}qy5Ljg{tgHP* zB^l^6VC)yIf*)i}oMKC!J-y3J6$(aoP>*Thi8BD=F;C~7;~P*#x&s+!YpX>%NSrl2 zLQK>x(0b|h@N8Cgt2A_`$^54nUlfyarKBC&fk7oEF8`AdM*n7+#Z~OCmpkr7v>?CC zzthdD!+{UO|7!)B%tfMsjKpzeuY+yvxK&i#Lko(w4|DPgs~q>ptdp&MYgs|xM@mou zT5ckR)e=YQ3STsQbOT)Rtx($Bm!_oFGrQ#)TG^58^?H)f_O1#$6Av@N)q6?>t7($> z3`4T6R(q{JDq*w(X@`KLmCeeE`ic;q7b6x6=Jzl5B|L^q0OOP#VnB>n6+lPxJ2{_z zBT`5tww!tl9$OjO99dz!fm3>MN_6nY%naaQeyc3GmU?R3D(+3^ ziMrjpgYycqb@{6tJ)vc%d#gXGu372GQfFA(64mZe|G(MKF~gPv1}k>Zy5G~%{$z&Mh2#w?Omby1Yyyak%tZ%%GgMr*UYd>`WujiH(I_Q!rAO!Om*@_f zr-qlL-U??fB3On$XW!?&LyGlKfvP{b4%y$|uY0}U;!!qBjN1>V->OUB-!Yu-R>QV~ z)~pU8;HJn@={iVSA;5~MVKZwCimZsXtj1yzgo%$^s%FBm+~Hme4A^ew5v90<)Zd;xRcnJuFl##-?^FWRYpwn%9WY?17}JF0si!7-)$?wMWv* zZ%RD)`O{o1+Bflda8+4d(RWq#9y1&mKD)qKeBk8uz3NUA#^-(=*k*uWmc zS-C{*bH)ZBdGf;xQmSr=a}=`RHFQCjPFP@2jNVNMtJJ?geC6lPz&tiNA8-^`JkeEP zvUxP=P`gwWG&7o~%|j+JlwqS8_W23_5SQ9lo-mnOABp8G0v6=RX6dc>`<7E_^_aR% zI2hdwCT3<%*)#$7=ulst)=$pJxXTkYWc(;XD+0~KMzkz#)B&WL;syeTXT_+m(LJb_ zE?dWevqBEplY1A2uo|8T|F%+lWk@V6;gkSb1uxx|C`Llf%A0ni@}=;+)(8w5eG9^- z7Wzy8)j^PK)a^5~DX`;d8o?a?5gIC{CRJSx3GNiCczs46_?!OOlbyb8 zZdaT0pY^R=l>e+Mr(WGJ1eb%)>g_2PKXuAq(hDcCXf$MG^Web)a0=86V0Gy@zi&eb zt=By10n|#4Xsmw*O)Vf$020zokZWNsPXU2DCg<{}H%zjB;xRVhZ69P}t-+@M5aXWR zejF!z$e3ZcD5Hr5{c&$`0wpjS_`}2o%c+zVQv#*(dJ*}n=NXvNpEoCQBQ>E*CE8lq zo;VNXQG*GpF0E2ec5A8~miq0W8|>NmvT}=m7p3Yea3m9AeEXiG>8J}sfk~3hi`+iN z2t725#GjWi2*MrQIo4{G4edVY&3ym40Eu@#cG4ulTKMbvQh*0?uBU%m+T(jchct$o z^AE8rg~1d@$|kkLExla#G}_uyIRlG0r->w_eQr}d7?i?CZaRtFqRlO^U-K!|vKy_s zBjfz!&V##A>pqm4U0LMOHxY1r(d*%_=$pjMlelD`L)?zX_lhSIgcz}?)8q|%hK`Yp z)ThN`iS+i%c|%L%90^`Ru)H!5HaOcnb>Lp!ZL+EZyJc5 zMg*eDH+-k6-|v>vg8g@X3GJ#-oi6i#LUdK>X7g`Y`}78{US<=&JLFl;COHtEKNcPl zxi0uFA&~Qx9qIG4j=i|m)CKZM`KqKK_(AU`0f)dr$mhPeuGpmTVh3W@1N3embwXeG zjxJpQ$aEnD_}74l@1G75(R!J!myqJ(VgMUbL-_dz_{jdhKrErj>|F|3@2fp;D!c0b4vq=NGm_k18{c6v8|v*%6L z3OG^>CJrxb;dh`33HRSV%Uhg^VShjYsGxlNsh8gz;VWz}380$QN!^0C>}1P%L3tNi zjfRd4d%KBR!@M$SskP=GU~SYRt_Op`)cbEwP{5>F(Dp~KR^3t-HSE^~i%GG}%Bg(@ zZtXxV8mNDpbw&!0>x*k1ntUrkT&za8n7`Z zz|5ceRqJQqW=_GP{=oSe_D$ckuhu$&-I{4a;*cVbo!AKI>HV=KCxL+Jn%^yVdfj5g zKO~%bC$gLe(#};Na_i|&Vn`JGyGl4j0$)4BtL}kl;J1Q@%Nhu%>ax1J9DNRZ6iSb> zeD9XcE1boRghnsL#LUNC@&x=*l#YTy=#h^MnGvjSFLzo67mfAi^&)p3I5W?L?d+v^ zgbymprQX~LH+uok<5UZfAI$U;(Y<+CF}^RlpPFa{eg0s6m&8=%blEbQRCbE^3 z4*8S}t_$K0pc=4;tE{G`#aK-K{F&{&7zyG;q=!Mn#N1r>I@aq%?s>GhrYrgyW@=vw zS%I`vhdz2DNFiO;Yy+Qg^73)rdqF3;zfV1NpC%N+>6!EWxsXe{&{Rv+>pZ`FS1Xsl z+8S_k)0 z&teCZdAXYt6m;+C$xsn^A4f;|H(4nT2Mw={%)F8+lihBFYkd~#GA`L%kvP2l*r7J> z$&+_*T1)t$Z+~>9`EEEYx>CuYsQZ4Ofb{LM$6xF;*ig*99mbZ?yiud;{04VP7N=^r zNl`j5_pXX!v?o(@of$phGq1;3GR2X~5>hNbwa-%B>mxDB_dO>-TMt7xv;-odwk8J> zo6GklASy-rVhB-?1AkE21f|pyRa0t<<)wI(mq`vo6qFIM{#`BT{87GZCIwV2v#2 z!0lSMitH67iimWJS6uZyVYpn&n`pYdTf>^yKoQr~Zh6FzN>D6&#f|yZw9YNh`|3I- z8Y71*@10ER8T8lP90HCHl?asx^YWb6wW;d);5!ANj_teremJB5Dan8|FOX&bC1=O9 z*Ksr9G2`PccEgu;t)MZDHhZ#<_Ma!Kk2Lc=3O_)=wAvty^IiKq>Q65WPzt)yJg%D6 zG~s6I1_(VQU4PXw52d!SeZxY-U!0a*q#hAMO4#Lm!YBwo@PRex2zO;%%*>%=K!>g4 z7P^zA`u_>xEB(LDJw!Os-90)oI)eI)@p`m3b@LN{xNjWV&AysxSeRvF?ZPJ;4vS#Qy%sI{y@F!`cNZU=uM>JsC2 zsHJt;IymD?M(Yx17^-7+boqy8X$YC@YR%=jP>&K7bhicv-^W&$p*=IgqkGDl6^odA zskYVXcZ z;<5p2PjafXI`-DQ6E)bGh;KM0Y$ts<#ut;}nsVQ^EzuB#u2n+TK= ziCY)+=!g(>;TKwX1`wMN;BjyhVVvj<=TrQZzKY^kArGeOp#V8!{@orA#>5t7QkV!) zZxWAn$J0!(4>CKtsPin&YDpWZ5yrZ7Cd`cs zyY;352x9!)(M7`W;p-}2H9v;unM8sMc5;Uy>^dhpsYYxrH?X&?PfSXo)AUkGG`KoJ=QAP2QbJ3yVG#77+m8obR+WR@K* z&N5)o5SR-E_zWjDRc|DcS>Gkbf^+naS|?8}UyAj_25;m} zlh&C27F`!hmaot4aL>lu2p+ms#+U~-6(4|BqcKYO#pk*6Nv^j8E(~L=i0yvxEvnG~ zJ!cpU^%WQhTu&4-RFctf>!Cc~3t|W?G(5!&k)GTBq!UoB@XCG zTYL|O(Gz*dKSEoUCI5Tnen!&f#Im=;ZxFW3SD|M_Zn5;nmZg1p$R6~8s94yV&F_zA z^8>L`mT)SJdUH#kv0f3AS|Y^yhjA7s0a8qJ38-EDS|*T|KaMi9xB=>EGVE~_&yGQr zrHzS=9ne@u0xpssNC||jU5ea)VPbaC=$J}Eh|AW7uiBk9K$%T~Nu`SrxuGQcE?!9x&4xfu)c`ouCch7FwN#DLOakY_gGb$ zm-}UNzun0wi19}|)4C7ya7TsmDAVBfolZ(Lx`RFLZ5PrRw(7$?`Je3jJP@&YRxaUs#!t^eHt$Qu+1lRoHdmdb zpAS6q+uYnG6TTf@#T)S}OKss2(vG*Geo2B7!s`@eb*9Vw8!0DzuE{5Ki<^|G4_%u(2>^{N` z4%UZ$vYy2P;HjqvWO$SKwJ`plJ|nb67{RlVZ|}M>9tR8Ms*l!tDK?K#T0d}l^w1z%yID@~=85u`kR%&63EAj8 z4)M6Q=tg;S)y90J=)A7*98vs!GOV?6I$%$24=Zm*M+j}St_$K{{qnsw08-QLOZqii);P@?&`utNDbq%S^dm#dlR?I_6)58&4Xwwzju0mZL=x#Dif6BqIy4qNlRc@1tpKz`-JxxxOin=pj1VzkY?Wcq zkN$BR@ix=MDnV?{dCvRub!iDzT-&@DB{`wNm13Gt5HHK?egCcDn{g`=R6OF% zI7XMP539*APH0nxp{ZHGU|peqn`Y4mgCa)LjCj~5w6e0W)JNqHH&l!6p`P<&(wQXw z91jd!;C9$C>hMFl9-7c64&9Y+VVc-@x9?>9O1f>v&(c5m2*omM7V|`XC`kBLCWag8 zW^5=Mm{)kDN%KH$j?;2Q^#o_B!%F+M4@^Ln>9F{%6mV2AAnLomG;o~V_@1)qE(I70 z{=S0e$=4PCj6cy{!R_77cLK_lz`#ooo#%aZab#dHJ7X&CvPd4SX!uoY5}|fqLNzM) zIsw06+h=RlEa&H@1MBL@u$V{kR1okIQ+GJ5`Lo8dSmWUifmGdeZS=@inNH`Bj1*ry(VBgmU^Dg)Y{qE?##}8`^wW)mS!-)pR&p`Az@djeU;Ai zb*ttEGAXGLyj*9qfp~OsyX9vLj*QF|cOT=+)QdI+pwy>PZ<1icyS-y#DvvshdyTh& z#fp0uK+~4`H*#ASMrv})CT%{ng}mMU^3AAgB$8bfdOaA%-ny`HWJH>& zt1&#QNB1~2EG{>Y?%*x3mfw$#g3anw)g1-^tX~{Mqt@ALtoh`AN%L|V2WBiXl7!OQ z*W+L>fn!0^$JNuuhREr3{~G8kwBcS9(=?m3iRMyczu50`J>!27o1}CDkc-!lI&=i> zWxtyGJRAoJ&Bm6#@bL7%>8F-j=0ASbocvqBN?*0%uYR*e_{S3>xV(S-Mf*8?%iO{uE&QzKJ-tQ1!Gu}Kr!k6sHviePhGs8MV zB*HmECMF)__8nc+S-wmz$k#h5t-n0!?*5D86IbI&Rb> z;Q|zo)zwzbs4&CJ!mTmB_#dB!MZz3fLnR= zQ6fZ)GM`t6tcgmu=Jg9aLH7Q(T!rh7T8W;)7qo<$(;oBQ&{O!e<>{O*r}N*mjH%}j zW$rwehnc{AYJLleZV`3#%Wl2g2oM;Lk|l7j}o?!q;I3zUv%u z@dSrIfZXL#>*r=V_4N=UlAX4zz~FD6zZ3jw#Al0A5J7gppTGvkIXZkXH*8e=9R3Ln zBMuc-gw~kuruM6j(S@?i=JzAR@lvAb;ph9s%Onc#WLMiB`Bx$ z!YYY@^m}5H8~(P0$h_{JJwv2*A+~YOp~ZSO2`Jqkr?uV}_XxCEIm<8{JIH-eudKTu zLNIk7q{& z>-D?byZTWck#jL!y>NNx`2VyQZkY*Ve=jJE0cvuok5u^cy1|IIA63uSbVGIS79%&L zzVLSc)%24R4NZE{+|#_I0DBczUbYlXDi7IS3Zhf_fFqh!CA<UfD$LgP z=swN*JE9XmX6~z=zmPWij?2{E1@alyCT+F{-$`1l=-a7T5m%)jljxyg7lH1>vd5Ew zrT!!{@=m}o%?#!ZOL*WZHs>B4*~!e_nD>Ue6wN`~km_Z1x` zoFG2w-og|f@PEpMmHr+SD`srs)3{&}o4YeUZi4yd1huB!F2$#VQ=57k3%wNRlg zCi%-``wfW9(;v`~|CwhEY{RTss^n2dIOprvB|q;$z|jP@thF#^1A}oa{h9B2B7v8H zGIgaBf66NSe=)=nD>j?TGW0qz9RVLoqL92RU~BYigN3L6*3d>56{G-Q%Rc{qi59lN zB<*J-lXo;PUIXfs0YuEI3ADtoqj?ccyN`$b$=G0t*TzQQaD1R}`f@BM=`|$j!Y&+* z-aPa$OVc_gh+LYg;ve#XhXaNS2`zG`>fa6qcqL3b|E-yUqHbM>U;9}HTk4gx!Pw|_Yv+fM`48_4YYG$U=QZ^~$4n}O{g`8SxNMgX6z0c)@@~y9dsr9#R=m z*S0V`B%Da*of<&+Z7aPz2Gb)qxA$D+e)@4iAL2~FWCJLR3Y6l}P z(y|WMYI={Av`a3(u8h8VQU9Sjkrf3+-t}PkV;dYJP%Y2xmcJR&td^7XG0M0eTdft5 z%BcY5QtC~2W!d!o0IV#s2x5#9RQDch%DImwpQXl_Sa*7Xz1YB~A7$f5zkey_8*U2T zbJD-t6WAs%E}o+8AD+VDt-5|JEPoDh>Ve z>|KqXCkxD1c7c8@Y}MB4!D%DeTo(&t5v-C%s#H`I1p9J|0pDhyduMqi+pzRnGQGRP z1sOGO-ZS$&XyIUenDEM{Fu--BB~<(cmK!s_PF;)<4P5Pn+4^%$@{+DL0ir@@%X(jjlhd+g3BEmBi~V zyT!(`UTy8n90$jLq61G6GeJGH;aw7f^s=-th{;~SfNv-)k{uT6He^scvT4SpWXW$x z_Z}t=ZBkn-a^R&fGpN0hi`&U9GXf9M{*2^p8!w~uHr^~zO^&R>uueMstj7z#mKC-& zNN}z(xb8?h0)oh`8I)VgjId&Qbk&njZxD7?JS& z->~ryoqPUcgaT4A98gwKTRXk&37+B@4CeF0cYosR4KcVS2`y~R?DlmPeI!MLP=n@KOEyYF2ozihrJwo&{H$)~wXCxq!c;(A7Ef^sVN$F}%S zvUaS_+NDdLA!?fE%;f~Ru9U^l?!)FHBFk+? z{gwP|He_mIpZy76HRk~JZCa&h;eI`j7AZ-eqtUz^O{}r*0NdJ@p>aL-_luxp&c6&X zULXadEB(46y)_zLXQ}_n52^Bzbkw&crKm_WiwMKxED1yUFFZ959CZ1~JHeL{1_TX` zwH%q5&Z4(~hBMVbcY+;b+7jqh zA4mB|B(5x^@`rH=I-h6bx}qor2<54i@Pz8VItxb6#9*G%(s~{EI)Xq4kvit4Q~@H4 z3^kkx(=Aq*+t-mEZrN-oeb28qrT-ns4x!4wgJ^=mlw&Q&le(W6Je8sW$o4b27a`T1aRFd+Ntwy}lU4>C1@ zB_IFyDe!vm>;+h0YdFABhpsx3CvzY}(Xdu-kz61u>mcZyrP*;!q z<8TlGi|-)Du%TX&99h*j17Ukh;DF1032hisam3uX!9q7#=+*TOkYfsH7R?2c1@2aA zOK6pR3qRN9*`Sq+lgGh-B%OCS)$jkuPl#jmaT0ZsjF3Guvrk5p?FiW;9eeMUtdPpg z&NyUmvI&RGIA%!M9D8$&-`)4uKV7b?bdKKVzF*_{d^~}rZ^b_O)!jdNv`j}|!*4+3 zekw+EI-5k~YKWDW@3>W+K13KI!5|(mueoh&XD{3MZ3dQo^Th8e{Ku4HrnCQJ=?P_r zh=02f8&+uD;|}St7!Yvf>8N8T`E78xvILcI*n?;V<@q%qab*IP8!AX-4ffxhOJb1I z;wC~K$pc2SaOWAyju;&8t!#Ns#~_MNCC?zcD>7xD^KL6RS50-of%b!h-s{V(!!wVk zM>NsSDR}@oY+g+@@y}unVU&ke@)IMx;AE$=mL&$PZBOG~AOY46n=5M9c>K0d1xjtU zn!i@^j)ysYAD^^qhMFWi+H3vH7t7bTVErvM-7mv2^P1mpbmm2;G4F2ko-6Uj$=~~? z43m;tC3nM)1WNHB#8&K;hd79rl$W_&=xsixMR9J4Ey`p(xbZ~>UnLXgzI;s<31~t3 zs85vL5)$cyZz-jrkVlUmL7bNR@Ag$*lbvuz$A0CcCi|?ldMv8yO2xE#>?k(qQdVb~ z!a8A;kpigcuVLAVeI!+vxbo>MQ5V*`3;lhhuPAJ49;FW^ICu^_>%z%JMCam5miEID z5eDNd7&45T%O3AwGOT#c5YhoBy`2#VJdj=`fxm?n(0kzA@B z?CVK=N}cp*mrA)MI&Ry@iln+n{jZ(uBh9s114cCh_H`*&MZ%kKWE z)8^AUNb->i8RCy&9PS-7OGmMv8sB&CHKz@onl=f|hfaFvJiX3JSY`K}Vq)pOY>Qc( zza^1>Tc1=V<~GIJ4Q4*e=f(bI?>m?u@z+9pFL@y$OkC8#Lw<^c-z;hZpR?MoUUu;X zfDiRb{0KjV%wd80jc-e4;aZ-D>&WDd%hcA>RLD*nAtfUbDupUoEFTe+Z5oX)v{^lK zi-iF5;`1s&0cS~Q3Kq*&W`y4l2n1TqN}7jPddn*dPwzh2{p68vKeXm^cz$|CV1b+{ zQl?t`z#TVx-?~{#oQ24-Mp}cq*+42KkICX)-c;%I=ak35j%i-Z9{Jas2lzrGqj!rf zGo!zmG@qq=_$oJGrOJ42bp(G2hpAzKPdhpkJ<|UpF7q~l(EG228>82qDKdc2*??!& zZTz__Z=_$xS3wN2=HnD;xo>)Z^zEtVL(YjDV*+`QG_9&(FYsEa(SI7az|#Oe-Yh=N zplxxYYdkz#W7!o`=PBaFtwj64YrD0eKm-IU)=RSn76BKSkVHBcRcp@IZtsyzUi0Vv ztp$aN6hlg%EZ{WJG$F5BTb~ys=e;R3I6RvYIwaK$HI+awUzqW6tbEM-d#B|KK~Ub> zdqqMBwL)@Q8faTvy_b3u-nj{rykD^=4Avrv50y2F?$6Emy+jW1Z@ef{GOWu&d6am_8(d8ZwF8@EL**VA zAh3gagYe>#lgXy2<|{kk9^~}wg9Z7?`Dy03d$7PzT22aaAsL)}P&0p_X4+QH6l%uV zt3#(05+6$>rbHNkeKYpXH3CS0$=VD(mqrUR-P7)Aj*0*?P@ojWw4kj_3_j&mSy`(A z_uwJEFHav^JrdL`D)|QyR18-yxTz46t>?Uv(AS;a1IA?jfqm{T7Qp($242e{jDE{T z(TIQ!-h#C2u{0kv7z;!jP`eA4JS`aXj)bXbC*Q2&+SlR(dbs^vMFqC6dwg^O`74 z%Z8URlRKf5-Q*ZL`!clCyb4eIJTU0@p(MH-&d)Y{`fj165!j6{b^1EMz^0dHfJOxkwAuQa0-FrK-&y$cZx)T3~~f&y^U7*{m_ zAPvN?xWy7hcWI7J910@zkmLi)Bq6U;boE~PTA2O)zU3g4rZqX^C#t%@zd;lANORFS z19%|6T2IG8B4Cj)P)`6aElC{6{aM<3AeBe8;C?^ENvGzISjCEW=`$%lRjQ7C`NZf) zh75785Jt1l=Fi2{g-RyZ42?}d7+j5p7_8f0MHL~0tTFUN>pbq!`^x?pZ4>(~emxNh zcltp=$q57vGzfr>xGqP|6bvhwP*(!$49Q8{>}!#^vN5%X%CIma)heq3;7TM5)`fe3 zJ9m?17eZvQJ2FzoE-X|MA)u^H34uL8kqQ1aj@axCOCMCs+Nta}I*{B>3Or4+VxO%n zW>GF2TMsgdfeBK87MwjYnDI{#z(6=>Wk`j-yYv+Q+*MVCOHz3gt};Hy^s4&D= zR(m~#G-3<g#~HDLmkfF|}G!1)?LOM~_yFJgami=)=mtod5;bMf9f1lOe7FU)F+U&mO;zPiSSj z;XqECCoV4Todlby%=2qa=5Ywo7o0boZ^12^-hWQ6+F4fs3n5ly+OYu*jx;KLx@bBc%dRV{t5PdPr(qhVNy=qVNjN z)iSE2kicRVz=LF4CmK1466x^)nLo%ZV*S`m#DAAUf*4<$M#JXgZQ^al)_-{53Hws0 z9vogM0%3#@8}0i#^3bV(K<`(}E$r*sg)epAYXupSPTK7-)q!5oeKxi+G>b6k8b4DC z&VfBLoyEAs187lMb_gMmhw@DFHJkPP8-;}>g$ff!N>K9lQjt*Er}J`f~uNBm7{W1b@e&VIsc1*Ojvf|Iw&tlKE9N0K&3qVH-@F_hGtFQokeS? z2!O;lyL&euu&C2}uw`yki_mt~zv($J7963;w5JoXm#OshIbkCnbX^p;H1pE$57+ub z_Z=olNk`(xkPWr$orBi}ib$U>3-I?=Wah8U3gR95LpweO+DVpDYSWSk5`<|VEh$bc zdCqnXWxfF78&6Ab@6&Y8-=DUzLIXB^lpjCm9{4n?`>$*BH6M(C{Yc|%X(=u=_y#2A zEx^(l+~CI~UPm?fto~#|e3=6#p)!HQb)T#`6F?UZ$@1L!lT%q(w6QGSbm_;AzD>+V zprZZxv)J64p&2(yMCNC;dDUq~?m!69EjFnSHHpvy5(5%(L5?uYOukm`&;ci$Y@v zNQD7Fq53UBi;TiwCF2tDoWRKuT%xsR3SR2s6ze;a0=k>#sUInQCFDZ?2-eS4=G}Y% zFN#kAxY2;XP}f%}hdvkFEB(iHu-M)ISfW5k9D8II$_ha}G%XwP^c4gl3r!IBt?bpH z!%w~L8IcOxr9w1s(5awDaz04^+CIK(5t;p5Rkdc?K4>!)3INE_6{FQ~3xM09!YLXL zZN&h}lk>c0eG+Xx*1v1Gh@-P4Mm5C=* z7LI+&$GkfdLlPuL{LeEcxasxnw(6zO-cM;$<7iJNijMOh>~Hd4#|x8llshYqDlrTn z{Vw;Z!wk6RK7B~&LGK&~Y#&Pw#YKxFk!);iR=hK^7cdo$mGcqwGoa48dU3UG0v00| zX=d=Ms;XKefYEN}2S(KpCzw~E!Pg0E;T!Xxlb5Rt4H9~H*s>d$rND$ z=z6-m3>ws9Lb&w78*@NIA!1SalGZeOL9E_m^LqCbk!esd-ksL6i zfh5|@aHb8tx@lWS-Xk_xum@fcZ9`WV)pec8uaA?K7*4E7{r&Sli@T?x=uQ(q^gD|( z{1%iH8Om=sai|h27GGFYG`H!&H-^g(HASrhz`)YbX+Vy~XBDbCjnA*R=OrsPIeI?7 zX(Vx~a}Kra021ALhqqdflo8RwDmMnTRf|Mu!FUCKc^jh=D-YKWVGnwW?Ga+5>3YSj zLd5_{UbaNL&@rX3NCTgcO%^{JQ5<@iRjXToFG&t-j1p>?>cGH3qVRlguS$g;h#mpS z=r6$Ma8|%wr2yAZqKkXSmLcZ!2V`40I5?aT{5_KOoFr{#5DR*I|91Bm_NVi4@t+h| z_&pc+IDGG0wxMJ&!bH9jE8VZt2~B->@Cwc8tH>#kxM@BN~XMu6$3tMQ*?5Lm`x^+BD0+ij|PFLTeHbyT;p7B`)s?_?` z7y!v&AFI2oE4H#2Xt+Qjdb#trqvan!;F<-|M_yh8+(8Bfbo$YuR%?mZOUB7jWG!nWctQAQ$H5o}m=YXUnG^AO8)8;xG5sfUU<{6%ij0 z2;feM@3rWx_ur5NC}XRItn`}%AC*=zDL`X$P1v8~FBQ=)ANSiT3qv4G5n8$IZu#cX z3<}2oi0O!r*-+KD{Dw&C1TC=bsj|LW9v^=htpLzK`L6F^XkY<)a3eU;O7+0!834ac z7}aem8}UW6iEf;8;D*)s6A$ox&|&srm00Cf3MQ-YIofC{Oo^pq8nY|un!3%#r>GsX?LDFj>Z4%pUu0wCkhz9Z)Kw+Bf zCPx?z$tqsJL%4t$81MCS;P;2LY~R0AJHto61O>@G`1VBu-+OB{hj=SoV`7AUnGW^1 z=OeY#v`NrRcztod*7r8z9&dLYYh83i$=j_pVP$J(LMo6(zRfz zmhL(zF5~p44dfFNKXLG`&uzK7#2*7y=bhG*u5gBclliWwd-v|e#l^XV_a$ky#mbQ!C!LNed>I3CSK}NGsj$rc|5O*&C4oG0Z@7Q0=0s(t0*xoBOA^&(-*xrvu392&gP|)T0#L=drI{_BMudhE7^w!4&v&kKl|- z<7RND)l}^ItBi?l!7(A+R;}2vxSqn&Jv6(GBHO&A7IijCxAB4=@(c@OlH*W~WsGbH zVNVN(TNv>j_=wv1_U?Wyv1>_}4z#eNcPO(Z;~a zelx**mmi{rWr;)}OXNQlp~k=)1DluO$Ds9-)#OfA39raTSux3{U?A+Oj<*vm084G@ z^faY#y%a|PK?^~H!B$07^aW=EOVp$I`@x>_F7jI~cn6~iQ4tZtiG)o{Md@2I2dlgc z$NV947e-lyuU$qslY~29kgScHNtq(P-q8xYe14`eHx`bc7T>SGy5uvbkb?2460%me`Xd)AE zE(S>xcO`~EKIUCR1iQAw?d+PgOX$1c!0TxY_qdC@i$MTHYf(Ds6EFN`88|M`Q34W| z#zRM+;WO~xl)wkpCd3A4oJM@aa%`#{jFW(m4~s|S?8Yn6`~=us$r}X)KHm+H_Y0iM?Udykjc%9VI~uwH>AUuzQflVblF$CvJKc7 zRS8v@H5V-?5G?T{EW6*!ySxp{GIuX{RA{C%hJ_l(&c5iS?Kcg)dxuq?XOicCm_m#w z|9h=p``wcIBjWg9kRJZL5uvQnXp2^?K1FaT%5 zd;uVc-4%C0A3XUUbFZ{9ukgA;Md+W{hD??g9S1QbxJ16XFPqv-6pS($;$hPh2rN7$ zy0&I!fTGfe!{K5DlBTxewG=cBCxj^$+DRBX;kX9gR%!0KA6jf+dGUZK1ZZP*XjD~` zqbp`^RW(oV+#x9s%nZwc)e-Ygb~rJ7-0hySUFcc$x-_U1YJIaQD8grZwD$M`QLMa| z@yvF3OdQcQN`l)8hJzz-E~^Lww?daJygWLX`DObUM9hzlayNZsw78OHW&<*%_Mp7f zPsdr-WBeo)=8vQJTA*NYuTQ%8gDo?D(@fDvj04T!x6|I)8G=el;x#JN;RK*U6Ayj_ z48yMcWx|#^iUdw*#OL;yYiW-N4dg!ss5nic?iha$m%S~PH+Dbn3(}cQ775wKEn4+- zgvSv9TDfN$&|F=I9iE|vroVfox{6Bpw*KSzdZYmpGb{8YhbQm+mebv;+1$f)wWJ~2Wy{w=p1w-~Ph--HD+>Bn+b~?vtamoh^ zj0oZWw0BQTm>{W<$N_LVsGz;E#Wm9}fcO}!c7R3|weFe`-$%0ehhpJOmRid|IE0!S z-6;-u<|t71`cS*av1rBv!%3X{0bUdWi2FCSRAb>xs+ua1TJILXo_a+Li~%(a>}r0K z2bWS{lr-nuCpc=VT-;G)T@S|Gy)I8zRIvyC3=qqKPBa=_Q&Xc=5T93oO6iCe*N^y7 zSxkP1w+C@h=bG*f(KDph^8Zx(5b*^yDZ~`n`E-7A=cY7wg_Wek4cXDBN{=`GKAYs~ zl%`tj{OUpe@zJ>FE!{dznM{T<)IT)7kg^si)#~mLsl}e8xfT#vj%`%k>Vp_B-~CVT z$am>J1qHP2&yNoqgQAzhdCao4tg7w&okpIssJTn$q~a|6M9Yyd}PFE>&_{5eCtFF;WB@!{^2R19U;uA$u^8PPsM1 z6@LHiP|E(Q-g6Fckrw_JBzfY@x3o#l1be!TZhS+|U{1b{-|I`?xF{?P z6+7~18aIWrB4n{2QNdPkO5d7MB;Fcxhj!!@t}D-{yjlXmXBrXm*bVk|W&k*X6cny& zj@A_Wz^XlTM9U1N*`KO7rRA`fX9WM=)aDPm6{Mn#LuZIkh)QZBX5~=ODkbq zH8pfe<6(*xx(>na8$@a;JRPepToHy=d@q-fxgrgLV#4fPw#96r9DC!C2u2V^FkeIa zd&bVBHNfa$jYafbz<(_QAq70tWR;}FECK&Xc0^{w5aSaQSRo`5`S>V&Nks0L>xCu6 z&NsFP|AI4%U8OtM$GY-Ls8-@aB6{P$yw4?RrGNE;nAn1w*TLeq=7YUL$+Rg z3iM|3jcj(7B1|T-ia|N=-mO>$?@RM=`qmeeQ%yN`-@YnHGY5Lb3l1)W(VP zS=QF@{rU@epI=ueAFjSl;FOs&V1fbyyFf(R{_&-8n5Gn!Q0ZVQ*Y>*b#Sr>4V;`7$#=j((^X4be9RraAbRk_TIpR1+= zA))H?G($tbQoXdz55Xd%C8lGbz>`7lnEehdd{=Nh}>zT zhLw!WGTnT*MF?ZPVULp@{X!ML2}}sEDB)H7cKV6RPqjEX8U|HwQGnSE)5O>N9_1R; zJ56Bb0#X^uAIV&4)cMZV<_isYq$QX;gPRgj&b~fV8Ca%XXbuH?-g%=!(kx8Z3H%aWcCa z9u|WdOz6vxV_8hgN4?f}4HLMl;LjA~TFibPcxrMv?07N0ty7c$JRuU#^pbKv0{lQ< zC7=?2Vpd}L%WJ!@0yT>^i&n)_1b>;{q(TTj=m|Oplw9f#NOYaVcV$OOiy(ngU1wN? z-EC55a^`?0F1w};>?*@YvuFM?{j`(m>3nSJB2mOAo2MyMQ#W(#`G4*v0;UglUnS2o z;Q{;CLl38eq5>>i@NG*QT||RUKJZr8N1G1`P5&eqE%y+3dt(`xb|iNfKq+fO2}mRi}G|`RGe6-8*b=nqzN2x zxYBg7-Fk;(1M0)5t|^COMOgLos@vUaDa0wS935JO1)M9f`qjmx9ba!??-Ms=OjR;Z z+zxS5D9A^}vj{-;F2(|`B4N?{-}EF4afghP)aH#VQfS>+F=eVeRKIxC0=cBryf#4Ngf#QJdIZ{mO^t>uSLXo` zpd_>j)jgY!COZ67@8rwczQU&xanmWI&U7y#BcZA%I_O$Z(j0Br>1?iK9*#n~@XTGw zf%4z{_V@M${l>=?kkkn__s0aXDJ8TLvBIASgG?@$Oo)SIPTtDA{>SF348C`s8o2LB z4=NuOGyw!Ee2JO+D)FCT)5&>nuX+B$1D#b5QNZjrWB={7U;LdDxJcNI2SoI_2a zf5o=Uo`*i27|&3G7TLVhVpf&}_NZMLLH8T-JAbmmV;CenehCeno}N0?rAoPj##Pi| z=1-dX^XD_}6Gj8C;sg>4GSXb5o$0!PmLP9x%`F5Lvk>ja52$TM#)p49xRpnQ5}eah zpF3h?v0`YmR=!}LWwp9atoH~l^jwR8>Q4qmdgV*=%RnV`OI^}= zV^RPj7I-NMNt5)Zf`DW8pYHK|gzqAD=5%iI zj&Qv!k&e(fX(zd|w8drCO$UBr8QpJ~b;!r=TKcI&E!wjBrhXM9ihGKuBt45f)6C|aO|Pan)iskuD{VGAp&RTy#8 zXrJc8l9FdA+HkY0pIJ&}hNnjd2Sz31V>X9QWuCx~EGQE=2V#YJDe5=gC84IFa+qH~ z$ZSHHLYPika@gYrmJiK$0SGKb+6WOwR-Goj2(8LzDwqkOQr^V%`Z$Nm`Xb)N+f96u(8LFV#eJMd~i zbdK(8J7cD$f~Mqd{KE=A;p3s})E?Ny+ zD>qx)UMcH=>bLpR;}4Rk7R5KN?=v%RF<+Q^`$}~jvQwFTR@9^pGo$|T0;V8G7p@$e z%Q5uU2UHqP{Xu6`L{59T>M>(X1XbzL+Ha!>(`^zJ+L{=vcT>~&2-2d%sB9naHS z_dOx9d29)NOTJt6B#_I^){D9il6yV<{S+%{0*Nf2R#<1Zq8ctsy6Gi0#I_}`&iM-0 zr_r&^-%eSC;mam zh!AVYx6*rIOiYU+$Nl7QuG(eTuhg$@oend+k0r`Y=AH1tFjBPhziuuSS8E-MJo8^Y zteq~h{BONqskwVs$!;cUlE6aT6W{)M_f627yBXU_%&PW3WO^PLdoSDMkyxr)R5?u; z*Lq!ghD+_>3m(a|g%9x?XMC0%V^`_;32aGp63X)c-ApF-L0nzjI_(kDx95C=Zb|)` z0wdy?Ea#&fACX_Tdb)Kh!?sM$Mv@@1wdAQODGg442{twpuP)}U{6l`KpLeQ5+ET&1 z>Aj<0jvlv~nwlWy@<9FS;7;J~9k2{-`u6Pv47bz8obB9eDk?|pYtHufNdlLx1NLU> z4~DMJx0|jm9mj3jab;IeFvcG&283`ebI)RVf^?wr1^)#Fe_<=C+?HN(hRX;}vQ=nc z$-rP3QqgdxLM;w@LM~t`BV;OO7r_Xr<`fjTrs#rKm_OShBIQ5P+uIlV-7Yo+J#yaJ z={)!bHsZhs`oD}kv({FRjY%Ni@x5$&L!LhPer?SaxYUc>H&1p!V3T^cz&%EmWvSo# zWTmBV?QbDN#f-t&bOhJ@goEmV&_H%}kQw8T!nn?c{?efIJ&)397WuzvX3wWLZCmC_ zbw3b*93)$SM3OS1^KCGOfoLom1*zx?RASeb!NcpR1BVxw4%=;=;UcM}Q!AZi7My>NNztp{95hg(Opn8)7fUo%>N)gGgHa{s{ zG87sR!OSLOvK_#>J)Y4?`dB<0SFKf$E)#h9Ui7zVwAGO)dbD;Eq#9!MD)eS%W>`WN zr#pYdIDtX@)4J)+Lmwb>HQ*7@n!u||ZC~0DF@2$?iRx9q(AiB2ysP_SYW_j1PeNIV z99+eS>Sl1H0vE-F?SzQ#3(+zYM>{*Q)Ks}TF3STh*EQ>**Ow=ClGoyKvj=AC^hcX% z42cwctZmx|n!jmG7!=PWou$;3;8RETWw`sKI~@n3O;u)$Eg3AZZWMLB=BTQ6(mq_4 zG32HebeN+CS@RV{M5RP#gTBw38}f4&i2z zdqW8B>R(`_e#R`bw}wXJVz6_QlVB>nx0-{wI*|!bn|N!yO*8b&`c)qAV-kHC$64Qa zyCJ53Eoi%&Nya!lv625FcM&+1zt_Q2LafI_0uy8rz>zJ@Ij?`%+F zTUhw$_O&2XBA8(n9iEXg$wHl%dg~yJk!b*{eGhEv)l}0RYDxjJ?qerNy8&9(E2+p@ zo`t_OvJpnoI*5?MU|8t_H?jyhh>r}W2~AMBjwK@9tTa86CA}f87*nNOz(I5pfNv)W zL{BxzM*s~^oxwIUQRsJ_lrZ=$&_RGf+6>5OsVHtR)7gt}cmp#_tiPiW0JAeM23W4p zV55R~o<2qv^J2{sweY_{t3sL;q6LUTULHpo{B|}eKlJ8mZBgqsDVyH5k>>ojS>JVg zfA`r&_EZ#|UF_~(Q4SvhyX!KP!N@3{@BAp{ZxQI?m} zad$^%O#X;t`)3XT+M4)2D^)O)Voq&SIUIF2I{lP~Vtyt(BW-JZ^fXfw|VV!|ol zoM#jNvSIcpFu9{nP&?7;Ll<{NNX4e{_8zO5@dN)O=_2M&l%DPE(tp~PqB~FC*wT$B zx&G$AsUQchUHH}q-W+RZ?x+^^ODtJ~Lvr4$l+ntsR%U(Q^WHtbmHbeIf+gXzEu_Z(*euP$8r z$oZPS6c*5ZlPi)m|*Vc8%-?d~%G#$h3y zhl{Cmj5W-nK}OUg>wrSTjDPNDqv;Hd_<2Cmo^u?-bw95%*LRQ38ukkGzu>_ZV=6p1 zCb4~eWrO`Qo8GF}V&T*mKsw<6=gn2ILCJr2#2Fwb=j0X<3&0Q?Y+41)TWpXLmZv}A zt`H_!Dc2{l==nto+L2fa!aWKQa>MS%oKtW%)UOWBs2@Y~f*JJWGR1`9|#&xaJdyK3KBlvLGL0f7m>KAiV_0GjeX zL9vcM3V%hYPW3b*12(!Ty!m9Vymv40KPFn~n~&)MPUq9H$<;*H{)#(9%uB=f>VhB8 z_#<4mym^^85kkItRj16IP!eGZg?2}@E+xJ7Nx!4Fd&gGDCzhMtgw zQsj95Jc)Zefg$9t_Wd<91N{9t1fiCc)N&xUtU3BDRvJ)BUe?wy5?NJTH9a%cYwR`Q z+xRcSlEFEnH_u6Ht)7`d9WY=*Vfs%zqk*ULAo-ECCDiqsDHL*!3%n@1_NOZIqIhO+ zi7&8z_;s3u=hn-)GuZB5NmLuqk@=X~dBE8dgx7~d@V`%7prEcls&Nc8-AfSxBKB0}Knm>NNO zSC_R!dKch5&pJTc-I_-?jVBKGmX{R<^_v3-n7D~V2MV|AsJmR!R6!tI^+%SSOMGB1 zt_$Qpe7KKaL_Z4@k?;i$&BGie8PNE;WM~yiAN-s<@@EWrMR$io-^um$-J8&?fWT%$ zX#hHRIsIrgW>8XVHi?iO=k-|qeGS19W2F>C4NNos-BXYtgH7PT<$nk`#JS`eg~W26 z=JWC}w~#+TP5V^F{FPBIfbY_U-S10br*^A{Jm};h=Zeh6DIg+XfaCxs2O#*w=b{s2 zo&3eWG@E3VC;tb<3$B0#rM^nvuby}*Fz|!Ld111m7~n0lv*V!x|AMqX!PkKxtPYL{9PPa znB`zSB2Sqa!ls=D;=a~)Bs|GiD+s*W#%7-XSgp#mx*7<~$&e{y`{AJvSkrNx*W2Q0 zQM9=z$&I;htnLmnjaFyXDu?Wilo0k&oA{uCt%UA~P#5%lDX-6Oz{VpEmoR zCvOZI-K~&(|De2_@pY&33r(^_VT);+z7e~7QzF!48r;EF_P*;OOCpL~$v`}G@^dMgGp^UZkyL??%(8-7D%?IaKR{X6$!)jbz5@Bf7!DaFuzB6SS; zSY3qc^DyaU+uTa%Zft+f>DMa`EpSpzb=AYrjx@8*N_ zG|5>TqyL_C|D($TV70|_pJvv7A=dO30_ev~WK3i$bQW5iSxZYVQU|!=ZCd6slEv#< z0xAroScurVjeJi2ULiCYaS^V42{&qUn10$Bk5m%?sZwg84FszCq!KC_ZLDw| z)8lLad1^xw@)e*tbzhi_9a5psKyqT&JOw%hC$fIH05B)FqaH=G{x3^=&`b;~wGsz% zFGL1Fh%v4Kq$KIkaFFTgcGYslYemZ)z1#MZ-BG!L+p*&&;)k=}_C}SV{l0gVX($mE~n9(}-+R zvsq$Nl5ewdEK8UfK)&$s@W>4cC0U*HF1eIV^fkag#83Bn46(?ViIW(y$sAeKHW>pa z_Tt5>kdTzHP#A)Lsz4OSTzx0X{+){jgyh|F7u0@*jD?bL%oLs@8w%hpy_G3>Wz_wYxUY04q6@)WrJJWd6;8DP*LYzsBT z;bcCiNlHlhtHa!Y*iD3X8=$aWH#X~W4k&)INT~s1la%jZmDQ{(QCqP)KI?gP(6}A2 z(DSL=Va5wU_znP|3Tif8I_H19;+IM3I&5~#d987SK@JK+QQ~Rke!8dKfXEk!gt^CC zo&R&70d0=GI#?o$g0N0W0MP#yuL~i<=uH4fSxfoOAMowqw?O{(Z;pfyinLqNaxga? zB;RcwBu!+n$883A=%fdFnl+|Mi*sPLp{Di-)UsjOUzO)4Y`P8WZW7&BQ3e0n-EKhb z>RYma7bOY<;|VY3F?g~k?mlC$@spAE6O(c_zhzN1H#eyIf_mv^)|2j-`x5T!qyIL5 z%A2D?C9@8W4i5h&!wD*AgA$PRGfo!f z6Nq-@S3MuqPT9tV^l0A8lDk6wfS7KhANwtKEZ0T5DOyDZyZNl}{NbMF3H;k3mM(K? zeCpT{_sBOc0rQM%%llqDup z`}m_-lmqtI0zrt=Inm6)UFhVNb1ZwPBtH#*;%nb9rdom!xiCOvk;o*d8 z)u0|-SToD6sL1b)LqJ6bV-#lj;X?w8ioz6-+V1OfR@&7S^&W#Zch1xJ3|dOJ#;81f zq39IUI8<|DV$Ns1;L62MG*2L-2?Y81+E^@P7yfeISo2xa?X6?!7v;}`z`~jf3aVze zv_NhLF>Pd*KC(tk{Tk6qLEhBi*)UilWbv2atdtAxt;JD3VSwoCCc8eRqVB%C02d(6 z(^seJ-lvTp5pqY4RTn>&HQ*co;V%S#N*hTT;TDnR59BYeHZD9rvP`%?jLb}xu4=M% z%=gXf9x|mPZfm20kea_{q9T%~GNg5;5#+)w_-5t%<2{m!-s_>BjFz&0dgj9Mj(YWW zt|>H#KcpM7(2QHl$jCS{YT@MaUvA$1Fr6M}gq(e}cp0FM50Ta!)=W=GPfkcb&hTy7 zPu~`cc?VNBGwmyU&^czK-RNM3@8Rd<9jRtJ}sqr#T98B8xg=ha_D5u4Gk~%PEYq{kJ;3FXUayPqt#{YGH z6p4Vh(a?TV+Vi{ulVj4LfRmP)SXMn(2FU=8l#JzborIZyM*Q%HNVmVOHrrPF65UNF z^HJrWYjvoXKm{fv)V3F|ehk9%M){+`R7F40s=oTInpUyC%JpU7l}MjUD)H70(W_s` z;oBaiws}|_Pf^PAqsCI6KJvfrvoCh8ZZBL{NoNevOROs13%kL7(oZV`~c zl7~-o7xh*KvnT)+qov@J8Uy3Rg~$gJn(KZ z2zR7FjP~=Yk=bSm+RgG}74C82N3H}+iwzGE+)P0NH$y&`u2AIsX?TeFrki>sNonz& z|NFr~eJSs^h5rOa62TJvYe~t#ol-M6u?5{b`N1^t{a&uJpVsP{@oQ^qrKP-@)K9X0 zZfq2zQmCu*6`j4J1;BSI8g@Bd>iM%xv;F&Z1_{O6@lvZh_!V9bcas=Z;%jbFP;Jqz zaj)uo`nS)AEP7OvZoVg~Zb-*{56)XVQvA;d+bKUQ7mTy&_*%)G^!(uky+(^?nRaut z!>;G*;#cC*15kMRJ{)B3A5 zFwoamf+n93ltdpe<^o7$>j9eYRN~)!?gHpGknGd}J8v0swF-v(w_MZH)0vr>LBvq) zDOq?2(8220Ii#~Fm*TXvF6`@Oi6KIk;gH$>s~Qf!NwE$?QMZ_G{CMfbmpmG;3=1Im zvPco&{ueGnMvA5D^qH}mJZ(uZGuK#17PELa}Va>(+G5vOpJu>!tm?n|zu2*a6 z3SBpQLg{bk?iUn<@Gv8@Fgu@56djWyIz`&Uuk&#R?>cFxOF2~<1{+1Ciu0Dl)D$DQ zsCidh?ue;Tg?!9g@-ki)d$*#{Ex^vx=B_$aMcN)ol|Pa;8vNLxlspdw4St|poXuVC z_u%G7D^q}pFTWrYkO(5vKgj=LW22;+zpFUx%ucT+rdDgO3Y)Jr zI+UE)e?DF6P0x{FQ!$y}rdOp2e~#Xv%BmKJRb4U@FD^s@?Pkf$t5a5;0FQrxh8lj5Dv@A)i4Rsl+vEieeH8 zv#(Z~_pT^iuT5BO&z)Ft-%*}G|Hd6rma?3WcwmJDL~@3S-Y2a;aAA0J{Pv{b>1=D$ z(@Fwq_)9iWC+vjF z_#JKN%gmjE1LOcG%^6O6l#Vv0o)8`<8TOOIuww6JRJ;PHg85YN4L)dWHIw%KsrB(`6_M6hZ+ zyIu_FQQ@$=weLyWvpzoMz{FO!iN(mTk}Fd^)#|VPRG7GbDxTrUkyJIcpKt|$^- zU$Na_Vhs6@AE9j`deZc}C%<+4vbBQCfVZ#4koQZ0a6p6M>1FTCY=fc1#hTb3vCdj| zeKiOp=fkgsUr?s-Kh{m>gd)9jXC!vN1QIhwh2G^MThEXVcn|LyB8M^4n~4CZp)PYF z#4X~cj@F9jnX6vH)wLX!*iYBm&o&@oM4ZpUVFryJCAfwFcRI-Vs*=n)4wu8K9J62t znz)t0bRd6j!Id_Gr5S7A-p0m;dca;Bvrzz3$R^(}FH#~cI%W%t2@^^mWBgo13(0s#*jm_p9wAB;I-`L+R%?9aqw$tWttHdP% z4^|FPRV?l^`}@~%sC2sXB+|G^WvV%TsaX!woUB^eZ}?B>dW)e-slzaX<+;AD0(DM< z@z=3ecf*)F7fydh?o*lRf3b3eOTw#h9e!HT|ZteOn*!|tdMl>!YlywlKl z?C$Zqm!A%iW){!Np%9@2^`MJeS)jWUm;1ct@$ox#mhE~HnbSpbAa+KO^;M49AhALX z5iB8Y9v;j4r(niZ!41ZEDqXL=GxEin%;3R{uT#c{ht1%MJ523hU%c7CdwsJ2B;I1S z2BNty<=vBWX(HQoO^3_McOOqUH-GUCl`(wtH_+&1Oi2SGq0gnVa zW#UH5RBr!M=&Np)?n|eA_xpCZL1cIb$+c7SVePRIpnln(uInp$-hj+mw(YwUrSMBM z&T7gZf8_4&-maCYGI0%P_hj%>LqMc=`P$DfZDd|A5ly2K%=m8s4{6&!uNsn$639qP ztF~{{Ei!8H)7Olbf6!jJ0q`Nerl(DO*3cU42Vj)s-4S*pRn&3ZT`H;1neMpka;$Z) z%%&hK$iYZz&Psfu#pQRT)v2)UmUg_3bl@AS&>C9?kPe?XkddA$0eUHJdUc!+Yx2e) z?`sxHiML!`trZoGjax6c6z!&Lgs`eG?WQF>Y{jZi z%iGu-ZVaQw>Re}H0e>9((Ud7|Wva3td)vc(kG}k?%6I24>?&e(NlP#UZ+9pOv9x9p z(p%a-CB=Ta#vpN}qrsRe1$Mu0X{|mnxRxoC> zj{Dp-^pJCP)13}H$wY(QJC`OCSQ1~2nx+v8N^qRUZ(`!6uE6LjDF_h69I zhAx5968@0t9Uy!v!9pH?5?-$c6Pe2x*xuAoz!6xFj5dP4m;BB@;=GgC23O?&&WWup z@M1k@-S1pCz~k}Z;o%b{FDJ&v64dhXXJ>hNd7KHo;BI+$i;YFOlG_%9UF~``ZT(uG zFIfuez@V>sc{9!0YLN=ctW<>d_S2-hbltCQr^l!2@uLL{iaADARUI+f11oGqOxcB} zUQK8XIBEEF_OMza>)85pu^A9Tw6^~1Rf=%56k^7H8VvqE>j(U8GB=ddyS;a6rX2as zT#O2JtBV~I!_DO$lHZWp!LL!Y1P^-xMHx6;oLzLyFKMvf|E~_oc?+7Q@wKZ`C*y@( z<12j|TU?@w6(M_-vAbEKTS_ZcOd!U`!-q&WoJim`%Vr;hgU{E?y+if zx4D2ynXM1ui)M+Mhc;9#Jl&kF&a~nPE~abGN-Y$~E?nq+#HlYPTF56lIM?$MFsZsp z&iTx}mE0LCsAu|Q!I}^6Ct$NKjbUy3ve+-WgsOx_t>ed!zgE`u7I0?2)dn|B6f?xbQh$N@{Fu1P@5k56ghlJ`A$w)UnRP~-k$EBW;*1bicKW~l{`Gi#zkPf3=v(LWdB0z;=e#DY@NBss z3?7e*sfvnFm+8I-E`E0Z`}cT-G+bnGE?Pf3TmC6t$oAlJEKJ!a5|L-s{<*f*(|uyS zULaa=c=0eQU_xA-pYB|loDelnWCnN+*oRy!CM6Rf-^lE}VobMO&F{i1V7EytLwB?y zM%QFfMOJU>({~ko*k2(s-8T&%bs(N8`pK@2-ySvJ=^Q(Y@sW)~_ zLUI&zJS+(oXya0&D{)=m*p2Vz?a7Fc8-F-9fF&Vs-1GPV zU>>)!%E~0lZP0Jmm^34QL`9rWU{;o0cHvCq=GjM`Bne)Xbig0kXE^rfb`)9{^gR|0$ zbG==TmF9a}grSsx7_J=pJHl1N^)L7}X=-A0&$wKI#-sh$XIcztWJoMe&jnm-wJ^h~ zoQ~VMW*vuv-dl5Rq2R#=I5uk^Z32L-RPM{S~jZ)_1g018wEjn0@;dONr6AVA0i=42?5c# z%G#WaTtz8aBwsG4-o*9jI1Pg)J=Up@+xt3K*<3YsM9!ggF$u?@Vi)C5|IvGxB*NQ; zt-4NASQ=D)%yP=~NwlI$z8=l+B4s()eWPe?jhLrLi}RWK`5~W=HCkfOjc-&;I!G>M zbzgxHQ0Y>C)q&gbQVo}b4|@!BK-4NX#F~h3po0n0z!QmZ1+E|F;b z4w|WDWjGwJ#>@jSEcFW!cB~ju-4rY;%f7};_)QvLpD%kz!Ri(8U>KCvJM_|Pv00<& zYSw2dSTN)K3uZUlXuT3u=j%^f787+EzssnGA1sjUl<1 z-iWLkFZWeNMf#>Z=7j;JQz zD}y2f!jXKy4J zK9{IjEWcDd!6$88Y^Qf(&BzMrZESF?4GlXDfk!M2fTZUG|EyU!19OrrK>w7(vW`?icM zG{LJCaHRJqlFTEYDC@EGh5Q*~+`RH=`6QydK7f(q@{y`o4_O?)TUCz4Ow6`DPQ6kl zcQv6hGh1Gby0IdkXrwqihm~SW%GWAnp^pJOMdIaXJ1at=(znM~m}xEylLh`mLDx4o zg+Qzmihb&X-8l$rwB5{}`u!t)iytdUo4e^+#bay!*s2ilFjxr(kq4y>QHoJVrh-ds zn-+G!?1_FuRAydlE z+jSd%#nhfD7&G3}`5GXq^HuT-snWV-97v~AZ`@N6y@+b@QXDC3BPD*`Ehs1efD>c^ zi4lkg=R#p{DDf&8e6>Y5lh6FM5K(b)_{cGcmnVWF=HKbxTG%`&xdKe-XP}Gz^-C14 zfnL_&8=apQiC=OCOADY6oy0RYXFhhE?Be58KKthUJ>GW~zm5~7iHZOr6S=u58jfqF zBl!b8wTB-u?x3}5Wb_})e>9Kjr zZfFcrDN!--JH29rs_I%K=x2Gz)Lx zdMEvShg&Zitu>4l7SquIjYHN4^QY1W>!yYfx*kWVk#;woq|du&h9DPnmJ1R$Q#5YE z9v2g*rl!uYP0&tfCdqc;g;pV4|MzW7Fr|ZnoLt%2B6bRFw!( z=Y1U*7#PZx2V~l8W8*z*!fk$jGxXmhLWh!=SPFjGiU1&SFke5QMq&s*?c=srvahUU zFFEUcgu-R${hAZHmo%J7n9|a*bLaMdkZ-g1(nX0!E}&2x;DjoE^=f~3_-*>KN+r7c z+r*!IzV7($9kU9Fw_Lh>({gf+wD1h*H|(FA@w|3FClFWJB4*uZZro(Ca46bP)lY1$ zT1Hlp%;|7Dt?V8e*5QUMGuXO{PSLPZ$*H+^p|@On3KHyIBlW4SXt3De1blM_YQyqG z(R~%B6G+YYOO$$-r=PsolHugx#A`ul+u1w!j~-y|8$-nNO#Q4%oH@O ziiGprRl2E}3d7$&-AUdDFB1ZfZf|ebD&(b(AR)okU3ekKD7+L58~v=uU>X&OM-jhL z${s~lPqq+dmhy{F+s6^<&(CSJmd?h$*B+}iH52>#FJQPuq2lAHGMhUU8x@ixsoPgO z+I;oHT#4$K8DXPf|MfUl<7qdl0BKWbWU$?4I#=`1-?~dQ;5*USvf)C(2L(tgun~R` zum?*;Ao$WMOPHO4(KoNG49vjSK%kKEbUNNQr}*vjBhX$m{p;7S=*u^NvcNV8g$ltC z=H|ALa{~j3cC4h~x7(|$O+Jh8d)aM({RK;DPtpz0v-#upedLViN5$V?9}MwPkDsRJ&IJt)an zzfV*h?RL1BnVF9tKYAO!eqFR|6rh{BROA|pxk=4qJ*-;bZWT0@*z#|~?<;YM^)}tP z<=tT3kzsP)+8T~}ht)wpQ7BEMeb01aoo`qWRp4$hSL^osU*X1?rkifKma+%6;l_S@ zBZSj|K+e&4{|e@L`JWx!MzZq&4glPzkwlp?!H)n81aHpWN4=ujj~+b& z@b;re_>Jlg%rGgynj|yS=$W`frS$8iU-N*k6@OX^A`@-hX+Jkx3&Xm>-r$Q|4Nzao zf^0>#K8x#Yr<<0=e-3^gZa4ZpZcgKYRnQ5uZrkU*H^4@bn*4QqgLlIk8bkmduI!Kvxh6j~mRE#ggx`b+`#yg2;}L z-vW@PD#7@rmBH){i}q2E5`_8u;ZV?-34eP2R`wupE_B(~ob{?dd-iO^#R$Fp^5sh) z2<;)a>Irm_L8iv$_O`dTcXGG=!-o%TPj}xWb1GWESkn4_7(P}6*u~j7;wX*;0e}{< ztzc6TvTXdS2MdmR2@|=bJLH(z=t`K;2*y;JJguu!cc`f{a5aN|jvqCI*&xh6iN>$} zKC;@gP=xbyQ%m0xS&1F5}5v=)$ze)%ROhB1EHonvzJ& ziPm_7TX#kXLDf}{W8kjV!?GwZa})lX!-LDCYp*?Lz!3lB$&1t(S8{;G^qCzq(HF+D zv9(one%P&n2B6vGN`8sHc-#8T z4t9qq5@gpN6vWN|d74B0C{J`6HdGybn-%)X*xU`bGgQ!h&=B`2Tj1b&AM{BnHv5<~a_PJX+U43c93coE-iUs+j+tvZ`p z--y_PWt1)HjC=hmdMHf)&;n}0g}dVSH?Gi&#RB&9eyQsr8l8uKW6Q~Y^59-*k0jXr zX(9Cuvy#$5*g}K^j||uv>&1Jz$a;n1vhtz*0iMxzvby=4v!Zt)oxWE(DGyu4eo#M8 z!EQH{A}xhlVWr7qD{P_!_r>d+BUB7^NXH z4>~=dtrPexX|mACYBNup6WDK`<3^?77SY_28uKl}PkxFfE<6^0ZdW<~FQi6Q>d(%X z0A;2$R{8XPKAu0HQp2xQLSQ3~My20I%bVGWDj4W&RUmLxp3_Y*>&XZAlY=A`m zWT~>T41Sj)*U0}SLiYKiq4wr1Pt5)4q+Ix=qnf;1M?GYdXZ+u$mj>dye@jPDNYW3@ zcjk%&ncbHQ0?X5rj9YrFu)%`&CTfv+vj5RQ51P4{6rFzNNuCmH$8kV2z51+XK zHUeaDU3z2<6N)?r@{Sp>FvM_%#D-)6>%7NQ?J}sNppAlqa>R{+0qsJA6uv%DI&-vZ zvWPXI1&fW2j%JNM1Wd?X>d$}*1OI6gym)~SAcO}5>pyVMI5|60ylZPyOws6E%EC!^ z4BdbTl>Y1KePVd30I%>21?`r6clybF&CO5${tfNzv5D;txm>_XQz+%BroU911C7+U z+b}6vPF({I0>Dw#RZv6daD9GOOb#%?vh@lgD@?HB0m{`v+;CrTb_w}Hj3qJ_1pF8; zH&H``;y>ZFRU+*kjO|kMB*u}NyO(5mB1sP+U5$YBLYTjVE@9=;!<<3Uca%?)YHDf~ zt+EzJdWq%F13w|0hBHq*(clg}!Mc;y^M=O_Xexwn<{qmW_j%@of~h}m%koMoSt42 z@3;DsNsjz4-HOAaUBY#CFTLjXvXUE?OvBCE8PH>V(}L6L+dXR<*hdZ9sfgP&59}y$ z+|%(X*r!+n{vT}gEZRYb;krB_7V0GAlbMn>jxDUal#gx0M#lWtzo44vh3e^uj`VCj zu-lkT$De}$|IL}E5P(>3)A-^-=CulIk>r)L9@Y9O_wev=1y0bTs03J%vC+{8XjVps zi>s?9-xZ*D+SuL(*(nDAlq>lT1Wogmt`@v0Kr}l5Do<7&XGcfji0v>lOydbFM*|YW zb6zN#nZW-R>yjsI=KY%tn|g+R~zNV1Qk-a8d@PLp?K%)gh2e#~)Oh{9JA7 zmK1E5R_MKhwSmW$n-qgxu$EFsqnG%s%015hece;%202`<(R`C2fD__V!|3vEXHf^NdMKWDWqNNW zgxiE$!1L#rl_81;(DO5mU_PhA=^2Bc;)GZcX6u|8to77*8IRJejmY4zU{WnpcQ7?t51gs6FJr z4U72HJ%t-Q(ZooAkLI)PCuV9N&z^B5bzcm4CeFSkK6rxSXrZ9)-6?XVi2yv}!9f#I28|dT9v&VTSjBQC zsSUrqZwq6=E&4QDVZa1oQVzq9n&l8>tO+sNYQ`14zmVg*Yp0_SFr z7P8FR&$Vg*^jPk~N%R)vDWJBk|`8Ujj#bO_SMhsl9k->)b425o)M#4lS|SOjDKas4BP`v(LplacsZ zaG?O`^pU19d+#jJJx6el-^yU*RY<;Mo{_e8YvlP|>CeSC-+Qs-+uvC~IqB1Q-yP84 z7SLGkzQ4NqbaS%>_9&@0^ikoWiamq}!xEN||K1g;pQvSEgf?V#fD~C_c+ZDo9L(J+ z(fbN5sJ|gMIorI-^0qbk?hOBc&9OhN`R^GmQZZ(7L3UYX*CJzytE?@op>((y z_;s8>Fh)qzH<2UJnlNE*LKg$-4R#c6b8g@4>L^qae@wko60|Shd!FY3m-%@!Xb;Qz z1!RRlr*9(B$gQC~0&2(Vm}O27QY&!RA=e8mxfwUW(x9mtd`8Bz?axBxa;r?rB`@0w zzbUn{Zm>|LE-lOIbKKjSbqBPhIppj7{C#=(>|xSJuUR<>31ZzQcuoRl$*mfE;?mLt zaO@_mvb?=o>ok}(f4VsjILUkg&_ubZMDmgf>~K1*eBfetVYc3Gq~8WGFU!bZR)VnS zcA1drYrZYM1e>6EZgoWsL+=nllRy&QlkQZAjh)At zEv;}kFFN&$)6rLj>>IbB^x0a=%FaLxYDl9ezP8m47ag!MseBIh55S!setx@8-yX9= zzM8FrjXQ>c3ysKh``l|^b9#EJ!aFiCp<4bkIwl5T4o0W$Yqmg>h^;zPE{E>@JiA-1 zZ9jU?SCy@khwnc=#%)bEB=FncsAh5qs;RlqV)hf2jT)4r^p=pl{MlFZet4rn^YmPM zsK?LEp&{$;C0XTI2|CNW*1G(J5;w0W3xAh)`Fi_OG~|b0c@o&wr4#*>!tcDfp%#l@ z7QRA>A)WQ8NXcEFjB8JE63VzS8$PR!wPEajk65F-xf9k!{*bS-hUI$K7e?JFL*G=D zRFeS3iCXcF*a|1B^KL>)Oz?5`kwle5Yh`K@8CNF zeCNP*?W3_QuFA-Cfj5PESOT`8QgD4Nr_4y$-b2$MEO5^gQZnI>6LpQqshwHck%7Aa z(%7gq*6j)i1fY)i3Um~O%Oy$*5MUXwYVzUXO#ZiYts{6j-Be%(Wq)uO)^1X+nHniJ zSBrQAa{Jyf!DERsD59hJWI!%rs$~mXZglt1pg}qGacB_aCz9WKRmeo|zvZ0y%UbP{ z>E7itlwZGJCLlxRtIxsA>E{=C<*5Cse7()?uFwsdFyj{~pf7H%i=Hfev3(u2^fz4` z{zosP!=PwQSZ?U=qr%?2E;-0T(?&^1<#gGn{F&zfTBVJmydZHw`CFayV;BqB4r$Bs z8xSBsX!!T^@3Gy;PI7WGm#p6p!2cH@2SM0;hc7z`Ocuyg3MBC@D885W#Rq-YX-%g86`zy3A-Ie-xQtReGV7+*;y-=^L< zySV#%Y{lgdKPcctvrH~LKoum|!?G2t1v24wuMx74E>XI(0i&ggg9f2hcn2u$FqHzA zG_~|@YoN!Mi2>px z3p5}!@U<|!$z5g)NfuS0W34z`&_)H$*GrI{;P1XUZVg)0d0kiyzFP1~s_=@5iPiWL z)y&bQR=Gv4V2Nu7X3?nd{^eZ&EC1P&TpOwdqD~BnnI_7jQf*_E?QQ&ieNb^TL(|H% z7^LWW#k`DKYs%L>HOj4bw$)F62qulRnE zwvGz*5_Gg%ITHTJpfK8d1h=%c-xtvr;O|Vb zao?V@KZpe?aK3K)8cu?gnTex$3h}jt&;}N@F|APjB=OZk>*EaTp$3AE3YLUp!=an7J2gr5py&z ztBwbo(>;o^QVFXas)Qui0vAdz&Ds1C3l58R@=HpMR)dx|TgQHn6OvObHdn4o!KHv6so#*=^~L)XTc z;+n7BezVFZUl=7Du!v9g0j1|2xa606wOM_vV~85@e`8J z`p=)=TY^M-eZdU!`-S8V7&;ogW{=_?hb=V_Y##Ba0ncC9Qrv9-2W~f$IB}x7ZGafon;oyD>mNaVPA(MeZMkncA{E zJxjwcZS(`~Y<>qdGCh*7l;|O3a*TyVV{E<(HA{Df=hfksB7ti%+`tgi_CtmZPg5qB ztyL++6n#DVT6YuC4CSE4%TeX7Ver|P&Nw$oOzrXuCAx>%rbKo3~~oz7_gw0Y4-rmyyM@%_JRQtlTa?<^|g^I4O7tF4+-he=X8 zX?(6>Vc#VOwF-CJ_uGK8J#l>?6a&&d)uLP=+}VR?-n~@5q{KwlXt8_uE&@ahe0!{` zTL$`T7*+N4nROCxsQ4R zv~yi@Ny;*G8wBa*!tzEpW%3QIZCgnCk)H+awa8`H*rx}-7SBNPGf)f&u}5>SDw_QZe0oU=@v9YHo2fowHP8*Yz04@cm#6H+%feyIAoggu+U|2pe zSz#_AEiDa5c(Cy@T)s^4;PK;Oa4KDXX(6K}Ek<|JFNn<-m3){8CDKlxVAB|QIz=lG z%>dUx+B})+8W`9)J)HrJYGB}&{_A>Iw54UxiXTZ{u5lxTo@bKW>QX-=ss*OZo3$1H zY0%x(nkMID{YU?l;slQHroO$h-PO zz*8GiJ>I7G417Rcq3S8tOa+_h=OjvAMiivjJxF~)WPt~+Pj84GZmck|b+|fUp8KlE!URXZ zw5-|7nl*25<%v-#SF`Yp&JTZI(6MRQuh7@nJ0!i`KX&u?_x~P79!v^V0ue=JWoNaV z(cL@@5Ky-ejvUjG*1z)o{t50ryL@0`&jzs60qs__9a!ywLX8X_AV4J@?{ELxNe)kh z9<|LMw*hG@NZ}9i_Xp8mCjeHJHD;Y{aKC1rV}-`N-BA$!uxX(x3~|-Ub%(tyP&>D8 zwFOrSZ*K?)6%G<++k7%rQZ^(;SG;j(&)P=B#^m&LW0yTg!*n8_DkL(x zN=P{}hx`1*I#X{HwXec3OE)#1CPkx|xQey;@4XDjo27zWS8Hy2R_?h$tt|5$PDw*f zc$$K*wa<00cA%7E-cq5qqf_8Qzi;9O4-`CBghgcfp83ZrMDT%qr3pA;1;O-Xa3@70 zqbO5@Z?f9dE4`OnwBWeT}dq(kc36R_+ST?CL-JiMebw+0CjArNbX- zkSFHA<7UzET+ukWctoPm9ej=NgJ^PaVVrbQDM1n<(yv~MsSro0-_(*YxW0x4+XVH4yn4T?~z)6%@XzaR9) z#RWklT(*7<->zWyK^(?($2DeD%7VcE~w96jtboar6s07XD!5cvI6GuVV$1Cj~7t)8OQ_n z;vQeX*`#RTfBuZqc%O?v5~Lsxm~K|N)54qdn!0K!A&lJ_eBFP`FF(l?#`&;Qu@fQ< zOp9O6{^#1QFkDxm9qXLMOlYvLX;}O<-QHfC|BLIOlS;%&rrI@Y1G^KP16@MS0b446 znjNdtEH(hpJ`sAtZ-8FhW!Vu7^>(ai#K<>mFjx;S$ZUaNZ)}xmxv@F=f6rg@;Y#*e zJP?WjF;#~EiYU`hS2+FAh;t;sdfG(zfFVRAB*=~R6<5@7jFYf?rpFA|#sF^v<0@ONBy`XOwEt zRuE|4)a2w%FSwX)%BfLp0$!y%;o8e1?dYlIr_Q`7C9jslcM@!K6hrq$)VT_4d44l= z{HgTzWmlhY`?u%)?;d9|mtu&&o0}F>ciQd809FfD@XB&BHGLxx9|c!VeGjPIkg%{5 zpmEH1&8q+58WNI)FxO{VI|aHPs`F2fW;ravHowb^mkifeDPKW<7SGuoUUIzCoBaW1 zS#C@sJ>CUjC+2spU0tU{#dbo(W#4be;>+qAx9+m2%gK59S%27M!)vAYM+&IXfx4vH zB7}Rx;o4dd#eWE6DIway~XEh@*Q0+ z;EQ)9T$sLJv=vGLMXNSge6rnfu|N@-2n~=}q6)%_w)^L-K9R7pR{G0k0!0+o^mtuwwu=B$5u#K0a`Z z{~j?gP7jR1JJm@ZZEtQC>O66Mq04o5ItYbH7+o=S*pFgfb+68BW@kAcLbXbhMe(bz zd@$uu&3!$`tBY-H7%zK(^7^JxXZ;b(pCZ>|zW#bZ_3`}uGV-TS6bt8m zemc4eut3cX_Ao>3inYqlgoq%zS5#D&DlTr7H|8H+p7oqzQB8r4f{k6(qeSTF^E6O* zrD*eme0n=Gy6?qBMHu8tW~JrFB7-|RV`o1G!~u}=l$C+RjiaND>W>W#6c8cf{Oey) zD3nOpBCUEdCnybe1_Mp)6j;?-g0|az7J4M5V?#hT!kBT%icsr0+jyDK0Q`ue3cY>p#UAIWZ)B1K^kpie7Lgw| z;k+Z&uE2dXjY4HBJa(SSAVPWuVaxO z8*gVVvJ0G{Rh1KdDH=C$Fxc+Nqg~)hREM(O|6Dp&L*b%Srwr+4>Slto1AfOLy&nY8 z6U)jj)6;Xx2f~wG+c2 zb>_Azm|8`lo6qXMmBjUI+2q<=7gYXqG6~$otNzo$&tQ4xB6;tMFEUX^}l?mOK zk!cFpFfmKSxGtPdT6%K;G~^Z6$rESiV$#Sbdhkcw$6~Qt*bQN2XgkQXi^MGk1N+d~ zw}%0$F8_coA0Vf|cD;cGv12P>f8GUY6Ge4(yTBYbyy$aT>cHR1lh4=~2_B__QNHA5)WV3qp^n6bWb#NnsHn#*>qB@?@>@{v#- z!9G9UH!TY?Y=2GVP&}IYcM(Kn&-d@wmG!I$iM^pG@8zwsjl_l@WEFP;(&6T7^59Sc8@U1?F#Db9$q6~0%=A8m~40utj36_?Y05cho zpRNl4r>q-a9c*T1CcDp(NmaAZ0C*0ZocP)4TdL%xqyV2Q-~cEcU~o5d#K?u-ReZED zd&f64RFneE5-lb4#ttPFBmBL&z(t+mHD9 zI%U;tP?dkih0u=&eRa$%ygF}>ncFQEA})a{3%3mYQmENL=O+dW_)|H^KA|1)`=UdGrz&D{d6+?h* z<1VYNVOc#TkczS^hA{E`rV9T>g{}IZ1@`a${9A2)AaJ?!5$WdU=I7@Jj*g@&0l#0ZyMB7#AZ@RcF#%vq$pkR~D<4Gt;8_I{h%&5q{q1mOr&Z4cq)}Fu4*W>51Pt#?G zpGXtAwgxK<&=>XjD!hoQ(p~iF<(yZJ1&76ViS>fK1XEhZ?Q=QC3Qg9YOs(e=U*qVy? zjVqeG$qIf9Jlc8xF+{;r`EnIQ(Q4}eCp0MijwIy*!DKD0Oj!N69fYt}04WDXtgOsn zfddFer&^I@Y{14DiVn|vaQ&&#Gaj}i-bk0t92h=6|A(J!h~01faY-HHi5ah!q`+*? zBj&lMbGcbWZUQru5^_;ULs5bbCxWV4v5xWfx%u6vFnG+=TFi1bRo3i~#Yzg7@6M3F zGu~2A_-t(LU0KVEA`{ZI>6a8-gJZLLtRS`atbOyAjNo_8f2kff`1)o(CPz(lKASM9 zfATO$8A{Cqc2((F|Fn*Cm%k@-$nPyBh85x8U-+SGefl)P|d^B@9A95Bo2d^gx5k%<3%D;&b7IAw*;bg`E-s$` zqX0srOUI8UCvzL7D~K6bjC$;ag_0m|y6@S0VQ!Ih*Q0&djmp#LaEYjP1^Li;fTpr1 zsX;m$Fa6nhl>C?)XhgE?f|d3B+XUk62vS$$IKjr7O+r}YTzp|1ppL=0bD%!0zk@JKc?MmMIQwRA0S}*(FpzDHu_BFXny+lwjbkFKa**{ zC~!E@;TR+Cv_);TMqKjQAJ-AhBVe%3ZbwE7_nBX&G-`k_{;;kkk%KO=dB`Xo+@Sl;#p!0w;IUGd0DKfx+d|8U?1d?;e7G}1KiA_byH~y)xX00K=E4mKMn~AfS@?BR_Qf; zn`&+`!j8`Wqv)kTFY6eBY5>^S6{%=DojMh2V2Qh%US2wmwf9v)OP~v}RjygL5)~mm zWN2lrFZ+j0_s!f@mU(I1=wa{M2s1P$;ZlrcaS^@u+=-Yzox{&)TrDiLar64cyl1yo zDLAM^SKOp1JIzhfiEwmbzn`1a%6kDdu|UP)6&XezG*Jc3d^i2l8FYUOf61KQE-cA_ ziuNgEv4DpUTSdY6C-J8V9gGf7rv4M)zXUuRYuhnF^NJxqzAS3fusBR^SMUPG9U03{B5sM7YTu@pexEffQD4xB#&#S@kE+? za6YZP;^6xNse`x`;p;|Jm$nyFc$_42lCMW@P>!lDl_peYt-W&_2&DQe=o#i{Zu8+I zHoQb_%f_%>ljGdbd{gjWF9AMk_*H^U%&ATudMqQ@;9-hvO#aN#!%Fe(RK!XvtyP|7^Li;$_tEo2p6H>?~?+BgAPxRL(o#JUIH=#cLM z?bVSM5;g;&D0l5p#la0f68Y+%Nc=!3=VBAIH%dnMvuH{ABhKs19_A}R!wZ5qwKRPq z{{ymAa+qB1kW(ERG1Zu>!RObUQ&wi=*{&zR9qA${tC{K|e;oqsl^g5pTKs7-^c>(w zPtoXlQv>Kg2sBPbJaYiB0;_WA;%b+8UN0a)d5Ho@n*vpQ0^hub!%I#}dsqIItEFvW zx7tpz%ryG5eoVi1U~pIup*8gD%L^QjZ`RRyv0`n-2J0f_NFtekqg|gr{Jl^%#bu!+ zQeUMW@h^?YeMK3fGNxcn1-{=7s5E_*5M9LHxlkQYa>wj$^djR@Nl@{%Isa30_U!Wj zk+DOiG2fC<{5uqVxkE~9rzqdiif}hw_+z7&&>NA$u^SJ0I2~eu#a9Z#M1$Z>5yqE6 zmrB-uqlG#u1@2f6Kg}__n-q*08TB*d8%@)lH>%XV^0`^q4DD%N z9uCQGLqPLG>U&@=<&Y2TNYTYzaA z8&J-Wf7F-(_1{HyktJ38&$m;G()Eh6Lwdedo+G_-@JTTqLgUXg*FeL@3fxDI;u|2H zxy$~q0w^deu(l4}JxuxZi9v>5&n*RE%zCl8iZLk=8iBN_GOCh8u_Xoi<$Up_?4jpz zvYeT8slS~&m%l+ySl=Hn_yEKEu;YAVu}`Nj@yh%gH|`vLxs3(c>!AH*p;H>Dq~PqD z@f46=9`op6_EFb+X^WN?UE0x)il?fCb@k&%N`A-~>x{_=8Ot6cL{ z-(p`3+*C=hRfQNxcdo}e=w!MGMsBxH98SwoJ*K({+k5f15j-zp_f)lVr6ud{+Sj=e#5&^t0vI_$wK5qbQvhh4=8K{F^M%fr zfa(W`#jEuRz3t;l?`H}5zkx1ue?I(v(zN0*V7o!i&HF=rG(vG0i0!~k34~${N(bCM z2O!XN5~CQZ1RTQvtFNgM(@Y&*`@Oe0!@#8!2JDkS5UeMl;*MUgnv}dA`At=uQ^@-K z&1gmnJ>m~T=X#MxO5s%|*_!;)y4vjV-B^fTvjQUx;*6F!)OHFj6rY-E&Q2|5q?|E9 z+7vze;jh^1n_oq8c0%>o&w6@VDh@wk#UKu~mg8N~+I6ckQV`zwd>Ab_H+V&;E4bgu z1=(CPf(`aEqAwWdx_i#b+z+1&7~I z;EpCL|3l*@W#k1O&ly0s!vy`n4zZ^|kZeGsFQXB$_A06N&!_G6177uPxn%aPOdqFz zGP1D0O?@dcSn~>#s;~7vsGkGLnZWq4?1uyv%QgS$Mo(p^%jpe=9Buw*+L+XP^c-?s zVBeRC{4Xx<63|5Vg#t@RP|!ybvc~M^c&Xu;L4OQ@l>hoo+r=d%RgAAa#wZ{GjAWKL zTPoQ`LN-_o#!#?rwyn;_#AsIbe7)jx-;%Mj*9>k2XPKtH7w|&|w=YN4!Ct`;MwI{K zJ{5iMNKsCVNauzoS9T(Rk+jPeSBJc8NuwTyxM%98|yXJ zByZ#ODzgexH;X6P3h%Q0Jz9$OyX2cqxhAb4`hG=*8@~mN?QR6A_15`dVv@(bN6d0S zQMmteiWuHiTY)eKwFXP$D1h782m-_~Ur~-*dhzhu=v``)4VEfGl$dS$#mp!K{kh>ArR| zUkZ73g&X#SZY6?q)J6Szr({H)5tdi8W@u>h zG%szf}<=2ZF%M`6@~EjvWeQrCn!TJ(*zaX!ckT9;J3yNWTc%6Ivr`Vr(kOA z%xG^-Krg@NyH#?K``Dt^)0C;yWkYND@l97o^w2M(s~3nrDnIrwe&E*J1p+PL&gAI5 z&dweNK9u`Fz69b$3`)Cva}eerjV~kw+t4u4xM}I#mi`&^egkl_;p4~bB3UV^hM;X5 z45@tLE~JaNqmz9PKu{?uDZrov#OGss4h|0PlNA7;c$%jNW@I!Xejp(~R;-BGxBilc zTy7EOv<(yFY!2y6OEW{Sg}0%M)px{RLKAo37wpFTUdv$){pj0ECzvxXG<%=sK`Aln z@t^O|2x@9T|Fdo0Y9YUCw6`u)pREpXF8*=&se1p8g~B?Q1Sg=%2kk;D5gX;FLW2)2_Iy z-mN=oUngb9RDl&eS*$W7^w6Z>r)7 zSRlZ1F<3_v@u0Aa6U=$Q_KZdVfh@4kUymLMXe%f?%+_s&n1nx6%KoMBgN%a-cG=Hfy&3~z+s;RkRR3Wl|C=?l4q}b|xXCt1E1=ac zx^gz9tYf*UFO5}Pf`9kb?yaHzl!Z2aO*j0C)ZG3fn)K4Hr1Z6ls*=}%xm)`MuvBWu zRSpd4p5wL%;*3)Puua&3PlH8nPL3oU4ls8l;Nbf8>qEW(9S&qKjphQkMuWSl0Mn9; zFiXNnkJoES^|!)zUyqNB_=3|4uF+s2#F79$^Ce1HqpixLXF?Z9DJ1iNDUlZ;Z&(z5_S3h!E(VW%<0?N)xf(YF_{ zAKz{pxtwWi_I$!b^sc%?7Qg4J?(HTp7|Evfolkgmc7lPNw&Z6&9cs)58a*Swg8P11 zW=LIWml49s!J$(;21Gu1aCtidyHKM8jb$9YkQgiq^clX z`8L~q9UUD2S?K7$24`C+IP3ZxYpZsH#n!ygTC~Qc5WQ z32_rN1@O69#1UU>ynkf;w8ku%MA74tlAP#2YshqkUa%@OX{>JG=D30%?a(^vT*L!- zo}QAekF|8J?*D)pZ8=qa;3EbeSiR_aZ##fqWo2geIf`d$7a5d( zwU>p&suf7jhe=c>4?ESpHhSC_1oYoVZvjT0a7_e6E@o}zA%iU3O@-gMzMc9%lFmDx z%Krc3r&1wta@$)}=n%3;LiQ+o?=7m9-dhQALNbm`$vn2Q$M1cacL|%k1M; zpKoL2?3FQV{_ypSgp3A*oO50NhwZrsfp0eCM!-tRu-P~#G{)WT0nZ3;elGc%So+WD zLG@doOx5VnA#8*r_BXQmm{H8vVq!(E7(O&$P#$t{ysp;Mwy^PVD326n#5^uwg^npF zgqtZ^cByZu;4w}v)EoTCq%E^@f!#L>NyEq}0d#jOJsb@8Izsc+vD4Y2Qy_3}mDG}y zQn^l>g7!CoSTtH{WKg1wtL-I@*Q#KQ=joYJlu&^J`wz}64}MZ$bW3G#$p!tD1FaDl zb7>GzJI2*+WTvH2)6n=XXTKng!V?!2zrim;;b1_>y^``i!d=81<`|h~k1!)f7)z*| z)SL$&130Iv@~`=JGgFu_mjKW9BE6TtqyLG{psknC6r@M`8cgn~uSkis$fO9Xxap-x z1K2CU>ax)Qq0}2QCNg`i5o*NkWSXDVbj)*&5q8>_nbixGxBS0(Jgs~yi|{O4A7wIw~S zUA3HQ$`moVf1iMKF@Hno5$FMw_)4B|J^nC6>tGNgi+M6~)ER~EJ@eEtj*~FXMAUnp zI$Q6E<$%45%7P->i@Y;w;UjAl!j!5DK9K;Zs&J zxESRUGhSmTU{}B1$17O=cU(W40rlp`&SiR;8*Un9i>$|tJ<&Z&2I>#2cpzrN1t%U!83Grkkc7lJd05}FksMq=gQ~|cJ zfs5bMpdDq423SObCI|V1z8|c-K~DqRv=r7AIBye>VA*=md9T!@?F>Gsv5#)T&6pwJ z=nESncu1T@Av&q5>|9c<366@%yZ>uKF`pS4}UnV1!cW~tb0W+M6Li`F%ME@?r0^{OtG>~pB zOta1kZVRL0J_4y>zH7LcC_PF1!Lt&NDW;&>KR(|qAIUsd@2UQDq^Pe?W|}_6cX#FQ zT>rbQ>3SE5ftYv;Tx|N%EFFG3DZXSLFAM&Sp-+&w$FmL|!nr?&wuBWF*o)uIq0D1#Ch*F;V)2B~i!pV`G{_b5~^#lD) z2I3cXO${P0muF|BXWrS%sHiaOSyR0GL3$l={&_)&fO%$Dd7$c>I(=QfzliQ?Hmyl{ zvrUQLVEc5?NZuH`nX%dvKhb;9_3AF{4#rFKPTV8abX}@3+uT*J98hh`7R-}mh#KRrk`7ln^(YO z^|N{*AaVl;D11C|K61cj%mQ&>`*){~NdW&V`Rcklo2qe~5e%rxFmj#*lbfv^5+R?b zen<7KH%!jJyK~RD`CzMqi~4=Y39r8bj5fXn+qlI3%gMV7wT(?**yUGPbuL zii)ji7RQpHHCFU&zl~O)oZkY_tSf$LCG!RCp}3oy990C+k8P}p_x5HW78{Sb-$Nzh z7pgc>`I*|t_}<>T_)FCUgi@xH>DYD~wR^$~mEc>!4z5)c&<6MOy~90(!SrW&dYxeQWn z;RB*&+<}6bEb5UVW*w-?+Qt9#-NDFT{jnj60*;?;BE(<+12+Hc>4uk`gtQTcK=^3#BcJkLJUB0>Bb}XIHCOaH#u4^a%h4BV&+ntV!I|6Orjh$YESGn>fwF^ z`O7`S`iCt4&dvh$7dLzuJpO=}ydP3nK+5o7uOi_BVqh1iRw&dcU2KoEK`kyBnLQ{|-a^>T)A`$* z%PU>GjGS-@WY?-HEdWTn{-Wvj?U}XZv5bK%J;rIyTZ=r{g!`JN@4L?+wi*U-`tXD4_wf~?> zjIQ-ixx3;E^fg8}YIJuv6cbTD(o&}w?E&;)R3NHDrq-j6&Y; z@=qDcuAjSN&{pLs2IF|_e>K0}W-tj~z$x)g_hC2Ws7C<OFrPG$q#tCYOPC1 zt@@Zn&pO~6_YVnc0^S4))*=`k!0PaEfu{4scQR%G3ly(fq6CD*LH%jJP_J9)E=*yN zYv)Fml9eIK&%K2pe-_%w57|9b5xZh{D6r(6R0DT+cMD*b4l=krUAmf2ihjo%?!Nz_ zcS1uMImr5P6||ZTC!O-v;hb3CLU@Ov+zZP|>x$(ciu#yah$n^LYwMiSG9SQvDuJ_j zu`wm*1HN9p%x6|{1UFGJ_6jq8@aM714-sKYR+)0B80v^HDf&`_4gmd#G2eXnQNOQe zC*76Wo?j(}`5o~PcDt--`6Ml--w%9CO z0TUA<0s@{e%6+2cBZ>SNAMp4w$@-ZpL3V>7C_MGGoF)bSZM&nM#LxI?+GGY|hYF(d znV&sZ)NS)8ww}HGe4!qR*cO}KecR<(jOM%Z>|#P0Qsj8Ri(UkSA9+~o?eh@7p6lzp z;q8vGS_7_mQ{(0e`Ie2fyAB_^b;ty0;$m_h0aJwB2xHG*pzWqLGQ?+CB2uHTk~sB9 z3ePmE zHjwoo;0S_y$nwse&ez)jBksT7G>cR6@pM6vi<`s&mr6$4?uECEnk{-A2D4cwf9}9r zS6qyJewE>Ui705Txl#ew03;uiCeL;FmV#|1n;Kb)9^{uXfj_$iVgrQXBD;q}r>7*Us;v|WB#&~%bErDTqB{kaeM_r$DJHKp z&gEkXhESKv!@uO&Ru6FZ=1}!5$&HpymlX}c_tg$AJr2?p?pQJA`1y}v-YHu7=>>eA zPJcEI{<|TCX#ZA;On{r3GA1+s`8+Z<`$;`1ah<388t4GZaAcO)O17?#7>73u1RcR< zN%l29G71f)?D%FzS=U||+}QEXG@}B7ydH6Q2M>mm^mnBB1b6f=XT||(zM^lH5AmxE zUB$f{yTq)AY~vD3IRGWo^6#{^c4KdERGw9;(^6JW4n~ygt_{tBr@kN~87X2_fIl!Y z8NC!R+8bivu7gg(*LPx9Y+#p6CM`45lgaemM((F$07Xx8Av&J=A9BXKbXXqkUN2o5x~#%m#JMvD z-x>@@T@z!>soBi5F^d%@CXb;k8i}&4Ho>@M+T3~#4E&iVNdk!5SrV8L54mh-k=Nr~ z=#Zs`;U*1sy&)9Feq8F8Ia|`;Ke3L;OdFp}M=C3$fx2pkcUcmgX!ar0M6LCtRc0zm zDesl6g`=bM*3YQO`4jvHtoX4-6P-EOMs5j-H6c|cShUr1(mlHsCa>;5twV?~O$Q+v zT{q-SCJz4-9=NXyohSLB`igbB^RhoJop~IjPSY>JdP)U+}B^hiB&Q zKDT}d;rTN$702eQ=n~Bk3!)J%tAi1C_t>bLEDATI@VoM{>2aTZSq$4; zt;Oqa<5PqSieMV^WT!LF>T^E$V#1$9+CBYGm!h~xgUc@o;(=P5zi5rbjfnKot*+dP zBFB@300#ngMR_D%yfl8r1AOg$nG=(;7&p8DMAtzgSLFHdtf|L0^~6DLLBZ493!ATm;#s?089RY4E88N9EyZ;V$g9Mb8SmFHf`R`Zn(em*w3BSie=7ic)BCNpi!*UX8ksy3-) zRn;c0h2Q_>Tws;V?HRGP-7PQP?ToT!2*}Ug`B3NaFRGA*_ zi;0r13{`_wU0&V4!Mlan(dZe?-!?U)xpZ+ zz2P)gx+$GhZScH8m@KRGI=GjmG!j4jk9wSs6N2ie-y;wFWcUmB#m#4*k&j{KrrF6 z(ZvsfeIdtg#C%(eu-4IOqPkGK*by++^N@b{(1Q|If$$#yjWv+=WUW@= zBm3K(EUh5AcGGBc<39tkaDoS~;!Gr#XAr^jOcXIypZ@qzbd8!{T$}iBHu9&S$JX$w z;e_jw~Js&rwQX${aa2plQ32$bGm$_mPqRe~c0`Z6=Bh|$gksF4aDgQx`u zVhv$>qLP6-cEBaL6pTY7;YMhu|1eHX>$UfS4$<(dd|;yXbH$wx2kwRrs#v=iB>8mR zadC0XVah|w1whlh1dGw2c;wM%lE5t>F3o_X_J52x5RKFsa>4oJYf?o7zq;{QOE2?k z{UUpr+G@yXq@?-zA#xWDq3 zLT{1XAQSaOn;Kn79icHotrkmoF;$+ZXf??Sf*Qoc1H$H6!>D5EyVdNd)oMhZS6q6S z?m=X7VCAHR3X+C}{bR(t{I44-4e!vg}oLK5n$hf$> zC#BTRx(}&9$!|SQ-<|Dzw7k3w%5}zs?n3tyh~vQeWZI>J)S)|pakkcx7F`L;{J=m^ zhFCs(#s%*_X%qn1)B|WS9`xPYVhP$UcU~(fBz`P)e0RE=CASh(YIvKHi%HGUo1!N~ z)e4C!zB4*F{pd!gxyt|)iC@O-zHba)E<`UhgjOesu=SXna1E*EpEV8t+LiQ*0ab## zJDZ~;Z-?&qCw-J}V_->U-~P6TjzRa@)8^p3f8PICIM|+5P4PCcd(S1vc2`IoNM1qw zS_pRl*9QdB1TCi7*pdh;a_4i76w-@%JA!3ZlYzE^qE;( z0~y?f;CWURbk(OVn8sL?2wVylR$W_Zpl7z6)XGf7iQ>BS^#vlN(qz`(9o<`K+n4j& z>RoX()icuS=1u#v*vGhnJr2eyM*Q++(52YRWML9_H=qyJm9Fh6boL^Y7}gSz=8qeU-iOaVAAggXm+ z--;_gAw+l#h2N*wp$cV_;_I!g?cJ__7^%f&Fv20w_f(3{qtvURColdkEneA4>XMOx zAfLzjhvzS-P7G-3G4_@iF0V-e2JK6*W5^t2U&H0kb_(H4MR^WB@$>FR68;BUFmeM_ z=*H*Il8A5C@Gc#r*4NJdl?8$BXdOm!)*Q(bz*)CTFKgMOQJJhlDZL7oXT6Db_44xK zqXDQk{4|(w=LWQ#{e67?7e31fFl++9m^V$6Oa}80lCnPY2K*wX|MCj|=5w%ZmfIUj zW604=VH$;R^5e(}3y|hivY_a&VIi9 zrHObpnQphpWq5G=;e*$9mrd`I|KR)m)a1zRa!0V8Hc>8Hv|6mV8j(&hh|Q6|FPci? z|M#0f3eUo@xNrHWnduR=?8^o1BJRf&9s;3>>8%w_$e$2-@>LgaO;h}A|_t!3eO?Als07#@RyB$&e}=8PKMqrf8z zacVG=f>kvr#(Rg1;m;qAk-q_No+JThuI@fx|mL<269)EFvG z20csf`uq7NCV6PRJO^L;2T#XEp(}J((_+U)^B?7Yg0)7GMzN%`;RvS&&E~`D6{g_4 z(5->g!>%_7H`tAh^&a7n zGxM=mv4F6zvKVT?n+kJ{LyZsqBlK8um6PFN#xL|g8=jkkPP$dxlunXE){1k2yp(M4HPby*~cj}8r4P<1u9 zEfICR$;v9YWnYQP$Zr7PImdsZqM~5#iRm;4Q?hn3E}~67&xs>By6nZ+^mJb(%E}uM zpyArB|Nj0Rw&!0xCYJ%;7BFvxh1yKf3v4x7ksLU^_ixKF+(Q&D1G9Z13@s#+Y`0y)=`hlQLfW&#%IINwA2G z>~3(^PqZ3!k*|sNcz3{JCTy79e_b%1T7+sfLSty!ziq>$Rw9M_N(W+y?`)3bgY%ot zyS4E~HCmxEe~)4FG5lD=qa1Fh&*qm;po?^Cm;yNvPS{L_^b*=MXIW*#*OamWQ70r_m^B7AoLTqc8ZDB@NWXPN7uZI{!ag{m}B=LMAhC2 zdkHB|RUu3ebFY;6!EPc?DHTfLJ!c_93}yd|h3lalt^8R&A)Tcj<-dQsX4RnTG(|eO zGugV(3%l#F9UM>!Ttqwr}-{*P6fer632RqXxp>^<>tF8Nt zq8J!K)xGKvNMpUBYa@ACZSQU6xcA@lmmzK7&v4Kl82Jz^c5V6P1aN&^gCXS5GX^fN-8vxS2 z3C1IS9?;@rV^of7vbl%AXM&7i(5-<6_Z;xVp{xp^fhN22am2p*^~I5jYz1F^W-0!q zfcmo*ts8Z^PWD(|an!7B+ynl|0XI6<*8~w4Cba{6jo#UWTZ>zpvZqhKS#9NdO-v)T z$COS+^f~nE_Ju1c;ZN{M32wiWjs9()Zd6#GGJ@Ae7*BYfO%ngMbNwr@FFG>i3{&~c zcLHr^y!|Dn3QCPIePw~kApiO5P5v4nskHCfX1wRGBi{eK3A0ro2j#Ru?;IZ+`&Ptb z6^AA3KWjVRKc5*H`3LfEoJj41k@(`$5-eBX`x?0P&I=4YN{NqX9iiWW+7Bq zfXftoY5_W=*yMRO8FcJ~3nGQIKsq7k;Qke;={{d&goPhieagRG(QTGD)#E1eUq;5u zs!iK7n2x`idGaMx=7wv7M$Lrs&5DS5pb_@`iRkGuvF2^^dGH5@2zlgrleJ3p^mW3- zc;V(0ld>O6pK2ECkmtQ#VyS%l-THAu>8k+~Tc=s(Xr7@@G_tSey=4@3nx*({c|7$} zo)Ve9XZ|;%d>-mdM;4PRKA_0z%jmy_1sypbXBnGaO1Lu>FLidFj3t#i7j4lh^%WO7 zw&dG9puDt*<-Xl8RnB&szPppE$2G=k<=583JYEYbNZ+9APFnDkvVAN(;=(ywjiTKIf^Z{*yNCKqB%`XtKi8u__`Hpa%_v;!@r0CqOw9FY}+A~AtNLA z<}P$k@$*l}g;x(?Hv=rYw|gK4cN}_TCuQ~pl%jz1+8;^adFH=&CI1~m=W`ZpTm~gA{OjG(;(7nr=#Uq|??53~#@gqNliHn8&V{@(-7pjrh2ON#QhrxHB^(XV`x-uWEzu z6V2m>V4ElXo8_ouN|;|jc!;?F!T-l|J_XFf=L6+ymqvB_sEaFeGimvKs#fh-nm9(e6XUsQd8@lR?-J7O_2!5IXc+v^!r`hBYwed;%~9hfjas! zg9nw6cvDfo+gsVNMOeS!9N(_8g_8pqeF1QjB%qM=`n=`>~Ey>#Z|=T*seNmwk_vVj0K zi~nk*!Sh_@$LBk*c`zd%Tl-vzXS#DPq+i`HSH40FnjmyQx2fs6i8_l?e^5U8}=e`|AR_%;ha>w3_70P#cz+4yv)x8~QqI3ep^-Ca ziAsr*{V)6FO>{FWPso#dgKAeh@BQ2U>cZUxrYQ2*^T`y>e5@;in}^2*J~Oz3=8Y|> z6A=-y#kNUhJ1_sp?(bJ6qzTxo%7VtM6x#|RK)BY_(LhT}5^1Rir_>FXpDCZ1gkE4{ z58Df~(gQ?24-rI)+>Xwf7XrlypdqKcP!rhenKl|;m#?SYw~ZVQ zz3L#Z!P$^VUfLbR7U~a6!R#*|dVE$ch6jEHyUbS4hqvAJbU!!BWHW=8e(HuwNRk2T`)j^fLB?P)IK z=`t+!$)uLc&X3AKewYH`TJ@!qgM$^YF~j|O_&+HqkQ?HoIfBtq{5&KgETB{2nUoqf z+(hqu`-aacn6qPPa`ZD5);{#zE>KwemVXpH^A59VQfv`Omzf81Xx zp|AL;SsH0R%%_w?71t?ZZ9Nk$d+hTdvyXwIv!2aUC>}&t#n_7-!}PDRY3@*oMtyz1 zBz*t=Rf5lAjHNh}e8L;+JnamVs>Kau>s&Lk3-|~gxNG%GpQ`g`+@c)*WS@T_izO_$ zG$TUI-f^0NxDMi4${ke_b3%~WN=OlzCtu^2n8`w(eETJ&lp?H0@kmX5#3hz96F&VE zVcgvWL>&n4QUj@PmQ>;lo3@VY`2^jMF5V)A996zXZc2rpU)=x5S(OiWAAgRpy1@K> zYHHW1xnh5Lka4V*4Sf;uy}zFqL{p>RzRBNwHRr>Ch-Z`tTpebQp9h#E+<8p+FeL4u zg80sE7l17~rr$;&r2wqoK_Vf>!vo559OUt1QMzIt7f6RJ+|#uMRbJ=+0^14z4j{ua zd~eSa<1xQoZ>2Zxpskh!H;c0n3hioQ!q|uZ<4&Ioog^~4Gbi5;;Fi|ULPLXEySPoM z4w7{uQTJ@+hCBNt9sC=}-MKUO&N*n3FT62V`wtJV{7JW#4)$W7?na>JctZK9prkUW zvM%!=&Y#5n7QR5EDjqSK#Q1PliIfzNA)BhJdizoieZEnu9KH|3=QlEuR#Y=4H#A=9 zpU01oH(^#T{BQ#EE80p989U$~;WPLAB`Xh~Nx6NoCyQ+HPXcDxZP5Y#0PeIV7@|WS zY1Jp#>j3}Oa(A&0=juX;0f8(%U;Jn}w+-BeC+z{xo^8yY9|xI~XjhGcaR(ZlHyIh% zAO?$*Gr}x30X&9P5Yb}EYX`cBBgihXwOs}kD16vpPBRG(eWiOXVBAJg+*fgPc7`AW z1S%>+k0S8jUBQe6jl#uUg*hdD60Dh|8XbJ-DZ*^|CiFPsYN{OsV$<|FCr3OouoS%u z*XZdt(bkVyUuTfX)S?os#`EM%Q83aWBkZVrdm}88t;<8)20+>ZXcyN8F@`92JAEFS zb-q{*#IkRpdRnBcsIaP3B#Y7o`SSn^JQ5{I#f~2kBQ&rJLre*Lsjqx@sr z=@6hBzm4l;0lWO9xLf8Gf?=D{S0i{a(D z&;>V@Q2ldp)I1ui>#b6_Ciz95zU%`R&!%9)ejBB@P&ac*9+o5m2bBj(6QwBeZA-K1 zb{8i6_TBc~Yfg9<9=VuRDC-~|97@Qa-d8D8FLazSJf4?Wl-R4_9=Ko3*Qj-T-2sqe zQw?rO?~>$Mad`zG%U%T3Dl~U3t_!^oGN%_mPuG12AdvuoV_E@%`KY+95jKglpeDw6 zz)okg?feV}f2c%}5ED<-s@S=cU4xxS=>L9zE)j)(Hdby16ad%_<*=P~pC2#^I*dUY z*-Bojt;#UH*A$PiaD&~@?f7|rMf&Sg#ajD1ZC_q}<1f)WSK)s7@tE%bpr%%@^7{be zk0@vBT3n3x@|+P9*gI-(Z-LC*Wr|-S! zd6$~BFqe%mbls)eZZ`d5Jub{Lc6syDlqUp_STxN7qakmE2(gaMjxzt^aXsuMmZtP6 zhoVV?SRO1Vbf~U`cQ_{Ep|EO&4(AI4@;UfoZ6A1mL$eB7az`qjVwG#M!*W8M^HR4LyD~?gz8}O-R5f z8sX@42rx_{KF64NMavkIT}UaqU-E|SSi4ZU%%sgEF(*)HCrr7BqtfO;Fz?lIjD zPSMFajm9Au2;RPP2WLftfK83T#?8R}Cg{PT=Q|YyDjRNJ2Z2l3>8xPnn8huKXOBu| zaku1!V5$6H&Ie$s1@+#*(k|KM1tC?k&g--SxQ7M*q~}hSCRzCE00>rTzrTGD&su2I;{ln92>|9@R6Xjwjrl#1#bQKgei~oaB4dh!QZK*zu-wPw9>-RRBg` zbkj)qt-r|r%9MR}SePYi?qf^Z|E^nb*KT%(UZuLyEjr+Tg|16rejsx*aMAZug-`pH zNjy7e1hW!_lvH6}|1bBfp*u?&1;6{vN{+i%HH>U@maq6(w{Pr&pWR5S$y3*_WPg8A zXLYlU^YwUD{Xui-zCxlJhf&hPht0{F3Bv}l_2YQE(xcY6iZKS-;bwi?`!=o;Ec;DP z4$2DZwQc7cH8pN%^c{qy^~;_bkaXxzI+)Q(-p`t($g!%V4+NdcDHi#7z~pOnNX$v z#wE!Tc5H!r=T~HgVqQIu2@-FJkG@+HUqw~*Z20l%Fl=ZIIFb>jPQs$p%i+v13-7xvCugX))=ArIGFFlX84Qg2-ZbS$wMK1ZdX>CW zE?#N1uvMnoX%nKd(4)xs(LX5esSxYvg5;AvLA*C4R<1gF+IBneWS(82(LTDZuyXdp zW@x>1g?izZ>{@Kaqnq1c#@aGz+kLnBR@e=~195g;#8#Y>|2)V&7(o%3<-1xK9v*(* zrXSi%xP}t~|KbV~i7TK?h3McCV?)I1RK_O@F&Sg$(|Lut%<<+9CLnF%xy zUJ7Qi#e2RYl;_|X)Zjnv!jYsN24}~x?k2tnvn$!3zQk^{*}0{Xx6+2C5DI2 zZ;M#1E=v-IT%Rp7SJvdWqDu2*wEb>1uK&D$UysZTt?xNKFy*&t)gPb3_BJy!Ju?$9 zo)Zzf@-JvaA$UI@aF!Qli?yGB1Q zRpqZ3&dvh?sWAWgMV?a6w&KGe_)U-|4oqd&&gTB!<1C5~jbm!RTZTt@FVT{;exQD2 zj5uS}saTY**4*cA&AczRo6Wp1DU1ijIgTJ=rk*RhBx=3!%tM>M&fxAuZTD%7iNY~) zMP&2nr=i6tbF*`vS9$Cd)nj``h?lH+c5C+Gd!yf4M{9;roGZuWjjIfzi*VL@TLXAW z;#;Dyf-A@QY|(g<2gOit>X+PBAhlSlfn;r+AsuaP3JMBsZS7}Z8;swF?M={5=6*9S z;nsUebT&=30C)`S3Lu$2j>pB5A!8m7z5(R*97~PhDZC+LD(5fo~Ltu!#+vr%ggu z5d5Mi@1+tAski^k9ieX5Jg7@W)0nHCMk*tN{Htiy_+;#H>S)iRxS)u4td)a>%5f=Ceu`VMPSuU&aAHEAD|J4=#D5lN;?dF30rjxY(i`8F zez)0BCN_!~@cGX{w{fKQCOf6kBtCt+6^LZd#`JTJygV4)w1bd^PFYhuwXS zSv(vH9Ot4h_H@r|KmB>V8HzRLC;3#S(Ooffezu$%*fUo5c!Bxr^jjvumD|(!E&<^g z3%P8)OS?bGIh5L2(0tjdSTfCxC7X9W(&3*_QAU> z9C#u$-~w$zY=yzI1{tjpwj42d8TZl#h6ge`4GV(>u6Zg4yilbPvrtCL*EFhgJ(f>o zj_&>P#Vt2?pX**05>GgdPD=hwW}y8*rr@X2%=Jx)boph(;5T{2p_{XH9Y1EPnRvU} zJ&H4RCdY)zu%VecDGLrI0$L@i0yMj&1|Dxc28wUoRHsoR4Ey-+=q7>!PX##~Ukm1u zuHh@Ol1O>73kVg~EBX0n)}DK`Md{3sNM%Y!ChB_pb;%@iD*Bj7UE&P6|(E0R>#w4FF7XY6xclnCU#(Gcrm znYdTRpYwrw;= zc~w4Yhf2SAYjUdft2@ZBjhZUx^_kws@gJv703W}=6rBTUeiN8h3It7D*YydU zLf__B&XyC-mf`Lk11SNpTpIiz3}E}Ls>Z!qutqpWngB2F4vyjnlJ#zmj{GUpNrAFG zEskWiJRB|pM@7|?>S4f{>?!N(PL$k*;l>+gD#3@%fv)<`X+7M z0()I5l%f-@;`jMJ9JMwSnlg2@y9mh2G9dAiku~aR59RTgN(~09TRUC^0RW~{yC9bh z+4%@5gdY{xAw((&mJ3qR=u~& zYiNd_Pq0wwhb`&1k$Ac`MR2?~&4I6o^!{zFlf@Q|V_|M@yJ%?ztri5XLftgg+Bdxg zI#HOlgJM=RGYz1(B-_kD53jhx!Xk#gG1Lq_7^5tR~JXs# z4L@K_jQfm$^Is1CSC5idCI~^nU)HZ2FbmxlbYqMX$Bd_gj4hyXlW?AE2b(tNnO{Ui zxEp0zE9PhnDAS1Sxb4Lp#j2^h%{=W2I$&Y?^iiQ8?#T@Og?1=^W9Ny|?XIK1L zseM1qNbQdf2VmTuDdfraF5Cq^arFgE2{Fm+4ZL=xF5W9?vCRQZ%;@Ly!yVkNM(>kE zRE;oKsbjRY<1cZm4ezb_P+H6#r!0*WkFXzoGoEZ|EwIoQG@HPSMoTi0y+o;^J1k{Wn~FoFm;-TvJ;%Q ze}o~eL-p}vw?C={L!dfs_ML{1uAM`%tY`$cs3>~LxKPs<0D#crAhwL%(v+=TTwd)z z9pQd`Z$pA4FF>vp3mRn9PGO%4Z(jt8FKPlC=E z|BdmiSeu@x9A!y@iCt_KJnmvV?2yi0@OXDC$E)pl8nM+d5b(^wVXgi7CET6}#B061 z(epyh-=|SZ&z9t+oDOXQstT*Ele*?VN3sx_5fu?Kvyy zPX9ahj!3aGv-CV}qEXD_TcnfhGI3q8n+DDIeGA=ZY6bT;0otdVW`>J8t>vvL_V zvZ8l@Qo!go_zTB)QOy(^2Wz>Y;65y`x8C^2Zo}RLNZGI#$Yld`=Et-UU8f z890X*47N|HPs?-ssy1l59Q>z_PiN~OU7Zkln-o7AuWWqyMspKq^VrvQN%~MD10D9f zm#TM<_bK@}x%=Xn#u8B&)a+>3$>IfzRnhffp4xpa4?|b_TZxN)--`ya>Gg@oRXE$I z!v>N)&RonsPc~r=|J>;T{ZUlL^KHSEtaskhUX!)B)zC%6y<5k*5=XfRZWx}!Qv#eW z?(YZoJvDYaJ2|w;3fKdGaytk$I}USEXt*jF55LLf7ZiZ}8Okn@+m{KU4P10M$p42I z>BNpgt^(kiAKlDmQzVmtpAT-;(>h!k@XvR;@)H;)jLAAXUL=T}pIlqmNwjL1JxbZ3 zZ8OVypi(vd5=m}Rlgpl|A(xlqXd{dNy-!@l?jyGI-@j{AuOFG)2A(wx4*DUb7Iw%G z92EPdWm&UL`{%&|XG5CYwT?e!Z-zb_nc*L2h3Dh zT;2ThdH44tH9nQyfK5L}N=hmVIGftVr`Mv2<|V0t=+)x<`EY%cQ_UL|35}`3Ux?zC_<9GS7vsO2-%xM zWoPe^Y{$$9MF=5e?{N{;AtZYhAuF5g-}`)j{ErEx|Nd=mZl04`Cqn## z(7=>0mIQ?*A+R?@*4*B{$IZB%mr(LakU4<52$=;YeJq$dfHmInej~2$)oy3d>Tnbnzxkw>IG4Dr<6Ku};}*(igC?2VywYp?$J=D!LbId&xcfs?$9T{N zR*}+@zb%F?5_*{5lc0vH+IdM)w9z39yp&AIRf=ra(Y5KQc+_b1aC@IdVxqmHr->Y@ zQctLRiu36J`4>Viy#eZXR@S(#Zm(8RMSaFXrxs45`*#E%smzNqL?Cf+HtVA$l3=ue z{*axI@^BclaxBxGND1v81r11sll{1?$VDmLy`@)0OC$)ndE2%vkDv82)F=CfBYuK~ z4;~G;_IiYE@pwF-K7@e@gbKiAo|JerMPV%qv>?9A0tfT_?HVB* zV%cP`K02Dhgu~j+&F$&aaHUUC*?O$h;C=?64oV=a4BT#niE!3JO2Xxc4miCd!^0wc zeE-Q!yVTu?jeGdNPWbd!uig)X$F)bW=YJgQT@$fI=vyQBavlzE`%OE&<|W^!3Ha0h z<`zZ3`sKsshvArT+D8*UO5fe0d>3DN4jmQbC>1C54bD9Be9Btq z=Y!Gq>tch3hGmJ7`hHAh@whjqK(p8FvVY>8Vn)gW86}h2S5-W14~El~Y*pVlD)xf( zfK(}VtmR)+t&n#~P0uXLBp{ojKF5$T@9qyQvufe8Tk>6%_@urO5w) zBuFV-US3YN61uVnASBc@T?pcZJOaqe%edW*_n&khw?{mKl;XujYZE>#>Q4|a3whGu z?P~t(R_fD!ed-yo%&DoVFvE(grD_Vi^fL24h*3!~n(p1+VKaZquPCo^M}Fz4-NKJ{ z{^@cXG~>t0ZOvj~73+K9=ukD-enLVP9u?SU=w2eW_1gcPA$h6z!)wB7j>%<>uJve~ z{qFL5>8IIg44o1J#C6vC_@Fp)IUnq-5lXbA;g{%~#fEld!a}_3_3PIVXzUL++n~2j zUG7~avBi}_l^K-8gG;YxwGIw0Ub-}0R_?4xt*weD>3uuR&oDtz7KpOoWFYl1(MQQE ze`ni~*C-lZxRL)F6Rkf~ZdI(T$sYNXzb>kXM%Ddy{b#`!@I^@<+-e#W7!hMJM^nj? zx7R{W(A~GhfmZs!`$8~=iGhJwz{%0~?^M_RfjAf@@2<{H$PnsOAQ}){n4kBY$j!5k z%udAImIc%8L#cgB6e;{`X9EHL-T2!YnT-y00_g`7M#ElNA(VM}=b*^+cnMUG;9*?1<)*&S*h5}wvT!IR^6jv>*Qevt z=460qA7G5Zf!2!9L0)_MOWN~}+B^Q#cX={sZ*w$?DI!}Yyl)%f_KrI%qlwf$@L%Mr z9$S6RpPz?u57>Qne=8|!P4kSpOCp)1PSbLKietJysNBkX)pDcSy-XTUYxon8&YJ%s9Lf;S1@!b@9YpwWZg|#!-Vmq<_-o57 z-I}`g&aW_t8QB7>&f$`7iZqqOwZ&OT4Y(@_vV8a}7$!iJn+SU0Lkd+^ue#=76{ zLsV$D+pWNen}=l;ng8SyP)NCQb+ro3LBG#*Gnu_%}r9g8C;e~_+Mn?is zTOuwk-SY8c>#Zrk-c?No;tUfY(Cl#qVCi;tA4*H3vTH%HN#OdR&pd%yh&EcD={X<3 z_d%R+5&xYg)TZ!4#$Cq3#y_vlkt7aXPLMT;zx=YkBm$RAWHu~RKn6X7Ck_5~A~+6{ z>pM+o8U;PsCH^Y=@vTM%ByIFro+J`!R}D8lqkwIVLtXz*hnp!1)4Hy7N*d@;qFf>b z6)7F|JFau(y>?C1cRt+O8>=aQ`(mXRYDH-&RS`^|A6Jo_i`@ zkCqx1SC0=?FN}6I{~jLwz)3djtW`a7#h_@Yp=9ll1?#|+rKU!EbN~Jh-n2wd=RR^K z_qoN@@O0OgClNpF{(N)0C4(Xa9IpSA8FmBX=Ef$T2a6-rQ|YiLDc$tjCZyy5*;}Xl zi24(u4g_#_o+M2E!%Q7*H&4%3B7vE&UV(HpGTR4?vtN@q2q6i5hjqKi#Wlop88hVj2jp3>4)3wKB zxQ(z~;xrteOl$6UtvZ1Hm4iPoEfvJa>pI#Qwduvp$>)@T<612@RDo~taOe-K<9;NO zn6pI8Uyx%O7j$2Xf;x(t+b<&*xRws!a?3Z#R1E*I>{8vtg1?J5xJiE!&+yEsCc997 zT7-|KNBt-!L`a;LnzAj1B=Ky7{OM>#fc^N~uV3QEH7v^BA}90p*O82YNUVH#co{0R znw5n%I+x)ib#7psK~c~7pqMfY8`Y;1hCqgUCCd#ZUtZ1DA1n@hA-i@%Hjd%#W1)#5 zHhH!;fU*}@No-3-X2WpFOAbTiA>q8Xw6wtHn7Oob0PK+8G|$zjiE}@m3c_2htv#3g z4qBQOG-^eFpOmaGxkGh6xNl~LNugl3te>r3)A3tYt@I$-jH#9BS~8aH-a zc#*pE=tb0DIHbQR4^sk0kC$7LeNFL}NLdsqB{uOp3L&p?S)r`zJ+Uj%q{Dchvd~%< zMc0tMi@5vx{MlRvWLuxQvmIxSb%|9HU?d1ksdkwC{I{x`bxj8LO1QAUyf?>b?2E%k zX~nwaNDVmDJTund&RD;E9zyBZB41&w6X#owtTs~o3l0_nOr+cjznwc}As|bNGu_*e zcjAo>&1St2^bE|f1%(IjL?`3t;9L@t?ACvQ>hS0p%gbMpK3VEupIR7oAUqu)KskjH zx#>MndR_==1L_QL`mKH6Vx8Htfgpz05?fH6p*!z=X>J56bJxKO( zEGf3i@YQsE?H9=;PwD(R&8oQ8L3!YShD7;0_BKNUAL$>HiM;*el@)KatF7Fl>isS6926FMK;UH1ut6@1`=#BXe}ss6{$H)to%9PK)!e$7EslJ2$_l zW@hKGMPJ@E*B|)S`9^3OaAy|iF8+Y~J}(cg!e6jhF*jAtax z82-2#?dzXeLdZMQ4N6M%_p4aRMd3)%zlI!(SqC!=x!vT{=#nT22&;ILtWsXCQ1#M_hCt+@D zYu9PtKm;*>L=k?(A)Enf*gb=3AKE(#(mDnlj>FLT{rh*IG!SMsHj(GLw{F24Qd&~7 zX`l?e@^!EJ{qAmDHfs>WkL4Xp{<_A-BVhLKBw;rAEBAe;1XX2FAp7)uOK6GTECcs5 z!Mg>sEHucL=^eFQYgXsH3I&V50CLUvBqbm)E2@^I-sfhl4PYoF+fXa~5=L}^;bTjJ zC;t93yf4ll)!#((w7Q_wuw|3uuWmEbndccj7aA=oaw!qHg2ZOQ@Sj3r^kUbcd3VZ| zTui^$!elpj$Hl(0CiDF)8^SZmsL@u}eVE&r8bs>F1syeeE>Zi#j_Yod$5^@kw10mO z1(6b+Z9Qi7pSO$<4-L`*JtiB5~x4hirR!Tz?T!#CmK51{BJzdv$$ z*3Ii}K>j}APjwZu*B@$Y3tBsD%(KhY^xB_GaWlRY#E{ubg1|oew;pe&BSP->^p6sO zirHJ)Wy}5 zQG(MVmm?r&xLEjQ&)>Wsr2xHu?wxbjWf#C=FID0D3}YieM6*mnqNF9nrM$GcsT}-_ z`bBf9Y;HC#)KvgOMw;+F>(6M}`+-;8hsP~zQ?<#O9S4`A zaQ{6gaV*t&lEWIuY@9$&-+gI#%ziy^KW%LoC7b=8D*LV)TO<=ADDHlERv`&Ol$@k% z6iF-DAW7B{|5+lh!6pJ zPjK9wOy5m_1sf?}Gb`VSg)vM?Q4ydjHW+a&a0(g{@aq8fvV#L}Y6X}OEQJApRcmBc z2D%W)sXS{4=$mp=9H>;xahm&@1j00jj}h6Q-Hdy;e5V%%pN;GGT|(81U_X0Z|EYM( z8zuv|boc*v>GoQt)n3GD1QxBKRe~6*4C^g8*sFhAu#~$G``D>gmyS$PT1v)rItnCd zy03ksz7W4qJYL=YOJb-Zsc3UGaI$RUL6@$Gfd9+1`8{6JVTzzu3!EZl6cbORoyN8s zU4rr_URN0u*8NP$0mp@WP;x;L3BM1Q1eHf>1;Lpg6 zzybv1gco)tKf~Jw+#QZyctdCvGsi62L-hWioY+kUmSMNs$_FFhlm;nCe&g{jgqOqm zD}C}0Fn`z+K=c3)7JT9l25wv*KZgJbPQRcwDoE0&`grg3q`2i!JU%Y=BE_*NBXMB< zvK-Ess}K#Wxbqb9i#fSjFLjU2io7c22W}&|7(l7BF^?GKXHtD`-6|~^ zPLc0Nk%koU8M=9_A1k6ak?z!_S7n)UIU~`X1yxnEAiEvEkv}7PTlKnG_ww?1CO)FR zgi_YP@Yja0?&yaE{M^G#VS0bjgN{2o&6`OS1LS9ji0+BK8Ey6pTdogAW$bpM#r+Pp z2{Z|8iG%@DqET)@uy+eERfuQx1ZV((SiAMHy1MhQ)wzrf!s55Q9HJo((KDz2r-m~u zQBF7RAc;Hm_*0Dx4MD)E=?#iMzz0g~!D|nj2Gmu1G;h6uZx{fXn#ZSb-v*+bjrTw; z3==I`J8u$(V6ua1Z1U4nY*ltlvddQW-g!IzTo~YsL@-K- zrEy(-vEx>uLl$%|iJ6iS8B~N1MVWD$n3c@ZV5Md9t1DKo9uC#s9j*#$r6N7g$bx5x zluw}kCS`Cq`6;HAY?AkEP++k|iKkNFBX5VH-;nxK*UbQ5`0@6JB*+uN-0j}eqh3O0F2Q(HZBG)&8VLi{ z;d+?#4buN0S^-pHTG~C2D_}PxC4^m%Em3H zH9IEZABFZ`Q#e^!+49+wVvfX!Nfs7@J|=c8KyyM%?gZ!x2YW$qE(CsVROW*OKg zPlvG5LbVxnNRSx4gIB;nVcsj$=e~29ZK#%t;c|b6WadrtI@Er zsVTrwu+BXch?F94pKS1Ge>`dNKSL?t4!}*BcrWG>2!g$1LfC+xUz0)crf;+*|Cf-n zI48(x&|(Maam&`TZxC7xv^C;qkKvOiPXtmQSRF;``|Yx9?cWm;YJuL7L9uoTy9Sd>H+{N~cuqe-kYiKSHHu)Wg2ZrOv~2C) z4NbJ_G06YyyJ-A-M#tt9{jxTFx}q3l5yMZqNZiSu*-B%#TFgJg3qsekGF5EFZ-N#p z!Kb-z4w>+%M)}#U+i)gJRrhN+Io5woJ7Z-pUil%K_XAC68itLKoU49i&L(M5?|Re7 zt*2gBkLaFMoNxaurnVbpx(#-SkW$~=A5Vip>gJ{KCq42=wO(W9!+OXy6GR{b61u6T z)p*i`N8xJ~b!XIukZ`E--#^n3XSsC`@|+$@l>J~IPiK4jKI-pgo-mY?;$lVOTA1~QPk6p0H`A4A3Q$n?Cb#h;1+8my#Z-W9LdM3D(L>RHOSMuVJn!7#*&bP z9USc1Py0X2DWfO7*vXu!yXD1)6sES~CHLzZZPm+7bh_Gqi>HR`a||Qt+-4%fQxcMz z(vl2&K^+Qg94hznt(ola{D_OhDSYvozw4_Qo>5X6duVG{B#;9AoXD+`aNinn&($xE z@29tHg96mO$!aHA@U0z=^7yeGg_!D{z^n|{gpOos=PL??Mh7JR!JY*<vrC7U$7>wJRR0N*%MDaQGAd{R0Zj*Ex+uiVs8t!vnXS}2 z1O%M^`{!9@0RB_>5`2ODX?OEhPSDZS^?I&g($j2GO4155I4mg zFx-!{w)#bMsA&jlRb^_1mi;~i;pc(>-Ip{`Oh3<0Oj=mqbt5mg6(MYT04|WprR2xW zIs3qtS74(ECkV7}?W|v&`N=1NA4}`sG*ns{6Yl&es@?tv7_$F(U6JwU&c!-4ULpqm zX`*~c5}2273L4>jjKRtYNnid&T8y|Wpr~Nx)#o_1wh~uuF~{vQknS90uZ&w zjg3aE)X?4b9IVX&ryyHp%>`&}f+!XhnT^DDKbj0;K-1880pLIs*fp9vu=qa}HOotV zV`D#n&OeryYjR$NT`o)gBOzVs%NOM-$2=|e;twAHAVvVU2DO#d_Fyt<2BK3DnVJW@ zXWRo8U!S7W!rFNes>z}fUHwml0UvjBN=qV4{NR; zNrhv5(Lt;U&xx#`#YJY@j%O`Yoh>mnG%GHB{LJU_3bx$6TYXxPyq4R=SY_ZTOHNT? zC@Q=1MLL(T5rPg!WM_LKDI17-{2;!2E5CuVW4W53OxFn&01bWOsOcXQA+v&fb z60lEZ`Y$NYTB3`N5pW^!5djCom6ZIbAlT{`X6|oRmNeWEKexB>!SB;_-cieIuqJg< zCQ#oN7urdh?K-{H*} zLmW!g(EJPuNl{cBaIBH#_4NmU zfa1#=KYlbzoBvYU#QGEJY{MTzm)J> zXPfuk<;y22Ekd(# zqTW~<5NX;JS)_HE+#a7k5k`>8K!O^*@A`jG*VT+m{Xm7=A;E_bK0CHDDaIV{#hX;#6RJHc40F zb(RMDDk80tXyg(#Wx`2`!m?t^nDMEa)<)V}g=u8O0_1esJ!hULsjXdASU*N$8RySN z*U@2RI?z~*LNJ2SG$C;yzn_f9jylS_%DaYDt?^*c<3n+eIeBC@Nh<&kARho@w!Z@c z=vvS*z_l#Ayb65ADj0RXyEU1Vf)AM)xQf@^b#-?!)_{2~F7h<46Z0q=mJUO7>eZ-R z%|&}hA1FXNoVnKGx&23j-s>EK@NNG46$Yw&Y6Y+DekIUpgXsn4a_qP}Iuzz38Pp9i zSD3GbXen?`)C!538C5qGG^iCC*}o+#Y)ktj36IxO20ais7#l8ZStnD;JkUCxxO-*R zl{-Z(mt58oA%l8WQHyy{44#t4=($gu@^6$J};cQg=7n6W&9~h7W}ks!d&}IU^rhm6HjJ~z5mIYiSNcRZ8VMQ zvIy?KJi}q9t8`D^pcE1ifz`IZCfoe#X|C-D3=e(dyUK>SfM8Z0-kJIO6?`CxC_dy$ zbhJvrkM|6$2wwj0|8Y*|y*C=1T;BPFvEojjggN4_+7;~cfQR8w6Rmut1)n3T$6^Uo0&q5 z6efJah1=OK<9q&F_-2%fx|{mr@St2KPA4(IW&2M`@0$iJcJ@`?oXcH0#Mim6D=V@& z{UFNg@vMoDryN<4@8&TBYN??+KQGUrX-5a3x~8;{kTa?Sp0^-o&r75YkUC(F;U5L7 zqv4IvDH^PSVGj~>z;@+~B2D}bL~~D14>ZETo%{e545Khy^w&QhH20E?f#`c3k_>LN z8ZtxRauml_(Xr`o562m?&Sy(nv%RN{M^P<$5CI`O{td0jlCJu-Jg6+tsd3hE`9riD zr~Pq3Ivaic(@I@Obl2%r{gX>u{^D*%oqa66t^$aO)<0QV7+N$+QSlkeWs8+M2ea`X zZZxJU#aY~|Zi|N3s|~JJtfE>UGBdnMw$%Ua@R9!BRJ!)3U2DgPhB^}2`>lGv(Xptj z3JJXcVE`GoU6EPrH*=Zb>Rc*#6s=Qwr0R0q;yh!w4KVWT8)G!q(QnzXXmIK4*RP;t zG&aHQ68bc!ty0E3+TeQ7HQS#y4?Zw%Ll5PtF z4>P&1uC?h=k#Zs<8QupWqM~B;hk{BjZ5F7oadJsoq1zJ@N9wlh6U7P*)CXlNdS6;| zQ!(Wa_@H0p**E&#y?1TDS(W8+uo)pRLm6*yg*2p0ePC1L_mB$lb=HtKuc-FDHr2)(s))6+{H=yyM=q5ZUxILD(DbvM>*}0}>s`AokEUv}hdDm%g^3=iaIDz4F5W}rtqK~XIC;lVNbom1^D9@7XcQ4xRov-$v6^&NJ zrfMeO>5L4;ZzIJ3dNNr4)_kc%#rT>{6+V)QJ@UQvnO@s}{v=op4gQh_4NiJF${I%p>N^N!!AUOCC-%x{X|>&>&u@S*p9#C=4SdX z=ALMtm*@qmI5#WnxpQ4%AuZy;g9qy~RmFe4mAzgl1WnWBJ8I}qJ^_K8LUt_fTI@@! zePEd(K_;f6x>~1LCq2X!5D5NML2@ie@y7=t2M-oI(YR?qHO$c^#l=p;noTCdg3;%G z`DApx?C@;3)u~ryK+%rEcIOZq8VjF3;@mR2)qzHggpmEc75ggxVVF595PKFHHfhu2 zPo8kJR-TM4N&kK7vsT+WR**wNU!69W^-}g`x@6xY)wN^E$}3+YM%xWNW^>W<@zhbw zNIg`a&ES&YAm!}+?==A7Ar*@E)nG@*(2k$E)!`}lb%G>fHsG__OGHr0fw_(nZlt9)t`p@e^g zp=kGnuqr~oyG@nY-MjmaCp|5xX=zZ}7qA0T4^Td?P1J4GEo98n2}x~4m>w;+oKW4n zg*4-nFT=-n(8;LaV5U zA9Atm)9~oai2KZdR&)QIJeJ48o0BAZ*Q-`f&d3ihWy1#s?l+L>@4+ARiK>HM!yv;18T4j zzpi7+M|VS6Y3DYBIiH}h8r0zywD-3Beo9&g1uAOXzYnx1T9>yI@rsXDK}z;s0S_L2 ziNmsr3ca+2*ppNW)1sJqdC$5vwN?*ZwOx3<+Frh+OUht|L(8QrJYvGhY2f6Y4!0{$ z*G?vbtmxRUPS1*Z+S!R__99v*CO|$sj7eZ#9j#DGc*hzER!0a%yT_~YPCJ6sd9;GniU0kTI2RgM+fk9zq!ntk5?T}S9(wEVESdIB9K^K zx}zYr%DC(D7!cGQZ$DR8s0Mg;T^k)bA=>M*kk+(fu$W0RIr@0qEtqhAb7BqhACkyo z#EMZ&m0e$}q>_rw^$mSHi+c-d@=hd2yDY-&-MUF!B~@aD$PIsSxxb+Eh@vabp?Q5c zOBBbNAp2aN@||Y5=KDe4VEN&l8(~yT&$Lrd<24lvik1_yQOZ=ps?&zQU+qf#iy21P z-<#rk-aLEr7kdLEBAAZ|`;{-FEUrvFA=uX>TM$@baUXZKm*$tGUU?6sJBP~re4KsM zf|;S15LN)sOH$I6VK>v$gJDAP<|z2yKqdkS!hp@l{%H$Q0XEqu zEKKQShKIgqPKp&@+G|;Ts{>^bNj$gdWPEeT?b#%Xk%%!AYOlNYiXszwEiZ-w2>!8* zF9tdNd8rsvWJM8`b*4KIO$*nS#>7Q5~Tdmu)x#Coyz8r1U%dd>eZS@7OT) z25%IR92jr^lZMppi?YECW^a&BzkDmY6XZp&dgv=ZRLTCj*hxA*ui$b^IXgHwEsv78 z#4v{Gp*ESuZ|6^RSmor)z=9X`SXN+>&#k$Y;_o2qvn_?VdO|+-c$HhBEbM%jaW-BT zk@oD@6ZvrJ^46p%O9=Nl=!YMVARJ>61U z>v_0Z1LX9y|KzgC0wHS`(xO1NCgI3j0mAC6OMXa%XY_#)cTHnsBe$;bhIJvm& z?d%}rg-RAOq1tTcxOsTMr32_O+~eyEf&X&?d_h-mE`#eQh=EiFWv`j5NrW(&2t9XB za50l&l7<9BBT`{nYbLcB?y~zKuq<9J%D29f_JP4{n`l*?ve-YZwO+pSI}f^(Y!JIG`Az$6x)HnS&Eg^fmVqDNPjlaE@Swa?tRq4 zZULp4ATyV}Ppv?p?7j5+V6r^{;0zM)z%%SWkUr%K<2@)zrMJ2(GM)&`pS1BDHT3#% z-_Jd132Ac(Mg*F3BGfg46=yL_d>!rHwW=D_{RapCCMIg+HFOg>u?&$v>x;7ApLwp$ zI>C)pY?87|S^Rv?jhG&@E^V&U#pPxQm ze(|D<_o_|Rr>ZKlPcvvn%>qHjNOndhxIw)V-mQ(foqqkQ57I4a?6;ayzA)8qFR0FI z3^TsTOO$Q;D-gQuc8-w}TdbKH!E`_OA`hppz{|U4<9J+z45IwT`$7g~VtCb3`JNef z?OjKjD}T>nB@a5=az{oTp)S@WHyqV`Gc;?pUfVdu@-9~-iqzcpzOhRsc6?RryUsGF zY&fqXydF%!Or4~-TNpW6)?BI1czYF`an?*pUNxEIVx-ZlDuhc zNOz#%3j870>yW=}vqbl1dGg|SZ?aSQXEt=fkK` zBzY65u!qi!xqp*P)80d}k}k|tV17(OckX;vA-iqbeEo^(QON%1TZ5AgUwozwM_Q(T z)+LJYotTnr_|6cf+#ZK?*wCc?4qS6J0bD%(kuSAFD7XJ&3HqJ?{`*x|r;o8MD*8rp z$#=f@)HfiPiTqNm0{C58pODG2Mz(HYeD<1O@S#X2UN=Q1TnzFSlVnjo&#fsRpRTrM zsP6?$ey0z@8|}xTx#G!Pf#BBa6eADGm!mxRpQ4nEvJG7#io=5(Iy&D*b`{ZLp?p6N z-Hdq>G1n+^9-0c_ueAS(%|>9egf>2CPmXbNMe@yG zI4eMYL*c;yBFnAUP<<#^g4Q75tPhJ%Gf#VjmCBZY!iZnpILWF<6 zkNU`*tD|G`b?)NrmkmZWnx(zD1LF2RP3ofEbnzdPl0NbKi!TLFDxOF1u`n>Nm+VgD zg_m{f-M`x24fbjyD&`{^ypxthUou#k;ZOY-w) zTc;Hknxp9@JU^P0x|}Q?`U7@g&sVC17w-eb0j+k;7x(}6a(Dvjwj& zaUsk_ruKkJ0R?`FBDSk#ojIyc!-~f&KP-FIEc~DxBXXb~^9c?CWOrO4a{0U4@iWQY zSVjkqP7xj-mr;Z)LnH(K-sdVugLWz`ukU1kc)>iKDPlN4k*`tnzEkgP z+!cl1#{xldQZAvsn=d(_fcNa00De_YL~urAG3+H^26g&Uk=gM4Tc=f*mlGl~!7mE~ zl{6HU`|QO)jvJXQBs?ZPI7uIF-u)6EZ|ZvERy;2vjx{nU5J@CsmJkg3tkQ?`&JCy_ z)z9Z}Stgmc<$LC0zVb_70RwFb>lyuT6VCWMg7){4E7FFB$=|xXrpk@aHnP{A`gU7P z^U~G-&_;EedR1a??vwBPzu{v+LQ>luWyPlEIJMX@cV%sX$OIfyfaPy)2gb0BzHf6r zy+u*k-oHPKxAhHHw*6{fbDcCmd*|eM{GB>(g>)*}TFq3x9&K6qzq<~CIw;x51b!Sb zqW#sgQ@^c`Wdg!cPvj|?u_OHi4OohbIMd z8>EqMBryGij9UwAVwHWE0xJzj_D*XDqCw>n3 zUTLFqM5`bp5ZMf@bw&mW-!l(i@At=kJKZq_3M!bdo<{4G=heTQCfCL99UY`k<{)Aa z-nk2xqzRMG9<2Q=FRg=_f{#>EMoNq`M=KVjb2S@K;B{$5lM)FHo|i%BpB>M5$P(rz zN%8E;WF3jE_raQ~OU$|MM;N}d?dUdi@3)iH?d@T!yE%ml%Cd=}=*u8iYQco-aZX*u z+rr}}dyR@x(#iM9VTP)A@O!pC!5ZywWjY7K1mgn!CYAx13ioRO86 zrPg?`Zo;2Hd)2R{#9Be&3-8&Zgt5WcscBaq)Ejp>BqdHk zmb%1|f%(?EcbWw!CyfiYrB3%dm8AHO=XgqqTBn-C*^}5|4iJ_g{500q>J{sN;;y}~ zdKH40Q%tlHA|oTbL#PnCorK`QkQ<@J@K_auZ4A7d_QL$4~!WJ<1!jt5_sz z+V#K@VJCt%h_TrW?>|{|Zc)MMJ05Roa^1*QKxS`0<{A%3?YQy=njDys#JDnZG>}!m z(gNemNqynPi*~3XYdk$^$j?s+`gsghNw0caV)$-iJJO$5r=3@zL}o=2tElv%JKq)( zV;SxGS&@j}&SC8+d5y7=+8YW)kS*k6%T$KnD_Y!^DyhYiXXtJ;md_?qMNpQ=cP9H@ zdZ{OVW7APbM~yL90X#Q}%&OE?&R&`cI4zqIL0y_C>e~f{G&iyqNtdpO zb#mLO&AW2tOyQuib`O@5wlj`%!4N-M?cB1_9ldYP-MDo%85b~LU zk3B~!!>bAz7eK&3#1E`%a5hVaRS6|kzzC8DF_50dBvdhd+PPiyB; z^YybT6QVame?dLOUUSz4Mqg?Fy~n@mF5me8nS13{5M$4sM1?3Je(*BMgS4@jY-Op| zV|(7+N0=_FGTl8~%q?WmvvaxrwYZ6Ltk;(0-H36loY=|NF&m+Eq6O&?^M#X-t6|Y~ zvfkuoH7YimE{atyd{3jo?L=fNr7w2!=DyLjz?p=*H*ef zq^zfVr|Q8qxt`F!(C{k)eU90ZKD)2-MxP3TtO8WtRb*r@kB^o0o8^WBSW+i$BT2EC z@L&UW?n)aNwOl6iZ16&9>!pG!ZK@sbytGBeS)&rOGjH7}JsxDJ*!)|_B184t* zFp@T#?j47gT>9)BD(CO$LhZV6C%wv>y=tt{x+G6C2ghf;Mn*g?sO#EfroW6Z8^2!u zT5C|NDl#-|?VYPirLU4~`o439uA^Y`c}j|$+H&V=9m5+pB$m7=#<{t;-mqWoYU``| z;3lKaMsc2!jY3$sg!v^&@cm{-3(oZijm1jM?l1bT@`vzwnzTD%g72{l)i(PJ$D^5G z{;(Eq9Ipyh&LprE@W8@~NB zdiA-^q+Lz%Nzc5@7}`gmKI2)b1eQARegdxq=Nqvr&D#kL<+3;KRNC8i#n>Sq47pmTzV2b?J^CWh zZ`HO64C3i!ZLRlolF!JN=>IfaU0*F85GQ^pvhI-5GN!`lewjf`>c=b9hH<9FS_)&{ z6Cc{vW&ddh2rp(_81DORHIerH19EcZa_>fSj*}D%>-I=-&W{kWT%l@?zkD9#nN&S> z{YPxON*O()-fj6St@lRudpr;WtUdbY^uy$UBG^+viZOdS0B=Ew^Pa|1Bjr@ zqerI<$jFjC{h>5wn&hgp_XZa26GNLF@2cgNuD!J`xq1P+xQ!6OcU>HbILD96GI(?S zMx#RV%Y=7VFZd{E_vp{^jQ?L|GY9OQ843};7xwSZ&8ZjVhc`W(62)sbUmU~ zk2&%@-k^U+rXB5MEJALtul9&Gcc5Y9@u}yZ4z334Rlbi;XEZprthJTW4@E*09MqYA z+bDAfdrIE8{YH)DrC$*5?&R87%q?hLhJb~FLSacsu1Ka*WhFM%TuopeW!aPJA@{V( zfGY`;mIr9d1gJ}axdcnm-{ob9lQXHQtwkc>9r<}6h9IY)fcn8f8zE3X>F5Xx3m+U3 zifxvcXW7Nq5Grgt60tS77e&g-)4IiC?p2GTkV$jcG+hLKl@NB_desg5Txe_u6 z+#8ki;Yl5`h%2k8aerxhjP0_GDt=vzMf9(vJ_w~#Txzm$-5 zWC)H(*2vnyUyjhwSKCZ&`Pf=9yZLE` zuHXl~td_Q_CZ;ZP#A(QPnp!~>6?jS?th>`uXzEqk=3g8&>irEgR8z^tvAzBN{Dg zfrbdZ28UvUH#ve-q-^AqvgV~F*S^kKYy3dQBT!h0OcX+W#bjiNegF}Ox~%YQ(#?3S zXmDPl_dmT|2}4u@B66)lr$-_A~)F!LLsYG$eMH!Z!@7s2z%~QBrwQIO>1P*OZH?DF4{EH^-B? zvc_YeGYc7}!Kf*PP`+d}LK4CR(6oSI3kXy|$Qao$LojPD9Iu${_prI1<%Lr6v*j5J zi}es^BB**;mw8wRo>FMM{*1(~;f{+Yaet)fL-#0XOBKHsXE zKHz%dJ2BEMc^e*#tc1Ow_DoC4o&NOKY zJ4#xU%Z#he(HW2RDL)7m&JqGJqP6S|q_~H-UT1C6x-n2X__6H%DmUcF40)w5#9fMmw1{dD*$-dRBOTetg&1qGjzCM1k z0WXfjeFEg>G|h>Z3^IJIEB{-s4RmmQy%d^M zO)B6ON;$bAug*>%AM+@A4wpyqY?Q^lqRC6+f$iFR!Op~gI(a{u1BzrQ!O+Ge?=op6 zbD!uw?)cB|-{8Y0VtmJH(_{iB(Zuf%$)ucMnKlorrK|D6%Ntk;0Rb1t&xI=Z3~`Sb zjtPR(BY&VV{SaCn?K?+6lL2ojC<#hfFE}!AC?~K+8eQC#h}CVUXy-)||0NsYr*W_x zbb6Xk4dqtFzJFcr4-bR{1*=OuEty2ZiR&H90_*?ymFx9y-XDKW|418k#nCi+^6#;t z`wKPCZatoto(&w5yS5F1-?d6#AZ{$MzxSc9DKHY~_b`lHO&N|h$bGFNr_j($f4R-V zz()klh9_mX^_l%kkXi<`>n*YWYePqy4=7Yvr2+!{ld3vU#2zJGJ-x{a>p*hrU%G~+}Om%o1bj`QKy zr-H9lQi!`~zAcbN1lL3SA0`)qEzwwl)2#>6FJ{45G3QK!1;y@nzG@0Z@Vh6$to`iH?TmL5STK7w3q~Hb+D1I=G9t`7;(6gN=qM+WVYt;LAO=$3}im zy#GtDu)P=1;y)t~mYjE-TbfS|lXa9{xQqBnK7Jib;URv%vRzK(RA*&nQjLzJUs!Qq zlo{~`M_PQ-@b>wO?ZwyWh@{-(+?70SrO|)Y_auHE&v?2-^^6G_Vvv;^iOUS$cT}{( ztoj@zV%Z+p0kCZ%%5H$?rN!(EKld1{Px!~q=6U5ZF(~9 z?I#tFj>$$a%3J>twUX`7veDB>(4a;uW^&#MYNe&ESD=2r_iS0!PQZO|Ybl6qS9ED(sIvdptXzVte0Y^YP#KcyZ=0;n}?8$GqE{`%UP}e;uxorndWv>>|^v z+j~lQ-}NKLtI?NLa?i_>4|Az#Dkf;En!jJnQbOAK2$9<>V>V`L5qc3<9t5B|_A1fnDk z-XFJ-ZT@^4tZrl(<27V>N9Iz|MXce;$b`eWgps#3Q6)XGs$=YJUDH0C_}%5TjiBUr z%?>5YySj&_2ICDv<7@{f+6*4X&y1hFwq0wKxq;PYE%Twu|CgDPh^Z2(K_l^!C| z%Xi_Ev^&#p;fh4K?gnawuvzyoDOngdDigKKh?S{`ek`E^GC#pj#zI$n2iu;P@!Q6Q!JxN{kTs}R{+jBOJbRVl@Hyja*`I}a zZYyKpe=Zmy`{9j`>rtMhPEC$Y|Au<89arbyFR@>-hwb z$9)NVQ0vf|WP|b!hyjf(V72L-QXs&p9{ln3%{U6a+VLJHAR+O6G#%FNfZJ=-D@g?V zmUU-uc{*m|Jzcjf(KVMCBe!j0=BAL6{ru{mGAt*JEB&K1{p?(uGHmKtin#;mE8*1jHA&h^vC2BmY^O6bsZEBtoKK%62z?jr6 z=#{n8H{vhc;)`aOH8*EG8vKfU47-|1*F2G%znlo1!Uyi%<%NZXDQCC^Vb%0Xd*Z(| zcXl``Jew{+6_NNEoScN@>HNaw-45eQjEA=>6?XQ=kT!w-Ig}|+uf#}!BSfF^HA>3g z)5qH6CpT)sxhZD5rTh;~W!mS7BCI7nrx`pjA^?6BX#o$!Cm6Urr`J*--YT-onfD~K z;r{)OJ2)pNiBt+9b5l0GVV-c{A*DtpRf4_6(Z@fSU|?59n2POdbN1ASOBYA{C-UDb zdZc38QM#gejb?o&!6(D=M&y-DF6pp*>#0g`YJN!aSuj&YhO7m?DaT%iJPU(DV&hF8aK3hb-GrZ%D3i9z zFGOP>+~JV<|Khb8cBGI&g8+LE!?G!N# z8x0KPBNn624IkERF+wNAEC=gS{XaiVWEVRED7&N8^~$iI8V-^W0c;~K=l{5D2H2I8okmcA zLYERwn_u!J0iCIraH`SCmVvm?;M&(u)W}56g0J}72UL>JUq=!(PF9W0wTfO)+bBQ7 zw7HIxch&EkJm0AyV%9bjiPZR=I{oF*xe~T{d+lWmbBW>ax_+yf#@)s`v!1jA0^=mn zukFE|wz|ERnWxKNVM&Pau#*($3i>8@>&PaSHK`+IfRa>CT#b1<-- zi??W;O}-4)w;Rn2qjmhsaZW>xQlvoqyNz;3MJuh2L^E%zYZ+rA*w?$A#H=^VDL4ZB zc@p{zwmxTO2lyjHASuNm6V`Dje`(PGn<_(FU>yQ8P1%e7x>27X{S#_t@br#UYi2JU zsc_tn|F}C-n4MF*H;V(Y&;o58>*^CvA4K|mbOqZ01-69rT_CJY_t}elZ4l`~p(YHl zb2XcGC{k<`|6Q9m>(SHSQjBaB+gu)u8{8tbb>7c#^Z+z$MeLr`;@#`uXQEcS=xccA zv!>=)Me21=1eK)JNZ}+|_cMB7)C4l|QJ|Om4=#E^rS6T_J9$fI+OTO9y`uUxGbwsH zC_+JC1|5pmY9EQ^c%C?3J#!<7Eus+|0?d4K1dMp+P2s_8uQiL3#@7u2GozEgwb~@+ zhs}(`m&d9pR99*>XTngm+!KGRJ-)j>C^{DkH0yb68R(ML_G3&uk5tz2|4VniZOy-9TvJeEpLgW<6v_@|l;& zE8E~h7T4IRt81@)xAPlnUrtjSS&M|%=`&zIS~eNJ#NS2+dKb}TY)|cHiA4SR+f>ja za!Y;BRj(Rv;ZU!eZ|PJ!pLiHOlouUR5G_T6t&VZ=c4fAGAZcSR8LO-JNdN&nlM3pS z`@rd_OnniW0M2EckdZ1Iv8I-mOE`ipqE51|Ahn|0B~YCQ$}fHvpZUuCq;MfcPzclJ zg4L{kKg^nF4kN9qa7c!Qk3GYl2__@821RId7}Rf(YFD_w>8aV;Oq%GT9)`XEbWtxv8JGXs6l>O~GQhWFe-o>B$XtGtmf`S&%v)KJJz3!BWd| zPs-6Mcffz?!obG~116Km44s0>yA&TNP#oNCx&$sH=G!=~>tk4^-Rv89q{$kLolGjL zY+GAFam};Ps3ibtC$#GH&8ILW3=Pv)4lhZ2uqq$3Q)D;#w5cQ&_dDz_TkNY>0%nah z>4g^9DWj1CB1jlJD;xOI#@x&B+BycFu?&1!aj`K5JTywQHR#QKe83OVKXUf{`}aY4 zStlPnk%C~|)3;iVyTGNf_wpT9Q1W%bUA@Ieb?w^SIE5`YJn}HtYB#nPEdH>=ZSV!P zW^tXEp)`|wD$sBlogrVt2nD6h`(JOb)!gyiGn407dvJd-acV%aYGb~LD`ZFcwpY*J z-RQI08N6BZNv=fihtvkRS%Prtfmq7ZYGUu&s@-XUwVTW{EOqn9s*)qoT6@Uch{XEg zGqe9{Q%yd>p5;^gq23B?VUWFiF4g!2tRNemsJcDByyZ`2Zu=PtVumpJk^@340 z|L7Sf5#~U3t|ZGETQ9bR8Cuy7+YK3(lmSEl*#Y8(fcZfZ)oooMWHP(LWtxG9TSEdPJ-g){IYKoOuc_;@uo}`&j8DnHn!Wa(e__J?b#}f?f$d12eFh$# z$Qfb!k13`9oV)3Zo{RS@L4+*g!_`@bE+LT`K#cO0?Cr8d@Kry8hy*r zZEarkoF!ZghN=Q`-}dH(Ze?=yS{!jJrsQo_6I^k{A%j=VFqFhLHffIrwSpl3g3%JR z*APl!27Ic0j$=Yebm3A#GKyJB7Mk>+;;~8Oxmocfbw{$(rR@m!4}~Z+{1wc^A^;b= z&tL{hidJ@P97JJYmM(TtMCQQFd={FIIId@9SQ7Qdvnx8#S4=4;jdUBP5;m8s^Q{=|IRcSe z+uK+nWvok&gZq2Rm?0-a9aKDc$mk}T!{v${EiIk#zAJ*3)5oGJ9FWg}OhMx32lbEz zv9J+}8n5F4{ma>lRz0-0$j_|XY0keyvGYWwG>5o|8dq@v>#tQkpCxnC-R7bTw)K+? zt{B+hTI)KzGzMZMSE7l3xNKMW@Rx~;O1{ERd95cBzBBK|a`ZW_wp?IS%w_+krtSwS zN!;41=xM$oE5#$6Ng(m@sf9ogI%uV$pPSubM+)~v7_as%zkRcfk`CJrHCgL*EL0O! z1flNKw7>NxRD8VN_`fGl@5l_|kIcTCM;9f&>f!ElRMdJ`u~vV#BUgr4KOllXr@Y>C zXwO>8c-`|8*9II!I6aIc)90naCSLP$D<&dy3xDwMpPkv;-+Uc;az!8K{b2Q3H{6lw zDOHoF&$}ZHqnA%r!!WRG&s#=y4UBw$)Z8!BoBoRL0r>1xd@^L(g%Dr)^XC~L(9;IN z5X9Zg6Cv7nOyl;#*yW(@gLSztZ5QslSK}Je* zf79O23nZlzUYkuY;7%~!e|N4ioNxNiM4xUh&OEUmA>S*nsM7Y zUYvcmAs2wF?+dIb+FX^{zL~`06y)YC>OyjmYx^1ZZUS{<>$upf_`SAAzM(+_ZP;cv z61gSDTN10d7Y!#-)(BwR`!PJlWe&xW9l=kgv|b)7_*Dp zuFKTF=04fcRDsMGX4Q-*&B5|i(Gf>=|J~hHUfn&>?n|JC3-89IG z=m$1`E=qW$P}IHNFNbelCxsw}3g8IilsAHcs;>kZ=sEFc)EF{FA1ugobHste#OT43 z1^YEmKlo|Aky2jm6(XUAOkoE}3t^i{J_sAMn5~>}@HhzCJ+`sIjUj_5g-HlF+BY>D z&vK$bg(#W`f)Ic>;v#ZyP=H5do)ADTyawNPXz>l~tcVOP2Zf+qR&OFlwRWoUck1VH zFsX4z=nlK4x2=GbKU==&5To>W{!_-NZ(NQbhcvt$$KhhVfy5vZK+m||if{jbxndJU z`)@t%jmo#))X2PHP(R%I;L_T!xMWt}gI5|lwvN&o^e}py%v7K`WTpf@XPNo5>|#Te zxd#*h+GQ_cU2Ph9xgb|dCEXaRrmUrfqW^#BbPS6m0Ij7D1D*G800@vlWyjZ-&b}71 znU#a?RJy^J_^DFsy|PCC5gP!{O4!y^@|W0W@mnscpRVy47>76rYk$kCqcp@6;j(|b zGHr$wRNQgKRM{sLie=nCO!{bY1?O*e*Oj3d=y{`$=6C2z)Fx0!Tam)7M5V9O5|Ogr zRfI}tS4&LzRUC_*jXRMT#`3IpPPF=I+0>C;fSLRb=c8DrMLLRu;9H%;-nq_#jayfe z>mC5;!>|4X1~9@lo9?{Ngc|%89jxk_Cb&6^L7{?ja_~YWpSkqu?I3J2`I>xIdMJA8 zpwFYay{`^~zm!;=uk5-%@q3060Ba$3(#I-4jtJ177ZK|As^D`&%fa*5sNE%JhR(7KBC*oI7_i5o7sOPYX%{KiGMPzcl<=?Uu zpeKcq-i>%xz#yB;){9!^Q51_{QW(3z`7OD|a}(P9a%IXLMeoxR0HX|$6KhIWALfq; zf`)u>OPjQI>8}JFfoPrxa(xCX`LZ`XRuG^#|IY4(Tc`ILd7yN|gsN}Z--<8fOTyrm zk?wI#p@pFv38GaOO01C>SK6Rmq+Dn{&+_tZuV#~R{GkIEnxLn1#6tN^ToAr>r0 zfztt$CI07m?%>bO&Hcwso(E{!In~QfI@SH7qrDnr27YDl1mxP>fC-NnX81fJd#~b@>LVTRA1@z%~63{n*QeTgb^H(o8;Uu zH2)J(;Um`W*VFLk)-BJlH_WUCA~M@>*O3bu)7rV637oW{SpRcmML2S8TUFw$_)m42 z7Hz=VX;-t|*d_Tdi<2_2&M$ofc5xB0gzc6n4rKrA=*o zkkE!1-PvjRmAsIWs540={e7=6KBVz|8eZ$f#ab^KDaQZyc8Xm(JpVAwn$H|2}qj z!BHx<*sycT@@FJM=b@xptmqsC+qbSni+&>Z_d5>tgFqk#ye!c_U&o*s16@_1MBSYZpY_tgJ^Xzt#MHjI z!wz~t4@|L8;vfXPn=2+8to^kfc|AipR${oQJ>0#sDuOEV3FqLha+TH@&oPqx6ez zfGyMe;16iC#F{4~EzsK4dLSSHs#w52v+gWL)d6gWd;Ks7Ocn(r&9!nQc>)1@fZGwt zG{p2FaNBCk!F(NGYwZ%Hjcnwh-@(YqXX@MaJ`2>K)<`OOSD6r8{oGgHAXLS8N~P)D zw=2^CzDpoJbSao^nNfEyYwmd>ok~t)+x>BR@ukl422ud2+M^vqZuOVX}9!(4WC`VDgydqh;SQS~YNs3I0)2bQ4aZYT|~A1?rUs z6Z8OvEa3Bt*t-#w)`E@`)`Ib;At($xoqu>H2-aT>cm*d@5Qy#j0wA#Eia8FDDXiN^ zujh81kEb1qjqit5W%<@V@1m!AZL<9!jgrWp_kPG|4D1@QhL%QAQ5ijDD0S8+m=yhu z9yDOI2AO1O-_D!3N_;MK<6Zw&a<8~(2A2^`w_U|I|8lyXZ6?-7V}J0ScTF6*+BW;BzAli&4w=u$M$D@Z z9Vs_`X!sqa7HCKH>-)yq}l&zMdq)^bgac3%c&kJX+D*P;jdA-2yJ zLj;k71|!rqoPtwf{)07JIL##2U+`z#LX20XjO9OAqTf`eEq>XJ&AtzQ#Jv?sq~24| z3O~3N;`(x-LVJO9zq2qghRQ5|(t@6ox>e|bJ%Ct)NIHp{@<7NJeV+8V6%NQN0db)R zbh3QiFJh~J>d)vC9Vvr9EjzNC|1Q=r&|NSXCzJ$H19kS4D0UhIaC-9EbDMX3z2Pou zA||O`^gxYK=0lkkxbz3uA9H~$aOAMP60OmX?8H`#y>e=iGY9Mr)}KBqNa4uQ_pj?*`ouuI+uB9kaXWg!9XBQmo=z zO1RK0>a`w^qMt|Jzu&{j{e|!xDwS37eqhrr?ZDCF?^sS56*caTf*Afi+zeYn_Kp*( z2i{VPvAPe+=APdCNb+%m4T5-z(luhW9_|z0=ZSR9FO@k$D1!s5XLxfi{`^Uwt!)A6 zOJ^M8aQ}ZC5>~&;Mn$03S?uM96ER~9@%a?EW z4%QErvW!~jKlC@DDwrt8Pl6|$Fn~>PHE96PY^jW` zMb&$+D4IGTZG?EhtNahH`=**vx|g3yc^nAf0Ir6202myZW`GGxNO=Ii*O)?`BQ(P? zP{}*+Yw(xpQaKqeRprR?Q%=3_;04ooiMXPeNO^1-OX0ysY%t{-=^w1m7?y0;uBCfu zn$}EAY_x%Svp!|b<<6?9cr8nf3#l0S$&oKpliL@6+=KMB_Csmx1v zP1oAVQ*T%FDL`}M2fs_$&JzALRi(x&p(evcXTEnpdaW^p_g-BTXrI8i(^;m3gso|% zy~>+Q{__t)@ZWsIcvZr&p=`UHt1vcOP!0?Vn$~p&&F#AJeZOU(8jK)Jbv3T_U6yNgRnWpe8RYW7L3K@3qx^!wYAcMJ>VIO3@%Y-_9lPs73 z2s{$Nk}LtnTl^$E^50_7nAcip_3RAL8Q$WA6(toEPkgoLffsJ#;mZsytzh-;tK-0I zdOM`;e9Z(-+zODL{N3PcyJrfectiH*004i^^8moIBDbGCb8<9tFKp~VxD#_%;&j-8 zF^9+YJ^Hh0hfD1@sy!X^qKQYX$1L|Bg%CDL09!eW8DDy~A^K6WlI{x$mY~G!M);uM zXlP*niGvxdP`XGO!720Ps?a|J&M{ z9#7oOQG<{AzA?zq3q?fJY4Ol?bd>$1baP@YHRn;RQ4{4EP^Xu=`&Ax5ttLQ=gpO1) z6&H#WDw;q~Q4T|OCV#uQ#7xKA>6N^x{&sSL7f5DKNu(yeieLgtcMs6a6kv=Z(;EEa zT2z>Fjrh%5z-<8W>>=`W9Wgr6KR)*&{#v`p(Q83qq_SFHF|rY{1)90wzLJ@-9#=Va zJBo9`9>(rSm1IuhPZ5U8&cL#VDbQ=0J(keivn_3Gy>;bago z(PPFS{+#G-9don;6S#Cr29rxpN-!HgL z?;>G*rt$lD+EZdTI;O=($WtkL9yYK42FwM_wO%pmHpTVI&TGx@OH+SNIn;f|Q-0ej z-!E5irmN9=+MbL0fb3lf(#TtuXQ>!fKKn}pagbaBd9pnTE!6dszwewq0hnR2Fk;R@ z*~MU>q;qMNDGziY|GckPHifqJ_dE1(gPgGpt@qQ9DW_*Lru(}qWe6E1r;4&|tyJV8 zl^G}ibd2;_96g$?ccWX-e^_Q7yBEm2^Ic@PNQ3b;@JOZKB;|(kO3Re?3{=WN5i;tN z&W{?htnP&|Gl~7Urq8U7dUZvL1j0ovi%S3GcM}3@#{?(zYr@55YcIo=Y&46;QOn_( z*JYczcuMv8=(|a!=6G2Gn| zz5#ikEkhsNyZ|NcIU4l#^((0Xx1}|@5-+$XtoJ}#IRpuuqWB1LXE$1D)#~yq(ax_* zn15*2qH9k$i5Gp0i@-nRQ3EJqu?jz6mCYa|a`u%Mn`6GHiT0C-Qknf3`EsdKEyfq& z3DZ0~-GX(!`|_ohk5?%OaUcP1vOzI861{9k?*@Pa+W z8ThE3W!*}r{P5z%>O=}Nj!#QY)+)C3L#q!MI`hqXpW6)Ep=g*3mRP;GiZ@5D;Wz^i zH(Az*v2l6OJ*MtJzw67VFn=_$ZOH;X}e z(JGoe8kzaK0bq?~kU<)j*=zW+WvGamahgVg%xvQ#TrN;4?FcshERY1yPBgM9M|Pf=h=Da8KS^Gk{vw zDiQ=c_+Uh*BXQZ;{B5j#kgyAr?Q1&Xlq;{O=s8W`vZx7xcxAWv~z4 z=%Es$y1FdMq+HWn7Rtay8rKiD{BRHg1fHDB<-TykhMLq|;1?+c)v?r0iGv9Z&;V>< zgEqo#VWdB7TwlEk3Y`+{u5)NkrnQ`X1TnaGhYt#KmJ*$wX)4Lm$x2n9Zk~-=Tf-Wn zN}L1R+gxH?ae>YnM?|H9I*Xoy#aH~R{q`i^c@kD!G&*N%z2;t=J#cIM@bTvS1Gz7= z-h{jR&SwIy-MXdk*q*_9fs&yY-qlpkx{!VOtrJd1`VI*OR#mq6_-vqkojiRY!oKP{ zKI@)P-_?cJ6#goleU1Navua>#Vz$hew;z$Og%TsW^xst9k3R*)u$8?~k+_+6FwUNHs~*tZGku)ZVZ;i8?ZH)X30 zGIaIDhp8zf?p*aZ<=uy0PQ`f|kwH#;Nf7PI^qKiQio}pd=|@x`vYD~1-)s*+pNb$* z=j^k<#M~4L+u2`#SYSQHe`sEYV+#0a z11qlo#R4US9Z*6*Y40bjgRJxoAL$oxF>nr0zCS@2zkSlA?RzDVG$4!Wob4o&f`xn`)B}g~s0-MSNz>rc zrpRpYt4$Ox!v>fq7JlM7iW)?FtlJ6_6-C2}V`hi=ec1}_$z4{%eM22%c zd-DE?E0$TdY92w)Og0-`FI#(q7-!D7#vxKg^5U)bhV$XwO% zrTyLUs=N2{h#EDmEybF$tP=4P4t7V61a^cT^%T%kUa4i-EL?DNISAt5q&5qK=^Ff1 z0ZL>p5A@L5sefkn4YIl&f1Ls+oFly6$EPO~no?XTZ@fN*j(`}O{@UT%RWGmwb#|_Q zzv9}7bcHDvyw_#B_81FO%rW7ag;qZd?8K8e#26pUi0Dz6L5T+(9@#W-Kq;l)_x+}N zu9`?aYZPZr0_c*rW3vma0isdl*f(%YEzxC`FJV9j)($lRb2+Wq81lSqNua9udbcRl zX50XnU`eIOAhHUzPed_o4m^p~xmIWe#h@<_2Pno3`YhZ|n+M17RCm@zs{xK}a^rVz zuVL(~eMqp~Pe+{N53lm{=_gHE^z^FeUnX|C03K**XQOo7jOH<%IA}E4-;t|@(~TQA zf{tp-LS-WO_=k7q6B09fIb|{@$|i>hr@doiK=qQ~EH+#G!fD_^ZR5JK{Vzi>kUnu* z{l2)!wvFs?GsgU=@c|~39X*j!!oRm12JtW8z8k?DQV>p5(KW?LzOd=hDb&UC?RQg) zO~zWcR{iZSb~Ql+y<1|YRDbE7oy&D+r>=ZXg-_gBtXR5evTvCkly>8{)0u0?`QyU$ z{g7yThx(bfayL_GyfoiEpR?Icp*z=O7U~r){|iU{@sW?cUNE7etdYsJ+&ZPQDUmlW zAA)p9E7zlcyKdk9<_ zQ}jD$j1$75I0&VMXF(}Sey$kaWd4^3>|BD;h5OF(oirB|qEQoiI8NxhB~9kMG^J}m zwxYANxOtXH&<+jVj$g^yeD)1SZKod8*kgVOgR}@MtX1 zZuueZ*W{PDj8UY_R=xJAosP>=(VCZ@8M9X0^z`8qmxirtZwH?|R8ZslPgR1pP5I#5 zk8bCEecmVEF_)Ee@dbXd)2tGTmHhvHZ@R45dshp1gI9X+-oT?b<+F$N9GqZR7{Tso zBqX?3XM)k@i34A6iL%5&me2GM{wpPNW=|ploIPs`bM?-TmrK-TJcUdS9j3;trD`}l%r`C z`17m^3`{$o%8bhF9kPFRu=*IsAgxw5++e3Q?ue;SG@q#f8T8W4*_RD4;w=>7j0nS2E~pML;=I+?NBI2Ko^6 z|BknDE3fFkMSuOE7zNIQ0NrJ>Mjt6p7j813mph>`*=Rx~C?{;&>QI{Y#J0iiy&@;L z+`tl=x512OjB(qVLziKX02_a4)m_p90w$L|V7)QGMrCp(D@ofANOYGoq`PgZh*1tm zVy2nh%zj%lX~c{WrkB?FgY9*jF79m%Uiuwg?CHcl7@+Bzdi3*-4=@z}K4`X|UEf-- z;0R?Jx+6~?`YQ`UOALL%&i0P=K;%!{6X=M@PokjSd(B57X^6+Ad7I8hn*>ALuFK!P zxF_D7k50=8ugr78zdIG$X}A{$w>NpP-?`&j++o`l6vK$8K^5VZoCu!%g>`MZ!4qt^Z2-FWd*dJR}C<_zSkj#M}8?B=cW#! zu=lY&4l#Sv4%(_J^SHUcrPp7qeZQ5=(bTq>5kTmPXdl9z!`RW?b_*AR-R&GZHbArZ zpL##nhPw4fi@v>Rp}~mEQmaJBvvC8(5_PM<3Ws>p-Cz7TQ&g0bitu1faUl$yD2wTe zXH3h(bZs7Pf-G?V%BIowyX{Y~Oo|WG>4c<*mtr{~JhP!NGWWH!PX_`#?H{wbU!gfT zZ?Pw+XBU(S{B}vFbO_0Rk>fGP*{NB5!dpZMK~2q z;BLHf)V0Ur>|DWtfu9)V&{$R;m}MC}_If=oRblLY(!)EX8E)l`e=W+~ZXteqoPo@( zXz3|MH%Ejw;v;O%L0isdB=`kXin~hB?eOp-S97Ma*g8=*#p1xT0n>$=7!``#`_509 zVxhnt-&k8*Pq-PXEA;*5=5tR2Cr%#LjpgM#2Fcx7p`3tpBO{iji;{_XqY7mr!^pW4EgSS=V> z;=EJ!4C#$mYXm1vH9fToskpMl5OwAW6r)rfo6dG!4m5~4JHHJN zuY~?dQ9HU!l=Vja?Dj(L1kX*8%g{@yj5H1)l&&ZRnyV})IrV-3vSWjSD7u!yOqt&~ zAp_6NuvLM-CC05^W#7Mh4d&!=4c%(NlG%9@ z-Rqhtb6kx2J4kC>k7M-JGSv%lebIUi2Iwi9Fsh}}w8uT_%ik><#NsHP;s4~_ektpY8j%(HqPxo8* z<2Y?XTtY(G{@Ia%TbAw|2WhsqW)5GpxO)HOWUV~OYMvNr9{cp>;R8VL)PvW+q(e~9 zfH+XZ>7L+MG?|W7SGRV|Kx-!;?afyX6!uNs+dM8g5brsp5`&=#WvAFzBd;a$tQQpf z;8(8(SG%6om?wy(&u$(ncbkH3BRQLnw$V*?VX9jYYVomXZMRRdP^lDhgXWxSx}BLEF80h4pU>ceR1r1F9?c?y;H`+uNR} zlr}ua{xJxA>zL;B_>oSjYE$ooe$gdkND1L^bo5Gad;k3WaQ1Q%pN~#Oa0MLU?Yuuf zGcybMwY*Hy&EA9FJg{4@R}RZCH!3TVP zpNUv8tEhCZeJI#g8d4vq*yvvM4cR4A4bJ#07T1gkKYw%ToJLUpI-j@~0b;k-8-93} z@3p=6>?K_`@=PJmew70^zXe%&N<&GOn0J%~8Y*sJ3mcOErcqTY;tyO$!T?LbuFH zbmvBd#1+WvjsBdkPECmzx{;Ytn~`DZhJK)F|E8;!Q~KK`dV1Uw2O{hLrcE@ zNtBRHFF8c8O%@^^7W9o}lw}{!ixp!|lsI9ZDqdq2&-2e$RBY{3?P+^_8`%*7QT~ zY6U(1!q>muRn|JV!eX=DDWBV3qq8ts*GLxBnO8OP*dO-3i#LXt2?uJKxg$QSwLU## z*p-m#6(qVWy0gN_L`DAe@?;qDS+kz02iIooS0%gsG2*G4Yqn;vg(|~;OqL2J@1L(n z!#EUNS2^N>y&5dsgMRXSk+Yj0{`@E~hcvl7CwXi-2ZJ#t7^Y4sO=UiJTW++nFj(4(KJn9kW@WQz zt>m`VRV@4}Rn~-!Z!V!GzFlabX};7}r=vU&2FsizU=?!)MOi*tJXY>7vVW)`q5KuJ zSqtK?n<<55Y|jLSc6sUt!PD~Uw=B@bV;eRNr60LDxwgGxsk|?;1#8xz#uQ zd5ZP*6{a+?i?naLGUT5kn;s{gPK;apw5R-pbrF4x@H@vAn(sbd{ly^p7!eeo<>PSz zIMr8sdbaZ=efHD7(Q@3uzmQ%$K0fz6m+dHr)AeJYNJQ;T^D7>l4unYMyiyob9e-y& zX@@(#w6nXYH;E6e*2oUxvZf(#05$-$ZkT+D+D#~-O}!oe>GBFfx1tV_^B&*~>v7`I zUxnaIy4uvwUi5Jb!y^rAKbW5X`+So3L)mF7qa0!&ATCaITxjip1&GC!NiYSa zv+;~wzq)sJt~ksMSH88xi%8lJ3*864s-lO-7rr@;hUh=&)!XFR>$Ne_b>>!qZLO8O zT18u6vfFe$11>0NKr27Sx8<_L-e(!aG{^kP6_F5b2 z%ai*b?GlUYA%i~Lxhm6SrEyMr%|@{#;SVd{I{jV22aM$HO32TC6rW)V?VT3?x_Cv` z=8@C2)yDT(U(5b@Kt@~~_wIV!)ITb^H`#UlSYT24GXi+|tyveP9g?iEbdaJE#DJ9yD#x?r+Yt4JrCbW%E`qE1a$7z1i)R@RRj z(Ly)URmO?T!eIuAe4KOv+*pV-`1{Qx8t0~u9L=^^=&10ZW`(c%uH8}dwg_#zx?&K2 zcgiWmiHal~+36rMU<&99q=;;>Y3meD)*Di&vGYgL;LFWKb?v_#Tg8&NxR_scIt2#k zmzNAzvd-g$q4vXjeJ;0AK!mzQC++6u zr^mNlw(v z8IDgI!{{l=CYcTaX`nD2gZC(WY0$Eu8r!+oxb2M>|3|p1$8Al&XSrd_PWlV(yMMbKfqWeC%0(oby%B{NC0|7@1p)^llK_vwj{A9DK_F2!@ z;fy6yKY?;n8cr+Ye>gqk}D~e8;EJ!ttcJl?1hX}HPk}Rew4u=&SE0J>NI$_ z)F?wkpIX&EeTnuUfTuq6=j3FWd9s-Dbz+orzelE3Fqrf(F3GpE6m*To7gq?&jq*cx;^76OJT?z%=1^BH!)A!4*fn}{4=(pEVGJhk|8ny zio{6MyMR|VLhRqX2EN$5k=(*sC?js!JSP!oilPJw1W^zBQJymR8~1Ewu{wty^1_3l z#eLiGA(dZI<*Ii}viT^OyTC1wIr?Mn=mEhmrec36{ZhTaKw!`s-Y>ePQ=~&UxW!f7 zU0A}~%pK*MLB`tN=yT_aTUsY%;w7eSV}pRc33RU8W=glCfPRiyQF$^rW{(4^;&Zt+ zmb0Cn;p^(S+q{8G;xIIlFO% z2N5A!qfjK9%;mD`^~vrHhI7gn3P(o^mk@|`H6g`9F`1d=LK$8YQnUNfq8OT~AMoOc?*o$0|*_1_J_5sb+&-JIvjak%tNVqASJKDI&__Q)-Qq7dOyXp^9bWE4sgpo*tblfwFogCJA+w+wo46-4eqhRU z#4RkIo|-fE2x0N{gd1=5MGe|a3+5+? zN{2b+Yd>U=Lnt%~9c1`j9JQCby#4cE$6JQT;NF1G3SlU|?c)nno>P(T9973SVEc^{ zW#e(Gu}|<)u;15->-khwMq+&94Vvmty;_crKr%EtK1ZFxtk`M>a38xrI+a>aQ6egN zH4^YWI$hJc_eAQL#J%?S)T)Zy6AQTCUM064Jmv3O`S#+>fV(p64c=6DhrR7}93C&j zVE~zYx%{^PK_BP0`i$G`lN00wfZIL@I=xOD3t=g{Ciz!e!L7sJ>!`~25><65czWY~ zL~SAVC4$r$=W~AGSJ80hqbOyr)kf9f^SgKL>^fRwEnJC{+T%*%Uud|_2l7hRE& z`>s?xul99zjrt<>Sh=Ns-7&)_%3i|!X76)}%qncL@c%@? z49O)79c75jUPj+6YQCG{7H^J#yv=}_=31@Q4^+=2@J7Z{lx_?n_CGp*`a@IrO!iZS z%s6lNbqH_HXU%&u*eZFX15}F1t7Iz5^ZZ2UfIqjiAp#b?W&>;$#hb1 zY`@0%@r@f_K)tHz?e|5L-%T$JOg=4rX@o0_o#BnV)vJan-RjCenI<|sJ;7@R`tGuI zKjT)TG|Bh5Jp0{ua)`Nk&z#vhB@hND-#>Fp8H}l<3i;4#imyR5|; zKJ_}GUhuJysMzT@lX&MQ2t=C0O00Zy<@}uWMx=P|3IC;{;Uj2td%0oB6MOXPpW|ZD z*a|JTw|{^X!OhUEO9-fOqR0Q7FG-t};F@I%l5;b1A46$Z9+nqJlr{uQCsYJyu2^n9 zf-iA=kS^!{t!ABDK*JW?%Ujg%(XPuxng@>)Wr3OMYP)!y%~~6pe~1-Q7^4Xomo`aPCx8H0o3Xve zNi`TH1I67gcDHaX28QQ_u#xq-FB8SupY#oVB9ZVAks-$CPb`NxTRy2((F}i?0C#VP zhrVqdW9xHKnWgdSP>U4VpmIWKezpvvQgq8I2e$g4<*akg=A-ON+&^y=SRFcpk0v*W)WMitCI8{+JK>%70kpRAZJk!Id)+QEgjewdoOlSn&HPWe<=#s)32t@-WtwQwg)F+}oDfooE(jeSor z#nY22b4!i?=2#a8-Qtv$-BnoPOSP)udSU7Jxkj<>x#-LZXu!CsgQ21cnlt!jkjdFf z(&d+>3C*fTlRD}A5Xs)kez=+PSLBpdfrlbB;#iF=dHM4Fm=KITPF>BK_%m;0ka5n~ zDg!S~;iI=-Pr^$ZLQuxMcRP)F!9}OOcDnlWaho2r929)Q8*t+17lAoB*myH@=X!8= z(Vy5QlIT5X^WoEQ`PzG!F??%mEK)&Wdj4Xyt*s%rePd{-mbN`nOX2#k!$#BmxeDGj zb{`mN{mkI9SVLO&@dN2Rr^r2U;dFk%j46OU<0gl6w3g~y*Un$`<_$TXA#2CsydJldoPrKLu zY4xgp+KG;lLE>^N;zY64;F42m+;Mm1H2a>f)My6HLj@wdRcp60O>`*xNIOJC0Mg@vgVN4%= zQXdg>`>_T)>EP;_l^9n7pZK-koBzkrdB;<||8e{%af~?1I7A$ALnot-BuS-e>#0y(cA& zBMt#9q;EUPL@7IIJ98=Vg(D{LOUsq4>sitA(A0EL=q(+;TWq8INdst+H-JW=h_f_* zD$=h2y`E`-0lNYq23gL=@gse6<3_Jx=3gp!plbGwC0_^eUS3!c-efa+>a6z`A98;} z^3gv(pr7C+>LO5P`^WpOXG@dSzE1l2c@~ty- zgJOYT(>r%cYbPHhBt8SjxA55R0m=7)0Y__Ga_)Ps%abMI12JawyT%Q~NRmM2lp*A< zBV*w%)9bijf^EWJpFn6X1}wAlH8gy->9LuMR}8yJs*2hJ+E9F7=Pr1s>EMlMI&(`T zfmitKA~)_5L_h$1vhrLytlZbfV*!N2NZ&(;W8kfb=2U6$0BFk!^Ive-!r%4U84u%H z!b-MHLEN$?j(_U5>SVd2qWnqnajI4I;C}rw%@?ar%vy6XveIV| z#P@yMPi5X9e^MA;=3U`fI7G+SZo{%t|j&(`AHnBdqP^ZQJY~UVGVyVPH z3{l!CRY&>mm@yj*9{woC3&VJP4j3)NShh*aWJc&5r~x{h5$eyhNnnl;`VX=UMxYvF z$67~*h#NRd%68%YOAthz{g`k+KjX`+veU&0LyeynNXkx+Vh?WB%c`zwYBE3E^_1np zR=jVAbl`|=TDDi@2sJPNrF4yJh5lPVNb?V%H4iK=k=S}(l)3tQu~{KBFWc7;s)l#B zT%*Fiv(O1`r-T!DE)B%;tZEmIMMulBP#=&5b&fr|n9*7V9mE$A=t>QJn!xY72RU&- zCmh=E2wRbzO2>Q_Oj(s}E^`*sSX1gIrpRV0iY-qcB+pB=e-X+8Mb6&jc zqskW-Mp+))yhiT_ETYtx?EUv1o!1gs9uD-nC|ECY8SbQUxXPb&J^b)W-mD<>fz8)w ze?y*+85gYce=$=H&#q8>uraW3-+z$#yNXbs%w;+WE~u1&3p~mcpB`QIx4RR-`ksAa zWA;Q9E7DgG&2PXo4Jm*Kc!N8*Nrqcy;K0a%}@w%c9h?@$jEl<~Sy(+&mrBKKmYazmHQ{ z6c7VknYwwd zkH)B)r|l84VWff6)o-Ykx$UKFo9~;kRT7h7>0;Ms1R_kB%&r!4~q|!3-?z{ zoy6|ATCLV(t&X#@{kubr2uGSdNjqlihJ_aEu3aY-F;W_$Q3)X}t+X6N!w;~T_P2C; z$R2W#2DRTLDm9J0t&iybUYZg#o>SN!-tEntT1Z!8cVAAH)1NT%yU{ekc zz`E|J9Q>%M3`TIM(w9mcuWd;5O!E;gMHRLu2Y zO0?4#q}ZqrvV(ojxCuoylNryc`BLp&veVR`o$&1{(6_! zeR?X~V*{mgZ}hwq&xUeStt1G4PD0y~aCFb3ZKxm&5&N3@{vYh^W3(xz!Mz3eXhyur zwo2p>loJ-e$$lM`m7is!zzUvgl_;&~1(F;x6pzv=kL_ARpLgaSEtZ$a+&xj{D~)9X>KL#v@|lx6l65qrc)S1Pv`| znAqIBkWxM4ur|<@SJvby;_7`!_~UUBx>h2@c;MqXTO^v9s|oqQl~*$PgzywvUR6ck zJ`tI|u9h&W7j@6njVWWv zo<|*Q73N`NLNGNuMsU-eMf}afD>keDQB~GA&tCRddUfN(qhMXej_;PD?JY*i-%PEq z#S#YFjs!9U%}G$%27a2#{!UvUDJ%FDI=8TJNM9xS?pt)%R=S^j3~9`ZvWDYgr0=2| z`+$GK5qzzBLZw87hQ|N9t>2%9JGkYlN!rF<{C7btf;xIc{jI8nONTN&@7uMxIZ35? zrQS;9b7a-JPiw%nQ2XHb%8zP`D9ts?>qOzKaeb3YLnXSU(hcpg;f%mVhW>b32^ty# z8BuXCHuK2xapwe9s}*2cn#E94XT65q!=e*H;ta4|p_=1AkD^xl)bPB)9KmYKy3#Gg zCk!89VB$;SC%yex&l)_qR@K&|2&Y%4pB9iz5o;|06-}r2az=rKZ8ly}w7Ro%gO9yp z>YOut0=*cgX zgTUGAl|H+WOwB84jIkg=?dj^CxF-)eZ+k?Gl2*DKRSiB9d$q$%$1C=(y;J#sofSpWBq z2BR!Rx0@BQ7TkpdyC@7bbtg3W(W_5L`5Lv;{m!`67 zq!5q{0SKxdpS^@y5R6d4cer^0@PTSIVpMLj4GTOp0@kfRSn<)QCC=g}sBy>=IwE*i zy|?bczJVcC{W^J^(=9OH^zGpM2p`r%yT;Xj6FRq&DJ~vK1?C~GXN0E+G2+vGPcvlh z@cWoMg?^(l6jqeZxKK1@H)me~M{p%lLx}_@S|lF?`8e5pU4Ff|7<{6$AwlKT+m0N+gR%^WwkeAfD5D zmo;&b?)&tBCW+0lvDRxn(g^+fruf{;-OmX~@9A<29rvk$3Vi}ARw;oyq=N-jrEQ>F zy_E5|3Yb#PtoOkH#rRtL%1ZWPg9+Jd4(scg%nEYKpKOWF=_?JfxpX-RareR}oPX7> z5+2T%kgQVn) zgqWA!NHP;D$&$|eDLzVQW&h^z+F0Q1uyX==&>3=<4pn13=58hE_1pWRFwn-un*Kz?fc;+{+SS83gBNU8NB)9mw@b0gT#@ek$l zBK3B|pf`W9=@r?)MZptrR)m4LoEkASuB>V=6!r&5nDFR*?;D$j&IfrMq%^bvM#U}G z@P>jW>81wCq{M5m4&Yd#QS{Yf(IHRRtg1Eiwfud8Z=UNdSujxENYJ^#@Q#n&nEAO*UiF$gUa%pD-_^J zmkpnYB7Ap$5Jetrtu${4`qa`bWXvg0kHM!zsa8@5L7>EB3!RR#=H|1z*mq`9e+K*+ z(d3mw_~8q>Kta0#PEqBO!u0>T=0%Bu)Jf_w{)O(YFW1KA>&z!3|A}AsRUZvX)_JUN z>hdL$a44M;2z0RvyKjLB!E=#qr^~32+HLVq$wQmp^VC zq0XAh4r0G2I%m1gksj&(U6f1GU#et0&ie?6ZxzbknlcPOGPtW9d&Baf00S zK%?3^Lw?|bl0vDMq8vO=8E9MZf--{gBzj6Ywi4>oaz82$sZCsqZoH(^97ju?h2qVx zJ47H$+YTHKL+u6h_{KV%Offo>Ceu@AB*fm)QAbPWeB~*4EE3qV#HreKZo*^qPW`_* zL}|XW^U!@tNlUg5g)O%im}$KL!lrb1L-oWy&+6}nNBB2Fy%lA;jp-IEJ3A_m7TMG7 zs8CS2%JCT>7TLg7D?b8~E|V@3AJ-(dA+PyB^-*_>iQ@w$GVogN{ivb8f3^(lBgjWJ z#z4B~sm}Xm;!3(=%2!wv^oDT)eWsO3Y)Z5Oq4cu8p>EMtoLXPxfUybXCUwl+Rxx z*R;&b*fj3p-Sv8^Cb;XB!EB!9@mK0061gmmT8?oGimh#~?bKW5jJI9Cg~_MC{PPXd zX((uI{bBcZkL+3V&3+aH) zyi~xo{-U#&ZZAF?Uw}RoK|suE_mZ0L>f6|uTz}R>h+y|)<&kJ%g1e3l z4L&O3?A#CKhIQxlZuGkq-jJ7m|V&tmJ6}c`7Q7&}|+XH9QSGXy@hV zTB$8d-3A|m4B=C_-wO!Z(zODSROPopJgeZkpj=;bP;K@||H~vl7s6?wo82{CmrqY> z^Skh!5HlJ&o^yj{%I1AO} zc$^q>3vB%}CZ7L$6VH#SvWT|2QZAS&7tB6OGW0eKKPZni$c)@BE3i6hBVRI)$$W z&eA^|wH=%H0%+y*@-i@4fhrdVL`yO`g0RZe2Ad8QBI-m%r8I|^YBkw+`}XFghxM;U-1R2c1+<@>X7`*qD_xdzvW9a{ zmh^&Pz7o_;B14522tzr+Cx;g(!XJf&5dtBa&FW_b45H-&LCkvl23r@8_5fL-pxD=; zDMdTJ1Nb>;en+Zy>MU!FJl2NQx5jwQZNnCK3*2k8dTo@3O11e_-X$hJgOC2-tYCD! zW)AL76kyfcw+hfIH(Xm(0b@peK1{I{w32aojOWb(+dDEZKZK>y6u%nyDcJ9)-4H#+ zW}cd>lyC+95-rn21DxbCHN2n4z30?Yn_qTm9*DLa&9+Csy7<0J^UQBQL+PF4%=vYc zTMzFQ5_9CY3b4aNbmD{K-p|`Tg7rCzjU4R6@zh%pDU`9U+@y6I*N8tyNA*-I{|>1H zXdp`j?ly10hvQC{-s{82?m63e{Ni)Yan(G4NMT#jQ-vnf4G0tR1(FxHboeKslTevtB zYnDLELn6!E{RS8UA(jJPP;$_WbpKSYvg-XQ9$U}G+N>`5opxsMDk2y}C@( zJuIw(%>fZH&ft7lD!Ov2#Tak&9I2ZC8g|V#3+DY|yyCyA^qYT^6>Q?h1CcC}GXyuQ?*23wMVqPTXjWQ``h3WxM!b zHa+mRR#pHf`D@}hbTb3`0nj7L_&4Rc#U|TLK}f2}b@iNANn)>sNML5;FN!8N^Ar^s z`i69PM>smW-}6e4V!5N0A&~ zpg$tIR0jwiC%fR)#rxMdtrz};*YBbXU2ln7*8g+%If(?pN&2hxq7wuy)=C;SDoQ46 zj8EnxWHHYIP8JuAy0d^#bxe~p* z+Y|$syzVjH3U*_=DhaW`l+_+Cq@`_gD*+fU7h_`J14MX0gdHX(m>6TcjiEZ%@~SI# zx`B04iCWDKkH>_bATLa5lmkA=OX~0;c;BG??AP~w5B&kPVub_%)8=MtmW{_hr7I!9 z~7wiO|htGqk^6ewX&*&XU_3A(g7Zc{b#KUJC6&pZJ#qEECDra@45Qgo=}qAO=3?ejHEm&;A!daJ&8(q-^VAEK zx65szA{sctuUix=0R)s;1s*~2eqlId799vU!09#VkHdfV53XhfgMs{ua9_dlQ+oHO zm0XV%@HxT=oqES_n=;3L00!bI(*JHDJ-nQWvlG77pb}Qmsw0s)vni`lZ3EuOg!b8o zV^kpKbNu5+;{%7&6We`p-cMtVR2NFSS*_lcyE$$$X%4UNZ@8wfHW>316+Bm5Ke!s~l;eV* zY`)wkq=0(804mWz@n-!-156Glp{OW7@CcQEj}X5Oq#Rr>wp_gChW$u>L;Oo9@bSImM@gl!_-xWtP zln8Q#`*S-xhL6;beh;Y<&fDA7Mf!gTS89y6B~gCxJNVi9bK7<0>OWfk1}N?AF&qEy^AoLSW5&UPM4Lvx zz6x7(0kI1L{q%Ok&c%T>^e*U^Z3vH8l#&mlrv!QHx7zR81}Q@#pF2xKaRnt{0B+P= zG%H&F^C}vq%*)E&dZXtI;9Vt+mB>y-b;-s{huZ3=oHE~E<@pXg$t^M`Ey#FZVp!6s zU1%)SKQuA1ra8?07)$|Xb$NLY0zcMQ?_V9LjEt-enT;Z7Q2y-g?Fs4df!9Pu&)g_^ zVeHwt6}S61jGDuOTG~s4p7YAXRM+@T@O8pNu>4n&x1b^OS{ZP^JIqNC=XHSo?!aM@84`a znCD0(Ep=sGKI3NR1=)l?Nic*L4tq?NmT zvXflQu&`EqP=Ce4`p(#F^{^6~f#c)JRI37~@HNqnEp38bH@dHYH|>$lefV|AI~d9P zO0%iAX;aK9$ihGv`cis1@Fk^GJQCwjl}BbVd%(u=bJ_W^yj)v}^g3C;P>I>g%x?xx z2myJYOxexe-cNCC7qxn`@l2{`$>{sdT;_6hHS{IOGOKNMA zG1>AR`o5CXh_k8r!kyIHHO3G6Ghvt*uVCx6fi#qvz2La9fzQ4j=WFzRkU%`*A9=kqu35Z$N`65bQqb{rQK zRMUPNHkEA$tPg$Leed3MxUbTPyR(qzFDY(O*+dZ=5apkA%)jK@VcFFu#eiG8%;L+6 zXmg+Ik+pP2Dqh}5|3S#=IdC43&v98F%4v1=`b+R{1rrOn0$+OXAHZY|kKefElQirO z<_)>xgC_em6jsDAHuz!TK0dC(B%s&%<4mg_-+F3llOry^zuz%KB--2Bnud%PoaEsR zfO!!-eZFX$Wtf^x9~CV-K6S>MV_9BjgBf}5TsYFeET6Wtq(}07brq=gFOVWwPA~?m z+g86c8wZl7yRQ9F{rOiV^siZ|^}|CQigB)Ok^Zk08U$pp6Wrq;x)t-eN53=a`BOHl zu3g;MPlam^#UAU(G`|8Z`NBM?y6!2-kg{f&hxi)yH4tys- z%E`Iw9|4dsF1O9#l z?N*)e<0tOkt^bj>x~~aTAhDSafCi2NzsS8NAcRDgzX-TU6lmU~4Vu*^q^c1eaL2*c zp_)Zw|JahT(UuPHB1Q^?Pl9(a9CQ|=zXqdcQ=#q53t!RE3x8=ZwrDT*K~;A{$>4UQ zD?iA4>5g|eJz~9D+DH5`@A7gxHz=HW)eB|ZvAdtT!#mtGsJgYAj{ ztp#zByUqNMM{WHwm4`Y$mt?*_aySId_!J~!cVzAxy@x+4+*g9JCMr)lQ#Y8jCBYTi zcMo1xGbzk@A~^aod2B^k1X3*J!W65Ga+^cLTz|XW%>M(zt?4C9eM{VflOtegQWI03 zuUixAQyOwjl^`nNe8Bw>iUDwQPPTYs|6q7l zs9Tf%=zKdz1t7$iJ9+pPMEay=WGBY|Dij~2!rJuf8c(te){lJ7ez-kF#_$F#|2e2c zy~?Fr5dW6uIZ(C6f%vG~2(&Oj{p4cE$pL6R4Gm0CW*c^|MgP1>O(U)jL@l?e{j*sA z3vd%y>VI${4*Bdnb{Or`>>GCp^$?$KaWki;;PXS?HIKR5vUDX8gg87_OqBo@dwtmT zu3m-31aApxO7Cl0iQlyR=@IdLad1~X)O+IB@8l!JgIxi5L4q+O5AF$xSg}8-?!k89KZd}k1q82>Ze*j_H^SA z0JoYeo2j>RF&iG6;1Zd{mF9DHJRCeHBr&)e4|XE4@&2UX$XQgH2T@}bR5=nEF*Iz2 zqze>cG=DlYJSMCt4~Mo_Apdx5t~T7s(Vl+B`yuYh+-~QWqn^#MAz_UrJCXj!VV598 z{2D)P-wzH_EO)KLSr3pBb?&88T6?YJ1XR=>W_g@MC@e7WGBmLxg2BC;eObWBt`*nU ztWJT6 zZjPAGvp&71o3C`L$Zc~NtUSYnc zvcXSN7X8lS^$IyjuF(s*uM~F4;e&&enY|Q&Y>k>S>Xy<)oQSrH@9iW$2~3AMbS!jR zNkaL$&kD3lswOjhZWfjJYmG%{4j(jKw!lS)dsx)nem7?8r(N1AR%Ghq(b4(ZdvMZo zs`|NerO`AQEV8=~%uzc3F2}P)Am>gB&P?Sf*xmS=Ma;ER?Q19vN^){p?fJWX9mrh} zT$yn^^zl^5NmC;xSm->h1U4YX9pyG7YhvPGKO<{o;NuVNlVylOU%S*ieOa|K{?xKKDWg}2L`YZ^?!Po zeWTFwRp!PO@= zG5SCXMD}9*R~jO7jxH?KXWGBm<8IVRP1Tm9`bw+q4SU9uZ z2>r3*rfu?z^+o#oZH~EmQ=6!!`Zi?~Bf69;a)T0ef4%-2G;+cTn2Ib@o6<#E@mr=} zemrQq^dRvqRl4lg27JL>Qm;(>h-;8FBXKqRo$LWLE1ofj)cEb7>|2f`*G4Nh5)@Q> zG`XTae*5Fv1hBoqJapjG5AL_@>=zvs2@+|8p|hu79Ch65$wN94Y;zjU4$!-VNNS^}~s8i;K>z=$vh4-HY!jw#{>Q0;Pm z0#0XlIRlvcKm@*)xzdnT@N?WFvK$~cw)+z1O4SYhsu z&Sowqek2$rsaJB!pED|)YAO-o;uT*>6?rqGnyFn_C}2SB8CURk_o}AT`Lh#Q5Y_4^ z%UO$Bzn%Rj^w z?ZXuKtG+YC2{LHSa`ny+nygwsrlCX}57;j0l{3|I`jMmeWg&`xpyop2?N1*)lBtVSGIU45xERG=#mNk;y( z@vpbnp;P_yfj8xk6^emd`d_Kc{pi=NXj@a zOx>&hvAZh}vl|P->iFM#oQKAb+hjjcf6alfyHaCFJMp=vK2faDefS}1B`Pc|YQO%bCGtEV{FKwk)|OQV&*C#J}57m`(>^pgEaTsKYRq~S*vqIVF|P|+3)gChY(Qig zIj)*IPu&Fo$s}M^Y*<87*jE|~8=7eEH}#~ul|%}?^!!S`wLG!bNvm}?^0fJhvS5FO z8U3?Y+aNvlbtw(NwqokYLhuU)Jtwa}1Cmq(sunVvHed`XuQ{*;TLGXrR2hdDT_A!K zuBGYc|X1*gnai_#UuG z9co*_-^2cvg`b+CU<~Y9==8=$wEI-faK*X=(Wd$QYhK2ABgiU)L_)|Hx2fuN9~_Nc z<5&Gu3$q*-?!FjX_dDbX?Dt-*X52Rs(z(ySb(U+B@XvHsKkAFQhbtgDthmYRf?e&?w28?!n)mDF4#2-ZZa11ReY&=35kL6kv0R_o&TF98HfqtLi|eHCn;x^cs?xTIxhZGF|Jy#`3)pW%v{vQgx|z5&;J z0BM_<-|5}Zd{zv8%Y@i z)wA{CwWnQbjB$HfI^Fnub(&a#t##zaRmFP-9wzDW*?!AD7ctg5SL3g-L?%k6O{NV5 z^(6+hPBvrsWoK-gRiICJ2L=*@AI9tfE=$pMGL)%3=>>E43IxIz|FWdiFLjaz(y?rpH9}G1mYigyQr6#S@YkorTKR-Q+3H4h4 zj#UT;%5Aa)aLnLu9G>G`ZQ>CMc-1r49PwwsPyW1NP-oe zS|}dCRI=nqbQ|D6Rsq_%OeJtCgCaG5MfRmI)REPcwOjHA?X^qUi*in%y+dIn4}p&{ z?{XA_0v2BPJYczhRoDi92T80UH*gLV>dn}S$~x3KCMe&4z9Fuw^e)r^wCqczOq2NU zTi-;bT#7!hQpu3#3`UcDrQHWIRVRQLFpN{J7v=*PdiQ5OE3`(nZ@?Hav#SR1M5VCl zm0#C63GO{Lg=k8IeywlDZk2B1==wARr*!N_n|BhIGy+b1ckj12ampbWB%0;N+;u)l z=rlOE+1&?+DD#6~n^14NuT~a}%L0U6@uZNePt(fkLr=OMpIk@F#O!L9q`JPqnwuy5 zu0L089$w7I;*kBuxEhg#taJ;Ec(?T`%zE{@YQ=LeIzsl~;&I|*a~heYagQmT9!x{P zMJxDu2hM`&pR~Wn%%0(n|Nj+e9dQ%d6Eni$|Lp}3X8@y>KuKdo>jemL`T3pQSVdb| zq2M*b{iaAGV?STrTh}3NNlr9C=!5<+^7IxQCkWT-7p139f7ZW`eGW_2*9HFMeBDbN z_kh-*q>-U-<=CVo6H<2HIEhai7Kl{&KaCy7sVc2{KP$i3CMvGY+jde1`)>0Ag-~3q zVXw=8ma(U{-!EhY(7EQS<(&?Aksk!$?LG1eI-AY;jX| z{(&%$sd#|Y#u+JjVr^pfSgn{59s1M|NFa=*N2yr%Oz&d#S@Y>m-^$5bErxZBM*9`iuiMP`)+Uw8xQH!UQ__N+(C@<5wR0ykR$E20r&`>>@4kwofw;~5+(#^g#`{kUVO3vj`yQ6;|Hoz201i0bN>|p zk&_2J3NzueXJtKYGHOZX3IfT%Ds0mZCoLK1pz(LxbI97>DZ=qt>H6=E7R!RderAO? zXsxi}iqV$8^XlMA0*J-78W8hlq%3s)Rb5nI`x~&Y*UXiQYeaMnW!Ps7{uI9L-6*i7 zM2V?h2J5bHJ1vTuOb9#7$ojhDJx1={hh6;8c3u%}IH2yb7Ymx28vaAz;-XjArOqXu zpg2^6xK==w33z*l?LLMMcmv}Ekrfp+-K9VI>-2bKC2vsnf*fqS``dkSH(Wx_si}P1 zy;BhKkx-wKJ3TbimrH@J_|)T6gx(xxvmB++@+|mqKW_*bD;;oWK#n|zRQ3Md!krGP zfLaZGe#SA0w8oa1xR^parGezl3@~<207^nW48(K4p2&(HWuxoqL-W=TiYq7D=phxz zxEPgW{P9&t3|g963(+Qg6^M6I|Jt9Y97=7V08U+&hu*`d*)X_` zr%oFFr(xqb`yKxLX^aVuW_6z_7}8f@iOIGBwS!}BQ_S7{_!9+9LuHU?Src8vD*RVq z{|%T=xu-u9baIBlLmylIO;`nzKh_9b!ji^Ri%%s?Zd3NvE&3+@yivYjQSK5UHHR|V ziR&#U_7VEWxo^Y9st*Z*wa1UwqS{9u8YM&%s1;n6n;Z;>cnOMWl)GTS(5(vP zKJxvH`Wqx(@xj;Lax+23e>4cQf~Nek>rFkrL>=7}A3vZ*O>Lyb$0tTd&!}r{&dxG@ zeR2lwRS%&e)EX8bdhA>fjO~o9w2Q%L%o|1B{j&JVK&(kE{^#wrHOHFCTJb@!P1W(} z+@|uVz64x1TpKoEnbigl090{PUK-^#D2dGk{IK({2iWI%u7~k@=kHd{pd2Fo%Tn`F zbev04vDaXn5EL{Q*CEtBFBX-_L*2;}t}sGS95P z5H~ZNq*82n*CItkQeI`QsBExH0-Lu(-X**^8K3^FUTppKnv+6Z#t6gMPPN z1z+c>iQB$^HGY+Gs`&(2wtwS#2XiU;Y)(J3z-atGlb-+z!YBGu0_<=MI_wI{Hn=XXl}3ll2oNXf z?=P)3s0BS>TAJpSaOWS9n%s>ummvhCbGlH%i{wo)cL;v1gvjQc{x6!JI~WgFd*R&U(Z(_pV>Pc_3fnFqO1rtqkRB4GIE6&B7& zh#%q2v;k9R3D@!(mu#AG2rwvY7PdQ;KwU$Cp2WZBZ`Sw|`x1j@KMSh>JFqWtz~O4a zgfWcO2DjpU(y;OSxDzLS{f-8n>Os&f7)BW7?Ym>1J70NSYfuZ2DCb{U!=^|+`q50l z=gA}VabyJ>`o%S!M|&0PS%dy09dHmZ1eukoB`IzY3QGr1|9xYDT$_)7q`)St1{fAr ztZe|YP6XuT*KwRmQhfz3>AX}X@+0`)@*+&pwCeHIj)uA;htU*2#MF62ff5>!~+d{MF)8AqI4H0&BkO;ZBoUn#~bovBC2+)h~1&7XW+ zs1FM(TbJ@T4r2oX@4GiwxIPD(r-Z(~>-ORUv=mbj;G7yT%F(lUT%T+HbT`etwAYbI zkHvIewU2JS^-`?g=!RhEBM5cB=jqcDSz~m^Blm)vX*5_NVx~!}HvhBLLq}zbkPhyF z>jT$kX0$%+{!^t2jamxUqFGv_kX#+`&(5^}=4>#Fy^W85usL&ahqtRND)N%0p#OMa zNcrEQVR4+%qHSf1@8OB&Fh3($CI#~2<#m28EfyS7v&AJ*Q_-`KO!Ue>GEW`mtzJY$ceLn8~2+LZQM}!O>G$ zbPq8B`d>#kH$56X!{uMSIyEaj{HT$Ci*#zk7-B7KQdP7wo>CoVLnA0%>G`1;*+ZY& z5D_)R*{);DKt%$A$TkTj#wYfWV4->tSrqC9F4On5b>N`#iug1e2W#Y1^y}xZd9WUm z1p!?t5)JIgTcm=z&Jpwvd4vSm87J<+E1 zot;{P;zOP*yve!k8ygu6lqoflA*RtOUDwR%d(7aXR3VYJ`xCyKXR_MKEW99Tcn>{j zWJ(>>o^GQH+(r$|*!5!ThwVG*W38T>CqQf-7VeL+(bdzNVWmC*@2@qFO>{wF`nKk9 z_4+jkHCYdMaoW{x+S$Ewx2-yjy;BOE0z25K~ zFvPW0d%*YC11u(>b{GR0C|?H21;VC(oi^lRg4;k^-uV}p%tHAb-@ka>swpss<79g(PiSJAI9Cnz=riUU>FA9=mQKYXaNUYxE!x2~^y_!b8d+ece*8R)L zN-W}%jU_<~90M6oN{n9byuo#SNX9cIOSzQ%UW=$757>7zx&1|ZN}Sy;BVt@#+PlC< zNIYhDXkM1tw?vbf7J^DG{W^aC>uugQu(^f>C1>ax%6AW_^$2^hvFs069IuicMsxvE z^lr7gGKHMed_!N>oL<)2+ug<4*}OQG1`~aZci%2e!_*|eWunZiQDHys?SOAK_a_*W zBW`5fnAi#ggVy;uE%{}@Xl@*W7-F%Yl$gx+yu!y9Me-|R0P zb+Uh)gS_!}X_sNCt1j=?b#R)k`LtIQv;^>Rn--0&jdhlVlrR6wG?f-L=^`CK7au|) z#w%14J))lT7{U{Eg1$ujDnSa#p4h%hep=^(jnAF;KEW{3W!}+&Akh4qJjt2=?gtV6 z0gkS_h5gHUDJjo34?SDY_b;xaoHnNqRdPg($q{Xbh7b)NWZ`O4CF$6h^OjrTpvjjH~T{@b@`{ViPlMwN}7;1P8Pc^#sapQXMr z_EwI|Ffrfo9ZJ2$v}`sI6zu>*<+n*}gF%ZoChnun7k9HN@p0x|9qIRD)LC_{7tcIA z&cRjkzOg6C3)mj-NauUs>GRRi&8N9}8Sk3a;OU|)r3L<3dZp*NEq(XI)ElOJah7zMdHB+aCW(P-<`jsksg^7m zLtXhR-)_HC1oZQLEGpqj6al0ZX^8J)zFWN)(0NA@n{pE+rgSY>(3}}XOEqiyv=WI- ztc`p2NO|i_3&KO6y08$9>!&p=764g1b*-7*C@>pB>EY}VF`yLvvm3l3UJGfin*qfPjQsyb zYh|s?5xooNPawT#uUZNIlY{p-KuL}3&6hZxLg_*8d|lEU(Qcmb&+Tuv&ZZsDMjgSz zmYE;!el2c;auy>2Il<4j&1{XLMuQl`iVYugsth*L#o_#}ekd6Xh{EZMe&*mq9V6iIcDaoOfRIt_iFihg|joTnB!ErSR z)QsK;Y9|K2fUua$5b;Dd4ba!N;wEz^u{3HlnEg1E;*G}%Q1%rTt`Lf-$$ZbwOV&!j zIoc0TUH6Is4DKz}O5bMi%_J{pDg5^cJ$D$?-VXd5rzvh@Pq!&cFj(`-&rA6I?hC#6Y;EVa3T;ED0cIAg9@GkV#A_g zODd;DU>#u288t0a#Iup+CFoFfM!~RX<9bJ9PZ8Bes68=o)p`T^aWjAI!e6HD+Q=_+ zcfbD^mr$*=n-qaO(aM0`g{p;ji6CCX?uLT|N5J_}>y1#n4ddOyQEREz>iuE@;RaaA zD8e$RLXoNn;xalbW?4VqJ#tt~x?1@^j?Ox&$+r*V15qX+6N!nmbO}fcsG~>8$dS?^ z4U_JW=0}H!5(8m$H%KZ-NDBf=3(_JD@6CIT=lF+u4({1=-`}{d&sEWdzG5qv{OU1S zNn%ZUi)!90pP-9>U}Xy&&u^`4`NcM_iH+3ei)ZXv)t`O>qYN3@)0m|o)8ya}VK5yh z*+i02AxZHQy-F=)*&+)Pt2%V=a9fe{_BT#peycVHE426F#>AAdPpq5t44Y$qc>JUpCM+bFE%kwV?1X(83oo> z1vJ}SgV(LqXD>6fFe?&V$1j3bR`%5>YUv7x8v8X9L#Jb~wi{D+V8ZJp#Alr$tL}rn z!{Ej*#zCQ@mFt!0nYqfJ`th?^s1TAD87ma4QhnVk15Y|<=+~-gOxoD^jsNDhfj0^l z&T4I+bFIu>7Qxzq*cTHd$j}LmAX3ztIGiwqCIHP31K4dd33fRHMEllE3b!s9*}{q> zH$^IhG0OYecwB6o>NeBVg};X)-qsTT@5@-?Lvv9rZfma-EZ|U}4gk2Yjmzc+Bvm^l z5$sL?3F5Wy`Can_a3oC#^dg+6jC876rkWoS8 z*DqS@iLsn>q=t0zf5llPb$ySNV{?;zf*8ZwIuQ6Rd1sD2J28vhh{9Yi(3aSUr7t-P zQ{G6l%Ja@+@6)i~{LRt;v0>kLM*_dj#i5!zf;6jnwj*|tI{{CFu6v_+w%L#IrNcgOG^yEjxw_q&x@PiSs)DT>SA~@)NeC8lJF{#2MmdBbbx73`*BY@z}4HP{(qws zqZdWa1SbL7*YV#!0Fcb5ru6K-5<-z8%*W?x!8l(E5Zei<=GkE`{%u`_R_bt+bXT$y zaHrMhel*WyRecN&Nbs4^_ZjsS+0v-Qrkeb?e7geE8f~4L?a>n*j7o+9%(4yEHS$0O z%Gcc`2ncR%rWE6jr6k+ekbQcPAKP73+_Vj4!iz{oAtPbZIAc+NlTb#0In9}E&D)HF z-N)WC|ANN&F%ooE@Uj-`cvSH;fXe>j`T|135$)~ewsk;q5Nvhum}z=w$b%&0&g{wZ zA6McT{-NDAPU1r>38yTvM%iS;QbO1E^}}VFgfp!CjQye<26+B$maE$j1sYQCo^oa zq*5v}T}rkN0ttjD$v)RY3T--k3AkS%;qL03iKdac{7hZW0O5aw0amY==<471rPTTr z2GVImlqgMO#MV|^v3fu3MFL*`9`yim29HuEIct4dIpUhZShJ=m4W7pm8T=Cf4Ifc? zh=};BLSJ899*K$u4D!?4-r#x+)SkkF$U?Vjon~othz?STGb_uNLax=-i#_fP!9P`+ zVdVvs$Kcchh+%G7WD%OnA=I=`&+u0k>8(Lb~qIaWi+*_^q)08)+^n1mpID(SeVNUs87!$ z#MEwpk))*bAJ!rb>0u>MrK6$5C$d3nI=`C+pM+(fR~W+b6DF>)Xs;c?jKd<@Ag?87KsLdvssWX-Kv-L4Gww9vo{-j|3!hY2u=_f7wdNIar zlMVUM3ycn?B=;w-_sN$B24oB zfXl7(dL+WRmj&_RUxEOz1bv17`Qv*8@VFBjt`u}~32S1Tz`7T1>gIPb+oe)n>Bp(s zN=SCuUu6e~ses$@_VBP=P6I412p}?lt_`IBS!yKyEuPp6*Pscp2%l;J60oHP1CA1# z%oG;m#+ETVDQGaLWk5lqBRsFY5cl}XLl0*Zn>#c*D%`tDQHlPqfU5}cEHfMu2pa+> zsW+woy~~NU1uB&%DCRB>9bDRd;@j2o`rh=XBCgNlEWZzm zlal(V&$q^LE9Y-9H`7}ety|fn7tAK3-ak=L$Jq=w`Zq9gQrOx56S&3ssqR<#Rc22m z<1+f?oMztRMnUaw$?&ez(@hu2pDhOE?O+0Mpue>OuuIbiua&U_h>meCjO|SPl7CT+ z!)z?e@1rvSCk7_!(i{;+EDOQOC2;(M2N14N!NbEEU`VcvtX#u@c|R}3B!{rjpg_zb zkV*rW-jtCUPvjE)8oIU#jJp7;66zrG^vCou5>|u69-6K+Yv?<350n#t>`5^t2-BaY zfhJ=ujY-q#-gH5LQ=L1wb3fXBPGj%Db^~{dC3Kz3!02QkDIXlSTpT_+-;;?x4UsR? zKcIko+`Qfbg`i}BTkKZxE*Hf4&hrs{BR@KDv%~@ZBG8QpLe&5RUC)p(P-tav)w<5e zMBm$%<+BT$!G7$1k7(CTxwGl))M~d?5)|DMZSllFGEKGzSXAibRCu5LGXVfGAtm2F z^nOdyr=Pp?tw3Xtx3~dpH6=Rbik!eO9UEJ&fxL^aeeVUdH=T?TBF2;n134#C?ycQk zDiL~U^hw&)zR5ptsf8m316K2p{vFuk(@%8*F*QC6MrkKZE8;=+)fvJ!HPVGE8mBUp z#nbei+kRys{5F!*?!4Tt%6^jnW%H5a(XiP#53lK`=rw2Q_d#od3v2SSLld5%jKg1# z3gw_ooHxyVC!=EotW+j9b*H8le$1Z9mHrzA;|*aNr`t>bQ>0QY$$Mwp^fyMeI=Tmd z4-K3DfpLIxqCa4;WDdm%gqpsENyYiZRhP^(#m8*rEVz3d5yAmi>zmN*0YFSo@N9x1 zt(n)!L|)#}z)Go^%LJz0_iEf_BgXRL@(a+zf&yi)w|9!#>EzUT{eVU>&Z1i>#wD|g zW24yEA=?A^+hQUebo0RdZHX=6r{Z>#jFQM=FP_dQ$N)%l%>}1Bw+M-R!~jo7n|7xtogyg(F6X_L-^Lai3OgbFepM62k&qCj;h?I}$)vKu5 z7al9ILce$W+8C4j0x4eD?&E)Ybst%D$&I;4@RoRWMCtz!#m@X@)WG~B(R_BzNBxp9eWS14c#NkIWXq3{*Rh_yY9IDgwVQl zrl{b2*=a4#ViLm_=r?F~{HI|dL(qRC(CxCNBYDNx^UAcP&H+&>cSf#QZQ~D$8^BKdd!^1 zQ7BuK1oBg}K0&Vgq=r&><#Skh^)bD)Z9;K8LeZ#iWk38H=V)8M10cw64^Iyu5hxi; z7L=X6gWrv3>rD^B>5S@^8lJ*wsiHTt*jwlMm;wa~wAj1o~(@?v0~k75_4kOoipm>atjVfj{w!dux6O%yvM@#jNQa4|n3*^v^9r9ATad1i9Soa>9+;2m@{~yo zRjtkOP^3P2_Xvb?Y*J!KF`fKMBuvRH8gLQr6kO?~HGu7-^}Q$fkplxx&eC@8mV|DC za3B7dL`&^A=qZ`6fM6MLr2q)zwl7r#3Y3)}aeuA>2E)D^p%t*NnEG6sm%z&)1kW;V zJD&q-4L~L(QfuKCH|bM$vwZYd=WdOj;lplOs5KhG*i~T(w`39v{M+)-a#GW-*p&nF zQ|ub82bTlt5ir#NB+OfkSl{V@os#w^!F@-3G1{=jX88EP~Cgv!@%%0wE!Wh zQ|UOqF8*jl>hP4CPN=5zEufg6LOqYdr_=qyDy5&@_u(wnJ652^Hd(*Q3SD z$HvSkRP14S0W`OOhBn#sC?-1{1|dg$^)A1Q9|~K`1*227yoL70n!mjvgje6IbO=M9 zz`JDQ?>&PicF!(cJwU3~GJ(|!0HuN9gra91QPHcSAB$!#K*8U~WTph&yHEonnCsf= zkY7@jJizvMf2&VGSS3IKf(>e>RnfNw`f!Hid zG7$z+J6>g$O0)}5y|qH$AAaNY!CZ$a5GFwKqyXIyC|mR3@pf^%Bth_x@q8rl zOd&1*%ZsRh-Dh%l_mr7umIX@g%vDCf{wWb$BJI-n9s=5(n4T2m;re=)&|zGh^!kxU z*h@0{^L+hQd#FTDE&I;QM>o;8;dzPPVla+^b)BwkOW3yIZcOCTKwIvG;b%*p0y z0rzwLT%rS9V3(acDr%h1PCVN`eItuj>1%9APC6B{tBrSgCjIK~7CX2CGxWDL>9sp>-w^poi*9lG*Jiu2C7U!2X8m1%~;VV ztHu_ic<;K-8w;f_?+e@lM~l0J2gs1iT>X3Y1}Mqg=fKWKbP$QdC?ma`cO9=`F!X&l zw3)%%%0nEcSk05TZ`yYD!f8p8{uh}UPbb_f+oo1x&awWR4McLEXfSev*38m|SyPc$ za4b3RPC+y!^sQaNjV$$#S-LgxoQ2iWF&B1w8ys#54WIY@$TK%3ngXA{KUm~lC&i6+*9ztdH;0G|qERUtV?wxZo+s7AmrudlRO<-jI0jRu`5GleMF4yCMClxueC~&6 z$bk|>{72K_`@0Bmy`_RY>>{1=Q~&C*MkAiGBX2SYtalv44N(3+YyGd5PY)Nw#g122 zS49h{DuW_>yn>>}t#KOK?F(y?-RUo5e6OI_Gv$xd_y`gZ)0WKwB+6d%Oo1d_b#@d! zuRQ>%Jp5O2)Jlw8G7Yl&Zt%lUg@wK9&iXfq3Rf?Ku@W9)2xA-|TbFEtYReMH^sB)d zPRuH$KW<5gwy>?W)ywmE8&JR9=kNk~qP0GGbyZLbK8;LTd3sh7`^uhjaPge^tZO=( zU-vBZey#$x1%!b>zj38(0iQV1xZFgS6(37syV1Vexd18-K-mGtiqx=vD$x0*h9N49 zophm$vbq5}I9-5H6;m%N((eK)?BI}RHTv&ZBHy^=kx?I%^a%A=p=om{>>qIc_Me|_ zYMk6kBhXZT_pPTr*wE<78$LFLN6)HtuEO?Ch+o8INFNS=3rHHh!2jc&*hd?c@r6_l z**)D;ejXDZ3QmCAd!KEjpGd!^alTX5T-S7ptUh@LO|?vb@kGrO-w9&od=6ED0)an3 zy%~B~g4`k8#3t}3xOyoV{r;nJO;`cAS9eg-fK-(DdQQ#YgLRN*2$~lR`+#p32jBr5 zf49EU#8y4Tib=Hs1q#UOIJ>yl+m2svOjmlNDQl6#H{X&+&UmucZH$Gd;J39J1^`vZ03%Smq`5LD#ltH(-yUjJAGf$AJ!Lh|dzaPoB_sRLQ2fiO`nRQB%ds@Vou|D0 zw>xM_=YF2kZfAc{b-N2SO$f2cg;jxBJ#WBnh_&f~deBH0Qi$N4+ytJApIZW~6N54G z82j5`*yiiJd*OQ0w6pV&AfCO*ytm^h9`8lHkB8IFo2Bj08w_ME7hxQn9>tEl4 z2PTIt0MFl3MPJP0tfuU;ogvc+FXV)N;>G2X{~+x;ykP5tLNRteIB$BoEh~N0>Gry)lU5+EOT5@#?dsL4M(wfV@cj zd$+T=%^oDDxoj91fTe_tYBi{R-Y%R!?Gt!m$HOc22KItTL4g7KDJ?boy&lP!%a4Og zAM#A?TFV5QSN!G=$?unDA6cL)uHt{-h*yr}h2PYgMdDMPO6?AKIW z(rk^q%3Q48pQDvX0uud_e7|JmH#YQ_+#A9Qt~LC6&#&q@xs{*Qm4p_$UABCj)yDFz z%`^AY_?6nFrptg##HC@wie};c7Y`sGg#5z4J{3kpsA!M8xzZj86!2V%y^ujqqNy!ZeBvL>vQB0LErGLfy!VB@2Q7m@JF{eTr)h7>*j1THXD`$O&r*6fy zU(rzsETP>lzMjX#DeKtHJH7g?{-v{X_n5iUMDsp^K6Ilg47Ma$Swg;6GWDdW=5N|U6kSqvH zpFB8x#?Y5>W1p)OBfv@)lWH2K{oljD4tV}@S6OY>lU^4FCKdt(MgG*6B}$wewOlC< zL(j*4?(ViS+VJukiA$XR>`&Qwm*s1Rmg^n0IsoR1`YICsaIhkVR5YF(7R9bs|9M-ib$cPeb+LbWk-bK`DnBu}M;k9)2zxmT zwc>t4t(IXR%Oj=4-!tt#baVE-VaHQm7h%l3EZ=`O4?_+T4L@7}yrgsrnGA>j@qLKA zpA>cUvKY0pb*w`o7JdUeoPVatRO`gC^U6O4nn(^JpN8%Y=x-nG+)g;X+~bJg7?wz< zqigLFAE>hNIw1`m0XkIGG1?;YyyEe9cA4KD7sd~BErXK({9#6offaKr=+r?2n3DWe zucqmA5}>-jxuo(>ipSrNR>qPp>@+z_4ctOFbD~S@@?M_sghZY;Xxbzg30MnTq2UCo z5Xad=|A1j3;$#}^=)ac$ZaBg6Tj>ig&XCWEi#8nw&<|ib*aBb}1Nf900Xm#LC}zWx zso{zR1rHX2s;}U!aR9LR`%Ej_6ClWOM(fKqs9A6m1F1K`??7#qT7cKvv?FRzYS6QI z3rsCWc6KtYDpB8Q?X*n#J0*r!Q{Q(!KI~e&k&yV{76?a7)(>63xb$!KBQyu`;bEOz zOaKB6wt`@4m}#YH_qv%3+&uhZHCxE?dY_Yhr*t+(+0d70D#6t5$~Pl2dd3ldOUUmc z6rJgNTqFy1=9sf+Qud%hww)E>Q-;fK#VVPsmHUS=Xay>-+TP%rgEh=#-n%K&q{rDe zf8VzJr)BBo;{NLH0rOQ>ClZi}133|1AlI z2o#_{SR9;ofSKnSo8YEEgxS^^AqpS+n)Y!D4GZhXeK#e+-Ii8_=~nckOZL#+y*)4> z8g}#;8fU%_$jhpEE9Qr(45%Y|tai7*R0BlF&j7WnEmd2A8@aRuxZm-2u z>H+tU2CWBOVJ3@TAKEnw*g|b-V7WLIj~<2;FJW(wlt0;)rm1qp)jpZGpufbn0W}g; ztW|#o6fUad*XcXdVD59-NxT4vTgxYFS8=vYP(1VRbIl7T#{TH3t;WNlKH%{%l{u0B zy?e}0VpCQrz!svF`{BA$vdX+^Wzk${J|7k_i;mFuU^ z(XEP}(OZt;=PhG_h-8yLcVf;I^&`ar`0fO20H1PRD1vKV<=^ zx?m;WJTWzKu~n*P7e1-ln@2mPrBb006KR>@&2vd$Yox>Vq{%oU_l~(zo=f9cqYQxB zI@CH&zn-YW0mUpnHWk*g@U+eU!UF(vewU<{C#k=C2nznQ>F1FG$Cs5$LRx0V@H%*O zXN4w5NpIx_Q5R_*i!2f2U1pabnzx;bubOOi5@jp*#xZH|XlM?Eh$|pjhhGE)ycUjw zN-D>eEpS}uu`0k6N~qC6Mzth8cgOU%>}c7ExYpgb(NwhbZPv4x*)qtpM1od8X&b%QTH}THu;1<&<;Qw)j$5lq4s%Phn zOah`0>;tZVMf;ub}~P~#PRN$d_F zZY+4Df?{vB>Gqx{}=U} zs)M;LbL+UUA=2uf6c)vC>am`BKYSSsjHo@Ai-=v1zYFc95prFM%7?;U?XTzO>&kxx zHiX}29+=iq`!;TZ_}uLmsA9!q;2%%S_W&l1W@aPymdGLiUn(Ip=*;jo`yV{Oj*&z1!b$G% z;;!l1jzu-5vz95!rH;kHze9hT8(F}D8ErJ|EYT&4O}DRehBJ$I94HP)g{G%Hxud+_ zykP(xE5OPnK5K7(Ul0TU=Ogz1M39tz5vC6m5$6>-J-_jFCiNh&4vG^gyJmH(Jsxt0 zLWCHQKyJB%{ilb+waZG^GDQ0|h^&Kt1Jpl2$ccz3K-+E@=!BtUw6WT%=beg z0>-QbFMgBv>PltsXg=~o4x(&B4p^cj06SakAE@iO z(jG~9?gFvyY*{KY&AU}<%pD5YKJyFH$HhA!=%vy@FedfAZ&o8A<)G1)^=_AOs$BRl ze8yh#KJ?^ar?dLbA^r4g0GFaf(}8K<#{%&vO0EDJkk*uAn<{RN>aPwwc{6I{2k#t! zgC8`XVr9RexcU|Z6@|1^9#e_QnQJSxT?Kwguw`v_UGaJDeA@fqN-RzsdkTojs+uE0 zV8BiW5fNRWFGU@#eCyPRB8yk4)qV4G@#ct)*ckFvEq9hR;K@>8fc0kUpOKLVxLvc@ zm4H;N85}4}4GIxui;{r)$%S>!!d_GUo)l|AdI^|F81WilB+rCRbWOS8jGIS<$^Van ztXw)GSApJ}G$!}t&OodhVY#LE8~jR=|W z3-Ybu*s0~Bcb=P{I{8OL(Q=|6c7tGM0Vp08~H&M)9 zYj;d6B!@ZPz!0H7H6CHMqvW!xk$~v<=wZIk{EdaD>+Wrg1o;%j5A7&G2zPBsW*N1i z$Hb9300eaL2OcP3?4fuIPrnJ_<}N#{?CN4EWqGh8LhG*?fLxoB2$xLLj{#qnnb-#b zf5en0HduR6vt?x^Eg-z3S9Yu)weNqm9!7n+4HRedGpCaui6N`3dc(2DU+%JVbq1nj zQsPOw{vX^*5sasJO}b#}=137ysZO+v1QN0?7aAqhh6>yW8q%T$`ei6jI4edOO?^tBCv4CqlsBF8piY!f)C^7Nb(yiV zL|EA8Gxxc-p9PB*O5|n-BtIAD-_H;7=gYH8IB?@jd@3crrgHj*QP*==c<`VV>Gr$x z*+m$T5wrG<)89ME%k}%Zqy_~hX3t^Ml*B^EzG3g&FBpy$b7G7lz=3tGy&ou)PQRLj zGRY1h?qRdqDLMW-01}!P{aw34B;fx%`ZwX3C69!-7a5cL+E74eI`D)8323~N0#W9? zC<#bbEo+tlm#1#M(^W>n_qb{Th{m``Oz`F;h;1s#tfq#P4#_($>SA` z`LS~d4VzE=#arbr!enxit_e)xMAL+gBxtF0aI^4xp-==%+!+Y}2BBeNRP=k1dHpI%avM233h`X#=vF01~$cT@dre?FtJl7gSqhvA9a z9|9~z@ixkpMc>~>beQJr&2=SODRb0&lm&X2dG$TM>T8X+Vy1r|eT9P=4TmiLGx2zP zpD#xST%m9Pod=Q^T^>iH_DjNW4VSsY+FGZ$$x3nVLhl73T((C;|2}yB3 z0vR*Q5{UjCzTyA81O$c2%_Ekid-WRq??+?iKIsh$zDLEPJ_`aQ1>d7~TDhN106PlE zBi!6TC`V@E`Ri!NZlnN6Iv3_I3v8K(7{bPlI_SigzbsZ!twtUc;nV-rsM@x0_|pTu z&7_)?Ixq`}I#8w(+tqL16cEm1JOWf$+Xk@r21piqg2FnZcraYbgz>~R+tRQ`Qp*`Z zUO0Mk-p2wnYy<@pJ|i9r_)|{o>%2XASj~f2R-=IAor)K%GXk&U?Yfao@soLU*-7R{ z>QP^QM0~fkmpOR4rqbK^r}HM>zoHOyxAE}(li)%rOp>3YduO_w^sC?T@A&OLx!pk* z7-o0CEx!N7cV64~95h2n=hr~*$>*`=`>qBBpin6`!_s7AtM(KTZs;O=!`4$E>-AfB z`scM1w&=}&iSmFoT3O=V-VP|7#KB8qj-d88_nH6!28SxuzOMW8{r#`9xc_Kf4^(zQ zC9<+#XBU@Ua6RFBA8`4Un&=g(ABcCL-(J;jnu>kU8mozd*|rDl{%{LeyS!ikWW85< z*{tu`Ox|QYF1#rEoBnaOHCmvqBx(nAi8v*}iV|cZiApty2OKC~Z+gqp22P?~3UeAc zuuJ|wbc%^UOkG@E+d&_LUiqZ`=>USCqcKZ2I<7v}!5?+i{_j#!B@x$jFMQa@EdB@g ztMZNQjg3}=(#dd;h5!R61Dm`UlhwF>@-;pJsiqITHa+Esi}D>Sb$2(ohjcfAzrkg@Jgl$ z38`-^b3m(67@_6geltpc*yQ1evzs8;GV=EvgiqS0RZI-J7XI^T$I^?wHK-bDRkUeu z8-2J}@dQ_PXrlQpou8mL5C)amy}<1FECs%{ZSRZQc!!#5RjwCGo*iwrClPg$9OZ~b z;+rS%$Z!dNw7obvzYT$9#(rpCJ7DL1)gwfRk&1?GY(B{^mZzv}I!K3^&C)ZW;7ys6 zg~eY;jX{F)>S~)(gasT8p_jY-`Sb2D4$SP{fBDns{`R+Ip6%ZXnIZJ~JfQF0%WhyWH^G%ECL%dQbEc;1)yEQZ)8W18m5Rr6;?yNgxGc8kKW_ysooTBo zqlz0GDVd@KsH8C1yk5hPF zui8Z=aq_7U#*teozcNK)=R;+Yn#{yNX0xs46ysZCN98*y1#j$5>pT`tqQCDMy6L(n zymB_ftMS^IRZExm@PR?F!OR5DD=v9T^)GcSaX-GQp4ENP2!qMqwI7I1*12IiR*$iT zc+wJ71YA9UK400l=c)xCXD6H>&sc2fUgWz1aWG#(1YF%s=(Ad?&jKDmOXLK?R3c$I zXEU=y1gTL}Q&Z(CNY9`>(Xd1j-0{Wgh=Pb3PHg$TqC`71B6mH?4CJv-sVbq|8mW8x zb}F`zJd@?Nn^q@kqqlWu{AZU(>`#fzo#*U$L^}2IIVw@VbDjC}QTHY`%p|1^Ill5! zkuy)&aYvDt>!js!yyQt{nW#H}1ph`zmNP3!^uhy8d2ZKq=pojNB@Yn8bz8z{k^K`} z?bv~;NEn&S6lS2{dpvB})tX>*?Ld?8&iNbP%NA1$``J#tnd-IY!%J1Zl&1c;uAP1tF( zIrDR-BJyzBR0j^2$gN$n;@h6Iq%h|SYBlW#R&7Z)|*_l9x# zV`ntvpQqk!6KAIKP!(=k&V`}<9k(@xaU0(9spiabDs0sOj@z3><7%@*)I`-)_J5BU zs!F0*IN=Yn2zwUKKZQ7DXLz~W|A}L(^JV`Xx7X^+x>1rgK#h?q<#3UUOhZ<8MrNzT z8R)3NO7Q?m#nV@Bxrr$hnaHISY+FuLl4z+qH3pH4A{a9!FB*EFAe*iY!|y{US<(eQ zrowYZ3J>GJYp!9INI*z9L~%G_3UF!S{V zCuT(Zp3SC>(?wkh)1#jy+5UN@lk;yyB7(19<}#f$+Cqy=^c1gh;)WOH-29#pZc z#HFEPKzOa{TKihb>6jPW`-vH$my;%0H?$YGn7UG9s9k*Rui5(mhA zCW`1oZLWjwf3oKX_l+7}mWquxIYwxSU`Km6_9XKF@Way`uDp;L3lD~2iFS0b2jCX z47ePKGK*>wED%p0c$dJU-7OLILDfk89<#XG^W?~T-&f^w@k1+irtZ+4G9k%)FE)v@ z&JJ-V=zLkHz@bo-h&B*AZV2u+%qs5s93JQ9}>-`oI zSfT{_*M?(aei#;&*y)c7)f#`@Z{^rFn%{^$ioJ)QTHC1?As`18i&t@rfZaEbto#p^ zA;2~u09@KCskb3%EOSDHF#I8zu|H(^9dLumOqL?Eqb~7#pD>|{SvL?LjiCzD%DxL# zTeR3>)4ykJ5BL8SqLzwj+>G>$q-Gb|>vcjbTvevVCN>faKK=M1swM20DKPZuXs)Nn znvgJFkz8o`y#4j>#qo8s|8{zIjCFs=QM`ZQ{@{7*5fhG#cI{b2e(|2H83m+x0{FP^ zn2W!gH{vqtO(zIS8F;6i3}5?Er9+xm{vzF!$2AK9)604j`T{`#ah_wwa+%*n=;VrP9inCb>&KAEbAad$kve9C1g=HSHtp|h9F?5hzS~qRV?esE%HXYGS026C zR%G}n;Pu6)diNBaDh_);hF!D#BpST8&wVal8c1ay;GiGPW*{Zp+r>l>m>i=}oq;qg6K>?uEO z<3;r;CuXSa2n;eUl*h)m>x}(Zp%+EP&sH|jO+y*3#v}5g@3OJc301t|EfR$o#@Xn1 z3RNE*sDl^UbX{CcL&MC^?_QnJM2%P=Ne59_V+djUQD<1+>pu<60_$bk-mAtAqq>J= zV6f(0@V!0ZO|SHp>-l;j-eFv$d$-qj7W|+Boi%ezV#pmg3%& z0b-5iFM^B&*ilJ@h39c`NyikA!&E5S4~J%XVSh(l#`pwTg12x~+49teYooE&UAf4< zrM#4WgkYo0SYi}8yDW-g?C4dt?qtp1%L^wG83rcW@U{<=_n043MedR+jdqPhGrxBW zujKg6?KiRGk=7tvw*Mr=TpBr_jn~b#_{OZ%!4A1LpK@+!`QoQ zhon^>|MGm?$Mm%BAux_cWBLKAYUQfE*s+Kjy0-9;*%ALOlzNi5NL`4)WG05T$ss|5 zBFOe1DajA2@Yh_m<@!b+DE3b@>spaTRsg+>8wU8(F7=l(D@M6mMLN_~-$TGz7^6&H zq(zj*=hwww6`sHAyksLj3#`51 zx`&^w8`($LHG+Un*bP8`aqM$ycaBj0KH<>b_`t`9go>#}!q7t7O_tiRkEu@mQ(#IO zA5dr_84sKFUbDU2-1OR+jZYy9nnk->c56X5oZM;uvjjim?V&unCyqO9_clgtOW!}C z`{Nk?CwLDdMjb&F4hz@)8_SEPdVA|XKptdFp)t{y$l<8ev;Qn~78cGpU*$V&3;4z5w-vRq60TzqU!Gh>C#9{O(#H?2Zf}(^v6(D-byGZ4Fv$)_2m~jlY^+ zU(5{p@kRs_-sw<~#(#RK>Ac`~-gfpgi16pU&r}9y+zoE-il+X3FFk|i{o%R?Cyx%N zT<#5=7j!HT^BF6M{mB>dSo3w5v5F@&i7}+!dJXPni#JYOMdP7=7Zu?MiXfJt5B+DC zDgS0S92_o^4Yb#rXSF_TX3h$=np|#8wJY7VICPh|AO4)%uc}$}zk?TvAKI_#IQGHS z%t0~4NRV1hsm{DFbKt`W@%3Iq#@ z12_cY=B0%X!(`2->vWZ|%9*J{7Hq*Ey2Y=jm01I={L=ofuvI0SZ_`%{OmEc^AKSlb z+No&oe%`_RN=`!s9T%4KY8HWIs~GyoUOU5ut=gmlryqVFXM>~C$Nk_PDgsA}u!)T- zjw`N#@SWMJ5;uQriH~`u*h2Yj6CX)wif}$iqUGE{f157K{ZsWuV^?h2EqR(8S4CJCxbYsxO0l`Rc#BDP;0$1 zjBAQ{x&~o!OBWiZv?XZ&P;Wkt6I}meH;zbnaJPK#cRmzmMl+H+1_o5 za#&+kGPiG?cL`aLT9&lnf!%`78Y>l&k&(pEN;cF>2iF`r5-4&LaS*j!9_s$Q8hVmY z-1)uQ*P8}Dc>@C z6!!gDp|g=9%y|{yRfpw6c&Ha@Lgk9NbhL-OSoTYd@Y4RBLhi`GX}sSRSQ3Xlj!UZN zan3?WN=u8M$PaVB$w^XEH&jixh9j%SfYMUR9tSA5W6BH0%+&7|hb zViR_ljLH!qLLTlk#h4~X0jdW?_zwcjRm9@?jmdr-N$$3AVT*a*Y7o>Jy`bo-i_Q&= z$?YbvS4d!=-tT056hm;RuQKC>8HAN6zeqe%w1|?5(KSeb?6JS8%)WN29)j zI6cFU%B3OSOJBGIgv6XSyrRk5%J*D5iun!GLgF0G#{{!i#On9_F27Yk9+f)WreEFP^$QkI+@`MLu$npLett|to0Ys$Q)X=` zZp<~9IxrSjt;07gpYT@k&q$4!d5aop$YJJsbX5s8(OO@xF&zP;Qoddbs8=TrOLDt? z+iBz+1FkMpQmAu3PaU=mq`m*ovP-CX?>G)&%9k?pTTDAfJH~SCs}>jWjT?mJOp&U% zQhbSa(DEC7Vo0{^I^ym6tb>dGvaA-P#8unnf^5o;WF}+EjTM$gzMecQ9MOzJG`Tq63 zQ+v1}+I#6SiuFdD`iyrOf0dZE!`rU>&i6K@02}bQ&$MsJh;i9&VKy57tt#CXWDBqD zZshECu$S_#!IIOah*yHPF}#gt?qBP(%Lfa` z>-Fsy2I^9W0onei!>eoRT3ooQ7~xn&^4^BHzb$cpvq17+o3y#-F($4WK!8J+mX)#p z|FG^%+6~;ep?kHDOR|3}w2mn8>Fj&m#gSXk#f#MroL{LI3F4 zcVNKaC7PMcoTx*fpfuHMpkFyr4QlyS0Yp(B`VAbF%9?doy~G^;`TSXRrRt%QK76Kj zh6wAtx0p0A@Cbej2ucl#baYQo*-V!09hylu=#~twp5IVcERjpBX+z!aY2~G_o#F9; z(T4Mjc{aRAw~V@p--4oW8;5yc4nK-xkMrKX)JB({-b->-e+O!#gQ zN8!u=5a<%e6K`$?pWZ4+i&M$+gHdA*uOZ4x;8 zh0ZHfPxQ`C&dv+fy(IMWNBA#&y-JCt@(&!QoPSDdCA_BHs9RZhRG6jO*` zQ7Yb^}#=4HF+tR`*FD-d!;c$&V+)Goz+$*+@G*oeEshs=^$H9p$BKh5uotcl{ z-FQdO_}aJhzZDnBgk<)MhyIety7@_4YoQ>zj;`5Qho!fJe>64ap6nZNTcKE?v|Z~m zP`ldNy}c(CtbBHdf>ayc-u8d~F**wrWb1xPkI;86&SaFmEkj6LCNHn zzqm|x?nVVIOR%gwgXY>u4ZmA5+{+iiC=|}y+FOq~ZWuL9&x<=%uREQ_JlYouojK~@ zX5S}mLilXPHSE1)w<%X=s^rY4;4f3>Vj~xSy-56 zt$qS*1e41V0TyNaV#oS1SXr~h&aePzaMUJM=ZHW|(6?_-HX96d6?s6GI4SQVhN+t5 zGR+uM%N1Ga0BL%L1Qt0@0R;sU;U{O0V&pPYxl&ehIb!+O2QU?akYBa{pxxtSGlRxeRGj$|i^o=z|fhW$AtSIuv?YGGFU;R&W6} zlo>AP&m&@k79Rt}yYn0u)($qEnM!W&kkjlo#GeYkw7hBp3IeK z@zJhItBC;e`|l9K^mSj{6J_j)p8W@X48{LAI_sz?yDo|kp^StKJxF(#l2X!wfOHQC z11jB}(j~kgAuTOKqYN^nARr>4NK1osNes<*{g(f@T)JeyvJpL6;#r&_ zS~^?$M(U$LMpFRcwD{zJcT;H#OtFYNpieqv{S53>{=#+bI{IDaa({SmxE5^fP#d*L zNEp7ST4s`4J@(PY-N%|GK_sp(#z5=`n6PEhYn7f85cFMKST)w|H}?1MAuKL?U*XN~ zN&3&%-cx1jh|e1mQC&vf@0>^jJkU{l}X< ztuWZR8#;(Jab@L;2U)Z6MIQ!#PI~nX?2g>sIa#kRJLQxpI(3DG#SYXOqnvVVF(6WE zP0l9KF?)QzqeIVhduv8k0{hzIjJz~}xA72k9A2^!fKu^CJT>M8b81VA%cL?6p0V&w z>N}|sor^N$-hQ-1WU1rTCNT1%X&*r-uP!A~!-@zc&g<{Jx8moFdG|M)Q@rsXmFzA&1n z8xGQ5M>o_5%mB$${ST88mA^5Nkt?&WV6F?2r)Q8g;2o^4)?#>gR5mr$r{$?L@gVE_ z(Ae1F!Rfn4Uo3Vnl}LlPe>V#yCeIJSo#1K`nP{SCS6VJIxCmrIVb+hq%EaYn`%%ZXE_;eU) zC-~-Pca1a@BoQ{{J&>K@m0PrCNZBJyY+`b%&G|v?->l&FBRsqqHC3NH$%A2nyREPE zv`S2@Or<^``xsD!jb@WNxz7&;H+veO3|{1s*~TbU<(OzgK4{pXcbkDuaE?overw>& z>ibd57yl9zC{r9AA1EoQ5f?vA^-`o%5gAzZHx);XrGsa+yIX=ynJ|iof&$yR-(~f! zVMFqkp_U#BDz6JOv5BQ60&6OwJgK8=*n7H0?u2J=WdzN)-0!hmp>*C3zq)9)-tRpf zMnAFM(;n5Dk8pgDfUvUv$!2wXKsmXgV(6T;Fwcs?q|01yD%Kaly}P8;CLS>&1NrnW z+H2a~7jq`4eS~hCZ3%AA6mO!!Zn5I(5_g}<->ik+95CJV%U_LNsH)1{?E1a|$^KWL zKYvSM3k+Q#xLy#eJ=^fYgocD{Zchmb2+9R7c5QI$*)?0Go~Wd_WOw(k$c@rV1)av| zSIC}SX4!hQ<}(tEXTAJ#*ohTTT<_}Azq%s8d1k$6p6jXg#6}ZN)HQPN9>zQ5I!oCm zQN+bms#j4(ggf1$i9P|Sr;tY+>d8F~r9W2-3%g|-R;8=&GEZ(~$B07MZZVhVj97-Y5wig=I+__B64nMF6<%fTWP zVzo!+HXAnYZaSCi>r>J@RT;6yh^%cf`W^&8AP@>ijW^GKdv!a1zMl5+%S-ZNdYAcG z?r6_QS@DoN{(3Ytpzr3CspCjV{wQf6lj&w8#wTdUQNGc0%@cLL)^X7yzyC`=^!%dZ zMm}_(V2_s3M^)9xqdC;n?7TOL;py@5;QIModwYbZ=S`aSQ^MCiwks#xnAFdfZ&wBQ zV(M4?#Ss6*uVrOV&*XsyYxor;Q6xii_doWlzpGpnarGK@g+>E73x$Qn8HRsk^e9PK zxGBr}dR=&^X(CPK;)}*dc8vVm1&zLwe31Ej_09~@3*QLn#VQSaYj!bB{dg`ujjaTi zz3v{0u-&TIpv)lM&ibdZazsWtGVxCSWiQDy6VgnYBwu0(SO8`SQ$)8t&&Gr5_VElf zkVT{I@BVW5Z}{onTySV%9bu=lbnTXXB1=I5*ea!9K<=B%iqxgiK+IIkN`GuRUKLvk z7+o8O18yeGJGtfAWTW_`{Ud1-m#v4K4*g%2i_4_KL@JCjRigb3UnBX?+Dp0PfEbqx zM#21Bpx03RddRD=;Kt}u#~L)m7Wp2|sX;Yl3i~Born_<$@>);s{(W3JUDAmUzYGBl z8c^8M@!Q$EIMeKA?&kv^|M=a{9`myoPFr85y&R5l_p5c?Mj$)h1BSBHF5TUO6N86& zSc*0ovjOGJvHj7FNX}*Rwkcvd_EYtT@ZRsI1@fIseaj`_r z`%=36L#2Al3eR}rQwFql=5KnlvTFaG_x=(+ZKD!eWv5!huH;~6+!NN@)4~nyuKnO# z1Pje!_^fb@Np3p(zr+sqJIXqZWu+W^VNkfE!nCPHp`Oa|p@5b%((Bg81a8U5@zDt=+I4iSS)ty%7 zpWT0wEKF*SbK2V%-mbNIK-$BP zLEA{Ci_c6!7kR#O2c39WCfR_M(SqxNf}1m|^JA-<*TW$vAL5JXCEXVC_JXi6@|RCs z17}F>J}6nk4J$JdO*(?Z-v@(_mwMEUji2VqoY}u}cny|YtUk&5K9`=ZA5U&<_{nWi zM1xA}30vg9uzqlR4&`43-Iv<+uXJ=A1>)^;cdm5)3tH8JwJB(SgH!hNGNS>KyNuHg zF8*Ojj!$OfXVA=vP5mn`DbD~hF=mw7&j69hqQ_qG_QH`+T!OGbOOh~MLYt5Zhg@*w zC-%kMTGlXJ#>`DXo1oSZw66DUVe0=#(QT>~(IT&l!eD@mVVpN`kja!r!mltclnFH8 zATc+U;!!W#G9x0I@3-}dvSx=KqVCby&6*dy-$5$2G>@}=YbkTxbduy%YCbB@)e-vdMy@BU;W>sc>c-y_GYP`u|>?(ba!!MJUP);n0)VC zy=t@~ltjsjm=+BF$ymr)c#$kfG8PX?e`}M&R@5HBai!(_{juD`_iqrT6}|!W#!cs1 zfxr2@+dEul>QA~os_)oYNuAF2Pd09pecBnGL0xElnwyk=-Jc}>hwcUcbRFSew1Ru} z?945TrjNl+&K++=-q9#^p)F|0AVLFwx#Z9K1NYjn@@ykkdx1i^louo%!oO zAeAicX%H?%a&5|Ko^Eb`gh2ju5!-P?;Ir5M##3cfFQd_{g8v9Re+qI?^aLlMh2i|1 zMPGT-6XMC6cE%14Cek#V>^G!Q+2s9}lF2spWRWEv{(_85wPW9E%x(Ga(aY#muG*QV zvs19NqQ%8zf)$oUL%l zONogcrz8ih7>6DklXRbgFTQzd$~003hM&ql>odd9;?pMZMoKeQT>NCy!~ZUlJbL$V z_@)p=cy$}%28-o=;pKnU3`Q72Rv|@3=3Nyz&zHkY%crUm)g zuMci+WQlJ{@QQ6f6*j4`0Gz!I9-Jv~Y6%(@Yu-k-tTd2Z@ab>}%NrjL^FWxG_@O&O zg;++~ssd?V*4|9{9N1qpr_1(9d{Xd^kmqDMer^ zKDvQusB#|y43;8$ucF~=o8e;&-Z~ z`fC{W;)1Wen47Q*h`I!Ybs;~t`cV&vz4qU&_#5jDHqG|B+~b@xcZm`BZMn?sES9>- z(N^!6VKif~Co%3L)LLO!T>WkCrJJM0fb#d3vy?(F4|VaaztS$#sXO7nXh+7k2@=#= zbGH<9RD`#`UKfghl900;Weo?ZP8?tCb=-hs{0Jxl@Sm3Q@%FWJB zWsegn;r{#zPm)?%k3XLd{z*O6s~1;e3=DXXGt}SNw4q?=8p#cb^sGVsi6Tn=)=*>5 zlZez^`P#skOltXQ-^6OZUC(~VJwDZzm~?&xb1TJp?$8N>LRI+5=yQJu;X5$=+3$bN z>&GoQ7+5PdnIsi;Dyw5lEes2d%vW=bD?xYlaVNJ1dlsUiYr~pcQS>&SpwUb&UNPm> z5CGh=j%DbOU?hq|_i{GiHsqy}FDVX$B^>5Kp8%UePbk;5#9F1ZBMg_J3XK?h$;+h|Y2EZ6vi2BB z!PMvRVyMEr=Uy=x>4hzfWBy-M7)+)on#y%PJ67d|v~+y(lP$MN%-Z{5`KaS`u-@1jDF#!+v1Y6| z18RzZ2*}c7Xs39tq-LFT3%|4Ti;1$l`HGvC_Z#n(^7QoU@$Jo1Ia>VB zZP>Ys{-+^-Yj4hL|D6GC*T=OtrB>&qRyW`_Z=1i6ohKDh4a6!ow`TWmt3W}FtR=rC zoVFQhzcB?yfEtFc4xvbZ9HGkMd$K-%F0L_0Sjv$lC-cO|lHPrgr9SX2Q^PavOWjt+ z7oP`ti~vpqU27Z}D^|6cUrcwXX909Q1K4K(ER}Ko5aT z?|)^6#X-2W**Cvr|IX&c5fdQGcM@Gy9B58tgXQqjw@&Q8|4h@P*|UC<8A6InhvcEA zQ-(@utLxh2K8UPCal#Lg^`G;kt+pgNtP9C{{ZopP>R~K|Vaf~AYZlx6a8F(;$AIaY z`JLnAmL^)1Hfbn>R^DvrT%6_vk}z9Pcz$+ae03%>{K>qJ{?tIuH1&`)0(aq?jQs_b zQ(DVQFBkQn0q5nywuxuQkFkPzzXu@B7=>;2JaLLytHg&V6kP{T?z^IIJ;MWAq6;p5 zugMHwO!mp0`~da$MCjE7Q|RTv)dey?75 z_KK=ij*a;Rb-EK~Q-jLLbD=Y*yu9PSxKE|=Pmd!$h^+5%g-vz@8ZmM#r)ZmEJ$HzL-uWO?W-#`#y}n-BnvFFH z)_sGxbGDAAC@GUhQ@kV(cSge?95QX92M5GWV9VMusQ0d zoA?=hCX01bF`d9eua?4a_A3lF2du9DmOjapJIoqx#kTDQ?*+~W{#{WY6%AdM2tnG| zEP+469xP{)$1U2pV+^w6`qab(lw$9TdL3R~QmhSKwXs`AzB9@FaqI+}EX&F&xXIwp zLETdV&xUBCg5hgK`=u?f7#aS_-@k`x--?Ty;wW7YPGgtTB)Q^KM~?jpg(XD2l_$Z|g5^8k zK2D{MmRn0%PNVFB-8qe%1{bpIz4j3A34wtI%W6SB4NbqTJGu^yRO))hU`gAD3(Yrw z4o5eR-hNefG<5_hMpPyub>U}e`E7z^cyt%sktD|P>i5HgLc2RVHH{LVgD5&Bde+Aa z+gJ#b#?;$qy-OI?>NYNfBd@RVqJOBxQbt>rHpId>mA!MxOSAd=48;1S^wX4^Wooyk zguN&^%ItY&hVUS3WB?eTOZ%puZ<#BQ*vcG!l zfKzArHy!NG0pr^hhDaS*(dIh~(mMjM>FISZb(InH)vmyW+|hC2#hzMDQV+WIF&X4v zUO6`O25WWp&A6<*eExjA>3TBxYI1vb_{qlU`=zL@ z4BzcfG{}uFaZd>pzP$a~7yhJF%5bozCLf5Rwo<)t((bLd zlQcQk>Y@yI6T;(#?*F*`iXk}}G>wRoYyiN^4r`S99AQZ_H8S-o@)B_rCF9>2V15Im zRz}VM#y7@iy^d93cx2A&Ki9f|s0K@`NBEeFkT$!y*j+8(Njt^#5 zizdAaepdXlEbmzlctB!QM!FI-rcj?dS7H!nX2{XZELF4{{%^A()Vhy{IkNbxQY?(s zlhK;rS~Ixgixl4eJv}Leycdl#qZBT|-7x3cn`T1};M#q8g1hNly=0!MJwBb8wg%iA zffaP}z7hkzidVZWzj}==h~1IxQ1?LZx%e%`X5xm{YeSgZfMTT1P&Y}opv$kwdrZ}% zj5P^%FGrJh7=M4-2(uwZlVInFqF8AZF;y}~A z*42dz`RzMTCx24E_ru#%_kOwdRorq_sa~K*GX)!)M5Tj+{YDlMO*=h4Jrd`qe)=~% z^`FGWuH8}U1O%kR-({Y|gCQD?82V_Jhiyu_GYlH#myr+Z)bd#|4LL>^Cy~^ zwWzPhpZF@C@8a|=+#>EBZApJ!%1jU`KD z1r#U{blh^q6#CxS>FemIL@StT%N>mr;QZ&%=(F0mab>r&>U=wF?=1f~xA<5?S}S@B zUG`S+>gO*tq3gSWQlB<-jza>??KX;sj;GCMwv)o0U(byAqeR7jt}=C|BixGdEEn1y zDGV%0{D#cmTuaUl!-|Sf{!GAIA(~3IvcM}|R!YUeh;P_iWa5PX$P6Ky)vr13 zz*qW{9s&q#TT_*xIP0T8ODYz1!%>Wj5$`}mMBASX*ECB>blYUnKVDt0f+1Heo*c{~ z>`y!yfrOdA_Du61VmIL7#I_({Bq)RrTt;aAEpT;yWG{uO)bP_`@^!~b*2Zk7ptv!5 z0`WnLo9pdzjluKJ`R@L&91Ww%hd4zv2*8qivp3HB+ad z&Mh(3av*+lR?4PY?Ow8Poa$EOmYdkei4GLg_ciOAkn0cf1M^od;Jaj@#?!*nu=XGi zUBFwxW9n?*yM@yYhqyV`1tQa0B~9kNTq`ogWjpj;KkiUy6zaWd*}L66dGe{FiWPEQ z)3SR$3Un1Pak4)#C-l zIM{2<6%i3bO;b>1lnG7Y=r5t9D8jhd2VEvbMY)Pl)2jM}Tm$J%XUz6tTcwft_(yid z`z%0|{=UDzsAnGqlS+9!Hu$$~cwLJoa?VIm8wzNvaE@}+frcGm>{8hU-b^j~8>U19 zk-hURbL1wAXJS;>rDb)^*9I2#g$uB<0v-VL^@51bbat`$pu&5Ew%u@u6y6gKfj~es4-EM0`GkjDdA6HgZwq!`5uk`F0kzg@+@3?;~ z!Xh&7UE63DWROpf%dV{YkIoH0^e{1Q8>*d%D{98;vs4-ux;LrH5hBJJ72y=G@k`L*|^ zy@9tA@0g%&r+yuFSmu1R-*;GS7%Z76=x&Ldkb#6LJzyY(4}Xai1*^ z=%*3NLFeA3qNlu?bV)28g|4GPYH08Q@DO6 zKcIF>dz}IS7ZqUG>S4(Jt8A!sCcB~SFH)sUJu%`5Z(m5t(rt^TND*(q!o~$jYNmRn z#0U~AnU0gNHKWBxCz?7;T3=>&r)%7S*nL2@Gd(8P)Cv{@klwK*veSRSrL_AeP*jwN zel}4zzcd)%y2ZPt;GSEX8AL@Z2{A#ECymcIR#J}bT(&`xg*8f6^WY~nO+7k0+l&1Q zW>7k5lH|>|yxWGc0uTkOeV#EmQTNEQ3}wV!Fhm#TgaG4zEIZn(#=LGPbq%rSB>tN9 zp*z;)w4N!Vsr6PkgqI5Dny9n)&Q8pAryX6Z=qumn{rRsz59+vP$qE~+`sP8!#?Z`p z;f#&UN4(SC(d=+d@W3NmTk3kBkY7$Ff9@u&eG%qBEQe!q^MH79Qe-DZZ6!!9m0hnK zBg(suNIT|)?EW0faUm1;*8Ekf_o_Q)F|fmzf}#uE>ZQm-(!HOe#&`yr_BNoebu8!V zYk(3U85eL7RYvBF3~kcXbe_4F+uIZIJ-0Nd6e%P3fjFZZ=_Vsrg#z|dPsV7LZ?>Ea z`@JtCl0@d{PFecVEQ*+#V^A5lk_3X*%>0l4+`Yv?|W#n*ZZfK1@8UqLgDrC z5Uw?qE$VI9z$V8wi%^_EDVcbXzjpf-AHb@Or3lo+xd{!$1P7vvfTx1j;E>tv)^iG0 zf>#0qn1v;k6t#-3Gt92w2m=IUbo2T^8umxH$dTaX|1cF?4^Pv`8A5=1 zt;%;Y2PYo7mReJh^gVX;W>-I@KDfNlnxmU`&Mvugx#RvVl2RI>LY?SJ> z-%i{*CS{?=7gto?#=uyMD67_}?s>o=t;z?xxC=Z{1dL(69XVQ>k6@1~zBmU4|8U*8 z68xF4hw7uQ+4;zM%e|6wNuWQ2I!Y`3baxQ#?I;#9Hhws3`-TQY$G>KhA`iY?c3U5L zxLWikobS&VHl)^nSk|Ku7I#kz+W4co<>;);ni6r2+IU8@mEiZ|!iStrYq+h(~h^|l5-pkJkq-U{(XL$t_>6!j#mj?m_1PTi7 zF~}P6*Jz~XYo0VVtOnM@ozD$@gWtL5B#DR&eil9w)nab@BMI6&Q==i_b5Kv&Au>o3 zD?05J-`8L_&I4Xa0@V(H6RcLX3vOgZ_^)vE_pl=DIt&T_Z%@ z%x|W$2J+JFBJ}F2fEH3Z+M-FZcDQzzG3X69V%cAZ7eRe_ru}r<=wSV5UMqC0q){So z_0ml%14hQyKm7M_@l{+TW&G9>T?lUG)l4!DS!i{p;!1^m@|zx`iE5ozj6v` z*gw+WX^MH99k>@S*nToz z?s%C2bEEHkd$aPi>**yvwdgM+HO)#`c<7%OHcj(Ggi-I^`9{Xyj~?md$eCetT*o?Q z1Zly1lCXwoFOcbSJ=yYX2OUHcrFT!|$HhEYWz%u<;s$$jJ=@$&3;A#L%l7tKLGVfF z>*RSpbyY!M-uQ538v+P`Bn>MCG6p_OZCm#S4P9}^Q*sn;^`D)U-_M#|{i`x#iPsq% zd=cJBs5C4}Ai(DeuK+mp$zG^!z&T%ccOPV7`tPV%TU%Qd=}woY8$5i^Jo-nI!b`P( zMcbz`vVm_KUp*s5;RLgAQvT~O~Q zD}Ivxf9%zIrfGJF(+CmH8gtx7xy7G9(`j(%qB!S#U*vg;3OzT&URtX3Z*MB-SD zQ;)m?gploS{TCrqqQ2kmix69ef)yP!MU$c|_;L6ctmP$}JTB826j&?XaW6=MeZf4; z;|UfIe9+hX*;-Y#LETPVeL-8xzSAm=Dp;d6YDiU8Cy7L7?Iq#EAo!gdsD{j+b_<63q-qP#d)2wepUX{(Z_g0?bL{LdoJ+UvxP)@V#zx$H zRg?1=mL&}W139mi#~j2QijN<*%^zxj8D0lFZ9>9R0U`M}{oDUi6A!;tR&o^t?ve^w z_*Iz=;z+W7pY`U8PN^EpkgdI^a=pKwqG88~WK1A287EwO2FJtH05iDvhoI3siw`|7 zE5l(Yt?w=JlUcz-0shB%k-;i!TRU2(K&?@|^lvf{80($4q_}Rg4Y38ia9G#D=`+f> zG89~2LuK6LUNmE=2KcabAYreGQ!^S>V=XH9Z@*Hi*z_0E5bNW4sBQ1;959?upixSt z!7EG9-j^{S)$0=7y2#j@05dx+yV;g*8LzNIZ5QR2KSm$YszfSSJ_?j=3xYwA zP>8e1pRJyQ8VA&hDPRXzDzz)W3y^_=Zq-7ov$NuM_} zC!cfZhja9{BxHY{8ZykP_+&SAFoYbbO|VVZzG?`AT@T-wf|72r6UW80i+Duq*p;CX ztuwnJ((;LGQ^2@#!9Pso<_A+0ww;EPb39mm#_WPmc~c~<<7%cuN=D{{EA;P^c-;P# zIj57y)#$Wga4xr1nzVLG9R@r4or;@kgAj=vjU85Hz{T>VrvvafH|L@Zv{`Zub#A$^ ze&O?_0|qpr@Yh1_fCno$)*0pW1ZixgG9Dj+r0MwG94XTodV7vnC;OJ}i?>K|2e1O8 zlod`!Q5_b!%uDk@^Iax3-)Z`{>B|9ppvp7(Rg@qcB3x#@&J)jb|C=>`9DIw}Epm4V zSZAp)(qKfkl^E4fmEa`-?%H%kYv3WTG6F?F?`dZzNsrBY`?%Sby#pCl9`Iu`B`1IN zXdS}LQcjr5dwIAvc{3OJY}B2O`9I*WXNZ#|m3Lf(O8ryK&5Rhs`j**JOV}due^RiP>rnvJz#+b#J6>jpZ9)K-8S>p9+6hhh=ar;^ zu=7yk8;J+%!>VQjUF8)6+MwG5CCTriDZ?O-cr-OTTjohR_KEhp<%xkurh)iO#$^0l zuF|F2*=$5Qg%k6bX5ul;6IZM$_V3Gm#9X@I`AclfruO|kTSCWakihv`{(AXeQGW5G zR-u+kq8mQlLKAXc{$u!hJAkpoM)#MQ3%a)TE1A9bkFgx8!w$13kF32ZyuA>K%O#%m3QMDjjqzITby?6MH zy%Ii(oMup2xDeBNGLg_ir%DZxe34pm`;}J3Hxq94&ED-t|D3f@_kSR@l5%%K*GeS! z)VAEH0f4Z}vJj?H>HV6L+VvLsT=);D)yXxV-W)D0kkrHPbl1fR&-ZVPpP%MsyesqB zOvsPzb4gqx<5QL8KszhJ+zeM0I)mi9B>6MhAf}YbQ=Q%h$x9VCO>Y$1FJMiFbydYJ z{El>s#P!T|7w0FFK9+Bvf`XkG3HVT2Re8l&P|p3N-#5n4(>&#AUG^b^GW0D~Y_P&{H{loY1|% z#Ss?D=&fZBXT5?qkh&M7+f#TihV~!482K<<(`Wj{#+XC43ItL!j5!>_NI51i6d;Y$ z4||?FCCZ;N&$MLzlAt!njDR+e6~YL)K24TSA2v>A8a_TgPS?mp*6Yp-Arm>&*K#Ku z_@YJDFT^2=(BZ-0*Lr6F$CYjI?U)lz%@iu2=>#}&t)3}lf9U{hrhJoHvJoIoJ?h!) z*))4nS2h!cr?L>%u-qnth&VEJ};zU z;n#Oh&kwklAXP@oX+_0qKXT?G)zn^jvS;M=F-CNp^EK%$rc&a@hIv>p@f5C07(H-} zf9s04lnB()p%m$k-TUn?q4=reCJfa}OJrwSX^;`#`Pqb(9rqC$VS$hp6LBx#4q#XJ zU==}eADB5$iN<^hjxGf6nOaJLh89?B(&%vPdp#3+K?_kact$=E*!-hS&^!Gxah!dZ zqa|L`{N2dTX3xvtQsWb9U?=p*5tMQ`?Cly3nqC3{{+<28({>K*fGXlftE)_GE{G+K+vp|X&7_Th=l*AjHKguCVget~J|TXmy^4j8VpBCw0xcsCsC;#2`sY4o zwcpNhzG@O!b5jJV&0a8*)DoWf4apwRQfC~ux3|@pb3|&8Ge?RFM2V!c8>aqZb`uj& zs31>HK9%#!SE=BQ9j`G5yIJO;hNUFUo2(jCeR0qf&_o(=A-`wZwHah%ugppt{u|sS zQi3X3t>E4#25}0qBJL8sVIqyr-06aCn}+f%gdjN~UO?&><`di2rVYhMHvH5`r<~ux z62C*`6O$gMYn=UVUYa%wv9t5Gx4(mQ9cBa>8?rP)WhBcQCz>xIr{`;og(WSG$s%Rk zCZpfS#vWvY(21efiN9As^i(l(-K|j8tlwn#Np`DZ0y~l_-Cu9N${b{*yt7&S75RNl zhB*>e#H|tJuqg!6*QLE)u4zfk5*zm&22YH%2_6sXB68&YU`#TxI148;y09=**Dp$o zPmr{(H%|dWH5B00Scb?V#r(;a*No&g;wJ&@E7K+?;K{=s*Wz zLk%d;jy5{dR!{4Zdk;e{Z!B6*g`$5*h#e9-^0}&ND=v-QA3hq#?z<937 zjyc>7+X^T%LyRAv{`wU+;~F|V_2EWX*bTD$ya(*BrOB&`m_XCJ4+-~{{>|+0HVL$7^%_ji( z*O({uM5`>_n-I`Pk+TxvMnYq2$Edw!>3~~@oft78AgwJGuc*-oyzpgZaxw0kq1VHJ zX68L?A`OpTBse=eHDh+!>(w&d59_ zC=nbsbd=8GB5kz^AIWj2dFOK&H|jl~eK0KEP@<@5nx4%0zE}NCEf{+b#H~y-hQK*F zVQZ1~Tf{rw6%m!6O1oo9BM26?T*E)SunuATvu6GLHZdL)XC~SqorlmxGsPg3x|f+) z3ZhYtgM2^s%m&wIJ8aQ<@&iE-lc@8RqOMnzL{oL`O(lgw;ojcxWslXRJSbngI}W9- zh`URcDMvTr^vmTyXPU0zd2!Nq_C2d3>#g5x)`Nl+J3L69G!~1Qqrn$n1Hhw^xivok zB!S`_S@bqqs=MyclJEJtlgcCjx<5@e_KJ_ zIkp*J#u3EC&le-oWAZ$aC*G8Qh&3|e9nf#*n{224v#ZwQvDQ>soDjx`uqO_84YF)g zB&tL{Mk62#ipMmieZd{5t%^pmk7)4+fHo{`pu`vN1z9pLt8YjCr)*QA{Wg;wk&rSamOMe!j80NqCKSpjv$&hYND>`WF!SMs&V;M*px?v15z)4d=aJRB0+P(mJ1_bzugR8c7M zj1_T%@D?P_KlW1*AK7eVZe|%GNKI#EBI!P=zb zR#jf2Ln#@UQSflJT#r!k{oVazf;iS)ObUBS%bsfL$6e+3nZ;ut`AGkgJL{uY?cTh0 znmOvY%q;NV|9la$NF#UMJUnQgv4u$hO@G?sL;-%8xPL{fqu0?;ALB)ASt+tUB`Zq^ z%s2*3{7$ylY^T!fg6&p;2MCP`01F?{iq@}T9O?J=WuiMOPw4BMLi@+bM`v`yA z)W}kI2}}{aWS9K`g)mAFd6fIWFbd>$K#NoD1c(u2(rXvuV8aKlLK?-?1}(+Lpj0m< z$kY(dpf4{$#jUQ6W_`!+C8wdihUt#sm!gWk0PTsg=ld!(DWi-@g+bBRr{!wl%%a2r zC)+f=y)FrTS~E!y=+U!y*Pqko$)fcyveT&N{*!p4_ufdsaM9T{;$rs=)oNf(JB((L z)SF1Aw-f%*L-}GPX215@0j}~`cih|svxcT4niTHAzW>Ui91h{++AGKpG01og?$Oke zXPQd~pDQZ#fqead`hG8Hc~x*A|LBRkkUzP%UgZrJfa5K*UT5_F)m2Oq)6H`5#ofy> ztE61QwQ&$fQJ^D}7|N^qnUL+g++>q$TQ7J>BK`$NI6c43_2#7m;q&L8>{&qu z{kRoW1xKYB_oQuJ6Y+4;@?rj{y4e)%#BXD*fFR_BtX!F&zDg3BIV{H|+_x3a)_?Zo z_&(B_LaLaokd#rGfE0yzSiCX&hfXBR+h`VjnL`!{gCrNNFMKWrFjDBj_Xkf4;~wJx6)cetKj z57r~)KY}0zaJlSlj21B5d+5PXZi|>!M9?_F#4IbvN}YT<-t+cKJs7;!u+ueMb@1j$ zfgj5dL4ep7UCzx+m;j6(@IXT`1s!LF#f^R7!!KiK$c}H>N1euKqP@MOHvA zZ+*Sh^ATdp_)LagmM~ccx5bwzmBjI=nmO_%kuek*%Nla@{_h8QqK*T)nxgltDL%`O z_J``X+g{ARKg6@CZwKiCBy4=@0gV`5^#D2fHna~Th-ge=C4~qG$Ufm2{rF{R$*B?J z2O=|yxc_4Zx7ORdt8bm1S|2_j0i$lZmiEu=eUVYP9#fEOaJhO zghdeae~tj);rv~NFnq1^el8Yb1w(M;KY#w{^jO3)=JoD&+^*%Epv3Re6s=_66v4Y4 zb1w{*litGW`0JdR@j1B`3uB%Q=X+aR?si#^#!8U*X69FP`xkG$n8CeqeF{_TA^}mM zs~Iyc&8ukN)@6Cwn@iv8ZO{e-%ybJlzUJQGTOJ^LK~_wV0+@HHnxS!QA*Yph-p`Hsy#oa{#DBNJtY(ID+?;@@i! z27BFen>>z83vb4fj=q(J7-1?-$-$|Ss6z+>F=L@(Z91Qr)gQ9J@C5-qpAP;B7&-by zsHsZ60FyzSFl$Yxz(L`k@izB?==V@t-EbLb&%jFZI+30V{p$LN$#G|u+Et#>R#8YU zOp2^t?KOq28as85kSwDDUotd~V+&~nl4{FO4FJ`&J%7VQ7&WDArBH9_=LE= zzM%OG_BNAT>5$9Xe>`!Ttp^uU*J{4d!~f*(YTv->SYzXG$UJuTCMNWh3*&OX_i@bF znH4QYLLC|7)3Bx#abu~waD6c`+`J{YFLU}w;%uU02*%p8bdG+PFIv43yxAV-n5H${ zEFQL}J-0CwJl`YHy1#C-0X@9Ds6ZU?@l`W4Fc@IK&HW|Os@stN7)(QpJUe! zLHNhXZ%-@Wjea03yy8z*+7&b?MRUh_Gh|AjRWGm1LCD+<7}8hOZFl8(gS1|U6~$V3&}E!?cSx@l z)e$E2so751ez$t+7|)^gg!4^{gV=v|AIt`IQ4aT34o889U-)+9*VTrWI=9Ql+AFE~ znAfvPIo03A>Q-|~EO)d-U1pfoFA;l+YDrZO>>mo41}Q;VY}B9-5HI86vil`YzxnsJ zEVh*wx+@)$s~Zn`3EW&&UcK@_m!5ZMU%>%Y8M*f;5NvBh&l_LHos9wl8+Wf+DsdkV zu)j1F7uTZ3i~#N~>%A!y)bX)Z2E6Il>pz0Qxxf^<01{kg~n|Tv-9<(?4M^E1ZwF&!zH?cINw|Y9Od*H8|voc zbN-JAkE0L@+V!+r$tAu!=dtl~Ih&e}p-nbZS^^kxc^f~NwEBT44p9NB1d^;jVb-=( z0F}e=>leO_57qsm+*lI;HQaLcTCDfURP~0jK$Ti*T}jtc>`$ccHths8w?b%$EFqA4 zKh>2L3_9VYN?<_Q(2NN%!v7Rg$Tc7WHuE~bO=m1AZY?S6vpz%UYQEx2ExE%e2O(Hc z^i_-Xvy6h3njwx`%|Mt777+dgVv>$3}mEvM{Bi&FK@AGXeZ!!B78$auD`@leE9G| zm$JvEo=q(YFjZ|45y8;UzbHY2019Osq|O*$#biKS&>wnb9-5&EAwha3IGZBuQJTgE zaN!E~YCUMdJj@vw{1@r60nF-TMJ7gbhtEX?inoFxI^4Mobb(qjA?q9Ep;sB^Nx@4L z9are4HZ8+O?)XirkJ9}eT3)W{s%GAZFBgR| zdr$D43speh(pc~+e*N-gMNRJSA;fLz%i&Y`t7G}|Vppn!Cuf)69t>Z4-Y5=LD@cUZ6iY*8XN-SLjQGQ;XW79j-iU=MW7{zMxe4mDg!e_JzQ~dX??xYOSXS9o$=*X#ClD8lUc`%$19bR-RrAMt`Hkp z1ucf@8P)(8J_twW($0OGpYKDjma&QljM}RLuCxpc>Edv(VFSCX5{T_O5)HaOyj)T- z;1B0l;`gybs6dtBg`FO~n>Rg?%s4Gjg{z3Yh&8EptHaiNEb&`LfKubtkja}nJ{s+a z5drJG{;LnG@AMu3<2DN5k|cUDe2omf(cg>G?B3Lql3*9{rBi z-@RM2GlUq7S##J&Jc5Nz97ve-uF2Ep^Dh+4>RTZJqxdOgZH&%OzoyFsIH!bE-aX!3 z^S$rfX!moB);716VyGDEL?`MjEAhJ?x%KWYUF(Mc_#)bApo65svtpC_g3d)U;B=n^ zIP_*Z4)fO9uaC<+j;mc|4!$7E{P7@G=H_s?o z-L$uBV@n6%uL4(ppEY<4o|#tCC1Q0(^%NjU`l5-%5H9@i&bXf2ILuIbttaN=Afjt; zg4I2EZCXIxUD_bGQc%QM)M%i=f^0A54H3YBaOV zFq|jV)PER!?%BWc-uh7mf z@;uuy7*Nblz2SOFO?b;R!*^%;7#y`ALqLD#nVp3D#t&88!G3ixXz4_sJs1Xqzx^(v zT)h!dL3Mf-MJPG#=pBWkTtY}B%V|3eeg;$%ygBGR;NJXSU1uH+b^q@1K_Qf}Bt^+C zkL(FeWEq+fvP|}MOdiU^SRP9uvSf+u#Y6~=Wi-mZMz+KhAz4NSLo$p>2;+SG&UKx0 zoj=Z8bMe=AjPLie+@Je?zh5^MmIxzN7+F{=y7=SL-FP4!Q&Zyt30NdX{}J^h;CWlx zU5(gVD=ljeo9);_q;EEjPcztb*GtD+7SDmPuE1lUe?1i|dO!f#N1x)=mDl@C>T}03Ko$`MZ;LpGTZ+%7-q`|J7tp0{0%>Pj!61#~ zAu~tk`(C8MBmW_hdqF%=6ZjbQQ}0%j$7Szb-8rVeLj1|eXKIo)kOSNWXk7nKp-o$9 zFQ*G-)^(MRGHT1au9J7_p7Yh3YNe`Q?AD3_ATByA36OFe5vs!68vft>3c3ATb)tkF>?lDWsN)bjf6+anMI1A}^?w#>hJk3Ye% z^|_HD=x5d>9d1y>$th0P1V!S8H62^qYXt`|7yC|;+;kB*kc5Xi_t!D%o-_9Cp_*+# zR~P1Nnr@B60GE{KN1M!s@=}n{)$-fhE&y%ZJi($P=bozpXf-)G1te-aF?g-bJp2c* ztSqmn_FEeZb+<_V2DAEfu|SdOypnzgUJ<00_=@#j_^vA%aE5^_5FUlU01`v#2=Jq{ zOmAe&)JWnUVRk7&Y|Qj%XD38si_7DY3mJI2oqy(d=+;GIIm$p-2< zPJ^$t+%mG&QvP1a&`I`9pPgW7R!VHX?1PJWgSX$L_Mo8uYpIr|?m-nOLb5!%Wn;eE7EYfV=RNyp28j_b(2b-# zUb_a!Sp&Cue{Zf@WX2q7?Fn9QotI-&T$9y=d>*vgvVMCZCJwmGP5&Uq!6j?EsI(V7 zTNk4+odah0#od&mr)^?@T(1d7Vjvy1NGYS!50wLtqRl|Pp+Y8uGWP?g260XWN5ESb zP{}S%o#g5Q4HdQQ6vHH@eO*j67P@kvGtx# z@~|t;gi44QxdrsJW z8_ZqZu&wFfF>;JtV$9hHlLkc(k?CfH)gSR0t=bcisfa5v-?M&dvu++|>wKb1KO!0P zWzx?1wut?Elr>}s6eiNg0!q1jO`(+;J6asQjdMDu>eG-_2cNcB#KAy#Aqb83&N9Ez z!QAg-5I&4oc&+F>^0`UQj-*=3j9{v!>%%8Ef$Q6fnF-Qdc)PYFPe7|h_ z=2CI05g*tnT>x*|Zt|Rh5H%-z5h{^?s++P8q}L_6K7idfKrOp{`<%2PkSy0WPT4t; zfMFl;=x(k7efyQy32%FQlt8(6dHL&jm(Ob={X4JEp?lnkdXqzcaaqeV^kxBvqvoy< zms%qKVLiY+J1F@=k8QRosUi{iJ>A2Q&oIqb*lQ>Xc&~t94-xHF2BOIyOPu>zjG$>J z3-_!KmWLK3b)K_BlF7%=cl|fo-1$7TZpk~%!Cnf=XT?TEJxpd1e`|ly98@R`c=t(i ztjQJ*F8A)>90XPg7tJFik4sluYl`pbGK~Wd_HEOlkQ33aAYhzo4DcMn(ZgLv-uCzR z0~p@w!-o%pY?>g~Asxb(i$XFqQ>-dR?@lTTa&^07LqkKcSfVA~Z|LFqSGOwkpejP_ zQF%9pLvT|3OP#S`?fnrd_e}JRux3$t4W*%tSJ))xZ@0d#C)HI>zxR=~xm)4v4}gD| zaPPBnASBrJJiSkn*W-u7F+t7xO3Y2On#VMUCyMwW2;oC5>+x44 zt+34sYzmcand#$g zLWZSB3q#q~n`!!;OeLBgYGuT0Ke8!8I_xF!$7c{%)O{&2Yhi`3FoI-T2_g_bAT^#2 zAcaHL8M+62J+qy$%K#6crU!*Fw*|~$bfx?=> z09D6DVaV*plx*cf|GeUeD3A*kz2_+g`jkr-i{-GUNf$n7BEta=jw^k(8G3p|14 z8dS49S1w1XqTHgQDp9!6KUDmgr~pJ^AZ{gFy8jxdNSqvdf$^g;x}}ACroM1fro6}w z)t~{mb;;Fy`lw4iTCy=l7S|p*$`7KGjg3;QT4CRc8JCjg2@U6-De^OnP;g@)1 z7U*^FQmcUHD=S+qeH?Jth$A}dr=rh=K;q(ehKD!4eAyW(Grv`VN~RN>n!y5b87TCB zG|l*lEB0hUhaaWY`ApWWhC1V|?VX+TpFel9v%@-FPAu|obW{*JjV7!h(+xRQc#3bz z3345E8b_fn@lb|K24eLSh< z>y!7KeSlExGWmY8W%Q@Qu6W;u<FzUkdY8)dnUG3ELe)>|0 z!{@huHN)Xims|9fzbyLH>p@*j4M1}SNaeT@MU>XWeR*L~p#IaZV5`EHw=~Hqdo$TS z%ZjE?K5_o$6o*@|%pU%k6KB~UoagLRcC_o?A0+RUU{L1IwRgLfB8WFbJ_L0IP?^Wj z36@$sp|wq*9Aud84npAl+1bZ97tKg!5=dF9Uwo|cc~b|8LOnJ~|BuQLv`0Wu;#4}G z3c$?-8_RR&MdeWG{TAaF6RkBsYHmf9RKYoX1=x%>0gE+F_}x>GP;cW+u>v}DP6&kU zd|K8RqrB$s7jG?uX`yP1_8KXN5x6b zD7Rnn;v?!XHO3&=$IPTMkvns@Dc+j`9MSNurvP^cj)_{y zc9D?>0E^LhXPgiMn<1FeG*hUdgcU+%<;S6+p^qOc2?VZ#KYM$7z^8YgoZ3qv+VY?s z)I^Yt<{TmamHKcP~g zqJGMMyo)!|SK+q*xz)+~LpsB#x@o$H{;Lold+9_8VnXFW(EW`1&--D>V(IqLNOB*^ z7uHT!N9v_R(Jxk3?1JF;bGP3x4gP-d`O;3wx0&I?>Fb#H_UOHLHS7>1UJ7v~I0YCB z#K2v8O3`c+16+>+(59wyZ?Dr+hcOWwtHjPykT<{rGkb)*?vAC0z;s-5_klHNcoQ_r zeCLh@MG9nz3?xK2?61F+uBXck#8EOmwCog|fd(CVWOf&Y#4GfAoc6BGii+xLbLo2O zu5jJW(c+q6Gxh{<7Ro_o5xK7{Nm@BlXT_n?eK9n}hJE+t*Q?Qlvhq<(?*;Ij-Gl+j z{sy355s8x^@CpCJ+Osh?mvDs^VqTRkX=s6ZHG1Ffmgntr0+&8%u1(ZNT&nk?n8&HG zUQ13}SUA%WOC-Lj{kBJ^Tpt;}Jmp8pn|W(~=Vl;`#DG;>;y;o|q`^U_2ETWV7G<6s zU=hlPHP+OqDl0!3ynU7AU~4Ovg~VHXdw58lOLb`q#M@UHSx6x)1>tuhD~ce|hO4xBwj;9p)zk-fjvOk?v0X3I>aohKAAQm)siM_PFgS;g{ncHVtiH zsaA?tk0t&qHmF@epwDY(`+j2{KAx7q8jAywQGBTWk0V#RlzG@9=8c(3Sf(#?(U)yD zl1Z&Tr^{Tm#2=dafrsNwGAM*#Bbbvhec|D~w>{hc5k?@ssa)Q&72Kh33sY~5s{wJ& zP!wb7=R{=Rf|=bIfMTktxtPmv$Q>ouU%JQ_mtXW=3c+iTN(3ZtOFPh^1}vE$+?FI_ z0B|ZADy}dzAvYuyTL|>q!U7XEP}cFPKL11d)Y|!&)7;1SUMkzAOWDQwhpMCrt0uSE z-e?c>(hw4Xw(`SWg_nUJNe}Y){P=_p>2eD%j;Ot?CpFZSebmj?(P4LZrgb=qjaF#D zk3f-IH zm0K$Jp_CnnqgQAT{)kvc`n)viT^*2^Tw*3>$jG};-uX;q`-H*~E0&56kbZBDer4;B zOl_g38P9M+#CE?bNyY#T=7duCGB=I^_PPMDzFnlgvdvtirdr9H-hip<9^7ytpD;}- z&^>?;SqSd9Edk#pLPplR*0Hv!Pb)9ap-Xt6hNih-=x#g09|P&RKK`zb(dMgV#v*>^ zNL|s>bSZ~h$Iw5T;5`y|Y$Nke~769*lH2;8{% zI;X^54jwkpooj1L%$-LLC7(4r*DXtHVO$LgBtwFn*RqeZKzJU+u7Gf9xk-l-3gdjT zRzN0pWh_vGS}m)z0|NH&Wo8PBL*}NYCzHCF%!r|#<&iQV-v1sa5*HtT^aTMdZAY>& z&n&es9llUvrTT@lnkjC=@w{TUlh0la3v_pv$U^qlh$eN@8Yn5?Bj{bUW3z@b&;A@U zm33jO+Lz9<8Jh-!9K81`gosn)r~U|~<)iQJbjHFT`0}yd``v=SshO%GcBbk3#zJ-8;u9(gxSYa&eLhGtGl%_I>g8ZR zp=EZm@MO=|g#i*y6I*U+XCYW?Upu@Ug0}`7prEtmC=T>o=%wVe^Yi?`pMcJtklQd^ zJbj3P8({BIKPRTgc`v`j3qh`qD-4+Li*$4dIA#G38JXU=hnSP@L>9h_KQ*)NN1Q=F z1Gz9i^oW6B)NO#IwC1I4!u&*aIj7{fkR`DtC2tz1tOZdjCorK247=og%YG7dpuC)i zm)8umOWpnXMomqvIe2YM-4r!yt8fc%oqvzk=vfdhq~ShUK3ZNRS6o~ScH18-E6tl@ z4itKbM&9G1rB8(h;D&>lVIlZ8{^5+2llA%v?Mx&B?DF*(hdPXdv-~oxE(dcO$O*_> zE(a^dt_JT0spHJwz6ahxK|xsTj_<*5rLIpoFV7APz#%@j7a29l{0Ue%VxD0&FhI(O z?c}&ES(PV0o(2L$-2;Z$jj~_>8f;ns)!ImKdo9W*G%}F`I1XXsnwBB?9I4Ky)pG3U zC@H+ee7q&d-@9YM0-&CpdHth4ST6}nVdb|RFbX$O0e64inq)@|r}yi{Tubj@e272M zs+EB-<{MEz1`!rmw%Jz>3@2a60$U^=iMept{NrR&4#=>DIP0NCj8k}iPUmT1=O*5G zmc_*z8ym^Q#RpUUdrzHGGD#0y9-acWw^K)=)^yR%%JALQdhQ@c*Y)<(C--s}$bIPl9*->>C8IvPHUYnsd-nGywpys+b9>~yK{D%X znb~ulh&@NVb=V&Ez=8ay)W-#AWR#*`xK8F1Jpb&b&NIruzVV)7;P$t}n0MoSFZVen zAXS=_Bmum8JN+?vc=MM}ed`^-8`|B{byOIWLZnK(vd+%ve-4@2TD9!2S*^9NdUC_8 zfgn9_tG21f_JK-qW=hJ8CJd(?&Y@AA)tT$Ia&Eje$S`kTSIsM zknPb^N;+rac9_gA{Feqo8GuG8tI*Gof&CjC@_O=)mv+C_%_F)4Q6>vMcdF39_upwCH7pq}vG(RbE96`ONMVesK)wy$ z8i0f0$b~na?ZR<-s=&sW3?N*9%^ldPdyc%it5>+r0|G|j=9(M)3G;n@W=J}iPvCVl z4X9R*opgNpe3=lPo4!;44*E4MMi-Xa39_N)F%T3JHidAs04&{NM)J;eV3* z@m2*BM2h01Gl0{&c>os-qdz0ESLW(+AfMz?Q(1%=gh2E!IIVGab!;gGfEoTl**zm;OQ47^ z{dY?@khoNgDhz~`+QPzr|Evf97__hi9Fz|pLLD3&)Cb?cf1hFyf1-y%HPn;wpTrOm^iBE3tJEi^4E!vW(;*MzL@^(;weyn?} zR!C=zUeK(k@1B%Bh>ZXGtZYmoA^@N=r32x%fgWyw7;Usa2K<7kDyyhmRMxntqG7F~ wuC07oTTSgRWmRou<&?JZ@&9vykFST} should be used +(\ccc{R} being the input kernel). Note that the default traits class takes this into +account. \subsection{Convexity Checking} @@ -45,7 +48,7 @@ resulting hull is a segment or a polyhedron. The function \ccc{convex_hull_incremental_3} % \ccIndexMainItem[C]{convex_hull_incremental_3} provides an interface similar to \ccc{convex_hull_3} for the $d$-dimensional -incremental construction algorithm \cite{cms-frric-93}. +incremental construction algorithm \cite{cms-frric-93} implemented by the class \ccc{CGAL::Convex_hull_d} that is specialized to three dimensions. This function accepts an iterator range over a set of input points and returns a polyhedron, but it does not have a traits class @@ -53,9 +56,13 @@ in its interface. It uses the kernel class \ccc{Kernel} used in the polyhedron type to define an instance of the adapter traits class \ccc{CGAL::Convex_hull_d_traits_3}. -In most cases, the function \ccc{convex_hull_3} will be faster than -\ccc{convex_hull_incremental_3}. The latter is provided mainly -for comparison purposes. +In almost all cases, the static and the dynamic version will +be faster than the incremental convex hull algorithm (mainly +because of the lack of efficient filtering and the overhead +of the general d-dimension). The incremental version is provided for +completeness and educational purposes. You should use the dynamic +version when you need an efficient incremental convex hull algorithm. + To use the full functionality available with the $d$-dimensional class \ccc{CGAL::Convex_hull_d} in three dimensions (\textit{e.g.}, the ability @@ -66,7 +73,7 @@ example. \subsection{Example} -\ccIncludeExampleCode{Convex_hull_3/incremental_hull_3_demo.cpp} +\ccIncludeExampleCode{Convex_hull_3/incremental_hull_class_3.cpp} \section{Dynamic Convex Hull Construction} \ccIndexSubitem{convex hull, 3D}{dynamic} @@ -87,4 +94,33 @@ not all of them are vertices of the hull. \subsection{Example} \ccIncludeExampleCode{Convex_hull_3/dynamic_hull_3.cpp} +\section{Performance} +\begin{figure} +\begin{ccTexOnly} +\begin{center} +\includegraphics[width=12cm]{Convex_hull_3/chull_bimba.png} +\end{center} +\end{ccTexOnly} +\begin{ccHtmlOnly} +
+the convex hull of the bimba model +
+\end{ccHtmlOnly} +\caption{The convex hull of a model made of 192135 points. +\label{fig-ch-bimba}} +\end{figure} + +In the following, we compare the running times of the three approaches to compute 3D convex hulls. +For the static version (using \ccc{CGAL::convex_hull_3}) and the dynamic version +(using \ccc{CGAL::Delaunay_triangulation_3} and \ccc{CGAL::convex_hull_3_to_polyhedron_3}), the kernel +used was \ccc{CGAL::Exact_predicates_inexact_constructions_kernel}. For the incremental version +(using \ccc{CGAL::convex_hull_incremental_3}), the kernel used was \ccc{CGAL::Exact_predicates_exact_constructions_kernel}. + +To compute the convex hull of a million of random points in a unit ball the static approach needed 1.63s, while +the dynamic and incremental approaches needed 9.50s and 11.54s respectively. +To compute the convex hull of the model of Figure \ref{fig-ch-bimba} featuring 192135 points, +the static approach needed 0.18s, while the dynamic and incremental approaches needed 1.90s and 6.80s respectively. + +The measurements have been performed using \cgal\ 3.9, using the \gnu\ \CC\ compiler version 4.3.5, under Linux (Debian distribution), +with the compilation options \texttt{-O3 -DCGAL\_NDEBUG}. The computer used was equipped with a 64bit Intel Xeon 2.27GHz processor and 12GB of RAM. \ No newline at end of file diff --git a/Convex_hull_3/doc_tex/Convex_hull_3_ref/ConvexHullTraits_3.tex b/Convex_hull_3/doc_tex/Convex_hull_3_ref/ConvexHullTraits_3.tex index e32d7ea1830..efd62c4723c 100644 --- a/Convex_hull_3/doc_tex/Convex_hull_3_ref/ConvexHullTraits_3.tex +++ b/Convex_hull_3/doc_tex/Convex_hull_3_ref/ConvexHullTraits_3.tex @@ -63,26 +63,26 @@ provides \ccc{bool operator()(Plane_3 p, Point_3 q, Point_3 r)}, which returns true iff the signed distance from \ccc{q} to \ccc{p} is smaller than the signed distance from \ccc{r} to \ccc{p}} -To handle the degenerate case when all points are coplanar, the following -three types that are default-constructable are necessary: +%To handle the degenerate case when all points are coplanar, the following +%three types that are default-constructable are necessary: +% +%\ccNestedType{Traits_xy}{A model of \ccc{ConvexHullTraits_2} for points projected +% into the $xy$-plane} +%\ccNestedType{Traits_xz}{A model of \ccc{ConvexHullTraits_2} for points projected +% into the $xz$-plane} +%\ccNestedType{Traits_yz}{A model of \ccc{ConvexHullTraits_2} for points projected +% into the $yz$-plane} -\ccNestedType{Traits_xy}{A model of \ccc{ConvexHullTraits_2} for points projected - into the $xy$-plane} -\ccNestedType{Traits_xz}{A model of \ccc{ConvexHullTraits_2} for points projected - into the $xz$-plane} -\ccNestedType{Traits_yz}{A model of \ccc{ConvexHullTraits_2} for points projected - into the $yz$-plane} +%One also needs the following function object to help choose which of the above +%traits classes to use: +% +%\ccNestedType{Max_coordinate_3}{Function object type that provides +%\ccc{int operator()(Vector_3 v)}, which returns the index (0, 1, or 2 for +%$x$, $y$, or $z$, respectively) of the coordinate of $v$ with maximum absolute +%value.} -One also needs the following function object to help choose which of the above -traits classes to use: - -\ccNestedType{Max_coordinate_3}{Function object type that provides -\ccc{int operator()(Vector_3 v)}, which returns the index (0, 1, or 2 for -$x$, $y$, or $z$, respectively) of the coordinate of $v$ with maximum absolute -value.} - -These types need not be provided when it is known that the points are -not all coplanar. +%These types need not be provided when it is known that the points are +%not all coplanar. \ccCreation \ccCreationVariable{traits} @@ -103,7 +103,8 @@ predicate object type. For example: \ccAutoIndexingOn \ccHasModels -\ccRefIdfierPage{CGAL::Convex_hull_traits_3} +\ccRefIdfierPage{CGAL::Convex_hull_traits_3}\\ +All kernels of CGAL %\ccSeeAlso diff --git a/Convex_hull_3/doc_tex/Convex_hull_3_ref/Convex_hull_traits_3.tex b/Convex_hull_3/doc_tex/Convex_hull_3_ref/Convex_hull_traits_3.tex index 1a86a05ac8d..63af9466c22 100644 --- a/Convex_hull_3/doc_tex/Convex_hull_3_ref/Convex_hull_traits_3.tex +++ b/Convex_hull_3/doc_tex/Convex_hull_3_ref/Convex_hull_traits_3.tex @@ -16,7 +16,8 @@ The class \ccRefName\ serves as a traits class for the function \ccc{convex_hull_3}. This is the default traits class for this -function. +function when \ccc{R} is a kernel with exact predicates but inexact constructions +(note below that the type \ccc{Plane_3} is a triple of \ccc{Point_3} and not \ccc{R::Plane_3}). \ccInclude{CGAL/Convex_hull_traits_3.h} @@ -101,7 +102,7 @@ function. \ccCreation \ccCreationVariable{traits} %% choose variable name -\ccConstructor{Convex_hull_traits_3(Convex_hull_traits_2& t);}% +\ccConstructor{Convex_hull_traits_3(Convex_hull_traits_3& t);}% {copy constructor.} \ccOperations diff --git a/Convex_hull_3/doc_tex/Convex_hull_3_ref/IsStronglyConvexTraits_3.tex b/Convex_hull_3/doc_tex/Convex_hull_3_ref/IsStronglyConvexTraits_3.tex index ba2da15fa49..f9504e0244a 100644 --- a/Convex_hull_3/doc_tex/Convex_hull_3_ref/IsStronglyConvexTraits_3.tex +++ b/Convex_hull_3/doc_tex/Convex_hull_3_ref/IsStronglyConvexTraits_3.tex @@ -62,6 +62,7 @@ predicate object type. For example: \ccHasModels \ccRefIdfierPage{CGAL::Convex_hull_traits_3} \\ +All kernels of CGAL %\ccc{CGAL::Kernel_traits_3} \ccSeeAlso diff --git a/Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_3.tex b/Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_3.tex index d7839bcd4e3..11408b3bbcc 100644 --- a/Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_3.tex +++ b/Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_3.tex @@ -47,9 +47,10 @@ Both functions require the following: \begin{enumerate} \item \ccc{InputIterator::value_type} is equivalent to \ccc{Traits::Point_3}. \item \ccc{Traits} is a model of the concept \ccc{ConvexHullTraits_3} - \ccIndexMainItem[c]{ConvexHullTraits_3}. When it is known that - the input points are not all coplanar, the types \ccc{Traits_xy}, - \ccc{Traits_yx}, and \ccc{Traits_yz} need not be provided. + \ccIndexMainItem[c]{ConvexHullTraits_3}. + %When it is known that + %the input points are not all coplanar, the types \ccc{Traits_xy}, + %\ccc{Traits_yx}, and \ccc{Traits_yz} need not be provided. For the purposes of checking the postcondition that the convex hull is valid, \ccc{Traits} should also be a model of the concept \ccc{IsStronglyConvexTraits_3}. @@ -67,9 +68,11 @@ and for the second, it is required that \ccc{ConvexHullPolyhedron_3}. \end{itemize} -The default traits class for both versions of \ccc{convex_hull_3} is -\ccc{Convex_hull_traits_3},% -with the representation \ccc{R} determined by \ccc{InputIterator::value_type}. +For both versions, if the kernel \ccc{R} of the points determined by \ccc{InputIterator::value_type} +is a kernel with exact predicates but inexact constructions +(in practice we check \ccc{R::Has_filtered_predicates_tag} is \ccc{Tag_true} and \ccc{R::FT} is a floating point type), +then the default traits class of \ccc{convex_hull_3} is \ccc{Convex_hull_traits_3}, and \ccc{R} otherwise. + \ccSeeAlso diff --git a/Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_3_to_polyhedron_3.tex b/Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_3_to_polyhedron_3.tex new file mode 100644 index 00000000000..8a0e83f2fcd --- /dev/null +++ b/Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_3_to_polyhedron_3.tex @@ -0,0 +1,34 @@ +\begin{ccRefFunction}{convex_hull_3_to_polyhedron_3} + +\ccDefinition + +The function \ccRefName\ fills a polyhedron with the convex hull +of a set of 3D points contained into a 3D triangulation of \cgal. + +\ccInclude{CGAL/convex_hull_3_to_polyhedron_3.h} + +\ccFunction{ +template +void convex_hull_3_to_polyhedron_3(const Triangulation_3& T,Polyhedron_3& P); +} +{ +The polyhedron \ccc{P} is cleared and the convex hull of the set of 3D points is stored in \ccc{P}. +The plane equations of each face are not computed. +\ccPrecond{\ccc{T.dimension()}==3}. +} + + +\ccHeading{Requirements} +This function requires the following: +\begin{enumerate} + \item \ccc{Triangulation_3} is a CGAL 3D triangulation. + \item \ccc{Polyhedron_3} is an instantiation of \ccc{CGAL::Polyhedron_3}. +\end{enumerate} + + + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::convex_hull_3} + +\end{ccRefFunction} diff --git a/Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_incremental_3.tex b/Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_incremental_3.tex index 2b4b5ee163e..613c7ff19d8 100644 --- a/Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_incremental_3.tex +++ b/Convex_hull_3/doc_tex/Convex_hull_3_ref/convex_hull_incremental_3.tex @@ -14,8 +14,12 @@ \ccDefinition The function \ccRefName\ computes the convex hull polyhedron from a set -of given three-dimensional points. +of given three-dimensional points. +This function is provided for completeness and educational +purposes. When an efficient incremental implementation is needed, +using \ccc{CGAL::Delaunay_triangulation_3} together with +\ccc{CGAL::convex_hull_3_to_polyhedron_3} is highly recommended. \ccInclude{CGAL/convex_hull_incremental_3.h} diff --git a/Convex_hull_3/doc_tex/Convex_hull_3_ref/intro.tex b/Convex_hull_3/doc_tex/Convex_hull_3_ref/intro.tex index c1086a63c9e..acee79a62a3 100644 --- a/Convex_hull_3/doc_tex/Convex_hull_3_ref/intro.tex +++ b/Convex_hull_3/doc_tex/Convex_hull_3_ref/intro.tex @@ -58,7 +58,8 @@ defining \ccc{CGAL_CH_CHECK_EXPENSIVE}% \ccHeading{Convex Hull Functions} \ccRefIdfierPage{CGAL::convex_hull_3} \\ -\ccRefIdfierPage{CGAL::convex_hull_incremental_3} +\ccRefIdfierPage{CGAL::convex_hull_incremental_3}\\ +\ccRefIdfierPage{CGAL::convex_hull_3_to_polyhedron_3} \ccHeading{Convexity Checking Function} diff --git a/Convex_hull_3/doc_tex/Convex_hull_3_ref/main.tex b/Convex_hull_3/doc_tex/Convex_hull_3_ref/main.tex index 77b9c7ea0c4..b9bb833e6c9 100644 --- a/Convex_hull_3/doc_tex/Convex_hull_3_ref/main.tex +++ b/Convex_hull_3/doc_tex/Convex_hull_3_ref/main.tex @@ -15,6 +15,7 @@ \input{Convex_hull_3_ref/ConvexHullPolyhedron_3.tex} \input{Convex_hull_3_ref/ConvexHullTraits_3.tex} \input{Convex_hull_3_ref/Convex_hull_traits_3.tex} +\input{Convex_hull_3_ref/convex_hull_3_to_polyhedron_3.tex} \input{Convex_hull_3_ref/is_strongly_convex_3.tex} \input{Convex_hull_3_ref/IsStronglyConvexTraits_3.tex} diff --git a/Convex_hull_3/examples/Convex_hull_3/dynamic_hull_3.cpp b/Convex_hull_3/examples/Convex_hull_3/dynamic_hull_3.cpp index 6da2c4e83f5..46585091a6d 100644 --- a/Convex_hull_3/examples/Convex_hull_3/dynamic_hull_3.cpp +++ b/Convex_hull_3/examples/Convex_hull_3/dynamic_hull_3.cpp @@ -1,14 +1,17 @@ #include #include #include +#include +#include #include #include -typedef CGAL::Exact_predicates_inexact_constructions_kernel K; -typedef K::Point_3 Point_3; -typedef CGAL::Delaunay_triangulation_3 Delaunay; -typedef Delaunay::Vertex_handle Vertex_handle; +typedef CGAL::Exact_predicates_inexact_constructions_kernel K; +typedef K::Point_3 Point_3; +typedef CGAL::Delaunay_triangulation_3 Delaunay; +typedef Delaunay::Vertex_handle Vertex_handle; +typedef CGAL::Polyhedron_3 Polyhedron_3; int main() { @@ -34,9 +37,15 @@ int main() v_set_it++; } - vertices.clear(); - T.incident_vertices(T.infinite_vertex(), std::back_inserter(vertices)); + //copy the convex hull of points into a polyhedron and use it + //to get the number of points on the convex hull + Polyhedron_3 chull; + CGAL::convex_hull_3_to_polyhedron_3(T,chull); + std::cout << "After removal of 25 points, there are " - << vertices.size() << " points on the convex hull." << std::endl; + << chull.size_of_vertices() << " points on the convex hull." << std::endl; + + + return 0; } diff --git a/Convex_hull_3/examples/Convex_hull_3/incremental_hull_class_3.cpp b/Convex_hull_3/examples/Convex_hull_3/incremental_hull_class_3.cpp new file mode 100644 index 00000000000..3e823bfe349 --- /dev/null +++ b/Convex_hull_3/examples/Convex_hull_3/incremental_hull_class_3.cpp @@ -0,0 +1,68 @@ +// Copyright (c) 2002-2011 Max Planck Institut fuer Informatik (Germany). +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org); you may redistribute it under +// the terms of the Q Public License version 1.0. +// See the file LICENSE.QPL distributed with CGAL. +// +// Licensees holding a valid commercial license may use this file in +// accordance with the commercial license agreement provided with the software. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +// +// $URL: svn+ssh://sloriot@scm.gforge.inria.fr/svn/cgal/branches/experimental-packages/Faster_static_convex_hull_3/demo/Convex_hull_3/incremental_hull_3_demo.cpp $ +// $Id: incremental_hull_3_demo.cpp 44910 2008-08-12 12:58:18Z spion $ +// +// +// Author(s) : Susan Hert +// + + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef CGAL_USE_GMP +#include +typedef CGAL::Gmpz RT; +#else +#include +typedef CGAL::MP_Float RT; +#endif + +typedef CGAL::Homogeneous K; +typedef K::Point_3 Point_3; +typedef CGAL::Polyhedron_3< K> Polyhedron_3; + +typedef CGAL::Convex_hull_d_traits_3 Hull_traits_3; +typedef CGAL::Convex_hull_d< Hull_traits_3 > Convex_hull_3; +typedef CGAL::Creator_uniform_3 Creator; + +int main () +{ + Convex_hull_3 CH(3); // create instance of the class with dimension == 3 + + // generate 250 points randomly on a sphere of radius 100 + // and insert them into the convex hull + CGAL::Random_points_in_sphere_3 gen(100); + + for (int i = 0; i < 250 ; i++, ++gen) + CH.insert(*gen); + + assert(CH.is_valid()); + + // define polyhedron to hold convex hull and create it + Polyhedron_3 P; + CGAL::convex_hull_d_to_polyhedron_3(CH,P); + + std::cout << "The convex hull has " << P.size_of_vertices() + << " vertices" << std::endl; + return 0; +} diff --git a/Convex_hull_3/examples/Convex_hull_3/quickhull_3.cpp b/Convex_hull_3/examples/Convex_hull_3/quickhull_3.cpp index a8946950c8b..3605845d243 100644 --- a/Convex_hull_3/examples/Convex_hull_3/quickhull_3.cpp +++ b/Convex_hull_3/examples/Convex_hull_3/quickhull_3.cpp @@ -1,14 +1,13 @@ #include #include #include -#include +#include #include #include typedef CGAL::Exact_predicates_inexact_constructions_kernel K; -typedef CGAL::Convex_hull_traits_3 Traits; -typedef Traits::Polyhedron_3 Polyhedron_3; +typedef CGAL::Polyhedron_3 Polyhedron_3; typedef K::Segment_3 Segment_3; // define point creator @@ -32,10 +31,12 @@ int main() CGAL::convex_hull_3(points.begin(), points.end(), ch_object); // determine what kind of object it is - if (CGAL::object_cast(&ch_object) ) - std::cout << "convex hull is a segment " << std::endl; - else if (CGAL::object_cast(&ch_object) ) - std::cout << "convex hull is a polyhedron " << std::endl; + if ( const Segment_3* segment=CGAL::object_cast(&ch_object) ){ + std::cout << "convex hull is the segment " << *segment << std::endl; + } + else if (const Polyhedron_3* poly = CGAL::object_cast(&ch_object) ) + std::cout << "convex hull is a polyhedron with " + << poly->size_of_vertices() << " vertices" << std::endl; else std::cout << "convex hull error!" << std::endl; diff --git a/Convex_hull_3/include/CGAL/Convex_hull_face_base_2.h b/Convex_hull_3/include/CGAL/Convex_hull_face_base_2.h new file mode 100644 index 00000000000..11de5e7a67f --- /dev/null +++ b/Convex_hull_3/include/CGAL/Convex_hull_face_base_2.h @@ -0,0 +1,70 @@ +// Copyright (c) 2003 INRIA Sophia-Antipolis (France). +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org); you may redistribute it under +// the terms of the Q Public License version 1.0. +// See the file LICENSE.QPL distributed with CGAL. +// +// Licensees holding a valid commercial license may use this file in +// accordance with the commercial license agreement provided with the software. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +// +// $URL$ +// $Id$ +// +// +// Author(s) : Mariette Yvinec,Sylvain Pion + +// face of a triangulation of any dimension <=3 + +#ifndef CGAL_CONVEX_HULL_FACE_BASE_2_H +#define CGAL_CONVEX_HULL_FACE_BASE_2_H + +#include + +namespace CGAL { + +template < typename Info_, typename GT, + typename Fb = Triangulation_face_base_2 > +class Convex_hull_face_base_2 + : public Fb +{ + Info_ _info; +public: + typedef typename Fb::Vertex_handle Vertex_handle; + typedef typename Fb::Face_handle Face_handle; + typedef Info_ Info; + + typename std::list::iterator it; + std::list points; + template < typename TDS2 > + struct Rebind_TDS { + typedef typename Fb::template Rebind_TDS::Other Fb2; + typedef Convex_hull_face_base_2 Other; + }; + + Convex_hull_face_base_2() + : Fb(), _info(0) {} + + Convex_hull_face_base_2(Vertex_handle v0, + Vertex_handle v1, + Vertex_handle v2) + : Fb(v0, v1, v2), _info(0) {} + + Convex_hull_face_base_2(Vertex_handle v0, + Vertex_handle v1, + Vertex_handle v2, + Face_handle n0, + Face_handle n1, + Face_handle n2 ) + : Fb(v0, v1, v2, n0, n1, n2), _info(0) {} + + const Info& info() const { return _info; } + Info& info() { return _info; } +}; + +} //namespace CGAL + +#endif // CGAL_CONVEX_HULL_FACE_BASE_2_H diff --git a/Convex_hull_3/include/CGAL/Convex_hull_traits_3.h b/Convex_hull_3/include/CGAL/Convex_hull_traits_3.h index c8dc3a07be1..0f90e68d2e7 100644 --- a/Convex_hull_3/include/CGAL/Convex_hull_traits_3.h +++ b/Convex_hull_3/include/CGAL/Convex_hull_traits_3.h @@ -21,9 +21,11 @@ #define CGAL_CONVEX_HULL_TRAITS_3_H #include +#include #include #include #include +#include namespace CGAL { template < class R_ > @@ -34,7 +36,7 @@ protected: typedef typename R_::Point_3 Point_3; typedef typename R_::Vector_3 Vector_3; - Point_3 p_, q_, r_; + Point_3 p_, q_, r_; public: typedef R_ R; @@ -115,9 +117,15 @@ public: const Point_3& hp = h.p(); const Point_3& hq = h.q(); const Point_3& hr = h.r(); - typename OldK::Less_signed_distance_to_plane_3 - less_signed_distance_to_plane_3; - return less_signed_distance_to_plane_3(hp, hq, hr, p, q); + //typename OldK::Less_signed_distance_to_plane_3 + // less_signed_distance_to_plane_3; + // return less_signed_distance_to_plane_3(hp, hq, hr, p, q); + return has_smaller_signed_dist_to_planeC3(hp.x(), hp.y(), hp.z(), + hq.x(), hq.y(), hq.z(), + hr.x(), hr.y(), hr.z(), + p.x(), p.y(), p.z(), + q.x(), q.y(), q.z()); + } }; @@ -143,6 +151,14 @@ public: } }; + +template +struct GT3 { + typedef typename GT::Point_3 Point_2; +}; + + + template class Convex_hull_traits_3 { @@ -157,7 +173,6 @@ class Convex_hull_traits_3 typedef CGAL::Polyhedron_3 Polyhedron_3; - typedef typename R::Construct_segment_3 Construct_segment_3; typedef typename R::Construct_ray_3 Construct_ray_3; @@ -186,9 +201,6 @@ class Convex_hull_traits_3 Less_signed_distance_to_plane_3; // required for degenerate case of all points coplanar - typedef Projection_traits_xy_3 Traits_xy; - typedef Projection_traits_xz_3 Traits_xz; - typedef Projection_traits_yz_3 Traits_yz; typedef CGAL::Max_coordinate_3 Max_coordinate_3; // for postcondition checking diff --git a/Convex_hull_3/include/CGAL/convex_hull_3.h b/Convex_hull_3/include/CGAL/convex_hull_3.h index f6e521297b3..fa9f2c3ef48 100644 --- a/Convex_hull_3/include/CGAL/convex_hull_3.h +++ b/Convex_hull_3/include/CGAL/convex_hull_3.h @@ -1,4 +1,4 @@ -// Copyright (c) 2001 Max-Planck-Institute Saarbruecken (Germany). +// Copyright (c) 2001-2011 Max-Planck-Institute Saarbruecken (Germany). // All rights reserved. // // This file is part of CGAL (www.cgal.org); you may redistribute it under @@ -17,23 +17,34 @@ // // Author(s) : Susan Hert // : Amol Prakash +// : Andreas Fabri #ifndef CGAL_CONVEX_HULL_3_H #define CGAL_CONVEX_HULL_3_H - #include -#include #include #include #include +#include +#include +#include #include #include +#include +#include +#include +#include #include #include #include #include +#include #include #include +#include +#include +#include + #ifndef CGAL_CH_NO_POSTCONDITIONS #include @@ -42,10 +53,9 @@ namespace CGAL { - -namespace internal{ namespace CH3 { - - struct Plane_equation { +namespace internal{ namespace Convex_hull_3{ + +struct Plane_equation { template typename Facet::Plane_3 operator()( Facet& f) { typename Facet::Halfedge_handle h = f.halfedge(); @@ -55,8 +65,184 @@ namespace internal{ namespace CH3 { h->next()->next()->vertex()->point()); } }; + +//struct to select the default traits class for computing convex hull +template< class Point_3, + class Is_floating_point=typename boost::is_floating_point::Kernel::FT>::type, + class Has_filtered_predicates_tag=typename Kernel_traits::Kernel::Has_filtered_predicates_tag > +struct Default_traits_for_Chull_3{ + typedef typename Kernel_traits::Kernel type; +}; + +//FT is a floating point type and Kernel is a filtered kernel +template +struct Default_traits_for_Chull_3{ + typedef Convex_hull_traits_3< typename Kernel_traits::Kernel > type; +}; + +template +struct Default_polyhedron_for_Chull_3{ + typedef CGAL::Polyhedron_3 type; +}; + +template +struct Default_polyhedron_for_Chull_3 >{ + typedef typename Convex_hull_traits_3::Polyhedron_3 type; +}; -} } //namespace internal::CH3 +//utility class to select the right version of internal predicate Is_on_positive_side_of_plane_3 +template ::Kernel::FT>::type, + class Has_filtered_predicates_tag=typename Kernel_traits::Kernel::Has_filtered_predicates_tag, + class Has_cartesian_tag=typename Kernel_traits::Kernel::Kernel_tag > +struct Use_advanced_filtering{ + typedef CGAL::Tag_false type; +}; + +template +struct Use_advanced_filtering{ + typedef typename Kernel_traits::Kernel K; + typedef CGAL::Boolean_tag type; +}; + +//Predicates internally used +template ::type > +class Is_on_positive_side_of_plane_3{ + typedef typename Traits::Point_3 Point_3; + typename Traits::Plane_3 plane; + typename Traits::Has_on_positive_side_3 has_on_positive_side; +public: + typedef Protect_FPU_rounding Protector; + + Is_on_positive_side_of_plane_3(const Traits& traits,const Point_3& p,const Point_3& q,const Point_3& r) + :plane(traits.construct_plane_3_object()(p,q,r)),has_on_positive_side(traits.has_on_positive_side_3_object()) {} + + bool operator() (const Point_3& s) const + { + return has_on_positive_side(plane,s); + } +}; + + +//This predicate uses copy of the code from the statically filtered version of +//Orientation_3. The rational is that the plane is a member of the functor +//so optimization are done to avoid doing several time operations on the plane. +//The main operator() first tries the static version of the predicate, then uses +//interval arithmetic (the protector must be created before using this predicate) +//and in case of failure, exact arithmetic is used. +template +class Is_on_positive_side_of_plane_3,Tag_true>{ + typedef Simple_cartesian::Type> PK; + typedef Simple_cartesian CK; + typedef Convex_hull_traits_3 Traits; + typedef typename Traits::Point_3 Point_3; + + Cartesian_converter to_CK; + Cartesian_converter to_PK; + + const Point_3& p,q,r; + mutable typename CK::Plane_3* ck_plane; + mutable typename PK::Plane_3* pk_plane; + + double m10,m20,m21,Maxx,Maxy,Maxz; + + static const int STATIC_FILTER_FAILURE = 555; + + //this function is a made from the statically filtered version of Orientation_3 + int static_filtered(double psx,double psy, double psz) const{ + + // Then semi-static filter. + double apsx = CGAL::abs(psx); + double apsy = CGAL::abs(psy); + double apsz = CGAL::abs(psz); + + double maxx = (Maxx < apsx)? apsx : Maxx; + double maxy = (Maxy < apsy)? apsy : Maxy; + double maxz = (Maxz < apsz)? apsz : Maxz; + + double det = psx*m10 - m20*psy + m21*psz; + + // Sort maxx < maxy < maxz. + if (maxx > maxz) + std::swap(maxx, maxz); + if (maxy > maxz) + std::swap(maxy, maxz); + else if (maxy < maxx) + std::swap(maxx, maxy); + + // Protect against underflow in the computation of eps. + if (maxx < 1e-97) /* cbrt(min_double/eps) */ { + if (maxx == 0) + return 0; + } + // Protect against overflow in the computation of det. + else if (maxz < 1e102) /* cbrt(max_double [hadamard]/4) */ { + double eps = 5.1107127829973299e-15 * maxx * maxy * maxz; + if (det > eps) return 1; + if (det < -eps) return -1; + } + return STATIC_FILTER_FAILURE; + } + +public: + typedef typename Interval_nt_advanced::Protector Protector; + + Is_on_positive_side_of_plane_3(const Traits&,const Point_3& p_,const Point_3& q_,const Point_3& r_) + :p(p_),q(q_),r(r_),ck_plane(NULL),pk_plane(NULL) + { + double pqx = q.x() - p.x(); + double pqy = q.y() - p.y(); + double pqz = q.z() - p.z(); + double prx = r.x() - p.x(); + double pry = r.y() - p.y(); + double prz = r.z() - p.z(); + + + m10 = pqy*prz - pry*pqz; + m20 = pqx*prz - prx*pqz; + m21 = pqx*pry - prx*pqy; + + double aprx = CGAL::abs(prx); + double apry = CGAL::abs(pry); + double aprz = CGAL::abs(prz); + + Maxx = CGAL::abs(pqx); + if (Maxx < aprx) Maxx = aprx; + Maxy = CGAL::abs(pqy); + if (Maxy < apry) Maxy = apry; + Maxz = CGAL::abs(pqz); + if (Maxz < aprz) Maxz = aprz; + } + + ~Is_on_positive_side_of_plane_3(){ + if (ck_plane!=NULL) delete ck_plane; + if (pk_plane!=NULL) delete pk_plane; + } + + bool operator() (const Point_3& s) const + { + double psx = s.x() - p.x(); + double psy = s.y() - p.y(); + double psz = s.z() - p.z(); + + int static_res = static_filtered(psx,psy,psz); + if (static_res != STATIC_FILTER_FAILURE) + return static_res == 1; + + try{ + if (ck_plane==NULL) + ck_plane=new typename CK::Plane_3(to_CK(p),to_CK(q),to_CK(r)); + return ck_plane->has_on_positive_side(to_CK(s)); + } + catch (Uncertain_conversion_exception){ + if (pk_plane==NULL) + pk_plane=new typename PK::Plane_3(to_PK(p),to_PK(q),to_PK(r)); + return pk_plane->has_on_positive_side(to_PK(s)); + } + } +}; + template class Build_coplanar_poly : public Modifier_base { @@ -98,27 +284,21 @@ class Build_coplanar_poly : public Modifier_base { ForwardIterator end; }; - template void coplanar_3_hull(InputIterator first, InputIterator beyond, Plane_3 plane, Polyhedron_3& P, const Traits& traits) { - typedef typename Traits::R R; typedef typename Traits::Point_3 Point_3; + typedef typename Kernel_traits::Kernel R; typedef typename Traits::Vector_3 Vector_3; - typedef typename Traits::Max_coordinate_3 Max_coordinate_3; - - typedef typename Traits::Traits_xy Traits_xy; - typedef typename Traits::Traits_xz Traits_xz; - typedef typename Traits::Traits_yz Traits_yz; - + typedef Max_coordinate_3 Max_coordinate_3; typedef Polyhedron_3 Polyhedron; std::list CH_2; typedef typename std::list::iterator CH_2_iterator; typedef typename Traits::Construct_orthogonal_vector_3 Construct_normal_vec; - Max_coordinate_3 max_coordinate = traits.max_coordinate_3_object(); + Max_coordinate_3 max_coordinate; Construct_normal_vec c_normal = traits.construct_orthogonal_vector_3_object(); @@ -129,19 +309,19 @@ void coplanar_3_hull(InputIterator first, InputIterator beyond, case 0: { convex_hull_points_2(first, beyond, std::back_inserter(CH_2), - Traits_yz()); + Projection_traits_yz_3()); break; } case 1: { convex_hull_points_2(first, beyond, std::back_inserter(CH_2), - Traits_xz()); + Projection_traits_xz_3()); break; } case 2: { convex_hull_points_2(first, beyond, std::back_inserter(CH_2), - Traits_xy()); + Projection_traits_xy_3()); break; } default: @@ -158,340 +338,341 @@ void coplanar_3_hull(InputIterator first, InputIterator beyond, // visible is the set of facets visible from point and reachable from // start_facet. // -template +template void -find_visible_set(const typename Traits::Point_3& point, - Facet_handle start_facet, - std::list& visible, +find_visible_set(TDS_2& tds, + const typename Traits::Point_3& point, + typename TDS_2::Face_handle start, + std::list& visible, + std::map& outside, const Traits& traits) { - typedef typename Facet_handle::value_type Facet; - typedef typename Facet::Halfedge_around_facet_circulator Halfedge_circ; - typedef typename Facet::Halfedge_handle Halfedge_handle; typedef typename Traits::Plane_3 Plane_3; - + typedef typename TDS_2::Face_handle Face_handle; + typedef typename TDS_2::Vertex_handle Vertex_handle; typename Traits::Has_on_positive_side_3 has_on_positive_side = traits.has_on_positive_side_3_object(); + std::vector vertices; + vertices.reserve(10); + int VISITED=1, BORDER=2; visible.clear(); - typename std::list::iterator vis_it; - CGAL::Unique_hash_map visited(false); - visible.push_back(start_facet); - visited[start_facet] = true; - Facet_handle current; + typename std::list::iterator vis_it; + visible.push_back(start); + start->info() = VISITED; + vertices.push_back(start->vertex(0)); + vertices.push_back(start->vertex(1)); + vertices.push_back(start->vertex(2)); + start->vertex(0)->info() = start->vertex(1)->info() = start->vertex(2)->info() = VISITED; + for (vis_it = visible.begin(); vis_it != visible.end(); vis_it++) { - // check all the neighbors of the current facet to see if they have + // check all the neighbors of the current face to see if they have // already been visited or not and if not whether they are visible // or not. - current = *vis_it; - Halfedge_circ hdl_init = (*current).facet_begin(); - Halfedge_circ hdl_curr = hdl_init; - do - { - // the facet on the other side of the current halfedge - Facet_handle f = (*(*hdl_curr).opposite()).facet(); - // if haven't already seen this facet - if ( !visited[f] ) - { - visited[f] = true; - Plane_3 plane; - get_plane(plane,f); - if ( has_on_positive_side(plane, point) ) // is visible - { - visible.push_back(f); - } + + for(int i=0; i < 3; i++) { + // the facet on the other side of the current halfedge + Face_handle f = (*vis_it)->neighbor(i); + // if haven't already seen this facet + if (f->info() == 0) { + f->info() = VISITED; + Plane_3 plane(f->vertex(0)->point(),f->vertex(1)->point(),f->vertex(2)->point()); + int ind = f->index(*vis_it); + if ( has_on_positive_side(plane, point) ){ // is visible + visible.push_back(f); + Vertex_handle vh = f->vertex(ind); + if(vh->info() == 0){ vertices.push_back(vh); vh->info() = VISITED;} + } else { + f->info() = BORDER; + f->vertex(TDS_2::cw(ind))->info() = BORDER; + f->vertex(TDS_2::ccw(ind))->info() = BORDER; + outside.insert(std::make_pair(f->vertex(TDS_2::cw(ind)), + typename TDS_2::Edge(f,ind))); } - hdl_curr++; + } else if(f->info() == BORDER) { + int ind = f->index(*vis_it); + f->vertex(TDS_2::cw(ind))->info() = BORDER; + f->vertex(TDS_2::ccw(ind))->info() = BORDER; + outside.insert(std::make_pair(f->vertex(TDS_2::cw(ind)), + typename TDS_2::Edge(f,ind))); + } } - while (hdl_curr != hdl_init); } + + for(typename std::vector::iterator vit = vertices.begin(); + vit != vertices.end(); + ++vit){ + if((*vit)->info() != BORDER){ + tds.delete_vertex(*vit); + } else { + (*vit)->info() = 0; + } + } + } // using a third template parameter for the point instead of getting it from // the traits class as it should be is required by M$VC6 -template -Point -farthest_outside_point(Facet_handle f_handle, std::list& outside_set, +template +typename std::list::iterator +farthest_outside_point(Face_handle f, std::list& outside_set, const Traits& traits) { - typedef typename std::list::iterator Outside_set_iterator; - typename Traits::Plane_3 plane; - get_plane(plane, f_handle); + typedef typename std::list::iterator Outside_set_iterator; CGAL_ch_assertion(!outside_set.empty()); + + typename Traits::Plane_3 plane(f->vertex(0)->point(),f->vertex(1)->point(),f->vertex(2)->point()); + typename Traits::Less_signed_distance_to_plane_3 less_dist_to_plane = traits.less_signed_distance_to_plane_3_object(); Outside_set_iterator farthest_it = std::max_element(outside_set.begin(), outside_set.end(), boost::bind(less_dist_to_plane, plane, _1, _2)); - - return *farthest_it; + return farthest_it; } -template -void compute_plane_equation(Facet_handle f) -{ - typedef typename Facet_handle::value_type Facet; - typedef typename Facet::Halfedge_handle Halfedge_handle; - typedef typename Facet::Plane_3 Plane_3; - - Halfedge_handle h = (*f).halfedge(); - (*f).plane() = Plane_3(h->opposite()->vertex()->point(), - h->vertex()->point(), - h->next()->vertex()->point()); -} - - -template -void get_plane(Plane& plane, Facet_handle f) -{ - typedef typename Facet_handle::value_type Facet; - typedef typename Facet::Halfedge_handle Halfedge_handle; - - Halfedge_handle h = (*f).halfedge(); - plane = Plane(h->opposite()->vertex()->point(), - h->vertex()->point(), - h->next()->vertex()->point()); -} - -// using a template for the Unique_hash_map is required by M$VC7 -// using a template for the Point type instead of getting it from -// the traits class as it should be is required by M$VC6 -template +template void -partition_outside_sets(const std::list& new_facets, - std::list& vis_outside_set, - UHM& outside_sets, - std::list& pending_facets, - const Traits& traits) +partition_outside_sets(const std::list& new_facets, + std::list& vis_outside_set, + std::list& pending_facets, + const Traits& traits) { - typedef typename UHM::Data Data; - typedef typename Traits::Plane_3 Plane_3; - typename std::list::const_iterator f_list_it; - typename std::list::iterator point_it; - - typename Traits::Has_on_positive_side_3 has_on_positive_side = - traits.has_on_positive_side_3_object(); - - // walk through all the new facets and check each unassigned outside point - // to see if it belongs to the outside set of this new facet. - for (f_list_it = new_facets.begin(); f_list_it != new_facets.end(); - f_list_it++) - { - Plane_3 plane; - get_plane(plane, *f_list_it); - Data& point_list = outside_sets[(*f_list_it)]; - for (point_it = vis_outside_set.begin(); - point_it != vis_outside_set.end();) - { - if ( has_on_positive_side(plane, *point_it) ) - { - point_list.push_back(*point_it); - point_it = vis_outside_set.erase(point_it); - } - else - point_it++; - } - } - // put all the new facets with non-empty outside sets in the pending facets - // list. - for (f_list_it = new_facets.begin(); f_list_it != new_facets.end(); - f_list_it++) - { - if (!outside_sets[*f_list_it].empty()) - pending_facets.push_back(*f_list_it); - } + typename std::list::const_iterator f_list_it; + typename std::list::iterator point_it, to_splice; + // walk through all the new facets and check each unassigned outside point + // to see if it belongs to the outside set of this new facet. + for (f_list_it = new_facets.begin(); (f_list_it != new_facets.end()) && (! vis_outside_set.empty()); + ++f_list_it) + { + Face_handle f = *f_list_it; + Is_on_positive_side_of_plane_3 is_on_positive_side( + traits,f->vertex(0)->point(),f->vertex(1)->point(),f->vertex(2)->point()); + std::list& point_list = f->points; + + for (point_it = vis_outside_set.begin();point_it != vis_outside_set.end();){ + if( is_on_positive_side(*point_it) ) { + to_splice = point_it; + ++point_it; + point_list.splice(point_list.end(), vis_outside_set, to_splice); + } else { + ++point_it; + } + } + if(! point_list.empty()){ + pending_facets.push_back(f); + f->it = boost::prior(pending_facets.end()); + } else { + f->it = pending_facets.end(); + } + } + + + for (; f_list_it != new_facets.end();++f_list_it) + (*f_list_it)->it = pending_facets.end(); } -template +template void -ch_quickhull_3_scan( - Polyhedron_3& P, - std::list& pending_facets, - CGAL::Unique_hash_map >& outside_sets, - const Traits& traits) +ch_quickhull_3_scan(TDS_2& tds, + std::list& pending_facets, + const Traits& traits) { - typedef Polyhedron_3 Polyhedron; - typedef typename Polyhedron::Halfedge_handle Halfedge_handle; - typedef typename Polyhedron::Halfedge_iterator Halfedge_iterator; - typedef typename Polyhedron::Facet_handle Facet_handle; + typedef typename TDS_2::Edge Edge; + typedef typename TDS_2::Face_circulator Face_circulator; + typedef typename TDS_2::Face_handle Face_handle; + typedef typename TDS_2::Vertex_handle Vertex_handle; typedef typename Traits::Point_3 Point_3; typedef std::list Outside_set; typedef typename std::list::iterator Outside_set_iterator; + typedef std::map Border_edges; - typedef typename CGAL::Unique_hash_map >::Data Data; - - std::list visible_set; - typename std::list::iterator vis_set_it; - Outside_set vis_outside_set; - Halfedge_iterator hole_halfedge; - Halfedge_handle new_pt_halfedge; - + std::list visible_set; + typename std::list::iterator vis_set_it; + Outside_set vis_outside_set; + Border_edges border; while (!pending_facets.empty()) { vis_outside_set.clear(); - Facet_handle f_handle = pending_facets.back(); - pending_facets.pop_back(); - Point_3 farthest_pt = - farthest_outside_point(f_handle, outside_sets[f_handle], traits); -#ifdef CGAL_CH_3_WINDOW_DEBUG - window << CGAL::RED; - window << farthest_pt; - cout << "farthest point is in red" << endl; - char ch; - cin >> ch; - CGAL_ch_assertion(P.is_valid(true)); - window.clear(); -#endif + Face_handle f_handle = pending_facets.front(); + + Outside_set_iterator farthest_pt_it = farthest_outside_point(f_handle, f_handle->points, traits); + Point_3 farthest_pt = *farthest_pt_it; + f_handle->points.erase(farthest_pt_it); + find_visible_set(tds, farthest_pt, f_handle, visible_set, border, traits); - find_visible_set(farthest_pt, f_handle, visible_set, traits); // for each visible facet for (vis_set_it = visible_set.begin(); vis_set_it != visible_set.end(); vis_set_it++) { + // add its outside set to the global outside set list - Data& point_list = outside_sets[*vis_set_it]; - vis_outside_set.splice(vis_outside_set.end(), point_list, point_list.begin(), point_list.end()); - // delete this visible facet - P.erase_facet((*(*vis_set_it)).halfedge()); - } -#ifdef CGAL_CH_3_WINDOW_DEBUG - window << CGAL::RED; - window << farthest_pt; - window << CGAL::BLUE; - window << P; - cout << "farthest point is in red" << endl; - cout << "after erasing visibile facets"; - cin >> ch; -#endif - for (hole_halfedge = P.halfedges_begin(); - hole_halfedge != P.halfedges_end() && !(*hole_halfedge).is_border(); - hole_halfedge++) - {} - CGAL_ch_assertion(hole_halfedge->is_border()); - CGAL_ch_assertion(hole_halfedge->next()->is_border()); - // add a new facet and vertex to the surface. This is the first - // new facet to be added. - new_pt_halfedge = P.add_vertex_and_facet_to_border(hole_halfedge, - (*hole_halfedge).next()); - // associate the farthest point with the new vertex. - (*(*new_pt_halfedge).vertex()).point() = farthest_pt; - CGAL_ch_assertion( !new_pt_halfedge->is_border() ); - CGAL_ch_assertion( new_pt_halfedge->opposite()->is_border() ); - - std::list new_facets; - new_facets.push_back(new_pt_halfedge->facet()); - Halfedge_handle start_hole_halfedge = new_pt_halfedge->opposite()->prev(); - CGAL_ch_assertion( start_hole_halfedge->is_border() ); - CGAL_ch_assertion( start_hole_halfedge->vertex()->point() == farthest_pt); - - // need to move to second next halfedge to get to a point where a - // triangular facet can be created - Halfedge_handle curr_halfedge = start_hole_halfedge->next()->next(); - CGAL_ch_assertion( curr_halfedge->is_border() ); - - Halfedge_handle new_halfedge; - - // now walk around all the border halfedges and add a facet incident to - // each one to connect it to the farthest point - while (curr_halfedge->next() != start_hole_halfedge) - { - new_halfedge = - P.add_facet_to_border(start_hole_halfedge, curr_halfedge); - CGAL_ch_assertion( !new_halfedge->is_border() ); - CGAL_ch_assertion( new_halfedge->opposite()->is_border() ); - new_facets.push_back(new_halfedge->facet()); - - // once the new facet is added curr->next() will be the next halfedge - // on this facet (i.e., not a border halfedge), so the next border - // halfedge will be the one after the opposite of the new halfedge - curr_halfedge = new_halfedge->opposite()->next(); - CGAL_ch_assertion( curr_halfedge->is_border() ); - } - // fill in the last triangular hole with a facet - new_halfedge = P.fill_hole(curr_halfedge); - new_facets.push_back(new_halfedge->facet()); -#ifdef CGAL_CH_3_WINDOW_DEBUG - window << CGAL::BLUE; - window << P; - cout << "after filling hole" << endl; - char c; - cin >> c; - CGAL_ch_assertion(P.is_valid(true)); -#endif - - // now partition the set of outside set points among the new facets. - partition_outside_sets(new_facets, vis_outside_set, outside_sets, - pending_facets, traits); - } - -} - -template -void non_coplanar_quickhull_3(std::list& points, - Polyhedron_3& P, const Traits& traits) -{ - typedef Polyhedron_3 Polyhedron; - - typedef typename Polyhedron::Facet_handle Facet_handle; - typedef typename Polyhedron::Facet_iterator Facet_iterator; - - typedef typename Traits::Point_3 Point_3; - typedef typename Traits::Plane_3 Plane_3; - typedef CGAL::Unique_hash_map > - Outside_set_map; - typedef typename std::list::iterator P3_iterator; - - std::list pending_facets; - - Facet_iterator f_it; - - typename Traits::Has_on_positive_side_3 has_on_positive_side = - traits.has_on_positive_side_3_object(); - - Outside_set_map outside_sets; - - // for each facet, look at each unassigned point and decide if it belongs - // to the outside set of this facet. - - for (f_it = P.facets_begin(); f_it != P.facets_end(); f_it++) - { - Plane_3 plane; - get_plane(plane, f_it); - for (P3_iterator point_it = points.begin() ; point_it != points.end(); ) - { - if ( has_on_positive_side(plane, *point_it) ){ - outside_sets[f_it].push_back(*point_it); - point_it = points.erase(point_it); - } else { - ++point_it; + std::list& point_list = (*vis_set_it)->points; + if(! point_list.empty()){ + vis_outside_set.splice(vis_outside_set.end(), point_list, point_list.begin(), point_list.end()); } - + if((*vis_set_it)->it != pending_facets.end()){ + pending_facets.erase((*vis_set_it)->it); + } + (*vis_set_it)->info() = 0; } + + std::vector edges; + edges.reserve(border.size()); + typename Border_edges::iterator it = border.begin(); + Edge e = it->second; + e.first->info() = 0; + edges.push_back(e); + border.erase(it); + while(! border.empty()){ + it = border.find(e.first->vertex(TDS_2::ccw(e.second))); + assert(it != border.end()); + e = it->second; + e.first->info() = 0; + edges.push_back(e); + border.erase(it); + } + + // If we want to reuse the faces we must only pass |edges| many, and call delete_face for the others. + // Also create facets if necessary + std::ptrdiff_t diff = visible_set.size() - edges.size(); + if(diff < 0){ + for(int i = 0; i<-diff;i++){ + visible_set.push_back(tds.create_face()); + } + } else { + for(int i = 0; ipoint() = farthest_pt; + vh->info() = 0; + + // now partition the set of outside set points among the new facets. + + partition_outside_sets(visible_set, vis_outside_set, + pending_facets, traits); + + } +} + +template +void non_coplanar_quickhull_3(std::list& points, + TDS_2& tds, const Traits& traits) +{ + typedef typename Traits::Point_3 Point_3; + typedef typename Traits::Plane_3 Plane_3; + + typedef typename TDS_2::Vertex_handle Vertex_handle; + typedef typename TDS_2::Face_handle Face_handle; + typedef typename TDS_2::Face_iterator Face_iterator; + typedef typename std::list::iterator P3_iterator; + + std::list pending_facets; + + typename Is_on_positive_side_of_plane_3::Protector p; + + // for each facet, look at each unassigned point and decide if it belongs + // to the outside set of this facet. + for(Face_iterator fit = tds.faces_begin(); fit != tds.faces_end(); ++fit){ + Is_on_positive_side_of_plane_3 is_on_positive_side( + traits,fit->vertex(0)->point(),fit->vertex(1)->point(),fit->vertex(2)->point() ); + for (P3_iterator point_it = points.begin() ; point_it != points.end(); ) + { + if( is_on_positive_side(*point_it) ) { + P3_iterator to_splice = point_it; + ++point_it; + fit->points.splice(fit->points.end(), points, to_splice); + } else { + ++point_it; + } + } } // add all the facets with non-empty outside sets to the set of facets for // further consideration - for (f_it = P.facets_begin(); f_it != P.facets_end(); f_it++) - if (!outside_sets[f_it].empty()) - pending_facets.push_back(f_it); - ch_quickhull_3_scan(P, pending_facets, outside_sets, traits); + for(Face_iterator fit = tds.faces_begin(); fit != tds.faces_end(); ++fit){ + if (! fit->points.empty()){ + pending_facets.push_back(fit); + fit->it = boost::prior(pending_facets.end()); + } else { + fit->it = pending_facets.end(); + } + } - CGAL_ch_expensive_postcondition(all_points_inside(points.begin(), - points.end(),P,traits)); - CGAL_ch_postcondition(is_strongly_convex_3(P, traits)); + + ch_quickhull_3_scan(tds, pending_facets, traits); + + //std::cout << "|V(tds)| = " << tds.number_of_vertices() << std::endl; +// CGAL_ch_expensive_postcondition(all_points_inside(points.begin(), +// points.end(),P,traits)); +// CGAL_ch_postcondition(is_strongly_convex_3(P, traits)); } +namespace internal{ + +template +class Build_convex_hull_from_TDS_2 : public CGAL::Modifier_base { + typedef std::map Vertex_map; + + const TDS& t; + template + static unsigned get_vertex_index( Vertex_map& vertex_map, + typename TDS::Vertex_handle vh, + Builder& builder, + unsigned& vindex) + { + std::pair + res=vertex_map.insert(std::make_pair(vh,vindex)); + if (res.second){ + builder.add_vertex(vh->point()); + ++vindex; + } + return res.first->second; + } + +public: + Build_convex_hull_from_TDS_2(const TDS& t_):t(t_) + { + CGAL_assertion(t.dimension()==2); + } + void operator()( HDS& hds) { + // Postcondition: `hds' is a valid polyhedral surface. + typedef typename HDS::Vertex Vertex; + typedef typename Vertex::Point Point; + + CGAL::Polyhedron_incremental_builder_3 B( hds, true); + Vertex_map vertex_map; + //start the surface + B.begin_surface( t.number_of_vertices(), t.number_of_faces()); + unsigned vindex=0; + for (typename TDS::Face_iterator it=t.faces_begin();it!=t.faces_end();++it) + { + unsigned i0=get_vertex_index(vertex_map,it->vertex(0),B,vindex); + unsigned i1=get_vertex_index(vertex_map,it->vertex(1),B,vindex); + unsigned i2=get_vertex_index(vertex_map,it->vertex(2),B,vindex); + B.begin_facet(); + B.add_vertex_to_facet( i0 ); + B.add_vertex_to_facet( i1 ); + B.add_vertex_to_facet( i2 ); + B.end_facet(); + } + B.end_surface(); + } +}; + +} //namespace internal template void @@ -504,6 +685,13 @@ ch_quickhull_polyhedron_3(std::list& points, typedef typename Traits::Plane_3 Plane_3; typedef typename std::list::iterator P3_iterator; + typedef typename Kernel_traits::Kernel R; + typedef Triangulation_data_structure_2< + Triangulation_vertex_base_with_info_2 >, + Convex_hull_face_base_2 > Tds; + typedef typename Tds::Vertex_handle Vertex_handle; + typedef typename Tds::Face_handle Face_handle; + // found three points that are not collinear, so construct the plane defined // by these points and then find a point that has maximum distance from this // plane. @@ -532,34 +720,45 @@ ch_quickhull_polyhedron_3(std::list& points, } else max_it = min_max.second; -#ifdef CGAL_CH_3_WINDOW_DEBUG - window << CGAL::GREEN; - window << *point1_it; - window << *point2_it; - window << *point3_it; - window << CGAL::RED; - window << *max_it; - char ch; - cin >> ch; -#endif // if the maximum distance point is on the plane then all are coplanar if (coplanar(*point1_it, *point2_it, *point3_it, *max_it)) { coplanar_3_hull(points.begin(), points.end(), plane, P, traits); } else { - P.make_tetrahedron(*point1_it, *point2_it, *point3_it, *max_it); - points.erase(point1_it); - points.erase(point2_it); - points.erase(point3_it); - points.erase(max_it); - if (!points.empty()) - non_coplanar_quickhull_3(points, P, traits); + Tds tds; + Vertex_handle v0 = tds.create_vertex(); v0->set_point(*point1_it); + Vertex_handle v1 = tds.create_vertex(); v1->set_point(*point2_it); + Vertex_handle v2 = tds.create_vertex(); v2->set_point(*point3_it); + Vertex_handle v3 = tds.create_vertex(); v3->set_point(*max_it); + + v0->info() = v1->info() = v2->info() = v3->info() = 0; + Face_handle f0 = tds.create_face(v0,v1,v2); + Face_handle f1 = tds.create_face(v3,v1,v0); + Face_handle f2 = tds.create_face(v3,v2,v1); + Face_handle f3 = tds.create_face(v3,v0,v2); + tds.set_dimension(2); + f0->set_neighbors(f2, f3, f1); + f1->set_neighbors(f0, f3, f2); + f2->set_neighbors(f0, f1, f3); + f3->set_neighbors(f0, f2, f1); + + points.erase(point1_it); + points.erase(point2_it); + points.erase(point3_it); + points.erase(max_it); + if (!points.empty()){ + non_coplanar_quickhull_3(points, tds, traits); + internal::Build_convex_hull_from_TDS_2 builder(tds); + P.delegate(builder); + } } - std::transform( P.facets_begin(), P.facets_end(), P.planes_begin(),internal::CH3::Plane_equation()); + std::transform( P.facets_begin(), P.facets_end(), P.planes_begin(),Plane_equation()); } +} } //namespace internal::Convex_hull_3 + template void convex_hull_3(InputIterator first, InputIterator beyond, @@ -643,21 +842,35 @@ convex_hull_3(InputIterator first, InputIterator beyond, return; } - typename Traits::Polyhedron_3 P; - // result will be a polyhedron - ch_quickhull_polyhedron_3(points, point1_it, point2_it, point3_it, - P, traits); + typename internal::Convex_hull_3::Default_polyhedron_for_Chull_3::type P; + + P3_iterator minx, maxx, miny, it; + minx = maxx = miny = it = points.begin(); + ++it; + for(; it != points.end(); ++it){ + if(it->x() < minx->x()) minx = it; + if(it->x() > maxx->x()) maxx = it; + if(it->y() < miny->y()) miny = it; + } + if(! collinear(*minx, *maxx, *miny) ){ + internal::Convex_hull_3::ch_quickhull_polyhedron_3(points, minx, maxx, miny, P, traits); + } else { + internal::Convex_hull_3::ch_quickhull_polyhedron_3(points, point1_it, point2_it, point3_it, P, traits); + } ch_object = make_object(P); + //std::cout << "|V| = " << P.size_of_vertices() << std::endl; } + template void convex_hull_3(InputIterator first, InputIterator beyond, Object& ch_object) { typedef typename std::iterator_traits::value_type Point_3; typedef typename Kernel_traits::Kernel K; - convex_hull_3(first, beyond, ch_object, Convex_hull_traits_3()); + typedef typename internal::Convex_hull_3::Default_traits_for_Chull_3::type Traits; + convex_hull_3(first, beyond, ch_object, Traits()); } @@ -703,8 +916,8 @@ void convex_hull_3(InputIterator first, InputIterator beyond, polyhedron.clear(); // result will be a polyhedron - ch_quickhull_polyhedron_3(points, point1_it, point2_it, point3_it, - polyhedron, traits); + internal::Convex_hull_3::ch_quickhull_polyhedron_3(points, point1_it, point2_it, point3_it, + polyhedron, traits); } @@ -714,8 +927,8 @@ void convex_hull_3(InputIterator first, InputIterator beyond, Polyhedron_3& polyhedron) { typedef typename std::iterator_traits::value_type Point_3; - typedef typename Kernel_traits::Kernel K; - convex_hull_3(first, beyond, polyhedron, Convex_hull_traits_3()); + typedef typename internal::Convex_hull_3::Default_traits_for_Chull_3::type Traits; + convex_hull_3(first, beyond, polyhedron, Traits()); } } // namespace CGAL diff --git a/Convex_hull_3/include/CGAL/convex_hull_3_to_polyhedron_3.h b/Convex_hull_3/include/CGAL/convex_hull_3_to_polyhedron_3.h new file mode 100644 index 00000000000..2bcc402e200 --- /dev/null +++ b/Convex_hull_3/include/CGAL/convex_hull_3_to_polyhedron_3.h @@ -0,0 +1,93 @@ +// Copyright (c) 2011 GeometryFactory (France). +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org); you may redistribute it under +// the terms of the Q Public License version 1.0. +// See the file LICENSE.QPL distributed with CGAL. +// +// Licensees holding a valid commercial license may use this file in +// accordance with the commercial license agreement provided with the software. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +// +// $URL$ +// $Id$ +// +// +// Author(s) : Sebastien Loriot +// + +#include + +#ifndef CGAL_CONVEX_HULL_3_TO_POLYHEDRON_3_H +#define CGAL_CONVEX_HULL_3_TO_POLYHEDRON_3_H + +namespace CGAL { + +template +class Convex_hull_modifier_from_triangulation_3 : public CGAL::Modifier_base { + typedef std::map Vertex_map; + + const Triangulation& t; + template + static unsigned get_vertex_index( Vertex_map& vertex_map, + typename Triangulation::Vertex_handle vh, + Builder& builder, + unsigned& vindex) + { + std::pair + res=vertex_map.insert(std::make_pair(vh,vindex)); + if (res.second){ + builder.add_vertex(vh->point()); + ++vindex; + } + return res.first->second; + } + +public: + Convex_hull_modifier_from_triangulation_3(const Triangulation& t_):t(t_) + { + CGAL_assertion(t.dimension()==3); + } + void operator()( HDS& hds) { + // Postcondition: `hds' is a valid polyhedral surface. + typedef typename HDS::Vertex Vertex; + typedef typename Vertex::Point Point; + + CGAL::Polyhedron_incremental_builder_3 B( hds, true); + std::vector ch_facets; + Vertex_map vertex_map; + t.incident_cells(t.infinite_vertex(),std::back_inserter(ch_facets)); + std::size_t nb_facets=ch_facets.size(); + //start the surface + B.begin_surface( nb_facets, nb_facets); + unsigned vindex=0; + for (typename std::vector::const_iterator it= + ch_facets.begin();it!=ch_facets.end();++it) + { + unsigned ifv_index= (*it)->index(t.infinite_vertex()); + bool is_odd=ifv_index%2==0; + unsigned i0=get_vertex_index(vertex_map,(*it)->vertex((ifv_index + (is_odd?3:1) )%4),B,vindex); + unsigned i1=get_vertex_index(vertex_map,(*it)->vertex((ifv_index + 2 )%4),B,vindex); + unsigned i2=get_vertex_index(vertex_map,(*it)->vertex((ifv_index + (is_odd?1:3) )%4),B,vindex); + B.begin_facet(); + B.add_vertex_to_facet( i0 ); + B.add_vertex_to_facet( i1 ); + B.add_vertex_to_facet( i2 ); + B.end_facet(); + } + B.end_surface(); + } +}; + +template +void convex_hull_3_to_polyhedron_3(const Triangulation_3& T,Polyhedron_3& P){ + P.clear(); + Convex_hull_modifier_from_triangulation_3 modifier(T); + P.delegate(modifier); +} + +} //namespace CGAL + +#endif //CGAL_CONVEX_HULL_3_TO_POLYHEDRON_3_H diff --git a/Convex_hull_3/test/Convex_hull_3/quick_hull_default_traits.cpp b/Convex_hull_3/test/Convex_hull_3/quick_hull_default_traits.cpp new file mode 100644 index 00000000000..69cb843ce32 --- /dev/null +++ b/Convex_hull_3/test/Convex_hull_3/quick_hull_default_traits.cpp @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include + +#include +#include + +#ifdef CGAL_USE_LEDA +# include +typedef leda_rational Precise_rational; +#elif defined CGAL_USE_GMP +# include +# include +typedef CGAL::Quotient Precise_rational; +#else +# include +# include +typedef CGAL::Quotient Precise_rational; +#endif + +typedef CGAL::Exact_predicates_exact_constructions_kernel EPEC; +typedef CGAL::Exact_predicates_inexact_constructions_kernel EPIC; +typedef CGAL::Simple_cartesian SCD; +typedef CGAL::Simple_cartesian SCR; + +using namespace CGAL::internal::Convex_hull_3; + +int main() +{ + BOOST_STATIC_ASSERT( (boost::is_same::type>::value) ); + BOOST_STATIC_ASSERT( (boost::is_same::type>::value) ); + BOOST_STATIC_ASSERT( (boost::is_same::type>::value) ); + BOOST_STATIC_ASSERT( (boost::is_same::type>::value) ); + BOOST_STATIC_ASSERT( (boost::is_same,Default_traits_for_Chull_3::type>::value) ); + BOOST_STATIC_ASSERT( (boost::is_same >::Protector,CGAL::Protect_FPU_rounding >::value) ); + return 0; +} \ No newline at end of file diff --git a/Convex_hull_3/test/Convex_hull_3/quickhull_test_3.cpp b/Convex_hull_3/test/Convex_hull_3/quickhull_test_3.cpp index 1aaa4b8130d..ed6fbaedf50 100644 --- a/Convex_hull_3/test/Convex_hull_3/quickhull_test_3.cpp +++ b/Convex_hull_3/test/Convex_hull_3/quickhull_test_3.cpp @@ -33,6 +33,33 @@ typedef CGAL::Random_points_in_sphere_3 Generator; const unsigned int num = 40; +template +void compute_plane_equation(Facet_handle f) +{ + typedef typename Facet_handle::value_type Facet; + typedef typename Facet::Halfedge_handle Halfedge_handle; + typedef typename Facet::Plane_3 Plane_3; + + Halfedge_handle h = (*f).halfedge(); + (*f).plane() = Plane_3(h->opposite()->vertex()->point(), + h->vertex()->point(), + h->next()->vertex()->point()); +} + + +template +void get_plane(Plane& plane, Facet_handle f) +{ + typedef typename Facet_handle::value_type Facet; + typedef typename Facet::Halfedge_handle Halfedge_handle; + + Halfedge_handle h = (*f).halfedge(); + plane = Plane(h->opposite()->vertex()->point(), + h->vertex()->point(), + h->next()->vertex()->point()); +} + + void test_tetrahedron_convexity() { Polyhedron_3 P; @@ -45,7 +72,7 @@ void test_tetrahedron_convexity() for( Polyhedron_3::Facet_iterator f = P.facets_begin(); f != P.facets_end(); ++f ) { - CGAL::compute_plane_equation(f); + compute_plane_equation(f); } assert( CGAL::is_strongly_convex_3(P) ); @@ -62,7 +89,7 @@ void test_triangle_convexity() for( Polyhedron_3::Facet_iterator f = P.facets_begin(); f != P.facets_end(); ++f ) { - CGAL::compute_plane_equation(f); + compute_plane_equation(f); } assert( CGAL::is_strongly_convex_3(P) );