diff --git a/.gitignore b/.gitignore index e5639d6ed..b57d3733f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ yarn-error.log* dist coverage .env +.svelte-kit # test files test/generated diff --git a/.prettierignore b/.prettierignore index 966ec8a76..f8b7cc177 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,6 +2,7 @@ **/node_modules **/templates **/dist +**/.svelte-kit **/.vitepress/cache **/.vitepress/dist **/test/e2e diff --git a/eslint.config.js b/eslint.config.js index 4abf169a9..09b7e5a45 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -51,6 +51,7 @@ export default tseslint.config( 'temp/', '**/test/e2e/generated/', '**/test/generated/', + '**/.svelte-kit/', '**/.vitepress/cache', '**/.vitepress/dist', ], diff --git a/examples/openapi-ts-tanstack-svelte-query/.gitignore b/examples/openapi-ts-tanstack-svelte-query/.gitignore new file mode 100644 index 000000000..298c335df --- /dev/null +++ b/examples/openapi-ts-tanstack-svelte-query/.gitignore @@ -0,0 +1,45 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +node_modules + +# Output +.output +.vercel +.svelte-kit +/build + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/examples/openapi-ts-tanstack-svelte-query/README.md b/examples/openapi-ts-tanstack-svelte-query/README.md new file mode 100644 index 000000000..5ce676612 --- /dev/null +++ b/examples/openapi-ts-tanstack-svelte-query/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/examples/openapi-ts-tanstack-svelte-query/openapi-ts.config.ts b/examples/openapi-ts-tanstack-svelte-query/openapi-ts.config.ts new file mode 100644 index 000000000..ef5a4617d --- /dev/null +++ b/examples/openapi-ts-tanstack-svelte-query/openapi-ts.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from '@hey-api/openapi-ts'; + +export default defineConfig({ + client: '@hey-api/client-fetch', + input: + 'https://raw.githubusercontent.com/swagger-api/swagger-petstore/master/src/main/resources/openapi.yaml', + // 'https://raw.githubusercontent.com/Redocly/museum-openapi-example/main/openapi.yaml', + // '../../packages/openapi-ts/test/spec/v3.json', + output: { + format: 'prettier', + lint: 'eslint', + path: './src/client', + }, + plugins: ['@tanstack/svelte-query'], + types: { + enums: 'javascript', + }, +}); diff --git a/examples/openapi-ts-tanstack-svelte-query/package.json b/examples/openapi-ts-tanstack-svelte-query/package.json new file mode 100644 index 000000000..539f731c9 --- /dev/null +++ b/examples/openapi-ts-tanstack-svelte-query/package.json @@ -0,0 +1,43 @@ +{ + "name": "@example/openapi-ts-tanstack-svelte-query", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "build": "vite build", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "dev": "vite dev", + "format": "prettier --write .", + "lint": "prettier --check . && eslint .", + "openapi-ts": "openapi-ts", + "prepare": "svelte-kit sync", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "@hey-api/client-fetch": "workspace:*", + "@tanstack/svelte-query": "5.51.21" + }, + "devDependencies": { + "@fontsource/fira-mono": "5.0.0", + "@hey-api/openapi-ts": "workspace:*", + "@neoconfetti/svelte": "2.0.0", + "@sveltejs/adapter-auto": "3.0.0", + "@sveltejs/kit": "2.0.0", + "@sveltejs/vite-plugin-svelte": "3.0.0", + "@types/eslint": "9.6.0", + "eslint": "9.0.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-svelte": "2.36.0", + "globals": "15.0.0", + "prettier": "3.1.1", + "prettier-plugin-svelte": "3.1.2", + "svelte": "4.2.7", + "svelte-check": "3.6.0", + "typescript": "5.5.3", + "typescript-eslint": "8.0.0", + "vite": "5.0.3", + "vitest": "2.0.0" + } +} diff --git a/examples/openapi-ts-tanstack-svelte-query/src/app.css b/examples/openapi-ts-tanstack-svelte-query/src/app.css new file mode 100644 index 000000000..f080f2926 --- /dev/null +++ b/examples/openapi-ts-tanstack-svelte-query/src/app.css @@ -0,0 +1,112 @@ +@import '@fontsource/fira-mono'; + +:root { + --font-body: Arial, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, + Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + --font-mono: 'Fira Mono', monospace; + --color-bg-0: rgb(202, 216, 228); + --color-bg-1: hsl(209, 36%, 86%); + --color-bg-2: hsl(224, 44%, 95%); + --color-theme-1: #ff3e00; + --color-theme-2: #4075a6; + --color-text: rgba(0, 0, 0, 0.7); + --column-width: 42rem; + --column-margin-top: 4rem; + font-family: var(--font-body); + color: var(--color-text); +} + +body { + min-height: 100vh; + margin: 0; + background-attachment: fixed; + background-color: var(--color-bg-1); + background-size: 100vw 100vh; + background-image: radial-gradient( + 50% 50% at 50% 50%, + rgba(255, 255, 255, 0.75) 0%, + rgba(255, 255, 255, 0) 100% + ), + linear-gradient( + 180deg, + var(--color-bg-0) 0%, + var(--color-bg-1) 15%, + var(--color-bg-2) 50% + ); +} + +h1, +h2, +p { + font-weight: 400; +} + +p { + line-height: 1.5; +} + +a { + color: var(--color-theme-1); + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +h1 { + font-size: 2rem; + text-align: center; +} + +h2 { + font-size: 1rem; +} + +pre { + font-size: 16px; + font-family: var(--font-mono); + background-color: rgba(255, 255, 255, 0.45); + border-radius: 3px; + box-shadow: 2px 2px 6px rgb(255 255 255 / 25%); + padding: 0.5em; + overflow-x: auto; + color: var(--color-text); +} + +.text-column { + display: flex; + max-width: 48rem; + flex: 0.6; + flex-direction: column; + justify-content: center; + margin: 0 auto; +} + +input, +button { + font-size: inherit; + font-family: inherit; +} + +button:focus:not(:focus-visible) { + outline: none; +} + +@media (min-width: 720px) { + h1 { + font-size: 2.4rem; + } +} + +.visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: auto; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + white-space: nowrap; +} diff --git a/examples/openapi-ts-tanstack-svelte-query/src/app.d.ts b/examples/openapi-ts-tanstack-svelte-query/src/app.d.ts new file mode 100644 index 000000000..ede601ab9 --- /dev/null +++ b/examples/openapi-ts-tanstack-svelte-query/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/examples/openapi-ts-tanstack-svelte-query/src/app.html b/examples/openapi-ts-tanstack-svelte-query/src/app.html new file mode 100644 index 000000000..84ffad166 --- /dev/null +++ b/examples/openapi-ts-tanstack-svelte-query/src/app.html @@ -0,0 +1,12 @@ + + +
+ + + + %sveltekit.head% + + +j+zll7XNPs07< zeIB0I&i<@qYreXpPVC3h75V#E?uFTe3I01dTVH*`z1_{*w%yO(^XtjsTL)gwulaZN z)-C>n3^((&oeY!44im~Oz`;tk5y_2#S9+b*_%wIA|r0zBEt W!UxwQJyhX;(eHI=)z3$o#7KPbT7vuF>_j9>({gU~ZFZNw? zvf!cp6``|_dq4TqWjgbE+=8|H_r`PlXHWN2ss9_Ys h^G-;^lANjq%IA=?ngTDiQJK`7*A5s~8VFR@Dvgc2iL?;`eyC zKmT3Ls#U91^VM9oRkZYkOj-5!apt|wv)lD{rN1ptWRN)MdrS|W>9H^jPJ!B)r}7or z_+b^>hj#)yz*Wh%+y9qIG5k1_!?a=j?r7`(|L^8qnP1YCR#M)@IP>UV$BTbs#1_OH zu`f?BW9o7E@%(VaAMwXsWfy+Ty7|OD^WxO$>tZ&uu{D&Z&wHSQu=;}^$A|klHGi1j zzTM@PvS;$X0v%X604cQ(eDq{sYk2&5-{V#As@l!tfWoC8$FE xG1D{9H)?s^^xjJ^RVp`0URqpz@^*=lt@-mM#$oGXeu_&lxK$k9D2;Gc z2nXXo>o1>9>uo;B6QF3$au_x31v-IRVMU7#d|+v`G1=KciXkd0%5U$nhqos9Ep_?z zzu~fG9Q%nh6YICP_W7L4xVOp8`m;O##O(_w?vQcVIFq&h^U@6u^v^Qv>Amm$&|YZK zh5K;}-j@FpUR$rK-cs-P_5Fe!FOE(tob>Jthj2qh{0W8wstmK1&%g0G;Pal~Teog~ zJMr4WOr$Uj<_1u%c*wCK@v~TdPNmo8_kViVS03&X)pq(MF@v#faXWg&1+Ip<5%FZe z!YFB3|M% _XI+nPha9@~+z{+Jts9_xha*QvR6o4Wn}J>*iFZl2F%;QsS; z^IDhsd)MD7=muyj{d3mOUvPGHz1R7iJMJH6ss|-I+g_FAyyzTZJw mJ>tuTl*L#0FnxM|wtbp@Y?WWt=h}HG@<-p4$}+Ee zl^$PeX8* g{)#L8 z`@ikc{LI_Wbl%P{R`OlBE%4Y&vA} )oYvwRSnn+aJ!WM!!*bDkFF4j$>DvtnA-? znYX{EZ~Fdj_1tfl<_q1Ne*4y~PxT$2?$>LG7U<;5p5ujOR&bj`)SZE?p=-CQgaFLv z4yu9^*c#gRfBPEEyzs)?bt!We&Dv|>lF2kddxuKHYkmJr@p~1fSK~i$E-JB0nqL(8 z`t&EZmJjRS-}bDPj$hFG|MPpNAN_i>oUiJsXD;+Bobzm*mfZT^OiEYn_ZK~WQJ?oN z!p>Vqn&Frvd*;2F)9>%CcseV4;=lcq(nO9iA>7u^abmye{5{_$ao<~?U*FVPf7gE9 zj^>G6+` +Ww zPc8ua78;HL^BQh4B%EV7aPj}0D>)3mjVurU-@SV)_y6bhE2{o^rj(RF@n$SoVlT~T zBzZ|{_9y#GW#s|y 361z^`q^-OqPI^E7%^V6l9I^X!O z-rzXU``tT(uj} p*m0J$7V-|eV^<$NzN3wdgYAje@|G~jA74W z&4y-p`Redsg+RdK|I=^mp8p}`)1!Y6&1R}Lc(d~CST+A{I?KF$w=e&Rh>pH3w^cur zEh9hQ{!9Dghx2%TqqSZ_Y(VYIe`1LZARmE)=lG-spZWj4eE;`W@7B)OQZpGFTI>7% zO!rbs`k;|m}$otb_(wgpFP#kAurw7L1(R~H|w8c*Y_kI z?Gim|ZxN{Wfa6|72`fq>6a@_@aP8offDgqvqzX;A`2X}Y-On|Pw0=y;VhC_w D!yxvsTXuKQhPh6MrC+gDGpo#Yb;roEnbSnem_a`?RW(N1C;YP3REM zhP#))TzAiDv|k)@;G_Bff}`;GQea?8o(&oY{Qd9IE4U5!7#V*a&dJWsK5R5S+qU)a z<;An+TKu}dO2i@He9(<&8uJ3vm~Y&_oSf6UJY&=0bw7KYFaDMJI=^t2>lb_Xf5p<% z`MOR1+l4m^d` xUk*T!A)r2+UEWbj{IA;7klwN<|yxe=O)Qm$0ygRn5-wu+4X{%#lfNX-~Ws! zOTYGYZf18Z{Pupi&smj?cCy_QPRlFA9nZDc% -o0t>!!7D#daeCl|a)C=7i)8KeUO_}AKJbA>g!#afRK4q$ zFM8xyx&L0B`TyyrH@>>82VU=xIdJfA^$PX5YSVoefBbf4;gtX9tQPsq7x-^`v!~-v z`p5WXzn?!|dLmy=clp2c=7yT5Z;gJ Ou5!rn&U-KNUa5QB;kuE>4 zI5}PKkrzCs9T-@SsWD109D7!KG!$OD$S^W_aW?Ec9W(E`<*WGKf7`8EO&CrDG5pz; zc|Cf{$+VNNJ;eDRuK2HUb46E)*SGJJu6yuHK3qSGX@_toPr}Cer&$Xm8S-)zPE@H) z-uPk8|9$`7?T$)mxhZ&{QO_a4g{9(L?WUC WD%PTkbZ=V*w zQ@gZs$GZA@gDvgei9Flow}q=QZoY7Ck#PT)0;P}9(b03~NF2@EzWev@-?5Dj2hP@} zY`&RvY8p4wykE!JU1X=tIh!VYjIsUjMBO*jOD$wx=9taCRBF2!REC|JCTKFV(!o^I z!9tqR;tdm1@{EQ*x8Lk~y)OFCVu$zM^CG#s!&kREr*L2E`d&0M-ZeRxVK(!VO*USp zJP`$xXR_STIB+&5ZNZ#Cg;|>ejiiK^GVOYEP`&Q$ydOc)(b4@?Tr*`KWJs+$_95iJ zQg~p3(^jA|1M`7E=k7ju_2OpDn8~o?|1@d;*%K~YKfUFD*!5Jgf2qIf>$bkVy-4)DxE} zPnzm|xhExr;hIh8k<)*)qD^u|PP_eZvbGK`+s|>_cZYQAO4rkEE^_Z8&Rv^$^-ite z*^8H-uj1SM@@ZW4kfH7MAl8agKWXIKS?3mtzCxiT9_^&i{FUKYi}MMty64 ztL{t8tsVcFl-B-d2wX9H#WutLr+j1e-l(5pTxIBBGsEk*)=7 Ja&!fuq6UsXzncf}(e wMF~iM#yvP3JiKe(i-@Cl}a0 zwom>Oea^UVu~?wc;!SD`w7yLjK9#@YVcRYK9a|#jd_9=^WZCss8!dI-RTtfCeHXLl z*gF-)SJk~bs&gGbr5t*sv~%Cq(8*u7JT+6S^PQD18L1sq Au(8xic%CiXWN2c%oP2qDyz)J=*4D6nMv7f@RGt6Yhvq0f~2MM}B!u6V}+iy5^nh zuPQ6Hn5*aC88i96Up@ERrF`pM@j>$+Yls@i d8hpg)qgf>uIoMR$)oyb^9em(hM*7nZr?u_PtVRO{`JPG*k?xAw3$+c*{Y{b zYTQZc%FE< adX=ji(|HTlZ*2o7%{C5 zTYGCEpHN#v*W72yQZs% i<&nNrLs(p27_xf38~RPGxN1W%%dRS*&cPP*#5Ylji@`bIZDxS9>k`d-dOv z5Bk@C#_;}>Pc+^uvQVmU&rV(+``Y*MS+Ae1iQ8*c`R9yN%*%~x3az|mXXZ%%eqFmR zByRVVq&=Zl^~I44r#0%9sxW+C&h aq)|Y``5P@ z|0`OwzvqMf#`kNvr8cpj|2Wa^ykn n zQuXG%^k7au@Id=Pk@%lk=Q4%&$~j*)Y7P0YbC2UO-{$&To;UX%?KYqD^Jz?*%h@tL zf5m&xg=8he7qm}jFL}T0?z>;Ih4pWvvz1TAZNDw6l`a&(%lJNQSyOVkdjFl7S6}@1 zod4s_^wrPjySQ!Nq3UdY&L}liNaCHv<+7Qc4yN2I&YQ)B%}>uVYjj+`=~P$H4Np@J zo;P*b-pkW(#eWyF{bzmm_nGx!YhTH{l{~~JY+Z(0j3 d*epO12OUc zKr{Jozx=ztFDCzd%)__w{<{`;nz5hXSN-vn>Gi&2+S9HdXKQfKD6vjwcyNrZ;a*0F z%irj!3;~-N-<*EZ!+hH;JBPs|)kvi0IWL2omR8We%^msY7!KTCd+C31RlOO*22h7I zO}HT@-uCwtcfDV4lc)E%J(KwSLUn-@gPlxVdAwDz#@n4*Z@3!|p7<{v njpxomE!)_cf*`r>ws7!}*E- zj8@G%T0h->f_-1>|CPlqtFpz`?U=bZ>9pHruSVZmQQ Vs@Ea?GsXCvQ9QX6DJh;J;;iPfk9qmr^+2 zIQ~P-bYJ5`KP?X^*=8P1-5G25_{#ISGdJw=)jMr>_V=cbDvO^U$(on%=|9(iyC96q zjKib&Ky&1Gx9O+1-qk8*c=qr@ag5Xji_a&&OB?@wy?$4###{w2wT>S *wySOpj zeDc}duKbCyXD#2%`JQ3tjkrHIWTgcebMVZP&NH8??HG_$r!_@NLr&j&g-8!m)pNhD zT}&dkKi>LlGr#WL+%o>@&n)fc@$B$I8t7#dsQAu#fZ@YC `d7b_1ckcC;w~lO2;%u0m7iZl$>3K05gXG`*P%ekP8+HDeTfdE3@|q#{ z-3{m7#+q04d3{gfPGxL$eHgFzS$j6qj*U0+Q<)MT&NpT|;luFCvX${bJrnO4>$m&Y z@Bh6{%*DF@SO2XQyBMw-6hAyyofpo_P@|Y8d>}wv{is&)uKKSt7Pjc$>))RK%jDIs zb8dgn##-m?dtfa8`)5WqTW=d@!qjQ^bbkF7ihjQH^3U|yIg;(Yb0TB+q&~Et-rXH8 zwr6hJ-Wl)W-{~v=Pn}gCryulp_M*S3OX^RaJd-5Zow#a28tbh+=K~(aJgnHfAS{XH z#U0IWlWsEHU`a@Mti;VQo8it*mZc{Y()H$vCvZ=^t7qgP+AQ4HIc4kha_}gZpXvYF z^?N_Ep4)V|cCpKW-Tyl!yMA6;>U~_l+*N#~s-8vD{q+9qdoJl4_q57v75RGfj@gz; z>C0y6y6VnON}U$O8+7!1^g{dM`=4&+)NPyPxoP2KW3GZUu5)q+W-_Pj?26y5zVFJl zYigS~PPFleHa}nV=U?U1SKR+9-?i)i?0bEs_~eWCVRBv0Hq(FnRPJSbRrHZ9T4r_E zzo$Lk%4c*ELX#Y3tvnOSdPF8U*m+^$N)fZv&PkegobEoU`M>nbq1UnXHlHtx$2aT` zz5n;Q*f|cQah-x1fd %80hryLNb)GJN>Xx%|v^8M{l(!Y*6vyI=gtnr$(+ z=OuU7%fH==_Jv;AH+6x2cK+%#2JOPPZw+*M9J`Wlu8Vd0@u-Jk4sXM39d3dCFB3do zu3J+4JmW*pU3DJDOx3-+Z=Xn?xbbzISA}}enR^?aHi+$bpFVHp{@tI?S(~3;*thKc zt?kX kcYfmEZ8@1;<#lFLPd6D|DUIa(t^6>- zF3+O5;nwmjmkH;?N_Rh;?|pHNvqX@^s_M&gKAYQZ{=RlOXp}!wZ^A++gMh{V|C|2( zC4c {Ri9)vUip7>>9GT%^HSm`c53}uz2FARg}1Z!KK0(2DIc>r?QG*k zH6NS$%f8l&Cf+F7r)K(T{^kGEjTtvE9w?|@xj9?E^h?_cz1zx{{+(94{BQG*`*Sx2 zE;iPWS~c kF-L=Y6M3`ZYKw%q`Np>X*0Y)1|4|*Luv( z9e>)M%@eyN>UKq0)$i$+%nhMSR;51Km&Fh;qodZ6dAAAgj2 aYQW%tOmGzt86vJ-_Pq{`XJogR?p6cUf(BzkG@LNYnnEm9cFR=httVx%hwOUdyNU z>mQ$}7yNjB?SxnN4HIWoWQU%Q>WB|}G;>$pj<`s)MA~;gc5`vQuYR z%_-7;W_a@B=}k;?R2#h6kCg7$2)~%hZ@1AX_AA%_yXyV6ai>{48h`K1*8BA*)7$Sa ztNVfH^JC>cX1O>mUHQLqY3Mb |whkqWXPf72B%kCaIzUzKnl( zc>Jxq hD3hW|1Zg8-D0t{=50XdEc{43irK@9d@qxzu|24 z2@VGp9)@|E;z6I*6n|*WO7&lDXleCx&y5{5FJm_!Iv=+ )ojs9{bGTgX-`Sa(^cHa)pPVA~o5B7h0{7}00w%4a3 zt6rp~FDag9JF`Elf3lz5rq0y9ALoztK3c8y=k&xATmFBt?fyR}>(1kXpi7b>tM|sq zADwgX;o^UmLemy!`S!Y+DNohu$}QS_byrbKMSPy?!F3<@?XbW8DJ;AEGu!5bX(u~4 zBE=5&gkS4)4z7+ dU}ZfBx3qBkO~Hg!3}&(mmgPmSNKzr(IcUUw`<; zY`34h_j{hd@%0;G6K~A;onQZMwy*w~P3zXZn=?B(KPJTgB|m7P+LjyAM};Gnev*Ip z=I~ULz<&EVwe8mLALeYgT0gbZ(Qdw_wZr e^LZRjd3KxbOSje{7GiztOJ6ckl0d^85a8zIp!b zpFNN4LrFyjMocFd42=A4aKm~>+Du`G{@?j>uU_K0$9( =#k{Te*M5=z{iJ_u%;E3dU%%>~;9+>S;(w9M63K+$>)u|G?+(n(2{(LOZ;?Df zJ6^NlQsklp#a)rT|H7xAWoxL4?kEcq-r3yy Z6Pw zYwXLO{?+_f3kx=`VtjDq!sF{HUr#*XVKD05FSK%f*S9@yE|?nKVar_kC%bb+`~!{a zyjywM8kCJ+o_Un+?d^S8cV_MUrzZdZeVJFevr$j+*Xpx53=eWI@hJE*?94H}Da(9h zedK&Mx!wIiZ#XyqK2cD0GCM`{S-#TQ;83MM#lJGRu8I1adra_m(U^N$dUesspv7U! z_D?suIOC$cSGMWab$_y#O?C?0ZsD+c?d6_;`GL_>FXc2!UD|s!Y47G!@qhN;jGU~0 zIO+S7vk7{(v;DWe<$bdMGne4rqJ~2j2c9t)E?6V*^~xrOU(>!G^ ZC11Qhjc3BUP7z c1y(|F5uzt%*>4_2ofz;* K&BO2gdai%UFJnb7o$map9BDtPu1)& 3CaHR zvo~pkf2_K@W^0U)SKr%;Q$ZhJsM~+~kRAJ1{QX6nwrkfHS8mH+B)mMk ulW2-#wqFUH@Ey-wLpLR+H1U~if5KJEc9V|mYb%`FyH-bQ;-3} zjakbtZ`PMJxwJq3GSlbjFSf;0+})pluO_a#x;k&i&Mx$o4eg-m@xzZ>_rjXSKEeU@ zZ_+M4_rD(ZNm1-yvxxQl#fGWDz6?5Vic8eCyC~^Rv%D4GdnaUJ;o8UT>GjJVDPLL2 z*pMByJuKArpd`Z&t1CJT>r&!o1fFL2P;DxF;F|4jjp^?eu6ogzbj4npA>zyQi~lF_ zr!!7Cv|sA)`9uE}=rDM_`mYop&V2QHcvKCHq za;^FntTpF~QvP1AZ+mB-ycRh_qP_fN>i2hLf~L#Xnp^wL_PMG)Cnsg~vET)XlMIA5 z9Bk-i&XM?FW-?8JImL{T>w93@_pnEk7+yC2 h #lo_eBPdyV~-x>sBIOa1Qo zFShCmH4U5}R%@TmT5&||$KF{>A2og}t2Ie!ud@C=dw=~q%i@QN6Ayn+{KtIueNoVi zJy+(Q7CFmsxnxo6a @EPLx I}>bY3wjDhfaY5_6KbD)Vvg3ek3mcVMo1azsT38R${*+zdTp-W!R(B%kXMr z%r8+;iY zZM}b6-&@pJvEP89;BiO2 hu~xW;eR_RgTtvrlGN%svqx{KobbSHS*arPBYo z%&p(wsp^UfG1ceiFVi@|eq6q&o@Lf2w#iYm9ly au7S*)Tn9HYeNXWu`M{x}~j} z`1;3G<&UQA>t{@|pZ8g^?@EK%Nzs3;eex>tI-ZKLi#^=yVt+WSeA(d3ysofp)%+VS z+c?!Hlwaaew)kxu_4rAY&@qPTw)t5J$_GxLpLlO)aE*Uf?a%kzx;M3rlsdxHgd13< zc4j^K#w)VZ)7Zgc-r@!4{S2SiD9g?GbtijP{n4e`*VjCh?O%T4^~4&sQ&VkM8MCeX z;A;Lf|FGbyMG--KsVdEzZ=_pnjFnw)8Qt(EPvyGu@hXesJf)tS?C)Mw*~C;Ztt+&T z^ZUt949TT&pEiFvbx!wue$OrO ?}TLMhVsLgqqe$jdGf^7 zB=KBG@~frOGaFyMN?O_AIMY?7VD*dod&gdPn;S$|RiBy3bmWMp@{7~^+Jyg9+DBS7 z{PtJ#$j(_LzWw-@7thac`gtzaE3?1fX7ckFw>7IzhTi}2YOw*sp0n(Xe9VvmEC|_X z1lr$l1=O2h6kuq4Jf*>Mt?_?@pPcTm9;ZEw@A^0AQhe{X?T3z;&f2;2&(Dw(PiJke zw}0y!w)S_~x_3>Wrm^-%cY95iJJrAW^=54;KQ4c1WsO#5B$I wzTu?G2YBd;UHD zzNhZ?w(BR|nN=kjuAHb}y`ui!IW>mWC;lg#^G>XG>iB!NPT%yHkciKbuGdQ#7X ZDSI0kR zZgRampUT 0_VV+$TAxhh2{2g}_{+U|<>Jkcr%pa+|8>dZS8jXGc8AWF z1$UD^7u)`S*;8_Ev-)>FudnOpHMypV&0fmskQco8|4oJmdMQu0v+``ZdgiSAugx#~ zU1}F@xG1b{HRDUxuX*MtcK&-hX?4QF`K)zf-&enCdcyIfH(-|a|GUc5nuT4&r0S;X z8fV&px*XgViyP$lM2)#us2gM*d;a@{y+YhiTmA0qb7#A#F>#f4=iX_basRiuu=JfD z)xKxzoIB&ZzJCo|w|{?zPyjDe4&RI&8Ag_A^SybE)1 iMM_x`^4v;FNA_lmzQZV0xY-}--I$CDztUX`W$LQU#-o~SOZJN0-C%g={Atj@iw z@0hJ#!;t@ZV^GnIUw02Y59?(pubx$Z``R_NnBL^vxNY0E{nER;J@xyxfMtqd29qpu z^Db%lX3m}+Q`L1t;=pSQC;QABT{jtzy}#j7oWpi@@1OTQ%UC~e{dM`g;IoC3gfu$$ zEIhSoWs=Q%1=bqVMfFS68Yg+aJn=pB4}-|PXbC}!U;k%*i+>#~|C2qs>XYRoj`LfL zd;G$`&7NNKzxw{lBmY_Zj?}ozqcmF!K+`z|Yfe1g0~Idd;ap+A>eP#Ko_@ze&%WG# zZrb5VN&77i+0WV>IMp`({Y=(+vEPv^Gz9-zR!u%Cmgl9i{LO4uiQli!U%b|Mr~ldi z^TzQjkI4U3SqxgyXmwI}$9D5cnm>1+d|Ed73|GRwsZm;viL;$k7y`T*R{Wl6%oyRz zUVN)w@aKB<73)@YTFLSi9e?c7`l9}x+1YUK+iE8Dzq|SEif%{ze)vbCE~em>pumLr z53gMdd%j)iwS2C}-ZHyx8>c_vvxE2?y1rMrD2u<|@h-|}h5s8}U&c**Rnr#lv^)`g z-rf0g)lR<@mW047V&W_R@BC<%cgK7>Ljv=GMW6j+ZNh@R`yYt$?(Y62lb4y9`D>Bx z$GyuwOj~`IdA5mI|7A(}opUOa-FAkp<7p82JJ&RBk*9Y{!nym>dsi+H^yCRBN#B0$ z{^t329`a4xb>Hj7_Vme9iYvO7n|1#yV*VbR)B0XM(yigT_r&`zH91}#a(E!tF0nGC zFmlO>b16rxZdUC7;_z^H@6r1H>6>DAv(03B@?Cy5Q%Z8N!#|nCt|b;qW=dxmtH0gs zn#nAr?z7Y(K>R7otYhq^pIBFD$u7)!KKqE;o{$pho6c-cvrI2Bf7UP-P+P7XQ)InE zrNJcj1KU*&1zxEbBL$;>Igghf*pqK3^XjkQ@`UwA-akxKe=B&y@$b4PA^(?u-~a6? zc>UNL-iy}V8$MYsTXs 7ogV9B!j@tI|er8|^O zEqJCEE{N%DdYCuaQuzR*Zo&Qjxo7PIjhTABNqzkDbJx11OJ51c-Y(1GNtKS-*5v4S z{=e ^IOEd1+D0$#zK|oY-x8(_6T~UMOVT*TOR=@ZsHD0Cuvq_Qfyud6r4|SI- zdow;ohWo7$7q$)DHQ$7JiZRC&ABFB7rX(iuO&lVN{>Q(&)O(?l+w}X)_owZ-U)PAN z_$IwFvwMDQ(e2#lGV9MTcxWe&wyi0DIs*?w{&bl>XgS{)=ypKn;k8SbgfdQ+#h%QZ z`+93*WsRj#QqZyw+l78dUI<_nQ~cLI+oq#UAZAD5ktHinuJHQ(`M-C4X9Z-~IWn_p ztIYYs@xOnqZ47u(Hj}YIzx8PS*S)iN9rlKpG40t_t$x#Z?-haDo)3E*9hbXhu`%ql zPiIOvI6wIR>8FklVtB8--!w5?@L-6rL+;-iuk&*XRF{{pGnu#e&Euwra%zk}58K*@ z|1 *t=#4xJfC1pmk!d84!B(m9DG^FOvey19d|>Y~q+^@61rLyIpeY!;M% zxn9#Padx}xSs}^mHSrP*? -%=>kA`ZvC8QQ7%AtnZh d#*^#-C+4jo+Pp3^be+vkyKj3{tjqz-m z$BXCtmVVH8t)Drw&HMZY!CvpvBKxOv1^)YU_waqwpcm7X_Df_t-qF7o@ws}n^|{{# z+9@@G<%yFW+FaK;J!7c-zU|MmCP6<_rVm+W%o_w7*0;y+OjS1Q`qs)W$@J!N+J!kg zC-=VjF*9Vf?1dcRWfN;3M|tJfbj=7~wr`fv%^EhAbC(W0+IN#h0aO<)FsuIR6e#xK z=&EPy!PER58wE3uHwU`S{k(SV+Tgqk%G=NT gw|mpi#=lPk$O;c`ke#c_Em? z0}sIl#s?k~UF@M{d%!`KEAqQSAMRgxOS`2$PiIlVuEev!p?icR@1ECgIT5e6>b}mm z(;VKSol?0cUvGUSWyJPt zmcMYK_!WD`x$<|@*c!eUF8M5R
P6^AdGtP$lfADh=*Ltx(-GYC^nD)mk=lb1sAdNG0*~PH ?YpvmKx=5u#hf%?f|Kl7D#so9Q9k#)mmYEYzupP+U zQF-6%mtLLw OV zeet{bQ)L}YSymj6jJ@RXYwIbggm>i{$qjqrKJRGTWv{Gjop5yaZ{Hp1LH+NKl&*42 zH96<|vnO_2&doR7+uq;VW;*-4)}wOE&P$m=rx{Z$KHYz&R;SwDKBwy6Zyzb98yX7U zEFY?7%6{DQU?FTRz=GwwCks`ZUEHE`v5C`cR?)}OV^dU@2i#qvcJ`W0?3X|j=8oBs z9k;?S{}WfwS1h`pBeg+G&>&=4!=aB+zRD+G{C_Z$`^38PV3pTO^H*E_Uo+qC@(q*E zXS&z_Iu acz$cwAS86SQ;zvfPvbG(M*_f#Lsy6Ne{FtTDe+;QTgp z AH)xBZ#?`p9L=yV*-Qt{2J7VO*ej?YI8Qf}rlK%D}i~|DUJs z^ox`0{@>WtA@b77!CL9JhJ^frRafj3f305m|EZzm+G$Kz^o _5H>g(*Ohc+_VOG#V`R8XkjlAoD5^W)(o@z+^{ zX3sjaa`VqEbJoqDBV}n}bSG_s^Ys^No2A~~pP^d&XyFUDd*(^!r5RIJU+nzFzjx~% zuFrP&B$r=&V_m1r!(hMjec$F(ua}D(60Vf4v{Qb!_b u6K80dp^y7WPU y@`YZUp?zPtO?$FSe4o+lmDm9m{8 zsc^-&>iM}x-*wV;ALLl)WO$_gY(D7l>7U3tu656o4zWzUShQp*yT+__OXuxl{1|z% z_7zvx+^?F+ud1JQ{9PSa=O+DsyS3)dQe(+rafzG<557M8^1tXrnsUSJR~nX|b&~(@ zIC}oy^J{D8Kl8Y=QRB$W%YXNq?|R=J^Q+_X-{_?`#kVh+Flqms1^M&XoLzUW{>y8A z^;E9>DV_y=Tjw+`xMTP9SlYe%C27o-{}yhN;MvZf|NM1FxbA|zRd4(2Ud*bLwm Y<_Covh&sI% 2jZ+`u$P%c`!J@JoC-z)#G zWnCWiGoyCT2%G&{wRp<@DD%iqnoEMG<+Hnf(N5YQ (=wN?}|Uy3)B|ob}}|x{%38v>2;h^^qehI+>UMG@0jv-j#O>JeZE^iF4ZM{ zj58Da^|ZRQa>d(UF3mY}XBlv^9DhE&dilBKN6YQHco>#tYP=86&R+eQyE8UEm!l&8 zdrrMy^2hm${~i6TJGnn3{Ql|Gt=4^io*&D6_WkRv%=&)C9_gC@7N_PbUykhfma)sA zAw|Y4Q6ymY-Ff|g%AXiL3hnxD^mM $_(po%=eN>chdsfL`d}f|2VmD!7?DY8LD|_DuRo&nD{xaLY_uE5i@86$XdnhH4 z&%yWa`9=GG_!&-R6!?D2vRCG7aPO9UuF{*$yT9G|>R;^Hu?_p zKb|$!_P`$Bd8h9ze|gb3g_EV&jdki=9qtb$e;=i8iaDBLxbj4yUFBO<@h|T<><>yZ zWSK6CP*k4sgXdM7z@MwBVt-A&xP=+a@`E*7K(e7FcOcKFuY}V7}AuTxMOWal`85 z)oJ(dYkINjM5Zi%8D2AWj`6d=f>T$V(;7l1X-qU{j5hmf8R7TCd^Y %#^@L6Er+mSZqnb~O&i?59a;xS0|BsXA|9x`E>-X(tHUc@Q6UL`NyMLeFSMCu2 zRTd5mEN(6bbp8};y{j+zq8Hv;f4c8f$KO5cEvN3E`Xc}4@||IuETw{L^UFKr6(;Zh ztNQnC@7wG1OTRDPzh;Sisr;^&&$b>c`Q^MWCC24<@t6HMISdbq7&d(@)19ht_^s&c z!`0s}ou0^-$dFJt- i(xkkL^o0 zRs53m^UF~kg^eHPr@cQlGd#$|TjcIPDc3K5?!2pfabAhJq340T-mQ33_75Ll{d=`( z`>L5~|DT<|#840w9UZNBW!IzS#{#7n> Lq9R2I}{R{WI z>&(9V|FhL<9|oOY#V=VScO`yeX+Cyc@=2+r)0^khdY?aMG>^;A15F#%{9IArS9AVG z?UTarV5i~<`WGCI`k2mnW*?!g^e^_RY5Ok2<)7vI=0$Fp{(H6QTGk0pS~)w Z>h=*O$t#y0$lRg1(>nGQiD;Yl5dR)<2C_D4P+W(pPzZCzk z4fd?ppY~Y$_>T*pmU{o*wzo3glZ`>_`{vd)+A<&GJ${}~W0=Y5Foo;E^ZaXJI;;wt z7*3>n>3RQ|ck|ZQJv-Lzn|?Zn?LqE6UjOVIwi&gzlxFSCSQz+yA@`OCOFWOP{Iyfm zn{|q@S0`t<#r~_tL3#daE0&ir+Wx=t+3mx7`=y1y{#R5j$Y2mCzI@H2>J9Iv`S+6k zxaX%RrOQjcJwK=DGs9~~a03b2k$7+yv_F5hugr5;H(A-|z?@g{T>pbN#hO>8>10j1 z_~%t-q(h)|w`SCT#*JOdT31c}?eTL7pO)FI^!xPExM}trpZZ(V4jz$K@KV><^Xc}N z?JoP;YE}QNxP9x^tKB!A{)~0r@!whJ-Rz@v`&8nVPh)%_#NcSF?ZYrPwtD5}a{bC* z I_n;=gRA+84IMOon^M*cx7~43-D)q%Ue&F0rdx zn&nDHt=*rw9Dn{qa V*G6niDv0XbZg@?(up^7XV*BUw z`esMWGC8M*nJ@$>ax>I^n6J5~Tz&7i!__NpyDFL5xW8-X&$x1X_QGGkoYfdC^@`OP zW(qn?V>X!0_G9mx$-E4{<^ST|-`M~B IKhJ5enST4~- YKHV@n?Iz8Qy$9zjW0{<5q_g zYz%q%H)`)c*>a~zRq(hre_6gvC;N%OSI&Q}n~q-JoILw~^XADLEOcL=>vwsvUFiB* zRpu++7BPl(J6_bkyREgf-g07W-%*)B{da4V*fwafC!`uly!$rec>YvYhrat~*50Yo zo>z0;BA7Xy`G&kj<=yVkv+)me7^cPvIh;HEeBI6$pYz{Z{pdco!!dICW{Hpb>#weS zy-3I5-{)sSN%qVCPnTo}`lu7iYV*V>=n&6=-tP~?lzxaCv94IkWKqqK&XX{i!8}s! zz|1#GclG(rN;b|2^ImQE)^_ujTR+tWSzmk2TkM?19^lRD;q376>(q#?8-H$=zxvGI ztGlB qJOTI{8K$VA@E<( zQ;)?8YcJ`4-gwYzV%?Vq{{J&iPcOP`SD~}GVabKU!@TBK;&QkD?>+SJWzZAzbcPMH z=HxJOSj@e$KbiflM@eAv7hkXR&X{(lZC!!?YiySPe;)Ss%<_zBzDxd>|6uR@f3L!A z3ZsB31J|<#&TkC9Ic4|23lfg@FL(bw(J lPjgiMq3={n$^_Ti4$&75^`^_?QXzcfU=g z)7V~qwlZVi5ZMqs?{jtD(?$QT1~Ki4|GWOb8V^Hy-LFU7ZUx@Q-spYWdF*?}$pin~ zYd*%N9AVQCetmt*6NaC=z6We`)0bih5y+Bk$gO=jDdWFpU2_g&bHt73YOQH;&rTGJ z&40RD>hJkS_S@I^E1!L*I_c5=%i2f&&sp7d=c}-*r_}8$mQUtXIsL0%bRi@$p6i2K z`SKgH9*X>t$(?h`{qVD0)+_X1sw!Ve&$zg6Qnk$co2D=3{g(Q)l=aX_7S^BE-Oq2c z?00*-jEnJ3 y&1;4~i#CsTw{_ej&ZLvY6>k@nJKZkf0?Cf63a6{o>Dx*t%nR{j@gRj06Lxp|bD#Zg8 zpCfZ0HTYeYGL5RZr|R}uGCk|xv&<(__JJv{v?}{f8mWhwuSh7Hbn$=a{rFW^&sZb| zeA#bfGWmt-`6=Hoy}SATKbv%))>pf}WzXf0aUrb;WnlXGU;6^I7Gq#>lV$vReB-of z(LTQ}Y~uf*D|G{ XmCQna*Z;vaxlAZ{M6Zx%rE0_ukwszCNb-?Zz&PDbI5=Gc%*!eYRaL#qgtO31`D; zrW0z$EFOy)(%Eio%jV`i@_VJ?w#_PU_v q1|OVq5K)r&URDhB;uo%uiY ziaqy#nZM_Kr!hQ8)ng9GU%!0W%YR+k3k{;|Vh%5Tr2prk&7v3K|7y%kOjv?fPWj%{ zkS-*D`^Nt5*PuJVg05`8z1R0$jL!~xnJF2QGWYMjxu+vDFGwKCu=e|u)jjp6D_7mR zb&JpUP%=mK+QK~w8=rri^+wItEql|mCk59o_DP0I>f8NTV77eS +%S}J|{mxFtzH*IFxz}Udcq?0#GdcAyxp6Pj?b2mKFIA-j8mjCPDym|BI zf8EG`uV&3W&Ep@gb)3kxthZz;{j=kycElg?^Am3{SPCn8ec7}0XOic{fAP!yiJ!N6 zzVPKzw?FzhmpT{!<;|b)>+8Qsrypw+uU_W%_w_uEo0AwPew%;!wm2_?%*S^t)feZn z?L6iy#%6ZBbNR$;7J)9;mS2`Ur5Ze?=CkP~<-a0byLvs&*S+dZF)@q#`tPNk*Y{`7 z15fywBnY(5aoIZakM?$-*x O3uN%E;JY#YN19=RATJFgxdx}oBp&}XM|_QFVp z+V5swZ!71T_>0~=6q}Orcu8uCS)=nzh8@D}?gGEJJkp-c7;)kD^m$r73`uMJ_hrpE z%^2bO|MR{a1_PU`DJFV4Cm9r;btExK=+2jS{geNrYTfIDo)f2^3p-lBZ=GY4m1Of7 z#>1)X8rx&%{(rjY%i3%FT{o`Rx;D-~`g_h=1NoFw|F;KUII?o00sjU;hwq(syuLGM zyWNXO%6pdm^zGA4oGWV1{+)8VOyRrnY@L+&r#ymf^?JDrpGAw`+x#uw(%DtD>-Z|h z0~fcxj!x7K5c&5vrDH|?%wO?OkESxDBr7*m)Sc}3?=;1Jz3|1qt+|&p6t1hwwi{J& zUT&Bq>mbE?BjkV@Q*jx?`ER}|-mE_RA3Q#`qt%#wI+urwSN_I7_YX)f2zSzZd^URj zimNX3)cebuZk(U|Qf2w}IGxik>J6vw5IL}OepTAZ-0gFXqvjb;lNVWodL#jt5(BdX z>s=lmRu)KJ=4*Ed{9*s{j6Qec!n8dWF #ipW*e^>p; z_hYoWbM%I+(xQ&p`|{P_{`1}a@l^8nENR=vnJ0TBZTCx>zkYLdb@={5ojQ&X9tPue zg*&!wzK|cv)X>Y2*}D4Yr0wr-`Mr!_4|Of?;9)rE V3a= zJS{K_>-p!OVYlk~) 3#^YSi*RPQMN12?HRQa{>wU!DowVQQxBk)k&>! ~b6`%*QtRxf-)I-1t@POWSjFQ9+ON0V z&9`x7Kg3r0MaHPhBk;a;YNN%m71;vP(r>+fai%hD_IOup*;5e}_?`Q9 ?sKUS1fAnA*rjriLv9~&&8AUdHu_ND;{o4 zYiSK^xH)tG@-r9z9iFN*p;>ZONW)dTr>6vGY!)o=Y~XwU<@f%1dH<@<$%SUtGoSqU z=hLCh;V&m%NdJBLT@ojQ*uT()@p}t{zLZ;*biMrM=w!eCc@RSm*NK}kO4 mfQQ{$(( ^;&@s3~QPdxd(;# !_XC zwO`GA!-V&ZK1cPHzeV;uo^r=YXQM{HZmXc?i_I1Kv$a0WzTW*^=adEi)m77eSM%_@ z?lHF7_r&h!98i%I$=Ng~>TyNjv$OFTC+9jnncjP|VAcQa_k6gS8*YU#H^iJz+TZi! zS*gs~vlFj9omRO!=W({lt3tt_F=bXe3z>ZP{XF;h8iT@fw(kGM#UJZeZv399^Uqk@ zjA04?JF%Dlmohqt{;&Lbey(THn{yXEKg(VTnC^db{-R4Fzp`R0cb<9q)Y5csj?7J`Q3)4Ix^D}RrCVBY=vaOclE+kGaV zZJMrCGIRd&S7xTOrhR|>B0}u`6Qkw#^|*4pxbki;&oY=GxOI>3wL8yvnCApGoMoKj zneb^+@C#dRe={cD$t&s>g|9y4;`&oA@8)(h0o5wcG 7==-;qoIg}df|wb(3S z$Fc2 ?3y#FEN33sz0Xf&F<4(5pj-MoE&r$canAWEpEFed%Bmdy^a8Z3_~5&D z-McqudP&(eHXW@uW4w~(qWDk3+UCi5HJ31kygj|%%o|Reua}qhv(KD4LxXq1{_sl2 z_}(|-%T&ca`6lg8$UH57{Jh&KHO=Q-V)N54xhU+?O%Y9)+*tGM?b&BXn%mAY{CP9W z@U9#8z3Pn@w &+Ye|gKg%txo-!%2N?j1mleY@uH` zq0Myni4LG4_Tb&|b%h^8ug|^m;hwSS;@yi~{!F*$n8xupjOl;C#otda{aUTG?+5F~ zfGhg~^0!pn47 daks zHh+&_+$(kWqWqIR2@mJH*8Ba{_hmRLo1(_x_x63hgvd|*@5Nus0!~f;&p0#MdFt}# z2RV!H?asQoN_Og(!{2ZJ)!_NQ_?Aa~z~q-dig(65XpTExF|#Y4>-V#gKRR!$FWV|5 z#pi~Z_N10rzfV{FAl@I|QWK}%8Yt#!={2Q(O?sf-rF3!4)3aX}hrHKc5@;@a`uOG_ z66>QJ;=k^Fe<%LWBXR%zx99V(u3ja@Fij=?Z|lUjI&S~F-CYkdY$$Y}q-V8r%Jp@7 zrT%_=x<_Lr*MFl&{~hY%?o450`1 #k;aF6Z{oR6nJ5obkWk--1d1*&pa1bGR%L#AK+oZNAn%{-eUb zmMxrMv>{pc?YX|7`duEa3l??-39nMi54~~fg#PJU=|Z!4e@rrt-chJww?Fo0LCXKWlZDn4L5AFsumslC#`p zL!?i`?&_efYrCgT;+!h9&~U+h;jAS=%kJ+uE;DVT-r6M^6Xb%0SA71hxr9IHM!fIW z-ndn>&0^o^PiFcO)AXe$v6hirJodCy7K2$RgSs@!Me#6a1!u{FoHy2&@bbB6J@_`a zgOT~+_xxYe4>W1N-}QRk_Wr3q=RHpnU?}5xv%f;+{pN;xHHH&m3~M+hgflaBglpt8 z{ChU%_!1TE!|@k&iu5~}Ht{yhxGyt>VZuXw4~A!DmG&ARoZVq-0jxPsDT#Z0W1O+S zYjLL6(ejDQSGP|y(KLCy<#Xn}-_L?dZmPfR+}>95*Z!Xy=XSkik38lqGVC?-+AC2$ z=P&<-`6n43%`!W;Y;W zbAj>$w*$Qm(v0Rzc`SV?EHO+6CiZNr)&X(vaO@B)P%hw5+EDZJQ$cL(-B~lW_uD_; zbi2-R !lMv-d~V4 zMRD$)5WQ0C@ZP|>u+xDPw@h!`yz=0S+MO<8j0^Y^ qh6-)MjHpXaKxW_`!565sVH=M_@|B{xi`x7z@OI&%F7@=t8{bKKsc^+$qcoryTzOo8qUlTyAAx zX69zMP{Fwsdv7h~xc_UL*xa u_|8{Ru&gKSA~P2Xqvq|v(W$BCP$h6&s1pGHL #CX`gBb#;{|c9Y5%wKJP2ock{X}Qw(H40 zV~w^_o$9myZatd!y@J&;ea@O~$Fn^%j9=uxU%$tG+T6bLr91p{OdE8fw+UG!9&^fC z&wJ_4OYRjLSB9<6?9|vdlY7O6?8yvY11H>!=i1hp>c7qTNKI+H_1|w_ufNz`{=Y-$ zb=bszhyFG(B!uTrcs#LNZ{-SxhN=L@fUMV3Dr!C)z5V^|?kDedzxR{V{yv%KU%kie z+WL%&(3wxWY+uJ8ImNPc?lko(hEt#ZtqAx0ch666gF}I?i)(-Xls_DmrmbD8{N{c8 ztfShq@LcV$g!c`XWWNVz{@3eDH~DnMm34>w=T%cQvP?ovr_7nO>fw92t3`dMz4ZJ- z_kGxro57s>b=suVBMp{ a?{2hV#qaq^=`nT3Wy}A3jF4Px@jQM`>7~bq
o0~7HU}F6y&Ve$8q8*tOz;+8sg+@q-pbl2B=A{9dydKbTMie0st4v4EB~y%#_6ps z;1|H~uQ*Ytp@whkzQCyM4~qTce@&K;HMnT|BClAvKtoyKe_gD@-1`@Uj@7hJ`o68> zzciQJ t1lTm&sx8XsFQf!7~JW~CU&-}m3T{@(IGNB!j$>Tmlj>iJpM zsQO2{@k>YV !>V^8#eQm z>gKcl64#7zV>lu5_sSd1fZ*iEi^c!_`sm&F<>{1zECLK{lUZ9EYrn9bp7Zy;3!8(i z0K) cS^jOcck|i`$Kwn3*=ldl zDG+A(!z1)Cb(?B@{DqYdO#P0BUvW8Rx5+Gcu@)~+?@AV*e8X+M%S3LOtq54;zfh`I z jy*xAIu1X~9hmWFnPpvx7o_2}* z?R=Xwqo);ja`$|?BY(y}e-9@MgP`%{Qw$pml^8OzdbaUyxumyto|1F*8t 8 fAAV2ewkB~$;qe1=5OaBA)1FbGO zDKE7AwIIkhyDI3^thcjW+Uz&|K3W?sx@=d&s^!6wM?F`~x~)I?`Sa&Jo@K(3tA!Na zZ|Rq4pRn0%bGq(@dGnivHaf8VJzA&6$#A-9fr9MxrCV N@khgQcaWT-jAxb#+_2=--XjI!X>E0U|67 z^%Xx&t9~tv4|>?E&OeJm;5&;Zn`QnT|4B>?` Vod-1x{waQVwLW{a2r~WcvC0etZo+d;Of3JP}cRe?Cj1d9LiQc`e~DU%U`oa^U5| zDCKYSvKX%{KA~XG{Cjb0Nu+F?`~sGz8g4h%v1f6<{@7_2utARX^^ N6gO~Ywm3|n`s*v%)`pg_D%8gc`t@f>aP-{nLj_8H8Gyy{mL50 zHQQIu?D)BMhA_kb9X@r%>!xsqZt7}?KOeYnMc-z=grJ5}oyj@}if8-Gagv?DC|2p^ z_4`2FW1HH$OWMV|Qq>p_FgfUX{&}bW?ZSi3@C&CBHVD3ocdybb?EikR?*RAqn)ma9 zuiq^d)mgLSf%%&juJ}o}IKQ2&ST0a`Xo_BI>3;Y3iHjJv8Ad9sbKA!IbG7hGkGFm5 zZkJBR=!y5cE&idtZ$r{iF82BRK3-oc Whg|QpD}Qr)`TV!CLFfNm``#1WAk^^n+M#g1E4Nes zN_sr}#q;L$!Gz5JCnqp3*>&Ov`-l1OZ@5Ow@AAL@Y4v?=>D$qsxp6LrMw{+V{Fu-F z?`O47IEUHQ }SFCf@s%(w@` l?~k_KE@HWMQ*~C~-~Hn9dr2mS`1b5| zJJZhD`_JEamGh7Loi{8D0;*l6Qiad{|31H-=b!aNhKOJCMgLFoT%0w>YxZ9Cfc#_r zo_C$AVh``oss9m?z9-PRD4uDV#o En9zT_A9a- zbr5-Q=KrR*mo`?s+t`;a#G0boXk?#jXMekJ?ynBB)FQ@xhs_c+mTOM9b1tu<^^&Pp z?Tfbm7iK-v4NO|g8*=%sZ)o i(tNdvD$Jh_6px>&OuCU#n4}z(9;)5x*d_ zjGN=P`lKZpk&F#28 mfMA+WB&Q@EXzkc%f z`78ONR2r({C$e!bOBEJ;_`BhjMhD{^vB~ToWKS_EFo#U%nH0TbXJeXA=Zn& EWgxOR%Q!)_HCbY;J+6a*Qc+OZyzwSFaJ?>Ql(+>*Evsq zGe5bz|JK*#>5dF1ULE_&a)V!pA^mUkrT;Us1NJyhY&~CkQ|JKGci*Y{4Bs`+DnH|u z{4;&?pH{CKOV%U_Hu^G6nf!?J)rl}h1*V1ug }T1qb@CsupUimZrsJ#mWpa0K+x$-6e!uSbWcSyzZXTcd`|n=C#@zBhC8xLCudSUY zX0xK@Z{fj>97oKSN*Z3*Vyo=pp2GSi!FDQ_$--3(BCIN#4qQm-WU86NEXWqK=|FXI z&+hb>uujVRvm86P7~Y?K{che?NT=lv#~yBF1!imcPLrHgriT67I@#hXqjtVfe*SW^ z{r^f=|6`qRB!7K7Q}grA+-)as{x$M+P-9-e%U;Cb{kK0S#`*WVzmk7HP7Kfdzebbk z2m6f3wa-^Ntlad%_{I78JDnPt?Bq9c9hkJUxUTTidHEf`JeqiFbW)msnCI{EV*8aU z#Nekg|1@WkgMZ-S73bYgIvxD+=I!Eh2Xn7X@ei=FPhkB2X_F|2$N%T-Eg@Q){?BB% zAhJg5^dI?)d#8yqcrdIHXn4Bs*o*D^zRY&tU%5bh8T+Yg?(_N7lI5p~$n~pFIQ`T~ z+@(2~@y+s@(68!G*wU-M#>5_3y!F?olWhI!SEMwSW?is5P+M~<@^_NQ%(#PlbRH$A zy^-!-CbMqlL}l-`Xb0zmCssUf;;C+U#&CaPYJU^Y$IP#)jQf}$MBYwj_%`9e^<^(i zw#TWb7^ru%CGacAvnKqzlIeC@fu|(@Ls#y`wD}4Q4 UDO% z8@Dxv{}-#fcI@TLM^caO%)9+m(4{N*mMP $hE3*)E>Rz_6tG>m%a}IVWZX zSJ}TTEk4!9cE2kBFK2S&u^%41-OX*GvHC5?4xC BrPvERt@cXgD^Kza1 z>5a?Io0 AvHx~|=K95@OWC}xn7!UQvnfcFH)`H@BZvHx-@F@kOn9Te>haQ*s{L7p%jO)Y z&YU~>|JD;Tt{!`%_=KmndfPq=Hs)V*zUHrDpOUNnjKxCjyt9S-O|gbfrkZ!hd>=}y zKh_nNc~iz%R9&Ncaox7hnO@S@-hVkLZ?nYwsrQwA-_ozFc^e*gd*YJyYhEo;&)YrK zCg0xm=l1#KTNoy+U!B9)VCHyg5j8nGMt?~nhzHC<|1gqrKUS5a0^a}LWfv}mubmwq`j@6z9^M^qT9WuCm>V>8jW z!FJo!q_~$>iMF>MRP(DeOwShEBmekI#+m;{mE|uV9C%&zf8935y `S2KLD za^(5YrsG-1UDMvh+`$;M@%BuH1 }B G;y=L g9_@Z9Aavsz$6L}=)r&2zt0?Y((&5-VSd?Sa~olT7T@OYi &}yTanSs^wCEWcgClrJkGQQ7SE%Ah1utD|zO(urt4W-|#nybHaGC4SB zZ9nmcUyEzwAA6(!%SAhc=J9O&Qm=4L;}GMA`Q1D}l4Z3S9sbQ<`rnc1KvjJ7)~D?J z4EOa8_y3izda>}*5_TEE*y^`i1J_@Vj@A*IZ5R7$J@<>Hl7V|~JYacaee%QOh{t=T zGrlOExar&5zf1||ZoW&seWsS-!1txIk8~$D{QN2yD!?*f=6?H$i`OyERWj9@YstLv zdPcq1a^Kl|!j9Q_e`bzJXOMER>zZ@+{1V1@%)$&4_V(qZ+lnmSGi`xM<|2LtDTQkL zDdwC1{q17-|1-vc$styRVY#9P R(Jfb<1P=J z*{fsu(|BZZ?%tih`%C}Zz4aE-GZ)5G@K^{kT*;X->0;U5^$|;7Y-HOTC%>>}$K6u_ z;Yw@`Y&)ys)% 8J#f9W-j*x2*D{Y~;)mHGWu zW!en87ct21Kl9IR(r0(+)Y3JUrx;#KvP>4`c;mvH(|m}xgRLyG{`DTkuep;1pFFmV zl$;{l{daG!8Cw8bL+F76+2@1Gt|?`GdQlR0m7`R2(U;k|w_n_w|5rUV+}?ZVbverg zObo5FGnPD5vCWDyxgpAM>~8$l(k{7>?f-6PufD&%=;^696IB>bn2F2Z{r~CxqMf{J zzvUGF{?q(kICYl%8kW6#Z7qMx teXf*TpmiWrPiL#%`q>$I8--cksIc5CkFR0hdi~t8o$@nOMWVW_!zPzs&-!%r z<&uE88!R?N%ZFI46TYE;{Hwz@9;IzU6W&$G==z+zaOU0m7Qf#=?v~&G`)pzz+lP pEW@G9HKp}Xl4KTxUm3%RJ=?`+-Z06tD-5vSc%W{6 z|Ef=mSyuD!G??hHVw1-<&D7#pLvK4%g=aC_*c_y8aP2R% 2fKd!>2DS53%#FI`F||S||g +drws?gir1X(Elv!t#Gm<#&z!+7HQ{ yO8pFz>Uar*2%o)EPG4+_CP`$<_To?^&n5;oey*{9#-A8|$h} zBgF$#wmtvHJcIqje3?%i0WvcmdoRmSnk u$EkGv>w>$3y4sOxIkz!sa?h_|&|(t!wV*@E;Jm;>5{#G=#@t|F7)ndB4KG)XM+4 zdA^Q~nek~x`qKsc)pq4CyA>FwXfn)DIJ >Ft1v7a36npimXYv%Io%Pdx z9$&tL@ho@B -qJonu_|Nmv5>nF*{U%DOlW7{OYD;%Nh)rm#z zv5XFC3=XUcVYX_D`l}f>h#r_&W%s#ontuGfe{aA1Ixc-FUuQ%5r_YwBivC1ASJ6IS z`nKr*kG`L=_s(~wBy1OQsAc; @Sx8+;z&~zsr#Z zuj`cxfByOYe=_%b=Tz 4twkWZhOeO5L;ITW`*1L*K15U6nsa= zM<5}ZL4bkf!F+uQ7smV(N>U$Xl2*2gaEV>)c&_)R`;g?nO `MvzUvNJE z%H_QJc_-wRPR&U9=QZiy%^pUL4`n}v4OgoC%uoCCdZ&))wf%0<^?ws)Ua>b)ko+>A z<4!qO_0nITo9AtppR?;lOp1og%IS?3=U(O4eg64qUF`EstPI~JZ~oW#moqCxmEq@{ z8%ztbN~Wv+w-3??H2rh-ER&GK8EZF&37h}(r$vNa-F`v2?){w*t*zQpy=JRd-72VD zxc;bSvi#dkGXGs7e>1%>Sb96MOYS$*4E6*0Cofqy{GFDwpLff)<{N%*yZ