From e3bd483eb56b87a50d8f1ace699b5bcc9854bd89 Mon Sep 17 00:00:00 2001 From: NIYOMUGABO BERNARD <85235653+niyobern@users.noreply.github.com> Date: Mon, 22 Jul 2024 07:54:07 +0200 Subject: [PATCH 1/5] implemented add to cart and cart (#112) --- package-lock.json | 22 ++-- package.json | 3 +- public/mastercard.svg | 5 + public/visa.svg | 9 ++ src/__test__/Cart/Cart.test.tsx | 81 +++++++++++++++ src/app/store.ts | 2 + src/components/Cart/Cart.tsx | 78 ++++++++++++-- src/components/Cart/CartItem.tsx | 31 ++++-- src/components/home/ProductCard.tsx | 31 ++++-- src/features/Cart/cartSlice.tsx | 155 ++++++++++++++++++++++++++++ src/interfaces/cart.ts | 19 ++++ src/routes/AppRoutes.tsx | 3 + tsconfig.json | 2 +- 13 files changed, 401 insertions(+), 40 deletions(-) create mode 100644 public/mastercard.svg create mode 100644 public/visa.svg create mode 100644 src/__test__/Cart/Cart.test.tsx create mode 100644 src/features/Cart/cartSlice.tsx create mode 100644 src/interfaces/cart.ts diff --git a/package-lock.json b/package-lock.json index 264bd83d..478c51f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -77,7 +77,7 @@ "eslint-plugin-react": "^7.34.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.6", - "husky": "^9.0.11", + "husky": "^9.1.1", "jest": "^29.7.0", "jsdom": "^24.1.0", "lint-staged": "^15.2.5", @@ -5946,12 +5946,12 @@ } }, "node_modules/husky": { - "version": "9.0.11", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", - "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.1.tgz", + "integrity": "sha512-fCqlqLXcBnXa/TJXmT93/A36tJsjdJkibQ1MuIiFyCCYUlpYpIaj2mv1w+3KR6Rzu1IC3slFTje5f6DUp2A2rg==", "dev": true, "bin": { - "husky": "bin.mjs" + "husky": "bin.js" }, "engines": { "node": ">=18" @@ -6191,9 +6191,9 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "dev": true, "dependencies": { "hasown": "^2.0.0" @@ -8407,9 +8407,9 @@ } }, "node_modules/msw/node_modules/type-fest": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.21.0.tgz", - "integrity": "sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.22.1.tgz", + "integrity": "sha512-9tHNEa0Ov81YOopiVkcCJVz5TM6AEQ+CHHjFIktqPnE3NV0AHIkx+gh9tiCl58m/66wWxkOC9eltpa75J4lQPA==", "dev": true, "engines": { "node": ">=16" diff --git a/package.json b/package.json index 7bc49495..455a9dcd 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@types/swiper": "^6.0.0", "axios": "^1.7.2", "axios-mock-adapter": "^1.22.0", + "chart.js": "^4.4.3", "date-fns": "^3.6.0", "chart.js": "^4.4.3", "cloudinary": "^2.2.0", @@ -85,7 +86,7 @@ "eslint-plugin-react": "^7.34.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.6", - "husky": "^9.0.11", + "husky": "^9.1.1", "jest": "^29.7.0", "jsdom": "^24.1.0", "lint-staged": "^15.2.5", diff --git a/public/mastercard.svg b/public/mastercard.svg new file mode 100644 index 00000000..56d537c3 --- /dev/null +++ b/public/mastercard.svg @@ -0,0 +1,5 @@ + diff --git a/public/visa.svg b/public/visa.svg new file mode 100644 index 00000000..00681935 --- /dev/null +++ b/public/visa.svg @@ -0,0 +1,9 @@ + diff --git a/src/__test__/Cart/Cart.test.tsx b/src/__test__/Cart/Cart.test.tsx new file mode 100644 index 00000000..ee4867af --- /dev/null +++ b/src/__test__/Cart/Cart.test.tsx @@ -0,0 +1,81 @@ +import { configureStore } from '@reduxjs/toolkit'; +import axios from 'axios'; +import MockAdapter from 'axios-mock-adapter'; +import cartReducer, { + fetchCartItems, + addCartItem, + updateCartItemQuantity, + removeCartItem, +} from '@/features/Cart/cartSlice'; + +describe('cartSlice', () => { + let store = configureStore({ reducer: { cartItems: cartReducer } }); + let httpMock: MockAdapter; + + beforeEach(() => { + store = configureStore({ reducer: { cartItems: cartReducer } }); + httpMock = new MockAdapter(axios); + }); + + afterEach(() => { + httpMock.reset(); + }); + + it('should fetch cart items successfully', async () => { + const mockCartItems = [{ id: 1, name: 'Product 1', quantity: 2 }]; + httpMock + .onGet(`${process.env.VITE_BASE_URL}/cart`) + .reply(200, { cartItems: mockCartItems }); + + await store.dispatch(fetchCartItems()); + const state = store.getState().cartItems; + expect(state.cartItems).toEqual(mockCartItems); + expect(state.loading).toBe(false); + expect(state.error).toBeNull(); + }); + + it('should handle adding a cart item', async () => { + const newCartItem = { id: 2, name: 'Product 2', quantity: 1 }; + httpMock + .onPost(`${process.env.VITE_BASE_URL}/cart`) + .reply(200, { cartItem: newCartItem }); + + await store.dispatch(addCartItem({ productId: 2, quantity: 1 })); + const state = store.getState().cartItems; + expect(state.cartItems).toContainEqual(newCartItem); + expect(state.loading).toBe(false); + expect(state.error).toBeNull(); + }); + + it('should handle updating a cart item quantity', async () => { + const mockCartItems = [{ id: 1, name: 'Product 1', quantity: 20 }]; + httpMock + .onGet(`${process.env.VITE_BASE_URL}/cart`) + .reply(200, { cartItems: mockCartItems }); + + await store.dispatch(fetchCartItems()); + const updatedCartItem = { id: 1, quantity: 3 }; + httpMock.onPatch(`${process.env.VITE_BASE_URL}/cart/1`).reply(200); + + await store.dispatch(updateCartItemQuantity({ itemId: 1, quantity: 3 })); + const state = store.getState().cartItems; + expect(state.cartItems.find((item) => item.id === 1)?.quantity).toBe( + updatedCartItem.quantity + ); + expect(state.loading).toBe(false); + expect(state.error).toBeNull(); + }); + + it('should handle removing a cart item', async () => { + const itemIdToRemove = 1; + httpMock.onDelete(`${process.env.VITE_BASE_URL}/cart/1`).reply(200); + + await store.dispatch(removeCartItem(itemIdToRemove)); + const state = store.getState().cartItems; + expect( + state.cartItems.find((item) => item.id === itemIdToRemove) + ).toBeUndefined(); + expect(state.loading).toBe(false); + expect(state.error).toBeNull(); + }); +}); diff --git a/src/app/store.ts b/src/app/store.ts index e52abd69..40a8883f 100644 --- a/src/app/store.ts +++ b/src/app/store.ts @@ -15,6 +15,7 @@ import { } from '@/features/Auth/password'; import buyerSlice from '@/app/Dashboard/buyerSlice'; import orderSlice from './Dashboard/orderSlice'; +import cartReducer from '@/features/Cart/cartSlice'; import ordersSliceReducer from '@/features/Orders/ordersSlice'; @@ -35,6 +36,7 @@ export const store = configureStore({ orders: ordersSliceReducer, product: addProductSlice, DeshboardProducts: dashboardProductsSlice, + cartItems: cartReducer, }, }); diff --git a/src/components/Cart/Cart.tsx b/src/components/Cart/Cart.tsx index 6ce38e0e..c3074f3e 100644 --- a/src/components/Cart/Cart.tsx +++ b/src/components/Cart/Cart.tsx @@ -1,16 +1,47 @@ +import { useEffect, useState } from 'react'; import CartItem from './CartItem'; import HSButton from '../form/HSButton'; +import ProductCard from '../home/ProductCard'; +import { RootState } from '@/app/store'; +import { Product } from '@/types/Product'; +import { + selectProducts, + fetchProducts, +} from '@/features/Products/ProductSlice'; +import { useAppDispatch, useAppSelector } from '@/app/hooks'; +import { selectCartItems, fetchCartItems } from '@/features/Cart/cartSlice'; export default function Cart() { + const products: Product[] = useAppSelector((state: RootState) => + selectProducts(state) + ); + const cartItems = useAppSelector((state: RootState) => + selectCartItems(state) + ); + const total = cartItems.reduce( + (acc, item) => acc + item.product.salesPrice * item.quantity, + 0 + ); + const [viewAll, setViewAll] = useState(false); + const dispatch = useAppDispatch(); + useEffect(() => { + dispatch(fetchProducts()); + dispatch(fetchCartItems()); + }, [dispatch]); return ( -
3<8NcDgj`^8M+EmP)G=d)ozb>D-z=YRsofOXi5jT-e99y3J4zh zrU7I@T@gW(Vr)!NK^F-x;jjp-9#5nV)*XESZ7QL*N-WNlRfQNuF3>4+6Cq*n2&T%H zGv#UBua@biv>K;!gMtV+#0k3bd}<-v8wY?rAo|dCsWBGDLd+iPWw7FM9Cm~$jo27_ zfG74!g%D?by1V=;Hd)m#T11|*#HGfi)HwL!nwG#~29ODx4fMxCJVM0uQ>6oolFjD3 zHL6I(LMpte^#Kv!Cb7dNOTwnXO*lfa>4!ih@h(6sccxIsC~Q?ZAQY!w0+t763PY(J z0XVwLbl^iGe5@0zP9%fC9q)?8VoilL80f(eSi~A50fhi&r=v2WcbXw6{mK0b58-82 z2*ew7R&KdjuH;e-BWunhxJaAHf@j8a%K+v^-7Um0y%<(R|D0K-+$I>XwG5z^WHe|~ zIC80N6mgxzp-5~O@My!7Fl)vy`dAePM;zxo1WO9@!gP%WVMs9~*uX$3#w$C5xW!6u z`==Hs0gES!2VQFSzB(x(%Boon!My<1Jr0c_FvqVV4N#XfLA!j1v(CaWWohABj`Lq8 z5{NL6potn?DStRk-(v^?zq1~vT)S*#@L+r25g6oBT%>kbgGd;6i)L_>OmfSrp)(Am z5|>K@V^Qh=?jigH&?hiQRTn;lX6q%a5eJyAV0Yz$?Fk}QQ&<}2ETCMcs1}~_C4$My zs6u5IZbLW3p;(`0a}_OMO8XnhZhDP2Hjnq~_;5jAr7b2ZDRLoUHFPDJa!TrKb^zc~ zA{R6yc|u@c3w732Gi(~B27aUl%blWvPb9c%n+eaO%~47GE+W#?%Rq0-JF`#4^s z9skV(l zd|@a~6=#-9Gg3p9Y>2P~E q} e#U_%(dGZ9X(wR`X^7pz1qT;afY>LU1yVk|D&oc+|A1{Ts70a|6VCVxAfIuM0X zU67HIc>$||g=l<-qfc|wYX}NJo#08P6jYPh3)>u4Mwr@#AqjX%KpJX93GP=QRBCX+ z8f~d2kh6dV9!k;4)=@))6e?1ol7W)bc}^!*5DwVYevpw1PQikQsnHKfM-90+HMHm{ zZH<{M)tC&aQ+x(g%pSOwg)T=`g@To+I=p2<+8x2F5MmfGIUQ qSD E3ix2^a1hK?4g-$I)5NT@8lkHg(3B$L5E=U8$ zw3*pAsVzrD6Pv{vIXGh+z0ShJvUMvslMP=B6H%%W9AT4HB=sI~SFzoA0wzfu?R+>z zLM{vi`-{Y2qszQxu9VXuD_sdjq9sItAT7&ju+3GjqC8|Yc;GPzd=qq (d+!@ZZFqA|f0%d!X z98L#_bHA+VDm4cN8dIJMNwAk81tFO6Ec^{n+ok@9Zk$Mpz|2w+Lbf^Mm0qaFI!wqt zlY&}c1)F|ZK>@a&fjg;uPjC`xfax~CTN;6sXOucvQU7jb;3k$@j~w+_uWb+#W(6Vw z+y=^a* bJ)jv#YRr?Bdc%OvI$3ZR*@efU zfuZ14*Lh^tyB)*~11LtZ1kU$Uy@d(mepm?j4^Z=>ga8X=UXp4cW{2v27jDO_5D_dk zvw}frR?J9*u3@uqt_Vb*hhD`qB^&)D!9oRywPyw5Z=e?SRo %a@7Y z rjjM`r z#H2Xgn Y!6q5M@gX2?HBwF8>J-GM*|WFQrjpheLR|AON}h&I`iva^)} zA58+u51g?f4XQGYcqT9ghO!P^HaHr}GVZd&(1|ik4Np=@cnPG+#m9H6Hoie8uoBS* zG?h#;jTBvk%>t;GF#+oW3(S=;O2K)Aa8!~}%>7%-hbxu7%A8mFotg`&8axoLY${Ct zIk*Jfij_2oa!__#w9EG}QnRHlD&jTebV*nrP{0CH)Y0M$N+f=C0~5}yK~5kpI|Yqj z)F`= -dzKrb6*Ld*P$WQnIVh~LM2aK?PjGvI+Nr}L zCsrr`1TYj9eGqg2U$}_I1znQlOKLi95HMOKnn`2X=}|?q@qQ6lgMbggWC;$aAbe$H zjZ!@pW<+4(BCetF6+Rr >vb1 a1oO(5*|!Lmh9_Tbnuv4zVH0aG zI|(3ej c3#iL3Zn;rOe`N%<1x&SF$ zS4n`!!l*{NrrA0q>SVxHBA2s{SijsZD0C1 otqp-CMBEn;3j@pvHmaI<8zcr+pm6O9Ma%$tsAY$sB*y5NWRQur zz(Cj0M<1vnYTO7D0*1wa1>q|!x3p6e0zNAG!6FJDC}3q657dUR_rorQm5cbH(SQ;; zDAchC)$-*6*ApYnR7gS;)8HW9k&l=W%Ij$OmA;X(tYjg+y!ld0%V>g1{0Ve|cK|s` z8GeFPkqa4KMqop3sEXY3Ai@B!Ho!Je3P_|D0(TA6=JyIgNPIscHxM%}^#3zk;f26z zNWy{5;>$m?SDe7A;}xvZZ}w8($pW}uZ2@XMrU!6z BB}*E?rZz^x zWk_wGNZ>GWT>%Mma%MvstQPdxXml`cE~l%DAztBk9weM@4r*Y7ZVDz7O$iV<(m)z+ zrEaiJ=zoS9?G)4&O--=x!dj2uVwsMR1p{Nr2FnA8g~CU;-L0x~U}9iFcmx& ^R86xb7S z3DBTY9!ZdPgk5xR1AG bcSGXgFc+{l1aFb!U#OoO%LO6U{;bB)eFNQkD_ zODV!yseWYL@F;O(5HZZCO`|Cv8ZN?6Tm-HaYH|Zv1F1(Kj4qTaGlF2WN@!9Gp*hNl zu ?Z;Ea}p110S%)Dm;Rc z$wJVnb|k(CM^|K$iOH?9mYCk JTL~&_|QzEWQyje;u#HP_F znBt;Np@0YvL-O6N`#qG1WAsIF5$U9Q5VcP1R??yS(m*;#G~5h{0S@a{42)6F6XpgK z7d-rOwvU#@G$g8^_IWc#L<#WVxA$qt>Eo&-@NmE!a{yQHAP-$EgAWmO&PPP7AQi}y zv;e$h3wn$egvBDKRFmI+AdOioC@R2WI3ox~$pdPJsR7yu0zHDJ)2MM+5@71Ez64Pv z_z3eQKG&;aD*xU%$(|*4B<%?U-U2qf`rLTSwvE#^jx9cTas>T2R^4*4#BGV4J)xhl z#5!%xm^Gqf3e*m{+`#f}2xVI(g>=@DOm+ZkDn#w2W)tEz$Y;7H&ac|De8K=eJhn>% z%u1bCE+kiO0L~dJdsw8B5=dmIMrbBs6A`I94s*uYYS6AfDC!u)@?Bz~l!SZJq==A3 z3OWrRj>S}T%8SUQXR?5sI|wPJ 3drk7&Y7?HlE4tJlQ3on#DaRv z3b>7$^c00Yo|l0~)ekWlM)bn(%$m~h3^jX_Ywh=oP!{gX43}q#)!`kWvvgX6*a;B0 zCQ`GFh E>$sx|MLOBA>Q`oy2Lnj zE`J$giDgDf-Ik*z1$$ B^(CLkkKC7yV?FU7QHyv=L3Dr07a$xQYqcb-|^AK;WbVtIAcR z1S||Z2;eN~i|bSrBY{X2@&DB9{k;~&i%|f$X_PbLwj3?)EB tsB WZcO3Hy6VU+nCAI&2vmeT_4L z4=6V&z#~5eO`yU*<4p)wr3CHTc_7l?W@VxxfJjYO06Qf+*rv#}V_XBd5OS3UAPX5d z 0p1N6Z-Sh%O92b9sSYM6G$3Q8fV0Dpo4l-CnhT=EK&lmP zFl-xC9N7Enm`GZ}LJd@5{aO4Ek&qjUj$FElN>^%D;EyR3@x_inI@eyfpq0Qg(3KRd zQc)r?iAE*x9Gjp35w;GUH7|8jmXNqKPy=fgOa 7a6y{D4+KPS!0u2k2T8SwB=%;EjZGk$&{Q`XeGV@f-vLZnm&4FsfBMO~vgo)6H z+H@SyOd8=*RA$o&xa?s(wX)FJ=%`Q5L@%3#-vKop(Sc2bWuh&GQAe1G>K+Bcm#Tux z4HZDN!8O7=1cif)B6^Hnbn3O)>t9>=()z`v=bt(C)VgswlMY_^ x=Rh_zc)lOvL{e1@O>e7wokp5@|$tgsc4S zPD5}DxThH=9;y%!D^t6D3H(_lsUg9}f$eUuN+=`KFl8eRI*Z}7omeXn3TCC<6i0sK z+3 1m6wYQ!JNezU40KQHb01(bq6%|Iv4B>7hniS&+lqjfW z7q*C(zUP-20jZYElpxUUI(zQ%mnJPJJ^w=V!l(D|OiaGF;PdBhoG~J3@q#a53<=E@ zN@r0;C{+CTy5S|;LKlBty|c4_!b8({F4Ipyxw;1LobGbVv@Q%lbxa@fPBBHaq0#Lc z7^H5dO@*0YV-MSiEb|)7l}pWq+Pr#;IVyrz=^cjUN%G4u0@=vaz$ivaVhBpafROaS zCGdq`q<<(^fMk>E0W`0k$qFdqRPxI)2 Ps0cAO5l=C?G_pt0316dzmp=6Kv2UF2lK;o@F;}}PxRf^ zXm3QX^hiX9UxB8;`8^0BleX0b53-hkI49VbC6IlX9FO%O-X$bJbKrN>!O(TUb7v4- z_SBT6@)SIQiDE1oThHq>{-8V50*A(GRGhRMJ-o&&l{I&@6Ko|YYJ;)#hF&Xa=`#Bc zo;o^VOwM`xylIOrKKaO#KmE%`_;`B9`d43i=*HR+(@vJlO5>jKyJC8W+mcsNlzh*k z4)x6pZFH1On`bW`nb>!1`rP;S6rZp>ULL3ofcGA7p9oSjS?(&1>AH(ksv_M6Pt& FGFd7v!1p1T$emm}hIgwS=+T^6s{J9h&0gS< zQ8d7wgV-~C7v2TNp?qziTxYWga?|HY6wlNGOG~_HpoZ#WMWU)0zD;!=(S-!?j1j;u z;=7u?p9^p=<_EJ* DR6U5D8BWSrFak< zZM0UJxPx)FQ;8=SKZr}Pq+2!gfL5TMd8tAOBVO9ch*)!1&}!?oI^CfA!19*NV)=N^ zC%1g^<8M6j^h;wlg*VTe_Ug0~y1F~3!fN)XcR@dei;fj8O6)#+;_S(az_tsg6Wzgg zijTQx?kR@QRuCjEv#uWBKYi|2+_$Hs=$ITo-Ct7cPaX!4I6gp{7eMgXFdL)!U9oLtIqEU3C%*Ra1$N6yNG>TZ$V!a)2Y z*_}1KA(5K{en61S#j+q3g=iRILdK3pkEod>f+z~9+_z_uDl~i0?RRN_AuDJmYnk5! z`hp3BU? eK$Cn24rIz@LU;%NTrGt zsuQ gx8ET2d|)F^kjRdYEdEre^|gqEf(O;{>p7)iq)y%7N`m&jV;Jk2ko zL3~(PO>$Rr-4RPtYiC06q~Qsn28efQDYXre aFmlkbMq-8EIy#nZ>(tiy^v zxlTBJtT-0yaEH56P4kQUr@M*{?>^=yMaiD(R2jVaSPb>Tk#;&mv5N{pKn}7OQc#pF zCR{amly<{%u0v{siDde+={zggia20;Kxqvm7?UXe2b*7Mppi!73k#UY1Z==i3mfSn zj$RHxm;%LcG_hb1JIKc&>UOQHcR2w9oLPy}!2w`4nwzu%zN$Zy1*^YX)*#XfKusr= z0`wuZq5xt(fjD>6sUg!wT^J$-q78AKQ4Fh_QVd4I@B&9WDwTE`tf-_ocB9f0iTr*< z`u&)t77(#%qyQy@`83e83lCzeXyC$@7tw9h31PET&)0)&VUDHHZ-nS(YE~| }J zE2zJv7QPl#94gyoL79NcL(7m JqUlfgqzhsP7&+yZH36d1B{q$n1@C zpN4OIqI2uE(EB5npIi=kjm0%PWnZ$fq;|&a@yA@k*2wNqCds+lEs1Uq4ccI)Tq-Q< zUJa80 G{Iz%?2m?k$Yod(g03PnGq0-8A0 zaQptqfQ|*KjY4@q)yVc&c`3FT&!Q?%jZuGSloSCy7{vn(h;hVX@pfR_VX+Djw~zzP zyoNw9imf5SS%1D@a?04V)g|CTh&?Ir*`SjAq|M#{X@dEh{35{|Tz07rA^Eg7D}>@A zb^#fUOIIg26xkp~)kCDGVEi#r9pa^)@O4V8Qy&;*Zxk~zl;c+`rt*T_JBQ8~J7;9h zy^lQk+@HTJU44G@x^b|+W{(IiTHIIUN~uL6VkQdXoyk@^Pe^eK%l3rM^zL1;w05Qc zQ1P*nhh~=-9V@E;pnto#J9yd^wrtxt_g%S&@wm%-Alipc+xB7a13pK2ue(!^=K^n* zWRE355in460x8KG1(hxaKEAgOmUwbtp7iLV_6kak?0vBiLJ$VJaj 5vp5>=bY>}g8<9 nH;CNd*vkZ6@SVZwEqLjNK(1E%xpr0@>yO&0_p39cG08&!~hU#mNA{D_hMm)p; z37M @wo6h9YHF>BQDEMMVL;LA5qn6Hy$-Un-YC)tZ~ong(!o zmDj%C=ei_DP^e%Q2+RQlk_C=E;% 8i{ljal@#q?8kOw_IJBEdj~+FRZkccqF(c%`@qcUue2>3TNj_+1yrwR=0p z_s`oIh!%yCUG3Z6x$s&~XY=Z x2ygzvcyrMw(2e;=tn-G+KU# zVDy`Y{R-Cxbz~J09SR;eqvdNrxnZK=Xy|1KQ_zb> 6 zjW4XGBJk{}^i%7MII4}RFV*JOV36p506aoVqpg<}Vp-C1>S)PxpUqn`al#9aee$Dk zJa+8-O;4{sKD(+V?IImvKS*b$!;U?SLb6S2o_5g_ESNBE#I)@vi@OTTcO@?*->Hb5 zd$II`aejYtPDLnD)K(an)zDg0wXAs%MEkn|DVDcPYAX+N&DPrKpSRt+ g3_k7Prt2B3nC)@baSv7y8bew0iLW^s)^v{~q-x3HAm>)f!+*hY&8=)j9L@up17 zRVWb%Sjd7#jKWC~gD+^HO3Keho=nA5fOta$6I#jN;?`7S2!WKb?}tWJBoG2@HML#Z zUEgh>+hhqBTHpl0y*CA*jS-8DIQP3n9k o|h!DI5TRmA+zaW3!4w7?QsK^0pYivD!`Xn7n1;kit+h+M_^K<7`hTEEs zzJ2$C2^;$N*0F-1#a-=$?nX!=G9z{)Gc-yRUtSnGwr|@U{#a3RbjS9EcfGu8jW080 z_K0$9z_a%y*1Yyfw0p(4rDK&dPjA{a>GN4*Ke+3IvG1-r#h1T%c*Cx3U58tx2cYXm z?_8eg xng^>-0LZFH!Zkci&cLGOYpqxrfnBX)dngqXLPEg|} z#Hjo(gvn5E?xUqFRZ3BP3e*Aw0VyC8SS&JVG6TFI0j4Sb`mGT>2t_fZC?uF#^{$jo zcF_wq7MWMDIFL?QNy8PCMA#FQ0>ZSC5R!(8V#9zI^d<1}xGFFRit4n7i0%+oQ6l!I z=2~q#?^?WgPQAVM>AAhfOWv3yZ=P2!!%_gKHAI9?R6F}RWN)WQo~d=k3)k)(ekSnT z$B2C|e|JT4J9a%>*m88!v^i@T@0rHaW8X}knA5SetG=h@bpJfp=$##>e7i?f%+fQK zMADv!hdK^#*w*cK#ZT`qo%H1K?*xjr&B KK#ql(%zow zuR0ENZ6D{4pDaF6;1^$x`X4Ws6wLQ(^NZCs==^qxP>agq(yUB`)&!sln(+b7@ VRti3^sftVNfWMl7k2QVkk{VVXG^p1ZUq7I$kq2^|O^C9u?CN zXp8mXstDK12?|4SE(=?Mj%QB !j=d + z+fgzuXH3qtPd|KU#Eda3S5|C3Jnzfn&X3zRFH*RfyqZ_;!DcGNU1~z37s;{DONV)- zEeXA#_;_;LQ?;|sZk@Jq?#7Cg+q& D0ob8o-xKs;a%A zo1%+82DHYCU1?L@f&;8kh9$-b-8@?twKvh;1pb?e+&;^gvnEoN=67khie{r!h?*ig zh|mfw1P7WW_!LwZAVZc^9F=a(1e?a+EBb6*xr0~EF9>axk^34}dhh!CfBKg%H-0jy z`e?}$WgZ$4MfSsE6ZMyxRyZ44_Acs$myIo&oxJO*H3_fDe{B2M;w_R;y7tp~3ny *&U_HK$tlY<3=6I{wLZQ%ZL&Q}b%o zcBmGTTCyrpls%j1aF3cje7czF3)rN#qGKhs%Q|(pYENx%Y^Pe8E{HZ3%!G#YDFb+c zD3H0v4!*Q;l^#UhVy7K`C(O7s3bqQJNvT1++|O7H3>bSnIhN ?XOwCewtjMKr_RzknaYCPGDR&| z6m6U8{J8OzSE@EQ?mZqDIlIz2Y#1M`7Db{5%u=(j(tBuAFsH(Dj7V{E^SHIGzsR=D z3N>R#=**&;*1iXC4IDFv)}CAV)^iW ! zdD`O7jViPrbD%+Aio|6w4Tm5o3P9941zWHpvdYlkVIUB?bR>SDf<6#{)$L7?35?Ye zV)1IfsKX7bS|G*ns<15OQ{qEFd%;sY=i*gFnv?-8K#T~EFkmF0FbH$2PeB|T4j?T~ z_lt~&2Tvjt4>1i2SxPyS>Vky9y;MipQ!GO`t{18x3p&@*m*QHOA4&$2j!wElM%F;W zAWFL9>vBU;fpLoB2}9qMAur3rf`a@BY6RKg{M<5Ps~Eg;=H_P>*KS-gao+09Q>&7n zEy~ _{ONK@V9_l=uKK<;CWk>EheYAA3_w(ZS?f36VZhbMa@%*6K zlSfrg`n;p)`~$TTep;a8y)j!I2MRl27mV%YN@~ka6{N$(&61l9rjFFks94rn6lx}^ z92ZTO7e+nNYlz{}dO2G9nT3D_EC|AXLD?dr%Qeu=r6fO$1{BK@zAgfZOdCMw%tBxS zbX-ET#|UQy&ZxIHpbGG7GoUfA5&Hm>*#x@X6F=7?#V8485Mu92a!9^vbU2HM5(-}e zhGPbMp3P=73{wnQKrIA_d^fbdJES94hm;%TW*;a3*nz2rhV6||1`q=nb%_E3NT|BQ zcH}F{u?wpad&T^@<>{&l>@1-V#7jDOn+`q*VP2v+0&d7;p*>)<3^b?#YA_N6>FKWF zSiMmrNO+ylI23YpT}aRS$fBvh{4W;GZ+xolnKR~Rj}MEgzAe>H4LRLu%T)?dDADa_ zt;4v{Re8%!2)y%&m#l*-S`WHwq?x0 P;(cUN)j4{y|3Nc`5ZB~ASE=B=Bi{bAI^ z3AZ{PtQwh~JZZ*br{*a3^1UC7+2=etyk?hNovc5-;RCnB*=;-h*~YUomY--}Rw;J$0tHXSanvR+g$-_KrV6J*!y#z}l`oVslBp;_T~0sU@tq zeiv5>v%qNZw~$iP%;gZ~Jbv; zyW=8FsjDh-(pX=z2c}?%W@mJ$X}V+Anaz{SQt 6_asbVzvS(#Put2=Gq)((v~tnN zmCk6x-sg@a^N+PKGozV+D}h2E#jAJmD2qFy#SWD3t9lu-Em-mR4Cil_7M#it?Mj|3 z%~>*H(%!O{7w_2c+wbO->|cJUc#CUq;ftkjj(PmiH-eviyyCTuUwyW*cK6QZC3B{I z;FX<@clCC)v%#B2&VBF67oXqWJN@9OyE5V3!Ow-$+4m7EUMIXYZP)!P4jh?MG-Qu? zO8K~G!I|aE;@036n#0{~2^Nk`cl+J-2yH}ku9RL@L$H+*QyAd*W{P-`a0XQ k5d5R^o?@0VHWR_FOc(GLtMB$Gu-A<6KHdy5p<~Y& z;z7YqM|Gt`b%0-y$N|+CVgm c5SH?T~jl|(z0vItY76?7Zo2HJu=`L{*#L3bKfjLdDO)n)f1kJ zoP6fu&EvM$9M6=T{NaqJOGo}@!||5$>s}mw@tJ2%d^qQWvdwdbxBm8NU)8c+`^9%= z ez6qWc`zywv0c&~6)Ce-%q9x=OgtGajdg!M0OeSUk{<0Wg6^eK6C zZVi&TV}{ 4G&}&fL{f-8ph1M*Mg)=Y0Z0v_oQ_I$ zE3OdTa3P4Jiaphiof&Gb55F#@5LQPA2_WP^tpsbNlT9=vQiqXehxDKol58vlA_bu^ za(%A{zq}JlBksQoH=&fbT(>H4GHGL|bcAT3SxOGne|h1UjL}c&h31NRy%i*B=~m)M z>^dyTw}@2lcjj`Nn>RZ?n?G#voMg_Di6uvFIrH%|8KHir%er7&MTIXF;$$WG&elZh zAzxxKb{EvFTvN4ial6?51pBKkKN;CEdYF80cg=3==GbQ!o;}laviQI5S+wPig^&Gg z&=dQ-4-VS?$@O18dBeSvYR)Vl78(7-_Nv9f&wlkr;M8lM4*TG)cOUYAj#ATV@7;U8 zb4lpf*$wmh)*L+hS!soJ^^Oh8H`OFh7G3!C^VqTz0rT_bPS@j=FP6?2Wq$tEf(bhw z-G27^E$6%TX4;3&7Czj2;moq5Z|)vieXOV@-CgX8zuDSpvmf5g*Xsj7_?M$ig*PV_ zTA4@~+j&s#kwiT*40&;2oQalxFdlmX*0Ex2JAztJ;A4Vo@k0?rk!>?I{LmXEF;sm* zS$Hf8ut^Uz90x40{T w6!@k z%lchH$wQf6uDGMTWbCk0!w=lQW9Ec$t?g@F?#QXW(y0ym#*|+8c*mAW$NOLVb%mO# z-1us8--UBOyK(5kXJ?JuzUWnNaBFFR-?V<*3r|h@<&>p4zilfWyB)t(RPxaD)G_hI z&{@Hj-es~creP!dK(6u9@~`<2b>dmj(AbV2D(fc+L)aiwG%IMd3M4dFTtaQbJgl z;^lG-n%B6v7(_*$q)`p;Y!pbD4&MVDi_8=-q;;i3*nE`0FWO+=Uc0P=THvN4G@V91 z0O%k{$--mQNgVb))Qtk+0ZKJwKCRK9lz^WTsswhBp9fOu&p1%!#+!}I1KABHF|{3K zA|d33@CXd?H%cakJs6-rG)c6&2os^V(1x8P#wQLMaZ=Gi1qfA@*hOz;HG83grHUX; zYV7bfN4%Zacs!HsQDI1unBFUzOSU|7#<}3LSu3ZmtT-~a; NfJ3cQN*15FfaNFW1s%|VT+ES2KGv0H2O>?d<&{{lvU+$*rA)ns+{LT;7 z|L*j-bwhSqYPNm)#^h;hK5SZ>deC(ua^m4hd(3a=j`vmtx_1^W+7>)NXVQoL=O!=k z9hkTGLfebuIw$`2J7d!Oj!)nF>BaRkFRnlE>&HHMYvPnQzdZfh$KJYU+>;w07&JS1 ztYTK*@Pmk$LWqnj>p!*qffqK$wLEgB_r)2(gHvXsx~MqWn&prAs^iYqE1LE)l#EZP z6UcrC+%7%sP`!td{}- ;e(!KF~UETAjVOgQj8+zy(jkdT-I5II1W<8!Tm zwFDBP^hBLr6r^N{lJNNb m3Q6pAFd`J(W7bpyX!@ ! *sOo{@Awo=Frs8(Intg9sK0O-}h@kQ^{iTtqkF)+TlFFMc%n zc&@AY#=F1DKD7EKCvjxM?ogh$tDX$?s %S~{rub*GlYgCm6MuAk_QRd`KKW?T;KBtp_a1y*+3h%VtaM4<(u(n8R&Kif z#U~#tn$G2@ezGdR)j|@8+SpVrC?*8Jd|GMo5i+}o)$@f1xZ_9@1uL_Quy%(>) zeskvR$=Ri;rV?}ajCI2+N+j!i1hpP7vFP>`j0g^H;=eWQzM_UcgAJ2Rv@zXPNYfmG zOQf1x!)W>oK0fTyVifGFQ2io&NCH_x>{*Ztl`W(#g1a#^7-9<-9Dv3$et!g;z$J(Z zm?jJah0UNL%mKd;=sbubeW4kB*!Kc^$CgIjS*6D^5ZER}r@<|d$6<^xCJg&A!PY~u z#5zGm ykpj% zue$ic+6mh}y7=6M*XMM`C!HuP|6tsMBWB-ft=TrC8l}XUPgb2<_oDUjdsqGH-0Y4m zu~)6~fy}(uwhmoi@bX=!?tkRBo8EY|cEZo+O#Z{~e|^ur!=K)UfcS(RlP3%sw1nMvV0hItEAH*4h)1t!oq+|lrptl0?FSxvfUWB-T>@f1pbN~b(%S3d6?Zoe4 zRU+^iZHLIAHVb+&oGL{IhK48-RI~I3voLRHQ|llWt~Txeqw7t;nmX6D;gvLThoHSe z46)L>{}2g=80e-kBB=dB3=|UZgfK`LJcxjZh^>f SONB8%37Y|&2ut2xfx9o5E&Z|x3 zUxkJQcSremYrN#!{fp`<-_smje(C &Y)OUVIZddh_LFQ(Mfbbtk9JjZLgQTeTn7p_O4pa^D?oWk*Emos=3|C8{5- z9r;#r75=-8uB}Amsv7+_P$N(BI;He}imb7FBZL8((NT!4f@Atg5E_e+*``3OLb{ z7&zn;O`2#nFi;DGcM$90DzQsGLR|4Sf~VfwiGp+fC#(4jXm *vZSUT#OCn8ovPJ^EZr{$14?7>d_rT*`eN#=*7yf65KiGR`bKQi`lC&ST ztg1RUw07UGT;=A3tghOEl&XV0U8AdGLNa~x8)BdC4~t3{z&v@dHD)Y*{rj`~<|pN) zWe(%V&=2A51;$<6eI2_rc&vbJ$dEyl~Ka`^qh!DGr2e*f~(U z?lt=`y#&`-VXq5xl{;*eBIMBU)ub{M*W|z17?L ^}s}23>+*8hXvoH^9r;RQY%dg6Cujo2q7(KJ@H8GR(V<-lmJ;3 zmo8yVkatOwo)EJPIJsLgwL>~-BVZZ0#f=>SG$dzYMVUlPz!SibbVN#k!ob5*EgeBQ zI-J_DIl{BWEgRgquNf^#2~a1PfC)|vfFQ?4T54mK(6lOtiN_*Pp{bAqM#sx|$R|69 z{%U|GOPqmZ<5)RXa?doQT-*k%i1|!r9gG?)*bBLM9a^i%CU9{53nZB@>h=mVzt`Wm zvZ30n7S;uLdu9tS#wF>DY7rw#CA=+Xolf+MKJGgwU)EOQWlm)0a-2%44|x)6V#fN0 zQ$H9x-|5p_rfiG({?qjzhDG@IU0R=3b!ggT_n4 *(Ahw=38ye?b&mgcZyQI 5Nb%T{;lS$;x?=C&Damecr8vja#_puh zVGEe3b_WOPwhD3~{;v(*4jUgodDM!7=~;9GBLKNk23V=D4#Y2wE-n)=1q}3C5Ksn6 zfn_H~FsOvibSSj6%zpH+Kz<`oLYM}Z961}HAmvp795yX%fCy#y)pSx0A@)!R;Y%T_ ziGMbT8Ya2{o6GRb6WBoFw!zH+V(f71lh8iUHHax9Er7WFln9@PAPbr%5LK4sM<*If z;X>ylZ=Jlw0F3l2gov{-yrsf^4|vg_bg>~;;MOtVF+IX^Pl 7iX`@!f`S?9};A=yOq&Y_b&6?c@+EtbN`HTv@hnx$vuT2V#FWLQ$Dbk_C5rig*F z#s@y~U7FE%LK<35#Eg3$Fn!WitZPi`356wm%JJyy(64RFPwh&QoqybA3VX0RDRxR0 zGIwT;XI=9C$P;foE5H1gr>9a+_060 u+J<{+{goAV~W=V#F zvoPF}R5&SHRW!JK`=s~5USBp0oP<)}mIS629Xy h`J>2ymsX^XpZaiO zW9PuUn8dFiN1r;hFZibGo@=j_*Erj-$=msIIJF}_`AS{S53Uz=58jt|+-iKiZ)RiR zk;Og1w;IiZnMDH=4;HtUZnUp}C0+HOH&Oy?o7%LnSH)}9-`=w&ZRpt?PNQ)co>|??uJs?5extG|+K*30 z4g6TKMAG-b#r@M?S6iNB#{MQd5qu$D9??8iziRElX6bt}yK5XD;w2jA)F<|Bd8_LD zOjL6a *rm5>pwmVeCBf8 zx*C6~_`8+8FVi-jVtlew`1Ih@;-ZtjOBa8>cJ=FjuaC}}Q1uL*k>0#y?Q?ZHocHeq z sJ3o(>3?TfdnhOxn@Yyq26kn#C)=0Zk)gyg8*y2!hCi;Ynq&`p!#Pe^ zUO{wV1`S;Vp+1(jP)dVGToRTSl|?w75Dev^fXV 7ccHgYQhMAdiL z{1i5Wnh5e}X0;^ru&Xzw_@DGIsuf71`b0zNH*|Ls97EP~9xVk|GSobeqv^7vX9K^@ z`8K*X{T=S(FZbo7UgIA->K&Al_GI64*6f!FvsLLa*VdeEI_4{Dd^Y;$^27O>u=O8? zxL$-!uK6f*Ue>aywT;&jC+rIkYMMPmU&dRT4!O=x*DpHT;dgrUi0s(v`mhUge;F7( zwP(A&)c;gPQM+rpVqtLAt*I}V4J%_x$NamOwj~CS+^+bj`)t@S5*ULDVmd>Lp9H!p z ??F@lIol=n@IU2ba*!|GkM>4heqI z0U6E~F;=n?&5=MG#4IKo`MKk%yEq@>0J?HNMMJ8X7vNLY6$PD>96{sZXgFuw4j4i< zI?7iHDq*xLwVo85x KG%V z;N;Fpg6M+1Ohc*ysUtyG4a5l8JhYD@(M2tfLn<-}nk0V5A=W7F74()@at9Tp5R&bo zfQJ#H3$_|Pj!wVLL{Nfc%^<=Etk4M+z1sd!4@e|sD?R~olSJN`zJUwh$n+8PX1)f z@AHc9n+o>zermg%_S)*V_P=lq7vxWL*S20=J`lV9fWB8Fs$W#_tX{w0f55-iXSPf~ z9z3}_>BaaGpQYJNH^PEz3lH1d_T4)8tk!gL)#Ulm_2%hYL%s4-drp`ZA71^|(~xAr zLWf~|xT@j7mSyrUcRbChd4Aab^wgeH`%Fy-0%JP6lM (RHU+-q!j!CD5b${qG%aJzA13+fh_^W zK*}?4MbWhatT7WeG~)E7q4k%6GKkO-%Ro1vT{K?A+u#Qg*Wu0ssULVZarPlbZ7d@q zjeHLAzKV#G53&v4PHVstB3@)>Sn(>8yoJ BAgVw|pBvs!-t`{zT`j>*-^WO@BNFGpIpKWo_i z_g?vkCbO`%xH9dB2f@ylHE$nVHTT6gEB&8`Z;~DU#s1~it+Lte`eo6*Lx+CcYd*Vd z>|n^L^`9)-CaPUE+Sa=({rQ_Af2r3WF4=$SeqroD{i)rf>BVc#E6+`>UiD(#X7g<5 zOZllCXT#Fhr;Sd26!xzhZ*-p?7}!}={OtO*wV|J{*;{q+estTq6;FqTbsNvhB=0n? z%sIMX+3W{>7lM!G*tFv}hr3%+g2S?0cITi}ud9zj#ym#5(lKoSO>AglL$ZWhZM#*? zM1>XrL9QwECa{auOC^9xL(wnsnM#|%!AG|s31x-z7t8LJfaF+?7?&Hy4d6zn_XAyE z1scDfi9A^;NDCSVr69j~2V#~Ge*&igIuv?(QZ%>QrQGRmb8IEX5rZ^_g`R9RP;3Py zthPFO45&`PIVe8zpvfw`^ FfC1Zk%rj$Rh*M)#4XvFG_DndWlJ=3@JvvRStbsO!B(`ED98l?jnT3_ zl QK>;A9SR4<=7j&HHqGd3VNM1W>~3rzL>o} z>JyY%w?Qd56HP0K zzi&AxKU9+=8Tw^m)7#O13w@b&=!MDu^Z4BpQzM}V_U-Kc@O;vcYW)1*75NwQV(v_M zT(~o|XWjZOH)QFSmt%gSu35iEpONM_n-{G5{nGHx;3p$~-_(YN$R4zPc%yh{W8}YY z`1ss+w`$+N`XE|f^YpN(!`XH4$wS*it@&j1_1RM^!(=gMHm;bhZSGr 46) `#%9yvhWsxg+xTVLW$oMmcgK*IFNa8BI1O0+`vz kErvwUo0h9a7U?2HD=mAGORM=kGggps*CBB4~#!>a;d@uWS#mLHmbxUt#v6%Bz zfdS?k-tj~RyD{;=LPqbR-d&*^_49RR!$QfEJno$C==~X*=o8VTtxC?LYOh;)341ju zzTU?dg!!_E7pDY&c}{dK^urx9-C^0gghMmQ`!iDxPA1Hpym;#4bw{g)3nzI)*Q^so zx3?Xhw|!6Tq8HQa&v(Y$t1a$blB2RZuIX#HjLps*n)v?Lx07PGyfc6G{u^~)?O&NQ z@0*bAMSX!UUaUR*(J!IDHl<$3ey2enGIwiaclU<_-+vX^HY7JbT!DUMwf3o_3m-&R z9qbrAJlH(__S)6+G)L {+Vt4xhh0rGT_JPto)k$LaoN4M^L^zs zNvYk7EDfR;B1&L|IUdo1Yy402kV}aTt0?&6o*+owp#byPj95>K;WQ%cl?HJKRB`*= zj(`Ig@P^+nI;ik)v`*(OgwQbvC~R0Hx>x}UW2KZktk7DFeDv{%asYEeU8xBo5BgO( znNo4JT+HUVRVL&LzY3Y-obEov7#9>FGSf2bB4!<^O+oy`Zu^UP88dnan7F0{HQx?R z%1v5Ypp;;oh`sO(g*%&qN#_}88HAd!p>-G65Umiv tL zqjh3(ETS0jQ _HG(9A^j58w(_r;H6RFM9brhZqZ&J-2&abk_&c6r>vJ{LD zH8Ns19-b{zjU>Lc|4K;D{Pf`3v^|dprt6O#X 5Kjpn>f|{Q}F(5S;tZSqmHAg z!y#X$&wCyg=D%-KTg (=BNL3uc)JD!G+hu|GCQy2{o{ z)B?Z+FJ)G?ODM5H#1hjll`Fb(4QTO?A2 1ZNg&Mqse+)Pu>HR!{KaUKY$D-vk zNZeF}9atVu*mrbF+C?#01_&R_0z;>N11venO`+I81xSSba4q>l>o+A4nMS4!;T9`N z+}6ZhM9XMJmJZY *B-~Fu}h(dLun@hj>5P8V>@mU;UloY9uT8n6~_^Pzd_Yj zFefPc;Q7f_Vejwzxi{^muWfU52g6bA9l;Kl`sCJ3`$_2cM~?-aS9N(ODD_Iu3{Fme z?ipIF#v>#1QL4x77EXPFrA$$NazRLf>xKEgYv1+s^*d&_cHStT5DuCcUj$t5b4~1U zX(m@y^<51avFyJalyha07n^^jP`)UtcS+jbHj^u&FQd8m_o@|l@35NcW8>FuI3Cpd z^3UtP3jO`hnb)kYJ= vYroeo?P{fJ{G_H$HhBbXV-4ca_y;Fa7r_}e`V%q*e5Zs zAG|fSC*JhFtLZO~7cE&6`i<^3WqX~nG95vf|!Iz9Bm<%mODHARfqzgN+96L1OVNhO1OQn z#NZwZEJMeLL>}LrM9gMOkx2}ziwHePIlN9m8Rw#!P o?h$`*E*TtWWAp9||(6%7~Cy%QuV z#e`Dd60Vf`m|HE`(q5)H?WO$k=e`M+OVMm?T#%-z=BAI*tk=l8Lmhi7+R9Gf@ZO}9 z&WGW3Lw|CEAphV45A|eP-rE7u6%#|TQ}KRJuZ8(<+8B3hsP2QF8#5CXXV?qYXSJF3 z&)u@);P9Uk8y;|nirO>NbN()O2`5y2`ia{$f#S) BC`#8?TCt(4e$vNhQU;WU3uLOuGOV9DCVPmhWb6C8xEr3 Hg=F)GI1EVRjE39z*dG{k%*5V&&g?_c_#;i z!yi }5OTw_@cu!^g-2_Bp4TAQcK)aP+g)Yx zABVmS{rSQI{!c+;_Xlp=F0=2?FKY^&JwE30_`+EoyJqRUjR`YFbJKrZzx87FqHO=L zD^sJ&bjv2C&%OtZr;2|JU0>Z~-n3>>=-3k!HU;Jnd?k~wYrJSOH;kp7nfqe)lfz-z z!TIu2??2!D_-SYU(=SsX>%L+fmGHGvPrlT435Ifql4GSCFvN)te)#9cH2m|S`vJ%L z>N#0tEGL$XPy%ZH!6W^+_6j_vXaZU$WEkmUj%cWZLGf6aK8jTq2`Je9DP;mWy;On} zWd%dmLR?P1l+%C|Lr-uVM5oh8H<*cOt}b`*Ji%>$2(%6b0W0VM96<{g3y|iAOb#~J z0Qp8l9Gy76plxeOZG+vR)e0-E#LvWZzXNoMCUP8)3_&>U9|;~z^qB=5S|w1-abou- zAnFmE32;U+Ijt1Mi6ERyGLDk%7IFld^Vx}U+o7&wa5Z|Te~>Weg=PCUq5*krpfcxC zDG%Z^sI9Vu*`p6EYv}E2@<=#Q{YjEiZw+tsv3k6*U^NSWx_R@_rEGJZwYvVp{la@< z3+ ($X;l$i6Qf1BsF#A~U79dECs-yC?Z+{T$u-oN}o%tZF> zmJ>&1ZLYApGkacN*XrM9N(l~G=QA$b;T_#P+T@tpxi)0S=A-lN!4vzQBosbatD7p= z`p*5(ho@dIo`{*z1?LWXC7l^PvIf5MdkRm+=^Je0el;gZX>5n9u%8JY$8Xtv331V^ z
1j8C@zi10e>s5lN$9d=44*!3W&X3=0g^4-P|6oM0$IX=hPL111UUP(y$u7(mH{ zabTA#Ec7c7a1^SRAk!3NzN`rlG|;U$lF^m#B*jn+JA;C{u14LouNZF!nxzQiw)0b% zz}TxqcPrKzYe(Vhq7*`ahsYhHqu2p!On^o-d>B-i*&H4oVYFDdWi32BN1GCoVcmkZ zL8y#GSfAv$)0qmUg+fda)xdTE-V8oMTUI41KMBVukeuM4P) uO2~3pgG@dyXnerxyit>}1@8q6q z3FqYHqX|yK(L`2bz?_7FAFj*}nT{@hTq&CnJ;=1oDaf?;9(X%MQ}~T`@~wZ<$elat z_H0`ivwc#z>zYirhFiO6Q$+pBrD-?fHpJ#-G#&K2mUV7+M*78DUwMpKzAbWX-t=0k zYpQFWK6-S0g?@nDSD6*_t7pRb8y%6|&Q96Zl+Ayc?Ox;~+nhHRurXmUHF(caOW*5j zk2ZA%pEw$rWw|JCoqim=^PP# TUAt 8Ny9WUW&@W;) zLrcevgKxzhv sln427M0{Md2xdSapn$GU&RLi71&XV)LH zy`MLfQ+aypd&}0@Hi!OO @+`^F@B+WZcy` zw$AevCzGQSkF8nlSKpQ~(S55sxuRM3vdp4OO$uq9{#sTPlm2+%jB;kLz`N{e3&m3+D-PrTG#;fr4 zhMU7_uYdL3*lc1->DL37F2!cKcFold%koG4zFOXI7jqD_$JIBGMRZdPOfr-}V&x^C ze_USt3`Oq5kB)HY;vjg%KV$%S023%Erni8U$MgdUL@NSVR1hxQa*v2Q96(2VeH-qX zNZi7m0H(Bo(uhf=CNYXg;}$0*qS{(+gRcRRVXQA80RgDcGAo^6J3xk(fzKk!G-=R) z2l!4PBQQ|}Lbep!OF^(mfJI;gMgo@d@hT<*5N*kd_rWYgkdV-ky#_`^iIyt!P`J-X zq#FKWrGa9&izt=IfHy!T=WrQPP6Wl^@SqEVrNBlg2{nR}$%TUN69tEHyi^AFUem$M z@0YADtaJU0(8 ruP<2QiYOm^2WJRpgrGeMG4s;yVcr HT*Hw-3#1Pk!7v z7Hwa!toK1=(Z<7JkEWljU#aSwIsUlXwI}Mk!{>)K6{l@VmNj2)+&6rgU-NS6^vi9Z zuCb4-31sD*9_BvUq<1FU>z1W5m54xMrZ}25q6wM~D}aq|wF>^oKgSbKdcS+`KW<2z zm8_Knsy3f+5E*Pqe*Odxa7}VhIL$Lh2ym3(Rlg^6J1@sG!a86lKoHWDehHE(T&y&@ z)9Jx2ZegOZ5g-QI!gG0U;l;$e$UmstNQ)Nm!cpr2?;ekV8|)O}6?`_9n%HVUQ#jf` zAfVDhT--79yWJSR+o{*J*og zag; Ol zzQlSc }=lsZWYoZ@Djzd2$O{)F71XnDie8di={9#*S&)hwolq6Syz6 zWoze{Tz=H&j7 %Tz*bnHClxmIxVOg<(q7lp}aIm{l6fgt((8(M^ zkXV FLdt!|=4?8Ityiv2tM>GW(k34_ zUhyv~cgf3LA+EHCX_Kpd8LFmg`W5Cgk@n?El~Hmp8aZy^+J=b;t!H?nzkOL&&gEqb zmW_WhKSiXw7~vDQ(3H_T7Ol7*(W4n_Iv=~`@b^DAc7GK1Th-yJ)iK}OpN0%H{%KJ{ z^K|?hjtfg7&KG}sA$ZJ@`pv;>UW*=u3?>JZnDUDX>w4$;`HZaL-tIVaA>?LU&ApbW zEh%X)FJ$LEu2+leQ)D~d8BcqXD?c~0GxTYe35|zd_ATDH^k`tb&*`CA*3soZb{DZ6 z4Yy?{b-c>7;kjSWJ*m1ob@==Z>Ap?+6WmlkE*z3`Hx;i>epY(XQ*L~2skOUI=i^WH z&W6SOa2c~oHoZS1Z!D2#4tJk`-zTurp@1Sy%V?( 6Hpr^1ncr&`D5fBsdK!d-IgjZI+yE_C?!3maM-Gh<5kY%l)oR 83cCtf1uY =Y+2|NzsmL*L=(kE`T1A0YH+Uc;P~V{u@;&1iZ-*W~9<()m z(h}I5pZ@;3k2VD73~yPqu0H?n)nR$az|hNPuYuI;k@$~7E_qB0>+~%}m(yx~Z4CZ$ z&tI;q7cGo#O?XZ3^K{6o=)NVo=A=)PWlOqu+xI`_>r4?7`_9Is+tPEdJWhKa7N9*E zI d$dAhPg%QI^j zRyO14vIqkf*}c)x_D1#Up@H}t|JaQ^#QH-}Ux1%KfaO4jrMK9Cr65WDxTA6V-H{Tn z2m$B`$lzYGLV+Ssf~G{H92APn0hc(qsRfMV8hQn)kRWLZl%Z{j1(>IchaxfQ>Q28& zh|mC495)oKE?SgZ)bb$FNG=nA^~xBO!yf}n*59*CC+t;xp?lmRY&fXATh=Ww_jhJ;hb>43~@m&}u?!B9v+P3%yU zw7Uc*st&|De5C;H!rqFex }@QrD&nZCnqkY>^E#fto^ zwRIYEQ0^wZe |P?Rf!I zM|apJ>|4hRzsP)fEpJ)y$@rB$fu}8Z61`R9!A0wqk45f#a$9^k^Q$cq?wy2Km2OSc zvIJ|jzcXDVQ`lnX)cKA1Z_aXDd-wjs<@5DDy)(P(Lm$L+d{EU}wfmVVG&To~HR4lU zWx7=E^CQZ^noY^d0I|`&cUR$-h;E4!l#R7#vn?v;SgV1j_(Ne5Ug}4#zm}-fgmwP6 zjh11Brh-+3f2ArJ$eS50(8Vc(04XhH?M#SC zW2pt{wG>-j3TP@E{A2^%;Zou(a3fHG(H@A}0to^NUy#H|P|u7s0n* Hka19U=Bwb+930fkoIgX@r zC`;9tT*i>l=?p<>xR%9`fVu8c0FwaI5BS`&_CVuZNIiCPpoJtKU =s)H=V6Myl+jgrhWAS-TJh%uHj$K$1V|M`?x04iY}e`s@^8; z+O|5IyF*_0*6-UrYo1Ik>?%l=PQ))s?7ew-Z}+x NF$mVE!^g|oHuiz}L6PkuIBJoEn5G1Zv7^U0Z{`D;8)VKFt+kBp^q5xc`4A$4|E zlJ+JP(^w(ASt%fN;NEC3;M@=BT7&x@Vt|PUL>DE~z{x!{aAe$)XuAMT0bx1Ol2lN6 zkS-9;trIIK1VY?g1E04#nIpiG!Th$lhYO-3C*DiZwMG+ebp&5#k;T?e4x%WkjQ%$Q zR3dw T)A&3YqW2q8OmtPmpfEFn*Y`qGTFb!x}g4q(}zq@K? z*&VIKKu<=#RF77yyizhJs^Oe$FfIGgFMGR92aOlK8SM*i734Bik!>wrT3<;*WVqil zouS9xx3Ar0)?h%GOjD?w_fDWzcsGviW!d64$27WnUQXe<)v6QSDfuIfkE7RqIMaQq zdsaVkOnmvsmazAq^$+B=o(sz>tZlf{SKx1XA=|L1)n_U`An}C3BdDxozwY3o7q@ra zyq9Wub24J!mu%OwHz#hScAUuE+>#yGDAJC<16I=7*){_+uzJff=p0W*!#F2|E#lgU zLA@ti7fVM~t5Q6$Cwu#x9aX!Z)*jxIW$}>u?>czZqZx_e_iF>^CI+^g&)2Wr{q*LU z;I{bXC(t))jeRD5*YY!kwtM*|sqiLcMb3V*#7}Ijf$9q=fb_8h8nO!3SNC}6p> s)G@JQ3alV0pI25pP>GMa z6BAYtYY0XVP_0f+;>za0Q@~OSFJ|ENgh2f9Zmo!iGr2vI1Utk(N}+a gN!R7fC}u0DDM$7%{GbduDCVI z&t#TnAu+CSByFN_f}eAP-rz`5&CA;%a%5q~T7>O}^o?H6nnYC3=WdN%`~LlsjGnkA zTDV6}#a2e$W=5(YCzbms=Z9^In||kKdo|~Ggj_p&sCIYA$l1lKi+`WDr}&rp`uekt zgWnv!*7#_mV9V;_T`~VQp?N$Koz<0gYW~ORukRj<-n(^Ts IAtMqrua7=uaB)-`26}d%jkzQT?>Qc zm6w-Ky^+4YC`_iIWy`ZQohMLQ;EdHYsD&L-;F%h2heCK<3M&mO!o6hY_TwH345WhF zcc8SRP2feW1R)GU8}Lt(^jSU%7s;l)*)B5B$YMg!G2r +oSLic(Mp z;&*~Nr|cJWY{0-1gMib{sJY_BP+sw1SGV^#F?K;RFKStNkEa`6n03_SxdBZ=+9i^w z%OPI>W~|ou9T35(G&Hj4MdP7gh8lV;Y=`htPED%j{NvuSwBriDqoUKQnr{u&Cz2$$ zx63(Z? rzYD&zh0s_5)#0t6ZIrF_glt$v&BOXHaU&9~$e*W<~`XD0*wMSa?ZiLrIgc95sm? ztQyGVm0T3DFeK`g)kjtovI+mgTLtbySsDVk;R@o~R14rAa8J(UpomgKOJXohUK!9` zRDdwWtfK>8hE@nlWC`0K2Pv-%;K)EXSU`5%(st7C0o4Fld7-!xiM_%y69`aYh7T&k z3iE*Qk&ZMO;)w{0As~mMf`4KR97)tHH;akYfv<*2fY!)2ZiU*1Ap uEfizj7JUXl8#yci0I#ik-Zxi6IW_GQ< ?fQC8@qew4a%G>~ zF|uZF_uX#_{@VW0ga3DF$m0RmU;lcrt*B;Om@H_xVA}7TekAVgV~2;P=0+MXeN_`} zyX(1bWx>Ke{hfP7=XazRHSK>}J#+F;k>$4BWpN2+u_-%nSR7~;(=vK=H$^GZK(lc{ zSh_wRLsyYylFX-=0;DKijHro?D5EwO%j9*nQCA(Vu zDUIKO5sFu`7ob*Cj^ fY<+7rC{IQR)<4 zUkaQB4liAHcG>8%iLThR@$un601jevtS7NuZ5cNwo3h1<)4t}t1<_3vh0x({7kh zS?Vph!P#tk97h*=1rAI28p)>Qm`?7^Jl(0xCs^k2oYG$Js5v{(6d-~tNeP;tGUMDB z7PvX5!JvF}rbd4vZ}DG`gcN>ekxtBHpC}(W_F3o1=IIqf1+Ln(s=~8A4fA!6CJR2c zXY)63^Y;8{rEw m%(+pT;DgO}Ff9&K^m%=Cz%!Nlns3t9x>F{FIb( zTQw2;)jf=c`nIm_B+T{|wk|j8^V-TdaSEo?LwOZ>OA>aJxK`_{K>THV-*9%;Sm^Ng ze!WRM_R;xWA#l#s9tpa;;zzaXZBzySSN?=okTkgJV7Fh$sHN(^R=f<`!h2TyL#)aq zxyesyNBiAVO4}t{2Zg4m%SxG^!hSNn4ml^4!hV26r0mB^!)*I!+|LSVWV=;uI81>( z4rMhans5jWqKJZL0dkW7jp^=AQwmbzw5km_6$9%@K?g)2kk}A(oyY(UoDv!k4MZh% zxd6^hZoeCNlobdA81O$HzG`pej@JN)q!JFfy(Gne$3cz?GLiu_R1Y8&h=x}w))sLJ zvknF#4_}jBB37WSJ|w0>sG c4GfB7#H$okGRk;~AyooTM%!_v6-e{s zs19&jv-4{-0>9%2iXb*Iniu1V62{S{7~Y$}x~; (i$P+InJ;XPeBJ7-!KZYmi` zn>sitACT7|k3u=tCCu$}-Q;T;SYkdSqGs@oUSW#$i>oD?aLQAuPSkO|tt?ey&l{RW z9{aN_zxZXDQ*suCJ`0wf=;eRD=4}1=i-+=w;T=tBGsWwhKbReS_s{pbEq3RNbHN8Y zI$9f>*){1K>QYZXKq_5ORK}J?9X|U8=d`3+lDchAb_RcyT6bYb{mLFok-xboPgs#~ z)6@YQF+g~K{LX=9kA#xwgX8>d_3^tx^qZ1IX!fUdSmxc!*Xmo<9UUqg`u2!K0#HCe zyw UPK3FllS0Q`(W?yyB@q8=~p}=uX&p90e_kg|@AL z00UwLlFhxfyIWhs4-FtNl_l8}Z3CQD5J>`xPQzG608aq3Gg*NV5a@-2_aHg~B)NNb z3czzH+5&sEh}l$mGIS`R)C#arLa?5Jpbb!$TA{UxPvbif&CCqx>84aSr6E>;Plod$ zqST5nfEP&_Dz~4BMkjDeXql1{Wr+&jOm}%EPGO?=!=R*m1!@g?kZ`XmN;c4Fo}jRB zwt+@@A% Yf{s-2oVRj19`NoIQ^6ubQ-#@%gPx9sby zA%*LrH5s5dbBBg*yt}NjN6)J8ikmw |M 2LoU zQrqhMy?9ssqTbQ^m|x`+#Yx$w! @Q8b(brcK z I(l+VTUJ`cC!~~fUr2VM%&t71 zH>b^5qfbyKwP?gXmaE3Qu+DVJUW=nu**k^
zEZe4A?wbumA$sX86Hqn7HT$TzPvdLxD+pjBra< z&U8c6JJRaTN+Sm2l8K31)-9KJx=r?t>*Ph9d1ne^)9&8EtVJ^&Va1d>iAdStgdVlO zuwo=RZAPDVD`$G4ihjJw!Z_1(Fp N4Xp9ap`H8X1&yz*k(>eui8{`1P;F07BgJ-Rw^`q}(z zokd-T562%_{i6Hh?pv-R(S!CW*{!}$@>cW@a6gYK8;K828th2yI@N>tPt1?c(*0|m zuJlewF39arwS<%G-@ZogTsEhDm|xQo9o3WA5vNXGW_*%RnwoPUsh@{LO;kyv^}Ha* zZl;D?lCJBd !jg~g$T&u*??b>XegLf(Gw&Combevj*@ ziR`W>&+MR|{v~2+tj}y08l|I4mwmF%Z!91@Jb+svaXK{YI;l+!w Lm32R#U}#gv<#xfK@w6- zw~gR#qlA9c6k7xs_k%S1nPxzdvNP%J0SFDjga~&h_5s*pg&NWnOvmu0(KX)8Qn+6! zNKi3D!k`KJ4FZM2sk1_CB7UW8mD1UtXr;z0Qgs*V$UFtA$b!tsyvPlHONHI@hCp_( z7ofv!;e9$MX<#(wbp^;PogI~o`6^z!bp*Qd(9S-nwnruj{uxVE}*ed8CZ60_qt_UmUTq9jALl)IJ!KYe 3fR6>tA73qQR=NX(UpSS2ouoF)*NGbtxDWj|)Yu8gV*! zUdcwozYdjyNH?|608 lK!nLNKzt&p z67rgkVL6`IhfpLiE3#N|QbQ{d;~-3EZ8#FZHBknJ9S|hbif9=`zygPqr#rHZgCKpG z<~Z009^p|$)OsS)MaS0y2$|Rm6h^=)Qfh@yj>IZ~X=F?g6qXwNy0qkfheE-@1PgGT zgHhs1<8TDY62!S7bo&JY4rY|GqzdD8FEJc$SvgY+bNmY!m?Rzlm;0CsPUcXCd~g)f z7Wj+RZyg`5T?bSizoRb#31Tj3U7$sLysV4nYf0LuuU|0{6RXVmE=T9FIqGbfCi{$3 zP@#?UO$>@|&S>a$qLG-G>fv5V?TEH&JTo-aTek|6qZ`kzEbWbxSDzo=G5p4uPlNwY z&g!6~zfV2=bmh#7-~avBliObwFaA8O?(x+9LuZGB2ipRA=MP{0T=I=AGjz+JyLV5D znl~*@e{pwu=1KIUNwfY=!)&Hk>KFBkf=nmQjO72aciM!gKwu*MUgo`sMz+XoZ)FPN z66&;pXr3e~>q$^sQv4Ax>ycDXbldJfxz4d9Hp&b0kzAx#EF7aaBFmkA49jV+Ol}e1 zye{pKFAkkuP&!+_?aj75Yb+}>LpPqTAFle($xq+?&ykR~*DYN!{9UlT@yRu%c4JF$ zJ_hkl{PtrXIz9K5I|tDVgXz?;=da_Rp<7!O0;`WXR!NCD%IbEkwY!MR0XvVNh-_tU zn!>8mD-@)u91mVP7zo^caTGEO5juc3ub;?Yw9Hgc^aNs9NV_5gNYo>2B|wKWx}j3o z55JpT0CkYl&J+Na04_*TX)cG{6$uOgjg>AIP&Qo|TquB{f&zUKI>ZB@nz&6A2eQvV z0@DpT>|}EL0bke>=pZBp4W2-CsyKyPuFquy*c}R@JQ$D(^W(3)w$47wL#rT8WPr zAT-fv98I;-hODs4F17)#IR!`&I~5ox&4B!kB#m;-T;=tpZUDl%(7P2Fd1v0)!j0>e zf4#*AF#LM>Y;@*5cv0pj>2oCrO=UMEPw=zRE7#PJ)v7BE)EPY#l`3{u4s6{f|Dpp4 zJ-X?O*-Xy}qq$Uf#iD!c)n3tf&UQ7>oU`vqzKK QmRR#s9J{ ze{@9lWbU&)Pk!F_@bE98)3u);IriFTF~1%=lJxemBWo7+CduxtPW%0*u%CCA70D() zT6?Iwqu_Z&Q~tKpv~4N1N0Kb#D32XZPkU_D+Jfu>Y^~E6D7EXAh+;BDd~IE}?dGtU zpQw+^4np(Zz&f^5tUW6<4zeMHZ=y{HwDNw)Ehb&VW_0 _fPd>FG^bp$bqPQFtx|DU+^6_@Bv7 zL8XR5toByX%gLNpFfe9B(m{eX_L@tGI&5G#3^msk#%cpeiU#XBycpp@ndszUv~oM> zplYVEpQF&Q!a2ffbRf#g`L?0gzd#kvW}O8Cy3JeM+=mhkHcT1VpZ2#2=YI0E2addr zik{> O$Xte*HmM@$8fDCYB{1-g@)H;M?2Y{c^tL_k{c3rv@%c z7v;T_T}Ygme$+EQtj*rDElk?dt2W--kZ_tb5v7GkC}E}>uNqHvYpC)bW?j*SfTiog zB-(^KT)UOEU)L_8>q@dk@aFPvKI*)emjGeOr->P+IYkQ&@5$76jusz9I&9TBSh~}p zGp#E=c=_V QVO;^-OOi6@ z{m1Hkop$3*Dc4gej 9 zEDnK4LCQNAur@SwbQU3M91HIwXL8>P+`XX*+#q>1 By?E4%6^qEBMRvpuz79pHmbYaQre5*!QmcY zD08Nxn`%RQ{nRRLwe#dKl)kjlr1*7Ve;`rbIhvGORG5Vx%rHxcm9osQXF-gK)>Jp- zOv?Aq*EfG3+Uf5M`OC5!c*{Fy^VhUqsj6KjX`RT-c{Jo48s2v%=EsEIa}vIFOq)wj zq)hXkF6+%M$Pd~al+b1T_2IM6R`s@r%ZG|alsQG~!el9LAA4)#sj%N-|6_O2s=Hr& zo)psg_4nT%oLsu-+^?tJm@S {HVR#7S+RzNb&!slVM) zbguC<=d`z7+o8!m5RoT=Kvtp*{0_!E=z@}-hSgNs%lZ1edq)H39+&0TX)-%96YXYu z7Cn*ElXvBonJsD&mj*T>8)o5{B~h o&GFK0MsJ@2O-gyg34ptcuNv zfo}M4
UPWx0|0H3e_wnPpz)yDh9G9kjCFP{l>DYHX z`F^dG!xYF!?y)1jrM7xWc^tHoP~#U2{|N}~5*|PvBB4Ts^bA5rT4t#Z{yGFDJZU`2 z7g>fNC!kG9tW+&!i38ygq`7Ohsc^V-DK;`caH>IKXJhg*rmKnJ<}u gP~;A!DtJhIknC1x7fHE7p2w&5Cx0gtT-rAdXRU zk%I!-$O5z*@h{klH+iCd7oDA#16gUKyOw?J+K;>C5YH*YXOm#bu3Lu?_tEIA_PUI& zq@3>;_NLN<_}hC0 N zpv2DEH+q9wWj-N~zuRCE&z)L3{Ilh@tU2@R9oLTkd5iO>9jjMe__Och@1DLn^&qWq ztYbuXZ0*PMKU@9V=&B;q+n *lD;;NBd8~Arl+EUI&1v-s8v0GqaPrp?($|*Nrwlvq zwnVk_OpIGM%WW*LJa(xT-M?*des-n*uDXWt(6Fq*HE%q9{f*}brw%t%A(3SF!&6d% z!@VoFJCkjs&tzJB6k6z{cgKG?)%wI`%Iq;$b`=&RoCpw!+2&fE$kOSI3WN!2K~Jkd z2G4-u83Gu>cz_M9JCFzoeejiP1|TXF^iC^fKm#<)@^i~zG9QHk7$}+miMRp6O92W3 zCN~U$5-4X}M1$#+PKs_IUQ&lX5kPA}&tx1U^u$diAGGLBKBK5L;fgMI04;#&h8$kT z1TMEzh%ht4R~#@TVl5(A =K|!0+SLX&-r>uPFNE znf>Fik+R0Ko4s;>8)@tu8{byEGx=ap;K1~)TRrDr&73)M{-aM;9z8HPUT1IUKL2!Z zYwnH@mS6Z_XhFlhfdjW5&${#eN2^yw_H_sztlbeQ%uwnhJwTQ+31bRaOT`g2zDBcE z5$zSGXP>}qykMEGG8kgRm4cGhOF!;2wRz1NZ{(Q!FcS<6rznwEn8rmY@W{86xPY~x ziLTC%=j4ezt`zR;xN>vfnYTL#or&Zp+0X3rv!CC*|K6YLmu%nqqEXZ~FSo}$VuluG z?vp2WZOVOH@3Z=xt@qOVIvOLwtsMeeob{%W$GNzozyk}Uk*ZDA@ j69!fi-&hMmIQeTZM605qSpkhEG7S Fak!0)=+#l6>^y(Z^iqZu_*U1?nu?0kR!&($J9j=(6YK7WF&BcPhf?K zcYd&sC#|-+R*ESX~WkPMH2>RMw=mf`is-{-k4j%k$mR%n)uKG|TEn5{Le71-(~0 z>2bbAFGx>d(xbEo;_Z8FrW 2 (qJ;g;r5DRlp~P4r>&^ zs3<3`&`RO4lTzcu DtPfKvBMR#3y5eu#~7;aFCG{uF3xsSJn6sL{UhQV$J zu!B&tRSpjItQ?)(8#buh hF6R3J!y*n!Cr-2xv}OPEb?}(Op_KJ zMiYUzsZ(>KqJ6#P?1DbMlU}~!uIs9x6%hSn3$KfjTZyy7Tqw(RadgvgtgEkc{JZx< zE$4Z!-&=XGp>2CxTJd@NzLz82pD&!%ljQ4G&dUtyN&GWAxnh>f_bBMk&%W1N@#~Y~ z_kxZJhwE}0lZ!t%vwp>b|I~kQbG)H PctL_u}vDcV;M8#|nipoPrK-*b*;2 zx(F(as_$YN)GQ{S#Z%r(uSDC0f) FZ`jj?I{tozqI`-@UHpg|p)7$kooyJ}GSHK91-%DJw)^2W2NfY*de z`RoRUQ!t$k+DaBbl)|U7z0fy|3L+hmtVY)=^Mk3{bKdS)G`Ce&SLe|RT@cSgzE8)= z?3yO@6gd`Q)0o2>-p$Fb>2H*8C^CDw6{SVHq(B?0Xt}ag-{fUT4K KzGCOGXD?cyS(1Zd4i`IqY5-)FB4H=8auDfNYXp>MkVn7Ju|>mH(+)hOk9v35s< z>1!uv^3Ie;g!W+^N!Tu_3AJ{#FYuH`qeeEjR*EtPT|qgKQ+ud)PUpAtA9kMg%H8n% z`ioaPE-Wp$Dn4>(=~Pu+b SPQ%&JR{=3o5EIt8AYJ@bp!Lb}Vp|>047LUD1f{De^ z@XtM*i@D86BV3rcl@nvaU!*WCd|}9bYYPmF#V0^C>5!p3h|oCX#$l~Av^vl=f_$Ui z)a8&vV3DL5R^_m+H`E#y6Hy&>S9mcD;6rLs>w}p(DCuE(E~dD0!}4we8AL;kW5uPT z?z>k=k_{{8imsI|clM2e8KF-YNgSO4e;4Ysi&davQL?-OeuJn1?N}BHbwnE8iqg{} zKe#(`7v<-bYBj;;_IigqEAT 0bke&fmF+usO?x+rs|zhN38!PquuPK+MjZMmQG z@=wgJx=?GIOWn`$hLQ;1h!x9%#usa$URfhnGa1hElyiFNp+yPTlm+rU#dO|fT~B;P zar3!cf$GGD2OjB5PQ6H)C@ TbO)_BdVU zrJzMrJY4p^VD(yD=Uf-MB0jWMwrhEoOSC*9v`JKl46E9EQLMsxlIIVCEjbkk(>-nw z<0Df$X;Mt@C5!FuuYCXd@V(dBrC%TIx%_MHzmH_jAM;yURUs}4w_E4cO}R7FofNz- zIWX}4j;RSFXZlKfw8-ED{-r9H86Clh=688(;6c>ih~k87rrZA!tY9D<*n=MTSm*Lu z;&>QEL!%e$@xoVu1`~}^IEhf=cY>W!3@O|m JVc?T*nT-3%bg>x-hVt5J^-YXs*>h+t46m3v=^P*5!t=mH}9kCyb zFLNf6-q^_`1F4Ewj*jzaol}B3cHP{xN4o1VjOqOmJhMyfiZ0V&xsz?*kSbi%ZlaWf zrdxhYZj34JlZY8mt5^Ac62lOb`_9W-WBvWG;85W$^fEVZeS7gl@!5cYXYy}+%M$}$ zPuq~?_oR5ome*6_Dk5L)Sh%%*$G$B)7S5iNJs9}Iilmh}5nbnUg5Ep7A||WcUg(y# zE7atJ;DtRH5q+~erm%!7a0{+`T4$1J>wYp_Hh1*;WzD&@;@;DnyVP81Q$D5IV01DI zn>e>c1^rpR<0pkOz1*YkSk9EKeTKM3DJE0P@e3`L>_q^s;arr08KogmhX&&YQ-`ko z^WEVh@DaBCvfw}KmL2I_xOGK)$7A4p1^T9?n|Ya=B?$Do-~yLzQr7Ykguabg#>r_{ zP^+bz`9d1Utk8=1Mk aM^gX6ipPB*o%&{rXgf_jS*(If`!kb1MP;}gXD&gu5eE2g3>w8 zzQNJQMJ_fH;yFGYA5YKQMVJUFMzYQV>Cu4T$0WU{3gV5BZo~i* ^T>O^uaZV>oRAcKLr2`!oEgxpT4i7uq20XgXzn%?|&F@ zqF@&_E30PGF>Q!h A;QJgiD5K7RX*}4D02_B9?SY_@q|y ?q42AhQ=O_E?D@t z&x$*?ZNEQc`0GElsvo|JICr5qdC%k3@g?cb^131clc%r<3xz^D6uPpjy~4a?LQ}dh zEU%4;uBBNUOVa8L3Sl)(?J6+4qmr%^Mlw$_sS z={6vCi}0cQ5G12 zkU Y0BPp5$^}}IR>0hlU$Ax8(e>R*XUm=G1Y_An zIZKrsBQq|nMCvHeOKVKRn|sAhmiAr<5Cp*DkiPk(9#A%loy8p4UJSNCsnP{hKi&^x zu(!y>r}Dbd9J2D7jHoaalqq?SAFbT7SM2S(oM9bS*{p-6r!gpHN0+{9lQxv^SJL|? z$@HfgC)4(pzui}~E|Bx6BV7&iESfZ$eaI9xYk#{fV%3U>ssvrqs^j#>PtJEPS`e5z z5t;qLKmTS;7ER168kej*d${>``?-$}{`&AvXV~aS$ _SMm7A#@{WUq|Z5 IR9^4i=&u_L64epun8gMU67*B&5K^m}SIRZGY6GAtJ1?wG+O$7%NB#`M? zQyDQDB?BJMIR)R=VQ6d%_Lb9HU~UXA7cLG8W<74D$S0_f7T71FM!@&?p|=<**e2fW zh$7>- LCgY(ASq;i*yHbn rL0BnIb!OhV2f zN$eHfqqJ7JM_OyBD~%Cc&Io6RR`R6)Q@k-JjWZZ)=5o0fBUphZn(!t8Rp8x-n>*Ay z_XMm@?Cc#O^6UjJ=*^m}ip)f*w`oiQNTie$KUPM>-liwTMKMBcHsIHfdC_T)Z%40| zFPCyPD-(z4H{X8T!i-W+H!04r^wyiY>+1r2jcMBHZebx~LA)0>xtH?GwVXDWCV5(E zX3cs_XX53p&G$>jHx2!inEU&I-tUS|#WwT>ycm#Jm+pLLU3 (?G0&T zhS&IbiDU)cEv~`Bycm6L7PD4~DR=jtsL;i2G4H7j6B>9?LW2@mvJ1s7a56E`6AzXY zU#j4=IEw;u|NX(1p`wRS3jOvUM{hk|V0#c)k-T-@Tye$Qaq(ak($?(WHrzYf^YzkW z4OLq^#A@gW{3H_?E{dxAL-wYygnXff{UJ^bU}T3U!bxMp)6h^$AU*~w91>XE2ZtNU z`BZ8sh5$<@#Xvwu!#`B}DR|wy77ADjy@lkm`dz_rR~&C|Gatt( ;NVt4F8>e;Td*d!bib!NTbd8SKz3y)7bFF_ zn(G#BG%AH!5gk5GNNns)Oy_t260fJj>Ktn=eB_`UT~r9{nvqZ-rUPrUWR1Hz-mN0d z)wSFwbT5}KFUyENwo72rgznYq3r?0F_`7$yu{L~?nX|Vx)aJQ#Ye~90TX`caYlT5k z*70trUuAjKmNT(SFPt4I&OZKD%FkmhM=o$5J{{l2OMIHN(SE>i_PTwYWaH421^0db zSn`7)akIU+VwU<`*}PkMgUh5wvkNU^jT?)}SrwC(-^4U{=#}_y8L>{@_9?>@r%MX1 z(1_W((OMRpVU4$I<&YKQDH>8NK6&?^MEf>|FG6b0H>%_!fxbyWpDgg~70}RQj5>g* z1SM3FARoQL)BzQYZDICTK|d}=d(a1;fBwz(d*@!*JkHQAq>q;HVlqD#nPX;lNHz|4 zjn$=(W&<+O*4_0N84{+d-coUHBHLs8Xep{mm4d?`vM+@OD(}B>{hPw&1lw)eJ21lTSI?5-hsu8bJj6$-$@~LVQ zc}eNf+Cmm#6W&PY11+J1n#oKe eoDVIqQWqJz=E>2(&TtvP=DrRt4iESMDw7J*YZJw5PtLvmJ&Le3k zgL9F5AeR=c3UeWC{!(R(XK%O_eVuRC;e8`tT!vR`BdLUVwx1IG41g(fErmQKEY7E7 zbKR4^4&O%8m_(aa5)qruRC}hiDUm+trE^555}%yoQm*d4Z(nrF46q3%8I93YQxvyp zX@Dgo{d7!-o9kqi>EMips1=dfwaaHUL_DaNS!URH&3L#j@kL)`=E9QEhri`^ep>#m zU;Xp>_siXSJKs }-+>vR{@NK-cZT$X<=Rse_#3MNK3RlJ!&~?mOsVqh| zO~Sct*XzyEdfFQOxel4$_*S@Ax`7uj2SZ*ja%0C7&M}EuwLn8Hdklq`nI;#i!k9n_ z^72$Nme5^IY4U|UdJA1Z&I8{gzrh8P8M;T;j{ei>VdpW=k%}M3O1~Z${_LX lDa2E3t@=!6FTO;~~@R%2pnJ`CydX2SZ6MguM)rh7WvTp>l_ zDHO{ 6@>P&39-ODYtY{0ce&s%L29S3+ez7-1aO!8fHyA D|^MD(Mee+(D#POeDm}&*IjAardUNU^SgaFYs>S` zSVva$n+H~xjC?t1ymDf}&c ?!cJI#GVjw-L$Mhgtwcb)DCZV zAps@s*vTs3b=JJ4s=P;)-bV9YFSYI_i&3fE<5W#?om^9J!r_WEl-}c_8jl>k6U6Z- z&|0R>QwaG;G*^%?4lxz{9gWh+__*aFYXy=+BYQK }5#5nm@*D+oLw95f zMH6DC5-bpK8w?O$&^d%BkXiiQQb?u>hfXq;h71@!F+MmrSRzdgc-U1<3kHlLM8_qL zXizY@(MT+?xXO%R5g>~IR0kNDV&eNC!$i0*cSa667t8A^MSDY9&f6o(#Um )^!~>s6{#8M>1NESNV`%t-R7Z` zvoNkaKjgM|i;HN6{YqJkjj^~bVqoU gHekigkDT ziU-af9D6+RMda^?O0uo5ZE?+ke~eYgI(IHSaP$M4@0kNfRz+-EC;4Q&Z-Xi)t+qBy z5t4bNV=#m!qfJiC67gK5rc6ngkbXTT3IbC?eo{=BK@&5##=y!jyTZ})=bCs?SqBt? zC>8={ugUa58L(pwOID(8imnX~wbTO3tO(xVuh;T ZP?qRS-R0p+XWfRcoqe}6 z=wIW1{QJm 8t`3 zG!(~RuNs&-R$D}Pd9!k+`609;9xSm#?I%8zjbx!rS2efQ33kM=Xc>SVLC5FDM}?YM z=BQ}H-e^Du$YZN!d&}mCJ&3ETL#^UE5?MIGL%lj;iS0NdpO+90a&BWyUzzWC%@1WI zwXu06sSTcPNR_2FW=BK$q{gm3p4{Uyf4XgPoA BVT`t!T?OJm!# zx>4r-{+t3$$JOq%;=f*x7wbxo9rrtO`{R>Ixvzg*pI$cHJGOV_`wdUtt@wXmJs2+v zxHEcpZeqiE$%X;<2c_yCI>UR-F}`Mh&R~qtzB_91-H4F97^)!xV@%Cq8t*|9&!flR zd-ALs=_SC_PYKZc9Ldx-gql!=teOonhlp8#br%J*?o$HiHSQ5=Gs2rISo-oSg@^7h z*=i80t1TGw*AT0~?~2CuxT3pMI_2JnM?bh%tbFwF;qQN(ymskU>yYHi*>qt+LI0~K zgEj5Fv5iYA=D#d1v)?I1=2i6ksB$ophbg*Rf5xd)Uv$zNwN814c)AxKXFAHo3+X4U zhin4JE%8Pe=%Ao1?kSJ}r>ZR$jl=W7v}mw0(h~^_0^o%Nf!G?^@CYyqe$dngbCG$Y z?Y0Hc9K$HZimc1GaPvU^qUWRY! bcda@x20#!@K@$3 zM7|AGi@PQ@8rco8=?0gOd?VO*484LU=x;pfQ(Yj?JFhXEDq)LEaX$9aD7I7;(w0Io zC>JVWIRYhwW=#r;ehMW<64(G_2$xZGVZM-Krm8g>w4Cl6Q6(qu{A @yc8rV1-Go>KaR|Ud7QDrnTStj5UGp-I7ZXp}hYZJlc zgh*wt>n_c0MU02__7H}oAL@_5V0KTdXVq*E!W7`NvT11m(xcR*)pl?-QjMq(I9cey z;$6pb-fr`VBv$JTAK5DRM3l4UP=D$n%S|BAK0JBd(;qT2#5UVnvv*w6>YOk+M_v+~ z?VIY(R+vltqOsVP<3slPMsTi_dD_?>7gyY t@!DSt;5YZ zA13eo&&sW3XPX{ZMaA^IKQ$^gUFfs_d QNvuh_LFTS7q#&BGqzLkmuvl2mp$)+}iVOCKAu-^g!fGgB zjGUYJ(a97|QGA?SWGvn-a#)~(AuC`&4UUJdfEw>97p26_(n6GI&qTh Vs}P`qvx?vzek_aSta-i==OoLsDFW{B8KE zVMp3gk$R{h)mm+JcXIYkmGjtAuvD15L4d7DT*IPByu^wMjz%oX(mH$3wKhUe)dR qm|R#g1(^b^LNlf39NXaWDCuu;I3z9~&3E6pfCyCcppJ{i;s!?xcnv zHtzYM+_!RL-q?{2mGW{zw(-!%*L&uC-0}mOK0(rqI613PEuXS)N-6KmhDd>rJ?~;l z@9tQo*=Lv3MXglk*UFfBp{{U0>MgpxVFD+ibMWL~XLFSB)T;2ShIlRTWN6Ch4N+Jv zIWC}VB33~|86VU}0|kfZSFwD{FV9-%v~AzFVf1RF{o#WDe7@|6efoV76M#A)F^YQ( z9s5Rw=Q<=W$6pqM7h84g)lc^u8brJVFQvKq bm=QOCt!9;!|cuOMe&>p)jBA&afi#vqCoz*)U-c z0DFnb7A #G(QjU72qwf~-dO8v&sfJMzi2bwVicBIifJjFg+lB{@EF9}S3>wJkM;AwJc zMdM~(()};S>JmN%m839a5K|iVqkGiqjf*SqVwyf$Wnwp~*t9j66LE2Qq|~D2TTBH$ z_HRP=cL~tkYWBE&f^RUeT!B%XP{{cqZS=`}itesvPy$cO!TZy`0!lM-?c1sEZT+== z!S6TxE}fk*RD95O-8-f!Dq@YH{?*TtdxK#m!U4=Cem(LXK!xW=iqBnrTGJ6-=^QDm zot!pVtv0fxaV$@e>)-J2h(R!9(HtX8gRGepoD*URsG*uI5g7`$3oSK1qy^RnzZnI` zggOb*1}PQo@V4X?ibh9tNFgx9WB7OI1cOt679$X7uvo`|uOp)KtI_feN?nK%|068; zan38deN@5tJSP^|WALBI#VCkR(IU{3jLm@#n#1ytvoKXsDOtYh4p+(|n|FR?IzmR6 zsgw|@P_tuGQsg1{ixwlm&kiKI9a!|rxsMJtWQ*LLf<^hkbV5DgTueFF0VrAD9o^TF zphf}h6c%v|zDj|{9-HlXLf0C(Xf6p8d+Tlz#O7eXC!PucStg=FE}N0zYZCX&ND7WG zk5tu0i^BGZ$cNQpJP7@1dUdT6t(+sLdC%HgzCW0y sYl~vR@ z*;;A_VX>}9;?v>pZ7zh$a>ym05RqXpOXfkpa#rFb7wQ?_F_~hq+RfYSyrRWi8=~{q z3o4~D1W;@znWv4AQp^J9a5=1{HG8yR90ilOYd+(1u6^tMuygx?1?N`Sx4#~*^YRO; zg)Gi#E-tSs^Hp 1+3}y}P@K)s49<6zZT!YnoJb~ze&1sQJot)4fBtnb>*D4V4ft?3!^5JTU zd*yqn1u%P)&