From 23d3e56edc7fd759db52125f2e776cbfc68efc4f Mon Sep 17 00:00:00 2001 From: Christian Vidal Wolf Date: Tue, 27 Jan 2026 09:31:50 +0100 Subject: [PATCH] Refine Forecast View: compact UI and dynamic UK data integration --- App.tsx | 24 +++++++++++++++++------- components/ForecastView.tsx | 26 +++++++++++++------------- fc 26.xlsx => public/fc 26.xlsx | Bin public/fc UK 26.xlsx | Bin 0 -> 38164 bytes 4 files changed, 30 insertions(+), 20 deletions(-) rename fc 26.xlsx => public/fc 26.xlsx (100%) create mode 100644 public/fc UK 26.xlsx diff --git a/App.tsx b/App.tsx index 7ceec39..7c35423 100644 --- a/App.tsx +++ b/App.tsx @@ -90,7 +90,7 @@ const App: React.FC = () => { console.log('[App] Successfully loaded', data.length, 'rows'); // Refresh forecast too - handleForecastFetch(data); + handleForecastFetch(data, filters.customer); } catch (error) { console.error("Failed to fetch/parse CSV", error); alert("Error loading data. Please refresh the page."); @@ -143,11 +143,14 @@ const App: React.FC = () => { } }, []); - const handleForecastFetch = useCallback(async (sales: SalesRecord[]) => { + const handleForecastFetch = useCallback(async (sales: SalesRecord[], customerFilters: string[] = []) => { try { - console.log('[App] Fetching forecast from /forecast.xlsx...'); - const response = await fetch('/forecast.xlsx'); - if (!response.ok) throw new Error("Forecast file not found"); + const isUK = customerFilters.includes('Amazon UK'); + const filename = isUK ? '/fc UK 26.xlsx' : '/fc 26.xlsx'; + + console.log(`[App] Fetching forecast from ${filename}...`); + const response = await fetch(filename); + if (!response.ok) throw new Error(`Forecast file ${filename} not found`); const buffer = await response.arrayBuffer(); const fcRecords = await processForecastExcel(buffer); @@ -166,10 +169,17 @@ const App: React.FC = () => { setForecastData(viewData); console.log('[App] Forecast loaded:', viewData.length, 'records'); } catch (error) { - console.warn("Forecast fetch failed (expected if local file not set up yet):", error); + console.warn("Forecast fetch failed:", error); } }, []); + // Update forecast when customer filter changes + useEffect(() => { + if (rawData.length > 0) { + handleForecastFetch(rawData, filters.customer); + } + }, [filters.customer, rawData, handleForecastFetch]); + const initializeData = (data: SalesRecord[]) => { setRawData(data); setFilters({ @@ -245,7 +255,7 @@ const App: React.FC = () => { handleTrafficFetch(); // 1d. Fetch Forecast data - handleForecastFetch(cachedData || []); + handleForecastFetch(cachedData || [], filters.customer); }; initApp(); }, [handleDataFetch]); diff --git a/components/ForecastView.tsx b/components/ForecastView.tsx index 250e375..413eba1 100644 --- a/components/ForecastView.tsx +++ b/components/ForecastView.tsx @@ -135,33 +135,33 @@ const ForecastView: React.FC = ({ data, filters, top50Ranking
{/* Summary Cards */} -
-
+
+
-

Total Forecast 2026

-
- {globalSummary.totalForecast.toLocaleString('de-DE')} Units +

Total Forecast 2026

+
+ {globalSummary.totalForecast.toLocaleString('de-DE')} Units
-
+
-

Total Actual Sales 2026

-
- {globalSummary.totalActual.toLocaleString('de-DE')} Units +

Total Actual Sales 2026

+
+ {globalSummary.totalActual.toLocaleString('de-DE')} Units
-
+
-

Global Fulfillment

+

Global Fulfillment

-
= 100 ? 'text-emerald-400' : 'text-indigo-400'}`}> +
= 100 ? 'text-emerald-400' : 'text-indigo-400'}`}> {globalSummary.fulfillment.toFixed(1)}%
{/* Fulfillment Progress Bar */} -
+
{}7VAX&;}BFU0{dG68Y`+dH@>-qf$&*O5{)jjWd-}gE9SzhOLPG)CmplAp!1P*~f1R&18 za|n)95J)l<0zpCG)OM$RyaO+L2VOiM;(Iy3K|0vW6O#|679&Hb!Sny`=l^02l-}>g zzmq|p*)-TYJ$=Gxv>FFjT#D>ql`z+AYE5f@=3o2e_NYnGWs}9mh0lhdu~~f48PiU77Dr( z+D4_^1U7cfh^d@!9ab!3?e&b$Y>QPpN1Dg+RzFx&-aj2gP7R{^^=J?o5!1|oHvqioCPWsum0b+IXLryN#KV)K(-!OmwFh=|8tumj90(bS(`1NPD z?a3aJjbZj-HyXtf6V}ak8kE=w7f;yb;)nu~AHP7%JQ8Zy%jCTKZnkQ%6&QE_X~BHo z6`nxxw2mEjZOBbZcExiFdP$8x?#R_ORaKUVy!E8Bt4^iKbjgJ$%)4lSZW?-K>kz%c z^0Q&BNe9{0B!InnXKB3ir+VnG{u#Td-zyJ)hRYq$LLi5SG!V1@k6XU5lo477wq^{x zjsdvkMgPm50Vky?fBrvr{J+=-|A*+MsV1iHWEf+X4fgJIZVr7eao*XkF(JLd72PUipY#Q81nMzQ4Ew1}qHVj0 z%@60Ta;hPnb4z70m9@&`g|xn`@ZpC=Kbf>*RgHgr%w+2faK7@jJgn1G;O{oKZ8cTPyFGU8oH=bx^~ z1peY5AVdA1PI4jE;7TwJ1kwUh*)gD*V9%4+ef&L~eSAD9d8^dY+^0YVc}wf(0nKF2 zHzX#)$O?(Gd+K2M)iZRn#=jYTkt(2F;pwyeWpxn&FXboaUcM5msycPB*W05!yZ7$p z(--;@H`+(cl=~{n2bAVu9?PfqyVc}192SM$87$Tw#_XV${vJ!vI#e0+UGeSMj-rKl z@h?2M?+{`3=t7OaKG!mVK~k85DMbdoS-cDtK6BArB8%IG^Hs4x>CkmJQ3V#2F5K zg6-LFWpQ$Qs39IECSJ9c4(>Y}LfcQ!-{}lT2@Qs!BA5Ia@u#a($VtXCf0~TymR)D~ zDn~hFP=|6P#7FKIthhfv;%0g3Y<4DJyDGl)NuG9+g47)5nPyXzte+vFXVPebX#*G}|XPZiiCk zZNAk!x&P(*Ic2%M`gG1~&Mxn2<;HvqdYa#+<5~xO#&7#ZWv6Ld?RrY~nAHlr&_8>@ zRlO`jh0}V)|3LnSR?I>;q3DIr`*T4R-(?zpUJT5O`L^-!1#B$BQ|kEZ5K>GcLqTud zwQhPFqP;Qyr|L($248Q&qHkVYqW&xCn0Js}Xzu*g&#fn0Mb6i?kLje5(7X8WJ?p$< zq$|%;j@>vzc&$bJ^2KARcsps2-?`;fS-BOPZ7>H>O~)QRo6+EY0l&b5EpHg;m#>VnB z@TA}`%f(~xt{U+X5dryI>tn|y8XT-YpFK(A6BDxB+i`7Ek$I8^^|x8FIGz=H1Le7_ z4)f_<>!pD^FO~5{>cdd1zZMotmKc~x0jPS-)J~~fw94$3m@wC!f+9iP_4!Zu@YUCQZYCigJemu37-x7&&hkA|JQWrbh`H0L&mS(H8ZeWe`O0#6B2Z`dy?Eou zs#N#-vfFf5$IuwK>HjmXr@dI4@pXVe3#K z3_50+V?!%;^Qo-Ka}$D^t3?arueRz(!|mA$7WZsk@V~1*ylHHtPV+{bhW=L0+|4Au z3&%u-2dM6{HT22m+~(Bo3liG#N(|pGjTF}VT=n*n#b)vpN9ER~{q4bp;@%I}Aj}~; zJ^`bu%C6DYKZwrPisVd z@<)yUEjHjs<5H{BNrkrMW^uP`y8`33Onl}H;-lTrHiMO4AtN5|uKrxp9LVqslzV&T zZQn_`!JT`ltfPbyJLNT3|BbM$TSgWwTMq)W4jnkTQ8aY2n&ZbMb~1z;>Znc3$f5WT)8m>KWuTa>cnMD zMY;(;?nbBmy(*D6MxD6vom1875P}#brsr|0o(jAD`2ptfG1C@kK^4KH?7GXZ=UQwx zc-7nPs@+xhi&)$KNb_sVu)gpsifL+Q@~m8ZTFK7tN}HkL(5`aSRkyrPt4Rd=xuvb} zAzb&y$D6|)qR5dC+e0i{^pv|ky70R>cIE2^iG{TmolNKF`DBZwoCI$O-PWVoSCF5V z2=od6)!C&Y$1T2DYrKCyq2na`diUJkh}Pkn*1^=p!;Pfy{i)^f-HO9qt?=y%t;39i zt!}NuF|C6>t(A+19@~@;Hy_ zbZHfb8vAQWf5Wba@D8%P{c*6r^LKpgiOsJoh>C)(!Qu5OEz^C|i;p_E7vJvh{++Vh z8q7MgJNRU3#SUV*_wd&K+|%%zS;Im#i?6`Pi;aq*8@Z;>3E?|cT5C7P29v}eGc*OPOZN;m3I%{wF=t$nR4qO zY>#&-3B2-UEmty)po-Sz!|gkpJAbe1T2wru?+WPMWyucG;;UNBS>E5KtN&xyQ8t%# z?^Wdm>FHEu#kQ-@p8sAGkuIJ$G5=eN47fy!XOWp{xUPBd;QNe4oEL-y(BXZ}=T)+G zmVDEb$__)z*0~-$a5o&E?!Nr-HS)(sagL_7s$(%hnX_UClw~G`;~p`8KW5d*&&sJ( zF>7-CL`X!hC@;9&t}!a+7P!#zQ{wiBA5UKTo8E|LnE1S}8Ql1`<>mX`6Wd!O@Wm;C z?>LxWd_3WHhRB2OnDo}C2-^hQOZS_G$BV^2n4`;*N0c%GOf>kz?@Veet;}^YmV3$Q zn{T4KO`9m(l~-FoB)G%erRy^$YoxWD|j`#pa*KI$GfCXQE|$cj+jcVGMHeZ)0O zn$5ogRb;OIO&0}%5+B-Lr)6rpE?vD~s!mscTc zWB*0`y>xp-Uq`xl3W!S)8nH$MrA@_T$q5~!x>HI|sVrNBCGyz(5BHtrjGs>!7Ob6l z;G44T`+OxO_~~i-*oXFveI1QcPPf`rtGLWiy0Sn?5}j?n06b<)o#n~P`jo}x zIp;e2Hs8=U>^8~$5i;MxN|V8wQJp-zeHXkFZV_ix>gOZxidq_(1}eE=7@CH*EMe}T*yWtvsYd-B)O&rPI+ z@$D@+YGEEZ$~9>}m*pxif_g|t%}rG>Rt*1rphVjXB$Ydow0ryp6MWOAgQD&NM$)~% zL?hU+^QAxBtlr%#@mg(jp|AB=()~5vT=?wWqzd18l!Mp!9M_OJ5&y<4oo-6)TL*o; zPn12~h0o1Faay>&Q=h&tc19IPy9HdNsb?)WL3pJQ zLS9dvBvN)|CEeTS)H+E8yB=xJI9$T%{CHLT9+_q0GF$P92Q~t=mX$LW;QAl5xFlIR z(GE*|$wwb4MSPUt7N&8sq{k$-C*m#t<0F$|nAlj`x)9HiLPb%%z>(^8>IQm(L*Gs! zkIYu*`A_)7Lk8druhbMOSQ9g;LXhvYpS$z@8uDMU`jrZ<9Xi^NkGn%AmA zeT~=9;V_CxN*rBO$@q`+{kP!!ucD_ZyMe_bopddt2WGf=|5?78@+4}D@*=C|24N87zQho$)rxT1JC7t`ud7U=f;f5<_<|| z_1D*PI68bMT$JAYtvYp~Wo^YrL9Tn}K9||aBcHGYK7lt<@v1g;qFvvo+~ncDJ>t48 z|EOa%-ivm4ncp1I+kSt3)kSaWPv?t2VSC@-u^U_{%A6T>pDfEjXFEJYoKSH~_B(!IqKtZdL66@Cgl4`^_Nh&sTcE z<)7*I{I)s#BI7<^J!5WC_>-9q`2$wU%@zRjKlZ*rzU^x!`>}6vPhlMoTUwg(?1cUF z=UkLFy^>4DwHcy2PEVT4lev#nJ=SOWhaCLp%59~CeePrJAyXanvTUUr?z#2!xk-&T zoxZ)SQ*oso=8oN;c2U|mr;;u`t+VBca#@6qoV`Wg8(|--Lr{8S)cN?2p+&H9wWcfW zwDx_S=k-gpefIQy9b@ERJ3d)4C5nCMJa->EX}WwWKo-QNn3;3-Tftf2%x%DuJun>a z=7OB>x;L|2fKw!-EH*wmJCP>ZZpur`&7xPeV=Vv-?)D!;)YRNH)rcXH7&lyaI3q9s zO0?A!=V`6yN})QXf~pPFvg!m;L?FyUCAg=rPUaHraHH1m*_%B@H^a*}dM?%@fzHx9 ztPpgRz%W7n`X%X-qT;O?HQ;u%(MkG@*T*Q=2qNZ)Qt*rfSS_PErQt;}gh)3RwJ@%B zbZR3dz=nH3MqX5LWB?(8j)b_-JREfOwN$7^@*j%C=l{j{$O;dGt>>0(?*u4!&UR!7 z5?lEpD`B19dEka!a7Vsm`6tLyJG=15^zyK;3}5B$k-U_}=F21evOMxMJG(9_|Mesj z-36Y4dy9e~Kpvonky>tni;y1@iRWvl`n{}T|4!&{4J?~d z1ND?!vg209Lcm7b&jq?NE^6Ze$Gn7?bHCK**?OOy1FH3=k%E0^j>-jBav8TUo7$WYXby-;3O4ab^ zG4x(1r^ahj#d;$>bZqXs4f*Bw8^1I7wXPT_h<6oz?j))!Pmwb(Q@6mA&dO5ocE*I* zit+m^awR|bIs%=A5KM-~^dGYAJEaSp<-~;fGGh3J@@>q;_3o>%)OS8j5TCM;zEa9# z&iy4Y7k>>~5?4aNk6TR7y(>ojW)~!#_I!^3l&}3Tch#C?^WXau;(i|Vy|RKNwnxsM zaVHvltpBFJ&5SJ)l(51tW_1@pZ{t(3C3hFYcAHF}CbBq$WTVe>30VHI*Gtrh~O)UNAA(y%^utHn76Qzj-ACz?DnYq zOrhBBz-kG@M=~*ON`CxVJo8t5XeZcv+RAJneR)Rn<6Lun&D_}IktJb<>)y>l0uY5N zX}IL-SiSaIr4h+_19~eHuOl3g|1@X0+~*E71aT;L!cY78gTpy~-ew86`Iw5j zz{bEK5u#K7RX_%^kaxRC=E+k?KnG&M6ie1_^BS;bb)M$min z8p8sqq?H71z0V&2|A_d(urG`pazKJOCu-tQBmwitcKew z9uKCef>=ealx9-s=uQT!o?ARYp4%1sSqj62zV0yLV3k8FoY8~6Za7Z4v5!(V!-YX6 zr71?Aaw_HO<^|{<+5|PY<&oO!YaC@Kd`a&u<+M2LX}uj9X8+>FezU>k@0Md_7rrC;1g3UNE=lg$1)^^A$37GM+92W8yB@B^rE6J`-LG5&h5vt z@i4^~JX$+5Y=ugteUjZ4mtwF6b*!Ex*lymdn0~7qCi4@;>YfNu95j3b957wcFZRNR z>RM%&N67{O(a)Mc=xK5YmD9?lsHF7tO$kT__M~iYcQv{y`sF5#bp({-AW$-LPE zcuFaKlbc`*tp{mGorFj0!Y4Cf_*Jdqk6rD!n;=m~e^po3lvBi=SUidQwG}^-8XW@hnvP&aPm(?|77|)$^(Y%#&?T zmTk`@^dQtml)Y*))mdk}vs^-Aird3`=KD=ii8RX&#c%ffC3;ziSotMZuSBv+aM?V$ zrn+8pdM_YUKG3Y$Z}eH*XGdv%HXL&~&zqRT-SPpq$Z2Cg?HypI9#^zy$aRZ6`+hlw zU&Ev({ENEdxJP7!<>ngFT2eL<{n-7;`Rt_>9-`5oZ1LX@$kKYB)(Q#0nNHO{k$xq5 z_XGMu@VKtz69mVfh*jHW9URw?4TtvQKPE$WPwRYOvAv>}LMoLb_^k!Ik7hyC&rP2- z=Mq}5L8^=W=H7HBzsKKb`Q>!LIpvstZ6p48OG3R9r~gy}d!3g`{1xio#yY=iRzp1u zL@%Z(!VTw?x|j5}oIXnGs_Ad>k{8aHBnJwPCg@v@WNEA2p71LP?UmrnjT6YdAX#VqdXinA78i5Cs%=MhTC5)DaHq;sD=du)9w zN=;X2k4jWeVXf6iPPCj97uD79*>jvZiFu%h<@FUcuI!$;MFn2bJ2086K6*LH?mO@) z`5X*>wl(N9{7OPl^9Yi!9AVzW(tkzGo$_po3D4IdC;3Y^MTj?Tx8IB^DCoTNKOyJ!kFjWgUNY0H&dyVo8?&s^^G26m;Td`S zJ3QP?YUVEHWLU+Oj!u5#c^;wd9aNGLT;>ZlQxBIdcK2DWnCH1(r{z85H>p2RqiQy4 zSz1|Eh$q}t)qlu{XA~20l+4DowH6ukE2`4?-Fg;vU)Z=`${0DSwrkZ9 zrz0zF$s|oq%S!sAo%x`fC3roKrA;aWgTBtoyERs4Fv+f=rYozTL9Ta-{I=#}7R9E! z&1RB8w#mSpd@{&$+u7nHw-ZBkbnG#aUV(VS5Rdqo{CWs@bc}?XP2Hk#D?X-p2cqrx z;ik#?dJo3wssSQ{?bOpJs@;wSKRserhtarxPfU`!U#CLKb)-zy|{WLsaG zczfmf_$+uK6izCEDnp?}3^L>S8!kb5sz{1H&)j#fOB!xH7v92(A$*on7IOCnNXw3^ z(*<98Ox1MY2cx3EQ}5A*w<7W9m7fzeE{aa3{H?V!dlW0#$WKu|p@^~w<;g~22oLWo z153=0l|#T={BG6j(DHxc51{NbrOR@eyM0PAuVck`#C6fps{MZJaQ*4cGH=M6=PL*{a{E&xcMJltN+t zC5foE*P}?jiS=tlQcnO+`4;vq8&^|)Q!q3AY<{-Ytt(do zHMMiF{fZGCIcBSG-f-;#x#93=jR_E%oe!o_=>vKF+fo=a$woVHqHO=!h)jb(L33j& z;`rw#+g`+iYp-^w)<`PjfUEF19H!^-N&GKMiFfr7;P1==nuU_)!zU9YP{GWgl`%3%AWqtu?16Wdt>bY z#$V}uF!-n3aGKYTLM!s!M7n~ob{g575uz)$(xbG0f=x80>IooL%EO?*SOd`JBA355 z$B?r{ntw`qF@voZe#B8jNla^1q^A1*VBOD@O9GE3QcM$)q)zn~vk?b{rrKj4g+QS# z9wCn~NH{XVTN#V#KhoW%i(>>%?6-uK0iBfOJ~*pB=W#{Z{0xdropDd_;XRSN(LLS0 z&ju+MccWvsRi1t|REgo5V1AnS<>4uTN8f8bR=)XDQ44H;dLhT0t&v74M+zra{M8e*XzQ-RDjbW;{dDW;}!xU4`3JKrRz>zI%P(Ymw>K^w|cw z=Qxin4-?_`zAMTr^n0iwoNNOJab-$ZfTZ_3%tMExoRyluP7U{Ff?j|fMoku*+WS2B z;Y_vb7h^lX8TgGNvVI^$Lv2^sjnuElJ(PiZS~(!vBF{$VlV1dH_a+_tsbcW zX=3!5hF-s4Ac)zY)wq_t@ES(HCig6zd z5@|=%U<1L)&-|roFJNFpK(Jpg_Dkv|aw=X}6_y|J8p>iVhJ z^unza^#YKrQ{1Q^c_6F9VBbOE`@bLK<-KwHtz9yT8d5*BKQ9KsOh3#c^?QzbH{)AF z6}}%;!iLLQjmTPYRH7*URxLabE0|?>f{7+Y^k?${3ImVj#2FLw1 zDG;v;wvgCpL41SiL?X7uO(A5PRjL=Op^JJjNc3d68qwuqH7*%~dk&$*NK;aV zZ`C^so|}UNMr;HhVZE5~Wkw08?k-I8t1BhMBPBNJc!&Zu0C|#8$8kF+*;9qGNt7PQ z4uX#|U9z%sVkh2@ocI#Q>C#{skl!QzDjSm&qqtPxF@htxGS9M4$6#>YK^Hk-)HO(I zs3?{{5xi3NJ>}@P-B>9r@9kNkgt)sOfU|%&X9!1*OV?)~%&XoCaYt9K>K@{Gan>fV1S8=g2Tz)5-5i$;O>cK>@dL z5U~MVZmkm#P{FKo!`)nVJAT1J2Dh~BQ)?}xyK;?T&1*rvsy@T0H8lxh7l^&?S!8Pd^x) zg&B{$&CJ+2qDi6{k7ev<757|^^T-Iv;U5SQeQo^-X7a%=E~z!Ree(~7trtsQ+%r&v z<}nLB*cW!VKxF?8V3pY*ArGI1erCvnBqJPz3{)`nuaBGfpBi$6DZ%J~pE0mW{(i?S zxdgDO01xn}Vcir~_=P_ys8>>(uK@W6N(j2>Xo-+vEHgapjwf5K@;eze<|CX?EaC@* zeHot;u4{Qt$4l84ARcl=a@m%I)$v>6&L&uNa?g+^rCJyKfTf2k=B2G+dHV&? z$WdTaV{O{IS*4jiaV^ zV;?;8dL(P2_Ouuf@RKgf6;>G3`}FD8M_;$?p~TJ%T`J;8zW~V$m&(Oj;Nq(KoE%{` z`oiURl54C;JeMe)uk+Cwdwzr&%3tE+34@onsgICBydfHyojmgAVKj9EpNePJtas3| zt~OPkiZ?UUa%vzh!3@Mc3a|$!v3d&FYwRUtFELDE%h5(qVeh@*34dE_drR zUtEGK&DEJrD|rSuyv-pLmKe~7&#%<#7ePVFN;nQVXBtA3-#+BhANn^?Ya(kJKa*CKz@(O7YiqEv{0Q` zDWu9K%miM|Pd3Sq@Ljc%-UsKsP7j;5+Qg&L{W@qQNr?Rrka;K_DvI~(D8*6hm=HRQ z#mHyG$d|DQq+>T*0w*T>{6ogMrCzdiD)h*2I*V8|l~lvUecu9~7NmH2wwP-gC#cZN zkyyhB_Dd1tpK-3|WPqi{%u929_#UZVBy}ZG2KW*Pv}0#p4~snY8I8>_3W> z6)4lL?gjQ=(MQi2#M$3vw(3bQe=1@a@lfT=HsDPB!kYm$SU?eyIH!b&}{t+c%6RP5|#@B_v|0bd)Av zyRgzgMW?GLHr$fEE`jTzRFPom>S+td$w}RPaSjkZL9#j*;7l?7sg+bLmF>SU+vZEiY=$4H&xJEKVPL-7YjO zh?+y_&X7E);!-*QLO=&Rp!ww8toUCQeVlIZbgM{XJ|%TCQ36_uq{#34&Z5&7K7q`w zqIexxYQ6JhFiN%REM5epEa$sF|KWl-D(WsF4j0fa`Omwa`;Yc?DhjA(f{Ticr#!XF ziQ?c(Mwt@7QwW29OE#+btQ6Eq)w*Bo)6qzf|AG5MCa8U{=~RE9v|i%fL5~EKcyJ8T zr25875oo^zG}%s3^rgf-WyhY|S)7aE=&{mhzj5ilaaPkb}Zc?z9F8qhd1;GDI2sB^W`8CV#xm z<2I@=6XjbhbKJ|PJyD#b+5(wiEo(u1?y+>^Tk4&UCd|TVYSF}@&ir`Pt5~1dY~y?dHs)&2^HTTJRsvTpl{W@;UWn|+5wBBPz3jB;rPxI zD;}w|2CGpmaqMN+C{m{a0P$6+u4EG19~>n$eU0HPQL%R|3J6?fp1r4bXL+$9=@N z)7df%3mMdq5Y^3_`3BTAtPm)l>F@0zfNN%Ftd0V zz#?y8=!_>pb*2v?|AhvwQ%7&?T@M`Bdt00V5dXamP=YC%w`M>g#F{~}$kD-}wI6mU zoR0_<&Z**jDJ#U_qfEXCEwkI?3wu$ZaTx8gKa_Vpc zu|>YAbBwDD#GUS+3i^2&&_l9d;A&cvRtc60lp8nmBfEebB^#A>8Mf%!9M}R*1q#a(!>tUdre{Vs;{;*Icp*_o|Bvra z6stlH{D2dKD78nEVYsV%bnsG2hcH$a0fcE;nT+Cgq2Hs_p7d?lEjpRBN^6f)Y69C< zM;QrqndJOBBk5R6_;?J@xVH~&J?kD=J}zwgCN~1VDx?QNI-OKK_5H_P@6Ll`RJe-n zOlP%%26i~bKUS5p;Yq0vu+-ECJe&Fms%IB=LB54K-dQNBeOw1SW@(O>d@`ubFoT7| z?`C?dVv$G-9U}*Om)^xhd1XT)RbJC`>0cM1+YN<=tc(Wzdr9d57db?W(gICeB5;{q zUyZ}e*iOq}YFC?W%cj{d$j>jHN?+?*nPC5P63Yura3SB!l$sc^-*xXI zsLDT*+ogg74Kh^03t)7ga(BN^6PUlt_eCO`2{-VgI2 z(5hgZ-2BJbHH%N5|A(i?Ba%;LU3DJ5=kc7Z3F-n0YBMvQjmUj9y4WDXlWd>8`Ol5G z8(kLBeWxuhPDU99bUxi+VJ4hVA#d#Mo;wHwdSV~tVRhj){q*$T!553>;H=C9HfDn2 zkrT?%t>5Te;-u)gnnNL#0j{h(LzE7{Rop3G5#j0Q<~ZLktADMJff>NEJM)WqlCKS= zF*a^dpf6zqWJ%0UzMN5O=i71LW*bgd!%iuE)YX`&Y`#w}vEJPKRp#RORn~T( zHNm|C@C4qkk$>-8JXY(ZJjrEJ+rZ0j%_f;m{!Zp7)XDA-*%rZ4(jMJAkoHVimYg~k zg|BbcDu*;1l*6|`bQ4(>L$&2N3`QUSlCN~9{EDNpt!>30e?TLU;wGi>5uT|IF16#D zEORrIs(-lWo&m7pbIu_9<-0WiySA6FI)2@p9(Ts@k=Zr>&{na*?w=|teck3f>H-}? zfU^<&(Ea_HYL&zMJ{i4jJF6#!T+oTYg45<-Z2-xARV6@(9Uk#u)L;(4g-T#H*>$;E z6AfYn@;w5k--I>b73`J3GgTd$35gy1%2?VKaSqkC(I1SF!V1ZD+eV>5aZDoYxA`wj zK<%&|P>{d%8I`^-ymiSoOOoF7iKdw#CqzVfH=kgQ0@S^VIb3uC6nOeqBWb+AFC|DK z@h!x0-BIXGK*D%>%l57vaS<(s;=~B$E_OA|3>ASE)l^pa*M;~*!xP8LB(F5|xHj*?gNP2SpBQ;AMC+pi;Xa(yCc>MfT=3n7ta z3ChGL}QSLWHNbUG~FvgrOU0%uJX9waZse|8>Fzq^I8=< zsYCLD2BZKC=w-nYB>kxYGRRqDOZxa4z%Jwvk9MT*GqL6Dm{se!?4WBvIgR{PZ#BJ# z+!J*anPy}~`BYLlpI{8}WD|dCuV|=4EmWmateQHnX%U_&T7T*z;PiBr%d+tf=mvM0 zB;{BvO1q-}9@(V&D0B&qDr9uzG*Q{QC+jK;OM=dfM-3zpMcTRdAViS9b zZwA)#Fau(-<@ynmPZA0t`kuTcZ5<7x3QgwS1A(_RSd%_TwvsJ6bcI2bkjnf^J@>i0 zkDjP&Dn5j`u^=5$*2xHH>u~L4FS*=U5W}1AULma0)Mw7T8Tc9nf+ko4v)*6B!}tpknxi zZ1RQd70m<~>spKw96ui@bt!6EuNh?K+EVLEZ4i5Y)Y;imGdw4=$H~Y5prSoSuLL-q zCH7Z^2L1qSxDIj_>^@44Wcqe@uj&!fo?YA{3vs*#aU9g4phg<(d{lw*FXje47UZR< zBbw2Z^*9u6T0Yb)zSxRj>19zONPYp~N1dUC>8>Ej&>0*FkkFv%Q%pG}XAZBZCo(bo zP5{Aok#)vFw4BEZ9f+ha)ZSqgX+IGh7VF8%8_0XP`JRsAy@RR`h#k8uEJ9gW75U-u zvDVix{u-|RwID&qo~>&P&lo16K$GYqI;`I>Kns$w{GrMdM z11ff(6l$h#jC)n=&GFW+wORp~PU%fy)P^LjvJ1$-eG6&X4P!79x|(Hsj$dv@s(0xS zsZKefIzu^k-Kc3Dl+Snx<;X$VV$r~6ICWG-$pfWk_TK{hq zoHFf3RqtJv$FhgH7|M|A~SFet0=FTE>t=~{* z$ER_+O1BxliJdn4%5&S3`|lLKbER?fp|7^T9G#-9uN$gjCjPQU-!OtLA)4WvU?G(# z?FUZ^Uzys=E2K*j`pV2I4LD58Qo+v(3mqQL!zL}!43VuJL-fxZmNQ@+0D)E4FW(q# zmokuuW&l@?M~`T?uYr~m%=0^|Gyx@jRBsb0$7z+!y%0PV^$gVlI|5a=yeS(y3>nv9 zy37xoef~6k+M2$WdQo-?v{L6IosT4JE@PqejB-1&Ro1B`!erc;Gan`SYTKpo1B?F9 zmvrZYAxawl^!yZ(cOvqSt+W+o^Z6HNmwJ&?2##s1mkj4BSkZ)jJpz*5SmCpAKiQ-o zIG{X^en8<*hos9xMusi&H3n_qI-m(gu{A$Ytm5a969x(}CJGUBo4~yVw03ITS5S3U zTKuS!DnN>+rKqCURv4Hs=}A*C;Dg1%HFaOyV{ z@6etss2!!G9rcn$0baqTIDj3<`2x%K@M$L@2YA3THPh9;#*#R4o2yy|S=)b@ey7zS z!-fn(6!$RC9chp_`q|6CP}ILQwPR7oXZJ`7k;o* zJ}+N!N7?i5RjeV>@$4(N(1Rs5(`;_0sdp#JgQ_~--RB2LqY%t6Pa zZqFtAnbJrIDXl-wJAHF4xs4TolF9skLkn}Ss>ma-X3j;$?Iv6^iy4^8V0U^#CV~UHe^@$cL$yD z@AR#?qf%->L24d!xZCd@6T!z4{-JcHIayK1W5i1vP=?e`SBm3^UsVBNHb|xf`Rdni zxNg0JG92A%yt@jpT-BQ|M6LU!ZH`PLFC%6R3<~TUQYOB@n2B}2qm%a1wsKud{S(fK zde|bR@yuSsVQm(A%TF*Dd*c;MRlpkLU1fbL*iy`1aKNwBnl1`i(32vi{bj66|ITH^ zj+%hS=u)qY8ul!RP85W%7wPyaTe(Hnb}7S87!-xQasET_v-4*h?70H%H!<~m-?FNt z0kuKK)Lff@dgU};GjtjPeGvn)VMwGmD7Z}8BYndQdWfu22L7!DhI*4dAl&$+XHai4 zV1x2x9@{f8h|(6#1(y+$7uR{t-;5pwowhF^z26s~7o#~8ywH!gMvnGxJEckzIHW)s z&-h93qr&`?r?BkglJkGGd5a@q^+Rt^F!q|`?CU{-zdZoV2|V|2N@QN-lD1ZQdiRz= zC5CuMbJw68^ZMa+lgP;N=olpgy5?*-h?rM=kQHordrK6)bD(6yjgy}mgo`Jt^g{|6 zPrhGTor*S2NVC`WH)SWeU_VMFgIN~;pw0ow+VMoLbkG6=skP8uEGa4RH0T{(NM7gp z)Eet{6oWllvZgXsQglhFlHlB*bY+#5@6UZed{-S4zR>S|#A^+z@cATOdHsRi`GHu` z9}1ogcDVN0-67~?EC6`d>HJV}*|!70v}EcDfbbUcF_G5z(mvo>Zls;^4 zp{I6TneI#4743aQn&%OY>NkGR4i#0XG>pZVf9~_9)bhPpLHOJqVQn$Zj8DiOF5# zJ1&|6&9?S^#?`Pc+Q|+8{>^nWb!jHz`RY4i{GT)hzW&Fy+jq9+lc!^R?DZa~2xQ@e zzD6d$5?DsH?*NlW%>V-tb@c`sq*!P{@F=2wn@TZ7tf(L7eK`xac6s7XcyB_Wwl#m= z+e}YtVH{G$GWxg~!i7*^;2|h~0ZF(p+K(aL14?(~ zazv2{T-}(Vcg-k@$KZFz8I!xQZbTXifh=ZB5<)1z=s=gxBj1U5&6#M1O8wOWsFmoW zL6h4ARt8YoioMG%M5MO8O`@>dx`PJ%NglcWxjg*m2kv8!?g(k(O!Q58SP1@iAUmPa zKKTp&9A%0}N8#T3ia`8+6;7)6C)Zu($`Hq6!-0ficve7@`w~0((0_74a1+_m3|ELaqCr zZJ~~<3*Sgt#|59@&)54C9DrF2{uGBj)i3>%XuBPLaH-kyO}}F@PAo-FyqY_Kzw1MN zGNpfg2DA%V;nz!^5=5~5(pY45cuu%+fODCD+(cWxiCBMj+KKmAeINrUKt;38B!Z!> z1Ez9oxsk9}uwyK$UJ5PL6AwxGB7`#m?R5_vQ#y+(0VfGS6>+u;e)GbLuY8T#(c-HI zgFi`azp||{#>DkNS0Fn06_Nt2h^#1U!01RSAsA{H7(TsUR_rib7YmD=G!W1AuTQo! z>p-(pOmzx-LynS>s^fa7t6W4VdhMrpP&_WpA4(NA{J1q5mfD@6>ANU+0VW?i9Ixs3 zUG)yC;WVid_v+|Sj{u`!O@1T^0qrlTWY5(C5xtFG26j-xtBb5=wz(`(U@STSTqFZK zKo#x5Dr%*8Y`i$-{(feFakp8Q0+-Cc*A=LUuI;h2oCpQeY|-QS3W}yV21T>f)XinY z0rLo)IuTbVXl`Lr2m6bl4As0<#b*PMM@_8seC#obfY&g$V7 zhDL^;GO-RefxBw=nmYE2jkq=U3M^&{sYY&~K6R0z&}*W{i&Roduh7GRlEmGpsF!H} zY#~iH;?sDvJH?I<)9K+r7(Kkk*#xHlHuX_RLORbsfGaBkjud8YdQueAFO32H#v^H( zTokJ`*KtnN)B?5T3LUY|?3`ep;~=8!oS@aS3|3~BSY|M^cy?D8^lho$1^r~%_Dxts z!uF3}Z7K6^qX)s+>~8(l8+SHDmP2_`1tCr1Z@AEuS)o;RxO6M6*GIlH*C=e!8d376 zv+oQ5DuN_hh9KKQq)AJJ8CMIt(5$*Tv$_Dl`&7K5MFp1txUxefxYAOnY25%QjT${; z@u@}?7LGzN8Uv68H~teS8l`KV~Bi59%!k5DXUzX0b^p@$wE=Uqg7@r)hO+9D?= zc6#4DDqr0!+%Wby@wG?qr0P_4Wf9a8pU)+s27np17<)2w2*+=@Z3#T+0hy7)pm9;P zyi8C_5px?=*9~CImQ$mL0{=O<=5*y`ZkZp0H?z61PQ?3Ju@+<6h)TzkYmcB1H7KNI zY2eD{5{3R}gj{-Hi>(1rIa%hAUoq8&^wuG4VKFx$8E3NpTaKn z_Va+*Cd-nz#Z#{}j-P;#-?1J9J7_4rG_s&J^xgnO`55L%*u38>sgic1k=(kFqj?2F z(FCYpZ-i)B94~hJPm8Fx@IJ0C<-Bx(Ix7Tz{c~Gp2OJ#V|FIKfe%ovU55W|ZRAlor zMagM*j~OANJM`7--`1U6(?fKEKow`vxs?DMeT&lx;Fiy zRse61P|`6!7aGEyGtOrySo$I-QD3$*k|8! z&c1iNKky!m0lntzs;>GWVN@lF2r%N_twGy*9-xW*Y`;rK*8a}?KiWl z6nm9fDiJb>*Rn8XSrA?j!+O%qkfPTm&;(=P>m-7ah`WG9>~J8Pz_Kr}oHPN7E5z{{ zOS;cfG4Fw35QzawtZ*SgrqZ-h#`Kqf8VJI@zdqm&>IWHB~BJ`!JFI_0m?xDc=z)Kd__(Z2^7#*9Jf6Y&oo<r=L=o&+6W3MQ0 zfs6ExY6)fSVzWo_y+mxxS4i9-$-VS7jOlF0)+_kP`{~ey9&s;lSyVKWd=ghk+el)`fQAHDqvsx&zA8q3 z_hh|Ymd|=LuhQN_YgfmIOZ6n|4eWZXTIoqDR4?EMjJ{$bM4T0S-3eeddYEL|!h~W~bj3W=ZWmlWQ5hg# zy5lK*=<^ zjS9jY9OZombSmU!9T8}UK8J01r6)2(t5-m!=joP3I`?r3r0<{v@>3)GJJ`qw2aWpD zGZC;DrH|pAR80O5Fjwk@baw(Go_NHduS|#dZAD(m17Km1Q!y?B%jdH?=tGB8c&%ph zkRS-5^7;~hjyxZ^w9%6Uz9`}}DI%>^8ZLpKfJk@kmYAe)R$H;uFShOv~!dkhox zxTnoEA1uq5-bLrdBn<#%Hzd&ViU`JlCchhAXEfn8az+w%B0$!R-s!~V0M`t${$l7& zN9W?rM)EdBQvQF8VF(E?p{bkZ;spjjgpG+BpZJBIVVicDQB`>a_HeN_6Qv8mf|Q1l z?^4+|P)N}@+&0i`2LX~UajN3U1eGduGG{$32fxL%aI_d!eCYNl)BIBolTQE zP<)t-If4Kv3A}6)4BKNbtK#%W7;Ap()`w=-ufC!;#MVMKc19M~Ft;q!?(v@QFgfwB zRFk<7NU*#jvW8$x4b69-UUkn7ll=l3-fB4H_{$*$ok%6}HR`>`EVup;V(~qSGSg4I zsrIN2@itOM4LfesPXyvK00O@^@%mIywU&TZ15b6X?KMkUM+NBsgC3 z5Tx(xF(ZQTBR?qbhTCr;$_~6<%^!a$xfWBpWohuZ6Agw1E?P&7btll74rRW01zi6T z61hbu#)E#<6MxKVcmu<7t5v(UjI0ZkmuwG6f5Fn(brR6@Q#|BnEv>6=Kx(Du>jhHi zXn1FVhn2y#$b$6!=R|Z}iHQ4G(*dFuc*tm^a`Si%4C#9RJ;w+<`4C+H#K!aQOUQW^ zea#&`IQ#fxdVwE)yt_hTn|XNdO5O0VO2kai4GmoPW{L$8yXb!U*2{Zbz(qGaWJX+8 zLOV8)Ew|ptd$ng0Hg55E7YpILD5iMG3jc+%|2;I{sWX3phm_n4K?!zc0XvW}ozvP5 zz|9e0u8?989wm5qZhU25+LqwGxp{KCMU)zGo?m1B6^~~=YjwPY_1pC5uoo|}m!1u} zef&CXF3|RSZm+-%kAlxk&N_FnVf$*yYf$5`%KHlRQXpU=f${af7Psl%gXAhksJb`$ zd>f6A`q~7BfPh@2e10!x0S2o%iEKM!qR>ON@!8F2Su6c=IaPVPLQ zm!65YfcxYWC@j73;C>`$`3A>YzDJF(s(D{pY5FGLI1U# zeLZ^BuW6A4K}J>M(pSY85drz#2ukA92P}dj8PBx33kwS-UMp58QrzyxNOarpay{^` z37TP>4HO2OXd(it0pv!tH;@Sw5VNB`91Kt^ju8U$)&(j(Lxydirwp_|>t|p1 zU1CgN(u3)sV(BI1h4CJ_0wPBdz~R-bqP9lBY%-0**-gl6S8#5qssW*`lq3M^+d=ub zrAZD1BnV*%_TX`R*jK${YcS-2Ujg*M)-`v!djnue z?kTh5V=Syqe-1$bgl%dXohaia7kzSTx`OTDhj$s#A9!CMx3;fbfu2j=wPwCx0mQYu zy{WUd*}%h3T8#(Xr=Kz)sW~9P0}DFPhpu?C(s``}9lOw`aNrvN5l+Oqb~dAhql^5q}Be#GFid z0e37VI~59Z6n{$^()abdus{;J<6#>PZ&ePy@E}jlAhXy7Voq}k{%MqRCh?K2ivh@t zgD=zQKT%$I_gCtyHOS;Zm5_?Z(6Y=4}OiZzLX^i=@{9rXST@p z2ZdKoaUSKlJ)GqyCw=(%Ik{nv#;aZOLb74Wj#=X+e|wl+f%zcM!@E|>r7U;Em{sEk z9p3&pGP8e~>_!Hj0KOT0!xC_ZdCA!zYPks{Hs-SWOmEnfESMQh z20&)XMq_DFXt}66WiL{8q|)n`d!py*9j%An&hRQDc8cV6POm5BbYYsx`Buw&VjU^f zkmO$^-!4y(UJ9i|N0D2*Jc1hf9+aP}Fj$W$_D1oattyx5D#{=`H5vCm!Cq z)`<=xYWYJSUPu5OMq)NcGTmDAs2>@c<}VUk1T=qpkV*wxPqz4i9jIGMXPyURHc{4Z z61n9EbsP+orDl3duyn6JO%e$k5~nQB*`ClktAOZ4B`;ZUu&lc~Dtm=5rBcDg_^DrbeC~&szk2giW5!}9+%wV&q;At)k_yd zk|1g_@Ci>m;Y`B7p;$n~!&(Mbe2K;30zt%}4Dau>@j~iP}sRC`Hbvbn9jx z)*}zJ^(tg{xlP;z1rrP@1m=0>DDzrrh(IqsqPYOi2;{g2L@y$t=Nl>m z;g3Ar6@@$L<@X1saf#taBsIt{5`pYVD~k;;#}!c~j}4mTZK^^XrqykT zfyXKHvhG6^ZVFj=PgbtwGsO{^)1B-)Khs)2H{?D%ks$~*Y`I^aw4x3dp_Prz`@8c` zCrrz3r5z`P zWp7XJb^WHFu>rH?BWFu7r%L`3t{ZGgFR&nXwD$lR#f3(K~eE^8CY+i{XL*@Wx^ue#p zQnA`zWuaJnlO=?)^HC^Obih#PYFN!JFZLXOLvI-!P`jXE5edptF}wA3pochMAjP?- zSDbuRuT4+U4`;cN6!#uyS{=BI1AdQYG$Xc#)Rw;=9k$X)@3wzB_BYyhq9mof^2sdY z4sMzMAFM;BUU|6616Wg&=QMi+E8agXW{Gy2&O~=(o1dLODwW8*+Myuh75jj+S3CSk z1=`dl3OpE1Xxf#4Jc^N~MU zm(22zyt*)?$A1Ho0svUZzzhIeJNFTQj_3E?)?Miz|Haqq?622_$n}7B_ovskB1y_C zzVzj<5FCZSwr9(L_Rm;n3!wjs>1+Ry4ZsJ2B4^(;>@pQ`82vQo_CT$)#JZd%ddGaw zzdp(w%Y*S5XCH3zzQjbU*6HXur_dras{If^W0Cny8`DyJ3_z}XKr=R@SM4zj zfWS~2A4q!hf!ARuX8!h|;(^iEF8ds|04k6!#bu5OV^<-hC}o*eT*cfMj!lXYcP@`g zSNcJ-5mjl5Hm^SN6Ns!KOGTl2Kxyid7%j$DMeWU3bLfY^hD6bf^(%y8J+J=0E93Ts zPGBEXvgq~BC+pz9g9r`t)mIhy6CT=EOZTBzU(GHDxTGS*>UR82?dQwJUN{TyZL)5p z4RNXJYUMhUjfAu4w9R$@CD!&|hdGuAU(^K{HL8c}meiqb5n67w!;@E)9T+SSc+~|s z$){O199A~J|Kh{oIkcXvdb=U0Uip0%S<{^HSf9+zl&)jcd-+n*ii&ej4gCEq)ve?T zM1Mte3p2U(u=nbvWH}Y**21YBFK#9+^fb$TV;y_QkIr7N^q=i0j#ZK?g#*YfxHQGv zruv^3!}GdKqTSZ5RC3iDExiWIqhIgvo8CyuZ^Y*;y884=BgQK_RX?EDm2?zkwc^tF zd|*r`k&M(*AjYrl)Q=TCvW8RlOFgvoA1rd8cYAGL9$BdfNxpHDZ$Z$8G;#MDG{XM# zJ0-Tv8zjo~1CQAqC)?-A+TN|;j1FInTl5S4>G#9#_f(v7WQg%YnqK%`;)7aV^_?V) z-#VO-Ba0+^j;#8r&~H)ds=lBnaH=yzlZ4#VanVRpOWmSe=vNI}R~+i4v#B#=L*Ag) zm0%^M6iaML{B^4?J~e0oSxsh@e>JL*8UPOxOY z9;yNCW5J`96l8cxv^{8)tUIp_TdJ4)*eq zTeRp2OT8NB?p&xi(mMFA!o=bVa7V2vtUa~W3Nd5*6}pP2ITwxrh*Ug%qiYXtuYNOcWJ<+g5pm$lkQPj1x@ znQX-qE-s$~I}4-E5SoAZ!2v#U$4Qq|x;pf^26#sc*m~}ZcGFeu)sRD^a|`_-c);Q%PAE9pr50WL;qh-#9)8Ddymh(rJzFNji{JLN z0vuwqNJyXTq3fuZVFB8`>qdO^26Tsa=j5u>wRNZ_Y|sqVdPA+^V)!I}(CON-Msx)# z{?9?1u;mACvctRhydgvyl)4YD=~b_p4{~K^6^tXGePcplxSbg+UY$JuP;U`2 z-uuK>aKSYWQ1Di-i^vMo9LQd|h4$bpVDa|I=QsD9N3Z$kUCU^@q8YLea7*3C6oTg9 z&-yEF8xI-V_@kWOC(#Z?(m22fpP4-a+j2|g!GRnC&@e39D5idpIEn8K{zWwN`@o+% z9i~NkzMtFrB6sy+bqMi(B-MPPwi9@P126%a$+Uo=1-3sHFsiCePpOt%DQ>w3ojl^) zTbRD?ujlEsyy@e%zAfH->rqzdxee8{izkze>SfQPi3IlTFznJG(zBTKH z5TKG?wS5!P))ny3GdINcoBo6Ne(TR_R0(7L}RV1YWo zner1?dw_b0dR3Kb10g=`#FnjP^j8kr>^LiiPvxN}9Ojj4|D$Bf z4;~i4rf)d?3-o{DA5e2g#YKa=vV-iJZkF8g|I%E2$Klki^$oYh903+MNfSu#-ynKW=4Q^O&_SQtP+e z{;Lmq3ztXMd;imHjRwYUpLQ(&NwG}(H-lxs?`xot_^sk#at5akgoAg?$j;rY=-P_%VLwMCqcLWQ0MrUf)8CAe^c)P^T?T-l??l6 z_iN~wNZGok3!J)DnD_kK{E{o~Eq1Q>DT*Zbf=yb^|3cIao}rB3NY&$I!{cRV<>h(Q z95RD$9`%NQ`>^7C(n;%gPgb zCwfOha#v5MDQu!6W`Yu6SdtSFm#zi2vAZz08^7~W|D$0}UfiG89r^!{UD{#4^0q?* zr$&8xJvr)amv%cNeRF-&Pthhx{GwL6eYZ0u?geH%F7CDLOdbSfbMMV^gzZgqaY82CC*m#9S-9g{yiffhqsA47&eEhCVhaLtYkFar(jv2J zsC#ZUCmZ3%>)>dS2?P<+o1n+ek#c){)t?RNLbh?rC@{M(}YA=>om>_AxtD=lF`l)=`d$pZ7YGC^Dh)bzTGL>f}Pt~|1eED-o2XXG; z1DCUo>DG&w2-xV$o(!(K&?^_6?)e652;`ltj;B|$WoThkO`t*{q&tnf2E|Jj+q=|y z?Q@x^%f>8EGj#qR$pie%?e-|pzsNr5Q1^`1VSw|3V=6K6nWRQRrt#t2$aRxo$t5y0 zUCRWa(rEud@&Vy5JN94j(6x5uwGvgm03)?A6uIEDAvG#$SOy>4k0qdOz1!}-DAW4# zG8#; z3bDB3{_dg>myolcrpKUCRM6o{6gkTKa_j*CLKiV>f@>tA0sQx@?ot68d)(Pm6$kXG zurzo4nWNlkuB@m|tWuAOeVbsSyQ8Nf-XtK^aCP&Qse*b9I4sIKCF2tf9uJxf8p+?0p*;g+UO z{+NR=7@>$5NLh~eom1(`jh~n=uWU{-@~eU>p^I>wD^mK#RdrWok7!6Y_b}P2J*8bf z7<%>wJO1yvADB-3nV`N-)>vDS5V*Okct?}YSlY!7doFunv(@E~H>9TUGh3C(zr-U5 zS>wFAo_lH%zZ*!(Kny|1+ii-~66n;oB9Gfo2b8ARz`2a0TX^>L?K|ouHT}9{Z|6T9 zOwYf$`>qkLcGh^w`EWk4R!w7wf2{mx0sibWJBf^x1L~}~sqMnN)5}fia7(r8!q_4U zQ!PU10otJt6O#}U_>tuAX3s*EdmpA{Af`w8 zY%VAMIR{GzQy-mGh3rCF0u3c#yzXFcXT=X(T;hFypZ)i}XSx2L&h1YVeO|NXw9(z( zLke>zxhUp)hv;&yaa1X-SZB4+rlKuij_E=d;!OIKXBYwj%&K13$0=fL+%OEvqZBFr z=8P&R97~log^@QaNr(v*k?IgZA2|LOs!Z5T6R_r!q-8v%s4X z<;1TpZ0-%qP;g6fIjo_6FD2e&z6V`@AX`k?mG_&;%Q9?a&~U-^9zLoUSqep&iu1?- zb}?~=feWptR-RjHCtkuJko2P7Lab8ZIe`i}Rm;A4Y?^)BzxM}g+k4*Rw2w-El*ZFfbh#QqwS(nzApmFqlCcOqyVJVrP;@*{Q0D6?OiFvk#p-6cJn=f8T@DWM*5;DQ~TBli%XMO&1_jX;m|hx z>&{WHw4n8jNVf+%ze$3ckycN-4Nfh-u4M2sPDVWC`n!fqlP1d+Zy5dq%7DXQD5i0I zcBfU5474zB=Ra`JvF&t5O8aZ&D#o=Y%>x8xh@E&Jj<)M=>iucp*>;iqH>`@+hC8XWLp>z|}D|9X|mlYW?pS-?p?w)C4$hiyIyU z1mUk4-`4JjnZE7oVJt&RYL*Ku7;gAuFTAH3<0Ns0*ik`$!aTt=WC$qAl~uF!vYKE% zr1s-puRO?p6c>&j5}h@7Mk(9jd<=8C6gt6fA19h-mS^aBj`c^0O&mz1(tW%mv`5F7 z_UlWrA~6mLuj)C8c5D@_X18%}&7UIhjIa;6=~1AZEv@82%W08Ai=~q%rw;J?MYGf} z5wlsnL|ljMw7iJsE4oNnBIp1cKyW{pX~RJBS?5ofwLus)y6`78H}c#GJ>V3ijZqOl zERSE{Q@eyBoc9_y?F^+RiV2i$_KLFQA@0(Sdo&tRp(37-EW|u^&8vrpq3%QzL(`X$ zDtA`z(ZrIl^!EuQLkypI-%o3e6RihgXwC1XDgr#;q=Rm2jZThicz$z01L(r z88v?~Bs?*SYn7i#B0u!ik-sjam`I(L2E&5AM`gp*<}UQw7Pd*ZiiJu{veJuYRPvp{ zkH+70jTeEkl#cv!CT_6JhFQ6%PRp&B)RJ2GrCguL>*P704RMa6k>(Ekq5>v6ct@Bh zZ?4T1^cf36KyO5{QX=IB%7kS< zNygQj{e3H6h3Ep-2r^LSFC=N*;bBpW^q59!KOZWhc&7UbOS} z>buI16pOfBVf$63=)ylnTGP_Wmb#fVeY3$RaW zIaYDfStPi2sDm(C3OAZiFaBXDX0DL`kdZX$jZ^o7O|r+y>_ynt0XgE(eVXjLKmrbB z^r88|}+NdZI5U$s(f3njG+c6*S^ z+hwA^Z@_ak)snqmfSuomGYO`iv|Y|`Hok?BrG~jb7(&g<9}j*%Uh-|($(c<%8QRuc zquQR$jP`RcPaU19)y9&l^S7je<(j=|T%U+SQuc!#NW`ha`j8anEi&e|hJ2ji%ZdKn z&-#BphI5TZRq%cU0ohaq0r~K+pfu99(bto=voW?Xe2Yyxb&V5zGKZG3sT1V8mIIy( zCnUOWk~vR<}{MNYzsOhmjW|ckmS3w2P5hkH?erm*;7Z z=BKSr>5~<=i=d~qt!ZV;m8aWhTAt>I1J<(VrUehwvX=YPv*E_prn`p+N6Xe9S3H(H zP4^qMFZZ-s9=E4wl&TNMoj~8~vkji-r>g@bp68>ZQA_T}wI`nC7NP-tQYK$D^Z#aGsZ^tJCv}rsun1=@U)2tBnV(6}QLjSmg6*<<^#mJsuCY z;+GTJ75AsLe9PA7+avUs$E$;I;Pw68iKWNA#RK8X#meD>*7EbMUk!5;{2&kNba3cg zD2Z#0L~~zW2>Q{pYv}TEZpih0icZ~He=kDG*-l-rt#{1cVk$^$56x&bRHKr;aWwL~ z5==;ZHN#uZ_Tz2apdvnLpYzq(ylGnF+12Ha2GQ!F(^}OTS<}!V)RlG?3~PgU7+DI>pZT(4 z!IkZD9uV$KBSz$li(-n!B2?U=EnekTqaMJxOCpS)yq7U^sQ1luZ4r)%imwL2oPI6} zPDha*mF?AO`*B%qTD!vQP*vTW=WAh@PRp#8kv~&VZH44e+AO)zHXb_fvfm5lbl)eX zg1{Dz*4yoLuqqtyaL1s~SD%RA0roB#TA7uYvzKM)7f4!E+UHWV2=HRo_^;&I%fC#6 zzhN)M(sb45O(WJPZc}h5d2Ksw&E`(dqRm1{DzI&=w*@oBS^OpI%1r0 zNf(B<_UgAvgS;n=o#l1iyD|B0;rrgm8T{$e*ixTU_gsAmwsr z&*Bt851B*o?Q39=5@smFR}nX@Hf?{RN8A!A3ZUyAKOvKKM6{<1S@2>bG^RAt`V#8M zxM6q>PwW`U=c<1ugTu+71o!YWzN6_taZdmo3S07V;31Wkep6$lbu zNcbY}mjr)0Av(|J=aEHUc7S@}D(~$es+TA~`E$BejnNG;tyhMiU zZNC2@DzcNu9Pm3^Yw`!&JecTIgVhhIRfi9TjgGh}U-RwbYQO_$XY>q-tK6wg5R6 zH8VtG`a$w{qCM2r&Y}}NBU_=EeGaE5S*pbWnWyCdTjuBW6wF8TL9Ynf6ZMjh=Z+&p z7K89?y_|;HGoCt6a%FD3<22noTNsi4{Ey>7e1awh1F(BIZuvQgb<~FVH*j|YUHID2 zKOcSAx0j`eEoYVuXUX%fI?~ud)59Y=$h0C-)mWugp^4M3Yx=CApQ{_P29`fH(!sh5 zhS81BBoslmlCJNu=(cN6R?es~_%^Rc*bA82eZwsVuLIYZk;nF_`dwl())!2A7`lx} z9@V$O5{J9Cuo}*g6`)ny`9KMp7PP4n3-c7~(96&v5`O5Ng27MkLDOK~=dyoMWYC4* z9NOD1>)tDqx2XixM?MG1c>?O{Pj2CWwupWA!KPmNd+Hs|yIJy+4hncjIWR7g0i8S0 zLoi2UDOc!#E_R?m!)s-5IyFU!*P-rMy%v=KKR%vWw1XLyXW*xln5jDdd;Zp*gP%>i z(lNLys#y}Vb>M~ff|0D{o}<5}{fIXwlSDy-&knznD4*GS?6AHIYQq~qkHmR&$0OiO zCw~ILz$g+_}D`U)&m+7hzhhTIq+LxR-yH&Qu zYWC`ScXqMq*afT(IDK=gljzy(M_4{|-&fPPTnf*DM&0yZf*=3tz!ncgu9WpLo3GlHw zO9+&aou1ayI3i*m@s=tTc%QcA?v8@~d4C+!gbvQmiXX^Y#TtM76E=n?g4xNh;@FNe zTmjU>e}{r4(1xGmM0_;H3>gnxFihi!I#BAiCbpZ^Ut5&! zgZen2cJ7NDICFa;+(;_+zK_V=;RrLROO!v&MZjq+!J+(~-@w7D)065u7x_W>7aHns z71)9=OE`lcygm*;R0YZ)M>)oIOdxNmc1Js4CRM|KhI9St%a!*?6ZRk}0z za$cG){2*vmh9G2)(tP((Pt~BxCz!!UoWJj@3-*U1QrVLFKXE7?-1@NZCsw%+qKll{ zp6!;mLbDt*%k-@w*VMFfYCw-NVz`U2`_=l*xj8$!DlS4*oYKw?y@=rJ!%V{7wOlM- zvBBvXi#q)BtvH_74B>~@qsJ3Xd4Ik!YLoOOlUZ=w_-lnNZssxG^!y)s-(_Subw}78 zFl41~Hr>v`0fH+OJ>Ds)W3Fg~ARaMwTxg)OA;jF>*n;@{mvwiz-3Cb)Dt0-cv)t4- zzB-Af_@f|Pjga*s@gx@M#z=7%RYd&uDZd{Hv!Or^PVvDI# zc@WggoZST1FV#ZwO+b!WE(@aXiYPFoftt5DQfhwy-fY9xa)Av59>uo#uFZ>uJEr?n zy*s%Ng43{&5MB&LCbMXE!%%jpgX);*MsC74(Cgpzc3cWE9`fLKBJf7&XLfm)9OWZAe<-TGOnxDesH3m$3b0>>B2OLBPJj^e}cuZOo#kRMmmTf_#>18JmBHI@mn<;BX3G z3y;2XlG{wl!uK`p3vOfZgT1@)x7g2gfvq`MMm!l?dh1gP#i+g-#ZLhdY$#FcGP(BrdTixS>p4F&)7D z`M$4@?cLO-VX9eJkr=sjJapHX#XOZ=_yyWVl6jNG0sMz5XKleVk-v;CUi(p>o*9?y z^*29GTwCFDgCUzPUk8Fl3^_gqT*1rnrqI)B^FqMhA$NrF5&~L&pYv*%ltfA32rjO zk1k{N^~jYV4hS3xWbM6K9Qz!1JXUVbT?^3bolL#o1RBVTD~R?3+?=PB`^Ayw0|u9? zUj}50PpdLdWO_Iud>k~6*YwC%y%E=Hpd40*v#f12+i>-M)WC`Lsj3y=9ZDurn;C+$ zEAFQba5c3;+?#1{q=pKLa zy+~-&s>3_D$#U@0d~Sc!1(_M2bNXRnh0?Jh<`uMo#@q6PNTM$ph^M+=-D<0RTBOJZ z%;c5CtYKTS{kU-vkB;^#G0c4KyiRr}2SwY{j^fm;;W~<3 zadyy=kB3NqUqGqTc_-C33Z+F@Ur@s*p{a!5Av2yHio74?%zCV@2s#t`gqeGXE-9b` z5@{0Qf{)_o%gI!k$?Vm_lX>s`?q=Q_lHE0{z~XBL+&o@wIN7>7X^tw&r|~383#&M? z+TyA(t4nSN^zo{ofnH#4t>e`|7tQ`9cC@*)14H+m$VPq>R7Ee=j9$>5qjD&y(O+~s ztsmy3>Ke;<9$Bz4nU3fXh}cn;Bom%kay+s7OA+;Pne8;v=<=(dHF!;`a-{Ey<8JFp{Rsg!CMK^~8y+8dBZdwU^sEp$uPOXb(HHw36f zqs!R70ja=OO!%YDZ3nwqj(M*W8NhABpnzT@eX=xCcd*n&pos~hj8XD#B&kVnOGb)J2{nNuhfdo6A4#*&z+3M zl|mYD*K38&Fk|(Rc0Mf=I=SWyH5NeNyYJ5-P7QK&}Ehn_;7ds?( zsaR*N(73EFNgMi+#CSi(IWm3)a!Jj)Wn(mpOC!K|!o>wv+1t~d-b7UgpqlGQO68kcIR<_`0<|Yr3Ys3-HVP6P~ch9NOKoP>bzK1v? zrmK@~+fMhpFP;o!JB-+@8a&guKfq$Mlz^VR;T=Hj?;!WRiha zS@=4dd~i(0pwYrmIK`klg#|Y~-)v$|`mCW*BF@Fm8>HP|;V3`It4LQiV|-lHNbJ+C zKghn<|3F?T$;u&fg(!+v{c%N-2!78X1Vukr6ERX#c&c9_2IIw-bQ)oJbesxnj6EyF zT)+}@*Ue5r=c{T(cwF8C$j{OX$C1qW7+7~$#O^AC&7T~u?PYUAqor9RW?5#Dq=%8z zm`ABx6Zf_`K}<=yKQv)Qx4}#gKa>e^uHIm=EV=P`?F=hD=Syb0qLuDRX3WQ&0iV2G z{Yd`K>X7OD)G6PRF@lF`+*i2>5^036U@%pGE6Q&Kg{HP++Wh^O!G@`TJKE%p^YTaD z7ypS~Y)OaS5*J|&)Ty63i=N9XnX@7t7@5ifCnx2KUPCx{(Eet)DKVuTPpfMhrty#h ziNe{q-QQ2I5Z_G%H}cj55I<*FSZrpF!I9Q{TA4t!2>Cz)F1Ri{V+^{YT^#sf2gHt0 zEcLrI>~LK4obZnq!+mvVuSdZoq&#H;0Ew%gM@C@%GM2u_pogL423fM!RukWo8zD|v zj6#cGueP~9I9EXLQpno%F%~iA9vlLvm&aMaH$Qs256ipGOKqxg$PNeH&q)3er`cR^8U$ssdn4ns2fLcgLMq@co}?TB>PK~o=h%b1u@VU04<0eeoy zbtDzc1DUc9Ya@C)sJj&X$*t5u!)eB%JL55njMVHb&`+ttQoq4CdWEz*vQw5AOIuA9 z4Da2-@Na2GmpgVNaK@IK7Fx?mJMJc>cj{MN_)7}a$EuzyS(A!|r{lFt!|-xCFr-U| zj4HH^hDa02vI->q!M_b}QB95eo0z+PvrI)NCY0^z%-qKiMVsDa?xVAodvEg`nQA*> zU_uCqv0m`4#l@G#E_-1UrK4g`?heA#Xv98x*mJ-~5e&0r{W$HBUxWC<2<9LBV|!E1Ao4x8oKiD#e9J?7WB2SY zLg}W)1-6=wV&Ilz7o<*u#=-?9{u$l^^nOMqKNiu&7;{MF+nnnlyO>(2!i|r3`_q&`>q^&GL z{0Pl^Df9?9Yud2S6$E*qE)FK3&t9P}$upqCEnQrYma><4H`DDH5$@E*VHI+MqS^vR zcO~_x`}B;4sZWCdGh?BtOvE;0n7rirB>PZy_wOWm_ zIuCSC)F-2Y^8BzMSowHYGPf6>B+mOYnCv0Sc%xtXjEp5#lkC?}{P#gXq|b>Pm}_5s!)WVr_VrD3qmC+nXuzfM(}<6gm1_&Cq);^tW}-iP7sG-uJU z7WZaSL5V&ZI~vMdT1YjbsDCP*6+eZtSB$c+aS&7yD2~s;aPAx|kxL|xI4qIR;)Tl$ z&XaO9iG^G|zRsv|CqCnnQwY`!tM05y!_8!no!67ms$!SRuR!Cq8O$q{*@oN&OIFQn zK+AwPQ9!g;oZvLLkAP3TjF>HVR`_{fk7FwA>^!8O11;NzxSPxQc`#!U6?o!bhdQTr zvFCik;V2Zf{%R{sOsJeJ`$3Fhzzt@y)PA(I z3=3)VQD911V4jFFtnoJZ^n$P2lBZnM`lR)Le&Sw&f3+tJ)WleVfqdM$y zTG`U-TH5HpE`rFlnuM9vC1?_x>b6L!K!9}nS=xL#8ebZ1q? zX@>FgowH3P3COXd5Et;ZZGYee?fBnu6Ab5*?j$C>?LBD!e6z!wACe+= zpADNTW!-Dm?qY3)pMn!2IY~U66O3|>`dH)cv|rRCSKGMmIiPMeKuxE$U{hZ^@uT1F z@>3_C?U#vpE~TM6`)_wj-gTUs^R(1n%dvauASgebs%UMMG|2`ZhTp}iBuQ?>bj_JX zkL*%svQFNxw3pqnSa@Vgu|G=>ktc=+81g1=1k=j711qindkr>yDuq4)@GL^$F7kgm zpSG3N|L=SM4!4x3c8di%c)t_ydqnT!(3Bc-KVBvJ97>ySzd=M@cJw%ANX5OoF#4Ab zMk_uhn`H-19#vuYr{CWNM!B+8#o1#-pZ(grP-(~HIHKHeAn};v*6`S*LaBRK;`r^H zi1az*7k8iiB`6W51eIEy!nq$gm9I!cJNg9GAPr@8IJJz_hSY5X3l@I!a_z3j;)m|$ zHt@{i@&-gQ0d5W&j(e@ifrB*KW{Yq_aLPLh2va7RmRx5Rj{8khozaX?qI9h5yNq!$ zdh_T+TOVh91YAYJZl+jl1oZeHz-A->?6rIggRU$OD+$%CqpM(kEW!R(V&G-t;ac}-FKG7Jb-Eb z@@7ylYG9!f3Ir%I03ig?IZidw1pGMy;;$;ge_Qair6yo$VW)3lr={@2O5axF)xl-N z|C>RzA|25s&{YD+#&G{d9S?+vmW{rdEiKLK-+vM+2Z$It0bM!(L6H87unFp|n$gkH z##G1B()9lt)r&hO{sJIs07k|7FJkR?Z^VBM{GTlTPa&eKFSe{SKtLF{!9Xzni%$$t zWZ`5+`^v%ANMGO1miF!6TV3TpRf+ybDdxW!ahUv{g_-|k@XyMQe>0%6d1LVJI*)&n z{&W5L-=yvKf06!kHTs_%{(C