From 1f742452a4edac679a7fb970d0713ae6e65f4ce4 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Mon, 27 Nov 2023 01:42:54 +0100 Subject: [PATCH] feat: website, landing page, etc --- common/modules/providers/tosho.js | 1 + electron/package.json | 6 +- pnpm-lock.yaml | 647 ++++++++++++++++++++++++-- web/.gitignore | 10 + web/jsconfig.json | 29 ++ web/package.json | 22 + web/src/app.d.ts | 12 + web/src/app.html | 16 + web/src/lib/components/Footer.svelte | 50 ++ web/src/lib/components/Hero.svelte | 37 ++ web/src/lib/components/Navbar.svelte | 47 ++ web/src/lib/css.css | 12 + web/src/lib/svg/AndroidSVG.svelte | 3 + web/src/lib/svg/AndroidTVSVG.svelte | 3 + web/src/lib/svg/DiscordSVG.svelte | 3 + web/src/lib/svg/GithubSVG.svelte | 3 + web/src/lib/svg/LinuxSVG.svelte | 3 + web/src/lib/svg/MacOSSVG.svelte | 3 + web/src/lib/svg/SteamOSSVG.svelte | 4 + web/src/lib/svg/WindowsSVG.svelte | 3 + web/src/routes/+layout.js | 25 + web/src/routes/+layout.svelte | 18 + web/src/routes/+page.svelte | 17 + web/src/routes/changelog/+page.svelte | 81 ++++ web/src/routes/contact/+page.svelte | 16 + web/src/routes/download/+page.svelte | 138 ++++++ web/src/routes/faq/+page.svelte | 60 +++ web/src/routes/privacy/+page.svelte | 52 +++ web/src/routes/terms/+page.svelte | 31 ++ web/static/app.png | Bin 0 -> 956351 bytes web/static/logo.ico | Bin 0 -> 108880 bytes web/static/sitemap.xml | 35 ++ web/svelte.config.js | 13 + web/tsconfig.json | 29 ++ web/vite.config.js | 13 + 35 files changed, 1407 insertions(+), 35 deletions(-) create mode 100644 web/.gitignore create mode 100644 web/jsconfig.json create mode 100644 web/package.json create mode 100644 web/src/app.d.ts create mode 100644 web/src/app.html create mode 100644 web/src/lib/components/Footer.svelte create mode 100644 web/src/lib/components/Hero.svelte create mode 100644 web/src/lib/components/Navbar.svelte create mode 100644 web/src/lib/css.css create mode 100644 web/src/lib/svg/AndroidSVG.svelte create mode 100644 web/src/lib/svg/AndroidTVSVG.svelte create mode 100644 web/src/lib/svg/DiscordSVG.svelte create mode 100644 web/src/lib/svg/GithubSVG.svelte create mode 100644 web/src/lib/svg/LinuxSVG.svelte create mode 100644 web/src/lib/svg/MacOSSVG.svelte create mode 100644 web/src/lib/svg/SteamOSSVG.svelte create mode 100644 web/src/lib/svg/WindowsSVG.svelte create mode 100644 web/src/routes/+layout.js create mode 100644 web/src/routes/+layout.svelte create mode 100644 web/src/routes/+page.svelte create mode 100644 web/src/routes/changelog/+page.svelte create mode 100644 web/src/routes/contact/+page.svelte create mode 100644 web/src/routes/download/+page.svelte create mode 100644 web/src/routes/faq/+page.svelte create mode 100644 web/src/routes/privacy/+page.svelte create mode 100644 web/src/routes/terms/+page.svelte create mode 100644 web/static/app.png create mode 100644 web/static/logo.ico create mode 100644 web/static/sitemap.xml create mode 100644 web/svelte.config.js create mode 100644 web/tsconfig.json create mode 100644 web/vite.config.js diff --git a/common/modules/providers/tosho.js b/common/modules/providers/tosho.js index 2f04a34..f432cb0 100644 --- a/common/modules/providers/tosho.js +++ b/common/modules/providers/tosho.js @@ -41,6 +41,7 @@ export default async function ({ media, episode }) { }), sleep(5000) ]) + for (const { hash, complete, downloaded, incomplete } of updated || []) { const found = mapped.find(mapped => mapped.hash === hash) found.downloads = downloaded diff --git a/electron/package.json b/electron/package.json index 37208f9..3a53cbf 100644 --- a/electron/package.json +++ b/electron/package.json @@ -21,11 +21,11 @@ "electron": "25.1.0", "electron-builder": "^24.6.4", "electron-log": "^5.0.1", - "electron-updater": "^6.1.4" + "electron-updater": "^6.1.4", + "webpack-merge": "^5.10.0" }, "dependencies": { - "utp-native": "^2.5.3", - "webpack-merge": "^5.10.0" + "utp-native": "^2.5.3" }, "standard": { "ignore": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61a3048..cd59233 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -228,9 +228,6 @@ importers: utp-native: specifier: ^2.5.3 version: 2.5.3 - webpack-merge: - specifier: ^5.10.0 - version: 5.10.0 devDependencies: '@electron/notarize': specifier: ^2.2.0 @@ -253,6 +250,33 @@ importers: electron-updater: specifier: ^6.1.4 version: 6.1.4 + webpack-merge: + specifier: ^5.10.0 + version: 5.10.0 + + web: + devDependencies: + '@sveltejs/adapter-auto': + specifier: ^2.0.0 + version: 2.0.0(@sveltejs/kit@1.27.4) + '@sveltejs/adapter-static': + specifier: ^2.0.3 + version: 2.0.3(@sveltejs/kit@1.27.4) + '@sveltejs/kit': + specifier: ^1.27.4 + version: 1.27.4(svelte@4.2.7)(vite@4.4.2) + svelte: + specifier: ^4.2.7 + version: 4.2.7 + svelte-check: + specifier: ^3.6.0 + version: 3.6.0(postcss@8.4.31)(svelte@4.2.7) + typescript: + specifier: ^5.0.0 + version: 5.3.2 + vite: + specifier: ^4.4.2 + version: 4.4.2 packages: @@ -271,7 +295,6 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 - dev: false /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} @@ -497,6 +520,204 @@ packages: - supports-color dev: true + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -534,6 +755,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} + dev: true + /@fontsource-variable/material-symbols-outlined@5.0.16: resolution: {integrity: sha512-XqGrDFJ15dNHeD4tT4imnTqrPhNb5C49hXwlfGcvcfV64BxFX0S4mq41q/34kxlObnShqKIqHwvxd9SPtG3H/g==} dev: false @@ -741,6 +967,10 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + /@polka/url@1.0.0-next.23: + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} + dev: true + /@prettier/plugin-xml@2.2.0: resolution: {integrity: sha512-UWRmygBsyj4bVXvDiqSccwT1kmsorcwQwaIy30yVh8T+Gspx4OlC0shX1y+ZuwXZvgnafmpRYKks0bAu9urJew==} dependencies: @@ -767,6 +997,87 @@ packages: engines: {node: '>=10'} dev: true + /@sveltejs/adapter-auto@2.0.0(@sveltejs/kit@1.27.4): + resolution: {integrity: sha512-b+gkHFZgD771kgV3aO4avHFd7y1zhmMYy9i6xOK7m/rwmwaRO8gnF5zBc0Rgca80B2PMU1bKNxyBTHA14OzUAQ==} + peerDependencies: + '@sveltejs/kit': ^1.0.0 + dependencies: + '@sveltejs/kit': 1.27.4(svelte@4.2.7)(vite@4.4.2) + import-meta-resolve: 2.2.2 + dev: true + + /@sveltejs/adapter-static@2.0.3(@sveltejs/kit@1.27.4): + resolution: {integrity: sha512-VUqTfXsxYGugCpMqQv1U0LIdbR3S5nBkMMDmpjGVJyM6Q2jHVMFtdWJCkeHMySc6mZxJ+0eZK3T7IgmUCDrcUQ==} + peerDependencies: + '@sveltejs/kit': ^1.5.0 + dependencies: + '@sveltejs/kit': 1.27.4(svelte@4.2.7)(vite@4.4.2) + dev: true + + /@sveltejs/kit@1.27.4(svelte@4.2.7)(vite@4.4.2): + resolution: {integrity: sha512-Vxl8Jf0C1+/8i/slsxFOnwJntCBDLueO/O6GJ0390KUnyW3Zs+4ZiIinD+cEcYnJPQQ9CRzVSr9Bn6DbmTn4Dw==} + engines: {node: ^16.14 || >=18} + hasBin: true + requiresBuild: true + peerDependencies: + svelte: ^3.54.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.7)(vite@4.4.2) + '@types/cookie': 0.5.4 + cookie: 0.5.0 + devalue: 4.3.2 + esm-env: 1.0.0 + kleur: 4.1.5 + magic-string: 0.30.5 + mrmime: 1.0.1 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 2.0.3 + svelte: 4.2.7 + tiny-glob: 0.2.9 + undici: 5.26.5 + vite: 4.4.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.7)(vite@4.4.2): + resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^2.2.0 + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.7)(vite@4.4.2) + debug: 4.3.4 + svelte: 4.2.7 + vite: 4.4.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.7)(vite@4.4.2): + resolution: {integrity: sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.7)(vite@4.4.2) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.5 + svelte: 4.2.7 + svelte-hmr: 0.15.3(svelte@4.2.7) + vite: 4.4.2 + vitefu: 0.2.5(vite@4.4.2) + transitivePeerDependencies: + - supports-color + dev: true + /@szmarczak/http-timer@4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} @@ -909,6 +1220,10 @@ packages: dependencies: '@types/node': 20.9.5 + /@types/cookie@0.5.4: + resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} + dev: true + /@types/debug@4.1.12: resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: @@ -1029,6 +1344,10 @@ packages: dev: true optional: true + /@types/pug@2.0.10: + resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + dev: true + /@types/qs@6.9.10: resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} @@ -1509,7 +1828,6 @@ packages: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 - dev: false /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -1646,7 +1964,6 @@ packages: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: dequal: 2.0.3 - dev: false /b4a@1.6.4: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} @@ -2120,7 +2437,6 @@ packages: /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - dev: false /camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} @@ -2314,7 +2630,6 @@ packages: acorn: 8.11.2 estree-walker: 3.0.3 periscopic: 3.1.0 - dev: false /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -2825,7 +3140,6 @@ packages: dependencies: mdn-data: 2.0.30 source-map-js: 1.0.2 - dev: false /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} @@ -2918,6 +3232,11 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: false + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + /default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} @@ -2979,7 +3298,6 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dev: false /des.js@1.1.0: resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} @@ -2992,6 +3310,11 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + /detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -3006,6 +3329,10 @@ packages: /detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + /devalue@4.3.2: + resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} + dev: true + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -3403,6 +3730,40 @@ packages: resolution: {integrity: sha512-uoA4aVplXI9oqUYJFBAVRwAqIN9/n9JgrTAUGX3qPbnSZVE5yY1+6/MsoN5f4xsaPO62WjPHOdtts6okMN6tNA==} dev: false + /es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true + + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -3652,6 +4013,10 @@ packages: - supports-color dev: false + /esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + dev: true + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3686,7 +4051,6 @@ packages: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.5 - dev: false /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -4225,6 +4589,10 @@ packages: dependencies: define-properties: 1.2.1 + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -4247,6 +4615,10 @@ packages: slash: 4.0.0 dev: false + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: @@ -4590,7 +4962,6 @@ packages: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: false /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} @@ -4600,6 +4971,10 @@ packages: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + /import-meta-resolve@2.2.2: + resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} + dev: true + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -4825,7 +5200,6 @@ packages: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: '@types/estree': 1.0.5 - dev: false /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -5121,7 +5495,6 @@ packages: /locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - dev: false /locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} @@ -5201,12 +5574,18 @@ packages: - supports-color dev: false + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: false /magnet-uri@7.0.5: resolution: {integrity: sha512-Ke+dDiYHK1Rq/ZyGUAgk7NIkoypivxolTj/A0qr60ypP0FjeP+NTUNEhr965HsRan0zGxKEBK73+SsjRyJWkXg==} @@ -5258,7 +5637,6 @@ packages: /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - dev: false /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} @@ -5457,6 +5835,13 @@ packages: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} dev: true + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -5467,6 +5852,16 @@ packages: engines: {node: '>=0.10.0'} dev: true + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -5487,7 +5882,6 @@ packages: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: false /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} @@ -5873,7 +6267,6 @@ packages: engines: {node: '>=6'} dependencies: callsites: 3.1.0 - dev: false /parse-asn1@5.1.6: resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} @@ -6001,7 +6394,6 @@ packages: '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 - dev: false /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -6139,7 +6531,6 @@ packages: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: false /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} @@ -6491,7 +6882,6 @@ packages: /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - dev: false /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} @@ -6528,6 +6918,13 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -6561,6 +6958,14 @@ packages: dev: true optional: true + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + /run-parallel-limit@1.1.0: resolution: {integrity: sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==} dependencies: @@ -6585,6 +6990,13 @@ packages: tslib: 2.6.2 dev: false + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + /safe-array-concat@1.0.1: resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} @@ -6610,6 +7022,15 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + /sander@0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + dependencies: + es6-promise: 3.3.1 + graceful-fs: 4.2.11 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: true + /sanitize-filename@1.6.3: resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} dependencies: @@ -6737,6 +7158,10 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + dev: true + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -6889,6 +7314,15 @@ packages: semver: 7.5.4 dev: true + /sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.23 + mrmime: 1.0.1 + totalist: 3.0.1 + dev: true + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -6939,10 +7373,19 @@ packages: smart-buffer: 4.2.0 dev: false + /sorcery@0.11.0: + resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} + hasBin: true + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + buffer-crc32: 0.2.13 + minimist: 1.2.8 + sander: 0.5.1 + dev: true + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - dev: false /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -7065,19 +7508,11 @@ packages: xtend: 4.0.2 dev: true - /streamx@2.15.1: - resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==} - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - dev: true - /streamx@2.15.5: resolution: {integrity: sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==} dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - dev: false /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -7198,6 +7633,33 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /svelte-check@3.6.0(postcss@8.4.31)(svelte@4.2.7): + resolution: {integrity: sha512-8VfqhfuRJ1sKW+o8isH2kPi0RhjXH1nNsIbCFGyoUHG+ZxVxHYRKcb+S8eaL/1tyj3VGvWYx3Y5+oCUsJgnzcw==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + chokidar: 3.5.3 + fast-glob: 3.3.2 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 4.2.7 + svelte-preprocess: 5.1.1(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2) + typescript: 5.3.2 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + /svelte-dev-helper@1.1.9: resolution: {integrity: sha512-oU+Xv7Dl4kRU2kdFjsoPLfJfnt5hUhsFUZtuzI3Ku/f2iAFZqBoEuXOqK3N9ngD4dxQOmN4OKWPHVi3NeAeAfQ==} dev: false @@ -7227,6 +7689,15 @@ packages: svelte: 4.2.7 dev: false + /svelte-hmr@0.15.3(svelte@4.2.7): + resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + dependencies: + svelte: 4.2.7 + dev: true + /svelte-keybinds@1.0.5: resolution: {integrity: sha512-uLgpqP+anTE++sjjVvtQVHzzGa2kJCzOOomLcYGKRIDESkLaQ6tIRZ7u0ktqYzUP8VadZe46ShrJLfz/4kBF2w==} dev: false @@ -7246,6 +7717,54 @@ packages: resolution: {integrity: sha512-jzYqqBuXcSH5KzoPDlYQL6CQVbpY2LQB4/wBPG4T5R75wE8Dqu4auMU6NnJxHBRhgNCGlH+XBQvxy9G6yX/XQw==} dev: false + /svelte-preprocess@5.1.1(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2): + resolution: {integrity: sha512-p/Dp4hmrBW5mrCCq29lEMFpIJT2FZsRlouxEc5qpbOmXRbaFs7clLs8oKPwD3xCFyZfv1bIhvOzpQkhMEVQdMw==} + engines: {node: '>= 14.10.0'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + dependencies: + '@types/pug': 2.0.10 + detect-indent: 6.1.0 + magic-string: 0.27.0 + postcss: 8.4.31 + sorcery: 0.11.0 + strip-indent: 3.0.0 + svelte: 4.2.7 + typescript: 5.3.2 + dev: true + /svelte-sonner@0.3.3(svelte@4.2.7): resolution: {integrity: sha512-fUPHh5X88GctOjUBXflfXWplJxErDDm2erYh3EUjMWdfYiT9SGMpAv5NGDGbmKfZ+qUKOiTFrJ2P/iahYrTvhA==} peerDependencies: @@ -7271,7 +7790,6 @@ packages: locate-character: 3.0.0 magic-string: 0.30.5 periscopic: 3.1.0 - dev: false /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} @@ -7310,7 +7828,7 @@ packages: dependencies: b4a: 1.6.4 fast-fifo: 1.3.2 - streamx: 2.15.1 + streamx: 2.15.5 dev: true /tar@6.2.0: @@ -7422,6 +7940,13 @@ packages: setimmediate: 1.0.5 dev: true + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: true + /tiny-typed-emitter@2.1.0: resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} dev: true @@ -7469,6 +7994,11 @@ packages: uint8-util: 2.2.4 dev: false + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + /touch@3.1.0: resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} hasBin: true @@ -7672,6 +8202,13 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /undici@5.26.5: + resolution: {integrity: sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.0 + dev: true + /unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} @@ -7820,6 +8357,52 @@ packages: dev: true optional: true + /vite@4.4.2: + resolution: {integrity: sha512-zUcsJN+UvdSyHhYa277UHhiJ3iq4hUBwHavOpsNUGsTgjBeoBlK8eDt+iT09pBq0h9/knhG/SPrZiM7cGmg7NA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.29.4 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitefu@0.2.5(vite@4.4.2): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 4.4.2 + dev: true + /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} diff --git a/web/.gitignore b/web/.gitignore new file mode 100644 index 0000000..6635cf5 --- /dev/null +++ b/web/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/web/jsconfig.json b/web/jsconfig.json new file mode 100644 index 0000000..0b56d3e --- /dev/null +++ b/web/jsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "baseUrl": "./", + "paths": { + "@/*": ["../common/*"], + "$lib":["./src/lib"], + "$lib/*":["./src/lib/*"] + }, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "target": "ESNext", + "moduleResolution": "node", + "module": "ESNext", + "types": ["./types.d.ts"], + "allowSyntheticDefaultImports": true + }, + "exclude": ["node_modules/**", "**/node_modules", "dist", "build"] + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias and https://kit.svelte.dev/docs/configuration#files + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/web/package.json b/web/package.json new file mode 100644 index 0000000..eb55116 --- /dev/null +++ b/web/package.json @@ -0,0 +1,22 @@ +{ + "name": "web", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch" + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^2.0.0", + "@sveltejs/adapter-static": "^2.0.3", + "@sveltejs/kit": "^1.27.4", + "svelte": "^4.2.7", + "svelte-check": "^3.6.0", + "typescript": "^5.0.0", + "vite": "^4.4.2" + }, + "type": "module" +} diff --git a/web/src/app.d.ts b/web/src/app.d.ts new file mode 100644 index 0000000..0425013 --- /dev/null +++ b/web/src/app.d.ts @@ -0,0 +1,12 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } +} + +export {} diff --git a/web/src/app.html b/web/src/app.html new file mode 100644 index 0000000..c37a552 --- /dev/null +++ b/web/src/app.html @@ -0,0 +1,16 @@ + + +
+ + + + +
+
+ If you're running into any issues with Miru, or have an idea for an enhancement, please file an issue on github.
+Alternatively, if you have general questions not listed in the FAQ, visit our community Discord.
+For business inquiries use this email address: {atob('Y2FzaXN0YWtlbkBnbWFpbC5jb20=')}, however do not expect a reply.
+Depends. On average no. The app is always seeding 1 torrent as long as it's open. Additionally the upload speed is forced to be x1.5 that of the download speed. Those 2 things combined will already make this app seed more than the average leecher which removes the torrent the moment it's downloaded.
+ +No. See above. The miniplayer provides feedback that something is happening in the background. Closing it would make the user feel like the app is lagging [because it's maxing out your internet in the background by torrenting] when nothing is happening.
+ +No. See above. This app is also meant to seed the torrents the user downloads, if you want freeleech go to some private tracker.
+ +I recommend you read the guide about basics of piracy.
+ +Not really. The underlying source of video are still torrents, which aren't always seeded, so anime that's a few years old might not play back smoothly.
+ +No. You can however migrate MAL to AL, see this guide.
+ +One of four reasons:
+Finding desired episodes can sometimes be difficult, if Miru auto-selects an episode incorrectly you can either disable auto-play torrents in settings to select torrents yourself during episode choosing, or manually find and paste in a .torrent file URL or a magnet URL into Miru to play a desired episode manually.
+ +Yes. For the home menu you can specify a different RSS feed to check when the app looks for new releases. Additionally you can just paste/drag-drop a torrent file/magnet link anywhere when using the app, and it will try it's best to auto-detect what anime is playing.
+ +Not really. No other tracker has the kind of API/search functionality which is required, which Miru uses to the fullest extent to make sure it finds the torrents it's looking for without false-positives.
+ +Unlike qBit's sequential, this will prioritise downloading torrent pieces directly needed for playback, which with the user seeking isn't always just sequential.
+ +Electron has node.js integration, which can use TCP/UDP, that is the only reason. Browsers can't access TCP/UDP which means they can't access the global BT swarm.
+> Can't you make this just use WebRTC?
+Yes. A BitTorrent implementation which uses WebRTC exists, but it's not yet adopted by any clients, and libtorrent [the library which qBit and others use] is still working/just added support for WebRTC, which means there's no swarm. This will hopefully change in the future.
+ +This is likely because Miru updated from a very old version to a very new one. Uninstall Miru, go to %appdata%/miru remove all files and re-install it. If this issue persists visit the Discord for help.
+h(Q453^Gx6ta| zJc4JxiF#HYz)o_6u?pa*v22)VpoiHQv>Xr{y~;PZ@8>)7QmlI1pB z#59Qq;R!Rx58NpMwsIea>y}afdwSY>_mtFne#6u7E`V4;pZ6wH>fIA)ztur}PI?jg zpCP$d;SY}jK55N?*# L6bP_Exmnc z!n&*dJ0$(=&;AVj%WP=;)z;AX-~Pw`QTXwn`0=mQ0Qu#cH)8yJ@$x17;xGP^JbSSi zCI88P;*Y?e_!s{qJT2i*Z~8os2#LC1pOWuV_xY74>X@ZXp7?|O{;2eo((hA*!PWyR ze}jzFeGi2O8b$5XkI#0EYo%^fb^~zeUOiA-l$r-Gn);4l0Bu&3EORJCu`ks@LNNNe ze&8_VC($FuqmJXo>+$aoA8qV^L{*fF6M0uu>!RQLQ7|cis~V$dvsmmE&c47_cM5(6 z*xvZ m* zclTn5 1q_Pcv^sEXo? zDLr-z_KX+6&(2QeNFpD_Wkc>1298-5V>Vu5Y%-5ZH$3%!t MzjMpFPJ>*Vj0W?@kxp^mQ zk)m%XtrXk$6VXD6{%2Jb(#?IKaU}k7XtvkP~*$X~yBSfEI5# zJ~S> Jzo3S~mG4dX$39mDjx5v5|jsx&e!e%ql$BRQN#9GPnJuW4s zqw5z%#Sz0e8?5H`s4s3Zs;@3J`Z(fny@H xjQDLm9FJk1V^ zW15liJIIF9{oTEI*mFKUmhEaL%7({>AKCw%o_=jHKK|OTwSR9G {fmF{|16%6 z?1{;V4WIw=&;Pu@@YJ;5dhu|)2mGY-w_h-P<*6zRZV1_EoCXTo$E%JTwfL)5i;rv* zw;tdI9Qk_WP=|d@2uJni>=nVdmW}o|U*UsU$L&0AgnU2MZ}&piE~To{qh|5m4OR)T z?l*aAU1jl$ &^WpQI(qKFNC{gW>Wd3JFj O*Dvehfp$1pS5+3>0Kdodk<^WXY^|+P*i>P?p2!Y9m zEI4^_Mf#mRAQ_)~@itf#`kgM6WU<7T_}GGfj#Z*5pX@neu_ !&SNm?*md^>&BNC^A2 )oexYozD)%=VNCtE1P!$-~P z`@rZ!ETi_Ve5-r`dnRGbx@~RENmk9$*26*W82iac1Yx7rM
F84x048xdjBgkinDCHl$ zLRsZhZnOb-96OEoyp#95aj@U-M4y-;=Wre=O}?{25e=Tx7F~~IygnBXvy!FRq-pA^ zlGu439GyzEu5bggme$)EdR|1uK+!NCYYL6EQ&Ugsvp#P<7TW}=jA*?X!`53(V}Y<* zi%%%^^7u|VzB(^V_j5FvVNyKVf|6+1mmqEIjwi1WM?lo-WTW)hJ%Z4GK5|o`X}bVG z14B( x<+Pt%7PI{1F`oS7 z!&A1M=9Mliyg^P;fEdfkV#HR%pUa@%7KthcALF`uj~+{nVRN<`r%5mTnbiYw=b;Yj z*m=kiT;CGk!{lq+rzVwI{ym*@V7569$_M5dRd>caxj0iUR+7zTl%wSAh3%01R-~W! z@gE;PXAi+2lp*l9GO_pL&;0Dqz@PX({U6|u{?UKtgS{^I@Wb@!(h)^so$+a})~fLD zl=O5a6~*Yt?@ydUTsCcx|KGi!@ ;FI{6;gJ<>jIn#x$l$_8gfmCyAl;{{4Hny}pK z-b=-(1rR8yZt0IIPZ4qr9m9G z>;U)odK;zO`e;G4ePN}?pU`eBT)rRf^;y8$PH?C61nMhDU9~M=D@QZk_-LPJr>A0k zWba2_*j!(~kHGgypp|gz(c^wlcrh}Ui)+@q-MVR`^m})E59=9KmHPa2-$z;4qWMBj z>K*Jk$c<5Mz>kZ>YJIw(5s#AbzS858!9ds<3vio5eSGRB_L#MPy4D_|)yFc!$L5KQ zy&>cicXKV|#=mjg{zt>|kv!l**|YrZ%^>vr;u0<|FBe(yxolXm_v7;yFW}AFH*mPW zg)}_aWfN8h6{AB=&B7DFj|2wSi^Z`UFm>U%@Y6-+@WPZmGUYTL8z2|Hb8>b9_g8n; zM(Se?1@yX7$mmec;8C+}Few}D5F7JY@W~9NU~_zc{6rCT;w^Q~hzJx63GFvTT-p}c z5#Z}iboRy-T>8l4^pbfaP8<%>hSLo{7<^OXxoU|t_?Y1VA&e>P!N^7jr5_8gAurU> z;08$95Ogm|Ga}0GxZxMf8xkSC+!7vvqg;-@+2PUiM@_Y_j$?aLRjbnrit(_8rM|C4 z++%bXW8j9!wL=bW!vPP#+5Cc`L6?nTa@Ij^>INa=#~#7%Wqd>7+&?ySFO?tAPjDpd z`9|1d)5t*kDGbg}5q*zO?Oc}&@+JtqRCzUQtbUFgW+~RijW()pj-g}lPQ8-Z2!3zz zVlBoi8;tqVv1R`A=`7yxSMS{u cAu`21IY?N{M{^}qh#z~2dp zjj+G^E58Om@e#+q_u)xXT$8ICG}=NT|4qWCE{0Iu)y{go2$k4uCEgQ4@d~0`$67P; z1gQyV-ZR@V?8j5 k>-cZP7bg|-@kSe(_0SBtb>k1#}PDMfyI869bk z+A(Og#4g2{wCt^VGSGI1){nbd+V=?6G}U@(ba>bjRvj_*L#0oXNaN@S7%k1PV#JNW za`1`lR#zKyDD-Wo12cBy3~B77)(HSzv8a{93gX%|q89(KSprf?U5!$71k!~p+o?5D zKhCsn)Q6U+kSBOQlP2Q=j{*}JkbapA6~(2_KeT^HQCe;kheFJ?Uj?W#pL$%>%RJio zivdLJtUI4Gm{)wEe3ns*Z E9 z>LH*z^Shj*(-eKwaDeRHc#uF`tmv^q&9{qlW{Iy^JR hG`2iES^E2G zF;2XG^;&MGy}G^;!ZY4hZ9N2fE~+c+4c&C(2EJHT4@Bk{^TBdqRgDRJu?j(w z#&-qHiW9#DJ6bHvt9nd0)_u;YH_1K$Mrg`X(ekTA!|1Ga3n9JcBTuFF(5#>vyu?jq zxL|#wb^-=YXKUZeQmwA=e;j;E?zK)s&j?K1X-ES|k0FR5D7-Shw6_goDj-J Xu3s-?BG)t`q8Dt zQv0^fLVJf0I>TH@whfw_eFDFK%k_3@=Q%*{#kn3l=Um!MyZDdpU^46~*Ps~>p9MYL zS6Pu>Q8APIbrZTl$2Q$ >x#mk9THVkc!D-8Cub(RTqFigX+vnt zj@dH3-p6LQ8zV9F69nfW?giP(r 5#=M)b1b%sPqAD@AYXJ&CKfgQfsFzCs1`US8$#a4bA)XGZ3`yIbkTL5_hSJh*8E z);K{ECfT5q=VEwc@90S{qp3qhxV3H~SUq++BzhcN@I-2;JpCzYXhm#ixq2w;FPA&H zhVg$}FZyZ|@_NeKI4PK%9pn2peyFra;5w;#JZdN&{>}6!CxR@n?cu AF$gG@d)f23B4j5meDqPfe&3?f`+Ji zAwIS5S{CciAPA5sm9TKvAM^$5Hw+fvWN3y5OE1We7ANeoV6Mg+XtB^k9Lv}yJB^?V zSXyJ?XngYcawlq5SnG;~BD2aiq8m!Ua*S)g%o_=yU8Ewd`jtH=y96SYnx>aULDS#a zHYQ{Z(3L)VDnJ-hT*X#n#~qR{LR}GH1r-JgX30d&7+daXic-BGcB6oZbIM@sVDp_9 z0;l}>{Ds72diU-vT;JS?*WT&bi5xGE%^e?a(?8?}ZI1PKcc;hW463<8Y55y84->Ax zV|sGd9(&LFV$CHqD@3jklX;s;$P7ohNSlHVCsmlucva)O@+z8Sp`}N&IR+x%j!e5L z7DtD9F9G2BSP2^;@9s44Hph-UTa>Gt>ud3nG>5x1#$lyr;{eUv#+H^apF8YSDK}`3 z0vX|Xi5)%)zR<=pk5MlM)&=&@76s&MuRnv!XBX1f+l7AkVu+PO+8AhX)eadP%?#|6 z>{g8>yWq?f&P11a~SM?Cr+k #V=m^|xqTQ^gq0 z{9dFXcDP&(r9D9Nj*9x#7;v)ivTuCj>+tR0_#RweUBTt~Gr5gaHUO;>f*JaStha?` zBuhhp;+d#ZGF4E48>{89xfL?+)Hu?nd7^scvp0WptXRHIpdmCY7B@IwNIW6c%?brT z4PR>v2fb1&fmObyUKhrju&QFVQ1lqFqfzRc i5ak7iJTCi}{AK$c8I@&=P3!xY+{cyDlTu^F?R1DfyY4lIM z*-ihMAlgU19Eqrj!# lMVwtXv;I`vMO~3qwhh8e1;o#nx zsN=)9r72{SBYQn2)}bo=`En>q9XJf0kn4mV;#IxJ<|1} &M=7Y{@i5r{7aK3zudBo|m z-nhNddJYFlHHn~66O&J5pFRx3zdaLQMAIMj{(Jr&zMc9nz*m_#_TxXsF&}>+Z` unf$YZQeKRwADGhVhYYMw{r z)mfg;D9a=R%->_!TGVc#`gp=e=UL-oP)B?vsM=(xMTA}1jZ_JuKE_Ujm@*Xnt<+Ec z;(>$>g!yExCPAYtLpjEQz`R&0bTWM zX_Yzb>Z#c9F09s(kP5ymNaTA`TzFGE{D`3-`3_~%ZfLvI!H{q!Os&$EhG!~$!qT=W z(~H1AJv);)EByQF{W~#|iTA=Yjiob%HmT*%@XlI-c!7xmdysWkg~$Wfr!ndQu7(MJ zFoRyhh>Z2qN2M&Ma8$W aZqA&EYdENpt3wBGH)HuF$X@Fo_BHy#=g*XN0Tf5gDG2@ zGE{gXj@V `Q2$A>))cKvp#&X*%?p&i%C+>PELQTw66TcYIff zMvp$ao}qG`I(~rB? ^mtZ_FM#|EL*Dc(?K3`NLIVCK#82`VT2 z#7!K-)vDnBK5y*~Z^`mK4cnUL+4&cStndMAc?+!4XfAFVpQCQb!R?=Iq*0wgzKwAh zVpCd;klGhMiNW5+I|T3;lc8_h_&QIo#`|n(11|dyf?NvWP8j1fWk=fn_b8&O^Jd%1 z&XNPmrbmYp=QWQ%rAWuR_FI _nJm@@%7zCv8v&Ha>@NrI49|S$* zHou-^ U zr}?VWFa6Rl!C(EWf311;^S|(?;!>KYq)h{4^^VJD`ssqIvK~mD90Wxv(pn;*^$#+| zpsqVd=ADmC;Q h%lA{?Oo6S-=7u5jFswfvZ;c1U#%5^@i5eXLW_A z3b;}lHu~@Qq{lGkNAPr4_HxI w%0mAYvJ($V@!W0hdVeAK}wj}PL zRCJMY%zy^45~Kj2{5jmwD#yi24Gr$9V%xM<6fN9Ph}ONK?xUwCD6L`P2LRX&PklSj zhXRNVvMUW(MhDYdui`xL6UvL-YzL&f*q*Z( ^hx;8RAsK>F|@@ z6q0kMrXE+xb&jPn-h!1hi~)NKO-(_|4c>jul)8%X(2wIe4OM*cak`f;U&>`7Z{NO= z SBN`fFSaJL3TJ$4o^QVCm=@15vBX zt)}mpd+ptl F3;u@t3 z_1f9Neu0CJD|0$qjK92KdjIT9k1j(h A=;*sCldF`db|MX{+8Uu1;v>iG-!#%G@`hKc9mX~-Au@c6%5Xhs%xh$C@dhSBDJ zS|Y#~&`$qV4y3N_o*H+H&EXd0n5!+Ge7Vo5F`5^4GR2s-=z?nOaDEf rA`tPNq%MInz4 zAZS0WES7O_m}GM=E~Th5m4e6fKa=f@`Z4gjp5a)Q$+IcqA#w^?foo$v<3hcEr(i0< zv%1V%%gbX o#saKydXo!JP xidW=Q2T%XkImCCMo4Vm#fJ^4J< l&F`nK0VcWn3(X_T8f zXo_|*QbKFi0Whg+uA#GGcD*ijBr5ge69 c zTJ)OJ(;`N}ZyO6i3mXD%Er4C2QeFCSLecc@HFo;(GrcNgE<#;@L|v(=V269!gg{}y z1Z2+knxaMC^P|Z$X^MVWW;A6I(=Z&g8RVTt7gvsBm%5VS=y*u4!PB~bje(3XycnV3 zas8|-7!2g9S3q7ml7 8^;d-(N(o1~dNh{N48FOh4+X82&>EvD&-}6> zjBhw)oXT #ODO8cykSF+`#$qrM@76$8sd@kHUtaCeYHRkQUycBvD}<2 #jSF! ?Wjgc zrBgQ4a>cr^nFQaba{KrWo}HgtyKa2Ehy6k0S qq5>-B@D}O~Z-0=Y5N zdbx)jfsKV|1`g{`Z= zWi3K6dcv^pZH4OfD>BwVb`QAAiwoJPx>@7`F8s<}-l=FmY1qUTKsWpu9L)wjVHzJ- zWzBPKwu@+(zj|m3P@bxnqwSXW_t`JU0TaUPluym4w^32jCkkoXAQwhyZ7774{|}VM z5>BC_%;jw>uUZK6-*$*MXYC3gDhAmy52lc=7GRp}ci%#tXc%S5JeS<)yV3+=Zg?FN zU~`l|@sQ($&2zOM=Ui01aLUev44JzPy9#rAJX@adO}sQW7(~|tq&UU~L^@&&2rBX``^jyveXwLN{Lew(F+HcJd^dFQ`O@8n0A zn+GsEey8~CIK(GO*imTEaiJS-erKnJoNvnpGug5H1JfVtzf6CuWoi)L82zG8_8#e8 z|L^?4{@X7N4UieDXH%t;-_C%rypLbl>3P^Kw6XnOjUw@`64Mbrv}Ne?zSQ=rM-EmY z3q5_}#`i8?ffWXfeFzgANyC>Tg<}lg&=$DW6>1;*2-ep0dsaHOsXZVhMyZn<&2y*> z!=P#M)*quvj{J5x)o5YZ+TAvoFdATCZ>xg6ekqH4ERX6u(X1*coq@Vy)M9^}u&JsF zbsToRc6Us&>v@Ki!8cVBRC9#Gf=NUM3bt)q?(i<^a3Vg8egv`rg9x4CP}`+2=(#S0 zkg%lsgGIl@=tus74lCG<>2M15MjR^0U|}h-{%*x!BsaE6VDy7r{BnAJCO5i;j$B%) zXiNc$L#lQhWV?1m7dsj<=}b^@Zmqh}2GK@=L>YMY>_TD~vJvg->b=DEW4?KEGB1n0 zlaAJG48=I7mwNc6D>SzOz&i?kFgahU3A=AGk|sdxBjrg<4}@;&7a~cI4>qFl_;Fc1 z7NU94V(7RhD=W3dzO~>@y+75Hhop|1gA(2}nX!D*IFh?bam$8*{iFuG6Q&dXL#59H z?ZX% N=%C(ze7pASLHGIZFdOAz!0PQ`V?4ptAf%xknt7zOG^ruZ aSh(4J?D<>V8m;7p|xthLvpAhpX=aPj4utbz7~t!VMh^WBwu*SxGDx&f)c| zSMcp`e|y=O()lMNhN)jycwIapjb&1!gkx?dk$v(Q&c>UuTtu_m`DP_Z2oaV^xv_xO z2QpHtM@AvcTh4=g9??oTZ2j(WhS}MM-k{?Ql P_)eOg)_e(%Zj-bfXo;_b$R7|4*IGz}0&4hO z)kU?s+GqWoT~`D3NIY3y0DM4$zub$?p eHWdHePr(^?vc z0IGMEKc$WK8u$7mv>q}DM{gdNaI|vS%-d$eL5VsJ*mDocN-AoglZRNcZlWS}6lf{W z>L*w!J8ex{@5*yus3-7Bt5fe^(|NAcSmH$rRvS-)8qeoKwL;>;z~grbgPn_~#u)oU zQ{XE9cK3(5XsdLYgdO9qDvc|AA@;g<>h7!WMuyUXZo>3&;AEa azZwTZ*Cw)X zS{2W>3m!;~D<{`;5uih9@vhkva2=JDU03G|_k2u@Ju%o|x1Zqj `%`DaI)a;PBT`sFUAOlx+j(|g_ =Oty)hZ(_T?$Sm+H`tVmY6&ApYvns24WS z{XvdvyZ0QPo@qQqMc|_F->JcRsb?p*exlyOy^M!m!k`O<`@4gAMXI6mfcAX(Pi_{x z*ZJv-BZW;r-P3^(3!Ok=F&K ze(0>n^Ja7R3nN}E5IG%U-t+rIEHb8La~{(uNLd1H0jS1AisNr+@BD}!;pFVsj!4hO z24*>mBuB%|uwgL-q}*g<+58~qDCQwxm*=qYQ;d&@4UcrcWGA(T!WueEiH2c~Z8vvZ zR$))5Mk_4`MHn(QD0393Oxe2l8-v(Skd#`F@E)lQ3JL=YFnhdUX07 0>Y6ZR^(OFt_g#BjL^M$ zGfxizbcV@p!xaPR#urO}gD 1LU%)H=Qip?*J}~ktk$cP=SpX z8Q)9z${13M6R%^Pj26iIP}wP#{u9*Ub$J2^$%`Xjm5bR ^o! zaNFM7IALdGlFJ}a#=*I+$CE=$qonkLybW0C{iOprvxu5rkB*X~A(oo?1~EtSIW>I4 z@i6jG%#B3o-nHvpHg +nFP%5-`C>=E zOsD8xWH)2Sy0dvtBl3X)8T>H);M0*yXmr?q63-;l-=rJW2e1e+NILr_p1`|hf%SeN zowMc5&rGl24@}SDVj-N 7CyD|^{BXADa%eQaCtu<#9V@%3e5`1dH z=)EO3y(df40a_=#`aE0hwZFG}RQUBrq{rZ_W%vzjJuVupApXfoZ}{s`(^uj3kDfO_ z9G_U*!`1JW`i`|~-y()u5s(1uwMxZJQwwG$qND6AE*Sw=TIxH94ict #OU<=(vMt7w2-D;Lc#&FNV3B8#dCsU-G<%)1}<$ z*}2uHO4Mw`-c(!XDfCU&InigNc%O0D5|eKEmY9aISefD-D px_HPL#guunEDWAsUTVz8iwpJIBp2K2adCZf4L7$p>ILfVy;Nte^8=;#Rt6cD zF+LGEAyX^`&+17k<|nqzE(^oMUDlBvX%zF{nV)#YFkRp-_yzxY*oPW+Mipe`(W>_- z9%j$4jmJd?xMF}QE1>J&Div~cFR?y?L>Qv#^QQVWS6DYv8`=i3d0iLh@-R6yJTN1n zlc|ktu*bQuT+jC$zpPH44~&ocrso?t{MNKY9ZZVpQ^&*hl4)wkd67an!GtSD||raN899QL-c$ZfAX zU_v;qq$b>sVZ&bbJ>D03D1EG=r#T_=(DWU?ZhxiDX&CeV_mtss1GC_0PM`tidMc2g z8dF@l0gC03p78K7uG>YmS=_*9_nk&>+9xA}a8Ko`Pf;8@9ac%}hwbUOH4Iqfh2)qg z=#_l_#jy;16TxL!b6ny>6SjPfHejsjF{cFEl%B*6JImeK^dsDZoaDi-jTXL2vHomc zwWRFExu|U%7bD<&4E88rA5sW4*|24!DW5voxjZj?4?FGu2)q1LX{_J=V3P7F4E(Am zx!p|OOxDNMw>3vr`APvYUZOu$KXqfi{I(eN0R(BB$b;xWyt%%I-RY^kRwF6`tn{zr z-Eh5Qizods{b16OOK1RoY&wPi$;nTM(*8fc{T28gN7@G+)Stpr_=k62gMaPt1^fq# z!2fUTz7D@U-@sp{cko|Xp8un}Z!Ct$-C|@s0N;`KeEI%g*nI|n`u2P94LE^+WXb=( zz5jN$xBQ(hHLDH$2apQaN`cdB{g0^!egNqSTyd3kOS3tmXmv_Imi5Dt8a`Qix(w(Q zzI OHde@+a+PLyo3I&bECE8!+rO;y?H_ELP-c`Q q0<}uRPnyFFvX&akLgi`Q-FWl`!*!qz!l;17U?SP(JD>78>V|PO){%GQ-6& z{w^<{FT#EgSJ&?)Cgcqt$>y7!&n#w;EqJhNLkxBj8*+ksytAE7sB0xt1TmgfC9UcA zhQWe5lu-8^%S%^U0jeTMvS9FI&VF1c>acoua+CF5#))q~=3{?k#y*erd2dIqbs XR2Du>94AGz#QC9vdOundf-gjf&=3>I?cv;y^va=F9J2A74d;A$ zl6X%o23Wf97Nbs|IOdMn6SL5t!pUQ^6E9%cNQ0$DowA*{8f6(&8K6A+Wh@NAQJ*<3Y`Agy?Ir>_VBCgEcTYRUyRYEjAuQ2jv` zp$i{les%`x73(eRg&*(1R-ruxte_b_01(p<-Ck^?US0D%=lp@)5amxvkE04qW3j>b)K;k0HCfzh+mK*gNlyUi zDUeh%F?a@+e;-OjJ?yBbW+plgJB>6!mC@?ucQ4;%k9=|&<0llRBRu$VH1^aKED(R| zjF5HHhQkz0ROY~F9ra1uhB(dWd`S(Vwox8o6Ow-9lOI~x1Bs Z)IcZxPcgF0icGPQLj$^+!^01bcq_y1fr~$5zQ9Z z+dt-}>7g2;cZOcKl=DG++G(fj4Ua9K>&xsXZPL19&q7ZH4~A?A#y?*?zmUyImdQW% zV?Wwt`&)nOSLAck0Lk7Je{gyZzYm^?oAXaD#>nq4JC9ud@0rfvf4cuk_(S+yJb2FO zE&S)E*YFlO_&&mae))dB0Q`Ty|1SI+^yOl1+`&J+7&2cipRblCe{L~Q{sYr1__wBa z@Qd^3(anEw_X^IIf%(((_uwl}b+KJ`vqy Q*ep9z;Hk-mw9bls zO$g0K{3pi^WgA*oQDk5X6WHpxHc6^%c?g5pd?_j;cE?wmNuJXf2^%KlM@=^svq01_ zjP=;>#_cg=;mui5gm%nuoi&zx_192oLdS1`3v(ffjbJE5gSoq2)s$(%+|4rMq6ZhJ zf;TUb%GI=ii`1CiOUpF?DzDoyD14!t2;1nc44mX ?L22GTq3L-$^|SCp+4VSa>sl9_Hp4R(p!}54ITcU2j0{9d%leC@A}5q;ra9D8uN;Z^1^d|0qO4cUP27q&xdB*JYV7F;2SmW^~-4o z>6I_Xy+J)3C8DU~rqB^z?!$(~!~HF2Tp*1Nw42n^)Qz`%^!@&DD>o?~P>rp6frY~7 zaZ3YS!)N2j(GVF3L*@2mj>G7zhI6T|@POggSdfaN?b*D7V^ujF$&4wRJo_Nk`9qao z5*{zORZ(r sp{S3k1`?hky zlWRX}K=id juAJQ qBc;YEFBA%V^qcU5w&OY0JPsucyyM|W+L+uAB`gNWIdLblbs67# zj`7U56ECt=jF56UpLs9>CT-1L1$A(*=SrMF0KMFe%}qSl?TSCBUZ>+en$gB}E-_N+ zjoP}dFkmpa(FTcO=!c);D0W+SFu+I3jZc%fKa<((^b*hozoaLU)W{1dI`M-j=E2m^ zu^fL_1k7f5l<^Y)&Epm@j*5%%+v{Nu_&Ys{J((^X{KUTu;#l^^c)!%le_!8gNFa10 zM0VDSxn# zz&ry^>;fL%!0^l0G-jsK{A?$M(!h!nuT@S#mM8!klb>-Hn<9p@kpYqlE=j`~F+ZDq z!?DOLT#d6<{QA{S wjtfP56&3@BW)7--Oo-8~N7{U&71f z^B 8af8!#Q6o^5GLP(H?O* zv71NqP){kUiXF_bNVt0RNL+1ZtE$zJ0--~-&-=C0Kn%l^QYeiN aO&$x;_?%vQDC2g*hPeICx`pPM zLE;_haU``p|9%ksvGMWM<)wH&a_mQG7s{@5C@=^&x3} O<=WT&2%4Y}% zHXg7sPrNwyCxYA4lQS{Ov*DGGd!L+~n)j*BKfVA)ZcYTl(E|J3&5al*I84A{QMPUu znD|KgVKG2*pLXsEQHY3X+T&ftuwxQZo$2YFL}DCu+_yCPF^m=;|2pRCLy4XM(mEpz zEh3L@e6wEPQizybmA7x!?c+9*zdirJ!MDev;*pZ!1BUt`Se}B_hZ*5U>W1`KEkXaf z&RI6huHaXH_1EF%<`(t~zvs&-QZYnmZ)OcC7LA72iHS(LkhPO)5^>VJw+X1sGd)&$ zFoWcjf?sgKv6h)n+%NMVJbXgvVUUJS`$DyU0pkOB^XxdHX=qLo)ao#BL6r-F&jdwr zuUYivw^Cad4HyMtJt~}jH<70?RA!YbvTTuRn?}HwksLrSBukvQUWAZX_00>fd5hN2 zMMjS21HG+1@n>x&3>`6l(yDIk_!?D!A4=r@bfMq@6ut&-G!yhr@YFQoa*t(APwK~@ z9SXX{*l_f@$a)YSEcWzbh-Aa0dUOQ}(vVK&0rsub?-*@xiWrlJLxei%(@+w)PGa%5 zMNR|4!A2^M-O@_2{z}tVT>Yckj~PE{L`=TWP*-K?#Y$fhq|Wz!l;vMH_JMlxk*Q$_ z$*a(flXi zra-#5p(G4%%nlxI09I`-A++MU`OXK|`A`US_$G-r}g*28 &KO{Pr) y;P>LW9K+(+jz6<|B_#Vd=o Q)?!#pt z{qO_QP`ErKaq^w=)SCYh3YE=Q*VFpaAy6RmZPiS}Uk~B6V;Iyz(C*rLz4ohE@2N=V zP)V>VCj&h8iV>~ftqRzY!7zx0l0}IusQbQE
V!QHe$t|(O82Hp!DmR+Ze6I14b_W_GSXbfC} z8e8DyjELW%v{O)8`ZFQf;Yg0NF3QsFwcZ+dwix9aV N?Av!&%YyE` zw6{Om=MC#7wOV65cH`)j*ktNp>)v731y#B9u|l+<&RJLNtcg*7S`3b7vMaW?*pN5Z zH?n9vU5u#v-P9}^wN9{DJbQtZ@e?;S;yNy<0i}44h31-KJx*9&@KkERoYzjCaoR-w z4vS$=Z|YWq-p+Q V5Y4_&(J-p|6w9w(f`apIR z#+5t2Sjc&W@S+LAlWN6Mu{DnA9GDw}ul!R_1eN{{k6;5dHngPZ0z+NB^)jgw?LA*w zHP$^M>}1_QB-XgOSoy`Vx<^@X@I$&Z+gFnbu|egYG@52e dE)g2Pv}2; B)50@O_No)aO{%$gb-d0- z(;*Yg(Am?gpTKB3gzeYBBN*Q&s$BzG$z=?_;&kI9SfiV^9y>Igr!B2`4BH71lmF-& zjJj0AB1lE5fCkCyoZkiYINcPu=6cgI`D|(@Xy`GJbB#)c5o^-%84Y6aHL7@k)-z4V z4Ga7Zh1Eah{2m`~Z 0mqtavg@u+&B zt%r3cuA6lszAWx8^b*B8PP-!KFy%=IomS!zCV#6j`6PDu{e9-f?vs)}eTZk1&wiYj zWeFR}!)RpslpBM?c3^c)rYp_xaX4%6hnVvSv6 j{zKkt@ct zorbwUJ;9Rt_v8Eh7#M0lp!7p!fg0&lr=r4N)YXvT-dWtv3G+fn_JV}No~>-^nJ4v4 zrneI`7lT5pg;C{s{>=4X{=C-{Onf3J!wINk0?DZ%jP-#SA)C7SAM;*B?Nici@wS(Y z5||yxpeN7^p5zvIZVmTF+dGLlE|*F|F&9p07$l>4b;>k8EMv3C(FIqr=}uN3uT$-k zG50?8o@!YiSUd9F$RdFD7){ZclA*(6nAN5M^6#E5#OU~M&2Qx>_CK%~9se(f@4$a+ z|4lfvh4;TbzlRqKlK4GeQuA&>!vA3RHMxZ5_bg>^7eM~XlIPFN--rLl;d>Gq`d>Kv zJz~`SbB8aZEe7*HJH3RzYbo>R=u3ENdU|||S|*u5Q%eyfpNJ2AM0$Mxa3!TiWkb}r zOx@|HmM(a}aSa>kkx1)l^+;C{YRhZ)c%3s?l#IU0Q4hK|$57pM7*|SG)*L@qIK_3P zeLN8ADr_1rKs<&l3ctYZ*V(M|?keR+!L=D_a(CH+Nf)_hl@-1RkR+1FozHa|dR7 zY}-NW7Xw!3fW|j})#lK9VoESj92I2`5svT2aUcT@#76OEh3A4jAr}Si?fYvHfX|l= zo$S{pCZf6(>6Aq$J}^r+- 7_;I}$9^butC!q}PZ|>B1%11HnDE%ZiVCSZWZ(5Med+f$8e>e^F zo+~8p#M9S_6Z;x)fGb$Dbb#&%_WJwdQ#YI42vI6=B_DjD*Edjj$MFTyalY~(n6*8i zkmb4{G2=D1thN;DD`~68e4cy~TU%VgeFf|x8TqvFs3i JTypcV?)c5dqD0CSkes&z6E=~{0T2VsQEe#=o|Q^_@|L~_#la6bf%WBZv(xQ zAW#oW6 bN)~Nkc1xfT2 z-t $qnE1^jp9I>J8=F?bI2g%o>|%(&Dq2>XW`fkDAV=zw##PZqa2j#-R?w z D z?#{we(S#A!iNEtPY(0uS*~YrkEN4GC;e0zayh@4vGOZ?%@a1!z5N=RDfL(14WtRxt zC@BU`yNJ^Jp&N4bq!$HlVz2^}El=y^Ufn`{YT7hF{*m2}!TkdGzqS|(UoA$)|L9^I z{2%RqT#j3VHU0mdzl48qdL>7$e||AAG9bSTPUQWU%L3~Ec>f#lXAhslx8OD|mU*!> z`5SZx--o;C(ASsx|I5>7e7_O=oAVocn*V;v)GO4zz!-kTaoKgE)z`ZFLFM-twzbOf z^nt}k=UL-oP)B^FlA(HY)sZ>^?MQd<$0DGzo+c|ftWb80i^rk&!`|E1!KCTFQu9$5 zu(wBz4xQ!udgl^Ux8lOb*_B!B8*Bw2j&O+a;R|}7@Q qM{`(^MXz89Ryx zSt14!D@$?_NZCiMy>!EimJJ4t1qP@~_^eNlaw}dZQy5nCTtHKgE#D#KzZu#cVyziF zT1j?`4J=UT-mCQX+2|ri(-vbKU& M^+4ka2mjY}nl0%Q4p5n`<~d zKQ~&Q U#D`$cMEL(^i+ySH}YBCu$V3PVg9tX_N#{S|nsXL5Z@vn#cF1o>_; zmhmGtD)LcdIs9-q*nDp301Rfn(B$m=Odj6e-sj7*5?RgQB0pT! @$q9Hdm6(Z`9Jc`kF@yu-iz;!F6oU;mcKsc*dg8i3y>??Y8 z>27;bB;wls4)fXRYhX9QPKU$5*Lre=dcn;X`8HFuhdt74c2h z3;Yfo16?+BA!78Yp7KEZ)WSYZei~$k^#zt?j&i*-1x>JS#}`4$hJ=Jk*{iH!!z3t7 zVkD*3`6#^dd#my%O4W-@=W(5L03T#A_KDoLW%Y$Fj8N92nb>(ixL)N~UqOmfN&xLV zC|@NW<$TEa@P5qK^Y~?f=A|!3^Fa-aRX5R@ue#t?&;#F8Yxp=~{Ov^c>_R>Q>1ie~ zJy4t+0lLjylPe__Ioo%6?Kk6np3+ D$>h|ErG5I*ZMj$&PH#9>PiFte)zq(q7hs zT$jZ +}Yu11`qLAA|qQ^aB1GUBOQ-?>=8TcD4Ndr>E!e*Xd?4Mt%YR#l?uo>EB=S z{KQhnKe_)=`1_YK|I*<%<#@Iy?>eU+Tk2wCCtq^&Cl-U{zc;@(2Is2Nr{x5Va*Nfq z6v_f(oe%+@>XMC+WvH~j4O=M)b#6WZ4=XO8)Bb2yaz&_RXwfpR`{E3%Q5=rKHvUch zcS~3x@HkQR=)A5GrVxlYf)7jIv9{B;6bg$8p8>C~mD+cmfV0EYa3jkt^-+0eFj6vO zsj+71lpL21)I%^Ni|#>>lP)K%TZ7?X^i^YJIEKB@azeefIWPn%aSmm%YlKJ} 5^WwK{w9(0x@LoEUY%r0@BnmS+-Q<^9#Q z7=PHyan~GkFs06l^G+n+8U`E>axvtHfo?JWXzUOylMo7j&>!_^VeLZ`Sihq!?3oSF zTB3FYMuz)r%kU@0V}R4s9lZY9*Wvo=oy4?c %QEFuM6?T6R0#8e@-WXW zZmD7!`-$Cr*69_zI(YlktUY*PDhpVKVNt-?P{tj&mt%jq&eSR`=<=j}e6|>dFP@z* zeY=G^mpvSS&}C2XPD?iFbvU*EjbYe4p?B;h2oQ!xoM+P|=D5^HPj5_7ZZUZ;o2lv* zxtJQo6VZ>9+~4u-&$o8GV-kb+UOWzWg8vECvy+XX{KtKK_UuB8g;R}N)y#J=!`!?W z0XYWfdqKqIVu(IFIfLgfUdZw7i)WYO0leQ~IkK#C#0`x;ZnFs_o;PU6P&n=-->S{? z= L@P5I&922*r=xA`vd~pv4@Sb!7U^bbtYv#@j?kOeSp3QuAr3&rXuI?DmlU~MA zIk2O_J)PxE!{4!?4Xn(%E^dN1=RDis^!d&nx%XP;$hx``r7i$H^3#`Dv4@~zoC~aW z)EGOa-m>aO$cAk8wnsuI;z03h8yC5qv)po7d=})Y|w`J?=B zl5hzk4dRG3f_sW^19!~B@A!sITf|wcTmC9u`3oPrS>TH?U>d_9NKh|Zf-1?tbb}VZ z6=yj|>nM;tbSy_qz<7q;ctXy7tG_uC-L(J>gaC~kEXGwlQih6Lj4&(FX5TJ_zMTzH zTW_L6^nyu(w@syQW=b8LNQx|@M1{*zfvI0dSsp3|(IGz@qon9zn%0YFI$lASwhWPK zq$7CZ(($9xkc}WbDamZIN+#n$u}N&+R(_@c4tlJUF9ktV0}{{agT#?88$Yp`)B)82 zi>4%r4lt<> +G-1b5Bdo_&i)sc?)B*@-$k^Qn+c`X;|?6ko)RT=#W zQ;k0wUUx40J}{}u-VS*1vbJ$>*;%9%L`UbZm_WN75C1A-%(QZUuQ!&@hej7cO8)6# zoQ%8L$)AH=ehJ1qtdNygS=(!Fnx?5WPf}ekSe1H8Z4#Z+>sR^KZmObf*tizp-*tIP zX`FOOTu3_4oK!B(zA Qd a4i8{CCi#>UOtZ%hww{P<9?%M8 z*ih>qZhNd2JgqC+3Q1LvGi%oZQJZxDOrV_B(79sSXjp?fo|I@%zA(r1h^*t}6MKp{ zUIGrkZ(wqzto*d9n?;1b#t|F|T=l0~$tr*}B4956{NFHyG~OVoC`FfRI60sPajNZ( zUUUUJR6vmfGxXi s_Aq=f4PWzF#h@!TL5MzdG!%&20sYmh&vzSI&8#a!{uc05~Cf%2^mkMkb yB~M{{k=NMb_5Fb$^z=6tU7 z-C`tTpYSJplipigp}iU07@)bb1vFD4<>mmx&K{c=&(7qg)vLuIrhyu#;xU<+q7~4# z05*0YyZgI5+z~Qr(qqee`|Y=BAM9pry@gKe^7vc6Xl74TR>tOOp>4VPPGvUJzT6_q zN6zKqnS1dN*qgT{8yb0h_^9={cqpEz7h&OLG2)e1f*${7MV@i;*=MiC Qyz_IOT2W&crJrQZol*&ImpA zvVuDLK^TegcIxJAT=A8z&RPchNm3!SGx~MIPn21^0TGKaYb1ZDuYa9km0S*BsYCyt z ey6ovgDI1ba;bU1VzC`<%98^e{L9{YJZ!)_kDI5fg5=u-_|oK zKdEvVXQc*nS3$H3<=8fsanOEY(~i=pEWFqdyzq&)Z{JCb*Nf-RmyM=pGROF6Bd56_ zPHAQiu1r*)Q^SkfE@-=Y@q}({gzPE<=$>A3X&A?O z;x)OBu#z!#9kBK!gYuoa-|I9}9Vdvsrk;>v5YL;`QkVCCy}^sa2}m8ZuFuEG18`i| zT=^5h7uXc@Azv3Gd^AWwe`tBa)5nA-75!q(rwG~wn(>!ntO4ssogOy(AwAF6c)-<| z)hgR@qT<1`rGqq>KzLMos^RZLQs_FRvF51q!yOtVD#l%nDXN}`*zj51gtVybXq$|v zhC@G@p?V(1hT~)5A(J<(r_Xk*8t3#XH85j3%+?-Puko<=;L9)8L(Z2C{%4mLq9eU| z`z5@8`&NxuR?)H3iJu~+{+on0_Uz0PD(iQfwL_z4#9SK*l$wpka^ovVh; 0r$br`5l zAHFeFH__L2tJ)LScaoli-#(Fyh6c!AryKYW=4<%lhwsSY>Ay(t;D2%VEAU;ohp#Wj z#J`{J;eUVl7W|> zE*k0<0!n2r`2J*2^lF?@BA5~a4f(&`>TM76cPj!rLF*SSh~{Bc!; z%R8OV1O%;en8ru&Ich7}lFv&yE~tH*+__VShFl68rKhSjX_%zK^PIt!em9yIHLWJS zua&`L$(7qx{+{M2KfDYEJL(s&M}$@14D=!kA $e5xWN^R8~Lm@ta<`!uCO109i3 z1qY*nP Z<}qyy z27OJ57ioWr#nq1E+%3kK+pG7ofP3-cxp;y>;c2Z$;Vd^}fA;DXeD8}d;N9CdaQWhu z#09M5rQo0~Dk+(mU9Qv8m>bi|IBktFj(JSa7v=;W+`}OklpI&)1fD;CC0;V`-@O%M z-SyS&f`7d^+GC562~sh{Et^t2ujOKzx*JPWcp4SMYMqto3+i)?I>ydF4|c1nz~J6% zz6(055+s)|sQ+B_ooi=Ly3^CW{IR;tMm!&Mf(_|W4dph{lZ_e2JlxxbF`8As=+O No0jFoD5(`x36RJ^QGCcTBtuGi463Bk1 z_~8u#P+ak?)o dGfp!im==}-za}R)3F#nDK=Al zb59NTWJWVg#a)gprL6F_!XS=C7a%C_6Xr0wU<+^b2vZVP*=PVlzMv2z`g<@&t6eT< zcJnxY#VNEj6xv89pVl>Cin!i@;oVrq{yX3KE`0kpz6-BE`{uGiaklV3#*5BFnTxZA zqi}Om%bgXAvoAVrY$r2bsAHqkozW;_(Gwh(7UxRpx`(@a4!>}2#|S5z shf?`ae(p+bZDBW;8&2#qId3G~ZA ikFkD6A(g{DGsNUQzlCg z{jByO*7 =Z@X*}-`$MF zK?z*tFI>bXflb5JtoCUe#*41+&F^54RAxys4!`MDV Zs<-eKg6M(v~1pA$f%t{y5b4+32%e@>S9nZKWIp~Qb#vjL|;}~?$&QImosmJ4C zkFDEVJ=)2}NRD5)KRE@B8N5qimGgrew<551gMyqR1a3q<$U=xO8DRtH?ft#9GwsgI zNtCQU$At z%G86(d~BW+WhD%JF_>8JZ*#yF_`C?)pPVhQD^B==8oDJoKi>h=8wh>J7g5HC>*sOt zBh9@MoID4b3DfSrk-?E9F^d=M3@2x2a c*t zL*29!WA^TJCpS)WT*iy@bB)U=MtHOvh`lqu(8Nj+=DDczn)|^=(%JaP^v;S^+zu}J z)L0j|KvQ(APWNuOz1O+;W}%ZW-@JqCn`Q3WB@(n4r_(~kHy+xigG(4Qnu^D;DSy0} zn0$^P$dS(AB?g1^$K%dA*<^4*%?DU}4syh0HiM9Pr_PjfO=+dbh(-oMt8ZYd7gSyf z-M66RkTvc6U3nfIfk6qe(@6l@1qQVnW!@%Y8r)j=Fc%8tbz?Zh+^7hHyWc)ukKiK2 z+)rac$M^aF**3Ri5I};y6HRtZk91QDO3+U4zAQ>?oPw2L@e=n=w7kCUEwpe^mGorJ zvsn16eG7%77+^Y@$pwwloG;AO+nQFe_%F3RYgr#k!hoP@+Y?1UsDPLYZ|( yc|6R|wwf-miXJ z_+)a5H;H6(@u0HX4P)NMiFk6KE*o06F`hHJx04^)D|8o7`7v*V^n~g0O%3i9Bx;|y z{B^wqXjnRRp^y@7Gd|_fF==`OxB;hRukDaSVssU>Z!^e118iX;uO}Aq-XCz5Q&e1i z$b4t-EG6WoZBt^-9;dSw0Sz)B4AfBJkIp5}_g_SLOw;FWF!P8X(Y8|P-wkQ%aqG{Z z=%4;<1aukGqDN3S-VUetNzfa(M>v9zN2QPT+QWuvKfaB6NtNW$jHO=P3}E@Lm(=K~ zBW{p4bj2uH>h`hdNu<`}dR^pqoo%xEcpT*NIo5TSO^E&ZVtjlBFJFEJ=ZhZAm(y`8 zm(M>FJ&Ns>Z@&C|f$zp*+NsC4Xb%WbH`WJ?;ONlRejQI$4m_0iNO_2AU^t$^6Nbe; zEIqQ0>eVMupz#QqH_F#l=8))+&U5NUftT~!R7B_Dc%O303T3kx<sc fpPG7a$xZLcDx9ebC2I4mzpmPAf5SFx0H2_{kH?uWuJiYR zS$24cN$Y&s>R8F#u8J(5532&66;M-#>vjTn< 62t zB&R`3rD)PiZN(KyXmLd_Qa))_|2p?L?`ER%r4+|OKd4SZ!*`1;jD ! 9Sao+mNvs^r0+t%&5b+ z4<8mjd3|*yhS8JL^Ttp>)F3PBa^ofrMiwg~dqzZ2$wsOkQRyF8cfvDY*2zc6*?`Il z=-ann0$r0BzWf4`T9S{<;9ldCXiS(^U^bIXQi=cM#@Lulvnd5AF&~*8c=!9&tJf0i z@g2u3JSg?ndE4U!O$lQ9)Z4yy%c9n9e2nAQPO|pRh=dA{)8Wy~8k|~<;TWsAZj!MO zH=_x^nQRd*eVj1tM-o?5{@I&{5gR3U7B}gjr^LCuTnw{caDToSxX<9(*_mESWBrr3 z%tg6RFN82hLcc-4zxlW}`dAW1OwZWCE_{YcH_;X#e4)kLcW>eI&p(GRmN{~>80iJK za*+%xX#95o*Tcm0C>sQJs~=i?Ow`ROGi?KcAIsEW ajfiLL#su* yFgN994d6`z6D(dWa!B^EIiebF1bKPe4 zVq*-gouN^vp@m8K$ooYOfo;I~h9cS}5jvJiF)q_{OiXT2da18)Rg9_? EJp7gqM?7H$k4uE|T4GOYMfL6zT9j+rqh_(czrv zDXKJAXuxNdl5oNkbbvXwIe*t}`Q>~n4iPdoHw@Mx1Wh1i>S(tqgI2#tCgZOZ;}u5% zvCW^=wRBuVEcLi<@dAYxd%Xmsd6(@{_tRwrMemb5TVHF=m2o|Al$ lihEC26CvcKkmDjrPJ0poj=blj&o-of^&5KIvhHYFWjS8!ZpFw@MT29Kaztmh}?K z?dNuZCv~ItAcCEaDRtITxUeL9PjR5aC7DKvQD+z7+BOHA_v*SS`J#KNnoU;qU)0bA z^PF-hE?o24DuaZ=)1(fJP<7N9UsPr#$BlK4>nI*F&Yt;c1(Bs8|0laB$^v_!o*wgZ zk4ZxVWbd&Dp@8Y<|MT!A1XC^=T r{?%v)unQgX)R=x`lO2iIhv&57XH}D zQiyW1Or0x)@JO7lU>a4sS=I1m!@@So1i~N`pk9#}lyAlfAQnhXUK#^NO&z$|#?j=n znC7O`G)*}vbj1^vb@8fO1 6xydW1NCmSdQ>=|Mg zJ{GhjJ9sZ&Jcl>$-pfLZkB^I&i7%{;WTYLt90Jf6)dU#;bBxcS?p|PzHVm%7trW?^ zejLIF5D6n5kjOxe6}E_(i;D}12YG#cwHRf0Vu+;@*UiV1$BGXO-!I?!IIegmOe4P2 z5vF~Y_H9R;U(Ir{3@%2uXYko)-&l;fd${`Y%TNqN$tbZE`&L~3aX;9bmHQ>}7(Gw$ zSu$@OYV42=zKrzb=4ZL-&Ib{4&Y{hj7!UjE@l$OQy21hgVaT00zZmb-C_mdReu7iJ z*oJSTK0Px9Pv@d>SG%o}VqQ0M4I#(c`@~AgGIxS~mxaV!=*M*erBn5U6nr0MxLW4h zyZ3M5&6_u3;9xpO^Uj<7XbxX2Be5QLs&LNAIV1c4s;{V+P{j*ETU6t&!;?y=kEi2! zKh+~UAY&9agxfU1!e(>Q>9H~$`aG6`aooqbB(%I4dtTly)CX)lU=8`!2s+4qksJ2B zwob^^xmHNbd7AUt$WZ2InxUbzTX-@iq|N3>rR@|7DbX-J2=!-MR_?X{?B;y(fZ5|N z32P^C^Q*^OMRXd$kTas#6Vp^VhHd;fc^d#>@rrWZXpOt!hnkx-bI@GIrcB6zN|fZd zI9{mCnb@%F$C^U=8Z20F-{FXSoJxBoxu^NyMI1q7&++@ad*MOCV&vGg@>u4lY|O@k z%>(l^k=v?mJYvn#gr%{8u#J@&sF@XscqpF6`qsN40s6_?YcDX<%eMB4@44{NS_dUP zW^*3vR2x*UVk%{!@Id2zV8&O#9B2EPLyQ%*P*uLVPQZeJ@Oq4aq-eKCku$1b(M2Bn z+N&bL^_LJ<<|X6}C`{~Wf9R&Y8i17#V>CW_AyAu!VAht$d`Vzv!3Yt(iqtx2-6R zex$6b^KPBS&+{0pkAKelrnJC~YZ^F`Ix;D1;HR%4kGAs|U_K%>xIWTW<>j$vvU%yD zm3D4~1ZZxx7P7T>R#5phwlt$-k8OMQ9VB#*(kXj5G8 i+%FQT!wMTTa5lhc-5q{#a6F6Pz9men|t6};pLQwUv4Pm84Ny65{9`1{ cP|I(K;YLojGCCM)#dc3#G~^g*`N5m>=pqmDP1G{I_cF z^!*J{wGGqiIXpEThc6!?Kp&fF#mpRfgz5nqV{il)(Qj%eadV^rj^Ty|KdIHjF)i*` zZqD^Mf;vHa5uZP!_sa2tX0avH$Ws|jzQdL-M%)XavGI(uR=BcwG2c-BE|Xwfu#8)j z8V(hXOZRZsxz#mEwKTRI*mUA%USfr>=__>$%TlHYVO=yAj}=H5jGaSW0Q)g&-W{q7 zZYq6N$IM8EUr(8Q0PZ-N>&PAO14u z3y7EFNjjVx6vcc*91GOo!P<1?F-A^tetLEemoHw3u)4Xii)qZDmr2`_qrxX@_~j#X zu>*?H3N-ToYIpRT#6>)S+^GEg#VdIA`Zb&_FkCHd%T76zg(Xz4oovS!=R!Y|9_wI4 zaO}`*(8s?qUHBvCwBQT9Y0@~D`^jS>I__OLQGB}0bUgR%HDhD~O6Xyy-i$lD<@#h% z#3lAAUpQli$}m!3J6_?v(Flb=NSRYU4oL%*_SKe|3KZJHg#Wv{)A7GyV>HJGy}6Rh zB+kw_E+ OwZ{byxN3$`#tku)vpzTIj0ccqD)J(J-xA G57w#i_Z>hHIW9))W|C{6Z&>-vkopFsRz$_P*HWyN?$DbR!J~4_G@4 z-9%~%C3hRmK?+#V8^m&?w$=^)9D`oh^STVgO7*ZdCJpz%UgM|)EptY=6>n^uX }Vx7xttK{Q8_4| z&JU(Arl?+BOxWN@0-dh|rDvshlG|^mIjTAjXuMrfr+i}z6EAM#Rgq{L12~%bR7S|= zRz({jtQWWCN}Zm5OA9^j8(C@qnuz-7 e$^e&Vf;k|CPN7;Q@<2$>C(qpNZbUA!%6G i+=c892NK$Z~6k^_UfI)gyjFGIv1g(A1eQDAa(USWC>tn zOv_J%A7sMe96_MU8^QR z?R;9y;P!J X~6g3dQKEYyX}F>Ryi0 zyQfQCbk){kEKG D z5mnw5e1R^P_7a~)Jrk!w?5nBY4VTXk=v0>4e^x;FhR0KGW1-~}HgxYMi|g1{jrLE( z;H&ev>sDhw855T%T)LjKkuMsj7%-MGWV&Y$SRQ-!Zj}J!L>k{|G34 y2+iY8 ziQQ^aMR1y? 73m*dOWUVV^H0k z4v)da>iZ@_w*>SE02 7VmFk^SV(GvLV<;aQ$fK%_C-P zQ`Li0oID?e5uh63FpRV`E(=NDWkQ8qwW)2umwsc(3lN6T;03i2{xLg0^BAkt)ZsB! zp@9Ro9t_^D^R%)j`{S`eU4^2iK-aH+a+qf$jhkFS_4q^;Oi0jOmcWN48~aM 8pXV3PVRw24XmR&cT~@qJ$f0R2MR(yp4i0y}=qWhgg`6Uq zq2C19V*PaV`ACO;lo0=crU1|NfB{@h7amHkOVkJARAg~GOHFEcY{%IfbmN-yMl5+k zp7>G!oy8Z1F`QKUxY?fu;&?{QQ(V8NDc7=;f(!ZNMVY%)c#*{hlCraHys>PZ4-TMR z^wr49@{ZK0MNbAMa#S975c?#P%{~W-idZQ9E*l7rq%=@d5hF<@kKG*EG(fIB1F4&G zy-mEbBdomlQK>Ecw6t~9`Qb9 |0+9_^61s89WgIo6O+y7)f1(&k91)N4nsa}aOH-D2ivf1x8=w#B701VPlNfUMjXx&4J^FCajS7kR$ic^# zU2(>hdez-SQYZhVXLZUhDm+2oiAUjnFGfmL4syZkq*N6oc|&@kjKBs89~%XCMafQV zBed)fgNg*oIggvUhme1F<0yMNp0c5vJxI;)I8~aIT~ezN)5sK~RmQNNmy*jt3}dK$ zhlWgI{QYR89JgL*_x&=LZWkk@8*p{A2^2YY3m{(>W8n!UMkNs#&Ply&EH01^`9Zwh z#0bd7jfo`Ys6>r4gA*HkXZDETTL?inx8^X^SEJgLbZq>=@g28ePKmGG&f{K^UWUfC zxZ70hMx&k;F$7JM^EE8k%1s0JxAmi0O>o>~uK6zH$Z_w4#w*Hss`CW EnShO9`Pj-qYT1!k2iYTQkxgi!D!9i26Ff$-8pqS7`* zyzdgB1F!+O%6^*MX9fUbvy6e5WMj(F+2ebN43m8bITi>bgyrnd@pYpV#gV@HUEy{j zHo6X1KI0bvjq2w%zS^p%KDMD73l4G{?Ox^|%e9?&NzQipm0d#Rx| z*1&;|FF-Q=qIn=S<(tu@^qelo34+g%S4>$ShW~W7PKJ}n6CTS{AT3Z8{!ReR08{g= z+eo!Fgm36!k |#z)CpT55P}!vjk`x3Z{EZF)`pV3iaGVsKB@5yd_}rEzrhJjikl zlku9WlaK3nex#ihxrt_ov`Z_5cN|RTWBtYAYd05IR`M_&e7|fo?-m2%vx|#mgZ^@< zR!@7Jao84EjF9hG=lB-9e)So={`%J!9qCN@6(oHK&*2kBi*EfAH5U2X&wmr%zkMtE zB09Xj=7_#h8@s-M=P`mS4!C> 6|tyFI7I)Nm)BJ zSriR4d>+iXK*w{2%Fk!hfp%eIiLgZzB<;=KUyAja8!mlb%Cnta+EXv`g2$yz1LT@E zdou1--ebQWPS|}usq6<#)~Z0)qm_{eihzRO;xy{tws30m<3>3fO>BRb`L2(tt)fok zmL85JN}+5?UG8nUv4WXQ5j8^hN!oPfSRcE-J(Q}h5|Y8om*w56!)@=YA*`SiLb;PV zr*-4U0BgQ?Sbt3aFkw6LS`q=I!vSq%0t9?a!(r6PIvVtOW01R^mDH$a=~|yHZldpQ zjR;W;TZ=J*Z^^v5y;Xw&)`fP~r{f)93SCa;r=kqKT?~JBH`mgiGciJ*w2;PE%nIT~ z>A2A2vLIS^Vf_*m7Hk)%d$T{gLWwyKN$-l_OLX`s^7T?ij*=`&RBumgIoM!)5W1;9 zpe@=SSM4IU3-cJXELY`X0$AW&l)o3RUM+Yym3W&xPKSdoEcKRV9}%t7FB#&G-3+$y zJh*xgMj^%<8@42N;DS(&Ir-}K*OoDR27WWRAK6RZK&>J`YeMp0YfU0tt?-s<| zT@AA@yt4mp$2giAxmo2X6;f0F&c=6!Z+> ~gTKUh?UsNo11g3t{x+3c%>Aiv9$;=M zi{rE#ocxHjvm4yt%}Ex=2LKC>*H1^e72d|Hs^kw|SlhO_1%S}5sn&Dl(aGtvsls6E zh;A%vsC?Ex9Dr5~LIlumjhlH-R)xNqQ*;#@CpiukiwKJ~YF p;RM@&l;|Fz~ z;ws00d)tq;(pENL }5R{U-AOaL`Cthssc3CgWZ7$9{`}FjD*}!_gZ2TPx zdOY5tbFKk0lYPbuYz1hSDLdwGx{-*ot+CMOL0@;DTt>G~9;Q25<#*m0Q{3l8aa&Zn zY5UdoqJ#!<19Gz|ZSbzvR$c!}C(^~GVKfgW<(Ju+3gbHI=+q5IFQ@2rnccR3Ocvr0 zT GPJ;o^)apM48hPI8Gn!jJ}{*`>wy^LMOe*_j-(v(SqpnaB9#rsML&!2vr8j8 zc+!ZY1`jTGvTWqD2P2;_@=Inoz9U|oNXVAkWyAmT&%ZC5k}qGrhKozITe5cw6MLBn zpu44>=VE}|i+o=Uk#FC~Ne#bcBx8lo&AMfPy!L0oP4f^d#*#n(c1xcEqUyllTOv7a zNpP&O`w?=NrwAuoTvT}>N9sdA(Q!r7>sXIuqxQ7h#e50d8USpvhhCqc_7okqM7iSi zb?7}dZgs9w1GaC5l?ehWGbLaUhcv}>jB}63oD`MvT&uB@H=>tlXpF=bH8L;p=<66= zOGRiSRD >^b>$@+WRG%HKfAo$owPH5f8}qJm{y?c;EfQNYznOQ1sQN(!m;k zWd+nj37?SnF=^QOp++=LD+E@|_RlwdQdhbPlA5Zd*#IVY2f^l#PQ`iyu2z$Ze=aZq z9=8&v?Z=NKrpW3Y9@Rm8iTbl`jCw7UMip*X*FLP{w}$O#7pch#$6Bbr*KhjrwFEVD zC&hB^lvJ-NfKE~O%Vfxxd6~~yWXtryZc)y-k=2z%JuN0#9NjJg?dIlIjE~RG&!fhq zx^<6`ls@_R^K-b63o>pO10bh!IYxq6x?k|on08#)umO?1Hm )s!K6)|yak&sv{9R)1+ z#uU0Rp?9*tKV9zNu#5*Ap5A= YrVli=xS%k7PTQst2f$Y^G4m52e>S)zDE27&ljQ9KzTXsmcSb=ZnS#v{<7{ zU-+V chh>a(HIH^+SybSF2 zY}wo1DPEmF#VjBQWm=U<%)yvEE} `nGX!r z9%qjO%B%OChhmbt-2-n&gM~#8H$sDl(%Wr$3l*5mjo4wotAo}RRpS$G a6ETk35bh{ohWI=3b{_NY4rlMUYib1v#; zjmCU-p6?f&Xsp 0dp;TovLbcpLncHOz5%lVJme{sz`-NNr-6b3 zOxQw_^Ypqbdg`M8X~{NeLyuqQm{%nRFrklE=OxAZ?PBn|heNCt_{0Lg+_?@2X|$IM zJzy_-BcE )+L`kJAsqk>0*Su5gv7SdndZZ<;xdfhZM>h zRogo`eFo28E)SOafG?+f_ZIGMt^$V1`vL?b2gWfPqY)Sz$wRSv64iW6+Bz;jY#%=o zD(}AGOYp`<wE$ FaMjhJ7Zt z7@x|;9ef;|cX)gBK(m6btAQt`zFZJksO6hQTR5`1X4nzU+i|jE*|3b!wH(jAy}eT< zz`R1S+!!5;VzlF}v)+cx#sD_v@`Ci)Vsw1@@-qoW9>Jas0y#oRYjt_{3$9?jrKYiq z^uh%ex_snkRRxSus3=pI*%vz$?`y1+|3s2mlrEylw6FEY-Hg0ootA> zJ(y9F)BwSsCwso&W-&zG>N#!qP*i@gmkW;=ZyFrjkI}TsBDyjwT3CyyScH*zpHAfh z1jm9gc)y54Z)2Vkmu2BGuW(H*3XjItcr3@qN3I+2foGLpeyH&HIK?JBOi7RI0a0h$ zYLM69tzGQdBF1Avk{cF_fT6BkrwKXSHOb{x5}S#@7O{2F01!ufH;^BErp$wmLBgX` zGwHWxzkhpN3ifX_&tLf_Szah|2#nLStXmiPm*Q!D{r*-wP8^51xwFxT;YbZ)7B_IF z<|IkeCwX5z@0Jl+HY<2TuPO+kPcA?Arzf(JcyqIp_>|bwNgW5Eh7a}4KQ&?HAN*^G zh)2u|qHP>L41_rl7#G4)u#o(^!s?CK@%jj#Gl_Rm+(chz+8}124_t@+BZ&sz9rkKS z==2Rlpbb4U1YqR#;vRMa3*q+dZ$Vr7`_#pF%#o*+`xs9A=@Z4;?dWO50dCxYv9r@m z?nT9(aO` {m8@PP&TrRE=4>R(M=+v;XUyP71UhO50EN}3B@%;s!WrN#~VfdwVWV~yQ zk!`6;_}gdn8n5Gc_EBtan6UhXaA19$PpmBZ99pbw){p0+V}g&RRH8NLsVKWVbf3~q zkF#4Wa>yIcWr&Q2sh*Dw-;1S9rO$p7V{=}2`2d0!xW1u!Xc`Z(SMZ|-HNg_3Gl3c& zeba3aj;C8UrfxA6o_z@1HSJ-=v*Lyg!fFhLpl^@#E5G@anYs+i(Q7W++-m 5QZ rt(%DgT`_2Ja%7T&G*VUA>^d*vp6x7lS=D4sGV5uN*!??v8xjx7XH3y zYy06}urCG2lXVoweH~TN(_NFv`cC6ky1KD#i1K?HAN7kbdRxPXxA_pguO{cJy$WPS zr!!=# K&2njL{NSUQ^L-cNP1EA%S z_DVDMe7`$cR!_6UPkg&5ATOR@i04?_dKPdR_IbcYC-(l(8>iW5cq_)T^JjcX$| 62Um@rx)9YHT#v!FkRMX#kJ; z6DA_b>_-k{$F?Ulgy0VdsqA>inH)G4;clvUrNS@JaDrjzQV5cd@{u4mIEvTf$zG0H zPgqTY0O>Jl$zsAxMb?GVfopE&;E>V1k5%`@Q3C5B&saAuBCsp#ZB*||SJvFqnQx<1 zTAN|db)K9_Ch>Rz5KqUu!>t$|*pPpJe=A2UPZovre!-0#b>^e!;z0pI3+xSzsK>F{ zd&2u5c%C6HJxkB8r0;2JpqI>kd}}5uyYK~9q@f~gSu2YUIm(MF6FqjP_S|;IsgR$0 z^@MyJ;ryX_9D>=AUV9O;0rF$u4OitE4W73J)}FNkkhUR>I^>hoS2PVU6dtojb%7$f zBA!!`6_O>oBclie85SXX<;Kd{4APU)mSzxtNIzEZ^*V3B()~c6!Vw#>kb~-rqx9y& zA%4hY3^jaT^E=EvF5JlKc*F)5RD<+E9J`!-4WRu!J3Ctz94KB#BI4wjGwGo(Qhwo! zy*U6*9$95%9$NDaXYlo?@nqE<8l8l4ENS+W6_ht&7nUrZNs@1t&=e<dNoO2lsQH zve2p!D%CaEb{+ur(5QKJrvO`}z%O*0KK9n*f>T3|gL&n|yWLbN;rdhcb1XF%QbX*6 zZ9ukHTk^QrJerfqnOInJnuluzq5E)if@GrL-eO)sIX$sbB)qW0LfMyw$_w)fQJo&2 zG)C5HeyO@v)@p@rYub)+2tb4IEg$S1G-mc)quJbMEWb~Z*8N(y1x0VB2diq<-CjY+ zMD^eT3%AqD1nw$tI&fYNv%|XMes?PTa5jE?u#*M6$t{UbGwn~LKGvh&y!~R)qp#rW z^JnmS`r4vzoG$M)v=WDO*jdcSX<0iwfB8!EE O7nenpFI+D)rd2mF@_4lxnbCARy&SY|Mq;Ww zAP40&cBgX;D&vK{^mOo2LOHk+51H2!v-@dc@WF8>bv%Wh(L=VlVv-xE04+aqqoq17 z?4obE@TLvCCdU(va?1I`e-eO%>c&iZjw+uzWL+kVlh>;}Mte6e8vw-pvQSu2W9TxE zC!C=H(ivx4QQ`9Tn_QVH@8g%zZ=kGO9M!5_{)DRQ@32hCBYiq%=) -{vOil)l?X zleM3-RA(o& rUT(F+iU3QS6)du)n&2=>=b&p+*-mbjiXtk4y6B`S}T)-<-hB z(vN%g>{xbwslg2aRBxVU9>HqF>aP(COI} ~vm7g4 z472b|-rXM#am*% $Z#&JTDTW?880CXMA8MpMQn`B80vI-??}gwRLsV3Q1uP=k&ZI<2AM zJm+tEQWbe3V>z{hRPimi#??D8$fhKXfVllqbK|OCZC|mgr@+`(yuobrF$G3*p``p0 zjk>W`5sZHfa%ElM`5{4TS`WEZY23yR%^*$?unBD~YW>7FPkKBsllS!~DOH>lqhqut z8O+d$4fxPgRD5gtROtki50!UbKOR$r%FPH7FV+n?d~5CU{^g68x}cZKoDMplW<4Ip zUdMd=8pT_mjMlNLLK?3T>h=`{_|;)FVrx2Yg&gZ#9E)ERFN1_{@ O@k6M{ozONUK*(G4PT1Xsx#e4>YLLo4pdfjVuA+N)AwA zwq@=Tz=+VPsTnI;n^~(5Y#Yx{q+r&vF(nQEJIL)MFurN^QO3g)K1Y*nTurIx)g!kJ zKq*xqXcWQ-U8Rl3qtyBwmKI{7BmJoPAjc;li80dW%A40UZ5b5Z`)~C8DXHHi9A}Du z8o2n;OcgJfI`v1Tf+u`9&+&w-b$IB3;Byc1qC806raI5Ua~2uT^zeMyY`(m_T=)|o z-^RGKW}@6AvXZh5c+cT|7M=Oo?gHjTj=#Tp3*Y_T_vKX6tJj|`8~QKJKnY^_nI+b^ z>TVnt@*Cfr;NsaOeEz-fz}5S=; t01-up9` zHwp{VxV_jIqegPAs(TWMpc}_NCJKYzPEH(CAMe5W sQlWoE4N$?DVo0 zDRW zj ynB-zC142AfJk}a%{OTCr0TWdW~w&XJ9 zdfR}R?X8Y
jOZZ-oNd#8{>&EoJ!5Uy8q*=$gW%J^*ljGCIvPyV`CmynCCLf zJDN#l4`HQfbx`(AQuDY72ueB~^*tChz{ X&q#z@uMMr!ggb8Qmu*zOq!P{&$%$?Y)#)|U1$6NC~ zyh$dx4U>&nw|6&yS65<0&?A|3aH(1J)lp%_ezIsMmlx*}i|+RR4sPUD>SxOi>R$Sb zc411=pLL#6=kUZHR3~R=i!t#Eu5PZy!(@^RX$%5Gyj;3sOo4Z1pPijbJW7rQd9oNW z6@OFC(z |H28hS^KCq$G%$k8T8?5)}Y3Zd*A z^3E$C=aF00%X`Shs#)CJzGN|s6kklEY Sk#}1QqR{DW}1&hMdY|;eHB$dgn-)#6{+s}S)S6Vl_VS&)62r^Hgy2X;6nMOd8rxMVN#v3SW9PHwBBp`9FJ1vM60jL zJf75uTs;7Ts4KT89~YZng-+UU?YwZ9l9U`yoAWDvUB5iWc!rO7qIIpmWjn)(=N~R! zBbyo$< pC*dPxX6qi4HhFvazd1 zEqFMs%;H2tOdYf3_3N(28R0Q76k`+s!RDGa2|GDHDu3CTj`ZogA3rP+0c;vsEcwZ= z%FDECm6-u#2o$A_*^Dq88tHWTySI5)N6@zh#cR!VM+xyT%VzS07%o9hAbt7eml}(C z*^Iorcwv!Ow1!DGoVoo;Hv3rzWZj>CUthghzPpYLMzeO&75_KY{!*~t+#IA1FB{{% ziN$uStiEv=z}oByw=swg6Asvf3*!% v$|WxsB~)8(QAHU3kLI2~64S{U`=Y zXpb}N=Aaj&qMsZ0CH0txoo=nk28r_-lN0l>PjyUmesxSc@iIsqH-J87It<38Oz8Nr zj-^UXRw^54ier1<+qcTtd3d6^$kROa-0D;iju`GpV-@=4pMda{7$Ap)MsWOOs7V&e zAKkaDLXcd`Co=%x6DQ_lQtvIf={;GR4$%4uIR3h7ul>E qs`N~3@kZk+sJ7Sf zhD!G|ZmGspb44N)o5IIj(bnBB2ws0|WY>MK9iYd}5L$t~dX%-7Nf>xMPFGa5K`@2N z1j=ObC}K0*Xv|}&h4H~_q2>TAROQnJ*<@BEg5GG@g64uwE~Q~>*7Afs7?}p2KfjdY z)j9@L!H25MPNv{-VsDBUFP_WAHgDd&mm|X*6Ou2Aah%1mYie=k^ULerpPb4OlIvwh z_1)F`1-_Rs6}W}HV;1JJ&o0j3PHxe@lGv8#OWW#!GgZ{40y3EQL*duaJ76hmkLsNF zy0KFjt8!GoSGvf|WscN(V?v<)kLB_kvfep^F|+98yhjxba&KdoNu-yXNNm1oGEX5z z^h(H=T_rT*BgYZryu6dz*iFk^kF6JUx&hfi-|u!dKAo(SyrwSOkw%77F05g%UAe{e zblH{P$v(b&i?=w(4u3eFro~u{J!#rJj~AF6iO5?>L+f_(O0jv;fKlG8j;(DlB=@Aw z^3-cqVmM?&5F4#MqZ%XPe7!9+oF}Nf3Y8em(1?2JhQuDV7&rHK8VcZ!Z&+Upn$rmu zFU>6+*rx;v^j8=kSd?&;3D}6B5GM`p${2&w9YEdq0vIh!Dr{>I8=VAKx!W?O-7%Eg zWq@E??ylI;x*xd_0Z9>+ogC>quD*Mr4ye&@n`hBmHg?;_kX%Rub55NZgKuy#kz-7E zQ}PrC9ILg3*6_t?9e-98hRBS4L4c}z43VCFOOKcO*xL DOfAjlaNQjK- zOv8U1WD$9{%!>n*5$d~CV9{TS8?B$}#bD$d1cQ%4MV%>P(ko`LOS9}Hf6ty#Sw*&l z9Ny#%&X>(P4xOSgl}o;onc9D1%}HAe#o!(TB5sH?r52T=bd!yJsMTJ1H)QMS(ZSOK zmAM>mm958f9M|M!9PPMa&~h-D&UZKv3p$Eq4Z5xn6fHyF;fpGlr*SV$7fVlH(*T`} zP3LSjehU2k8V(0gZ<~Wh&&Ek{j*lo)OsvIt|K!x@0sx=d2)X6`xt02LH5LO_)OD;n z9XP9tv(DhoEwgPjs;)GtuY%R>{|PQko~J9A@@!o6vCHQ#Wz(OHkbDUu-<19JZ~U%> z$GwEzp6nvKoy`Njt$Q!=WWVvv6Y;$K;`8q<#>?+7yzn~Uj142{wtEM+U8 F zK%oIyD})Z=nID6Y4@Ka({w=f9c5 xs{^Kv}!vU<-tIq{&Q7o&_msI3pGfuF93tD{v zKLYDJ e+0y)qXoDMR4j(8FsC7i*r7=$k3FnKz3RTE{uw1cTE(O& zH;LUUGounc!Q+jZ+C9(3Ako&D4I|Xpd+WYajC;$IvaS);6j=>*HzjNJ5_2ihKn6b7 zTY9taopE1BIr|=PLlHQbc&2<^#)b^Bnt!rel53gBzbc!`6Duoh^yBY0i%|hN{vvzY zdE6N(h;6qqUEQ4?<@hC@2~D#x^XB^9^7|5YCkTH0x0!dC1eeOc;)ZYWyJL?=HgGHp zDZZ&!S3XnX!*Pyk%Q!nbfvaUP#Rf<&zuRm4nha8Gbm@Gz^e5SQonNpX k|Bx hZzv9vWg?Ovcboq+QX6z|4z3t-Tf#mO{!^5Z5T3NjlXZ{?GZT}_K2iD^M&Rbi34 zoiQhL9xUC|-qZ`~X;K+!cB^7zsvKKC3F`AH2^89StQ%s5^B0~LxXqysqbwA-#sf?x z(>Se+fH9H0!!>WhLLrL~Xh0CuwE~TCu7j-)JJQL>oT}7xy47!~X W0jFeh8+y>@2#uk=U3A*T+&u6!El_8n*nj68VjUs^T;0<#+5DC+QiV{# z0kn~W%ikt*q2vt3+-!BagUVn2#rTDiuiQx;^Mq@-*CT|KEr`KqFwcoU{P>a>hrj*_ z-FA5w=kK&{@QrvLp$HTLeD@ktS|)0Ooc=bjf46JB{-wOPVZ*Gh;gNZ^v_x#bKRt;9 z@pyfdO%S8hj%Cz!0-6J6)@@vQpXD* s$oyT?x`zJS>X3YVQe(Gd$WDWCn z9yiwWZ^Yhjd2{O>90V+s`L1%*Z~{{lOhWd?&blctoADf7N=43l8+M{@-9CiB2jFjY zJ?eEf2jp-kK%@G-O3w03{sw8>4vL|65k4mGp){EaXM|=O=J&!uiMpa%3rXB~XMh(z zMoO!&{Ifm0+tQiO<1IH@$~*-Q9cnigJnYtCg*9OZ(A3)UR90IKL}>=|Jz?pY28YGg zC`N+td)V4P_cnOH(ZtY`!{o3h8D#VIQJ?eTs9E8NMwev4a (Fld979Upz>-yWZyVR!ccpRTW@5KN=70mXW}EX^E#{>I+>dV33Zw_o6j z3!q$FX8(;aD&mw7B{}l$AXTj&@9*JpF@g@C_L_5!C>1Q4W77;R&R_ZI`Wn97X%ytu z^-hi|7zz`w(0Nh+>vY`taX?+tiW@~VEC7rSBZ>!cAlanhHrIu=smOYC9&;$IT{4T> zziY(oWKKtbj2fWgyfHp&EThh(Y05}ZT@;d5bZfwq(I^VMe6(94>y!XMk6dEFgae-S zs0T0F{pdAjQDvv$;z-Py0m=7>+~46Kw3XOSBFAQMl>4J7fj);hPnb9e1x-owZ|KnV z=48EGK9sowfK?qPf@gL`F&& zAmK1}aF(&p=KOOV9d?vHC{mr=TtHjAnnT+vOG+^!wBvzIw&u~n2E%Hea07StH{_AY zHO!W(1GPn>ReafyR7X#emsdsSyezyY`0xMiU*Io){VP1&eS^!z0m(Vhcv1KI@+2t_ zWU @qGWN4#