From 51b07f35f00074acb6499e5cb9ecf8001184f9b5 Mon Sep 17 00:00:00 2001 From: zjwmiao <1723168479@qq.com> Date: Tue, 9 Sep 2025 16:01:06 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feature:=20=E5=8D=87=E7=BA=A7vue=E7=89=88?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 11 +- packages/euler/package.json | 3 +- packages/gauss/package.json | 3 +- packages/harmony/package.json | 3 +- packages/mindspore/package.json | 3 +- packages/openubmc/components.d.ts | 40 ++ packages/shared/package.json | 5 +- pnpm-lock.yaml | 787 ++++++++++++++++-------------- 8 files changed, 477 insertions(+), 378 deletions(-) create mode 100644 packages/openubmc/components.d.ts diff --git a/package.json b/package.json index 0f4f8b5..ba59d4d 100644 --- a/package.json +++ b/package.json @@ -8,11 +8,13 @@ "dev:harmony": "pnpm --filter harmony dev", "dev:lookeng": "pnpm --filter lookeng dev", "dev:mindspore": "pnpm --filter mindspore dev", + "dev:openubmc": "pnpm --filter openubmc dev", "build:euler": "pnpm --filter euler build", "build:gauss": "pnpm --filter gauss build", "build:harmony": "pnpm --filter harmony build", "build:lookeng": "pnpm --filter lookeng build", "build:mindspore": "pnpm --filter mindspore build", + "build:openubmc": "pnpm --filter openubmc build", "build": "pnpm build:euler && pnpm build:gauss && pnpm build:lookeng && pnpm build:mindspore && pnpm build:harmony", "lint:euler": "eslint \"packages/euler/src/**/*.{js,ts,vue,jsx,tsx}\"", "fix:euler": "eslint --fix \"packages/euler/src/**/*.{js,ts,vue,jsx,tsx}\"", @@ -24,7 +26,9 @@ "dependencies": { "@element-plus/icons-vue": "^2.0.4", "@opensig/open-analytics": "^0.0.9", + "@opensig/opendesign": "^1.0.1", "@types/d3": "^7.4.0", + "@vueuse/core": "^13.9.0", "axios": "^1.8.2", "d3": "^7.4.4", "echarts": "^5.3.2", @@ -35,15 +39,16 @@ "normalize.css": "^8.0.1", "pinia": "^2.0.11", "swiper": "^8.0.7", - "vue": "^3.2.25", + "unplugin-icons": "22.2.0", + "vue": "^3.5.20", "vue-i18n": "^9.14.3", - "vue-router": "^4.0.13" + "vue-router": "^4.5.1" }, "devDependencies": { "@rushstack/eslint-patch": "^1.10.5", "@types/js-cookie": "^3.0.6", "@types/lodash-es": "^4.17.6", - "@types/node": "^17.0.21", + "@types/node": "^22.0.0", "@vitejs/plugin-vue": "^4.6.2", "@vitejs/plugin-vue-jsx": "^4.1.1", "@vue/eslint-config-prettier": "^10.2.0", diff --git a/packages/euler/package.json b/packages/euler/package.json index 96bf8d2..1b6e28a 100644 --- a/packages/euler/package.json +++ b/packages/euler/package.json @@ -8,7 +8,6 @@ }, "dependencies": { "@opensig/opendesign": "0.0.65", - "shared": "workspace:^", - "unplugin-icons": "^0.14.0" + "shared": "workspace:^" } } diff --git a/packages/gauss/package.json b/packages/gauss/package.json index ae0b471..f467292 100644 --- a/packages/gauss/package.json +++ b/packages/gauss/package.json @@ -7,7 +7,6 @@ "build": "vue-tsc --noEmit && vite build" }, "dependencies": { - "shared": "workspace:^", - "unplugin-icons": "^0.14.0" + "shared": "workspace:^" } } diff --git a/packages/harmony/package.json b/packages/harmony/package.json index c0bcbe2..a29ec04 100644 --- a/packages/harmony/package.json +++ b/packages/harmony/package.json @@ -7,7 +7,6 @@ "build": "vue-tsc --noEmit && vite build" }, "dependencies": { - "shared": "workspace:^", - "unplugin-icons": "^0.14.0" + "shared": "workspace:^" } } \ No newline at end of file diff --git a/packages/mindspore/package.json b/packages/mindspore/package.json index 9ccbf13..8f2019b 100644 --- a/packages/mindspore/package.json +++ b/packages/mindspore/package.json @@ -7,7 +7,6 @@ "build": "vue-tsc --noEmit && vite build" }, "dependencies": { - "shared": "workspace:^", - "unplugin-icons": "^0.14.0" + "shared": "workspace:^" } } diff --git a/packages/openubmc/components.d.ts b/packages/openubmc/components.d.ts new file mode 100644 index 0000000..f596a20 --- /dev/null +++ b/packages/openubmc/components.d.ts @@ -0,0 +1,40 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +declare module 'vue' { + export interface GlobalComponents { + AppFooter: typeof import('./src/components/AppFooter.vue')['default'] + AppHeader: typeof import('./src/components/AppHeader.vue')['default'] + CommonLayout: typeof import('./src/components/CommonLayout.vue')['default'] + ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElPopover: typeof import('element-plus/es')['ElPopover'] + ElProgress: typeof import('element-plus/es')['ElProgress'] + ElRow: typeof import('element-plus/es')['ElRow'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + HeaderNav: typeof import('./src/components/HeaderNav.vue')['default'] + LoadingArc: typeof import('./src/components/LoadingArc.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + SectionCard: typeof import('./src/components/SectionCard.vue')['default'] + ToggleRadios: typeof import('./src/components/ToggleRadios.vue')['default'] + } + export interface ComponentCustomProperties { + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/packages/shared/package.json b/packages/shared/package.json index 523e0c2..dd9242e 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -2,8 +2,5 @@ "name": "shared", "private": true, "version": "0.0.1", - "scripts": {}, - "dependencies": { - "unplugin-icons": "^0.14.0" - } + "scripts": {} } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cbe3133..0b45cb8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,13 +10,19 @@ importers: dependencies: '@element-plus/icons-vue': specifier: ^2.0.4 - version: 2.0.4(vue@3.2.25) + version: 2.0.4(vue@3.5.20(typescript@4.6.2)) '@opensig/open-analytics': specifier: ^0.0.9 version: 0.0.9 + '@opensig/opendesign': + specifier: ^1.0.1 + version: 1.0.1(vue@3.5.20(typescript@4.6.2)) '@types/d3': specifier: ^7.4.0 version: 7.4.0 + '@vueuse/core': + specifier: ^13.9.0 + version: 13.9.0(vue@3.5.20(typescript@4.6.2)) axios: specifier: ^1.8.2 version: 1.8.2 @@ -28,7 +34,7 @@ importers: version: 5.3.2 element-plus: specifier: ^2.1.4 - version: 2.1.4(@types/lodash-es@4.17.6)(vue@3.2.25) + version: 2.1.4(@types/lodash-es@4.17.6)(vue@3.5.20(typescript@4.6.2)) html2canvas: specifier: ^1.4.1 version: 1.4.1 @@ -43,19 +49,22 @@ importers: version: 8.0.1 pinia: specifier: ^2.0.11 - version: 2.0.12(typescript@4.6.2)(vue@3.2.25) + version: 2.0.12(typescript@4.6.2)(vue@3.5.20(typescript@4.6.2)) swiper: specifier: ^8.0.7 version: 8.0.7 + unplugin-icons: + specifier: 22.2.0 + version: 22.2.0(@vue/compiler-sfc@3.5.20)(vue-template-compiler@2.7.16) vue: - specifier: ^3.2.25 - version: 3.2.25 + specifier: ^3.5.20 + version: 3.5.20(typescript@4.6.2) vue-i18n: specifier: ^9.14.3 - version: 9.14.3(vue@3.2.25) + version: 9.14.3(vue@3.5.20(typescript@4.6.2)) vue-router: - specifier: ^4.0.13 - version: 4.0.14(vue@3.2.25) + specifier: ^4.5.1 + version: 4.5.1(vue@3.5.20(typescript@4.6.2)) devDependencies: '@rushstack/eslint-patch': specifier: ^1.10.5 @@ -67,14 +76,14 @@ importers: specifier: ^4.17.6 version: 4.17.6 '@types/node': - specifier: ^17.0.21 - version: 17.0.22 + specifier: ^22.0.0 + version: 22.0.0 '@vitejs/plugin-vue': specifier: ^4.6.2 - version: 4.6.2(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue@3.2.25) + version: 4.6.2(vite@6.3.4(@types/node@22.0.0)(sass@1.49.9))(vue@3.5.20(typescript@4.6.2)) '@vitejs/plugin-vue-jsx': specifier: ^4.1.1 - version: 4.1.1(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue@3.2.25) + version: 4.1.1(vite@6.3.4(@types/node@22.0.0)(sass@1.49.9))(vue@3.5.20(typescript@4.6.2)) '@vue/eslint-config-prettier': specifier: ^10.2.0 version: 10.2.0(eslint@8.56.0)(prettier@3.2.5) @@ -95,13 +104,13 @@ importers: version: 4.6.2 unplugin-auto-import: specifier: ^0.11.5 - version: 0.11.5(@vueuse/core@8.1.2(vue@3.2.25))(rollup@4.40.0) + version: 0.11.5(@vueuse/core@13.9.0(vue@3.5.20(typescript@4.6.2)))(rollup@4.40.0) unplugin-vue-components: specifier: ^0.26.0 - version: 0.26.0(@babel/parser@7.26.8)(rollup@4.40.0)(vue@3.2.25) + version: 0.26.0(@babel/parser@7.28.3)(rollup@4.40.0)(vue@3.5.20(typescript@4.6.2)) vite: specifier: 6.3.4 - version: 6.3.4(@types/node@17.0.22)(sass@1.49.9) + version: 6.3.4(@types/node@22.0.0)(sass@1.49.9) vue-tsc: specifier: ^1.8.25 version: 1.8.27(typescript@4.6.2) @@ -110,46 +119,36 @@ importers: dependencies: '@opensig/opendesign': specifier: 0.0.65 - version: 0.0.65(vue@3.2.25) + version: 0.0.65(vue@3.5.20(typescript@4.6.2)) shared: specifier: workspace:^ version: link:../shared - unplugin-icons: - specifier: ^0.14.0 - version: 0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16) packages/gauss: dependencies: shared: specifier: workspace:^ version: link:../shared - unplugin-icons: - specifier: ^0.14.0 - version: 0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16) packages/harmony: dependencies: shared: specifier: workspace:^ version: link:../shared - unplugin-icons: - specifier: ^0.14.0 - version: 0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16) packages/mindspore: dependencies: shared: specifier: workspace:^ version: link:../shared - unplugin-icons: - specifier: ^0.14.0 - version: 0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16) - packages/shared: + packages/openubmc: dependencies: - unplugin-icons: - specifier: ^0.14.0 - version: 0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16) + shared: + specifier: workspace:^ + version: link:../shared + + packages/shared: {} packages: @@ -157,18 +156,15 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/install-pkg@0.1.0': - resolution: {integrity: sha512-VaIJd3d1o7irZfK1U0nvBsHMyjkuyMP3HKYVV53z8DKyulkHKmjhhtccXO51WSPeeSHIeoJEoNOKavYpS7jkZw==} - - '@antfu/utils@0.3.0': - resolution: {integrity: sha512-UU8TLr/EoXdg7OjMp0h9oDoIAVr+Z/oW9cpOxQQyrsz6Qzd2ms/1CdWx8fl2OQdFpxGmq5Vc4TwfLHId6nAZjA==} - - '@antfu/utils@0.5.0': - resolution: {integrity: sha512-MrAQ/MrPSxbh1bBrmwJjORfJymw4IqSHFBXqvxaga3ZdDM+/zokYF8DjyJpSjY2QmpmgQrajDUBJOWrYeARfzA==} + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} '@antfu/utils@0.7.8': resolution: {integrity: sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==} + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} @@ -235,14 +231,18 @@ packages: resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.16.7': - resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.25.9': resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} @@ -251,13 +251,13 @@ packages: resolution: {integrity: sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==} engines: {node: '>=6.9.0'} - '@babel/parser@7.24.7': - resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + '@babel/parser@7.26.8': + resolution: {integrity: sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.26.8': - resolution: {integrity: sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==} + '@babel/parser@7.28.3': + resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} engines: {node: '>=6.0.0'} hasBin: true @@ -291,14 +291,14 @@ packages: resolution: {integrity: sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==} engines: {node: '>=6.9.0'} - '@babel/types@7.17.0': - resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} - engines: {node: '>=6.9.0'} - '@babel/types@7.26.8': resolution: {integrity: sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + engines: {node: '>=6.9.0'} + '@ctrl/tinycolor@3.4.0': resolution: {integrity: sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==} engines: {node: '>=10'} @@ -494,11 +494,11 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead - '@iconify/types@1.0.13': - resolution: {integrity: sha512-jrJJVPnRM1HsMDnuHRTzMfgiSG6Z1U/2IYI7s8spFu9c7n1q3jcXa+3/YQz4tJVNgAhzm1dbnMxfIAyLDpCaWg==} + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@1.0.28': - resolution: {integrity: sha512-hmSS50Q6qoOcq/TKhSV0VaI5+NFwQicJLk1MBLGDUQsGtOWdIagiYBz9ricpsw6dSu0cLW2a4ZAFg9V556yH8Q==} + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} '@intlify/core-base@9.14.3': resolution: {integrity: sha512-nbJ7pKTlXFnaXPblyfiH6awAx1C0PWNNuqXAR74yRwgi5A/Re/8/5fErLY0pv4R8+EHj3ZaThMHdnuC/5OBa6g==} @@ -516,6 +516,9 @@ packages: resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -553,6 +556,11 @@ packages: peerDependencies: vue: ^3.1.0 + '@opensig/opendesign@1.0.1': + resolution: {integrity: sha512-aF5sCbNoqYfM89VS+u4RbB75M067EbvYJBbCjkigttVsXG2a/tDQKGgSoxCT4UnQq6SffOWY8o1Ks9JcXqel1Q==} + peerDependencies: + vue: ^3.3.0 + '@pkgr/core@0.1.1': resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -800,14 +808,14 @@ packages: '@types/lodash@4.14.180': resolution: {integrity: sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g==} - '@types/node@17.0.22': - resolution: {integrity: sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw==} + '@types/node@22.0.0': + resolution: {integrity: sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@types/throttle-debounce@2.1.0': - resolution: {integrity: sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==} + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} '@typescript-eslint/eslint-plugin@6.21.0': resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} @@ -909,17 +917,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.2.25': - resolution: {integrity: sha512-FlffKezIqztTCTyG0klkYRwhdyL6b1PTTCIerPb4p2R9qQaczccTX5g9ysi9w6tpLQ48a1WiXnFDJhWD7XoqwA==} - '@vue/compiler-core@3.4.27': resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==} '@vue/compiler-core@3.5.13': resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} - '@vue/compiler-dom@3.2.25': - resolution: {integrity: sha512-4JrburkRg4VWbc8AKpzKFWbNY4MDXshqjFl53+vINq7zaw3Z7aSqnLv0EkKh8B8ynf/MYsAdygGutyVbEWYxOw==} + '@vue/compiler-core@3.5.20': + resolution: {integrity: sha512-8TWXUyiqFd3GmP4JTX9hbiTFRwYHgVL/vr3cqhr4YQ258+9FADwvj7golk2sWNGHR67QgmCZ8gz80nQcMokhwg==} '@vue/compiler-dom@3.4.27': resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==} @@ -927,18 +932,21 @@ packages: '@vue/compiler-dom@3.5.13': resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} - '@vue/compiler-sfc@3.2.25': - resolution: {integrity: sha512-PminuOYIcFI7UZn+mdy2OPbogyAb0IHkVuqwmLDJiSRFhc/QAXQnO9KdS4nez3bQ9XlQmoAveQzcZuekHzdb5w==} + '@vue/compiler-dom@3.5.20': + resolution: {integrity: sha512-whB44M59XKjqUEYOMPYU0ijUV0G+4fdrHVKDe32abNdX/kJe1NUEMqsi4cwzXa9kyM9w5S8WqFsrfo1ogtBZGQ==} '@vue/compiler-sfc@3.5.13': resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} - '@vue/compiler-ssr@3.2.25': - resolution: {integrity: sha512-+BAl8U5D3JkGR6086PFx1BQQ5km3z9fT88hy/7lzf8i3vEDdPQodadnX2t6tndFjIux05MEKg43DeocOojT0mw==} + '@vue/compiler-sfc@3.5.20': + resolution: {integrity: sha512-SFcxapQc0/feWiSBfkGsa1v4DOrnMAQSYuvDMpEaxbpH5dKbnEM5KobSNSgU+1MbHCl+9ftm7oQWxvwDB6iBfw==} '@vue/compiler-ssr@3.5.13': resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + '@vue/compiler-ssr@3.5.20': + resolution: {integrity: sha512-RSl5XAMc5YFUXpDQi+UQDdVjH9FnEpLDHIALg5J0ITHxkEzJ8uQLlo7CIbjPYqmZtt6w0TsIPbo1izYXwDG7JA==} + '@vue/devtools-api@6.1.3': resolution: {integrity: sha512-79InfO2xHv+WHIrH1bHXQUiQD/wMls9qBk6WVwGCbdwP7/3zINtvqPNMtmSHXsIKjvUAHc8L0ouOj6ZQQRmcXg==} @@ -970,25 +978,19 @@ packages: typescript: optional: true - '@vue/reactivity-transform@3.2.25': - resolution: {integrity: sha512-fOiW67PUalicMfMr4Sc9l8mUtkN7ZD+G1/zJV8blzQ8GEZSeRcJm11gqve6Ps623ju5YORu7V/Q1gZoOJ9WO4g==} - - '@vue/reactivity@3.2.25': - resolution: {integrity: sha512-Dxc/u/dxoneIDqyfmuwPVBR0G3OQJqe3Dtz4z3NGt+CGj4UuOZQfN5raJPmp6xGYgrtC6PAWoCgHhyrgr1qCtg==} + '@vue/reactivity@3.5.20': + resolution: {integrity: sha512-hS8l8x4cl1fmZpSQX/NXlqWKARqEsNmfkwOIYqtR2F616NGfsLUm0G6FQBK6uDKUCVyi1YOL8Xmt/RkZcd/jYQ==} - '@vue/runtime-core@3.2.25': - resolution: {integrity: sha512-2+fo5+lofT4xr8W2rtjyz+AM+UB1U/UNLH6ISFdHWNWuveSWxF+vkCQaATmhp6O3XA7QJAbHoRqIZor20EWSfQ==} + '@vue/runtime-core@3.5.20': + resolution: {integrity: sha512-vyQRiH5uSZlOa+4I/t4Qw/SsD/gbth0SW2J7oMeVlMFMAmsG1rwDD6ok0VMmjXY3eI0iHNSSOBilEDW98PLRKw==} - '@vue/runtime-dom@3.2.25': - resolution: {integrity: sha512-3gGeyHnygn4yG6bssRKhQIxnE8vgB8FtYUUwoYoA/Pm0vZ+bGPoZax4TbtZD9eW9rvs8CY8boNp4t/sJaPJrRQ==} + '@vue/runtime-dom@3.5.20': + resolution: {integrity: sha512-KBHzPld/Djw3im0CQ7tGCpgRedryIn4CcAl047EhFTCCPT2xFf4e8j6WeKLgEEoqPSl9TYqShc3Q6tpWpz/Xgw==} - '@vue/server-renderer@3.2.25': - resolution: {integrity: sha512-qFRmcyeyyhWbnTPn6cbCZ4bjeuPLSkUpFa98p4LEJtFBFbxjGnrHXHOjYxCY3Lznmxe0kMM3qG4t3GnjcXP12w==} + '@vue/server-renderer@3.5.20': + resolution: {integrity: sha512-HthAS0lZJDH21HFJBVNTtx+ULcIbJQRpjSVomVjfyPkFSpCwvsPTA+jIzOaUm3Hrqx36ozBHePztQFg6pj5aKg==} peerDependencies: - vue: 3.2.25 - - '@vue/shared@3.2.25': - resolution: {integrity: sha512-DkHJFV2gw9WBRmUCa21eyG0WvlF0l1QFOgTkWj29O4mt2Tv3BSE5PQOKhUruZIym4bBYCqx9ZGtoD1WohDprow==} + vue: 3.5.20 '@vue/shared@3.4.27': resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==} @@ -996,6 +998,14 @@ packages: '@vue/shared@3.5.13': resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + '@vue/shared@3.5.20': + resolution: {integrity: sha512-SoRGP596KU/ig6TfgkCMbXkr4YJ91n/QSdMuqeP5r3hVIYA3CPHUBCc7Skak0EAKV+5lL4KyIh61VA/pK1CIAA==} + + '@vueuse/core@13.9.0': + resolution: {integrity: sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==} + peerDependencies: + vue: ^3.5.0 + '@vueuse/core@8.1.2': resolution: {integrity: sha512-prI2GzigBUtJNTcwRjJPzUPLFoRZM1RZFR464DFdwgU8TxRFf7dRvuvWFDNbCATzLExHFnGI3zTp9GkXTTZxgQ==} peerDependencies: @@ -1007,9 +1017,17 @@ packages: vue: optional: true + '@vueuse/metadata@13.9.0': + resolution: {integrity: sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==} + '@vueuse/metadata@8.1.2': resolution: {integrity: sha512-LrPtdiYMleygnGmz8mEmYI9h4Eyo+/igxZWNrwuPnqvL9pIO+8eUpBgPLH5GowKv3Nu0LPZSXSIuaWVJBSU1Cg==} + '@vueuse/shared@13.9.0': + resolution: {integrity: sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==} + peerDependencies: + vue: ^3.5.0 + '@vueuse/shared@8.1.2': resolution: {integrity: sha512-4Hb9iPUhAz7ghO4hgvB2GV2FOy12qQGdhmQ+9HC6QN/J66DELhmxAvkZAtK5FBqZOSwzKszPqNqoyhRKQrrWGQ==} peerDependencies: @@ -1036,6 +1054,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -1137,6 +1160,12 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1147,8 +1176,8 @@ packages: css-line-break@2.1.0: resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} - csstype@2.6.21: - resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} d3-array@3.1.6: resolution: {integrity: sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA==} @@ -1296,6 +1325,15 @@ packages: supports-color: optional: true + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1461,9 +1499,8 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1547,10 +1584,6 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1571,6 +1604,10 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -1610,10 +1647,6 @@ packages: resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} engines: {node: '>=8.0.0'} - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -1670,10 +1703,6 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1707,21 +1736,21 @@ packages: jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - kolorist@1.5.1: - resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - local-pkg@0.4.1: - resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==} - engines: {node: '>=14'} - local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -1745,9 +1774,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - magic-string@0.26.7: resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} engines: {node: '>=12'} @@ -1770,9 +1796,6 @@ packages: memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1789,10 +1812,6 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -1807,12 +1826,23 @@ packages: mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + muggle-string@0.3.1: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1834,17 +1864,9 @@ packages: normalize.css@8.0.1: resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -1857,6 +1879,9 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1886,6 +1911,9 @@ packages: pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1897,6 +1925,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pinia@2.0.12: resolution: {integrity: sha512-tUeuYGFrLU5irmGyRAIxp35q1OTcZ8sKpGT4XkPeVcG35W4R6cfXDbCGexzmVqH5lTQJJTXXbNGutIu9yS5yew==} peerDependencies: @@ -1912,10 +1944,20 @@ packages: pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + postcss@8.5.3: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -1936,6 +1978,9 @@ packages: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2002,9 +2047,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -2017,10 +2059,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead @@ -2032,10 +2070,6 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -2068,14 +2102,13 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinyglobby@0.2.13: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2112,6 +2145,12 @@ packages: ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + undici-types@6.11.1: + resolution: {integrity: sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==} + unimport@1.3.0: resolution: {integrity: sha512-fOkrdxglsHd428yegH0wPH/6IfaSdDeMXtdRGn6en/ccyzc2aaoxiUTMrJyc6Bu+xoa18RJRPMfLUHEzjz8atw==} @@ -2124,18 +2163,24 @@ packages: '@vueuse/core': optional: true - unplugin-icons@0.14.0: - resolution: {integrity: sha512-VznBG8Jl9D4jtsAIY8hycyQZEDB8KVjnk19MzMlifLLs4QoIUPx8TILDoy6U46yDeYViqZu4hvb5fYI5OarekQ==} + unplugin-icons@22.2.0: + resolution: {integrity: sha512-OdrXCiXexC1rFd0QpliAgcd4cMEEEQtoCf2WIrRIGu4iW6auBPpQKMCBeWxoe55phYdRyZLUWNOtzyTX+HOFSA==} peerDependencies: - '@svgr/core': '>=5.5.0' - '@vue/compiler-sfc': ^3.0.2 + '@svgr/core': '>=7.0.0' + '@svgx/core': ^1.0.1 + '@vue/compiler-sfc': ^3.0.2 || ^2.7.0 + svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 vue-template-compiler: ^2.6.12 vue-template-es2015-compiler: ^1.9.0 peerDependenciesMeta: '@svgr/core': optional: true + '@svgx/core': + optional: true '@vue/compiler-sfc': optional: true + svelte: + optional: true vue-template-compiler: optional: true vue-template-es2015-compiler: @@ -2154,27 +2199,14 @@ packages: '@nuxt/kit': optional: true - unplugin@0.5.2: - resolution: {integrity: sha512-3SPYtus/56cxyD4jfjrnqCvb6jPxvdqJNaRXnEaG2BhNEMaoygu/39AG+LwKmiIUzj4XHyitcfZ7scGlWfEigA==} - peerDependencies: - esbuild: '>=0.13' - rollup: ^2.50.0 - vite: ^2.3.0 - webpack: 4 || 5 - peerDependenciesMeta: - esbuild: - optional: true - rollup: - optional: true - vite: - optional: true - webpack: - optional: true - unplugin@1.10.1: resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==} engines: {node: '>=14.0.0'} + unplugin@2.3.10: + resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} + engines: {node: '>=18.12.0'} + update-browserslist-db@1.1.2: resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} hasBin: true @@ -2260,8 +2292,8 @@ packages: peerDependencies: vue: ^3.0.0 - vue-router@4.0.14: - resolution: {integrity: sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==} + vue-router@4.5.1: + resolution: {integrity: sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==} peerDependencies: vue: ^3.2.0 @@ -2274,8 +2306,13 @@ packages: peerDependencies: typescript: '*' - vue@3.2.25: - resolution: {integrity: sha512-jU3t7fyQDHoCWCqhmRrnSmYZvHC35tOJTP704di7HGfq5EcFA1cU/1ZPjUV1eCxJev65Khjyfni+vk9oa+eTtw==} + vue@3.5.20: + resolution: {integrity: sha512-2sBz0x/wis5TkF1XZ2vH25zWq3G1bFEPOfkBcx2ikowmphoQsPH6X0V3mmPCXA2K1N/XGTnifVyDQP4GfDDeQw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} @@ -2284,9 +2321,6 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - webpack-virtual-modules@0.4.3: - resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==} - webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} @@ -2319,19 +2353,15 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/install-pkg@0.1.0': - dependencies: - execa: 5.1.1 - find-up: 5.0.0 - - '@antfu/utils@0.3.0': + '@antfu/install-pkg@1.1.0': dependencies: - '@types/throttle-debounce': 2.1.0 - - '@antfu/utils@0.5.0': {} + package-manager-detector: 1.3.0 + tinyexec: 1.0.1 '@antfu/utils@0.7.8': {} + '@antfu/utils@8.1.1': {} + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -2441,10 +2471,12 @@ snapshots: '@babel/helper-string-parser@7.25.9': {} - '@babel/helper-validator-identifier@7.16.7': {} + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-option@7.25.9': {} '@babel/helpers@7.26.7': @@ -2452,14 +2484,14 @@ snapshots: '@babel/template': 7.26.8 '@babel/types': 7.26.8 - '@babel/parser@7.24.7': - dependencies: - '@babel/types': 7.17.0 - '@babel/parser@7.26.8': dependencies: '@babel/types': 7.26.8 + '@babel/parser@7.28.3': + dependencies: + '@babel/types': 7.28.2 + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.8)': dependencies: '@babel/core': 7.26.8 @@ -2496,30 +2528,30 @@ snapshots: '@babel/parser': 7.26.8 '@babel/template': 7.26.8 '@babel/types': 7.26.8 - debug: 4.3.4 + debug: 4.4.1 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.17.0': - dependencies: - '@babel/helper-validator-identifier': 7.16.7 - to-fast-properties: 2.0.0 - '@babel/types@7.26.8': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.28.2': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@ctrl/tinycolor@3.4.0': {} - '@element-plus/icons-vue@1.1.4(vue@3.2.25)': + '@element-plus/icons-vue@1.1.4(vue@3.5.20(typescript@4.6.2))': dependencies: - vue: 3.2.25 + vue: 3.5.20(typescript@4.6.2) - '@element-plus/icons-vue@2.0.4(vue@3.2.25)': + '@element-plus/icons-vue@2.0.4(vue@3.5.20(typescript@4.6.2))': dependencies: - vue: 3.2.25 + vue: 3.5.20(typescript@4.6.2) '@esbuild/aix-ppc64@0.25.2': optional: true @@ -2631,16 +2663,18 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@iconify/types@1.0.13': {} + '@iconify/types@2.0.0': {} - '@iconify/utils@1.0.28': + '@iconify/utils@2.3.0': dependencies: - '@antfu/install-pkg': 0.1.0 - '@antfu/utils': 0.3.0 - '@iconify/types': 1.0.13 - debug: 4.3.4 - kolorist: 1.5.1 - local-pkg: 0.4.1 + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 8.1.1 + '@iconify/types': 2.0.0 + debug: 4.4.1 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.2 + mlly: 1.8.0 transitivePeerDependencies: - supports-color @@ -2662,6 +2696,11 @@ snapshots: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} @@ -2693,10 +2732,14 @@ snapshots: uuid: 10.0.0 web-vitals: 4.2.4 - '@opensig/opendesign@0.0.65(vue@3.2.25)': + '@opensig/opendesign@0.0.65(vue@3.5.20(typescript@4.6.2))': dependencies: date-fns: 2.30.0 - vue: 3.2.25 + vue: 3.5.20(typescript@4.6.2) + + '@opensig/opendesign@1.0.1(vue@3.5.20(typescript@4.6.2))': + dependencies: + vue: 3.5.20(typescript@4.6.2) '@pkgr/core@0.1.1': {} @@ -2907,11 +2950,13 @@ snapshots: '@types/lodash@4.14.180': {} - '@types/node@17.0.22': {} + '@types/node@22.0.0': + dependencies: + undici-types: 6.11.1 '@types/semver@7.5.8': {} - '@types/throttle-debounce@2.1.0': {} + '@types/web-bluetooth@0.0.21': {} '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.6.2))(eslint@8.56.0)(typescript@4.6.2)': dependencies: @@ -2955,7 +3000,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.6.2) '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@4.6.2) - debug: 4.3.4 + debug: 4.4.1 eslint: 8.56.0 ts-api-utils: 1.4.3(typescript@4.6.2) optionalDependencies: @@ -2969,7 +3014,7 @@ snapshots: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.4.1 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -3001,20 +3046,20 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue-jsx@4.1.1(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue@3.2.25)': + '@vitejs/plugin-vue-jsx@4.1.1(vite@6.3.4(@types/node@22.0.0)(sass@1.49.9))(vue@3.5.20(typescript@4.6.2))': dependencies: '@babel/core': 7.26.8 '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.8) '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.8) - vite: 6.3.4(@types/node@17.0.22)(sass@1.49.9) - vue: 3.2.25 + vite: 6.3.4(@types/node@22.0.0)(sass@1.49.9) + vue: 3.5.20(typescript@4.6.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@4.6.2(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue@3.2.25)': + '@vitejs/plugin-vue@4.6.2(vite@6.3.4(@types/node@22.0.0)(sass@1.49.9))(vue@3.5.20(typescript@4.6.2))': dependencies: - vite: 6.3.4(@types/node@17.0.22)(sass@1.49.9) - vue: 3.2.25 + vite: 6.3.4(@types/node@22.0.0)(sass@1.49.9) + vue: 3.5.20(typescript@4.6.2) '@volar/language-core@1.11.1': dependencies: @@ -3059,16 +3104,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@vue/compiler-core@3.2.25': - dependencies: - '@babel/parser': 7.24.7 - '@vue/shared': 3.2.25 - estree-walker: 2.0.2 - source-map: 0.6.1 - '@vue/compiler-core@3.4.27': dependencies: - '@babel/parser': 7.24.7 + '@babel/parser': 7.26.8 '@vue/shared': 3.4.27 entities: 4.5.0 estree-walker: 2.0.2 @@ -3082,10 +3120,13 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.2.25': + '@vue/compiler-core@3.5.20': dependencies: - '@vue/compiler-core': 3.2.25 - '@vue/shared': 3.2.25 + '@babel/parser': 7.28.3 + '@vue/shared': 3.5.20 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 '@vue/compiler-dom@3.4.27': dependencies: @@ -3097,18 +3138,10 @@ snapshots: '@vue/compiler-core': 3.5.13 '@vue/shared': 3.5.13 - '@vue/compiler-sfc@3.2.25': + '@vue/compiler-dom@3.5.20': dependencies: - '@babel/parser': 7.24.7 - '@vue/compiler-core': 3.2.25 - '@vue/compiler-dom': 3.2.25 - '@vue/compiler-ssr': 3.2.25 - '@vue/reactivity-transform': 3.2.25 - '@vue/shared': 3.2.25 - estree-walker: 2.0.2 - magic-string: 0.25.9 - postcss: 8.5.3 - source-map: 0.6.1 + '@vue/compiler-core': 3.5.20 + '@vue/shared': 3.5.20 '@vue/compiler-sfc@3.5.13': dependencies: @@ -3122,16 +3155,28 @@ snapshots: postcss: 8.5.3 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.2.25': + '@vue/compiler-sfc@3.5.20': dependencies: - '@vue/compiler-dom': 3.2.25 - '@vue/shared': 3.2.25 + '@babel/parser': 7.28.3 + '@vue/compiler-core': 3.5.20 + '@vue/compiler-dom': 3.5.20 + '@vue/compiler-ssr': 3.5.20 + '@vue/shared': 3.5.20 + estree-walker: 2.0.2 + magic-string: 0.30.17 + postcss: 8.5.6 + source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.13': dependencies: '@vue/compiler-dom': 3.5.13 '@vue/shared': 3.5.13 + '@vue/compiler-ssr@3.5.20': + dependencies: + '@vue/compiler-dom': 3.5.20 + '@vue/shared': 3.5.20 + '@vue/devtools-api@6.1.3': {} '@vue/devtools-api@6.6.4': {} @@ -3171,56 +3216,62 @@ snapshots: optionalDependencies: typescript: 4.6.2 - '@vue/reactivity-transform@3.2.25': - dependencies: - '@babel/parser': 7.24.7 - '@vue/compiler-core': 3.2.25 - '@vue/shared': 3.2.25 - estree-walker: 2.0.2 - magic-string: 0.25.9 - - '@vue/reactivity@3.2.25': + '@vue/reactivity@3.5.20': dependencies: - '@vue/shared': 3.2.25 + '@vue/shared': 3.5.20 - '@vue/runtime-core@3.2.25': + '@vue/runtime-core@3.5.20': dependencies: - '@vue/reactivity': 3.2.25 - '@vue/shared': 3.2.25 + '@vue/reactivity': 3.5.20 + '@vue/shared': 3.5.20 - '@vue/runtime-dom@3.2.25': + '@vue/runtime-dom@3.5.20': dependencies: - '@vue/runtime-core': 3.2.25 - '@vue/shared': 3.2.25 - csstype: 2.6.21 + '@vue/reactivity': 3.5.20 + '@vue/runtime-core': 3.5.20 + '@vue/shared': 3.5.20 + csstype: 3.1.3 - '@vue/server-renderer@3.2.25(vue@3.2.25)': + '@vue/server-renderer@3.5.20(vue@3.5.20(typescript@4.6.2))': dependencies: - '@vue/compiler-ssr': 3.2.25 - '@vue/shared': 3.2.25 - vue: 3.2.25 - - '@vue/shared@3.2.25': {} + '@vue/compiler-ssr': 3.5.20 + '@vue/shared': 3.5.20 + vue: 3.5.20(typescript@4.6.2) '@vue/shared@3.4.27': {} '@vue/shared@3.5.13': {} - '@vueuse/core@8.1.2(vue@3.2.25)': + '@vue/shared@3.5.20': {} + + '@vueuse/core@13.9.0(vue@3.5.20(typescript@4.6.2))': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 13.9.0 + '@vueuse/shared': 13.9.0(vue@3.5.20(typescript@4.6.2)) + vue: 3.5.20(typescript@4.6.2) + + '@vueuse/core@8.1.2(vue@3.5.20(typescript@4.6.2))': dependencies: '@vueuse/metadata': 8.1.2 - '@vueuse/shared': 8.1.2(vue@3.2.25) - vue-demi: 0.12.4(vue@3.2.25) + '@vueuse/shared': 8.1.2(vue@3.5.20(typescript@4.6.2)) + vue-demi: 0.12.4(vue@3.5.20(typescript@4.6.2)) optionalDependencies: - vue: 3.2.25 + vue: 3.5.20(typescript@4.6.2) + + '@vueuse/metadata@13.9.0': {} '@vueuse/metadata@8.1.2': {} - '@vueuse/shared@8.1.2(vue@3.2.25)': + '@vueuse/shared@13.9.0(vue@3.5.20(typescript@4.6.2))': + dependencies: + vue: 3.5.20(typescript@4.6.2) + + '@vueuse/shared@8.1.2(vue@3.5.20(typescript@4.6.2))': dependencies: - vue-demi: 0.12.4(vue@3.2.25) + vue-demi: 0.12.4(vue@3.5.20(typescript@4.6.2)) optionalDependencies: - vue: 3.2.25 + vue: 3.5.20(typescript@4.6.2) acorn-jsx@5.3.2(acorn@8.11.3): dependencies: @@ -3230,6 +3281,8 @@ snapshots: acorn@8.11.3: {} + acorn@8.15.0: {} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -3344,6 +3397,10 @@ snapshots: concat-map@0.0.1: {} + confbox@0.1.8: {} + + confbox@0.2.2: {} + convert-source-map@2.0.0: {} cross-spawn@7.0.3: @@ -3356,7 +3413,7 @@ snapshots: dependencies: utrie: 1.0.2 - csstype@2.6.21: {} + csstype@3.1.3: {} d3-array@3.1.6: dependencies: @@ -3522,6 +3579,10 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.4.1: + dependencies: + ms: 2.1.3 + deep-is@0.1.4: {} delaunator@5.0.0: @@ -3555,12 +3616,12 @@ snapshots: electron-to-chromium@1.5.98: {} - element-plus@2.1.4(@types/lodash-es@4.17.6)(vue@3.2.25): + element-plus@2.1.4(@types/lodash-es@4.17.6)(vue@3.5.20(typescript@4.6.2)): dependencies: '@ctrl/tinycolor': 3.4.0 - '@element-plus/icons-vue': 1.1.4(vue@3.2.25) + '@element-plus/icons-vue': 1.1.4(vue@3.5.20(typescript@4.6.2)) '@popperjs/core': 2.11.4 - '@vueuse/core': 8.1.2(vue@3.2.25) + '@vueuse/core': 8.1.2(vue@3.5.20(typescript@4.6.2)) async-validator: 4.0.7 dayjs: 1.11.0 escape-html: 1.0.3 @@ -3569,7 +3630,7 @@ snapshots: lodash-unified: 1.0.2(@types/lodash-es@4.17.6)(lodash-es@4.17.21)(lodash@4.17.21) memoize-one: 6.0.0 normalize-wheel-es: 1.1.1 - vue: 3.2.25 + vue: 3.5.20(typescript@4.6.2) transitivePeerDependencies: - '@types/lodash-es' - '@vue/composition-api' @@ -3744,17 +3805,7 @@ snapshots: esutils@2.0.3: {} - execa@5.1.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 + exsolve@1.0.7: {} fast-deep-equal@3.1.3: {} @@ -3836,8 +3887,6 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-stream@6.0.1: {} - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -3861,6 +3910,8 @@ snapshots: dependencies: type-fest: 0.20.2 + globals@15.15.0: {} + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -3895,8 +3946,6 @@ snapshots: css-line-break: 2.1.0 text-segmentation: 1.0.3 - human-signals@2.1.0: {} - iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 @@ -3941,8 +3990,6 @@ snapshots: is-path-inside@3.0.3: {} - is-stream@2.0.1: {} - isexe@2.0.0: {} js-cookie@3.0.5: {} @@ -3963,17 +4010,21 @@ snapshots: jsonc-parser@3.2.0: {} - kolorist@1.5.1: {} + kolorist@1.8.0: {} levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - local-pkg@0.4.1: {} - local-pkg@0.4.3: {} + local-pkg@1.1.2: + dependencies: + mlly: 1.8.0 + pkg-types: 2.3.0 + quansync: 0.2.11 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -3994,10 +4045,6 @@ snapshots: dependencies: yallist: 3.1.1 - magic-string@0.25.9: - dependencies: - sourcemap-codec: 1.4.8 - magic-string@0.26.7: dependencies: sourcemap-codec: 1.4.8 @@ -4018,8 +4065,6 @@ snapshots: memoize-one@6.0.0: {} - merge-stream@2.0.0: {} - merge2@1.4.1: {} micromatch@4.0.4: @@ -4033,8 +4078,6 @@ snapshots: dependencies: mime-db: 1.52.0 - mimic-fn@2.1.0: {} - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -4054,10 +4097,21 @@ snapshots: pkg-types: 1.0.3 ufo: 1.3.2 + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + ms@2.1.2: {} + ms@2.1.3: {} + muggle-string@0.3.1: {} + nanoid@3.3.11: {} + nanoid@3.3.8: {} natural-compare@1.4.0: {} @@ -4070,18 +4124,10 @@ snapshots: normalize.css@8.0.1: {} - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - once@1.4.0: dependencies: wrappy: 1.0.2 - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -4099,6 +4145,8 @@ snapshots: dependencies: p-limit: 3.1.0 + package-manager-detector@1.3.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -4117,17 +4165,21 @@ snapshots: pathe@1.1.1: {} + pathe@2.0.3: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.2: {} - pinia@2.0.12(typescript@4.6.2)(vue@3.2.25): + picomatch@4.0.3: {} + + pinia@2.0.12(typescript@4.6.2)(vue@3.5.20(typescript@4.6.2)): dependencies: '@vue/devtools-api': 6.1.3 - vue: 3.2.25 - vue-demi: 0.12.4(vue@3.2.25) + vue: 3.5.20(typescript@4.6.2) + vue-demi: 0.12.4(vue@3.5.20(typescript@4.6.2)) optionalDependencies: typescript: 4.6.2 @@ -4137,12 +4189,30 @@ snapshots: mlly: 1.4.2 pathe: 1.1.1 + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + + pkg-types@2.3.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.7 + pathe: 2.0.3 + postcss@8.5.3: dependencies: nanoid: 3.3.8 picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.0: @@ -4155,6 +4225,8 @@ snapshots: punycode@2.1.1: {} + quansync@0.2.11: {} + queue-microtask@1.2.3: {} readdirp@3.6.0: @@ -4229,16 +4301,12 @@ snapshots: shebang-regex@3.0.0: {} - signal-exit@3.0.7: {} - slash@3.0.0: {} source-map-js@1.0.2: {} source-map-js@1.2.1: {} - source-map@0.6.1: {} - sourcemap-codec@1.4.8: {} ssr-window@4.0.2: {} @@ -4247,8 +4315,6 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-final-newline@2.0.0: {} - strip-json-comments@3.1.1: {} strip-literal@1.3.0: @@ -4279,13 +4345,13 @@ snapshots: text-table@0.2.0: {} + tinyexec@1.0.1: {} + tinyglobby@0.2.13: dependencies: fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 - to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -4310,6 +4376,10 @@ snapshots: ufo@1.3.2: {} + ufo@1.6.1: {} + + undici-types@6.11.1: {} + unimport@1.3.0(rollup@4.40.0): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.40.0) @@ -4326,7 +4396,7 @@ snapshots: transitivePeerDependencies: - rollup - unplugin-auto-import@0.11.5(@vueuse/core@8.1.2(vue@3.2.25))(rollup@4.40.0): + unplugin-auto-import@0.11.5(@vueuse/core@13.9.0(vue@3.5.20(typescript@4.6.2)))(rollup@4.40.0): dependencies: '@antfu/utils': 0.7.8 '@rollup/pluginutils': 5.1.0(rollup@4.40.0) @@ -4335,30 +4405,24 @@ snapshots: unimport: 1.3.0(rollup@4.40.0) unplugin: 1.10.1 optionalDependencies: - '@vueuse/core': 8.1.2(vue@3.2.25) + '@vueuse/core': 13.9.0(vue@3.5.20(typescript@4.6.2)) transitivePeerDependencies: - rollup - unplugin-icons@0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16): + unplugin-icons@22.2.0(@vue/compiler-sfc@3.5.20)(vue-template-compiler@2.7.16): dependencies: - '@antfu/install-pkg': 0.1.0 - '@antfu/utils': 0.5.0 - '@iconify/utils': 1.0.28 - debug: 4.3.4 - kolorist: 1.5.1 - local-pkg: 0.4.1 - unplugin: 0.5.2(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9)) + '@antfu/install-pkg': 1.1.0 + '@iconify/utils': 2.3.0 + debug: 4.4.1 + local-pkg: 1.1.2 + unplugin: 2.3.10 optionalDependencies: - '@vue/compiler-sfc': 3.5.13 + '@vue/compiler-sfc': 3.5.20 vue-template-compiler: 2.7.16 transitivePeerDependencies: - - esbuild - - rollup - supports-color - - vite - - webpack - unplugin-vue-components@0.26.0(@babel/parser@7.26.8)(rollup@4.40.0)(vue@3.2.25): + unplugin-vue-components@0.26.0(@babel/parser@7.28.3)(rollup@4.40.0)(vue@3.5.20(typescript@4.6.2)): dependencies: '@antfu/utils': 0.7.8 '@rollup/pluginutils': 5.1.0(rollup@4.40.0) @@ -4370,23 +4434,13 @@ snapshots: minimatch: 9.0.4 resolve: 1.22.8 unplugin: 1.10.1 - vue: 3.2.25 + vue: 3.5.20(typescript@4.6.2) optionalDependencies: - '@babel/parser': 7.26.8 + '@babel/parser': 7.28.3 transitivePeerDependencies: - rollup - supports-color - unplugin@0.5.2(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9)): - dependencies: - chokidar: 3.5.3 - webpack-sources: 3.2.3 - webpack-virtual-modules: 0.4.3 - optionalDependencies: - esbuild: 0.25.2 - rollup: 4.40.0 - vite: 6.3.4(@types/node@17.0.22)(sass@1.49.9) - unplugin@1.10.1: dependencies: acorn: 8.11.3 @@ -4394,6 +4448,13 @@ snapshots: webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.2 + unplugin@2.3.10: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.15.0 + picomatch: 4.0.3 + webpack-virtual-modules: 0.6.2 + update-browserslist-db@1.1.2(browserslist@4.24.4): dependencies: browserslist: 4.24.4 @@ -4410,7 +4471,7 @@ snapshots: uuid@10.0.0: {} - vite@6.3.4(@types/node@17.0.22)(sass@1.49.9): + vite@6.3.4(@types/node@22.0.0)(sass@1.49.9): dependencies: esbuild: 0.25.2 fdir: 6.4.4(picomatch@4.0.2) @@ -4419,17 +4480,17 @@ snapshots: rollup: 4.40.0 tinyglobby: 0.2.13 optionalDependencies: - '@types/node': 17.0.22 + '@types/node': 22.0.0 fsevents: 2.3.3 sass: 1.49.9 - vue-demi@0.12.4(vue@3.2.25): + vue-demi@0.12.4(vue@3.5.20(typescript@4.6.2)): dependencies: - vue: 3.2.25 + vue: 3.5.20(typescript@4.6.2) vue-eslint-parser@8.3.0(eslint@8.56.0): dependencies: - debug: 4.3.4 + debug: 4.4.1 eslint: 8.56.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -4453,17 +4514,17 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@9.14.3(vue@3.2.25): + vue-i18n@9.14.3(vue@3.5.20(typescript@4.6.2)): dependencies: '@intlify/core-base': 9.14.3 '@intlify/shared': 9.14.3 '@vue/devtools-api': 6.6.4 - vue: 3.2.25 + vue: 3.5.20(typescript@4.6.2) - vue-router@4.0.14(vue@3.2.25): + vue-router@4.5.1(vue@3.5.20(typescript@4.6.2)): dependencies: - '@vue/devtools-api': 6.1.3 - vue: 3.2.25 + '@vue/devtools-api': 6.6.4 + vue: 3.5.20(typescript@4.6.2) vue-template-compiler@2.7.16: dependencies: @@ -4477,20 +4538,20 @@ snapshots: semver: 7.6.2 typescript: 4.6.2 - vue@3.2.25: + vue@3.5.20(typescript@4.6.2): dependencies: - '@vue/compiler-dom': 3.2.25 - '@vue/compiler-sfc': 3.2.25 - '@vue/runtime-dom': 3.2.25 - '@vue/server-renderer': 3.2.25(vue@3.2.25) - '@vue/shared': 3.2.25 + '@vue/compiler-dom': 3.5.20 + '@vue/compiler-sfc': 3.5.20 + '@vue/runtime-dom': 3.5.20 + '@vue/server-renderer': 3.5.20(vue@3.5.20(typescript@4.6.2)) + '@vue/shared': 3.5.20 + optionalDependencies: + typescript: 4.6.2 web-vitals@4.2.4: {} webpack-sources@3.2.3: {} - webpack-virtual-modules@0.4.3: {} - webpack-virtual-modules@0.6.2: {} which@2.0.2: -- Gitee From 0759f03cd8323e22430029511a65d97ce839de70 Mon Sep 17 00:00:00 2001 From: zjwmiao <1723168479@qq.com> Date: Tue, 9 Sep 2025 20:09:56 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feature:=20openubmc=E8=B4=A1=E7=8C=AE?= =?UTF-8?q?=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/openubmc/Dockerfile | 160 ++ deploy/openubmc/nginx.conf | 152 ++ packages/openubmc/.env.development | 4 + packages/openubmc/.env.production | 4 + packages/openubmc/auto-imports.d.ts | 5 + packages/openubmc/index.html | 32 + packages/openubmc/package.json | 17 + packages/openubmc/public/favicon.ico | Bin 0 -> 19211 bytes packages/openubmc/public/footer-bg.png | Bin 0 -> 89594 bytes packages/openubmc/src/App.vue | 89 + packages/openubmc/src/assets/bg.png | Bin 0 -> 434367 bytes .../src/assets/category/home/recordal.png | Bin 0 -> 1187 bytes .../src/assets/category/home/wechat-qr.jpg | Bin 0 -> 100677 bytes .../src/assets/category/home/wechat.svg | 3 + packages/openubmc/src/assets/cose.png | Bin 0 -> 328 bytes packages/openubmc/src/assets/style/base.scss | 124 + .../src/assets/style/element/index.scss | 7 + packages/openubmc/src/assets/style/grid.scss | 67 + .../src/assets/style/mixin/common.scss | 45 + .../openubmc/src/assets/style/mixin/font.scss | 233 ++ .../src/assets/style/mixin/screen.scss | 94 + .../src/assets/style/theme/dark.token.css | 2064 ++++++++++++++++ .../style/theme/default-light.token.css | 2065 +++++++++++++++++ .../src/assets/style/theme/element-plus.scss | 43 + .../src/assets/style/theme/index.scss | 61 + .../src/assets/style/theme/media.token.scss | 157 ++ .../src/assets/style/theme/mixin.scss | 89 + .../openubmc/src/assets/svg-icons/empty.svg | 107 + .../openubmc/src/assets/svg-icons/gitcode.svg | 1 + .../src/assets/svg-icons/logo-white.svg | 13 + .../openubmc/src/assets/svg-icons/logo.svg | 13 + .../openubmc/src/assets/svg-icons/mail.svg | 1 + packages/openubmc/src/assets/title-bg.png | Bin 0 -> 239605 bytes .../openubmc/src/components/AppFooter.vue | 294 +++ .../openubmc/src/components/AppHeader.vue | 287 +++ .../openubmc/src/components/CommonLayout.vue | 28 + .../openubmc/src/components/HeaderNav.vue | 67 + .../openubmc/src/components/LoadingArc.vue | 61 + .../openubmc/src/components/SectionCard.vue | 26 + .../openubmc/src/components/ToggleRadios.vue | 25 + .../src/composables/useCommonFilters.ts | 43 + packages/openubmc/src/config/home.ts | 123 + packages/openubmc/src/config/url-config.ts | 7 + packages/openubmc/src/i18n/footer/index.ts | 5 + packages/openubmc/src/i18n/footer/zh.ts | 18 + packages/openubmc/src/i18n/header/index.ts | 5 + packages/openubmc/src/i18n/header/zh.ts | 38 + packages/openubmc/src/i18n/index.ts | 20 + packages/openubmc/src/i18n/lang/enLanguage.ts | 157 ++ packages/openubmc/src/i18n/lang/zhLanguage.ts | 154 ++ packages/openubmc/src/main.ts | 19 + packages/openubmc/src/router/index.ts | 58 + packages/openubmc/src/shared/common.ts | 12 + packages/openubmc/src/shared/utils/index.ts | 35 + packages/openubmc/src/stores/common.ts | 54 + packages/openubmc/src/stores/company.ts | 71 + packages/openubmc/src/stores/login.ts | 43 + packages/openubmc/src/stores/person.ts | 58 + .../src/views/detail/CompanyContribution.vue | 106 + .../src/views/detail/CompanyDataBarChart.vue | 276 +++ packages/openubmc/src/views/detail/Index.vue | 72 + .../openubmc/src/views/detail/SigOverview.vue | 96 + .../src/views/detail/UserContribution.vue | 168 ++ .../openubmc/src/views/overview/Index.vue | 179 ++ packages/openubmc/src/views/sig/Index.vue | 276 +++ packages/openubmc/src/views/sig/Sidebar.vue | 167 ++ .../src/views/user/ContributeDynamic.vue | 274 +++ .../src/views/user/ContributionData.vue | 298 +++ packages/openubmc/src/views/user/Index.vue | 31 + packages/openubmc/src/views/user/Sidebar.vue | 276 +++ packages/openubmc/tsconfig.json | 28 + packages/openubmc/tsconfig.node.json | 10 + packages/openubmc/vite.config.js | 78 + packages/shared/hooks/useScreen.ts | 5 +- packages/shared/utils/login.ts | 4 +- pnpm-lock.yaml | 2 +- 76 files changed, 9699 insertions(+), 5 deletions(-) create mode 100644 deploy/openubmc/Dockerfile create mode 100644 deploy/openubmc/nginx.conf create mode 100644 packages/openubmc/.env.development create mode 100644 packages/openubmc/.env.production create mode 100644 packages/openubmc/auto-imports.d.ts create mode 100644 packages/openubmc/index.html create mode 100644 packages/openubmc/package.json create mode 100644 packages/openubmc/public/favicon.ico create mode 100644 packages/openubmc/public/footer-bg.png create mode 100644 packages/openubmc/src/App.vue create mode 100644 packages/openubmc/src/assets/bg.png create mode 100644 packages/openubmc/src/assets/category/home/recordal.png create mode 100644 packages/openubmc/src/assets/category/home/wechat-qr.jpg create mode 100644 packages/openubmc/src/assets/category/home/wechat.svg create mode 100644 packages/openubmc/src/assets/cose.png create mode 100644 packages/openubmc/src/assets/style/base.scss create mode 100644 packages/openubmc/src/assets/style/element/index.scss create mode 100644 packages/openubmc/src/assets/style/grid.scss create mode 100644 packages/openubmc/src/assets/style/mixin/common.scss create mode 100644 packages/openubmc/src/assets/style/mixin/font.scss create mode 100644 packages/openubmc/src/assets/style/mixin/screen.scss create mode 100644 packages/openubmc/src/assets/style/theme/dark.token.css create mode 100644 packages/openubmc/src/assets/style/theme/default-light.token.css create mode 100644 packages/openubmc/src/assets/style/theme/element-plus.scss create mode 100644 packages/openubmc/src/assets/style/theme/index.scss create mode 100644 packages/openubmc/src/assets/style/theme/media.token.scss create mode 100644 packages/openubmc/src/assets/style/theme/mixin.scss create mode 100644 packages/openubmc/src/assets/svg-icons/empty.svg create mode 100644 packages/openubmc/src/assets/svg-icons/gitcode.svg create mode 100644 packages/openubmc/src/assets/svg-icons/logo-white.svg create mode 100644 packages/openubmc/src/assets/svg-icons/logo.svg create mode 100644 packages/openubmc/src/assets/svg-icons/mail.svg create mode 100644 packages/openubmc/src/assets/title-bg.png create mode 100644 packages/openubmc/src/components/AppFooter.vue create mode 100644 packages/openubmc/src/components/AppHeader.vue create mode 100644 packages/openubmc/src/components/CommonLayout.vue create mode 100644 packages/openubmc/src/components/HeaderNav.vue create mode 100644 packages/openubmc/src/components/LoadingArc.vue create mode 100644 packages/openubmc/src/components/SectionCard.vue create mode 100644 packages/openubmc/src/components/ToggleRadios.vue create mode 100644 packages/openubmc/src/composables/useCommonFilters.ts create mode 100644 packages/openubmc/src/config/home.ts create mode 100644 packages/openubmc/src/config/url-config.ts create mode 100644 packages/openubmc/src/i18n/footer/index.ts create mode 100644 packages/openubmc/src/i18n/footer/zh.ts create mode 100644 packages/openubmc/src/i18n/header/index.ts create mode 100644 packages/openubmc/src/i18n/header/zh.ts create mode 100644 packages/openubmc/src/i18n/index.ts create mode 100644 packages/openubmc/src/i18n/lang/enLanguage.ts create mode 100644 packages/openubmc/src/i18n/lang/zhLanguage.ts create mode 100644 packages/openubmc/src/main.ts create mode 100644 packages/openubmc/src/router/index.ts create mode 100644 packages/openubmc/src/shared/common.ts create mode 100644 packages/openubmc/src/shared/utils/index.ts create mode 100644 packages/openubmc/src/stores/common.ts create mode 100644 packages/openubmc/src/stores/company.ts create mode 100644 packages/openubmc/src/stores/login.ts create mode 100644 packages/openubmc/src/stores/person.ts create mode 100644 packages/openubmc/src/views/detail/CompanyContribution.vue create mode 100644 packages/openubmc/src/views/detail/CompanyDataBarChart.vue create mode 100644 packages/openubmc/src/views/detail/Index.vue create mode 100644 packages/openubmc/src/views/detail/SigOverview.vue create mode 100644 packages/openubmc/src/views/detail/UserContribution.vue create mode 100644 packages/openubmc/src/views/overview/Index.vue create mode 100644 packages/openubmc/src/views/sig/Index.vue create mode 100644 packages/openubmc/src/views/sig/Sidebar.vue create mode 100644 packages/openubmc/src/views/user/ContributeDynamic.vue create mode 100644 packages/openubmc/src/views/user/ContributionData.vue create mode 100644 packages/openubmc/src/views/user/Index.vue create mode 100644 packages/openubmc/src/views/user/Sidebar.vue create mode 100644 packages/openubmc/tsconfig.json create mode 100644 packages/openubmc/tsconfig.node.json create mode 100644 packages/openubmc/vite.config.js diff --git a/deploy/openubmc/Dockerfile b/deploy/openubmc/Dockerfile new file mode 100644 index 0000000..2fa003b --- /dev/null +++ b/deploy/openubmc/Dockerfile @@ -0,0 +1,160 @@ +FROM swr.cn-north-4.myhuaweicloud.com/opensourceway/node:latest as Builder + +RUN mkdir -p /home/openubmc-datastat/web +WORKDIR /home/openubmc-datastat/web +COPY . /home/openubmc-datastat/web + +RUN npm install pnpm -g + +RUN pnpm install +RUN pnpm build:openubmc + +FROM swr.cn-north-4.myhuaweicloud.com/opensourceway/openeuler/nginx:latest as NginxBuilder + +FROM swr.cn-north-4.myhuaweicloud.com/opensourceway/openeuler/base:latest + +ENV NGINX_CONFIG_FILE /etc/nginx/nginx.conf +ENV NGINX_CONFIG_PATH /etc/nginx/ +ENV NGINX_PID /var/run/nginx.pid +ENV NGINX_USER nginx +ENV NGINX_GROUP nginx +ENV NGINX_BIN /usr/share/nginx/sbin/ +ENV NGINX_HOME /usr/share/nginx/ +ENV NGINX_EXE_FILE /usr/share/nginx/sbin/nginx +ENV DST_PATH /etc/nginx/cert + +COPY --from=NginxBuilder /usr/share/nginx /usr/share/nginx +COPY --from=NginxBuilder /usr/share/nginx/sbin/nginx /usr/share/nginx/sbin/nginx +COPY --from=NginxBuilder /etc/nginx/modules /etc/nginx/modules +COPY --from=NginxBuilder /etc/nginx/geoip /etc/nginx/geoip +COPY --from=NginxBuilder /etc/nginx/mime.types /etc/nginx/mime.types +COPY --from=Builder /home/openubmc-datastat/web/dist/openubmc /usr/share/nginx/www/ +COPY ./deploy/monitor.sh ./deploy/entrypoint.sh /etc/nginx/ +COPY ./deploy/openubmc/nginx.conf /etc/nginx/nginx.conf.template + +RUN sed -i "s|repo.openeuler.org|mirrors.nju.edu.cn/openeuler|g" /etc/yum.repos.d/openEuler.repo \ + && sed -i '/metalink/d' /etc/yum.repos.d/openEuler.repo \ + && sed -i '/metadata_expire/d' /etc/yum.repos.d/openEuler.repo \ + && yum update -y \ + && yum install -y findutils passwd shadow pcre-devel net-tools libmaxminddb libmaxminddb-devel \ + && find /usr/share/nginx/www -type d -print0| xargs -0 chmod 500 \ + && find /usr/share/nginx/www -type f -print0| xargs -0 chmod 400 \ + && touch /var/run/nginx.pid \ + && groupadd -g 1000 nginx \ + && useradd -u 1000 -g nginx -s /sbin/nologin nginx \ + && sed -i '/^PATH="\$HOME\/\.local\/bin:\$HOME\/bin:\$PATH"/d; /^export PATH/d' /home/nginx/.bashrc \ + && chmod 750 /usr \ + && chmod 550 /usr/share \ + && chown -R nginx:nginx /usr/share/nginx \ + && find /usr/share/nginx -type d -print0 | xargs -0 chmod 500 \ + && chmod 500 /usr/share/nginx/sbin/nginx \ + && mkdir -p /var/log/nginx \ + && mkdir -p /etc/nginx/cert \ + && chown -R nginx:nginx /etc/nginx/cert \ + && chmod -R 700 /etc/nginx/cert \ + && chown -R nginx:nginx /var/log/nginx \ + && chmod -R 640 /var/log/nginx \ + && touch /var/log/nginx/error.log \ + && touch /var/log/nginx/access.log \ + && chmod 640 /var/log/nginx/error.log \ + && chmod 640 /var/log/nginx/access.log \ + && chmod 640 /var/log/dnf.librepo.log \ + && chmod 640 /var/log/dnf.log \ + && chmod 640 /var/log/dnf.rpm.log \ + && chmod 640 /var/log/hawkey.log \ + && chmod 640 /var/log/*.log \ + && chmod 440 /etc/nginx/nginx*.conf* \ + && chown -R nginx:nginx /var/log/nginx/* \ + && mkdir -p /var/lib/nginx/tmp/client_body \ + && chown -R nginx:nginx /var/lib/nginx/tmp/client_body \ + && mkdir -p /var/lib/nginx/tmp/fastcgi \ + && chown -R nginx:nginx /var/lib/nginx/tmp/fastcgi \ + && mkdir -p /var/lib/nginx/tmp/proxy \ + && chown -R nginx:nginx /var/lib/nginx/tmp/proxy \ + && mkdir -p /var/lib/nginx/tmp/scgi \ + && chown -R nginx:nginx /var/lib/nginx/tmp/scgi \ + && mkdir -p /var/lib/nginx/tmp/uwsgi \ + && chown -R nginx:nginx /var/lib/nginx/tmp/uwsgi \ + && chmod -R 500 /var/lib/nginx/ \ + && chmod -R 750 /var/lib/nginx/tmp/proxy \ + && chown -R nginx:nginx /var/lib/nginx/ \ + && chown -R nginx:nginx /var/run/nginx.pid \ + && chmod 640 /var/run/nginx.pid \ + && chown -R nginx:nginx /etc/nginx \ + && chmod 550 /etc/nginx \ + && chmod 550 /etc/nginx/geoip/ \ + && chmod 440 /etc/nginx/geoip/* \ + && chmod 550 /etc/nginx/modules \ + && chmod 440 /etc/nginx/modules/* \ + && touch /etc/nginx/nginx.conf \ + && chown nginx:nginx /etc/nginx/nginx.conf \ + && chmod 640 /etc/nginx/nginx.conf \ + && chmod 640 /etc/nginx/nginx.conf.template \ + && chmod 440 /etc/nginx/mime.types \ + && chmod 700 /var/lib/nginx/tmp/client_body \ + && lsd() { \ + local v="$1"; \ + ls -ld "$v"; \ + while :; do \ + v="${v%/*}"; \ + [[ "$v" && ! -f "$v" ]] || break; \ + chown root:root "$v"; \ + done; \ + }; lsd "$NGINX_HOME" \ + && lsd() { \ + local v="$1"; \ + ls -ld $v; \ + while :; do \ + v="${v%/*}"; \ + [[ "$v" && ! -f "$v" ]] || break; \ + chmod 550 "$v"; \ + done; \ + }; lsd $NGINX_HOME \ + && lsd() { \ + local v="$1"; \ + ls -ld $v; \ + while :; do \ + v="${v%/*}"; \ + [[ "$v" && ! -f "$v" ]] || break; \ + chown $NGINX_USER:$NGINX_GROUP "$v"; \ + done; \ + }; lsd $NGINX_HOME \ + && rm -rf /usr/share/nginx/html/ \ + && rm -rf /usr/share/nginx/logs/ \ + && echo "umask 0027" >> /etc/bashrc \ + && echo "set +o history" >> /etc/bashrc \ + && sed -i "s|HISTSIZE=1000|HISTSIZE=0|" /etc/profile \ + && sed -i "s/PASS_MAX_DAYS.*/PASS_MAX_DAYS 30/" /etc/login.defs \ + && echo "ALWAYS_SET_PATH yes" >> /etc/login.defs \ + && chage --maxdays 30 nginx \ + && passwd -l $NGINX_USER \ + && yum clean all \ + && usermod -s /sbin/nologin sync \ + && usermod -s /sbin/nologin shutdown \ + && usermod -s /sbin/nologin halt \ + && echo "export TMOUT=1800 readonly TMOUT" >> /etc/profile \ + && rm -rf /usr/bin/gdb* \ + && rm -rf /usr/share/gdb \ + && rm -rf /usr/share/gcc* \ + && rm -rf /usr/lib64/python3.11/bdb.py \ + && rm -rf /usr/lib64/python3.11/pdb.py \ + && rm -rf /usr/lib64/python3.11/timeit.py \ + && rm -rf /usr/lib64/python3.11/trace.py \ + && rm -rf /usr/lib64/python3.11/tracemalloc.py \ + && rm -rf /usr/share/licenses/glibc \ + && rm -rf /usr/share/locale/ar \ + && rm -rf /usr/share/locale/cpp \ + && yum remove gdb-gdbserver findutils passwd shadow -y + +RUN chmod 500 /etc/nginx/monitor.sh \ + && chmod 500 /etc/nginx/entrypoint.sh \ + && chown nginx:nginx /etc/nginx/monitor.sh \ + && chown nginx:nginx /etc/nginx/entrypoint.sh \ + && sed -i "/PATH=/d" /home/nginx/.bashrc \ + && source /home/nginx/.bashrc + +EXPOSE 8080 + +USER nginx + +ENTRYPOINT ["/etc/nginx/entrypoint.sh"] \ No newline at end of file diff --git a/deploy/openubmc/nginx.conf b/deploy/openubmc/nginx.conf new file mode 100644 index 0000000..fb5845e --- /dev/null +++ b/deploy/openubmc/nginx.conf @@ -0,0 +1,152 @@ +user $NGINX_USER; +error_log /dev/stdout info; +pid /var/run/nginx.pid; +worker_processes auto; +worker_rlimit_nofile 65535; +events { + use epoll; + worker_connections 65535; +} + +http { + include /etc/nginx/mime.types; + + log_format main '[$time_local] remote_addr: $http_x_real_ip, request: "$request", ' + 'status: $status, body_bytes_sent: $body_bytes_sent, http_referer: "$http_referer", ' + 'http_user_agent: "$http_user_agent"'; + + access_log /dev/stdout main; + + server_tokens off; + autoindex off; + + port_in_redirect off; + absolute_redirect off; + + client_header_buffer_size 1k; + large_client_header_buffers 4 8k; + client_body_buffer_size 16k; + client_max_body_size 50m; + + client_header_timeout 10; + client_body_timeout 10; + client_body_in_file_only off; + keepalive_timeout 10 30; + send_timeout 10; + + proxy_hide_header X-Powered-By; + + limit_conn_zone $http_x_real_ip zone=limitperip:10m; + limit_req_zone $http_x_real_ip zone=frontendratelimit:10m rate=2000r/s; + limit_req_zone $http_x_real_ip zone=ratelimit:10m rate=200r/s; + underscores_in_headers on; + + gzip on; + gzip_min_length 1k; + gzip_buffers 4 16k; + gzip_comp_level 5; + gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript application/x-httpd-php application/json; + gzip_vary on; + + server { + listen ${LOCAL_IP}:8080 ssl; + server_name datastat.openeuler.org; + charset utf-8; + limit_conn limitperip 10; + ssl_session_tickets off; + ssl_session_timeout 10s; + ssl_session_cache shared:SSL:10m; + + ssl_certificate "cert/server.crt"; + ssl_certificate_key "cert/server.key"; + ssl_password_file "cert/abc.txt"; + ssl_dhparam "cert/dhparam.pem"; + ssl_ecdh_curve auto; + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384"; + ssl_prefer_server_ciphers on; + ssl_stapling on; + ssl_stapling_verify on; + resolver 8.8.8.8 8.8.4.4 valid=60s; + resolver_timeout 5s; + + if ($request_method !~ ^(GET|POST)$) { + return 444; + } + + location ~ /\. { + deny all; + return 404; + } + location / { + proxy_set_header X-Forwarded-For $http_x_real_ip; + proxy_set_header Host $host; + + add_header X-XSS-Protection "1;mode=block"; + add_header X-Content-Type-Options nosniff; + add_header X-Frame-Options DENY; + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; + add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none'; frame-src 'none'"; + add_header Cache-Control "no-cache, no-store, must-revalidate"; + add_header Pragma no-cache; + add_header Expires 0; + + location /assets { + add_header X-XSS-Protection "1; mode=block"; + add_header X-Frame-Options DENY; + add_header X-Content-Type-Options nosniff; + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; + add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none'; frame-src 'none'"; + add_header Cache-Control "public,max-age=1209600"; + } + + root /usr/share/nginx/www; + index index.html; + try_files $uri /index.html; + } + + location /api-id/ { + proxy_set_header X-Forwarded-For $http_x_real_ip; + + add_header X-XSS-Protection "1;mode=block"; + add_header X-Content-Type-Options nosniff; + add_header X-Frame-Options DENY; + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; + add_header Cache-Control "no-cache, no-store, must-revalidate"; + add_header Pragma no-cache; + add_header Expires 0; + + proxy_pass https://usercenter.openubmc.cn/; + } + + location /query/ { + proxy_set_header X-Forwarded-For $http_x_real_ip; + + proxy_pass https://dsapi.osinfra.cn/query/; + } + + location /api-magic/ { + proxy_set_header X-Forwarded-For $http_x_real_ip; + + proxy_pass https://magicapi.osinfra.cn/; + } + + location /api-dsapi/ { + proxy_set_header X-Forwarded-For $http_x_real_ip; + + proxy_pass https://dsapi.osinfra.cn/; + } + + error_page 401 402 403 405 406 407 413 414 /error.html; + error_page 500 501 502 503 504 505 /error.html; + error_page 404 /404.html; + + location = /error.html { + root /usr/share/nginx/www; + } + + location = /404.html { + root /usr/share/nginx/www; + } + } +} diff --git a/packages/openubmc/.env.development b/packages/openubmc/.env.development new file mode 100644 index 0000000..e4eb149 --- /dev/null +++ b/packages/openubmc/.env.development @@ -0,0 +1,4 @@ +VITE_COOKIE_DOMAIN = localhost +VITE_LOGIN_ORIGIN = https://usercenter.openubmc.test.osinfra.cn +VITE_MAIN_DOMAIN_URL = https://www.openubmc.cn +VITE_FORUM_URL = https://discuss.openubmc.cn/ diff --git a/packages/openubmc/.env.production b/packages/openubmc/.env.production new file mode 100644 index 0000000..7c65a51 --- /dev/null +++ b/packages/openubmc/.env.production @@ -0,0 +1,4 @@ +VITE_COOKIE_DOMAIN = .openubmc.cn +VITE_LOGIN_ORIGIN = https://usercenter.openubmc.cn +VITE_MAIN_DOMAIN_URL = https://www.openubmc.cn +VITE_FORUM_URL = https://discuss.openubmc.cn/ \ No newline at end of file diff --git a/packages/openubmc/auto-imports.d.ts b/packages/openubmc/auto-imports.d.ts new file mode 100644 index 0000000..08908ed --- /dev/null +++ b/packages/openubmc/auto-imports.d.ts @@ -0,0 +1,5 @@ +// Generated by 'unplugin-auto-import' +export {} +declare global { + +} diff --git a/packages/openubmc/index.html b/packages/openubmc/index.html new file mode 100644 index 0000000..e581374 --- /dev/null +++ b/packages/openubmc/index.html @@ -0,0 +1,32 @@ + + +
+ + + +tR;}sJN zDn9~Upxbi3XLLZi;(x|9^|-rV4j)pW<@zqVWm8B@yNLk{D$e+hoXlU>Bf@yfoCXpJ zdrNu0$dz$NgEc-laF5{3?OdG-)JVsScmpErkX`c$F<3i%3HVilexQY{gJA9;|MDM! zY~F48yWEMdB=t804~0Wd810|?5sp0w-1R5h$jp)z>Zn>wAgzrJw}INvy!G!f!ag4t z_F}#0>%qD?;*!|}GaoxzMkcoo&Ic25DBozzLX9v%T+(Im6!e*SVAvO4;#P3p888M% zz@SI=w+o9i_<)APr+0t`Q+6sFHhpxD<(dxW5#=k~N$3{CgmgV2!h-hZGx~!S(mazj z1%A`MYr_cY#F1v9`%%EkC7Vni%<r_N8jKbbw-g6l0`!$s6vCr`Pkd}f8 zN+GZ0K!`7vG|mu~s^_mes?3hWKB5mSz#m~QjWOIVlp1&H8_83u4Y?h?=dzG4qOnlt zH8udmX`(1_iyEl0`3+mP=Jk&Q1=na3Bz{U&vm^O18hgBO9!73d;zz%(%ehPO2SQyI z6kejZH?mmCat=BXrcjLMCnziSO$h0>T*J*XDgoNK^ajFWHMeLoM}J6QmGUhCEq-PN zoXk@~0*|Zp>k 4!Yalf{#XKwT31q7k zd#nj7UlnK|#)7`FQ_O0I`f{ewUE4cuO=FSXZf5iegaq{CJl<=(f;iuggk#t~tGeSn zdV8znJy;o q&+K7WvvGXCQ*7#GMx2@!!MAq9URBRtz&(4%fSYqmH z6IL!S(+SoZ&36AlelTo${WO%R0CQZKldI}iJmkScZd_LOsX*)0ylsJKp6xX~f>T3r z4}EF!qkET;j5tV!`d#A|Vx?G$@{rGV(Zb&sePe}xrlXDSHm3^)uOAP1di31G*sgkZ zz*$|0pe$r&+MeK^7^ zF6s;i?+*Lq@x``j_>~ENrCX;fmkjUUxb*}|#99p5`vk2o`rxgT>LtXIovivE?b`}| z$En76?aVdf&Qss5RA%?iwYBv&U>b!KVx00*^qQzJS&%F{l)B6o4AriSFg>A(ZI@*L zs*4g$sH9iVG~US3Egq27Ih}*9P!z8MkXZ`19ixF)=K%}Mub;w5-s8PDR0Uqe2UlZfX{ju)X)v5e<>7 xrzFLIM{ zWw=|KE&->iNP`C2QWM3dQO@t93#vFF3qHIFhW=>Vxbv;Q*c=ogRhz>cthvr4CDT)` z03JGqMb)e)Nma0TQT;G4uT%oyLrWpmG!z=gxVHbI3E5Aiy?47z?2ciD`n@dH-IA36 zdCfB{hFJe7m*`Q)6oisS;G7wi1%w(lKgVhK1SuXH-D7m2Hk`!sYnpL2N9)(pw@>I= z{#-x=*YTJHN!d0mvf~#hQxjL2X0ZRRFaM1K6n1Yv+{f75>Z6_|$=eq0)`hMsq!%j= zo~!Yvgs#SUN}Z6>x)iw-wJ;66KYx8uGa)f1$gc)#`&&XVUkud~RZ4-+zm%D}7bT){ zA<~r5nXVJ(Fk_H7)RA5OYj%lZ^ObNSgKj2($P5F(qUZPbuV& mPi zXcW59I#=7 7xihFZ5IL_^~TP>wFAIRs=Tb**1 z>Mi{8|9w{dEaJI1g%(u8G0Z+d0{J5 R)YG} zGQGFAjlx6a0_=- tyyiw+e+#;g_>9~AV^ymh*5+<~rD`{epW5C}(G&k5 zZNc_^7L51HKeIGUg{j~NxM$!S-^%Mj!|TRBi7oyD(Q6r5abr#wP781+L6BF;yt0XC zO>5xyq0gjUS*PoLdT*a*yd%qPu%Hj{^ y+eHC=w~2Z<)T}4w}c&Z%m&~y`C-L~ z*=H(c3o>TlUtadtTY}Iuly<-~cQWe}A-FPUifzcKvwiOf$|FT_<)jJoe2}}HoMygm zsj#Pk`}vtP8A3oR5UJJ685pnaX*e;A?|2?b9&7o)2S5b39|2kh{&I9a#n2()OyF8W zc2(|bLb(?=W{vQqVghtjHJ#-=8Z4XGdU`o4MsqcEod9FJ*)SqhM5qfh3k~^+`j2sy z+;%HhF^{B_VAySR^$Pm6z0@t1?t%ZE*T8KKCbKI1b}ZTnR=LhetJn9~x@oxv>Ur4} zumF3TuocNITG89-jeCX3q5y^Hk{Pb!2f_6t{D*5go0llZlT!rBBw{H=WVdv4VQ8!H zNi?8`*@Y^P?xTsnNIb9}v-SZ~v$DziGWTmJa_}s@n=+sU4e iqah?B64gR5r17_+)IzZg!IIioVekN~37v`PxL~6c#B=VN%0wFL-`=Um2L%w`lKY g{kvmB|_ruEF+1@0cWG8 $Rn|#CsU?7E3R~N5X#Vj zebLHqfEup`o87-6E%wK9)f<$xz%fb;{69!sUqDIP^W!^6zfizyTSf_z<=>uVDLTyH zV=;Dvt4@K>RrD&|-(OD(VDz1;8N|pz%4RtH{-ei)W9^~>&V~UPQgd6K=(tQ=6|e85 z7$i2 Af| RT>h(~rywrUBhZpn&Zrd3PxM&N^EqF8Q~oq- ze!2Dm*3%c!2IZP3%j{?ioCWN3gC>NVmbr2~JJWL^B9+b %(nIi{h^(@ zd-*W2%x 0A?J^&v!|$ hZmt+{wQs)2 z3@`||H*ouSp ^~N-xBzlDEj+C=5tbd`C-R{T$opWAjyje*mr$B(b^katho`vj>&3k z`=(wIR~Ob3!@=0@PiBJgeg8QW6ATE=8T-9A+?QROO7yRL8v4Xz$M$x;W@}t1vpN;c zC<`n~bd#3-&B70^m5|M?9eNTEm#MS29FdQay%XrH=6@u$X4&wj2VRaqx!sNi-C0uD zRG`nY9A>8VRY4P;781N{#`v<=TvMT(g7a>#7mM=zK2C>bN3T^UJU3Mg#a-%tBE|pr z)N`mgGj%7NvA>O4V-W9EP6skErB~g{&Aojqr{-u-JYH|c)73XT6952V^8F?GrRVpp zv;Yk;kn2Q&B}HFW#Ktn9YFn)Rvllyqk@(~i+4;%CWbj1VA^%P9#5XAfZ>nB?F;P`Q z2AAin2?^;Fq_*|Ixz*yjD~Brpc^QM7AKiYoyRL`Cm6Ag %WWk7GJXuUk$52c;p|s>X?7?wwV??FCNG_pW zcfHx&0l&*z)yOoY$E67VQn#yf!+|88??3HV) 7K0g$}&w8|QyKj}t=V@}w$<&^W8rDvXuT;A82X_4@a?FF5dq2s9CA6Sz!p#u@4| zcD%*}KEER dkyUpH{kM(I%8tJP>ruk?$CVC z?-hUFZ0YpL=I1}cDks4wLF96UO$cyA0mn<}2qi!e7hrB8 GsA1^FN<7c%ZKCF-- z;Y$7V&Klq FDAMStVC~P7c+xSg^&_I`DMH zxfQFT)=HuC0qO>2*7I%)KDByev>$~H4ma|v(9h|tHl|5XgAYX^z1&+#LWv*^A$9ve zaqM?4jo=}D38k*pkNaB`4$r0(Jbs4`=$n%#h6rw{?FpQrY_K)u<3g!o+^5#fvDW zQ_@h@V3dQV2f*stSdgCTq=4`d6f! YX96schCEAFZ(%5fX9+82eUKiB znhF09ND~V%eF^>~B&NBk_w?D9NbgfReSD%_hsD65N}6@pwe)g#`7r`C`)AXQX@6<5 zfR>3_aZ^vv9_!7=A8*yDpimpoR8dl0o Y|Mi~db2n7+W!;gc@T6lkEcHIovw#7!}N0X?3|ghU%bAB zzNbynTfoZLMg!daV*GCsnumlv7+L~}V)=SQTwHXj8~ >y!%YPq)eQ5V zSEcFZDbn``5}xm!sJ34p-)4nV&V+dfbt)4kj*4rOV-j?SO8lq_I`Qx)J+gPXKtG$R zI42ijM6;y7&k+(9+~Y)nS+is3M2!cP4PGM%m!deF`p4b^fC>Zj>-h%$E|-l-jpK)D z`II&y>mK#n(waS7+|Yz`$8m#nM?FRnqbo!}3VbCwfb dz>v_36<|T;jqPNjU#&FDPq&VT+ z68pfG3DiPQO`)}mz4v+HXyM1p>nh+go{W?{MUod9n%O c-1_LKdir>?hn7=}Uii80p;~Y$ za+UaTc6q}Ixpa>^T{(yGs#dH#>31mVUVDp{FecjdqRkgXU90k`wGzk4yKeyOu;;g& zO*>$%@&-G&J?`#MFXgG1W`xuJD|Vw*CiM%W1|7*}?K3JIye3{IoI_0RB<39*NFN!N zjULEw2sLVJ5RY_!Txm$BC$P%Z6{Ju~)2Kx@uD3yt=w%HZg An zSyztINh&nQ$4b!pRmRX*F{k!#vfip#u+ja>o-a=CTLB|28Am&%2O(ge;FBp%#Qs3F zL$7TA{rzWj3cWjZV&Ftr0|JCK!R;~SuC&hJw&>7~_)(8I+qoaoTCuXt{rZz*+B9A{ z$Gf>H=U2&1v+tTbuI?G9V{F;6sMIBsTHo7Xb4tePU($?nP*&;(c~3dUEahR(2LxXu zM8)HWTbaQq(+^CtnDNy&DHsxPyA1!ZWZLYJk(rbf#48Rv+zQ?wa68oNukz4!wRi4N zKEsmNGuT@0?_>Q)BSV*P16Xo-rGjW+V<~^Wt;2@`RPa9d8SY)V0(#1~ABQ;aKI>BD z{)b<%v|j9YtFbxZUax=2?7Bf_yj+Hd;|sgbEUK&10k1Yq{BWtG&9j~81s5en%r_n% zt_FuDLy@ioNB$d~&t$9T0G)q|dE}Oo1Cv36XHOFaigE65LWJbT++_YzEGwrfzAAnd zhA4ILcHnw16z$uTOkRoVY5eC1)%(8Im*7WHmw9$Bb;{`^@M?q~Zc;d|6s3BJa%2jN z(|Pg|P4cV5+ -U0Bpz{!)$?7S_S2hblyoDFkGGhW#3olhz5+L^?? zH0`hiU)keT(~`2B2Z7-}I@8>{b(R-q=~>(&>7)N`rCGl}n-i44bZ$vJ>tHjM@BD;n z*{XF%Zgyvt`HY>C+M(MkYr4JYxo}udBdC4rrhV0S{dSgMNftv#Z+tpWf)oZk(7*o? zN5xe(c*|VWgC^lYKs^7!woYS9J?68#=&Q-5ILS+ttM$*E#RxpIKbQZZr#R>j0|`n3 zQ26yYi~;CNKdnD;Jj&DKiW=b#{(+*Xg%3OrQ+VVb^Mu}NWqjVnONqlM$(j^xVewJ1 z761;qfgK*uC&QOi*R{|PbUVz3gA%{Y0QkuB(e5xuXXdqh+_-3S;+#Tj+yP03nTWz4 zM?{#!z3B86o~-F=cP!b1b^hLL>Fn)+itVNyG*nq17b8KPppm(8oNSKtN1YZfusc-0 z7Lymz%}}CwQA0eEUo-Iql`!|LuA2UUI^bii2)Z#xZ*1fK@2cMD@0^YrnbY QSvC_4}zeS0NUNRepE%Cl=pIWZ2|do0+_fs)~ZU2otCy(JhsEN{D32kzDep{iq z%h*s`S)P>j_|rmVDycxEHkgWXEGhVOO_Khg&-5we62&U4tpnc3#YR6&+8GkRq%3b> zXfSQ}!QD0*)W`iddTspEAD;(k!h+&=nxuDdCDb!Oa4^8 pGVLda>J}iSd%~P z2mdP*UZ&{T60RmLr?zVv$n303`Hhw#`D4=Z0(1Re8c5BAb&Kiax36yYp=M|VfU{H` z2?GmVQ498m^f3j3dOXLWME5D#d8{op$*a^%B_AVjuHmS<7Rdq_MQoha+zY*u^}`3! z;N>k}l^Q#+e>gq(f^u_tju5j!1nq&vkKC}8*~wB;oKm5xn}J}e2vH0r;G%`SXYAGX zn24vv314=R)B!%CTyypC{Oe%Z4MpXmj?Z=gqB^(u-Tj56lj0w8j3El#zJFUAKB+xj zt+67&Aso!M8dUqvEhbe;BEEdK))f>U5_Ox=;q=Srizlr<>_m_Fd{44r&|1<-Hv+gX z%Dt>W#F|d<*B=j!jMpc -|zG&^+ORfe7ix(GD;qPuY{KnEz$ZO^mrzE%dsprB{fYQ@BZV{C#;Nm z$G;Q$1Q__Na{dJwOE%)yp=Y)01QjhIguD3c7B^XDngR-kAlOS(rJ|OH*Nlgw%RZ4| z3~h|>DbAQE&{{Y#qoN~egq3HS7KpGOivtNx9QCq&$bw|EhB>#gSGHxSPeyEZ=XA`> zG0}*dv8`CHqWh)-F*YKXci*5=(gQWsjR;o;98J%B3Vg_UBRe5Ia9cU^j3`6XaW>9O zc#RpI(6WZ-A`8gKL9|E{o=-!g{+lN_avj05bc;cv_!#hE$q)gMd=ffc6dW}b0g_26 z$J+>2_ay8B8BuM{$A#7WEbc|Y7y0ebN#bRe$CpN_ycj^fVJ*gewYnIq0pB~xSd>GQ zHzj{gwHBUw@(q`9A7tiZkip>NyIwV{G6Dd@Ox}oPj%`*@@4qUg)$9}}dhxGSMxM3| zpmo*6sd_U3IS9x7S0Pnwt5J=g1Zebjp3jYDCTA?A2jQSY)P=sh*{J1P>wech`<6^` zEv7xSI>AoiUKud@7&(Jn?AXaZ1| WlA`d5WKW@8jUP+Owr*q?p?l<4J})=(7BcFT^nhVp=R%nehh3GVU$+2 zef!)&GgQg6=n{tf;$7x5P^A=(mBuQ*V!rt5s8Ya(csmReWtY4KZ9eDVR1dkV5?X`3 zFDf&2Flm0ubfatgQ=(^5$vqM95h)o1n8I&0n=Zj;pH9`}rdki6q$eT^MzH0_=Pmh7 zvD(DDRU6HQojC01wS1{|#}CTQ%>4!|{}JL%X`#OSd>FPeqlk%nW2?0hX#RyoN$q&y zl#jQ~axKYcs$1@(KLGB9t~}(nbz7Ix1dFA|JA_?zdJ{?aZDT8Rf}qyGWC6;5FjFY0 zxu{ROnwv+2+FDFd%PcsO&+#@*J_jR&V|X{G4x?|)H~Tm@x^uy2N}cJDy`n1jC2P4A z>g|1?I21VqwYkUC##o&F-e{(FN (lH_Q z==~W!@oR%568jxhT_=`f=MSBV8H{dWNEgca33GfqgocD~c;PWVv6#Vld+3dG9^qX~ zIWiZ3uyp@9Zg
tU?{~2}mQD+WD_hy1^oYSIaOn;4ng0c(4#Z2uTju~K zug^PrD=@qZdjG{Al{W7}h1I?|-e~280;PYD2wT 6p5#0s{4)FU@m5u@KD{7lZ_GP*p#+KX z{^&B*Q=2SYgB`Z8Qtq1!RisK VI9&lr9|J%c+sBi}Cw~_LA-jd2O<2 zq54LT(uzVX&E#uwjI!tXYp^xG>YOcO1HslC(5X2o_W6J{$B!*R%vkDLG2zd0yK$rZ z17QNinjLs3b8L^qXkMY=r5jH-Q>i$}A1DByt&91Y%=FCKW=rk<^}Q6|T%G_e@UqZ@ z_E@QKF(lsa^03tfy8J6mt9|G<8t|J_;hj>C+Mfr@&N>&ASN||a6qswd1o7T~b;bOP zPyC`l4w-#I0TCC9!vF9`;QyZS|J?*J{evxuf&XEbpn`!WZBqX$_O*|Go7XdKVZ^}K z+$`41)sA%m)PX5GKFizT(SP(K3Sfq@VbNiJ&S%l+wA(L1b40)wP@&tpC}uS%1ouRb zbfW6+ZVF3qLI;$=p6>0v j~z<;!PLmQYZpnI1R3yxM>| z5vfyRh11RpZT(K6RL=8|<@<=CPx)Mff#PX#)NvN*MS<3H#yAoF3GsYv6hmz@Tz$wf za4F^rd?YBlkC=61GW*J@@S$nZpP~~VF9$7h4IfzV=&Lgj$ASx3^%Kb~7pcs}$h%A0 z@|QSG0!<*mxi_-awILgT*`i}%RS*-&<^uI+olDo8aJ@Zs@>k0)$T$mEj4d}?fq}35 zxIpF-OPuK{$wnQj0_P)r;D8J4dR})2WL(H&qEn#54ta}WyQ_gp^+^{dje(*=qd*(I zCQ?s%%RgD{jKle1_C!L67{odE=yM$G#wgu1goo8UU53iV@eODVZ8+>(3m`36_VI@p z$23Vt$?(Zb9Or5iy&qfNX;r!IINXJQC&c@+t=RO1Mgi3}cunEZ)%+!-j8kFxB}5AF zquabe!8oa!G%0NKjV(!2OjQnamah;F&wWMGesX{3PYdwC^zGD5a9vn|rfYqRU| E~q91FQzofV1Q~7;d%?d--Zt{A YQ0Fjhs8H$LfIB FV#G%oYTg84 z{zcOl%Sj6}o*hgWpaFuE=DrfIH{;t}**+x&bl|R@>Fu2Qe=`v;OM|^so5psN@ l zk&+^%B{D_b*N04>4^BQT2-?Z9F{2BWM684HT}#;?JrjZGAfOS#*v(F)11WE;`sBS# zq6Hl$wL4-^#xJPd0@;x-kV#YvqBwJkG_1KMF3Ge>s_kLN hGAoF=uEq|ZVYfP!l0T t0tC@Nb|bC0`&sba zaSuOm!suuu95@0gN9T=X{%7=~$x*UgKKiNBpCNiS-3Iq8uXBqoWSdY7`82BV*Q=N6 zcG$?r3;*?f80$t1AycOsThQRhkIQ95cz100{Z3w`9184YEU{>l_j~M(B{w^5YjU zlfNc4CVi)q<=XcuhFH+B8eQ83N z4-6m2=hNb1P>LTvv^PLfw$Em~l}H;3_I^CJKrT5cA-G=FViki=%c`rq_%X;~Yu2GO zbFI4urQ>N}r`5tlFbMO7Vj3P=hl7MF?oa$?NX<>ITTeMyX%*YWM2RbNmudn1JE$5< z+0NnJsFrQNHkzaMIX$ )>HpguRCrmc<5nyV>LX~C zylGnKy9bFuLhY&&M({uA5D4SY@PBN|tbX-NDId-K@|3=R(FDAiMjf&;LD5b;e^;K< zpZAF99P;&&z2{pV$_7D{$&={h$4ib#=s@evoTp>ZKtG1isqkpZF5GdMS2t6pBF9eJ zM1w9H@39pNXood#-|PJs`GX%uiS>e@f`E(O)-ox=xvBy}m02{J`r<%nO-l< ;XqpFm^H_4x>m6N(d`*?Kky{s2+kHoS4-;RJ zG3~kGTN-_`P-$0275Ed$6Zdbly185r52u{g(Xc_9d|+c^yr;5uG&68gu01$?Vm8VD zFh{Utd~1Zfw>Jxpp4%Zfmjmqorgj!#`|w;nc;|$lYC&nWE#?Qq7qf*JZ{29aO)@`_ z-#cmw)R?wDInq7?%y(|B(;y7Bsx7nS1u=ZC)0Gbeac@S%8R8V(;88Hi_pM+|tVwJS zVq%H3K2}pLk@YvLxN#z8lqAJhKihERo#-X%wkyMvcFt@qm&;>Z_et$a{^mgXKKttG z5x*mwxsmz)8U%wQzuX}%@n>Za0BF?!xMdK`qX0@*tHF`9k_$^|4~S jWJU0gHtzDsjHOA)!(A kP5Ywp`1?lF8Mcu_5&-MQgiH7vWR16m(RzUg;YZ7yO2eXFJ0hQ zd4vasff=Pr)v2Fxu8cZOSN=)BVOy8aGO}E0q2rFSPlPB49xI~5E9oecC*=+A%YDZA z674fNPWzldYUI4QNa$vu*#`3VcgnZ~3QT84@A>Z|xbBXb`}uJZcxCVg<-NcWhyaLm zj}fMC^u*g9gVb9sJn$+tI!8`;8F#?U@ESv4crPfU3_#7Q _#Tu<9YBJ_&lMdmFl;mw)5@6thzC7-96^QzfA? zZe!q+_?GPxf{uyfYq?4B<`_wh31S+Fk%y)PjeKZwx&?==CiW^D 6Ac>I=V3uGB6g;@gOY z#6j|AuJPw9=m(Q0fenWzhnVov?Y>iA!M^@M_iVA9I;W-6)~*p8D8gJP?yL+dgVaJM zQ-t<9(GYqCvcA>xG@AU^&O%KuG?ENeRLu?rHhfR(t$Onk2ai7yl6#@Tf0p5&N(f?Y zZUuR3@>h?O3Iv`w%Z|+}2v9zM1nFKHc0Rv(#Vz!Fna=T#3$-mAMR*q ;YC1?SsK5y=bC{ECj`SQv z2WWlpk^Ekq9@C6|MQZGVqOI_InG4K(ru>^4Y`Zq!cF?!JtmGLXF4^e9-}`GYoTs28 zu2YeRaYOby4+mtO{9V62qbCNWKG@gvi!~-noZP+|o}1xr$qo5uY_>)$V8TpTX sKUHX>a#lr_eBVT+IIYNb5_k2*g zxl*YPU-Df9#W~|Fn!_DiuhggN`#R|V3yo3 zxjvA^!f=mn!Equ51x}20G$x2M8Yzx0#mygCfJf4=={;B>-dL8*$$jwcOubZ6WxJuU zjkBhZNa3e~RI^6d$!S0XGn`yA|M%CWnKjcJ@*BC!Z(4h|9wIS-PxKE$azFyc@s7*6 z$;98ny@QFcKqaTmm|dYw2&Y{uj=aJCN00Gu;n25(DZ(dtvzeWq|E9@CoNOxDuDkw- zD3SRFf@awm<*B}_tae3mIoAP19qz-dC^>cf>$seIZOw-Y#X~Rqihl*2Ih=_cyav9{ z*q`-A0leK#0MiwJe5YjCpB#ch5q!BWG@aG2qyR6NhCJ}s;$LdZl){*dd0XWnSnRe` zs0`M7`-v5>6IiJF9V38QG&ii^6O-%K|JF^1ulis^LmtjV=e{GFMqVP^J(SI3X?*+y zGSNc{H%sEP0&%b;m`Mx|C%gcFWUVjd=(&f`fY!%75(6gBgZ8`~r?LNr06pw5up5F7 zHCV^AlHwaL>TD3v*?4aRX-i`|wzAEcEY@g5gavzTs~)Z*Ea0FyM*VuD%pUqo{tYwm zcGuq2HvB?hrjjvr;*nM|Z|PqP{vEp0vQs`or@tr(jj5;CA0HB+0E)VTYDp<*>GYM; z5&mLNaG?f&hv)b7i~H5QFMT*e Q}kkey0r90BQ_$c9BbjL4wMQPII;a((rJPj;&xwJ+v z;>Z5N4IZAD`-JDbRO!8W{(L7dnG|NfWW4X@G^ZYN5|czqSr&MyQ-|&O?4zB*=-Q$x zSuH^J9DMq$-)V8R@VW&DE^eh4UU5`>^zny4ta6snSL*f~{h1iQr87&*Bor-dz@dt_ z^!3Xhb~85(4VU(?%#G3Z(z`1B$h7&)dDPw}_7oeRLuZB1gkw7314Z65!z5+*_h7~y zHeTtN?q^xXAftDT5=6B4R4+sZ>uzl`pZ|7l49Me|%E1W&%*8BhIP9MI1}eyCTh*GY z6HRmBuHK=r8Efo1XE2CB1Q&BwH_Te5UG;!Tp;GADyym2}JplQ-($HR$`eOMl;DeTk zUiK9FBM?begX9W%tm_+8uK1UG%S#OBF^}3$zq(|Zv_|;n@QwXxv1AjtT1~pniuuR_ zz(1m}8MA^4_qRMBof=QQDS*L$ifqG156?;a_3iTOt2^4&*t>Sd<|P-zq-&{G1u9=T zw*F=ZQ$Jsz=oMz0A9F;KmWixZ7IP-wVIY(sCX$hzET%kEmJq0-QE2PZvD1f(>5{}q zA|G`3>e>!z>XUtHyeba$kSH~>ZloN>Q8W-NAP@w6GlYA5`)0bq`$p?CQ&XkW&R53O z$-+<(w7l=@Mx;yWJJF1uw}1Xz@B?V(XRANHTjuu7UUUP%cf)T0YjhTSX7do!h*sF_ z&uh1TYB_ix-V>VFY6F*{(Han&%mE$T&y;#S&VKI A-aKJ zhARJx;FCM_&K5onjI~Rh+^kE%U$(t%Ob2{elj^zzGG8{(WHl&r^>+c@Gqs(kxkfid z?!JWg>VdJ3Tz^f%8I|}+!XUp5?|~b7;6Lt)t `u)MaI?)Zn?B5=!ra#LbZ3fB!Mij>w?Vk~9Dd+H;o&0hT z&@>Yfm*2!!Ig!siq0`VVmb~oTcx}}-xa$#g8Z?WdO9`acc9%|@zN2)q^k|qciEuBX z`(SZx>j@2?d!dPteGAmPj3I99*55q_e7AoM&-HwR>lBci68P$)Gqv32*idURg^$#5 z{-eFoqP5i@TdR&bn6BHx;T9c!*{ER@1A_U`_zlzg?FcV3RSqX<0bC%zt|p>m5tMFj zt#as^alG@ y9R(s_ZYt3`M}l8 zvyiqHxJ!>w_fKm0F`RMB;HdXp4jIZhljk~PtN%oQDf=+{J5# CHZ9qX{uamN<%&+nP5>irixE%S2 z#~Je+=_;T0!YYLn9Vm2EjhHgot1Wgog6O1?NuKMAtzH4^?kD}m3u&3BVN0CaQ3T82 zQ%U=9ocG$%LlAc?u;IAnFmf+-8_jlC00nt~^mtabB?hgZO#UM*%^7STlugj~JQcnb zHs*oV1T~Vd?+@+*UiZ@g(cNc#LN=ej>izpI$W*CM_qI--{lSXdK0DfxSbD`2-FG3b z=WSv^3*Qs;J_kMgID-XfO8ViIQer?rj!zpGeYqFvrBLw s37L01fo|`19I2p zv8`0wV;8K#H6%125;5P5ydljz>OGO_Xs{hO+v9T`T&qL}T(Pz)Q`)J)4-t0Yhsp4w z@6Z4G<$bBiM)<($hN x!jutyd4-dT5u`+en6mKO>PYT5r$tD z57ciJq!c)0vd~F^Cgyf<-vehx;KO)D`vL2c8{BZJlg@ 1?^xW7L`k);$NeSq3wo#R5!)dH88Dh@f#Mb zrqsTR-Fny?O7MX^`&k8Pi0yW3oUqcc$&@Z33Ff)Llk)qUexEy#pjT@eY0Du81CaXd zP}fskZ6;ktLugP?MAFD{*oqbY{cC0Ks?fr$cClOo$8 |j1**lVp_MqvNJNf$)Z)r&f-@l>|+vnEH(_G}s_q~lPZ`Wev!DPPnAL9*@ z=90h{k)Es=hX1FMbN^<7@#FY5Vwl_4+}7BN(8Ys1F6A;rQVfr~E;f52Nfx<;*~li6 zMV^q2;UOZILd4pl)Yp>Aa*a`mWNi$&ZjbZ*p7Z_v``hOac%RRCpYuBJ7i3h(Z#67n zO53V9Ked9!yC~IdINj&n33Z%$luQgMz@=pwnfpOxDz5|lr+ghYvSdjEiTzv2ZlPq} zlS_iQ^5GtLa|3zV6RPS$%RdPtHHeN@H;Yh}?~`&Y!OSdKyuVLNqRxG}@zCFNsoNx5 z_2nG2|7@AjfTm${>_V*+DQHMob=~akWa1m>#|-zsaL{8x2a=2$bbg<9)-^sX--Cs{ zhqNbu{V1-zJ4)#MOe3&y6}HoCjBMQ!qTP<(-mBZow@5lUz4=0lEh@8+oHHR)7o6^m zz<%}?Mo6G zH)c?o(w1UC>I{!PlsO&1y6?Webt^h!wu?H7Gr{TWJq puDsoK{9t zvr)9O%XbiN2XBfAuCTVn15uJ!bPc>m0rLfZgrikvqrbU89lQJtB{^{VeR%#O@n*}1 zT4?|@^#|x`2&gasYfA2ty7;NN0do|OSM5FhW~lci9Jq%DJD8K6^&)x1blSkux1I74 z92&G}KKXEOr3swdk=e>;J|Wrw(he#?bJfnr@a!K;W~=4|C|McvPM&Ts`p#1X5Q#Kz z>VdZmdYK>_TCCH$s1HnIbJ *?@=@b-Hkl*1C-U+*=C=dbOd`+exO0!wyO$Cy0% zWbvuYnb@9?)xT+9cBW0{u1!bV_A@KI)o%ij!V1@^c~{KZIDY+f`JEs|#_RRB*z>z7 z0S+xSs$kg@IYRZYw(2Ri1wzMWTA3hCnJ-!j^u*)j6|QyNi9XH2>bTT+p7N9c@%6vC z*E!u)*m$>VO=!iQHwk oH`Xhr4KK1MW9tN#ip$gSvQcnN4AyNyaThY+I-y zs~(kmV`cYdL`P&`98sZ8%*%{XZAX+iCL)IPg?6&@Jr;LhS~Qt(?8G(L>YQ?8wfEV8 zR`_t7c4A+DQhRlGLw8;?_PH(4L!Ga6m5?pwN#I|5gz7|ulE&Xr%paZTGHY6}+Emzn zx?^}}4M-I1Ko1gqenj{Zd-BzkMpdjSyqSNWA73;KK_51h7o8&ryjF(w16iSgnRf^2 zwpwT61Ok|~^_;0Vhp-f7rFSh>K47D1I5U8#*ERpJ$&U0hVs*m>&~EVoi8Fntu4q|$ ziR{No*?SU^rtA@gZOw>Fc<9}>M^xzP#4p89D?1_=`cc)(b%8wjxAl*H%-L-x7sTpr ziwNqu;c|Co5qYThCQl*`Hx2mU>eisAN7Qy89-ramp?J(sFGGqP Iax#2(P$xM&w3};Lv|6(!(on<=hl7th*rF@^3`{vJc1}~<|OpE5WZUTfYZo7F3 zyFFmYfFH w{Gqn 3SBFAQVAx^sgSU76u=VNf)s;GC z%m1>W;+3tT#&z;8#qBNJrihu052&ea5Y~UX!h6aJruq!eSn_b3xWyZ!{L(zKKCjm? z-%ZpWuM-?@dT99~X(5A1$=`Fi|I*C_J;qrVR2xWHdHOVh5}hc0P7<>=Vz5Pyobk|S zo8C+z==I+CI%g4GGD}o1il-AD_^)eD1z=(kt3y#I7WvU>g%WG}^CE0$pyqiFT|CQp z2ig)f4UniBi7LV|2Q3RBL*=+?z6|3wMM1+Arg3eqWU@0)6Q%r{ qN=&u& &*>hS+1!+6)&Vh?)eyh z%36X08H&Cm#SMLUTN2%P=~Q7c!$pH3aG4wTBdezEIbUN6(N>B?DF7>! j%(dO$BCU*^d~YS?el+7Mc>M};&5WiAoGR_> z@D0y2>>U$_E{Md?)Xm4!KK4o@U1<@wk !aNmSZRS< zw%agv*~~e7Zj#zvEXi6=4B^U@YP>w33|kIDy-(Rnneq_sOr1AmQ$I)daCqm_kY+b7 z?7QdXX8gx~661&THTKqbmMV!vBwEV?{EQhsYGN<76B;0r|HAqq07(T}jaDcE;cC&m zBMu6Flj)?mZ#uOxIoJw{Hih;A=9*ujU&A4JaX*G>{jx3E=(-U}rOiaY4!VbFjUnxsi9(BbU1UGLVn=Q2h z=6dIv!Z|rtRvoJ+8l6|(i49i5S)TVV1~>1(c(l|$O0k=~D%c#tB mkN-p5VI z1yZ5hfx)Mll45Hhv$C-ZqSnz}FPf?Oxyy-HP=erZfdTjPXu?h3po;+fn|?B|#ECe} z(G+r_gT$v;_WttYUp}wFckz9L0*kbF9#?HulcIm1nN_XaTIlnk lU~!2naW6O`NamL|Q8gpfbq+qij4T|j(KpUvAl5ubhQfSyY> tKxIeu^dGs>f6xEh`t(0n)J4^8$(O8`pnXa>)Q-*y;O2sMZg9e+{{!rCv+4i< literal 0 HcmV?d00001 diff --git a/packages/openubmc/public/footer-bg.png b/packages/openubmc/public/footer-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..88098672605e6b5a302bff4662e3ee322428d27b GIT binary patch literal 89594 zcmXt;Ra9GD*R~Vfy|}w;ad#;WrMOE=aCd@3af(Z!I23m$NO38y1&X^93PFCJ?;U?m z_82)>`(W+0<~8qm#b~N4Vxp0v0RR9@WhFUn001!+006R}Aie#Api~y~-@{!-Sr_H) z7l2|N4FFIBl;xy#eR59&zj*HmH8}hRtu%YwPprdUUpE5z=9-rmIsXPqA>o3hSZUh5 zc7+2w*kh=bLIJ$IylzshPJcR{X$fW8kX$gg0OpbyvM4kdfEqx!1u@oUbC{hWO2{+z zHAyX7rzz~56e11=LMS0vM?qb{%f+5Gpg#PvK3OY(^7J(?Lyz@zV6Tn_hWS3SM* zq}WCPjREeeJV#@?1bAxG8|m|#_~z+)3IID!zD4=_vNJ5N)3ByV*S4Qegk`Jj3GLDW zdabjs9J$lu=YK>+DWfl*kRX1 2h@Y{jN+ugzhH %%R;ruOOTUw_+{V3RskV1lNEmJi^eCXu8h6A(e+7~=Ee!|N+RQ# zeVV5(KIZ1e6jAi$vw9Y3EidK29&((6zQ8^2Fk_G}h4Hr#q1J_(v ~r6tJ- p5NZJNMDBZlbl; (eql z-@Z-*M_IS?@IZ>I^jD!8`jFNf7~6*GpWI_i1C-49I_Dh`Ik_7H(}YKBtH6jRn-05u z=zHu|^r&owI*Ux+yPe{-STuWGBtf#xH%*#Q8$ny$+l)EW7o@lW^dqhE2q;T ~BKqv$&K~myiMhnM0 zcN&!VuS;x;A&~+efMec&jz5fwvl-ir-_+ge52S~<82M%>ZVjU@8`C7DwYr@mIhylt zsuci$HXE9CZt%X6>P>-BLM`W2j#J{Cn&YdP@N>cmx6kCmSw&}La*$Kgse0tg75CTE zCvT-bxP-g3R_xhCj9UesPh;fhy5#1FQcPge9>IX&*7(3(&jj^0lY@pI@sdgKxyYg~ zzkHuCw|!`dF$ND7csItku!i@_kP6cJcmtgYquuMvFp;u0l&Dak9dK6Hs{A ;>2BTG6sMDtFuxK*@3A@vqcAPCqiS3)b5GxS?B^9G>vVx>{)TIe+aX zys25MlVsta+!y8lZiGOypWs0Rhgw_;UFs=2Z0<|$@VffV%f@C3|FA>m&3*xL=mR|M zXVN77P6UICy&DcN8%#W_3ZX{^ H00 zB~q2DW9S5Kt?*9Y`LESS?uI_%?pBc5>Xj(4aFn)`ue bP?awiA_^A=2h+3pozLY{b#!2501 ?oeQ}9}sU88@!qGAB znXax9aDa4VFqtjBhN ~U^I Fj-miAr9mvDeu;b$O(@e^h3}#2BIm&d1wGgq zbeDgX9|Ac` VbDbq3NQoKEVc1I%0Ro<-$_|*H`a25WqoA zJ1PybI<|(bPQ59fQtfYdhh!B=^x*p%BKQ5n_2j<_&{K*yPC_OxjfFeQcqJ$DDu zZ)R$z{mk_7$uM5eyBiAH%b)pkAqV?5Tr;i>iRsWkQ&Y+=iRypRX0ohEMH9*T1imCv z-x5Oj+`u=4F<$~xXzVvNfJg{2K=LvQIv}Iy3A({F!bO_z9h_^bEGHdMXf6O%K%;I5 zr3?2T19LIt+nBYOs6eRy;6Yx=3+g2-8UgCs701ZlrU^#Xfk>xk8@FTGaJlEE1B}nI zQIPD{=*&MN0EX=LQT3?n?V%$iLktDtWB#Ab{|*v&DZ=%AblcuV+6ZdIq)9!n%y&wr zr}NqL2E6!JI`TE_qy=_z4A*mqW2M1_kK#yTpMj{E@Y^uxuNBF$4XMZ0P;Ax6NyiVn zAyIf3`~FqnC&SfD49;+RGKhC{3%AtroQ6vF`na8u5Z{$U&$fU1s9yo5lF91D$Nj!v z#YFxJ g%$VG{8w2^4xi+5ml_m7CKr)eQ^-x#g( z{W++6;Mae?eK2QiIn|By%7?ittLhvD{9|M9LXJW7uU}FjjhhIA4`2hZs8M43u)l&~ z>&3Y6ng0qm#u^UXl9LU|jeD8}-0b%>lK9&SLg *2C5_WY?CWP`|Bj$rC1l5b?jO5}H0bLbJ*Xsv%#l7lZ#0#I)1^j*- zO7?k#+W7+;H`l!VI|bS373hK9rQPCmqf)6A53zkefB|E+HStvr$A9sx4?L4X#wY)v z@x=FZNv3wYl;EPfAd`pnzDmKpuh8jCv9i
~AYM0jR$9I4TBO+4_dY3FyRl6Qm2w1;c_&q2EF1pu>AlOkGF2T*Euj3JYn*u2 zsa;cA@m)sg@gyMFJK8{C<9-LI%o)={8QJ%)E(N?qAt{p$Z}@(8*fn+s{5vgR+O^%e zUE@!OCoIVJh9`!ggn$5K@A6tlZb?XXU+bK_Pjs&3-Eh&-`g##%@z2uHK600z^>JLX za^a~vdzv{vUOU|F4}HyVs=dGt*;^aqS@k#CL|X*z{YRZidhjepb6;(xw#mrhwbuz2 zB$$+*CIyhuRCFI} Q-pB3gO&D-y98BV zOM~uBgNjyNIHbg2AEeHez7K9t!P%Q~%=r%zC@)+(!a3Tl_DEw8FcY@{FYAFQpKKja zw{+4Yr<1FKxiW8hNA?(7q94~x#n*~nJ_0P@-WHw}T4OS=mO6f;$i%4~=Ok-qpP<(L z+U6fqEDR`9K yMin&qNH^7=4@YT2=g9m@P) z`Aam&YRx_4Jwk%_ZJPx2X%F8F980LAg{3YYePao@=U_|4S;lK1;|6t)6DXfiM%Urn zV%T30L}C#i(0H2dMF*Q08@k(K{3tCuxbE~WaOO&hpyGKNfPdkcetz+X^F7k*)`2b4 zqcsfp|4_9o|B@;%U6I0xtn#ea*_>`BX+MVz$K j= zFL<=?$m*4`xe;;ABO7#;MW(h2h)6{X1O;=6ffIN>ND$_;;Qxbnqgdhx_fniu%AjcI zEZG3jZC1}@=2vbHb!uf%UKQYU?NtM9+;m!}_@+kctf|f8BSXCg;^rg&OiL!6v|YDu z+)ni-LpsHe-H5+ot;M`xF7_fnWM-jmyj%q!%r7#}J{(MBsxtN2S%^}+o6G4`5KWg( z6@}$Q&^Ll|f!WT SYnC4QE Dx0*K5S`Db+ |A4Ms$h7tDYaHD|1q#iW>Y?8~ zq1H)e-(b7&7pZHzwn#0@-LU4y(0A`z1CJ!l@rWa8y%SNo?E1!?G26UPpmh3n%-(NB zq|;DoH3u0!?|n*-v`684lc1184E)3P#%WWq>bFerJmc=dw+!yO(cDqV tQ_q^BUQjo-&E0o9jj<8 z9v-y~P{zsSox=+Z Sf>X&oWi zu@*5c?zXjhq=Fs*U5z{G1=O2Fsd@26%~$Ap+_^GD(4nfYG34_GG`ycV)qkV{@JqzR z5|9)3)@AeDk&KPqNE4u=aZKa9)TXd+2dmY=uX28zwa^K+1Ff?Y!k9?1!3W*D_@(IS zCAPIINul(4eT)H@2J>VJ4FgOhD%4$p_|2pb?{kY1tDcYK1Gp2aftaUt+xqsGeCUH5 zow(Y`+6$0_We1D6UbY^?f_R>(`>-Xc-@6M#ib~g7 $rt;vw!e!QQS@M~PGY-@8UnB_0Jdhul9;Jh09E0j1jMA1W z-=D<=F9_x6Q-agCr^Qz9sV0N1X?l?}+4K2-d4^pZ8^Mg8HO3;lq}SOz9QT}hi~omu zW`F4Oq6<*b8?{ * QqerIq2;J$eydOU1Pw8m&9918xw6Y&FY*yu9=F@7I`txMkh z9! zUam<`MMw_ji7~h%gW+YbYqzb&W}1$Ru*&N~cKwmK)>q4~9dxs)sR %a%s` z=iTBl-Y58V>r7ve6MmlAY}C<{ofTY!i?6AtKCrtCTT&4yZ;jWs3UnTBRZ3$1ES+>y za%Gq)-+v#vnpf>NQ+all{xwN}*UT>RSJ2`ri`6$U_eJX`&LdJD{jwBs48L}8Ar2h> zi12+!^J7W;3XHx=%r>j4`@}c;nlYIAUUVtiKL?BT?XXdB6l18^Vjpe9rs!jM^`f|_ zHefZ{=&ESk=LkOj5$vqvt8O6-r_bO)nwK5Zr!WV1SXZsnp4WbgzS;L5guxtkSyVn( zYo2<)wUR4U@MHg#{$pDQRR!-XQ`G|yyD>Lnc%EwyOVTnXYp@!=-aE}h{zx2VNof;{ zh6-eQ9FaK!LIqA>H`}s;LgrxQz30^s1HJexnD*?axdVL6QFjuE21ilqkro=7m!a;d zCYw+|s 6%h>ilzhanv5SNrmxm_mc4Z9ovDfoyqT46`(Rn7eO z^HfV3zxo=@ala|TDjN0Z)*P6?`ieWwS8PQr;9SStQz|FHbo70h&Vn{|GR6nEq!M*= z=u08+kf2PSK~w)}7XP1lk_Ln1I)?L?sM8U!LS$oOposs$u`#|76EkvCnBNlM1$j6d zqJi00fIR4}JB)v~-krV14$(aheKi{}z5+hLFysKg$CbLJEz9Ep;;V4_7$f%kGADc% zQpzL~6C&3=vgAe>tWGl{rC#7>1jZqD;wGNzR~ggG_tZ5Nrbw?8cqsiK@(?;Zva*`w zQ}M|`pL4KVtCQI#{iSEqG)ns|w#`1F0$8hEYU&qNJLNm+JFt+mja=vweTS;?8hI?~ zo_BTrP3MrX L?% z7K&%)4{;x(vY>J+p+9k&f$b!gw-hwt@p9AcxNxfHh2}7e5e90;70}bv4)dCGDfu>& zTvYpd+ofNHbCuNlyI*Z2#w+(f`n}{){`U5BYnsSIj+oc3rghBdfFM=rMZ0^jv3tsv zFl(SCYZJ0VP`#H7qEev)A}swVa7uhF%l#WmPb-MnM(6954~2|54db+@=J8(iU*;_& zlDH_Ger3k&_y|nP4$8iZddYr?#oH@}fb4RFZq$+MtP^6Lbau}>v9}{LhCnxJK2_sA zhFce0%YD^@niC#Ed_1lme>MwU%m+Pq6Ow14AL_p{Hrqw8R8By+E>He!P=_pZ1slQc zl^fgd__jOcxqGXqr%&eY%jQEiicF}MY-mQYQX>%aWl=aUXA_FZBkfhp)F`!%(6-&X z*j}8J-A(8c#Nl@Q2fZtP%>>l%5Ey&ImkWFnTXQu$tY p@Beco8kea>u)SeD+iHXEju2#C?!zGJC(zesEpK3SAL7i@<9guk6*lj z R$W2^ok$8(x^&`qJrbP%7qy0ZjJ)jTz zy%$sp#{le5+FHGSbo@G^15<}i0fkr-Ccs7pQ9G3T_cWVEydT^^FtbO&b=ixvo9=)h zru@dm2~2P&PXAO*9yQN>lTFBNQQ }!K`5rf8wm>bi8=hT*a5#`PP?J>TyPQ z2;+FMh6sdC*7c53n$U_QSodwvzWcgucVBl)Gl=-T;D{d&Kf6k`;RHnpub9^V*oHWg z$o1<8L7_XgC>I4|LoSvZN9%056Kh-jh}4W; UbP0xUdwu|7*NfcTG|ln{Uk zdyDAS2G?_sxK>ILwwMw7C3MzQZNzyOYlW6LR40RJOVkn%Qq@>5XmCRCYg -)VlvRpouz7#8O~OM#kpxYQ|eoy;u! zD=WaQ1iP|RLowCe1U)tz_)a8RF+0jVq^wX9BmCoD>Q{kmUOv|8pT17%0z&80U&25_ zlj2TagC;i6MH7( Du+iB zwG}S*VBkooCy)Hw?lRRD;zLsCq=yQ2q>0Ew!?`a!9+^!9;wowXz8X8Xsc;^JO(=;| zOf;Lwwxfzzx{1R0f2saMN1fMw)(q_xyr${{wk|sC<<1L`Wqph$b5J{&t3Ov>u>HXV z_rTuJRMEwT@VyIh8>Qvjmkv@lsNisVC>-VQ&|mLHos49)Yf2o?$*?dBstK)k#9w%K zv)7qII *Po{<8UTVyxyUe}v?x|9gTN9;9ZKz|;u7#(SK2 zh`ADmBcgW30Jj)Fxdx{EDrK#vd4pSx4&-k!9s51Yx0KHaQzSmL+#^@Bv_JdqG;H_{ z;q^;AAcs N!v#4+$4bQ)|eeA^}eO z6auSmFk#aB;{Kd~#1OP3KKCxd2+{*HIlYEYEy^b(aR&6Cm#royXK1Fwx4VmVb(WCM z7SEVk@nK#ZXks-#k!}-aeMTC`b@7y?w|J!{e65*oFqVE3(SMN)-Se)`8Bjc;f`>_& ziY3t({*0M+rn$D+zlld+xS?>~?E)2_@|eOXlQWwX;eH-jIVCG;V-UCn4?jbLMwDf` zGo4$hrbG(XtBqP2zx^_J%g8=>S@inK!5IqDd_1yId7`0rR1*nBsH@QeUfLII2`_O2 zmDaa1l~rRxfZ8}pfX|`*+1t}H@1#`TnT{*O IpcoMF2qxJn0^Le#Xx^T_n0C$^qtVXU5Iv;M^^FK7J2tYd=UaZ3J^oeHPx*zUQ zym8%r^_AGF1=c*f*&Cz;pMgfm^ksIc`0@zh;=hoD6>&5r;EvC{(NJ2UiBoBW!wxJc zrGA~(pKHm!bHEB9+sTpJ42)LckQX4L&Yu}1c*avE^fF(A(xqrCY3Xi&ovRFJXK_`t z^aZG8X|n?0Okt5HySvR>>JP0PqogZZBRe#wR$McWj3r7fRc{P!C%Z6ahWMa11v#}5 zP3UP;JkhO?DoUni`Rgu^1qqHn<-nsOjBNSpmoJE7zZDxU>Wvd3A)uK-u<-P$){MWT zC&hmN_n^9uV{33`(Z_70q2FehHPD%4M~+7xgeQ4SNlPJ!F~B6u1Yh?_h|_oy;OZVZ zz0|P!#QCzLB$vd0K#KcWg4&enIf-FA(7MhuYS5!6;xr^E74#M@fd1?2CLQ~IO87bz zJXA-z45&G>!SZRoU5+Tc$Ro5}$go!Xe03ghBu@Vw!Urx (rRo!W%SY08mw z8?q;C{Vi`MlyNz+odS>s40Q=Ioa92dR_v!&Yh&D#kAgg=l6Dzxv*rPC3o1H}>#`62 ze7x+$aTWlDwF%;SN-6zw;9c(hNS`az(^`H2dn8#JNPjkSn#X+p>&G>xM*OG|eW}>L zPMkYI4X9%@2@qrCl ni}N%%u|iU-B%uEo=GA+v;Z_-ZQysm=B* zj}<9|ZyEkxhuw7Bsw8~e+wCo=2>eF##c?XMx%tAeSN4HZf-6D1mZzZbVvE$3J>9>f zqUT6V_4jk3x!r$NBumRX6LQHLUMFL$Awh@euu1*M8PJ h_1w&Fzx$;xBDq;{Td4rD-6OIRI<#!Qc-p6id6sk4F>O6NyKP>ksUsGuoHXZzqU zzFXl;?k`2|&$N>8%Ri}GvEP)j4KN5>>i^mkc{KCxK$nq?B9t&PhxebC?Dx $6ag>gF z&tdczIxO|GDSJN}1RVy9a6BsG^)7QAFaK=8_)6HsnXI%iZAb1&H67ttY@FuI!#aHm z$fqZ8pzbjO)wf@cf;j)b3lL15foPfCDySoS*Xvu`y7!<_U#xMP+(1E&U+u=xr7-nT zjhF5JQeDPDB22j;7N~3oa$r3B*lJMzO(3M6Jp7pVB9cCBSU3oIv Mo?2~%d^sS^o;LGX%k9?|s9Y!M?5H}xl zWqm>z^oqv#s9=EVM~NV}H)NiYMIZYQMQnVZ#>#)yHY^8$nkVqXrDqfY36oM~3I(e# zw+jApFxsMCpNoi7iH@QBcBHO+yWfMCbK8TaFY>~T Srx-4*56t2jp z$*iek(ti4uc;c+~uIW!oWVH & a({85aI5E@Dz~RWH}j#1)vIyp vf+H|(+amWNRzFE+Rq zHlSAS;Whz~q|qrBk5B381H-nV;3{`tN;<5#FNsIUcDOry | z;u&%)jSW91YLFh3&VA*xqFz#}ipxJrh$G66)TO_xGU+vs^cY~|!EV|{VQeMX2|Qk> zUzD-^<(R}KEv^?adw{edsEw(_mbW$w+^K>vOSEPfj3Q-5^H{YG-*AE4$#@>iPnLQQ z8xcHQJo7h1{;w0! xGo*Q~6R5~}NCWZRMT0WZUnl>r)aXA`%h3A`^F$}u> z)U4i)Dok8Aa`Iz+kcK{<3oaMI#yJT>3ukQ@kqKd@PVnms7Y)ZzAk3?)K>6-l%)+aT zz=JrhQp(1F)~023B^{se&C@4BmppXIB_&31X2}HQZ|rlY$NT0H#3Gn#hK`gXN&W{R z?E($(dZJQ}QUm^2s^It9l4U$#W%5VR8H?5Zn8Zy(8;T`W2p*!4QdH0pf)ADw**Y$m z#EtMN(=GnJlejssHb2LNSMpuc9v|X%8<$RT+0=k{5=5NMrgLIw2On?Qs8p2q_pcKy zBt8E=?LbAJGbcOyXajurXRAJ`v(3to ii{hwb|} A}LruNiqOo(OKkJbFgiE4}KTE~PT+8By6u-IFv znN2~!d*Et F4b4G^QqdI^VTVu z#SgnDP$fYuCdbVGaFW6)L9iBB_$K#4sYO4mGf8Sb=_ z!Sz9L5z*CocJz`Y(Xe(Kl#tb7L9eOq=X43uthwA97EHO#bXZXsc)B&(9G1yIs_mr< zDyTJTjjjGK$9mpp1P~Wh17m1@$tOsqhcbGQXIf6$w;G=s)P?l2G?!;8>;hTK-p3_^ z^^BH50A}>9h4(egG(QU16K4om;C>_gC~s`52QBp5h=MZiGw+kYtbJd3Jtch3$5Bh! z=4MfskDtv$nj63h%#Ri3d_~7crSDkuXKO3sF-UY)nQZ7ZS;Go~OFyzv-)A kFMdq_1f(&<=aza0T2 blC zNKwdW73<|=upSRouZ^FcexdX{C0i{xf1>9;uS3N9rUU!SOO}z*QqQ%z_3V%={MYY8 zpcO^1X_2W%1#B%vW%2;+OVNV9(x <|vB&>qAH&=Xl_*8}Av;xAQ9PdQL oz$NDf?}dipe`Ze%sHTr|YrPghA9T%U;1a9SiUJKr0){;^ z?&V_)*X^z)%CUp6x26_Bc+E8!gNv3IPL`UjP6ztqww-UJ(wm7Yn@FkwqIUu3gu>4j ziaX(y0)ExbYjA#LV4n22W6T>%zfqT4YhTWIwy^i9D3VXoGWczcT1gLY&>kD=Satte zc&iBnA8xTls|#d=b`+V~D>cxZV)N&4b=*VAH)%8cG<~soaXzx{(4PHDx&;X@E=Bt# z*@Q?V*4fqS0DKo*$pja96Hs}P2JOyfj(3GdhdxEvsB)X1S*%8;>Zt>A-H^ygh$>Hx z(-rF_o u3eWgl0xqj->Sqx`Dz`goxJM<3HENK)ZZ^l$t{H%+~v)du4-ID+V7$GLNd%h>non z!{Qnq5?K$+m)g*i*@T9yv5V1F3g9f^mg>f@IAz0=lNbS^M0h)b`ET__v*c>L*v X=;8N{&U9OlKdVtVhmAbohm^WYDA=` z{y7c$G=aRn78iIs#ZPne3Mz$A*8kfXl?sm=Mc!S(QM)nu4_v!P{VuUkA;x_hW>=zZ zRF--8=REv5HlJ$b8)|wwrYrorR3HKL+8?0<@NW5;`S5olbj^h`pD 3FF=5^jOpvS`rtv*LdKfFn%{tZ_6x?NJp@L4SyEQESl~V#o8^;J`~# zY~d!6M7zw0fb&&@d|APP1}8))Go>Y8<*oPn@2biqeB+fj>tp$3(Lz)5MCnM3_|JdW zv(Vfiy+AZT3U9@^+?dTq^VU$Em+?$Q;JQ=xYN}j r z7w%e2C24dbpU=;9MmE;udH`y~yM+C73r2a0VSr{G)EMk$A*R6=<`E^NFckW}{LmkM zE(FoNSQl$= +I7m22Pj_Hm+7f#rx zTZ7luQy%_^E^DT %Jf&h_i%!PkEQx#llBs#}H(Ha*Qzp-ttVR zq2G-GYH$9+@|Q|U(jRv Ui;kT z` wo}G z0V->Pc=?U}suras!a$w{MNS|cRQOGoQOcf2C_E~#x2R2t-?dF$<$tqAFW7=x({6Cd zHCMv32W8Tf1&{}+zr^4&{~2eDEufl)1#FZ0^sr{KLAd(xR5DU0B3MO(lp>Vv1)R{5 zhdf9Eh|w9++2ga+3K}%qc_z=h<6`Jak5PXo^Kwdwejbl^TaZbO{xOdfW(0<}ZasKq z@7;qHNoN$jcYS^tY}^(r+EN ~d{u(yn)D*X=$h!icJT+- zA%ui9)fR86^xlHyPM0I;&zkBt=PnA>8^)x1 o>=+E m$P3QUNe5Q+jO+_D@sr7!<$L1C{YAL`eIY^|O2AdmBRWrp+A+uAJdBDZ nv@y0N@w7WgCx?#P$*Y)&I^& =_MRgDf8apJakbg`Lu_){DUk2@(>X9zBR)rLcl1az+h@q=M z7T6E#qgFsQ`3|`m!l?#TZsQQYkB3grxH~m(%KAVW&!Rx|$;Tne?`R{0jtf1TbPdQK z-QSP x5Gv=-E)&T)k1dEn}UIDey42_zr Pn zUp<`6iZ#Y`*CBm!keqm^htJT+2?#6s;ke@`4NLm9%ed|PnSG#`uNGfd1KFpgr)beJ( zYZ}MBKgGsWcLg>HydVqvhIE{8-4!LQYI4|9_9_G e2F?C(p4qgW5l8w#f^mPmgAI6*nR*dlzN%^db$;hhUp+ywE$T+lCXA?(FN8d| zLW1LJ 2O$j8bz>ElK^zBSiFDK7al0 {vBi&oFs^v}6(2lOGXxME32Rt|7`zoU%Z^gROLA*(~{MYp>!xlF$%U6(= zqjST637|B-R_hTU+@@kHW-z44^2&FneJxJ{W(YGdSmy*o68vLPpg ;?1 zk|c=xTf)#t)vtQ>1|%M@? sI82@TsLb|wD zf%PL6Y(+3VNd<(nu3v G)Q7T;WZO7TWfg}G} zkzI^8!X-~$0151Rq|lnast`U~p0UTNXFm=X2_|&!FPk89XMVbm(C-F|38xP&13X## zq{Daeyxc2uiqzF+C1xDYHtDE*(n@jq{rmn#8rff$ykOncA57mYzSvAKxxaq0$l$Ng z#}9pkUpbOQ)et0Or%lO}N|6@c(Y6hb^;$z4Hj#le6@Q-O3FYAS{cSE#{P(w9`%7z_ zZDso{UH0k`lCvJG-}$_T6QJx~Aan)BzQ>lNS@PC{%%$~ iT_$*$q<`aAVdO} zMd;OcP39R#5x5$WneDj?Ugd*<5&F4POgpiyP20a>(}wzMcuk d!r|0~4gR2bmzlMTM3$_Q!qza^CO!Lam{%tM6@6f-?f=9pE;?4kF!g z3bZH95N*YucUFHiP^p>M#e)b5b1gGjPm&Kt7RxH2i2rPVe?2OhHU%t9JrlWQ!A~ih z*2RL-H_WE8Oi7|rlrhb%fBMDue%$9`C@@^zA|DVa?_9Se-9jMU=g7MMNR_2vz>wH2 zOHL)?UE|op#ot!;c>USYI0A=x;Zml+ONnK}eMfichE6ds`d6xofZO Jkx>e)BwOjIxR`(MkgK zSs^0!g0%HZBz<~;oA0*u+cPoEAtb;??ey?Cak%f+ZSBi`_y?W9ORn9Dbw$6avW*gz zPH&~1tcWLGM&q|5070EF2(HLdi`*!$HfU0VMrL&1W8qdYg6l%R^&NkPam;4^;K125 z!VVMs5P@8IO=mq1Kf`i0#(ZhOk~GD02DgzqqxADuBP;pM7UZK1Nyk%#g$hymk^J_+ z0qZhXecZQ5X=ia~4=EF`(vNFAOF2@5g&s=z*4$v>Vl2A0D3aT8+`|&DMKnjQg;p)< zzPU>oFpsQdR52Tzh_P)k>=9-E?1)M|D_mWvcH}-wceGx?osy_y1T00DLgM2SC6mWn z*l`YoFT@_WcHI$yQEztfIG6)on~LlaVmIb$nij!&P%>1nD6TER$BWX9aqu?S@~1v` z?CQ81tAuByxBAbkcVAoY*^X {4VD3Q|NWl z6l&hCtF#6HzXG?pSDfEeeD;>vbIEGu(lxe`3AoTAN=K#ao>bX?a$7XJDToMVy+{!C zeVeoIPZ7Iawg5Arz$QdrxfTeRy1f&}gP0*2(%Y*;8`cc+g)hKuM{g?sQxEeAH+?&j zNH3Eo7el#BR#@N_MV}{}s}o6BmOHD9g53jZEq9MhDz8@cAw2jM1aKUNvq-}%ZCC^g zDf&ovDAJFjQ3%%JhPO#0#576i0xq2|I&o4I*!%M63O+#M-Dj6pB%6c%AtWSGkLny( zW9}YGZp`!LrhZ|d>mUi*%@3S^=jAXfT(-#`GO5!)eV3L#!yOTi(wZZc6B*`2oY>7< zfXoX^!%aRe=lS;Pzh^E;ZZ~b3OI`I>fElz5WI=?&{H$==ENU#EV GqXEudoC>lHKJYKw&HwRM_V+j`{U1Td;4@{X9UF+}e3?O@Yb(bQB1WfK?pLBd zDvKA1WM0sMvuNcuz(Dz+TiEtViL@U9M3qcv8ZYI}6PzTVXfm-B*Ysf%wLIe*=T**< z*=AxjbkZ{{a@&CEQTB2h3|H5D@gm21O@uSNcChVjw@D|eSP}T4;2W4BDO1zV*$1sG zPihBO_5=g!hT2t)GyDnFwy55OmjeX@ctzQzkPIQcaTmoH=;d;RX*c$0nIb5i#x!P~ z$iq~n>D|*$9l10Op^1KAqN7lv19S7Yc^t=t8X<>nRuq^x?vfDCKQX` yJiO$`d2>bA*vFZuEUwo&-N7c3{KVxuvz7hRFQ<8nErrzgubb^-^LfY4l z6J+4i5JaE7u8dJZ)nxx527D?g8sR@o7Ba+WshfARkG!@as~5Z+hyRfu|Jw`&7Nbfy z+!_tuMyj}+j4f&Z>wRIHL8M0bNa201n#Ed<+HJq?thXtarV}>~jEX-1Eer$N;bM z6a@iIR?I9?52$Hd1w$8{yHYn~fF+vnUIvjG7MRnQuOy}VQePSEBIaaN9JO7(fO_9d zLwQJxDe~md=)As#Kf7itdm+>>*a_#Z=nrD)?o){tReIHz&;#qHn+?9t+iIel)L%-S zsE_uqyA&1Pf`HKnN^!b(5N32Y9Aazxb(-+Y?End~!Aa_$qRy<2-(tqE)(S0DO*G*u zrxSL1Ixu;}uOu^Bc4Kt+vX7t~ZrBrWfFzKMAk;Z!0ayEnFq}m-Ry<)I0v>$X9?8)I z9I5u)nP~v3R&XNLiY{7D3Q+^>^Fa (f)H6c52a82IK*L!P{!gE{UGT#G?<1feVy+9Xy8KHKGF@9}O zu3zpnv%cd%+{PCks#Nzrf$&S*c3tfI_Wy>q&1#MD;Brrm>nS`}Q=8Hes^}ZB#^e_= z?Zp+L`{kzwnOTM@4Ii1D_NEGm*V#=)yE=5Qgn;(>UA3?7 qgo&e4dkf_+!l;Rb1droRU%*^uEt3+(epo%R5CfD{DWTv%6hVazlq4wre7g; zg&zmSD_3*^0B8V56->ve=}~i$6y}r4-4;^JLA3Q@biJChs@B6~N$D}3om&>197hB9 z4?XkTZX^~HkNY1pdOhKAhdvYcuE;VOF}2gCR@kSNbdqmXhZ;J5ud4aFubB{QMt@DQ zPYToG4nLJEB9msnRfG}Zgs~Cv K-s@z_nLe@pt@|Ts8&9UyX7+UnP|1WNPDo$f;m;1W- zwuos$ed2e1+4F&Xq4c0Hz!DZMy@Yte$cxil`suu-V@gpOTjoa6AwR+?ficKEUi?n! ze?y7V(HFJAGF4th{a-}&wq;6ceAJvvWO!cs;Jgq`>a%yFaJKPyD(PpkDfZU3zwu@y zEn~&VX8*qnF!Yz%)z(qF&@vvOsT~kFMAYlh|L%87{HT0%vbiYKt{{HLKZV#H$6nE~lZ%f(BCyNXCPLxD0@W9*3Awi} z?xUx$_ZU&I&TW!+55{SZncRPnQ%vaKuJhIAkbS3cV`TG8a!v+p*qx98-H+eH%O?vX zx*Fz=W(C=2v&HIg=T)3yqyIme&VnnBrtQ` LNeSGH=IGv#_;vjWn&W7DARjTTSTXymbHd zO*2v?JI0wJCu&!X(jT})SFSgB0;&1)dGyV*4LDPX=4;UFFT@!U7kF;;L1A~CIL>Wa zp_ahUXli*o(Jw)A0ErMutH3TMv-L~m?GjGyzEW?z?M NHNv2Hl zkqzTNNk3`ue3(i&^PpvrN^j9cd?K!-V5@Id(*Mu688eQZHND1As}bjO-ljT>$D;@g zqhTJ7(|&T^NF;^!?*wc4MVOw&l1U3r7z}lsEkNx_IahjRYkuND{}mYs^M9d*`yA3v z=MdXw^4{7 6;f}>vvafP^#gwknmI3%hbT|BqR?6`e+YChi zpK=qgV1()jd{H(iN%0T!pZg`{rcT)y8Hlq&Se$>?F~MxBF31)GdCWoG1^R^RR Wo^`w<%<6R-J2mm4b8bo6BVV zakV{f%B!%gv!lelH$iBeKdr2TL;Ej=9g3jyvqWe}psZQAeV^&os=Ktd))jq5pyWkP z<$(dN{s{eAUhEb(9ww-!c3( V+~9}qrl4C}=5 z5;H6b+mK{#ASbsZ`=KY>RG&WyMm$ r*66NenE_VeJy{evV`Q_n+rg`6n!KhfHZjut_y-GqJI!udv!n@cc3Q zBmrOc)pnF2j5zw58(An7+$9TFI9l-SN9{L;CRI!JtXhIXja|@P>vN2WyHcM-pqI^Q zos_YKO?*54^%j=2-fFA5r#<}oSJl&jKZbB4%OD66cmC7HD~aBJDT`;Ia^|NyYyu)K zRBc2Lvu#m|Mj=elFq%&NfWr&+6#fJ=u54=DPai~sel!kiMLOz9IQBM5yGM5IZfD zKM81?=F}HVvLq!zaGgp8xiyL~$V`QjHfi@3=kR!BFCFsc8r3C;KpYs8xUp)>h^E;M zcyG%OTtaoj*R)VYx Pw$iY8U dI-;j4$&4vA4{%y&)*!crmuZYDAP z8e{AtC+M!R5WPujR1nGa?AckG O-`K3#%-dwB!?ZO?*zUm(qP-MH(bwI4UNTs5{P; z7ZlZ*GhN+)`Cs7PPfrrpv`~Px{T0Y~?GaJZGyPtleVhOPbWaUJUhSWY(T6%Qr53sm8WT@7%9I+^Z1thI_(ooNmcK?74%Sa2&2#v7_ zI_KNLD^y ktXr1L!L{ZnanBc z ;rY`Y$RBw{wNSwbMl0uum9fM383+F{2-+#Kx$_!9Pj&;skTTm5=%<&<=6oL zWED6A_?73XT;yTDm+8;f{;o9#U^Ge~2amV7+_8u2fu_@Z+2V**g6IuqC%x$_I#c?V zTX)O%e^XkAicll+PsU+bv!hXl2P0>e5^-cE sN @xl{;Y_$XW^3Lq|%=(eW*Q zzwG3!z(`$f*mrt*E609rB1awK*-N22=i#=%h(77p1K|^HryRd9F8LGywEjL2WPeS# zvrsjl+G77n;_QQ2mvkc*f-Cc&)n@UMl^ox}IK8b|{{DiDOfe@{E>VW#C7axbriOS& zW#l$WZcI9#x=*vx3^)Lx(2^2193Wk@Ffr`*P4*;93uN)duI^LnubtjxF`pwu(nt$r zF^c=~YH+)>`q0*zPf;SI&nOD(4r|{NDdcsWp$A`T1^s*f^OGPAIH|drx9f%Uf3l#r z7>t`Zr6;7wA|ugof-*YSgC5?hX`sb+sL9xMK{fq`^f?MkaW%d+0OL>a3{G$;l;1PY zqmdzj5sDYQUlLgtoXTrJxwSn%K)lCJ0iTREL_4eOxn!Id6&mg*GupAi&<_4_H&uob ziM_H#1(b%<1@k~>nDtELTxw0RyGWJ0R72N+qYhODqy)>AcI{WMe4Lo4Plqn)0M>;z zt?NwR_2%X9qXJYbv{a8y*~Wn!J1?f%Tp+6BGJ1vSN12i-1pdsZ^t&K)3vAZSJ{MB& zI0*uxJ$WuR%2G 2h-+ky-k9C-I#Zx z;7k-JwxkhXWCTQj5-O9=fN9-_9O{RTWq|``XqWT=e*URU_m<6&UyUOVr~P|rXDvsN z$dYCMH? -N4UGtMf`Dq9UIudM+AqNl5QI=^jt5ox`9hYi&FCKvho3?+Ua4Yr{3bHfkBcm zJap?>90&(I3pP`W0#<_#<@k*229a1o-{0p@+bfY7>JtUbR`|g!;s%8M$~e$E+9~Bs z`!3?0Dlj@y+e}CK@9y#2I3gQF*fznhb2B0 J4M4$At3W;$)VI>0t=9vw+52Lmkou!$?ko>71e>lCHhwnXs zbuX?j(epl~nrfjTmK{fbg5t+qkU %+9Ai> zaI56VKJihO;>ItBw~xUa#33m M=yrjHx^t zdoBkEqvBc44530}9kB _)|epKqGiF?1}aUyb0c>?M{Mm%eZ^RjezjS-=M&M2C+3>+1^6fp0 OR$TeZjGyjoroz zSDW_t9V^=aXphtF(HsM@K6%Dg=)Vi4L9a}lu9-7Efq4NwMJYB=2}W*{{k Btl2tFB}^go z+iAyq1Zh_7SnAe2jaAWe1*38dNcK_g6S7m4Kg?=B;)yVUa%dRkkU27(huo4CXt*r( zrDhxZW*4FVJDccJJZql&6?*p>=NhSonPlj*g}u|S2QG=7Wcm#EiX;?;S!69AoUL`v zry9hV54Cn$#^v!d_n>LG%SUFv%z?-z==Th^`T%iPV{}_6ZP}Eoy;Soi{ey%~=$$;k z7^H9Ne;=%f;{3y*c~n9TY?fs=yU_x3%|)^1)SyDcpGUOtmw?|XG)>g7DR$J){=ToY z0aubhpLsW%<-^Z@_GdjVc _`R(Eg*Or5&{r{d77>ZmSBXNuOgl=wuv%V;IYA3Y|M6Zv^kd4N+i29GFaZ*rqFz zucEq6zZ-4H_rS?G@$8KV_wI}wp`@QX9@6>^y{Xx0k2^u$IRGGZ=S)$+^V{$Yezf&s zTVRB#pKny9HlF1<=7k}FejyIHr*mqWhV`CD_{bchPk|YeZzwEPb=z+vca+dL`+FmR zX-!c718qiG+*Qiye+Jh*C$ev=?TUK>+ZVwbM(1{2nYDV?0N`(tZ^Y(FM%J+N+j Mv3eI%NF=;DA_@en+C33Bv(B-jcep*~&)0QtUG?)5DAztVF6HFfop1fA-l zZZspSB|FenU1JGdl8%i9cZfc^ZHQTALYkJ Dxil}QD6wJh!-3l^@9 zT2?GAb!{qn0m}fx4Li#xR`cOuqgE)9ohRpx{r$qzw~U88iSICs0XgbM@M9qsOI*+1 ztfRjD7lIOUus{dR^Kt6=0JA=$f+5nK2)H&5TPWv+G*f6HfOXZNd|G%^OpOr^LAWf# zb@f` {`3$BD2x+zbJZ-CpUAX55glm1Y?A%)Lt%Kh^qgOhZs^8(+6Hu zMI;akuEY@sd(ZdFdJS4&+T!g8IXWb0PBwn9eHfubC0CB4qZ!|Kz37_u=}HzDKu0k` zm#Vv#{*6C*5}`QCpU#-@%%r^qs#5i4iZ{-&)uw$ewdw+DZnthZAKD&r*0r?;i##=s z)H#GT_>-tM*PFZ?j=C31PhdPn$W6qIB&}?B*->XpV@6IhIsz)8%L=vK9%SOeQopsE zoj979+boi%wxzDttlR-a1f `$sDqUm5KzGpE`e-YI{Sf`{3cqDs9&ejcWUXpu{ z1a{_fgnoxLr<(%BG@c(NI$#eN;@|CheFH>dm3rMFEZHwjwBNrgLS)zt&7{n3xzree zG0va78~Z~>mtZ{Q`cq+u (`ajAroEJ=*P gZW%8{gKP|r{2{DnW@FPL?^ z(*w=xRiXY>t*xE<6&!+szI%glnXA)wOYHjTR~m #2?UQsqo= zS-DNp+z65z_I{N5pQ2&TZipvB)`G^) {U+I82N{yJV0Ls*0_)-r#!4Kmh0 1;^RR!W~CzI-=eeh%t|1>CzinZ#TtUrwj~3uC!T^)5(xMO!sJYRx@@ zCIDecVOvVOhpylAP+EabsZ1~aQ8`ELk~M&UHZ}{8P?2+K{W~7#b5eR^{3hm@WDPCA zd7ycFi3LzFwXQ60u+NY%;0Q}Nc%WgA8AKF0FwBPerLdmy=}b&uZ8;7d-e{ws^9N=S z6=K*s;p!+2M=cWxp-#t^VU{YS7Q02J&gzg0_$j1wgeycv?1R^i>e?(!7xl?E*FZ}b zbxB#>oymj){jp1Un*KUj^30QjUU{V!U@Jd}7k_NcsL<>UC)u-Av8x>>PFC13EacJr z3ra#)e%}VSRl?U+PSsY|C>p%dRfA9Hj{jiooPMwMUYrrZtt^?YCXIZfU*T}az|YZ$ zf7;_fGiE*H`tU{hP4G+8f2oRne2qKiy*s{6-DRIsNN{Ew9nQ^9sofj?QGn?$zr+E5 z$~~+WBNW?bAmfQ;1dX!?yW?M}st<#4pA^S>c5S5dj7ZdwmG$46cfP@SXJU8DBp-K5 zNw%xck}&$om5TW_T+lbN`OMX>GiS1(O~~w7d$D{Zph79fpvqkpEn;}p!^W@V_(0aI z6nnNwQEHHwl`%qGm^w87G%%>b4{9O_3vLV}tB)lo1GBPJ6fneMFkB44-_f+|8t6qH z6$y8z( 35AX{m)WK+c_fN_uGk@ZIu4dVkr;#A_jMoRKjgo{o z6WDTO>@N*T{eaKC=Vdmuy*IUdUi0=WEx=@S^qN4DnrpOCADW{9xWkdoh@cAfrB>@n z=P7{VY@6bYp5EaaVe$HF3_MUPSS6$LbgB>(1h=piejR#;jJdtmj_7mT(G{Wai@%>K z9@xIljF4qCNNgq?)WeAjjJhOHF)#Ziko@V#eeQ@bQ4OAFL-{jzd9g;!xE?t@h?}8{ zUV%YxX=I5`8O>MbZg1dzp0nu;qeV?3{O%&KL;YgM)M&j?XpA7v1tE}TF@8lF5fw6B zLa<)yA<;S#r}i>;5LT*ACf3J;WIpH%0JXm{o_Wac_c&T1_v9@A8Y+kW_t$d~`7>52 zc}vACVO(Cv$0l<@M2DE&N( z8YGUUl2{9{uEgz_ft3jc=!(uE%JE&9)UGG38Y(Kp6hE3f8CQcd#z@gAIl5x~`0Knj zAmLb6RQL!8h(iHWVYi7_VKseM`27LVTqHLpA5X8}IST|d7k5BAj37y>#!YJcRpwY= zAavXD^nsspf|qq_)JMh;QICZfRN$(UKNNh(Ihl38xU?Y*IhdXv?}@a=b3Dzt$p*C@ z--Q|c=g|2X6@M=+dL!=XlFLy;7E4lTk*;Zbp$O89`hq>UJgZ1oAP-GLvx6s1{nZs= zcd_P76riPc7OX`W1@lJIWy~dw%;gLRw^KAa=vFT5Jg1ykEUt`ePn;~q5S)sl)ewh- z>xe}lEi`7?k=$C1=3uoz*62(3B!HN~VU;F($Wx`#kbgjeN|4SsOqKUE#V53gC`$2_ ztkAt~YW27o^`LZJa~%(4_pjU9-Y9wC8@K5IY)cP?Ht6H34U9fVZJs0o!C?sLANF-x z?@EcEHjghkr&y?O@fcn NG9O{YC}O$(Fe(;wjHbdAL3&!Q>eh z>+f@J>Gq;d#N86#>#dcQ9r?xqz0ebCuz@>s`)95oBGV@a0(geaswg93i0a|S-0wKe z?39@}$99&I8nWI`z$BLov~j)cwQRgo<)1VwM8Sji;V);V|G`;Q*Eou;Ot`7<)dCZH zS??dtu>xeQzs{Ez_g&GINcrBBBP0CBJX<~Z1e(v7LfR*my+{}PxduYkcS(GvKcfUt zH$`Y+hT%j%Lt}ioHPhgVST%s6btymvv8%PZkb-lP@7(Ew_Px@QI4KfT_xQ)(uEbbR zU)=&6HrYQvC;Sh$_^gPpF+rc%1Q)A&M-J|qu ~w{}bAW!>Nl zh8>;b$e?_1L*ovp G|?PX zqd k?X896#+e-5!@RUuLe*w2J=( zZ?4)>AMz32;%(PXY0D92;=RJ$gJzXkoYtzlpiU3)g^LlMmfSIrY-7zyW}&p>skUaB zrI4i#zRDkig;V0`wt;cD&OGYgPqU^7&OV|pe(804QTIu3|3lUizu)tnxvenn)V+j; zM;0t;cOQV>aq|-oN8pSNgGl2CuqXZJ&eT*R=N+OOo#?V0!LtaBAVXS J`k_4@GaW#ySIn{x{62clgb+O|8H*%edArF$4Wfh8GNf zapC}#E^UVjY_lP9%X~p^njOnASQoX3p|g_9i!#hV0yQ5`ov0y)!qzjEP?=hI7!08g z%k|n&BI#hgx-nKT0EEaiPiG8Bxt+vy0ZwJZzE*@2=$~pIC{T-BS(-WKXlttHGp!3- zf4EGs(cA9KALH^d(%Nt}Na@XW(|v_yFA(ETk?*$x>7T%15cEy>y-}}!`60+0avdO+ zrK#GY!XcYkg*tRUgKEsUkfxl)=-D7Fp-nm(hm$KU#uwbsda?n0csJrL?=Q$!DS`5= z*VqT%6d~=k_cYndYD6S=UB$OG^V5bvA*&asISc{!yj_2p)l!|=OkP}pk>y(V7Qr19 zr%u#n1(F 1TR;J4XBt0N)BVRhfxK0)M6&Ev!Y%MiTG=p u(-&Be9`#V6{t%Tr6#|O`KMs6M_50{Sq&e|Api} z=Ybjgl56PxU?yL*t9Ejwb_MwT|JCHmOvp+yrjvaX&JG@h2}BQ|I5|de{cSv1 Ty zT%~T)BXKK|=0kXze$zckHP|kmhsKe)I`EbT3JNgS2v4iDQGf$a%-yx||G4Tle*HlN zNaf }h;`fG;aPv<-8=e=b5tIPIP}1G;W5zKGY43P&nh z3(y+&^0c^GytJn!-bW{N-s= eAE*1I(QM6!gjYH3(rJ$%CkY(pI-$$%zhzQbE9 zAJ3BK&VQD$<%=Fvu;(=z*8D=dumLL$I|ExbnUS+x^7}b^FaG}g3%38I1v5`TFnRhe z31%EA*#jry%D%z~l+AQVFv-mHpuj%TN*+{ODuF0Er?N^DX9~E)%XxM)BB*7)sQb=~ z(JRQuKF=ktQ`m`Mf+YNu`twbn$!a`tlAQzNK}&kbOAX7 zci)sbTcs`gcQf&aGa$BuUPS6XKfoJ9JvC3c!)kRab$sY;OUzepk#(QSH|#?~A1e%b zO)hIuI`gw~b25GU|78IV9K%E+qW;cWm!*8yk?<(oqBh>vsUIb^F4M4)Xy*8Q7~ESh zEBR++pv!ie#op5C^077~Nnt9mf<`I@;Y!A&LU*iha`#p0>>UwjOM$v_#+J@-@T%uu z#%SQ2#K&7K5_9`~;WhP)h{&&a2!V;>$6}=O{+9jmIfmWtk)mL>Pan?;?1}p}X@E`h zeRAh5Tzb08ahCx}6qd)|5k8aV#5R$O0!|Ib1MkTDfkP&U3s?X&-Ju+l00KuFmhU8Obbq>kn$%5ABXb3NWf+8 zu8KiGokuqC4USG`NxzEwt9IY3JJScKS6(s0#iC`a=>Ged0Anc@2cf$?IB;QlPw_n? zvx|3C&mhBxp#TiY3xk%Ur2m+g1kGlIe3Zxdnpw_MYN; {SDntMc2#Ho(?; zU~a3JQzzzaK<$4(ujfeo K#Hi%N$fFg;QI*@-Qh=0wtjM)J%mRO{25NnJCV)GwfPjW1Tx*yOiL&= zaz6 VgJ4vxEs_9DOyCVad&8JHX8HAInz(sWu zXRHG-{LX#!JZUY9-gGP)Pdj1CJO=9Dt2~{|T>7=0je_B;EY#aIUOVd_f{su@8E}|2 z7-*2<^NAsQuIQUd9oTXs@ak^(=>jNNpv;J@y9qR?e+$_tU!y*Y>bB6%Y?UyN?nrQM z)HTI~s4-KV8RX~QA7k{3yG}K|`5%cD3nbzzh(Y51doz~X@CQ{PU7$eubZpXOI`J2^ zrUDOEDmw@(n#EH6V>m9U#nJ?;d2NE@Sg9yR!x}#2jE3=iA4;X1I<%Le|HW#Iw|INy z5qZDK8N9C(otZ%t_B13qxiY!5WpJV^hm#Bmzl{j+SSC5T>-^u~j*TNT`u@VMTEpwg z2Q+whAC2)m9eAy+VIx9EAw?uuD)Fj_kIGeu?Ej&^S2iwTUg6(jKf<#;esVV)nXXaJ ztAu`ghE#9M`JsRF>;?=vd;r~3@{ugwc7Q~(bV1lZSAnIyd4_uku-CGU+vCAUKvj}z zA)#`BAW_qgZ_%Vo6n#2Wmish)I5k5fK%HiN 9+_4`?K9*O(Zz9D4f^3Z(ao$mk# zo@NX$E8vB;Z1=b!Bu1Y%>ofO{gl1NiKFtf!uWS_U*nNmz_pXawK3hhz9eZ*U_(le{ z2}YoEC`Hd%k8+>(uokaO`_!;qI$%Qj_Hh)L%AVIM7g`yFXVTj1bq_MF$A{YMpR0=U zXPVT_GLTqbPxe6(eLNW~$KS)VOQ-TpYW2uN9r<8$)XOAt>=#T$z63D)71 5=>;4dMJr-$iE*>~H*(`wLC>*&=}a`H)O`AEqNt9^8I` zkGyimYuDTOA4`ot3XfvzqigeYYNl>|%L{kLMv7a=UXhehnNp59%$X%Rdkj2W|K7Ac z(yvc67dpHN&Pg{uA-KHzWfDXdz PgA9SlyYKu&=V8cFPmW-PclX^j&2S=AZZ(MNi5$IVzW;EoKTy_B`gG|x;rQ3@yH zi36=;t4@@N2tzLt5Z>AIe#N>%%1%E16a)rBM;N|HaoaWk!=J;S$+>_=2sZeRYg>8( za7k)oJ#fLlgP1v8^;XA?HAOI5xC?6<2!3P#Wf_R?$N})ju=wgOnkkh^>k?ADgpgVD zxy YQxDv^%(Gzgl%Ln@>&(->+^k!brB6=pl4X3!by!rjIjFZo>m%VSN zM& grSA8iy@@E%^Is=i)zcy`XYU` z$HLmkhAGJ4f9eWv0b~gpR@IaG765ZN>a1k!)l=kv(VY-`2^1g~{iM)fky zl4@XQdx7B3bOu?<1Jgq3-dLXs3!Y{Bt6T30aALg@htM$LIR;e}Q}~XjIv5v<;)b#H zg3z1eb!%55j#aqr1F*9d0GPFOZ%ize(D? }%A45V9NY8mLB!WBVXePd zU-`9NE;YYj>#CTcGqp^a@e5f0g_* kSE zufKHTCJvw}_xtU25WGb^Hn&rw`}+u`lA|(9*Z_2vhX2>F^-S70>~#Cx`F3Kpo-#|8 z)w8hH1&rP( zfUbimW4v2@F7M%^wH|qMve%nCJpPxsW0)_63gub8)5UpKz={Orbu6j2if=c|fz1*x z;3VXc=o@0e3YDHIzvokw+uuR8_fBR9MRWyn9!e_PJ^yrO#^3bu4e_lg`frYX!+E1L zi`Emz>g^2vmGSasXJ;m 4_*%{l#i%s*srojja9uj%7W*Qw3eR#%^K+RTw_h?8wj z7`bI^zI+JHG!LiLKL400Vry!Nf|@?eI9?JE+PzNyml#>3oU{D^Cd_IJZvL5Q)|kcF z=FO_JA>REDN{5)61ob45tCJ-lCz${OS%(~NFiQKZ0t(zVTyrkC>!?5O`uLb251pw` zmD0!cTQ~3##u*QqP$cfOC%fnXUY!mRm*GRP*RckbI?m859~P33{Swm0S6BMP*PXLh zt)!Wbl{|%@CEVR3`nV#mz ){7D!_fM8wkPE6QkvUNKN%KBB;?vi=o+U^9 za4ZHB1rt9qbL_sJ+h43K76RcC;x`!mD$(%wo@vUn1z-lxso2}ckNvgSBk9p6fBf#| z);hUGtXUj{hhRd i|Uj|%Tl`72*1~S6f29xe<{VkS)H?h)K{4~m|lrP zg?HI4dlgOU_8wyOhCEe!?pV=4I1RZHT}@wu4tX?zwv_=rl6hM)DxCP+s|B;8d3Ik% zf6|Dp)Y;dwiR`Wxz3B7QvILIV%&6=R6R&J``qX9w1;>2c{<7ODF(nW=r#8g%N55Xe zEqR*JeB@F2U@hIW{&?3tK~OMCYmIUe5t@ZG?5t`%1D8KE3b7?I$r06b_h&x% Up{x9$p;p*rWjNG3RwzsWIo2|MG7x`>E$og)KF#zIs3S9T$8JbZ@SUR@ z)E~fdX7i>yKLx|tKH>9>G5Sgm9wouO3gU*m1B~CN+jrkQUuhl4)z;ZpTQ34xl3>Pv zXlQNz`=8w4VEc$^TLD^|<>L)rW=%Ltv>)uHwJl>Y4o&BWGBwrvzd~?TT|lyXV*nfN zO=(cXhmML<${qQEHenvFLHierpGKh{m{JP0-NxT@rFfvAksHX2UTWLwe!FdC>fm(D zcWo6dSH5xMSEh(+eHDP-)`v3Xw0?Yk%(~R$%xhN*EquApC(!AZABSQ@;r-0G bEk44u7P4bM4i%iu0rW$yJeYnACK1uh?{gq#g zTO?~eL$@ujT0s6T0agvkvIqt=Vi}CG96^cgI&FudDSMNg4e}QIF@~52o S1$O36w&DuM;QLo9v_*`t>DA `LnpfCia z8XJlj*wgqOFu;6-yYQ*cn;l7hM=TnAbGGKDVaRnJebJB3x=$T5r2|XcU}n%Zg}{$X z&s*&G9yLESrtWo1rG~HJ`9%U&O_1%% ebGhj&BWvQ Xlt?W=|rak<7cmUfyBO~ zL`=}yh%v=I?C);Dz;J=>Ap7<_`IFcuERv!Aa4$AXQ>k0uRZM3RH028G3xvzn7C?!< zmuV`aJzShey@aWsy|R1${6uKqdwRE5zFX&uZoZG%HYaH8W#irQK?R0ZuJ;YOHa?JO zH5rr>_HEDOPO<*utovEzqa5rV)t=zOO46FeeDa+)xQp_qmbs*5ovg6d5}5M-(#zr{ z2ZP1L=^d48!2fWg9t8IxiUw_TtzY+RXks24h3bPLhoE{&Kx _fPI|g{Q6)QtOD9o#Eoq3hkLD%dnRNYTv@yJAA{a2(RP#}S}o>M@|NS}+< zfG1s$Ks9s)2FZ@HrTEc4V>T9@@n`Z57|?*J?%wuZ%|!^?Dz@=6>6u9g=33wRw^4*x zGmi<~)z2fdlJp!ah10)hL!{Z1dFdJ!Ag{I@|LC|}{8#fe9|(7zQ=!Tq&p5EfH 1`2> z1i@iU eZTC2@E-5o&G?cAo^)6VZuz#J`6iod1~d8Z zj61m=+0>A}En4VV-jW~IuG-zvA`%N_J5nZ->-#N&R1PCdu{>Dk?!N45RVkWy{2NCm z%5`fS=vj1S8;#*i8VN%4B^Dy=$#}{pRp;0vUnSr8?fh{0xOdO=pc`2o^{MFZpLgQs ze;K<^=CW1CLPO@XDE