From cfce7ed7705406d7256ca16bc246e150ea451bb2 Mon Sep 17 00:00:00 2001 From: chehanw Date: Mon, 26 Jan 2026 21:16:55 -0800 Subject: [PATCH 1/2] Add GitHub Actions CI workflow Runs on pushes and PRs to main/master with checks for: - ESLint linting - TypeScript type checking - Jest tests across workspace packages - npm security audit - Package builds and Expo config validation Co-Authored-By: Claude Opus 4.5 --- .github/workflows/ci.yml | 127 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..7bef0ac --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,127 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + defaults: + run: + working-directory: homeflow + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + cache-dependency-path: homeflow/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Run ESLint + run: npm run lint + + typecheck: + name: TypeScript + runs-on: ubuntu-latest + defaults: + run: + working-directory: homeflow + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + cache-dependency-path: homeflow/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Run TypeScript type checking + run: npm run typecheck + + test: + name: Tests + runs-on: ubuntu-latest + defaults: + run: + working-directory: homeflow + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + cache-dependency-path: homeflow/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Run tests + run: npm test + + security: + name: Security Audit + runs-on: ubuntu-latest + defaults: + run: + working-directory: homeflow + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + cache-dependency-path: homeflow/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Run npm audit + run: npm audit --audit-level=high + continue-on-error: true + + build: + name: Build + runs-on: ubuntu-latest + defaults: + run: + working-directory: homeflow + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + cache-dependency-path: homeflow/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Build packages + run: npm run build + + - name: Verify Expo config + run: npx expo config --type introspect From 872463471f3e8501263d4550703b875b9eabe70a Mon Sep 17 00:00:00 2001 From: chehanw Date: Tue, 27 Jan 2026 01:45:23 -0800 Subject: [PATCH 2/2] Spezi template for HomeFlow no changes made --- homeflow/.claude/commands/README.md | 172 + homeflow/.claude/commands/changelog.md | 118 + homeflow/.claude/commands/compliance.md | 255 + homeflow/.claude/commands/data-model.md | 249 + homeflow/.claude/commands/docs.md | 78 + homeflow/.claude/commands/feature.md | 200 + homeflow/.claude/commands/fhir-mapping.md | 156 + homeflow/.claude/commands/fhir.md | 120 + homeflow/.claude/commands/release.md | 165 + homeflow/.claude/commands/study-planner.md | 173 + homeflow/.claude/commands/test.md | 163 + homeflow/.claude/commands/ux-planner.md | 348 + homeflow/.env.example | 5 + homeflow/.gitignore | 30 + homeflow/AGENTS.md | 1 + homeflow/CLAUDE.md | 72 + homeflow/GETTING_STARTED.md | 118 + homeflow/app.config.js | 55 + homeflow/app/(tabs)/_layout.tsx | 63 + homeflow/app/(tabs)/chat.tsx | 75 + homeflow/app/(tabs)/contacts.tsx | 283 + homeflow/app/(tabs)/explore.tsx | 118 + homeflow/app/(tabs)/health.tsx | 48 + homeflow/app/(tabs)/index.tsx | 88 + homeflow/app/(tabs)/schedule.tsx | 73 + homeflow/app/_layout.tsx | 64 + homeflow/app/modal.tsx | 29 + homeflow/app/questionnaire/[id].tsx | 168 + homeflow/app/questionnaire/_layout.tsx | 15 + .../assets/images/android-icon-background.png | Bin 0 -> 17549 bytes .../assets/images/android-icon-foreground.png | Bin 0 -> 78796 bytes .../assets/images/android-icon-monochrome.png | Bin 0 -> 4140 bytes homeflow/assets/images/favicon.png | Bin 0 -> 1129 bytes homeflow/assets/images/icon.png | Bin 0 -> 393493 bytes homeflow/assets/images/partial-react-logo.png | Bin 0 -> 5075 bytes homeflow/assets/images/react-logo.png | Bin 0 -> 6341 bytes homeflow/assets/images/react-logo@2x.png | Bin 0 -> 14225 bytes homeflow/assets/images/react-logo@3x.png | Bin 0 -> 21252 bytes homeflow/assets/images/rocket-logo.png | Bin 0 -> 79976 bytes homeflow/assets/images/spezivibe-logo.png | Bin 0 -> 138338 bytes homeflow/assets/images/splash-icon.png | Bin 0 -> 17547 bytes homeflow/assets/styles/global.css | 41 + homeflow/components/error-boundary.tsx | 100 + homeflow/components/external-link.tsx | 25 + homeflow/components/haptic-tab.tsx | 18 + homeflow/components/hello-wave.tsx | 19 + homeflow/components/parallax-scroll-view.tsx | 84 + homeflow/components/themed-text.tsx | 60 + homeflow/components/themed-view.tsx | 14 + homeflow/components/ui/collapsible.tsx | 44 + homeflow/components/ui/icon-symbol.ios.tsx | 38 + homeflow/components/ui/icon-symbol.tsx | 70 + homeflow/components/ui/loading-screen.tsx | 29 + homeflow/components/ui/screen.tsx | 276 + homeflow/constants/theme.ts | 95 + homeflow/eslint.config.js | 15 + homeflow/hooks/use-color-scheme.ts | 1 + homeflow/hooks/use-color-scheme.web.ts | 21 + homeflow/hooks/use-onboarding-status.ts | 34 + homeflow/hooks/use-theme-color.ts | 21 + homeflow/lib/constants.ts | 14 + homeflow/lib/healthkit-config.ts | 32 + homeflow/lib/questionnaires/index.ts | 2 + .../questionnaires/sample-questionnaires.ts | 93 + homeflow/lib/questionnaires/types.ts | 10 + homeflow/lib/services/README.md | 151 + homeflow/lib/services/backend-factory.ts | 20 + .../lib/services/backends/local-storage.ts | 154 + homeflow/lib/services/config.ts | 32 + homeflow/lib/services/index.ts | 12 + homeflow/lib/services/standard-context.tsx | 131 + homeflow/lib/services/types.ts | 61 + homeflow/lib/utils/logger.ts | 83 + homeflow/metro.config.js | 59 + homeflow/package-lock.json | 16474 ++++++++++++++++ homeflow/package.json | 66 + homeflow/packages/chat/README.md | 550 + homeflow/packages/chat/babel.config.js | 6 + homeflow/packages/chat/jest.setup.js | 40 + homeflow/packages/chat/package.json | 96 + .../chat/src/__tests__/MessageBubble.test.tsx | 120 + .../chat/src/__tests__/MessageInput.test.tsx | 187 + .../chat/src/__tests__/test-utils.tsx | 57 + .../packages/chat/src/__tests__/theme.test.ts | 139 + .../packages/chat/src/components/ChatView.tsx | 185 + .../chat/src/components/MessageBubble.tsx | 92 + .../chat/src/components/MessageInput.tsx | 131 + .../packages/chat/src/components/index.ts | 3 + homeflow/packages/chat/src/index.ts | 56 + homeflow/packages/chat/src/services/index.ts | 2 + homeflow/packages/chat/src/services/llm.ts | 83 + .../packages/chat/src/theme/default-theme.ts | 97 + homeflow/packages/chat/src/theme/index.ts | 5 + homeflow/packages/chat/src/types.ts | 169 + homeflow/packages/chat/tsconfig.json | 17 + homeflow/packages/healthkit/README.md | 788 + homeflow/packages/healthkit/babel.config.js | 3 + homeflow/packages/healthkit/jest.setup.js | 76 + homeflow/packages/healthkit/package.json | 81 + .../src/__tests__/HealthKitService.test.ts | 65 + .../src/__tests__/expo-detection.test.ts | 24 + .../src/__tests__/sample-types.test.ts | 67 + .../healthkit/src/__tests__/test-utils.tsx | 53 + .../packages/healthkit/src/hooks/index.ts | 5 + .../healthkit/src/hooks/useHealthKit.ts | 78 + .../healthkit/src/hooks/useHealthMetric.ts | 99 + homeflow/packages/healthkit/src/index.ts | 75 + .../src/providers/HealthKitProvider.tsx | 138 + .../packages/healthkit/src/providers/index.ts | 2 + .../packages/healthkit/src/sample-types.ts | 203 + .../src/services/HealthKitService.ts | 230 + .../packages/healthkit/src/services/index.ts | 2 + homeflow/packages/healthkit/src/types.ts | 164 + .../healthkit/src/ui/ExpoGoFallback.tsx | 76 + .../packages/healthkit/src/ui/HealthView.tsx | 259 + .../packages/healthkit/src/ui/MetricCard.tsx | 162 + homeflow/packages/healthkit/src/ui/index.ts | 10 + homeflow/packages/healthkit/src/ui/theme.ts | 67 + .../healthkit/src/utils/expo-detection.ts | 33 + .../packages/healthkit/src/utils/index.ts | 1 + homeflow/packages/healthkit/tsconfig.json | 17 + homeflow/packages/questionnaire/EXAMPLES.md | 787 + homeflow/packages/questionnaire/README.md | 838 + .../packages/questionnaire/babel.config.js | 6 + homeflow/packages/questionnaire/jest.setup.js | 15 + homeflow/packages/questionnaire/package.json | 85 + .../questionnaire/src/__mocks__/fileMock.js | 1 + .../components/BooleanQuestion.test.tsx | 113 + .../components/ChoiceQuestion.test.tsx | 184 + .../components/IntegerQuestion.test.tsx | 197 + .../components/QuestionnaireForm.test.tsx | 344 + .../components/TextQuestion.test.tsx | 143 + .../src/__tests__/theme/default-theme.test.ts | 177 + .../questionnaire/src/__tests__/types.test.ts | 307 + .../validation/schema-builder.test.ts | 397 + .../src/builders/QuestionnaireBuilder.ts | 309 + .../src/components/ErrorBoundary.tsx | 151 + .../src/components/QuestionRenderer.tsx | 102 + .../src/components/QuestionnaireForm.tsx | 489 + .../questionnaire/src/components/index.ts | 2 + .../components/questions/BooleanQuestion.tsx | 121 + .../components/questions/ChoiceQuestion.tsx | 128 + .../src/components/questions/DateQuestion.tsx | 128 + .../components/questions/DateTimeQuestion.tsx | 128 + .../components/questions/DecimalQuestion.tsx | 99 + .../components/questions/DisplayQuestion.tsx | 54 + .../components/questions/GroupQuestion.tsx | 82 + .../components/questions/IntegerQuestion.tsx | 192 + .../src/components/questions/TextQuestion.tsx | 106 + .../src/components/questions/TimeQuestion.tsx | 110 + .../src/components/questions/index.ts | 10 + .../src/enablewhen/EnableWhenEvaluator.ts | 179 + homeflow/packages/questionnaire/src/index.ts | 27 + .../questionnaire/src/theme/default-theme.ts | 82 + .../packages/questionnaire/src/types/index.ts | 122 + .../questionnaire/src/utils/haptics.ts | 86 + .../src/validation/schema-builder.ts | 148 + homeflow/packages/questionnaire/tsconfig.json | 20 + homeflow/packages/scheduler/.gitignore | 5 + homeflow/packages/scheduler/.npmignore | 9 + homeflow/packages/scheduler/README.md | 427 + .../scheduler/__tests__/Scheduler.test.ts | 354 + .../scheduler/__tests__/utils.test.ts | 189 + homeflow/packages/scheduler/babel.config.js | 6 + homeflow/packages/scheduler/jest.setup.js | 15 + homeflow/packages/scheduler/package.json | 81 + .../packages/scheduler/src/hooks/index.ts | 9 + .../scheduler/src/hooks/useScheduleScreen.ts | 124 + .../scheduler/src/hooks/useScheduler.ts | 75 + homeflow/packages/scheduler/src/index.ts | 37 + .../src/providers/SchedulerProvider.tsx | 74 + .../packages/scheduler/src/providers/index.ts | 6 + .../packages/scheduler/src/sample-tasks.ts | 268 + .../scheduler/src/services/Scheduler.ts | 308 + .../packages/scheduler/src/services/index.ts | 5 + homeflow/packages/scheduler/src/types.ts | 170 + .../src/ui/components/CalendarStrip.tsx | 155 + .../src/ui/components/CompletionBadge.tsx | 65 + .../scheduler/src/ui/components/EventCard.tsx | 168 + .../scheduler/src/ui/components/EventList.tsx | 102 + .../src/ui/components/ScheduleView.tsx | 230 + .../scheduler/src/ui/components/index.ts | 17 + homeflow/packages/scheduler/src/ui/index.ts | 6 + homeflow/packages/scheduler/src/ui/theme.ts | 105 + .../scheduler/src/utils/calculations.ts | 116 + .../scheduler/src/utils/formatting.ts | 92 + .../packages/scheduler/src/utils/index.ts | 6 + homeflow/packages/scheduler/tsconfig.json | 20 + homeflow/tsconfig.json | 34 + 189 files changed, 36461 insertions(+) create mode 100644 homeflow/.claude/commands/README.md create mode 100644 homeflow/.claude/commands/changelog.md create mode 100644 homeflow/.claude/commands/compliance.md create mode 100644 homeflow/.claude/commands/data-model.md create mode 100644 homeflow/.claude/commands/docs.md create mode 100644 homeflow/.claude/commands/feature.md create mode 100644 homeflow/.claude/commands/fhir-mapping.md create mode 100644 homeflow/.claude/commands/fhir.md create mode 100644 homeflow/.claude/commands/release.md create mode 100644 homeflow/.claude/commands/study-planner.md create mode 100644 homeflow/.claude/commands/test.md create mode 100644 homeflow/.claude/commands/ux-planner.md create mode 100644 homeflow/.env.example create mode 100644 homeflow/.gitignore create mode 120000 homeflow/AGENTS.md create mode 100644 homeflow/CLAUDE.md create mode 100644 homeflow/GETTING_STARTED.md create mode 100644 homeflow/app.config.js create mode 100644 homeflow/app/(tabs)/_layout.tsx create mode 100644 homeflow/app/(tabs)/chat.tsx create mode 100644 homeflow/app/(tabs)/contacts.tsx create mode 100644 homeflow/app/(tabs)/explore.tsx create mode 100644 homeflow/app/(tabs)/health.tsx create mode 100644 homeflow/app/(tabs)/index.tsx create mode 100644 homeflow/app/(tabs)/schedule.tsx create mode 100644 homeflow/app/_layout.tsx create mode 100644 homeflow/app/modal.tsx create mode 100644 homeflow/app/questionnaire/[id].tsx create mode 100644 homeflow/app/questionnaire/_layout.tsx create mode 100644 homeflow/assets/images/android-icon-background.png create mode 100644 homeflow/assets/images/android-icon-foreground.png create mode 100644 homeflow/assets/images/android-icon-monochrome.png create mode 100644 homeflow/assets/images/favicon.png create mode 100644 homeflow/assets/images/icon.png create mode 100644 homeflow/assets/images/partial-react-logo.png create mode 100644 homeflow/assets/images/react-logo.png create mode 100644 homeflow/assets/images/react-logo@2x.png create mode 100644 homeflow/assets/images/react-logo@3x.png create mode 100644 homeflow/assets/images/rocket-logo.png create mode 100644 homeflow/assets/images/spezivibe-logo.png create mode 100644 homeflow/assets/images/splash-icon.png create mode 100644 homeflow/assets/styles/global.css create mode 100644 homeflow/components/error-boundary.tsx create mode 100644 homeflow/components/external-link.tsx create mode 100644 homeflow/components/haptic-tab.tsx create mode 100644 homeflow/components/hello-wave.tsx create mode 100644 homeflow/components/parallax-scroll-view.tsx create mode 100644 homeflow/components/themed-text.tsx create mode 100644 homeflow/components/themed-view.tsx create mode 100644 homeflow/components/ui/collapsible.tsx create mode 100644 homeflow/components/ui/icon-symbol.ios.tsx create mode 100644 homeflow/components/ui/icon-symbol.tsx create mode 100644 homeflow/components/ui/loading-screen.tsx create mode 100644 homeflow/components/ui/screen.tsx create mode 100644 homeflow/constants/theme.ts create mode 100644 homeflow/eslint.config.js create mode 100644 homeflow/hooks/use-color-scheme.ts create mode 100644 homeflow/hooks/use-color-scheme.web.ts create mode 100644 homeflow/hooks/use-onboarding-status.ts create mode 100644 homeflow/hooks/use-theme-color.ts create mode 100644 homeflow/lib/constants.ts create mode 100644 homeflow/lib/healthkit-config.ts create mode 100644 homeflow/lib/questionnaires/index.ts create mode 100644 homeflow/lib/questionnaires/sample-questionnaires.ts create mode 100644 homeflow/lib/questionnaires/types.ts create mode 100644 homeflow/lib/services/README.md create mode 100644 homeflow/lib/services/backend-factory.ts create mode 100644 homeflow/lib/services/backends/local-storage.ts create mode 100644 homeflow/lib/services/config.ts create mode 100644 homeflow/lib/services/index.ts create mode 100644 homeflow/lib/services/standard-context.tsx create mode 100644 homeflow/lib/services/types.ts create mode 100644 homeflow/lib/utils/logger.ts create mode 100644 homeflow/metro.config.js create mode 100644 homeflow/package-lock.json create mode 100644 homeflow/package.json create mode 100644 homeflow/packages/chat/README.md create mode 100644 homeflow/packages/chat/babel.config.js create mode 100644 homeflow/packages/chat/jest.setup.js create mode 100644 homeflow/packages/chat/package.json create mode 100644 homeflow/packages/chat/src/__tests__/MessageBubble.test.tsx create mode 100644 homeflow/packages/chat/src/__tests__/MessageInput.test.tsx create mode 100644 homeflow/packages/chat/src/__tests__/test-utils.tsx create mode 100644 homeflow/packages/chat/src/__tests__/theme.test.ts create mode 100644 homeflow/packages/chat/src/components/ChatView.tsx create mode 100644 homeflow/packages/chat/src/components/MessageBubble.tsx create mode 100644 homeflow/packages/chat/src/components/MessageInput.tsx create mode 100644 homeflow/packages/chat/src/components/index.ts create mode 100644 homeflow/packages/chat/src/index.ts create mode 100644 homeflow/packages/chat/src/services/index.ts create mode 100644 homeflow/packages/chat/src/services/llm.ts create mode 100644 homeflow/packages/chat/src/theme/default-theme.ts create mode 100644 homeflow/packages/chat/src/theme/index.ts create mode 100644 homeflow/packages/chat/src/types.ts create mode 100644 homeflow/packages/chat/tsconfig.json create mode 100644 homeflow/packages/healthkit/README.md create mode 100644 homeflow/packages/healthkit/babel.config.js create mode 100644 homeflow/packages/healthkit/jest.setup.js create mode 100644 homeflow/packages/healthkit/package.json create mode 100644 homeflow/packages/healthkit/src/__tests__/HealthKitService.test.ts create mode 100644 homeflow/packages/healthkit/src/__tests__/expo-detection.test.ts create mode 100644 homeflow/packages/healthkit/src/__tests__/sample-types.test.ts create mode 100644 homeflow/packages/healthkit/src/__tests__/test-utils.tsx create mode 100644 homeflow/packages/healthkit/src/hooks/index.ts create mode 100644 homeflow/packages/healthkit/src/hooks/useHealthKit.ts create mode 100644 homeflow/packages/healthkit/src/hooks/useHealthMetric.ts create mode 100644 homeflow/packages/healthkit/src/index.ts create mode 100644 homeflow/packages/healthkit/src/providers/HealthKitProvider.tsx create mode 100644 homeflow/packages/healthkit/src/providers/index.ts create mode 100644 homeflow/packages/healthkit/src/sample-types.ts create mode 100644 homeflow/packages/healthkit/src/services/HealthKitService.ts create mode 100644 homeflow/packages/healthkit/src/services/index.ts create mode 100644 homeflow/packages/healthkit/src/types.ts create mode 100644 homeflow/packages/healthkit/src/ui/ExpoGoFallback.tsx create mode 100644 homeflow/packages/healthkit/src/ui/HealthView.tsx create mode 100644 homeflow/packages/healthkit/src/ui/MetricCard.tsx create mode 100644 homeflow/packages/healthkit/src/ui/index.ts create mode 100644 homeflow/packages/healthkit/src/ui/theme.ts create mode 100644 homeflow/packages/healthkit/src/utils/expo-detection.ts create mode 100644 homeflow/packages/healthkit/src/utils/index.ts create mode 100644 homeflow/packages/healthkit/tsconfig.json create mode 100644 homeflow/packages/questionnaire/EXAMPLES.md create mode 100644 homeflow/packages/questionnaire/README.md create mode 100644 homeflow/packages/questionnaire/babel.config.js create mode 100644 homeflow/packages/questionnaire/jest.setup.js create mode 100644 homeflow/packages/questionnaire/package.json create mode 100644 homeflow/packages/questionnaire/src/__mocks__/fileMock.js create mode 100644 homeflow/packages/questionnaire/src/__tests__/components/BooleanQuestion.test.tsx create mode 100644 homeflow/packages/questionnaire/src/__tests__/components/ChoiceQuestion.test.tsx create mode 100644 homeflow/packages/questionnaire/src/__tests__/components/IntegerQuestion.test.tsx create mode 100644 homeflow/packages/questionnaire/src/__tests__/components/QuestionnaireForm.test.tsx create mode 100644 homeflow/packages/questionnaire/src/__tests__/components/TextQuestion.test.tsx create mode 100644 homeflow/packages/questionnaire/src/__tests__/theme/default-theme.test.ts create mode 100644 homeflow/packages/questionnaire/src/__tests__/types.test.ts create mode 100644 homeflow/packages/questionnaire/src/__tests__/validation/schema-builder.test.ts create mode 100644 homeflow/packages/questionnaire/src/builders/QuestionnaireBuilder.ts create mode 100644 homeflow/packages/questionnaire/src/components/ErrorBoundary.tsx create mode 100644 homeflow/packages/questionnaire/src/components/QuestionRenderer.tsx create mode 100644 homeflow/packages/questionnaire/src/components/QuestionnaireForm.tsx create mode 100644 homeflow/packages/questionnaire/src/components/index.ts create mode 100644 homeflow/packages/questionnaire/src/components/questions/BooleanQuestion.tsx create mode 100644 homeflow/packages/questionnaire/src/components/questions/ChoiceQuestion.tsx create mode 100644 homeflow/packages/questionnaire/src/components/questions/DateQuestion.tsx create mode 100644 homeflow/packages/questionnaire/src/components/questions/DateTimeQuestion.tsx create mode 100644 homeflow/packages/questionnaire/src/components/questions/DecimalQuestion.tsx create mode 100644 homeflow/packages/questionnaire/src/components/questions/DisplayQuestion.tsx create mode 100644 homeflow/packages/questionnaire/src/components/questions/GroupQuestion.tsx create mode 100644 homeflow/packages/questionnaire/src/components/questions/IntegerQuestion.tsx create mode 100644 homeflow/packages/questionnaire/src/components/questions/TextQuestion.tsx create mode 100644 homeflow/packages/questionnaire/src/components/questions/TimeQuestion.tsx create mode 100644 homeflow/packages/questionnaire/src/components/questions/index.ts create mode 100644 homeflow/packages/questionnaire/src/enablewhen/EnableWhenEvaluator.ts create mode 100644 homeflow/packages/questionnaire/src/index.ts create mode 100644 homeflow/packages/questionnaire/src/theme/default-theme.ts create mode 100644 homeflow/packages/questionnaire/src/types/index.ts create mode 100644 homeflow/packages/questionnaire/src/utils/haptics.ts create mode 100644 homeflow/packages/questionnaire/src/validation/schema-builder.ts create mode 100644 homeflow/packages/questionnaire/tsconfig.json create mode 100644 homeflow/packages/scheduler/.gitignore create mode 100644 homeflow/packages/scheduler/.npmignore create mode 100644 homeflow/packages/scheduler/README.md create mode 100644 homeflow/packages/scheduler/__tests__/Scheduler.test.ts create mode 100644 homeflow/packages/scheduler/__tests__/utils.test.ts create mode 100644 homeflow/packages/scheduler/babel.config.js create mode 100644 homeflow/packages/scheduler/jest.setup.js create mode 100644 homeflow/packages/scheduler/package.json create mode 100644 homeflow/packages/scheduler/src/hooks/index.ts create mode 100644 homeflow/packages/scheduler/src/hooks/useScheduleScreen.ts create mode 100644 homeflow/packages/scheduler/src/hooks/useScheduler.ts create mode 100644 homeflow/packages/scheduler/src/index.ts create mode 100644 homeflow/packages/scheduler/src/providers/SchedulerProvider.tsx create mode 100644 homeflow/packages/scheduler/src/providers/index.ts create mode 100644 homeflow/packages/scheduler/src/sample-tasks.ts create mode 100644 homeflow/packages/scheduler/src/services/Scheduler.ts create mode 100644 homeflow/packages/scheduler/src/services/index.ts create mode 100644 homeflow/packages/scheduler/src/types.ts create mode 100644 homeflow/packages/scheduler/src/ui/components/CalendarStrip.tsx create mode 100644 homeflow/packages/scheduler/src/ui/components/CompletionBadge.tsx create mode 100644 homeflow/packages/scheduler/src/ui/components/EventCard.tsx create mode 100644 homeflow/packages/scheduler/src/ui/components/EventList.tsx create mode 100644 homeflow/packages/scheduler/src/ui/components/ScheduleView.tsx create mode 100644 homeflow/packages/scheduler/src/ui/components/index.ts create mode 100644 homeflow/packages/scheduler/src/ui/index.ts create mode 100644 homeflow/packages/scheduler/src/ui/theme.ts create mode 100644 homeflow/packages/scheduler/src/utils/calculations.ts create mode 100644 homeflow/packages/scheduler/src/utils/formatting.ts create mode 100644 homeflow/packages/scheduler/src/utils/index.ts create mode 100644 homeflow/packages/scheduler/tsconfig.json create mode 100644 homeflow/tsconfig.json diff --git a/homeflow/.claude/commands/README.md b/homeflow/.claude/commands/README.md new file mode 100644 index 0000000..0f8dc3f --- /dev/null +++ b/homeflow/.claude/commands/README.md @@ -0,0 +1,172 @@ +# Claude Code Development Agents + +This directory contains Claude Code agents to assist with developing your digital health React Native app. + +## Quick Reference + +### Development Agents + +| Command | Description | +|---------|-------------| +| `/docs` | Generate documentation and READMEs | +| `/changelog` | Generate changelog from git history | +| `/test` | Generate Jest tests | +| `/fhir` | Validate FHIR R4 compliance | +| `/fhir-mapping` | Generate FHIR resource mappings | +| `/feature` | Create new app features and screens | +| `/release` | Create release notes | + +### Planning Agents + +| Command | Description | +|---------|-------------| +| `/study-planner` | Plan health studies and research protocols | +| `/compliance` | Plan HIPAA, IRB, and regulatory compliance | +| `/data-model` | Design health data models and FHIR mappings | +| `/ux-planner` | Design user flows and engagement strategies | + +## Usage + +Invoke an agent by typing its command in Claude Code: + +``` +/docs +/study-planner +/compliance +``` + +You can provide context or specific instructions: + +``` +/study-planner design a 12-week diabetes management study +/compliance review HIPAA requirements for our app +/data-model plan the medication tracking feature +/ux-planner design the onboarding flow +``` + +## Development Agents + +### `/docs` - Documentation Generator + +Generates documentation following project patterns. + +**Use when:** +- Creating a README for your app +- Documenting components and hooks +- Adding usage examples + +--- + +### `/test` - Test Generator + +Generates Jest tests following project testing patterns. + +**Use when:** +- Adding tests for new code +- Writing FHIR mapping round-trip tests +- Testing React components + +--- + +### `/fhir` - FHIR Compliance Checker + +Validates code for FHIR R4 compliance. + +**Use when:** +- Reviewing healthcare data mappings +- Ensuring compliance before release + +--- + +### `/fhir-mapping` - FHIR Mapping Generator + +Generates FHIR R4 resource mappings. + +**Use when:** +- Adding support for new FHIR resources +- Extending existing mappings + +--- + +### `/feature` - Feature Generator + +Creates new features and screens. + +**Use when:** +- Adding a new tab or screen +- Creating components and hooks + +--- + +### `/changelog` - Changelog Generator + +Generates changelogs using Keep a Changelog format. + +**Use when:** +- Preparing a release +- Documenting recent changes + +--- + +### `/release` - Release Notes Generator + +Creates release notes with migration guides. + +**Use when:** +- Preparing a version release +- Documenting breaking changes + +## Planning Agents + +### `/study-planner` - Study Planner + +Plans digital health studies and research protocols. + +**Use when:** +- Designing a health study +- Planning data collection schedules +- Structuring questionnaires and assessments +- Defining enrollment criteria + +--- + +### `/compliance` - Compliance Planner + +Plans regulatory and privacy compliance. + +**Use when:** +- Reviewing HIPAA requirements +- Preparing IRB submissions +- Assessing FDA classification +- Planning GDPR compliance + +--- + +### `/data-model` - Data Model Planner + +Plans health data models and FHIR structures. + +**Use when:** +- Designing data structures +- Mapping app concepts to FHIR resources +- Planning HealthKit integration +- Defining data relationships + +--- + +### `/ux-planner` - UX Planner + +Plans user experience flows for health apps. + +**Use when:** +- Designing patient journeys +- Planning onboarding flows +- Structuring engagement strategies +- Designing notifications + +## Tips + +- **Be specific**: Provide context for better results +- **Combine agents**: Use `/compliance` with `/study-planner` for research apps +- **Start with planning**: Use planning agents before implementation agents +- **Iterate**: Run agents multiple times as you refine requirements diff --git a/homeflow/.claude/commands/changelog.md b/homeflow/.claude/commands/changelog.md new file mode 100644 index 0000000..4bc13c2 --- /dev/null +++ b/homeflow/.claude/commands/changelog.md @@ -0,0 +1,118 @@ +# Changelog Generator + +Generate changelogs from git history following Keep a Changelog format. + +## When to Use + +Invoke `/changelog` when you need to: +- Generate changelog entries for a release +- Document changes since the last version +- Create release notes from commits + +## Changelog Format + +Follow [Keep a Changelog](https://keepachangelog.com/): + +```markdown +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added +- New features + +### Changed +- Changes in existing functionality + +### Deprecated +- Features that will be removed + +### Removed +- Removed features + +### Fixed +- Bug fixes + +### Security +- Security fixes +``` + +## Change Categories + +Categorize based on commit messages and code changes: + +| Category | Commit Keywords | Examples | +|----------|-----------------|----------| +| Added | add, create, implement, introduce | New features, screens | +| Changed | update, change, modify, refactor, improve | API changes, enhancements | +| Deprecated | deprecate | Features to be removed | +| Removed | remove, delete, drop | Deleted features | +| Fixed | fix, resolve, correct, patch | Bug fixes | +| Security | security, vulnerability, CVE | Security patches | + +## Git Commands + +```bash +# Recent commits +git log --oneline -20 + +# Commits between tags +git log v1.0.0..HEAD --oneline + +# Full commit messages +git log --format="%h %s%n%b" HEAD~10..HEAD + +# Commits since a date +git log --since="2024-01-01" --oneline +``` + +## Writing Guidelines + +### User-Facing Descriptions + +Translate technical commits to user benefits: + +- **Technical**: "Refactor auth state machine" +- **User-facing**: "Improved reliability of authentication state management" + +### Breaking Changes + +Flag API changes clearly: + +```markdown +### Changed +- **BREAKING**: `login()` now returns `Promise` instead of `Promise` +``` + +## Output Example + +```markdown +## [1.2.0] - 2024-01-14 + +### Added +- New health data visualization screen +- Apple HealthKit integration for step counting +- Export health data to PDF + +### Changed +- Improved task scheduling performance +- Updated questionnaire UI design + +### Fixed +- Fixed race condition in account state initialization +- Resolved infinite loop when no tasks exist +``` + +## Workflow + +1. Run `git log` to get commits since last release +2. Group commits by category (Added/Changed/Fixed/etc.) +3. Identify breaking changes +4. Write user-facing descriptions +5. Include PR/issue references where available +6. Format following Keep a Changelog structure diff --git a/homeflow/.claude/commands/compliance.md b/homeflow/.claude/commands/compliance.md new file mode 100644 index 0000000..f621589 --- /dev/null +++ b/homeflow/.claude/commands/compliance.md @@ -0,0 +1,255 @@ +# Compliance Planner + +Plan regulatory and privacy compliance for digital health apps. + +## When to Use + +Invoke `/compliance` when you need to: +- Review HIPAA requirements +- Plan data privacy measures +- Prepare for IRB submission +- Assess FDA regulatory considerations + +## Compliance Frameworks + +### HIPAA (US Healthcare Privacy) + +**Protected Health Information (PHI) Checklist:** + +- [ ] Names +- [ ] Geographic data (smaller than state) +- [ ] Dates (birth, admission, discharge, death) +- [ ] Phone numbers +- [ ] Email addresses +- [ ] Social Security numbers +- [ ] Medical record numbers +- [ ] Health plan numbers +- [ ] Account numbers +- [ ] Device identifiers +- [ ] Biometric identifiers +- [ ] Photos +- [ ] Any unique identifying characteristic + +**Technical Safeguards:** + +```markdown +## Data at Rest +- [ ] Encryption (AES-256) +- [ ] Secure key management +- [ ] Access controls + +## Data in Transit +- [ ] TLS 1.2+ for all connections +- [ ] Certificate pinning (optional) +- [ ] No sensitive data in URLs + +## Access Control +- [ ] Role-based access +- [ ] Audit logging +- [ ] Session management +- [ ] Multi-factor authentication (for admin) + +## Data Handling +- [ ] Minimum necessary principle +- [ ] Data retention policy +- [ ] Secure deletion procedures +- [ ] Breach notification process +``` + +### IRB Considerations + +**For Research Studies:** + +```markdown +## IRB Submission Checklist + +**Study Information** +- [ ] Protocol document +- [ ] Consent form (plain language) +- [ ] Recruitment materials +- [ ] Data collection instruments + +**Risk Assessment** +- [ ] Physical risks: [None/Minimal] +- [ ] Psychological risks: [Assessment burden] +- [ ] Privacy risks: [Data exposure] +- [ ] Social risks: [Stigma potential] + +**Protections** +- [ ] Data de-identification plan +- [ ] Secure storage description +- [ ] Access limitation procedures +- [ ] Participant withdrawal process + +**Informed Consent Elements** +- [ ] Study purpose +- [ ] Procedures description +- [ ] Duration of participation +- [ ] Risks and benefits +- [ ] Confidentiality measures +- [ ] Voluntary participation +- [ ] Contact information +- [ ] Withdrawal rights +``` + +### FDA Considerations + +**Software as Medical Device (SaMD) Assessment:** + +```markdown +## Is your app a medical device? + +**Likely NOT a device if:** +- General wellness (fitness tracking) +- Administrative (appointment scheduling) +- Educational (health information) +- EHR access (read-only patient portal) + +**Likely IS a device if:** +- Diagnoses conditions +- Recommends treatments +- Monitors for intervention +- Controls medical devices + +## Risk Classification (if device) + +**Class I (Low Risk)** +- General wellness +- Low risk to patient safety +- Example: Medication reminder + +**Class II (Moderate Risk)** +- Clinical decision support +- Diagnostic assistance +- Example: Symptom checker + +**Class III (High Risk)** +- Life-sustaining +- Implantable device control +- Example: Insulin dosing calculator +``` + +### GDPR (EU Privacy) + +**Key Requirements:** + +```markdown +## Lawful Basis +- [ ] Consent (explicit, withdrawable) +- [ ] Legitimate interest assessment +- [ ] Contract necessity + +## Data Subject Rights +- [ ] Right to access +- [ ] Right to rectification +- [ ] Right to erasure +- [ ] Right to portability +- [ ] Right to object + +## Implementation +- [ ] Privacy policy (clear language) +- [ ] Consent management +- [ ] Data export functionality +- [ ] Account deletion feature +- [ ] Processing records +``` + +## Privacy by Design + +**Implementation Checklist:** + +```typescript +// Data minimization +const userData = { + // Collect only what's needed + email: string, // Required for account + dateOfBirth: Date, // Required for study eligibility + // Don't collect: address, SSN, etc. unless necessary +}; + +// Purpose limitation +const dataUsage = { + healthData: 'Study analysis only', + email: 'Account management and study communications', + // Document all purposes +}; + +// Storage limitation +const retention = { + studyData: '7 years after study completion', + accountData: 'Until account deletion + 30 days', + logs: '90 days', +}; +``` + +## App Implementation + +### Consent Flow + +```typescript +// Consent screen requirements +interface ConsentScreen { + title: string; + sections: { + purpose: string; // Why we collect data + dataTypes: string[]; // What data we collect + usage: string; // How we use it + sharing: string; // Who we share with + retention: string; // How long we keep it + rights: string; // User rights + contact: string; // How to reach us + }; + signature: { + name: string; + date: Date; + accepted: boolean; + }; +} +``` + +### Data Export + +```typescript +// GDPR Article 20 - Data portability +async function exportUserData(userId: string): Promise { + return { + profile: await getProfile(userId), + healthData: await getHealthData(userId), + responses: await getQuestionnaireResponses(userId), + exportDate: new Date().toISOString(), + format: 'JSON', + }; +} +``` + +### Account Deletion + +```typescript +// Right to erasure implementation +async function deleteAccount(userId: string): Promise { + // 1. Delete personal data + await deleteUserProfile(userId); + + // 2. Delete health data + await deleteHealthData(userId); + + // 3. Anonymize research data (if consented) + await anonymizeStudyData(userId); + + // 4. Retain audit logs (legal requirement) + await retainAuditLogs(userId, '7 years'); +} +``` + +## Checklist + +- [ ] PHI inventory completed +- [ ] Technical safeguards implemented +- [ ] Privacy policy written +- [ ] Consent flow designed +- [ ] Data export feature built +- [ ] Account deletion feature built +- [ ] IRB submission prepared (if research) +- [ ] FDA classification assessed (if applicable) +- [ ] Breach response plan documented +- [ ] Staff training completed diff --git a/homeflow/.claude/commands/data-model.md b/homeflow/.claude/commands/data-model.md new file mode 100644 index 0000000..82bea45 --- /dev/null +++ b/homeflow/.claude/commands/data-model.md @@ -0,0 +1,249 @@ +# Data Model Planner + +Plan health data models and FHIR resource structures. + +## When to Use + +Invoke `/data-model` when you need to: +- Design data structures for health information +- Map app concepts to FHIR resources +- Plan database schema for health data +- Define relationships between health entities + +## Core Health Data Entities + +### Patient/User Data + +```typescript +interface User { + // Identity + uid: string; + email: string; + + // Demographics (FHIR Patient) + name: PersonName; + dateOfBirth: Date; + sex: 'male' | 'female' | 'other' | 'unknown'; + + // Contact + phoneNumber?: string; + address?: Address; + + // Clinical (if needed) + conditions?: string[]; // Active diagnoses + medications?: string[]; // Current medications + allergies?: string[]; // Known allergies +} +``` + +### Health Observations + +```typescript +interface HealthObservation { + id: string; + type: ObservationType; + value: number | string | boolean; + unit?: string; + timestamp: Date; + source: 'manual' | 'healthkit' | 'device'; + + // FHIR mapping + fhirCode: { + system: string; // e.g., 'http://loinc.org' + code: string; // e.g., '8867-4' (heart rate) + display: string; // e.g., 'Heart rate' + }; +} + +type ObservationType = + | 'heart_rate' + | 'blood_pressure' + | 'weight' + | 'steps' + | 'sleep' + | 'blood_glucose' + | 'oxygen_saturation' + | 'temperature'; +``` + +### Tasks & Activities + +```typescript +interface Task { + id: string; + title: string; + instructions: string; + category: 'questionnaire' | 'measurement' | 'medication' | 'activity'; + + // Scheduling + schedule: Schedule; + completionPolicy: CompletionPolicy; + + // Relationships + questionnaireId?: string; // For questionnaire tasks + medicationId?: string; // For medication tasks + + // Status + status: 'active' | 'completed' | 'cancelled'; + createdAt: Date; +} + +interface Schedule { + startDate: Date; + endDate?: Date; + recurrence: + | { type: 'once'; date: Date } + | { type: 'daily'; hour: number; minute: number } + | { type: 'weekly'; weekday: number; hour: number; minute: number } + | { type: 'monthly'; day: number; hour: number; minute: number }; +} +``` + +### Questionnaire Responses + +```typescript +interface QuestionnaireResponse { + id: string; + questionnaireId: string; + taskId?: string; + + status: 'in-progress' | 'completed'; + authored: Date; + + answers: Answer[]; +} + +interface Answer { + questionId: string; + value: + | { type: 'boolean'; value: boolean } + | { type: 'integer'; value: number } + | { type: 'decimal'; value: number } + | { type: 'string'; value: string } + | { type: 'date'; value: string } + | { type: 'choice'; value: string[] }; +} +``` + +## FHIR Resource Mapping + +| App Concept | FHIR Resource | Key Fields | +|-------------|---------------|------------| +| User | Patient | name, birthDate, gender, telecom | +| Health Reading | Observation | code, value, effectiveDateTime | +| Task | Task | description, status, for, focus | +| Task Completion | Observation | code='task-completion', effectiveDateTime | +| Questionnaire | Questionnaire | item[], status | +| Survey Response | QuestionnaireResponse | item[], authored | +| Consent | Consent | status, dateTime, performer | +| Medication | MedicationStatement | medication, status, dosage | +| Condition | Condition | code, clinicalStatus, onsetDateTime | +| Care Plan | CarePlan | status, intent, activity[] | + +## LOINC Codes for Common Observations + +```typescript +const LOINC_CODES = { + // Vitals + heartRate: { code: '8867-4', display: 'Heart rate' }, + bloodPressureSystolic: { code: '8480-6', display: 'Systolic blood pressure' }, + bloodPressureDiastolic: { code: '8462-4', display: 'Diastolic blood pressure' }, + bodyWeight: { code: '29463-7', display: 'Body weight' }, + bodyHeight: { code: '8302-2', display: 'Body height' }, + bodyTemperature: { code: '8310-5', display: 'Body temperature' }, + oxygenSaturation: { code: '2708-6', display: 'Oxygen saturation' }, + respiratoryRate: { code: '9279-1', display: 'Respiratory rate' }, + + // Lab + bloodGlucose: { code: '2339-0', display: 'Glucose [Mass/volume] in Blood' }, + + // Activity + steps: { code: '55423-8', display: 'Number of steps' }, + + // Sleep + sleepDuration: { code: '93832-4', display: 'Sleep duration' }, +}; +``` + +## HealthKit Sample Types + +```typescript +const HEALTHKIT_MAPPING = { + // Map HealthKit to FHIR + stepCount: { loinc: '55423-8', unit: 'count' }, + heartRate: { loinc: '8867-4', unit: 'beats/min' }, + bodyMass: { loinc: '29463-7', unit: 'kg' }, + bloodGlucose: { loinc: '2339-0', unit: 'mg/dL' }, + oxygenSaturation: { loinc: '2708-6', unit: '%' }, + bodyTemperature: { loinc: '8310-5', unit: 'degC' }, + bloodPressureSystolic: { loinc: '8480-6', unit: 'mmHg' }, + bloodPressureDiastolic: { loinc: '8462-4', unit: 'mmHg' }, +}; +``` + +## Data Relationships + +``` +User (Patient) + ├── Tasks + │ ├── Outcomes (Observation) + │ └── QuestionnaireResponses + ├── HealthObservations (Observation) + │ └── from HealthKit + ├── Medications (MedicationStatement) + ├── Conditions (Condition) + └── Consent +``` + +## Storage Patterns + +### Local Storage (AsyncStorage) + +```typescript +const STORAGE_KEYS = { + user: 'user-profile', + tasks: 'tasks', + outcomes: 'outcomes', + responses: 'questionnaire-responses', + healthData: 'health-observations', + syncState: 'sync-state', +}; +``` + +### Remote Storage (FHIR Server) + +```typescript +// Resource URLs +const FHIR_ENDPOINTS = { + patient: '/Patient', + task: '/Task', + observation: '/Observation', + questionnaire: '/Questionnaire', + questionnaireResponse: '/QuestionnaireResponse', + consent: '/Consent', +}; + +// Search patterns +const SEARCH_EXAMPLES = { + // Get patient's tasks + patientTasks: '/Task?patient=Patient/123', + + // Get observations in date range + recentObservations: '/Observation?patient=Patient/123&date=ge2024-01-01', + + // Get questionnaire responses + responses: '/QuestionnaireResponse?patient=Patient/123&questionnaire=Questionnaire/daily-checkin', +}; +``` + +## Checklist + +- [ ] Core entities identified +- [ ] FHIR resources mapped +- [ ] LOINC codes selected for observations +- [ ] HealthKit types mapped +- [ ] Relationships documented +- [ ] Storage strategy defined +- [ ] Sync strategy planned +- [ ] Data validation rules defined +- [ ] Privacy considerations addressed diff --git a/homeflow/.claude/commands/docs.md b/homeflow/.claude/commands/docs.md new file mode 100644 index 0000000..a1a19ab --- /dev/null +++ b/homeflow/.claude/commands/docs.md @@ -0,0 +1,78 @@ +# Documentation Generator + +Generate and update documentation for your digital health app. + +## When to Use + +Invoke `/docs` when you need to: +- Create a README for your app +- Document components and hooks +- Add usage examples for features + +## Documentation Standards + +### App README Structure + +1. **Title** - App name with brief description +2. **Features** - Bullet list of key features +3. **Getting Started** - Setup and installation steps +4. **Configuration** - Environment variables and settings +5. **Architecture** - Key concepts and patterns +6. **Development** - How to run, test, and build + +### Code Examples Requirements + +- Use TypeScript with proper type annotations +- Always include imports +- Show success and error handling +- Use the cancellation token pattern for async effects: + ```typescript + useEffect(() => { + let cancelled = false; + async function load() { + const data = await fetch(); + if (!cancelled) setState(data); + } + load(); + return () => { cancelled = true }; + }, []); + ``` + +### Key Patterns to Document + +1. **Standard Pattern**: Always show `useStandard()` hook usage +2. **Service Separation**: Clarify AccountService (auth) vs BackendService (data) +3. **Declarative Auth Guards**: Use `` not `router.replace()` +4. **Memoized Context**: Show `useMemo` for provider values +5. **FHIR Compliance**: Document FHIR R4 resource mappings where relevant + +### Props Tables Format + +```markdown +| Prop | Type | Required | Description | +|------|------|----------|-------------| +| `name` | `string` | Yes | Description here | +| `onPress` | `() => void` | No | Callback description | +``` + +## Key Files + +- `lib/services/standard-context.tsx` - Standard pattern implementation +- `lib/services/types.ts` - Service interfaces +- `app/_layout.tsx` - Root layout with providers + +## Workflow + +1. Read the source files to understand exports and functionality +2. Identify all public components and hooks +3. Follow the README structure above +4. Include working code examples +5. Add troubleshooting for known issues + +## Verification Checklist + +- [ ] All public exports documented +- [ ] Code examples use correct imports +- [ ] Props tables include all properties +- [ ] Follows project conventions +- [ ] Troubleshooting section addresses common issues diff --git a/homeflow/.claude/commands/feature.md b/homeflow/.claude/commands/feature.md new file mode 100644 index 0000000..28deace --- /dev/null +++ b/homeflow/.claude/commands/feature.md @@ -0,0 +1,200 @@ +# Feature Generator + +Create new features and screens for your digital health app. + +## When to Use + +Invoke `/feature` when you need to: +- Add a new tab or screen to the app +- Create a new feature with components +- Set up a new data flow + +## Feature Structure + +``` +app/ + (tabs)/ + .tsx # Tab screen + / + index.tsx # Stack screen + [id].tsx # Dynamic route +components/ + / + FeatureView.tsx + FeatureCard.tsx +lib/ + -config.ts + hooks/ + use.ts +``` + +## Adding a Tab Screen + +### 1. Create the Screen + +```tsx +// app/(tabs)/feature.tsx +import { View, Text } from 'react-native'; + +export default function FeatureScreen() { + return ( + + Feature Screen + + ); +} +``` + +### 2. Add to Tab Layout + +Edit `app/(tabs)/_layout.tsx`: + +```tsx + ( + + ), + }} +/> +``` + +## Adding a Stack Screen + +### 1. Create the Screen + +```tsx +// app/feature/index.tsx +import { Stack } from 'expo-router'; + +export default function FeatureLayout() { + return ; +} +``` + +### 2. Add to Root Layout + +Edit `app/_layout.tsx`: + +```tsx + +``` + +## Creating a Hook + +```tsx +// lib/hooks/useFeature.ts +import { useState, useEffect } from 'react'; +import { useStandard } from '../services'; + +export function useFeature() { + const { backend } = useStandard(); + const [data, setData] = useState(null); + const [isLoading, setIsLoading] = useState(true); + + useEffect(() => { + let cancelled = false; + + async function load() { + try { + const result = await backend.getFeatureData(); + if (!cancelled) { + setData(result); + } + } finally { + if (!cancelled) { + setIsLoading(false); + } + } + } + + load(); + return () => { cancelled = true }; + }, [backend]); + + return { data, isLoading }; +} +``` + +## Creating a Component + +```tsx +// components/feature/FeatureCard.tsx +import { View, Text, StyleSheet } from 'react-native'; + +interface FeatureCardProps { + title: string; + description: string; + onPress?: () => void; +} + +export function FeatureCard({ title, description, onPress }: FeatureCardProps) { + return ( + + {title} + {description} + + ); +} + +const styles = StyleSheet.create({ + card: { + padding: 16, + backgroundColor: '#fff', + borderRadius: 8, + marginBottom: 12, + }, + title: { + fontSize: 18, + fontWeight: '600', + }, + description: { + fontSize: 14, + color: '#666', + marginTop: 4, + }, +}); +``` + +## Connecting to Backend + +If the feature needs data persistence: + +### 1. Add to BackendService Interface + +```typescript +// lib/services/types.ts +interface BackendService { + // ... existing methods + getFeatureData(): Promise; + saveFeatureData(data: FeatureData): Promise; +} +``` + +### 2. Implement in Backend + +```typescript +// lib/services/backends/local-storage.ts +async getFeatureData(): Promise { + const data = await AsyncStorage.getItem('feature-data'); + return data ? JSON.parse(data) : []; +} +``` + +## Key Patterns + +1. **Use Standard** - Always access backend via `useStandard()` +2. **Cancellation Tokens** - Every async effect needs `let cancelled = false` +3. **Memoize Values** - Use `useMemo` for context provider values +4. **Declarative Guards** - Use `` for auth + +## Checklist + +- [ ] Screen file created in correct location +- [ ] Added to tab or stack layout +- [ ] Hook created with cancellation token +- [ ] Components follow project patterns +- [ ] Backend interface extended (if needed) +- [ ] TypeScript types defined diff --git a/homeflow/.claude/commands/fhir-mapping.md b/homeflow/.claude/commands/fhir-mapping.md new file mode 100644 index 0000000..1e06283 --- /dev/null +++ b/homeflow/.claude/commands/fhir-mapping.md @@ -0,0 +1,156 @@ +# FHIR Mapping Generator + +Generate FHIR R4 resource mappings for healthcare data interoperability. + +## When to Use + +Invoke `/fhir-mapping` when you need to: +- Create mappings between app types and FHIR resources +- Add support for new FHIR resource types +- Extend existing mappings with new fields + +## Mapping Pattern + +Every mapping requires bidirectional functions: + +```typescript +// App Type -> FHIR Resource +export function appTypeToFhir(appType: AppType, patientId: string): FhirResource { + return { + resourceType: 'ResourceType', + // ... mapping logic + }; +} + +// FHIR Resource -> App Type +export function fhirToAppType(fhirResource: FhirResource): AppType { + return { + // ... reverse mapping logic + }; +} +``` + +## Example: User <-> Patient + +```typescript +import type { Patient, HumanName } from '@medplum/fhirtypes'; + +export function userToPatient(user: User): Patient { + const humanName: HumanName | undefined = user.name + ? { + family: user.name.familyName, + given: [user.name.givenName, user.name.middleName].filter(Boolean), + } + : undefined; + + return { + resourceType: 'Patient', + id: user.uid || undefined, + name: humanName ? [humanName] : undefined, + birthDate: user.dateOfBirth?.toISOString().split('T')[0], + gender: mapSexToGender(user.sex), + telecom: [ + user.email ? { system: 'email', value: user.email } : undefined, + user.phoneNumber ? { system: 'phone', value: user.phoneNumber } : undefined, + ].filter(Boolean), + }; +} + +export function patientToUser(patient: Patient): User { + return { + uid: patient.id ?? '', + email: patient.telecom?.find((t) => t.system === 'email')?.value ?? null, + name: mapHumanNameToPersonName(patient.name?.[0]), + dateOfBirth: patient.birthDate ? new Date(patient.birthDate) : undefined, + sex: mapGenderToSex(patient.gender), + }; +} +``` + +## Code Systems + +Define custom code systems for app-specific values: + +```typescript +const TASK_TYPE_SYSTEM = 'http://spezivibe.com/fhir/CodeSystem/task-type'; +const TASK_ID_SYSTEM = 'http://spezivibe.com/fhir/identifier/task-id'; +const OUTCOME_ID_SYSTEM = 'http://spezivibe.com/fhir/identifier/outcome-id'; +``` + +## Key Patterns + +### Use Identifier for App IDs + +```typescript +// Let FHIR server assign 'id', use identifier for your app's ID +identifier: [{ system: TASK_ID_SYSTEM, value: task.id }] +``` + +### Standard Fields Over Extensions + +Prefer FHIR standard fields: +- `code` for category +- `focus` for references +- `input` with `valueTiming` for schedules + +### Extension Pattern (When Needed) + +```typescript +restriction: { + extension: [{ + url: 'http://spezivibe.com/fhir/StructureDefinition/completion-window', + extension: [ + { url: 'start', valueInteger: policy.start }, + { url: 'end', valueInteger: policy.end }, + ], + }], +} +``` + +## Type Imports + +```typescript +import type { + Patient, + Task as FhirTask, + Observation, + Consent, + HumanName, + Timing, +} from '@medplum/fhirtypes'; +``` + +## Testing Requirements + +Every mapping must have round-trip tests: + +```typescript +describe('Task Mapping', () => { + it('should round-trip correctly', () => { + const original = { id: 'test', title: 'Task' }; + const fhir = taskToFhir(original, 'patient-123'); + const roundTripped = fhirToTask(fhir); + + expect(roundTripped.id).toBe(original.id); + }); + + it('should handle optional fields', () => { + const minimal = { id: 'test' }; + const fhir = taskToFhir(minimal, 'patient-123'); + const roundTripped = fhirToTask(fhir); + + expect(roundTripped.id).toBe(minimal.id); + }); +}); +``` + +## Checklist for New Mappings + +- [ ] Bidirectional functions (toFhir and fromFhir) +- [ ] Uses `identifier` for app IDs, not `id` +- [ ] Standard FHIR fields preferred over extensions +- [ ] Proper code system URIs +- [ ] Reference format: `ResourceType/id` +- [ ] Required FHIR fields present +- [ ] Round-trip tests written +- [ ] Edge cases handled (null, undefined, empty) diff --git a/homeflow/.claude/commands/fhir.md b/homeflow/.claude/commands/fhir.md new file mode 100644 index 0000000..60044a3 --- /dev/null +++ b/homeflow/.claude/commands/fhir.md @@ -0,0 +1,120 @@ +# FHIR Compliance Checker + +Validate FHIR R4 compliance in your digital health app for healthcare data integrity. + +## When to Use + +Invoke `/fhir` when you need to: +- Review code for FHIR R4 compliance +- Validate resource mappings +- Check value set usage +- Ensure healthcare data standards compliance + +## FHIR Resources Used + +| App Type | FHIR Resource | +|----------|---------------| +| User | Patient | +| Task | Task | +| Outcome | Observation | +| ConsentData | Consent | +| Questionnaire | Questionnaire | +| QuestionnaireResponse | QuestionnaireResponse | + +## Code Systems + +```typescript +// Task type categories +'http://spezivibe.com/fhir/CodeSystem/task-type' + +// Resource identifiers +'http://spezivibe.com/fhir/identifier/task-id' +'http://spezivibe.com/fhir/identifier/outcome-id' +``` + +## Compliance Checklist + +### Required FHIR Fields + +**All Resources:** +- [ ] `resourceType` is set correctly +- [ ] Required fields per FHIR R4 spec are present + +**Patient:** +- [ ] `gender` uses AdministrativeGender: `male | female | other | unknown` +- [ ] `name` uses HumanName structure +- [ ] `telecom` uses ContactPoint with valid `system` (email, phone) +- [ ] `birthDate` format: `YYYY-MM-DD` + +**Task:** +- [ ] `status` uses TaskStatus value set +- [ ] `intent` is set (use `order` for executable tasks) +- [ ] `for` references a Patient: `Patient/{id}` + +**Observation:** +- [ ] `status` uses ObservationStatus value set +- [ ] `code` is required with proper coding +- [ ] `subject` references a Patient + +**Consent:** +- [ ] `scope` is required +- [ ] `category` is required +- [ ] `policyRule` is required (FHIR constraint ppc-1) + +### References Format + +Always use format: `ResourceType/id` + +```typescript +// Correct +{ reference: 'Patient/123' } +{ reference: 'Questionnaire/abc' } + +// Incorrect +{ reference: '123' } +``` + +### Identifier Systems + +When using custom identifiers: + +```typescript +// Correct - with system +identifier: [{ + system: 'http://spezivibe.com/fhir/identifier/task-id', + value: task.id +}] + +// Incorrect - no system +identifier: [{ value: task.id }] +``` + +## Common Compliance Issues + +1. **Missing resourceType** - Every FHIR resource must have `resourceType` +2. **Invalid status codes** - Using app-specific statuses instead of FHIR value sets +3. **Incorrect reference format** - Missing resource type prefix +4. **Missing required fields** - Consent without `policyRule`, Observation without `code` +5. **Wrong date format** - Using Date objects instead of ISO strings + +## Review Process + +1. **Identify FHIR resources** in the code +2. **Check required fields** against FHIR R4 spec +3. **Validate code systems** use correct URIs +4. **Verify references** use proper format +5. **Check value sets** for status and code fields +6. **Test round-trips** ensure data integrity + +## FHIR R4 References + +- [Patient](https://hl7.org/fhir/R4/patient.html) +- [Task](https://hl7.org/fhir/R4/task.html) +- [Observation](https://hl7.org/fhir/R4/observation.html) +- [Consent](https://hl7.org/fhir/R4/consent.html) +- [Questionnaire](https://hl7.org/fhir/R4/questionnaire.html) + +## Key Files + +- `lib/services/fhir-mapping.ts` - FHIR mappings (if using Medplum) +- `lib/services/types.ts` - App type definitions diff --git a/homeflow/.claude/commands/release.md b/homeflow/.claude/commands/release.md new file mode 100644 index 0000000..21c2606 --- /dev/null +++ b/homeflow/.claude/commands/release.md @@ -0,0 +1,165 @@ +# Release Notes Generator + +Create release notes summarizing features, fixes, and breaking changes for releases. + +## When to Use + +Invoke `/release` when you need to: +- Prepare release notes for a new version +- Summarize changes for users/stakeholders +- Document migration steps for breaking changes + +## Release Notes Structure + +```markdown +# Release v1.2.0 + +## Highlights + +Brief summary of the most important changes (2-3 sentences). + +## New Features + +### Feature Name +Description of what it does and why it matters. + +**Usage:** +```typescript +// Code example +``` + +## Improvements + +- Improvement 1 +- Improvement 2 + +## Bug Fixes + +- Fixed issue with X (#123) +- Resolved Y when Z + +## Breaking Changes + +### Change Name + +**What changed:** Description + +**Migration:** +```typescript +// Before +oldMethod(); + +// After +newMethod(); +``` + +## Dependencies + +- Updated `package-name` from 1.0.0 to 2.0.0 +``` + +## Information Gathering + +### Git Commands + +```bash +# Commits since last release +git log v1.1.0..HEAD --oneline + +# Detailed commit messages +git log v1.1.0..HEAD --format="%h %s%n%b%n---" + +# Files changed +git diff v1.1.0..HEAD --stat + +# Contributors +git log v1.1.0..HEAD --format="%an" | sort | uniq +``` + +## Writing Guidelines + +### Highlights Section + +Focus on user value: +- What can users do now that they couldn't before? +- What problems are solved? +- Why should they upgrade? + +### Feature Descriptions + +Include: +- What it does +- Why it matters +- Basic usage example + +### Breaking Changes + +Must include: +- Clear description of what changed +- Why it changed +- Step-by-step migration guide +- Code examples (before/after) + +### Version Numbers + +Follow semantic versioning: +- **Major (1.0.0)**: Breaking changes +- **Minor (0.1.0)**: New features, backward compatible +- **Patch (0.0.1)**: Bug fixes, backward compatible + +## Example Release Notes + +```markdown +# Release v1.2.0 + +## Highlights + +This release adds health data visualization and improves task scheduling +performance. Users can now view their health trends over time. + +## New Features + +### Health Data Visualization + +View your health metrics in interactive charts. + +**Usage:** +```typescript +import { HealthChart } from './components/health'; + + +``` + +## Improvements + +- Task scheduling is now 50% faster +- Improved error messages for authentication failures + +## Bug Fixes + +- Fixed race condition in account state initialization (#45) +- Resolved infinite loop when no tasks exist (#52) + +## Breaking Changes + +### useHealthData Hook + +**What changed:** `useHealthData()` now returns an object instead of array + +**Migration:** +```typescript +// Before +const [data, isLoading] = useHealthData(); + +// After +const { data, isLoading } = useHealthData(); +``` +``` + +## Checklist + +- [ ] Highlights summarize key changes +- [ ] All new features documented with examples +- [ ] Breaking changes have migration guides +- [ ] Bug fixes reference issue numbers +- [ ] Version number follows semver diff --git a/homeflow/.claude/commands/study-planner.md b/homeflow/.claude/commands/study-planner.md new file mode 100644 index 0000000..05c013b --- /dev/null +++ b/homeflow/.claude/commands/study-planner.md @@ -0,0 +1,173 @@ +# Study Planner + +Plan digital health studies and research protocols. + +## When to Use + +Invoke `/study-planner` when you need to: +- Design a health study or research protocol +- Plan data collection requirements +- Define enrollment criteria and consent flows +- Structure questionnaires and assessments + +## Study Planning Framework + +### 1. Study Overview + +Define the core elements: + +```markdown +## Study: [Name] + +**Objective:** What health outcome are you measuring? +**Population:** Who are the participants? +**Duration:** How long will the study run? +**Type:** Observational / Interventional / Survey +``` + +### 2. Enrollment & Consent + +```markdown +## Enrollment Criteria + +**Inclusion:** +- Age range +- Health conditions +- Device requirements (iOS, HealthKit access) + +**Exclusion:** +- Contraindications +- Conflicting medications +- Technical limitations + +## Consent Requirements +- [ ] Plain language summary +- [ ] Data usage explanation +- [ ] Withdrawal process +- [ ] Contact information +``` + +### 3. Data Collection Plan + +| Data Type | Source | Frequency | FHIR Resource | +|-----------|--------|-----------|---------------| +| Steps | HealthKit | Daily | Observation | +| Heart Rate | HealthKit | Continuous | Observation | +| Symptoms | Questionnaire | Weekly | QuestionnaireResponse | +| Medications | User Input | As needed | MedicationStatement | + +### 4. Assessment Schedule + +```markdown +## Timeline + +**Baseline (Day 0)** +- Consent +- Demographics questionnaire +- Initial health assessment + +**Daily** +- Symptom check-in (2 min) +- Passive HealthKit collection + +**Weekly** +- Quality of life questionnaire +- Medication adherence check + +**Monthly** +- Comprehensive health assessment +- Progress review + +**End of Study** +- Final assessment +- Feedback survey +``` + +### 5. Outcome Measures + +```markdown +## Primary Outcomes +1. [Measurable health metric] +2. [Questionnaire score change] + +## Secondary Outcomes +1. [Engagement metrics] +2. [Adherence rates] +3. [User satisfaction] +``` + +## Task Configuration + +Map study activities to app tasks: + +```typescript +const studyTasks: Task[] = [ + { + title: 'Daily Check-in', + category: 'questionnaire', + questionnaireId: 'daily-symptoms', + schedule: { + recurrence: { type: 'daily', hour: 9, minute: 0 } + }, + completionPolicy: { type: 'window', start: -60, end: 180 } + }, + { + title: 'Weekly Assessment', + category: 'questionnaire', + questionnaireId: 'weekly-qol', + schedule: { + recurrence: { type: 'weekly', weekday: 1, hour: 10, minute: 0 } + } + } +]; +``` + +## Questionnaire Design + +Follow FHIR Questionnaire structure: + +```typescript +const questionnaire: Questionnaire = { + resourceType: 'Questionnaire', + status: 'active', + title: 'Daily Symptom Check', + item: [ + { + linkId: 'pain-level', + text: 'Rate your pain level (0-10)', + type: 'integer', + extension: [{ + url: 'http://hl7.org/fhir/StructureDefinition/minValue', + valueInteger: 0 + }, { + url: 'http://hl7.org/fhir/StructureDefinition/maxValue', + valueInteger: 10 + }] + }, + { + linkId: 'symptoms', + text: 'Select any symptoms you experienced', + type: 'choice', + repeats: true, + answerOption: [ + { valueCoding: { code: 'fatigue', display: 'Fatigue' }}, + { valueCoding: { code: 'nausea', display: 'Nausea' }}, + { valueCoding: { code: 'headache', display: 'Headache' }} + ] + } + ] +}; +``` + +## Checklist + +- [ ] Study objectives clearly defined +- [ ] Enrollment criteria specified +- [ ] Consent flow designed +- [ ] Data collection plan complete +- [ ] Assessment schedule created +- [ ] Outcome measures defined +- [ ] Tasks configured in app +- [ ] Questionnaires designed (FHIR-compliant) +- [ ] HealthKit permissions identified +- [ ] Data retention policy defined diff --git a/homeflow/.claude/commands/test.md b/homeflow/.claude/commands/test.md new file mode 100644 index 0000000..7e7f26c --- /dev/null +++ b/homeflow/.claude/commands/test.md @@ -0,0 +1,163 @@ +# Test Generator + +Generate Jest tests following project testing patterns for React Native and FHIR compliance. + +## When to Use + +Invoke `/test` when you need to: +- Create tests for new components or services +- Add missing test coverage +- Write FHIR mapping round-trip tests +- Test React hooks and providers + +## Test Location and Naming + +``` +__tests__/.test.ts # Unit tests +__tests__/.test.tsx # Component tests +``` + +## Test Structure + +```typescript +/** + * Tests for [Module Name] + */ + +import { ... } from '../module'; + +describe('ModuleName', () => { + describe('FunctionOrClass', () => { + describe('method or scenario', () => { + it('should [expected behavior]', () => { + // Arrange + // Act + // Assert + }); + }); + }); +}); +``` + +## Key Testing Patterns + +### Account Service Testing + +Use `InMemoryAccountService` for auth testing: + +```typescript +import { InMemoryAccountService } from '@spezivibe/account'; + +describe('AuthComponent', () => { + let service: InMemoryAccountService; + + beforeEach(async () => { + service = new InMemoryAccountService({ startUnauthenticated: true }); + await service.initialize(); + }); + + it('should handle unauthenticated state', async () => { + const isAuth = await service.isAuthenticated(); + expect(isAuth).toBe(false); + }); + + it('should login successfully', async () => { + await service.login({ email: 'test@example.com', password: 'password' }); + const user = await service.getCurrentUser(); + expect(user?.email).toBe('test@example.com'); + }); +}); +``` + +### FHIR Mapping Round-Trip Tests + +Critical for healthcare data integrity: + +```typescript +import { taskToFhirTask, fhirTaskToTask } from '../lib/fhir-mapping'; + +describe('FHIR Task Mapping', () => { + const sampleTask = { + id: 'task-123', + title: 'Daily Check-in', + category: 'questionnaire', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { type: 'daily', hour: 9, minute: 0 }, + }, + completionPolicy: { type: 'anytime' }, + createdAt: new Date('2024-01-01'), + }; + + it('should round-trip Task correctly', () => { + const fhirTask = taskToFhirTask(sampleTask, 'patient-123'); + const roundTripped = fhirTaskToTask(fhirTask); + + expect(roundTripped.id).toBe(sampleTask.id); + expect(roundTripped.title).toBe(sampleTask.title); + expect(roundTripped.category).toBe(sampleTask.category); + }); +}); +``` + +### React Component Testing + +```typescript +import { render, fireEvent, waitFor } from '@testing-library/react-native'; +import { useAccount } from '@spezivibe/account'; + +jest.mock('@spezivibe/account', () => ({ + ...jest.requireActual('@spezivibe/account'), + useAccount: jest.fn(), +})); + +const mockUseAccount = useAccount as jest.MockedFunction; + +describe('ProfileScreen', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockUseAccount.mockReturnValue({ + signedIn: true, + isLoading: false, + user: { uid: '123', email: 'test@example.com' }, + error: null, + login: jest.fn(), + logout: jest.fn(), + register: jest.fn(), + resetPassword: jest.fn(), + updateProfile: jest.fn(), + clearError: jest.fn(), + }); + }); + + it('renders user email', () => { + const { getByText } = render(); + expect(getByText('test@example.com')).toBeTruthy(); + }); +}); +``` + +## Running Tests + +```bash +npm test # All tests +npm test -- --coverage # With coverage +npm test -- --watch # Watch mode +``` + +## Test Categories + +1. **Unit Tests**: Individual functions and utilities +2. **Integration Tests**: Service interactions +3. **Round-trip Tests**: FHIR mappings (toFhir -> fromFhir) +4. **Edge Cases**: Null values, missing fields, invalid input +5. **Error Handling**: Network failures, validation errors + +## Checklist + +- [ ] Tests use descriptive names (`should [verb] when [condition]`) +- [ ] Arrange-Act-Assert structure +- [ ] Mocks cleared in beforeEach +- [ ] FHIR mappings have round-trip tests +- [ ] Edge cases covered (null, undefined, empty) +- [ ] Async tests use proper awaits diff --git a/homeflow/.claude/commands/ux-planner.md b/homeflow/.claude/commands/ux-planner.md new file mode 100644 index 0000000..e1f5313 --- /dev/null +++ b/homeflow/.claude/commands/ux-planner.md @@ -0,0 +1,348 @@ +# UX Planner + +Plan user experience flows for digital health apps. + +## When to Use + +Invoke `/ux-planner` when you need to: +- Design user journeys for patients +- Plan onboarding flows +- Structure health tracking workflows +- Design engagement and notification strategies + +## Core User Flows + +### 1. Onboarding Flow + +``` +App Launch + │ + ▼ +┌─────────────┐ +│ Welcome │ +│ Screen │ +└─────────────┘ + │ + ▼ +┌─────────────┐ +│ Sign Up / │ +│ Sign In │ +└─────────────┘ + │ + ▼ +┌─────────────┐ +│ Consent │◄── Required for studies +│ Screen │ +└─────────────┘ + │ + ▼ +┌─────────────┐ +│ Profile │◄── Name, DOB, etc. +│ Setup │ +└─────────────┘ + │ + ▼ +┌─────────────┐ +│ HealthKit │◄── iOS only +│ Permission │ +└─────────────┘ + │ + ▼ +┌─────────────┐ +│ Tutorial │◄── Optional +│ / Guide │ +└─────────────┘ + │ + ▼ +┌─────────────┐ +│ Home │ +│ Screen │ +└─────────────┘ +``` + +### 2. Daily Engagement Flow + +``` +Push Notification + │ + ▼ +┌─────────────┐ +│ Open App │ +└─────────────┘ + │ + ▼ +┌─────────────┐ +│ Today's │ +│ Tasks │ +└─────────────┘ + │ + ├──────────────────┐ + ▼ ▼ +┌─────────────┐ ┌─────────────┐ +│ Questionnaire│ │ Health Data │ +│ Task │ │ Review │ +└─────────────┘ └─────────────┘ + │ │ + ▼ ▼ +┌─────────────┐ ┌─────────────┐ +│ Complete │ │ Trends │ +│ Feedback │ │ & Stats │ +└─────────────┘ └─────────────┘ +``` + +### 3. Questionnaire Flow + +``` +Task Card Tap + │ + ▼ +┌─────────────┐ +│ Question 1 │ +│ [Progress] │ +└─────────────┘ + │ + ▼ +┌─────────────┐ +│ Question 2 │◄── Conditional logic +│ [Progress] │ may skip questions +└─────────────┘ + │ + ▼ +┌─────────────┐ +│ Question N │ +│ [Progress] │ +└─────────────┘ + │ + ▼ +┌─────────────┐ +│ Review │◄── Optional review +│ Answers │ before submit +└─────────────┘ + │ + ▼ +┌─────────────┐ +│ Complete! │ +│ [Return] │ +└─────────────┘ +``` + +## Screen Templates + +### Home Screen + +```typescript +interface HomeScreenLayout { + header: { + greeting: string; // "Good morning, Sarah" + date: string; // "Monday, January 15" + }; + + todaysTasks: { + completed: number; + total: number; + tasks: TaskCard[]; + }; + + healthSnapshot: { + metrics: HealthMetric[]; // Steps, heart rate, etc. + trend: 'up' | 'down' | 'stable'; + }; + + quickActions: { + logSymptom: () => void; + viewHistory: () => void; + contactSupport: () => void; + }; +} +``` + +### Task Card + +```typescript +interface TaskCard { + title: string; + category: 'questionnaire' | 'measurement' | 'medication'; + estimatedTime: string; // "2 min" + dueTime?: string; // "Due by 10:00 AM" + status: 'pending' | 'completed' | 'overdue'; + icon: string; + onPress: () => void; +} +``` + +### Health Dashboard + +```typescript +interface HealthDashboard { + timeRange: '7d' | '30d' | '90d' | 'all'; + + metrics: { + primary: HealthChart; // Main metric (e.g., steps) + secondary: HealthChart[];// Supporting metrics + }; + + insights: { + title: string; + description: string; + trend: 'positive' | 'negative' | 'neutral'; + }[]; + + exportData: () => void; +} +``` + +## Engagement Strategies + +### Notification Schedule + +```typescript +const notificationStrategy = { + taskReminders: { + timing: 'At scheduled time', + fallback: '2 hours before window closes', + message: "Time for your daily check-in", + }, + + streakMaintenance: { + timing: 'Evening if no activity', + message: "Keep your 5-day streak going!", + }, + + weeklyDigest: { + timing: 'Sunday 10:00 AM', + message: "See your weekly health summary", + }, + + milestones: { + trigger: 'On achievement', + message: "You completed 30 days of tracking!", + }, +}; +``` + +### Gamification Elements + +```typescript +interface GamificationFeatures { + streaks: { + currentStreak: number; + longestStreak: number; + display: 'flame' | 'calendar' | 'counter'; + }; + + achievements: { + id: string; + title: string; + description: string; + icon: string; + unlockedAt?: Date; + }[]; + + progress: { + studyCompletion: number; // 0-100% + weeklyGoal: number; // Tasks completed + totalContributions: number; + }; +} +``` + +## Accessibility Considerations + +```typescript +const accessibilityChecklist = { + visual: [ + 'Text size adjustable (Dynamic Type)', + 'Color contrast meets WCAG AA (4.5:1)', + 'Images have alt text', + 'Icons have labels', + ], + + motor: [ + 'Touch targets minimum 44x44pt', + 'No time-limited interactions', + 'Gesture alternatives available', + ], + + cognitive: [ + 'Clear, simple language', + 'Progress indicators', + 'Confirmation dialogs for actions', + 'Undo capability where possible', + ], + + technical: [ + 'VoiceOver support', + 'Reduced motion option', + 'High contrast mode', + ], +}; +``` + +## Error States + +```typescript +const errorStates = { + networkError: { + title: "Can't connect", + message: "Check your internet connection and try again.", + action: "Retry", + offlineMode: true, + }, + + syncError: { + title: "Sync failed", + message: "Your data is saved locally. We'll sync when connected.", + action: "Try again", + }, + + authError: { + title: "Session expired", + message: "Please sign in again to continue.", + action: "Sign in", + }, + + validationError: { + title: "Please check your input", + message: "[Specific field error]", + action: "Fix", + }, +}; +``` + +## Empty States + +```typescript +const emptyStates = { + noTasks: { + icon: 'checkmark.circle', + title: "All caught up!", + message: "No tasks for today. Check back tomorrow.", + }, + + noHealthData: { + icon: 'heart', + title: "No health data yet", + message: "Connect Apple Health to see your metrics here.", + action: "Connect Health", + }, + + noHistory: { + icon: 'clock', + title: "No history yet", + message: "Complete tasks to see your progress over time.", + }, +}; +``` + +## Checklist + +- [ ] Onboarding flow designed +- [ ] Core user journeys mapped +- [ ] Screen layouts defined +- [ ] Navigation structure planned +- [ ] Notification strategy set +- [ ] Engagement features planned +- [ ] Error states designed +- [ ] Empty states designed +- [ ] Accessibility requirements met +- [ ] Loading states defined diff --git a/homeflow/.env.example b/homeflow/.env.example new file mode 100644 index 0000000..e390352 --- /dev/null +++ b/homeflow/.env.example @@ -0,0 +1,5 @@ +# Backend Configuration +EXPO_PUBLIC_BACKEND_TYPE=local + +# LLM API Keys +EXPO_PUBLIC_OPENAI_API_KEY= diff --git a/homeflow/.gitignore b/homeflow/.gitignore new file mode 100644 index 0000000..67cbd35 --- /dev/null +++ b/homeflow/.gitignore @@ -0,0 +1,30 @@ +# Dependencies +node_modules/ + +# Build output +dist/ +.expo/ + +# Environment files (contain secrets) +.env +.env.local + +# macOS +.DS_Store + +# Debug logs +npm-debug.log* + +# TypeScript cache +*.tsbuildinfo + +# IDE +.idea/ +*.swp +*.swo + +# @generated expo-cli sync-2b81b286409207a5da26e14c78851eb30d8ccbdb +# The following patterns were generated by expo-cli + +expo-env.d.ts +# @end expo-cli \ No newline at end of file diff --git a/homeflow/AGENTS.md b/homeflow/AGENTS.md new file mode 120000 index 0000000..681311e --- /dev/null +++ b/homeflow/AGENTS.md @@ -0,0 +1 @@ +CLAUDE.md \ No newline at end of file diff --git a/homeflow/CLAUDE.md b/homeflow/CLAUDE.md new file mode 100644 index 0000000..ed01214 --- /dev/null +++ b/homeflow/CLAUDE.md @@ -0,0 +1,72 @@ +# AI Coding Instructions + +## Stack + +React Native, Expo 54, TypeScript, Expo Router, Formik + Yup + +## Commands + +```bash +npx expo start # Start dev server (press i for iOS, a for Android) +npm test # Run tests +``` + +## Provider Hierarchy + +Order matters - don't rearrange: +``` +StandardProvider → SchedulerProvider → AccountProvider → App +``` + +## Critical Rules + +1. **Always use Standard** - Access data via `useStandard()`, never import backends directly +2. **AccountService = auth only** - Login, register, logout, profile +3. **BackendService = data only** - Tasks, outcomes, questionnaires +4. **Cancellation tokens** - Every async effect needs `let cancelled = false` +5. **Memoize context values** - Always `useMemo` for provider values +6. **Declarative auth guards** - Use ``, not `router.replace()` + +## Key Files + +| File | Purpose | +|------|---------| +| `lib/services/standard-context.tsx` | Standard pattern - provides backend & auth | +| `app/_layout.tsx` | Root layout with providers and auth guards | +| `app/(tabs)/_layout.tsx` | Tab navigation | + +## Don't + +- Import backends directly - use `useStandard()` +- Add auth methods to BackendService +- Add data methods to AccountService +- Use `router.replace()` for auth guards +- Forget cleanup functions in useEffect +- Skip cancellation tokens in async effects + +## Development Agents + +Claude Code agents for common tasks. Invoke with `/agent-name`. + +### Development + +| Agent | Command | Purpose | +|-------|---------|---------| +| docs | `/docs` | Generate documentation and READMEs | +| changelog | `/changelog` | Generate changelogs from git history | +| test | `/test` | Generate Jest tests following project patterns | +| fhir | `/fhir` | Validate FHIR R4 compliance in code | +| fhir-mapping | `/fhir-mapping` | Generate FHIR resource mappings | +| feature | `/feature` | Create new app features and screens | +| release | `/release` | Create release notes for new versions | + +### Planning + +| Agent | Command | Purpose | +|-------|---------|---------| +| study-planner | `/study-planner` | Plan health studies and research protocols | +| compliance | `/compliance` | Plan HIPAA, IRB, and regulatory compliance | +| data-model | `/data-model` | Design health data models and FHIR structures | +| ux-planner | `/ux-planner` | Design user flows and engagement strategies | + +Agent definitions are in `.claude/agents/`. diff --git a/homeflow/GETTING_STARTED.md b/homeflow/GETTING_STARTED.md new file mode 100644 index 0000000..2e61cc8 --- /dev/null +++ b/homeflow/GETTING_STARTED.md @@ -0,0 +1,118 @@ +# Getting Started with HomeFlow + +This guide will help you set up and run your app. + +## Quick Start + +```bash +# Install dependencies +npm install + +# Copy environment file and add your keys +cp .env.example .env + +# Start the development server +npm start +``` + +## Environment Setup + +Copy `.env.example` to `.env` and fill in the required values: + +### Local Storage + +Your app uses local AsyncStorage for data persistence. +No cloud configuration is required. + +> **Note:** Data is stored on-device only. Users cannot sync +> across devices, and data is lost when the app is uninstalled. + +### AI Chat Configuration + +Your app includes the Chat feature with AI integration. + +> **⚠️ Security Warning:** API keys are exposed client-side in +> React Native apps. For production, implement a backend proxy +> to keep your keys secure. + +Get API keys for your selected providers: + +- **OpenAI**: [https://platform.openai.com/api-keys](https://platform.openai.com/api-keys) + +Add the keys to your `.env` file: + +``` +EXPO_PUBLIC_OPENAI_API_KEY=your-api-key +``` + +### HealthKit Setup (iOS Only) + +Your app includes Apple HealthKit integration for health data access. + +> **⚠️ Important:** HealthKit requires a custom development build. +> It will NOT work in Expo Go. + +#### Building for iOS: + +```bash +# Create native iOS project and run +npx expo prebuild --platform ios +npx expo run:ios + +# Or use EAS Build +eas build --platform ios --profile development +``` + +#### Testing: + +- Use a **physical iOS device** for best results +- Simulator has limited HealthKit support +- Add test data: Simulator → Features → Health → Health Data + +#### Configuration: + +Edit `lib/healthkit-config.ts` to customize which health metrics to collect. + +## Your App Features + +Based on your selections, your app includes: + +- **Local Storage** - On-device data persistence +- **Chat** - AI-powered chat interface with LLM integration +- **Scheduler** - Recurring tasks and reminder management +- **Questionnaires** - FHIR-compliant health forms +- **HealthKit** - Apple Health data integration (iOS only) + +## Running on Devices + +```bash +# iOS Simulator +npm run ios + +# Android Emulator +npm run android + +# Web Browser +npm run web +``` + +## Project Structure + +``` +├── app/ # Expo Router screens +│ ├── (tabs)/ # Bottom tab screens +│ └── questionnaire/# Health form screens +├── packages/ # Shared modules +│ └── chat/ # AI chat functionality +│ └── scheduler/ # Task scheduling +│ └── questionnaire/# FHIR forms +│ └── healthkit/ # Apple Health integration +├── lib/ # App utilities +└── components/ # Reusable UI components +``` + +## Learn More + +- [Expo Documentation](https://docs.expo.dev) +- [Expo Router](https://expo.github.io/router/docs) +- [React Native](https://reactnative.dev) diff --git a/homeflow/app.config.js b/homeflow/app.config.js new file mode 100644 index 0000000..43b08b1 --- /dev/null +++ b/homeflow/app.config.js @@ -0,0 +1,55 @@ +module.exports = { + expo: { + name: "HomeFlow", + slug: "my-app", + version: "1.0.0", + orientation: "portrait", + icon: "./assets/images/icon.png", + scheme: "my-app", + userInterfaceStyle: "automatic", + newArchEnabled: true, + ios: { + supportsTablet: true + }, + android: { + adaptiveIcon: { + backgroundColor: "#E6F4FE", + foregroundImage: "./assets/images/android-icon-foreground.png", + backgroundImage: "./assets/images/android-icon-background.png", + monochromeImage: "./assets/images/android-icon-monochrome.png" + }, + edgeToEdgeEnabled: true, + predictiveBackGestureEnabled: false + }, + web: { + output: "static", + favicon: "./assets/images/favicon.png" + }, + plugins: [ + "expo-router", + [ + "expo-splash-screen", + { + image: "./assets/images/splash-icon.png", + imageWidth: 200, + resizeMode: "contain", + backgroundColor: "#ffffff", + dark: { + backgroundColor: "#000000" + } + } + ], + [ + "@kingstinct/react-native-healthkit", + { + "NSHealthShareUsageDescription": "This app needs access to your health data to display your health metrics and track your progress.", + "NSHealthUpdateUsageDescription": "This app needs permission to save health data to track your activities." + } + ] + ], + experiments: { + typedRoutes: true, + reactCompiler: true + }, + } +}; diff --git a/homeflow/app/(tabs)/_layout.tsx b/homeflow/app/(tabs)/_layout.tsx new file mode 100644 index 0000000..2e2282c --- /dev/null +++ b/homeflow/app/(tabs)/_layout.tsx @@ -0,0 +1,63 @@ +import { Tabs } from 'expo-router'; +import React from 'react'; + +import { HapticTab } from '@/components/haptic-tab'; +import { IconSymbol } from '@/components/ui/icon-symbol'; +import { Colors } from '@/constants/theme'; +import { useColorScheme } from '@/hooks/use-color-scheme'; + +export default function TabLayout() { + const colorScheme = useColorScheme(); + + return ( + + , + }} + /> + , + }} + /> + , + }} + /> + , + }} + /> + , + }} + /> + , + }} + /> + + ); +} diff --git a/homeflow/app/(tabs)/chat.tsx b/homeflow/app/(tabs)/chat.tsx new file mode 100644 index 0000000..0f4a7da --- /dev/null +++ b/homeflow/app/(tabs)/chat.tsx @@ -0,0 +1,75 @@ +import React from 'react'; +import { View, Text, StyleSheet, useColorScheme } from 'react-native'; +import { SafeAreaView } from 'react-native-safe-area-context'; +import { ChatView, defaultLightChatTheme, defaultDarkChatTheme } from '@spezivibe/chat'; + +const OPENAI_API_KEY = process.env.EXPO_PUBLIC_OPENAI_API_KEY || ''; + +export default function ChatScreen() { + const colorScheme = useColorScheme(); + const theme = colorScheme === 'dark' ? defaultDarkChatTheme : defaultLightChatTheme; + + if (!OPENAI_API_KEY) { + return ( + + + + API Key Missing + + + Set EXPO_PUBLIC_OPENAI_API_KEY in your .env file + + + + ); + } + + return ( + + + + Welcome to Chat + + + Ask me anything + + + } + /> + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + centeredContent: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + padding: 24, + }, + emptyState: { + alignItems: 'center', + padding: 24, + }, + emptyTitle: { + fontSize: 20, + fontWeight: '600', + marginBottom: 8, + }, + emptySubtitle: { + fontSize: 16, + textAlign: 'center', + }, +}); diff --git a/homeflow/app/(tabs)/contacts.tsx b/homeflow/app/(tabs)/contacts.tsx new file mode 100644 index 0000000..0760feb --- /dev/null +++ b/homeflow/app/(tabs)/contacts.tsx @@ -0,0 +1,283 @@ +import { StyleSheet, ScrollView, View, Pressable, Linking } from 'react-native'; +import { ThemedText } from '@/components/themed-text'; +import { ThemedView } from '@/components/themed-view'; +import { IconSymbol, IconSymbolName } from '@/components/ui/icon-symbol'; +import { useColorScheme } from '@/hooks/use-color-scheme'; +import { Spacing } from '@/constants/theme'; + +interface ContactOption { + type: 'call' | 'text' | 'email' | 'website'; + icon: IconSymbolName; + label: string; + value: string; +} + +interface Contact { + id: string; + name: string; + title: string; + organization: string; + description: string; + icon: IconSymbolName; + options: ContactOption[]; +} + +const CONTACTS: Contact[] = [ + { + id: '1', + name: 'Vishnu Ravi, MD', + title: 'Principal Investigator', + organization: 'SpeziVibe Research Team', + description: 'Lead researcher and primary contact for study-related questions and support.', + icon: 'person.circle.fill', + options: [ + { type: 'call', icon: 'phone.fill', label: 'Call', value: '+1 (555) 123-4567' }, + { type: 'text', icon: 'message.fill', label: 'Text', value: '+1 (555) 123-4567' }, + { type: 'email', icon: 'envelope.fill', label: 'Email', value: 'vishnu.ravi@spezivibe.com' }, + ], + }, + { + id: '2', + name: 'Technical Support', + title: 'IT Support Team', + organization: 'SpeziVibe', + description: 'Get help with technical issues, app functionality, and account management.', + icon: 'questionmark.circle.fill', + options: [ + { type: 'email', icon: 'envelope.fill', label: 'Email', value: 'support@spezivibe.com' }, + { type: 'website', icon: 'safari.fill', label: 'Help Center', value: 'https://spezivibe.com/help' }, + ], + }, + { + id: '3', + name: 'Emergency Contact', + title: '24/7 Crisis Support', + organization: 'Crisis Hotline', + description: 'If you are experiencing a mental health emergency, please call this number immediately.', + icon: 'exclamationmark.triangle.fill', + options: [ + { type: 'call', icon: 'phone.fill', label: 'Call Now', value: '988' }, + ], + }, +]; + +export default function ContactsScreen() { + const colorScheme = useColorScheme(); + const isDark = colorScheme === 'dark'; + + const handleContactAction = (option: ContactOption) => { + switch (option.type) { + case 'call': + Linking.openURL(`tel:${option.value}`); + break; + case 'text': + Linking.openURL(`sms:${option.value}`); + break; + case 'email': + Linking.openURL(`mailto:${option.value}`); + break; + case 'website': + Linking.openURL(option.value); + break; + } + }; + + return ( + + + + + Contacts + + + Get in touch with your support team + + + + + + {CONTACTS.map((contact) => ( + + + + + + + + {contact.name} + + {contact.title} + {contact.organization} + + + + {contact.description} + + + {contact.options.map((option, index) => ( + [ + styles.optionButton, + { + backgroundColor: isDark ? '#B83A4B' : '#8C1515', + opacity: pressed ? 0.8 : 1, + }, + ]} + onPress={() => handleContactAction(option)} + accessibilityRole="button" + accessibilityLabel={`${option.label} ${contact.name}`}> + + {option.label} + + ))} + + + ))} + + + + + All contacts are available during business hours (9 AM - 5 PM PST) unless otherwise noted. + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + header: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'flex-start', + paddingHorizontal: Spacing.screenHorizontal, + paddingTop: Spacing.screenTop, + paddingBottom: Spacing.md, + }, + headerContent: { + flex: 1, + }, + title: { + fontSize: 34, + marginBottom: 8, + }, + subtitle: { + fontSize: 15, + opacity: 0.7, + }, + scrollView: { + flex: 1, + }, + scrollContent: { + paddingHorizontal: 24, + paddingBottom: 24, + }, + contactCard: { + borderRadius: 12, + padding: 20, + marginBottom: 16, + borderWidth: 1, + }, + contactHeader: { + flexDirection: 'row', + alignItems: 'flex-start', + marginBottom: 12, + }, + iconContainer: { + width: 64, + height: 64, + borderRadius: 32, + justifyContent: 'center', + alignItems: 'center', + marginRight: 16, + }, + contactInfo: { + flex: 1, + }, + contactName: { + fontSize: 20, + marginBottom: 4, + }, + contactTitle: { + fontSize: 15, + opacity: 0.8, + marginBottom: 2, + }, + contactOrg: { + fontSize: 14, + opacity: 0.6, + }, + contactDescription: { + fontSize: 14, + lineHeight: 20, + opacity: 0.7, + marginBottom: 16, + }, + optionsContainer: { + flexDirection: 'row', + flexWrap: 'wrap', + gap: 8, + }, + optionButton: { + flexDirection: 'row', + alignItems: 'center', + paddingHorizontal: 16, + paddingVertical: 10, + borderRadius: 20, + gap: 8, + }, + optionLabel: { + fontSize: 14, + fontWeight: '600', + }, + infoBox: { + flexDirection: 'row', + alignItems: 'flex-start', + padding: 16, + gap: 12, + marginTop: 8, + }, + infoText: { + flex: 1, + fontSize: 13, + opacity: 0.6, + lineHeight: 18, + }, +}); diff --git a/homeflow/app/(tabs)/explore.tsx b/homeflow/app/(tabs)/explore.tsx new file mode 100644 index 0000000..e6bf991 --- /dev/null +++ b/homeflow/app/(tabs)/explore.tsx @@ -0,0 +1,118 @@ +import { Image } from 'expo-image'; +import { Platform, StyleSheet } from 'react-native'; + +import { Collapsible } from '@/components/ui/collapsible'; +import { ExternalLink } from '@/components/external-link'; +import ParallaxScrollView from '@/components/parallax-scroll-view'; +import { ThemedText } from '@/components/themed-text'; +import { ThemedView } from '@/components/themed-view'; +import { IconSymbol } from '@/components/ui/icon-symbol'; +import { Fonts } from '@/constants/theme'; + +export default function TabTwoScreen() { + return ( + + }> + + + Explore + + + This app includes example code to help you get started. + + + This app has two tabs:{' '} + app/(tabs)/index.tsx (Home) and{' '} + app/(tabs)/explore.tsx. + + + The layout file in app/(tabs)/_layout.tsx{' '} + sets up the tab navigator. + + + Learn more + + + + + You can open this project on Android, iOS, and the web. To open the web version, press{' '} + w in the terminal running this project. + + + + + SpeziVibe uses modular packages in the packages/{' '} + directory. Add features like chat, scheduler, questionnaires, and more using the CLI. + + + + + For static images, you can use the @2x and{' '} + @3x suffixes to provide files for + different screen densities + + + + Learn more + + + + + This template has light and dark mode support. The{' '} + useColorScheme() hook lets you inspect + what the user's current color scheme is, and so you can adjust UI colors accordingly. + + + Learn more + + + + + This template includes an example of an animated component. The{' '} + components/HelloWave.tsx component uses + the powerful{' '} + + react-native-reanimated + {' '} + library to create a waving hand animation. + + {Platform.select({ + ios: ( + + The components/ParallaxScrollView.tsx{' '} + component provides a parallax effect for the header image. + + ), + })} + + + ); +} + +const styles = StyleSheet.create({ + headerImage: { + color: '#808080', + bottom: -90, + left: -35, + position: 'absolute', + }, + titleContainer: { + flexDirection: 'row', + gap: 8, + }, +}); diff --git a/homeflow/app/(tabs)/health.tsx b/homeflow/app/(tabs)/health.tsx new file mode 100644 index 0000000..0bec541 --- /dev/null +++ b/homeflow/app/(tabs)/health.tsx @@ -0,0 +1,48 @@ +import React from 'react'; +import { StyleSheet, useColorScheme, Platform } from 'react-native'; +import { SafeAreaView } from 'react-native-safe-area-context'; +import { + HealthKitProvider, + HealthView, + ExpoGoFallback, + defaultLightHealthTheme, + defaultDarkHealthTheme, +} from '@spezivibe/healthkit'; +import { healthKitConfig } from '@/lib/healthkit-config'; + +export default function HealthScreen() { + const colorScheme = useColorScheme(); + const theme = + colorScheme === 'dark' ? defaultDarkHealthTheme : defaultLightHealthTheme; + + // HealthKit is iOS only + if (Platform.OS !== 'ios') { + return ( + + + + ); + } + + return ( + + } + > + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, +}); diff --git a/homeflow/app/(tabs)/index.tsx b/homeflow/app/(tabs)/index.tsx new file mode 100644 index 0000000..566ffc9 --- /dev/null +++ b/homeflow/app/(tabs)/index.tsx @@ -0,0 +1,88 @@ +import { Image } from 'expo-image'; +import { Platform, StyleSheet } from 'react-native'; +import { HelloWave } from '@/components/hello-wave'; +import ParallaxScrollView from '@/components/parallax-scroll-view'; +import { ThemedText } from '@/components/themed-text'; +import { ThemedView } from '@/components/themed-view'; +import { Link } from 'expo-router'; + +export default function HomeScreen() { + return ( + + }> + + Welcome! + + + + Step 1: Try it + + Edit app/(tabs)/index.tsx to see changes. + Press{' '} + + {Platform.select({ + ios: 'cmd + d', + android: 'cmd + m', + web: 'F12', + })} + {' '} + to open developer tools. + + + + + + Step 2: Explore + + + + alert('Action pressed')} /> + alert('Share pressed')} + /> + + alert('Delete pressed')} + /> + + + + + + {`Tap the Explore tab to learn more about what's included in this starter app.`} + + + + ); +} + +const styles = StyleSheet.create({ + titleContainer: { + flexDirection: 'row', + alignItems: 'center', + gap: 8, + }, + stepContainer: { + gap: 8, + marginBottom: 8, + }, + logo: { + height: 200, + width: 200, + position: 'absolute', + bottom: -20, + left: -20, + }, +}); diff --git a/homeflow/app/(tabs)/schedule.tsx b/homeflow/app/(tabs)/schedule.tsx new file mode 100644 index 0000000..150177c --- /dev/null +++ b/homeflow/app/(tabs)/schedule.tsx @@ -0,0 +1,73 @@ +import { StyleSheet, View } from 'react-native'; +import Alert from '@blazejkustra/react-native-alert'; +import { router, useFocusEffect } from 'expo-router'; +import { useState, useCallback } from 'react'; +import { ThemedText } from '@/components/themed-text'; +import { ThemedView } from '@/components/themed-view'; +import { useColorScheme } from '@/hooks/use-color-scheme'; +import { Spacing } from '@/constants/theme'; +import { ScheduleView, Event } from '@spezivibe/scheduler'; + +export default function ScheduleScreen() { + const colorScheme = useColorScheme(); + const isDark = colorScheme === 'dark'; + const [refreshKey, setRefreshKey] = useState(0); + + // Refresh when screen comes into focus + useFocusEffect( + useCallback(() => { + setRefreshKey((k) => k + 1); + }, []) + ); + + const handleQuestionnaireOpen = async (event: Event) => { + if (event.task.questionnaireId) { + try { + router.push({ + pathname: '/questionnaire/[id]', + params: { + id: event.task.questionnaireId, + taskId: event.task.id, + eventId: event.occurrence.index.toString() + }, + }); + } catch { + Alert.alert('Error', 'Failed to open questionnaire'); + } + } + }; + + return ( + + ( + + + Schedule + + + )} + /> + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + header: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + paddingHorizontal: Spacing.screenHorizontal, + paddingTop: Spacing.screenTop, + paddingBottom: Spacing.elementGap, + }, + title: { + fontSize: 34, + }, +}); diff --git a/homeflow/app/_layout.tsx b/homeflow/app/_layout.tsx new file mode 100644 index 0000000..354c4de --- /dev/null +++ b/homeflow/app/_layout.tsx @@ -0,0 +1,64 @@ +import React from 'react'; +import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native'; +import { Stack } from 'expo-router'; +import { StatusBar } from 'expo-status-bar'; +import 'react-native-reanimated'; +// Global CSS for web (theming for alert dialogs, etc.) - only processed on web +import '@/assets/styles/global.css'; + +import { useColorScheme } from '@/hooks/use-color-scheme'; +import { LoadingScreen } from '@/components/ui/loading-screen'; +import { ErrorBoundary } from '@/components/error-boundary'; +import { StandardProvider, useStandard } from '@/lib/services/standard-context'; + +export const unstable_settings = { + anchor: '(tabs)', +}; + +function RootLayoutNav() { + return ( + + + + + + ); +} + +function AppContent({ children }: { children: React.ReactNode }) { + const { isLoading } = useStandard(); + + if (isLoading) { + return ; + } + + return <>{children}; +} + +/** + * Root Layout - Local Mode + * + * This is the simplified layout for local storage mode. + * No authentication is required - the app launches directly. + * + * For cloud authentication with Firebase, select the Firebase backend + * when generating your app: + * npx create-spezivibe-app my-app + * # Select "Firebase" when prompted for backend + */ +export default function RootLayout() { + const colorScheme = useColorScheme(); + + return ( + + + + + + + + + + + ); +} diff --git a/homeflow/app/modal.tsx b/homeflow/app/modal.tsx new file mode 100644 index 0000000..6dfbc1a --- /dev/null +++ b/homeflow/app/modal.tsx @@ -0,0 +1,29 @@ +import { Link } from 'expo-router'; +import { StyleSheet } from 'react-native'; + +import { ThemedText } from '@/components/themed-text'; +import { ThemedView } from '@/components/themed-view'; + +export default function ModalScreen() { + return ( + + This is a modal + + Go to home screen + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + padding: 20, + }, + link: { + marginTop: 15, + paddingVertical: 15, + }, +}); diff --git a/homeflow/app/questionnaire/[id].tsx b/homeflow/app/questionnaire/[id].tsx new file mode 100644 index 0000000..084fd82 --- /dev/null +++ b/homeflow/app/questionnaire/[id].tsx @@ -0,0 +1,168 @@ +import React, { useEffect } from 'react'; +import { useLocalSearchParams, router } from 'expo-router'; +import Alert from '@blazejkustra/react-native-alert'; +import { ThemedView } from '@/components/themed-view'; +import { + QuestionnaireForm, + QuestionnaireResult, + defaultLightTheme, + defaultDarkTheme, +} from '@spezivibe/questionnaire'; +import { getQuestionnaireById } from '@/lib/questionnaires/sample-questionnaires'; +import { useColorScheme } from '@/hooks/use-color-scheme'; +import { useStandard } from '@/lib/services/standard-context'; +import AsyncStorage from '@react-native-async-storage/async-storage'; +import { createLogger } from '@/lib/utils/logger'; +import { SPEZIVIBE_TASK_ID_SYSTEM } from '@/lib/constants'; + +const logger = createLogger('Questionnaire'); +const RESPONSES_KEY = '@questionnaire_responses'; +const RESPONSES_BACKFILL_KEY = '@questionnaire_responses_backfill_done'; + +export default function QuestionnaireScreen() { + const { id, taskId, eventId } = useLocalSearchParams<{ id: string; taskId?: string; eventId?: string }>(); + const { backend } = useStandard(); + const colorScheme = useColorScheme(); + const theme = colorScheme === 'dark' ? defaultDarkTheme : defaultLightTheme; + + const questionnaire = getQuestionnaireById(id); + + // useEffect must be called unconditionally (before any early returns) to satisfy React's rules of hooks + useEffect(() => { + let cancelled = false; + + async function backfillQuestionnaireLinks() { + if (!backend) return; + + try { + const alreadyBackfilled = await AsyncStorage.getItem(RESPONSES_BACKFILL_KEY); + if (alreadyBackfilled) return; + + const existingResponses = await AsyncStorage.getItem(RESPONSES_KEY); + if (!existingResponses) { + await AsyncStorage.setItem(RESPONSES_BACKFILL_KEY, 'true'); + return; + } + + const responses = JSON.parse(existingResponses) as Array<{ + response: { id?: string; basedOn?: unknown }; + metadata?: { taskId?: string }; + }>; + + let updated = false; + for (const record of responses) { + if (!record?.metadata?.taskId || !record?.response?.id) { + continue; + } + + if (!record.response.basedOn) { + record.response.basedOn = [ + { + identifier: { system: SPEZIVIBE_TASK_ID_SYSTEM, value: record.metadata.taskId }, + }, + ]; + await backend.saveQuestionnaireResponse(record.response as unknown as { id?: string }); + updated = true; + } + } + + if (updated) { + await AsyncStorage.setItem(RESPONSES_KEY, JSON.stringify(responses)); + } + + await AsyncStorage.setItem(RESPONSES_BACKFILL_KEY, 'true'); + } catch (error) { + if (!cancelled) { + logger.error('Failed to backfill questionnaire responses:', error); + } + } + } + + backfillQuestionnaireLinks(); + + return () => { + cancelled = true; + }; + }, [backend]); + + if (!questionnaire) { + Alert.alert('Error', 'Questionnaire not found'); + router.back(); + return null; + } + + const handleResult = async (result: QuestionnaireResult) => { + switch (result.status) { + case 'completed': { + try { + const response = result.response; + + // Generate a unique ID for this response if it doesn't have one + if (!response.id) { + response.id = `qr-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`; + } + + if (taskId) { + response.basedOn = [ + { + identifier: { system: SPEZIVIBE_TASK_ID_SYSTEM, value: taskId }, + }, + ]; + } + + // Store response with app-specific metadata separately + const responseRecord = { + response, + metadata: { + taskId, + eventId, + savedAt: new Date().toISOString(), + }, + }; + + // Store in AsyncStorage (for offline support/backup) + const existingResponses = await AsyncStorage.getItem(RESPONSES_KEY); + const responses = existingResponses ? JSON.parse(existingResponses) : []; + responses.push(responseRecord); + await AsyncStorage.setItem(RESPONSES_KEY, JSON.stringify(responses)); + + // Save to backend service if available + if (backend) { + // Cast to unknown first to satisfy TypeScript - the backend handles the actual FHIR type + await backend.saveQuestionnaireResponse(response as unknown as { id?: string }); + } + + Alert.alert('Success', 'Your responses have been saved', [ + { + text: 'OK', + onPress: () => router.back(), + }, + ]); + } catch (error) { + logger.error('Failed to save questionnaire response:', error); + Alert.alert('Error', 'Failed to save your responses. Please try again.'); + } + break; + } + + case 'cancelled': + router.back(); + break; + + case 'failed': + Alert.alert('Error', `Failed to complete questionnaire: ${result.error.message}`); + break; + } + }; + + return ( + + + + ); +} diff --git a/homeflow/app/questionnaire/_layout.tsx b/homeflow/app/questionnaire/_layout.tsx new file mode 100644 index 0000000..e778af0 --- /dev/null +++ b/homeflow/app/questionnaire/_layout.tsx @@ -0,0 +1,15 @@ +import { Stack } from 'expo-router'; + +export default function QuestionnaireLayout() { + return ( + + + + ); +} diff --git a/homeflow/assets/images/android-icon-background.png b/homeflow/assets/images/android-icon-background.png new file mode 100644 index 0000000000000000000000000000000000000000..5ffefc5bb57a3d7b39ec6ff4e96979226522cc49 GIT binary patch literal 17549 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

f!0B z3<|w+#<+5X0eG-Qzx1~Tn|IKb)3Bf_uVnIQ>h{nEqoZy%b9m(5D#%uiN9x+R?&u|X z1|ffpA#6;ts~G`mLR165iLn{N@?q^l@nZ!ff44uxJtN>Z;fbEo>-#FsFPwoOj>Mj+ zApMCzHS<5T{-@sGsl*gRuBx)pXjw*CoCVzybH)2RYeVwEiXub?-e2btXYU&^N{-^( zAfoW)hR3&J=6T-aq%S7O`G@<3uHwhTmFSaOnytiQdJDCN(c}VTxY!9UdBhsJKN003 z4b$%V5&}3D5)H+q==4Yq>7udnzF{ZYO6);yeYP)az2!Fi@53{3_HUfh#rwoXf3Y{M ziswfdlVS;HxH3&(n=)9~W1m@}`!@?2^gzL91G}OtQ_sM#XGDr%$A%*f{)2EZy0CfR_SZ$v;oGYCCOZ%jXZm_|^$2A=-AqPc?`_LY8KKTq<3Hny|A zrOw1j+Pt!@6~uL`%k@5?2XGWM3S3d)X54I-1>zy@j_?pOaS4jv8 z5LsQrP^UKQka#g82NW&y$B2^o{gO!5vtnv# zh}R_LHx$mQB)xf#TwnL#73DpuAHn=`v}2bZ0RJI}m^v*Hd_6hoR6 zUFcB$$)%?!)`^iynZI|jH-yrG<3P?_l{9_$xnEDcj2<)&l{&{~#;0Xz~L zr1ido2421^Q))vT92}d*E)2*>o!=c@UE|0?jvgZ#2gQB|9)<-Q_59FX$uUlvq?nE? z+IwOz;l)${Dk4i8=9JD9s|pirMN3}cBgh08Sdf$YdMFM6_IwYzJ=<J^a0 zS)+9$>cSsGakwzo9Oi&RTyldoaiTVZHD|8VoGKr^zs~Kg9e9x(>COWm)p9aK+hZBw z2KsQF^|<5w171DyUg>06G#e6ayOVr?yX0|go$vbfC)UWwPl=2Z-o?})-1D%0K?&fY z(0ZEud?WdrDee$AqpKg-6$kfRJ2(81z$inB}7of#cpAw;ZjUE5S&+M7Ru!A#f`&70{9FdrQ;!c@#RsRK-d z(qc$IS*goSPsH_?qv|W5UH=)g`Q0RjE{ei{Z^Y`-+~%YMR~=J4V#!>!HJ^#2VUjh# z7d%NTSHy~v6eOM~NGJV1?H-MsMNqkX_`*5+p&rk{ZO}HBz_sk-*}_iO1i6)vQ>GAH z)t8&oOt%F48LnA4ce#HEB=|h6pfFHs8)@)1Gw2=geU_u#fIe+k!eeLz*uAqu6w4B3 zb=$N8@u{8m>iqa^e~erhtN3|-Rf{jtT*noXbF$pt!y9>sssF06fjsb7Fk6boVrk_7 z*EjT5-R*Zo^dlhj!9UWMaQbU2viRAZgPyJBBFIe+gxy& zPEU#PS90<-NemB4HAAU-hkhzdJSY`xw0R!rNLCWfjsY<)rlDsx{P`j03Em$Ma}ibi zp~}p^5YD~`u7jEXTBJ%4fQdhhDSJ|wrN+NRnl0QLgu-W*eZ#gf^*ZYII%_D#Ed=@d zG`ky?ITD+Gc2v>cfS}JORu|n^j%1DU)??KLap>_g4jS}t=j7aeSAUX~%l(Y3D*P^o z)j;ss~#i%`GNMP0}%ex0qSy5V0h(_ z-cSqpMQlClxlRN#NE(3?Ryb6z*)ez+yq`o;*A^T19D7EtsA?$Wv9R#teiTfV4@Om{ z;p5PN%GC{O<9&7@qrX!dSw~cnNiua-ItIs{@~dKG=GpxSU2rn06R0%^ik8(59%2>K zH9V_L?({aNp}g*`3%f|W4DE6ejzs?yPw6Vt5bZC-k>b%+r`VuTiap>s??+QC(dYZG zKgSj+3$!UsnYxeVMAC(k>8A}!3g+$jK zwX!4<7|sYxfYVU`R#2IKleiNF_9BkoLmn(H&o>%MphEICjp_b5H}Bs33W{O(f&Qtr z$^8eEkPt%_W^Qc+%}#!xY;8SCxYQ%QU6Y$~Tk83HU}Sau&KlpC6Tg8|BB~mFDECzW zW7r|D#yqiGLFSwDLkaq30e#oqgL-y$EgZRjEwlsuI==2B)?KcwQJcKSKTXtCQ#5~k z`p=>MX|K~V#QAcF#hS3o>M^dc25YL_20wL&xP5>oIbk9fN%BXZCX?j zsXmfe!!-JO1%~QeKSHYH{`u;Q;f`0TiTbU;Mms`YDjWVJ1f$3;?Kff5IBD>Eye(GPVSYV>E(nokW8!BHR;%?gM&tT3!)PDc{`&?mpX2&q3!{ZS?V(#3_M+Mv)Q`fHNd zR$=jBKlfzYQpES`8kr-p*0}64;505sTpsSH4A0P)u2ivq@ytg4@W_LANa_@Mv+%1g zUHO3&$JoJP^7t29?$3*BURKa-*mj!|B*Dc^N(3mY!*wag z&Z78*bb3a=jm2DP`U$@68ntw{6ZJ)C7|QPd{ctE&bQXHCS}X8=M5OAcSz%U`4ftC_ z&V8q@Rupu6hNyF)Dar~q-I0v!Y&ju9*7SPQ7kM-KmFe38ljnLVjIL|GHp=69q)Y#mY&mqN_8 zxI4KrcpU4T0JIH9Ee4t+ap0@yZtgvgo(T!%-|{$PWz`~dZ_&NK_bx$EZPtpCyfO*> zZ`<&t>Xlyx_+|r->;Qq1ThRFUrrRy4!$jl5F+7i~MhKgJx!d0(+N)|^-~P&zf8eXMO__9c#x&8M z*kB=0c~SwIh2WOQ1VXJ9MGpt}^fbPWO4tq{%V#44d86ll9f7$JRHebfOZvK`9xP5E z_ZLe=4ld$;ZBD)S*pf6hV$lHCG6wACEkE_A5Lt4CBkHq!=Xd`a@JOb@ZzRc)(_H1W zK`AoS8Vo@PjEmPVGY^iA)<=-u2~=;4)rf#1!OW%?FUi{damv%77|yo=g%VHvV@tu#z zgZVM#p)r=Y1wvE~+LUpBoLOMUnY` z4G_xR_8Pj(9$a{D6__cF+PwL1KykNd-+t_b7Y;OjUd*cWCY;%*v1}XfZ&KZ3j%>qg zHXd-myQS8q^ki8#EZ`O;!;-(|T))|eWjtVSJtDt#fgQ)Tf)d?Y()*VZo%$!% z4gaj2!avk;JKQ~c3a6J3$mHXwkr`A&wuh9dlLJz*ndoRuv-8yqsrwWEm;RqtS&m)A zJx!K^-(H&8e!7XwK%m=)k*u6ZJX5LnFN)5mrv{?Gv{>?)zYc7bVnN0R*U~HQkM&=0 zHi$hqF^hpa+#m9856VV0I>m%Qy??R=fq$^F7+$IuG4^3o0Ujwjcl1i&QL3Vk1OdP0 z9)Cv!ZAl3y+h`@0f~MrYem}LFa|`SBB4M^x5cQ8b`-P!^23H7gv{znOU)jbJ#L82B z3*Tfx9f;7kS<65>{Q7C|6V7kEFvKiG48ma&ISQcr2ar6K=b|PeruNs}_PuTn@0-8h zId<8t2z_1ahAQ^$PaC&&Y$`igBG2kOE7Lv7)(+ozX~VcDl@i!`CSkbI;&bR{$3TgdG`xXZArCfu zAEIMkE0KqfPEXuFZg~&%fI}E0K4GWKN@rDgIZP+eS90_Y4msHR=g;ZLwyf92(glMl z?Y{I~z2H=TImhasxv^S1pUo-ke&^qnX4v5G=$79F$LTx`^Cf6L{Htcd%4(ww|EuZ~ z?)1z>QB`BuET*nihkrcy)6TH@r4Af(oA`KQ;FZk}*G+W0w`qX0M1{#I2%1G5!UR~) z-x$v-V~Pf{0z~<&s66jBzrl{EmcmOmsnI@wwEfP`bXE_&^HQDeQp54=OB_CuY9a?s ztF-z=Z~=+f_2g{)j~*!mDBqGLTnT|U_F#Jtfx@$b?0*wU%z`6ct0;v#;ap(N+6)mS z6%ds*5!)N7u;)S4$b4Tq_+L*49KIZPXJ|JY12qKf_OHK@tun4v=$!u!Y((Jx;DXXN zP8tbjApx{W_InMRm1vxz3gfUi_Y)SeFR(fyZ;r1!QkT&%Izv-9_qq!F#nqONV^(K; zkt!~{26@|7Lvrgx|DtixNsy;R+|W8SAHOR?ohc?6=s89E`FlO4kQbf(FR*ZAo1d|WJ ztZ3oVRTh*>*F~zrOK)=|+wzh4)nC4>m*T-bJP$65z3`>Z)n!=|@L+1%C{*NXiIa8<&X138LmH?r^_* zsI1}m+Jveu_Mrfhc#9lW1u?d~)L;zwH7I$kz!pxMKbD5$$yNi}9C<>i$&xQmsCMpA z4MS#_qitW3ZzrosDMlf%fO4z|b> zYk<<{L5H6RkW4bH+lKGrbZbb3zFvf9u02F6^JZpWn{|RM<}t0Nh(v^h)*8y!d?mzui8zc9 zhkpM`v)>;>510JjWIrL=ch?uH!VQdI#Nm0%7p7?;TE)riim>c_fA9%m8tjIf8}kcn z{~J50A|&4+s@Zp3(f=wtDCx>Qer1Xw2@v5QsekX|6p{zdlIO_x2@GnVYAuC!QXDS} zSz0C%@{Z<-jDarSMiG~KV@2*uE`BT{7oNqmqA04r;?;{;R@0S>DQLj>Z)hR{;v3KC zryCeV%#4-agBz28W&ducJ+J8`;(h25^b>UmaaQNe<&>K;%$SazQj;)e8cKYogmfkf z+^AmL-+&UQ4y`I6|!$#S#kBU zN*n?FIojkSoziPIVhjL=XKIhe7I`HkKT?phkKyulXmz$2Fi^6WDARXS*0St z`ML$YN*>kEq|Zc{BXY~Bg|c{yB*L2WGTIc&XSk08<8Q&#=x@=5^}>PJnTM!@Z+Z6j zd1U+hN9{DIQ*kqwxzHF2&liCFQ4-LZ_Ivw zM;t^Q4;Uo|SW=Mb2N^#RTxFv3nkF|u5_wkejU<74Z$$*nxWlOTb8#ImN3t0!us;{s zbnSblwOp}d;1AGt60-A7Yx9_T3Yjp&(|^$qgRFNDtmkCAUBwj`{PxL<)Qiv1ujufL$5!FgIkIXF%%0|AU)#ba-OUA`qo(0P-@q%qE zQXXbExe^#WD~$E$qpoMFz2+f-;$*9lZP^&a1X}y>dT;dS@bXWHN z(zi!v}&EQ~XodjOHa*isq66pl5o-MK>_nM4fQ@s05hX=El5uS%?-+-4f5h)fr zxNmgRwO$^4TN_j6IF|5g~5umndmK{Z8Cl zQJ!!X@sbtSM4qL~OBd;3@IYw6mlhU$@%S{n(};18>ACf&$bEVq{jX`Wz8o_gROryn z&BC1v!rV^d<~zdXw7ivk<{AddEu{SCFFbYdZ)_UivNnl#LuHq`Ug*#nM%f5?YwbVF z?!&5!SQvE9ugB9FqHb3)xnNS~)?W86(p3sBrbNMjlpzb@?ijE6aPn_SkkfbtI3D=W z#WU0Y$I@A_Mb&;?d}ioQX&6dEy1N^ZR3xRlyBWG$Bt$|=Q9!z5knWHNknZk|i5LIZ z`xW-N&wbY3d#&GD3-p$^r=D9Xu`mT_UVz_pULECTVvKlqyy!Gh5N{P!Wz$XK?32hO zr(=vsc(=PKMP1`Q%Js5E;S&n|O{k-3=A?(^H$DC0Wf8}%dXN2eZDoZSgv~+GHYh4X zbl5Pn^x=7n>{@#rvxl8oMkd19ZZQ49-FCq?z8YK#oH9)Od++kgXEJd3eq!7w^)HTS ze~dS9tg>f@;8I2##j@Ys!Je{Cp{(9Mh9*PZ*qoSe2B3Zs6_W*ch8(!iryBc<*!d)jw1p1z1Gs6)$ z^vJ6~-AQ$$#Iy*bA91_&%|Bdx9|EgH|#KqGB9{M ze(4&oGY4c2b$N4se>tVT8&OYjO-s>7`TaYQI=qJ;PEaLr@sg1ps7ncDW|w>Y4wWvK z*(D5yb;-3%F=i(P%xb5Y$~9t)8Ss?#@FTJ@l|5T9sG_TL$KaWB;I z$9J5*+3G*@3vUGjYIdmT&3*Fy8A9g4A8%e zq7J+S(Z4&g3Fi9v*Lj3cwAae}CI7Ck1Zn%mu;@;o%-1QsS*L*9tqkQ%PZVlqbg;Fw&q(!F`Mj^&U2nhYrGjT`V};X?gmCOR5R{xcd0bU zxm&LfqVd?_C+S^F`?NFj`C@Y(3vi1l!nk_+b2r|<=h1=MW^`CVE)bqHf?`PXX`hJ!>CiHKXHoJ{%x&Foq@?+_BRP0AMC0Rn>dU!ZS~Kz#MoRq zu%zsq2dR1%ZHu`^1fa2Z@;pk#Sot>1GuA&RK34l@`Qvm^W1_sbxuOU^GNt4C1it)i z5x_XW@He%N?%H%@0!@Hf0w1q~B!m%>0!s#6fvu%Ra?btx!b;WB=`B?fXn?S;V3Vp} z-+9!rpgC`2_}*53O$jqte^PcbyS{WwY?pBDu)=keG^eEB-O2?1)`dDaV?~V-`l5Qb z+u18#KRyPCZQHyqdgJwy^QW)_rR+si^uId?#q!-9*l@{V6U@W6%DD-esximT5FuWz&@;3l(>rkU~x z?PhQqfVf%CXjCusKq7;ln9HizIu{Pz;*1B)y<^JPJ>t1pL#?o{4Cq>dR_R7_!cc1=x~f8r8UHFpi?4Hat8|#fP+Zs z%)EX7>`YO2A(^riNxj;pU$^X#ZGbQ887~!=lt$@^(;~iE+6t|8Clsg8%yaLpRM}R? zk|5RWB6-k!sTJ{)#Z^>9CM-S^ zp)r}Va(K6V?963JX72ka`YCFP&)K9?9i%fV`f|jZlLK{=Vcj94*(69E{jH?M|Eh(f z2G4Fp#wLttPoYJMeu1a_S(_NS1Q4w`PuE8_#l}I*2bHN@+g&F8EkzXmJavb4`#99WTc1cDtHUBN|_015t#Q>}c=T5s2V z3J-F*z==oDm&HB%!e%S6%RBu#P-(G&xWO0-VPxtR#g|XF8Voig51yR8(5lZ?gI$e2 zyBw^_Js1fVebsFp`ndSZ-h6T^^!pUm$CJ;Ci2Go79wQmwcD z7BIgV%V0aw39juufn3dqs_ZE4davIvBj#xo1HPliww-?@L7`S|$N#j+d$Z<$FsXgA zMi{@kZ8KXK^RS*{LYbl*w_$0#)u9Z-15>NA6Q~-=#MG5lKdPve zL7W45yzZ;LsrK8yMTIr|#pBD|8KhPm=JG$ph&2}BhCgK^3h$6JGNEn@EfDakfwd6z zqX?a7@On2qkpR};4ZDP_nYLd88<8+0#Ebl$WP9ZPfa%+_cQwxtLNb{zk$p)^MBvA0>ZK;fV zb#E=*`T8xZ!l#-OBf1u-6p{T!e%qKc-`8!%P;2DZx#kPr5cf2vJEgSj)Xa z(LRxBgfm=0a;-n$;lWyGS9~`R)gffF2-fF1MqAg&t@$*G1fM+olGtHAz2_Fx44^}2 zQF^pA_@ajEr72SHB|Gi5ku)^-S+@2U#W8Qv?O)k8#UHQp0j2o+mbv&^2gg6i05LV0 z;v&wX6~`_b{F#h8NqX)v%3_{{W<{rBdf$FaDBj&6_uhB6cHd-Uh>jCFxR>v)7uZsU zF=?0B5WvQoyM)%@+i>O&m}hv=q|_kejbig=`pjcU?;6!zB4Yr|wZl#DNp+D{jVJui z)A7DP;xwfW!+-1?-jbB}qNgRBcu>trPMU{SV9ur}>GgIU;5FLozXO?jI0R_y;;t-0WcAF+n2$$2S4CuZGD$g%%h3;%3MR~c&(0V7W!?Qu%>qV zF=BS5e_`e^B^NT6sSs%33h*TyJQ3f%`YS$1C+)FO2seRjZ3Wq%JNXa{bblzin)xAg zY1FAhVUYDVFr8e<170Qb_>%$bZGj@RP^~qXb{}kVm9`=4KPdz;NcN>oJY5zz80sOy z3uoI3(sPnG?4s}m+(Yjub|i>_>c^11C}y=_97<3h2$((*n@uMBK9_K4~2NNEVihYyFJjH&12|Xn|#Js0aM6L+fkYVMkcQozp?Uh&qIJ5Fg zg|uy+>nQraIx57#*BA8Lvh*e)xrkU&ZgoUKwAqzd?tL@*=*3`YaOFTli2$uD+7pJ4}-!dDyCtGqCra^}GGN|}RQ?FJX#-H^{(GOJ6x5qpi09m$opjx{;vojTCllYUku)nM z=aa$f@sNO@z;cVeVo{BgE97pXN1zE&4J|!cSqp&}kW*eEqao|hcuql6B_5&P;~Gn@ znY!uKmO%<=SEqHlRM0o!p2O$TdVR;I_CQT4tujdWk|_X~5RzP>zfvZa$`8{_4Kc@Rlq-+;6Wa9KqR(TTyRf%7UmSF z=%G4YTt4s$rs>*22F(ys$n6pw9p9iRg1CU6GCg#825xn}oQ&?CawGFV8hPHq!a=Z?GvN|bO;HUqA za;wTu^(9PTAJtts{#Wgl!=ZH_XV~R)+oZVv;-|m-S0kr4(-3|HW+js8s+*}1;=K18 ze8D}7z|eE4`_vjq%Je~ce z_8N6|xy8;k;;dTK1dJ|Bj@Q_iMo?PT#|M22hxpY7Pr%se%MZZ`r@W)dtNEX45{J zZ%$dP)A|vJcf-`>UZRhAgQ?m52rV-zZX|UhgHF5J?Ce0-a(z8W| z+$ybG$hnX4FWBmj2KTNzkwbP~uE+#jy)zz7v}(-Nmcdmj;Um*`{ebUPO_w*WCVu@) z1}kxRPLr@ZMCOL&#{GHuaaQoz$B@>h>#d!(84q}d))i>0>Q+|VysAY^KeLb~JCXS> zc@gfZ0}v$^#HSyS&hp;CvxQ;wzO#^6BJ-`&Ux8fX)v0`gxn51PH{Tu_`)l%@MK80H zAwDfyQT8N00FwX##sg|qpiCyGUtni3nk-g`qhBhikTE+Y?@rjwQ?4Y&+?T`?-76J- z(=zn5A6ObVl_W=yD};?8LTH}Nu}KFP+g<;X6D&Jx=4QRVJiG1zR;N=MVz_ZL+UzQfRZVCG7}IZiSazL_TP0pp*ttFe2+Id(i1py zu)Vgc8dTn6RKiFm>n=7I2WJDxpU7H<1QYSNnZXI7Ix7`9^mWy$rLu|u-v#W!DCwk| zic+mD&(}>w@k&4NwB4xtx}z~cmewYOtm6t3T`6v>27!OvB60M#1L%1FOZ8n9H2Gda z=-Mn3X3Fh6M*$Vtr_O%Ca<+%^o>bVnmHpX?EtWCf+=0mFJ7W@}!yulEXduga5k4e{ zk#$oBC)Dr$YGX3M%hD)@-wt$EL$9PmNwq|4n8H>26il;C!OuPwFcI&b8#YN!6?};4 zuCRj6;+|zauKfc=*`3t!X0MMNv2e9Hk=5(8XSOgAcT}!jpvF_ zfU%T3hmLJfsg0HGQVS%XQifeJi%d>>ubB`YoJ4{(HL>p;RKDO%$t5TkY+l*Z*n2 zlDi@8Rn2Bm%HQMqp_w3lg_o_FKwe9YV9S#Cakk2jGqmq3J%YLBkxVLWZ!uWQj2U{K zty?UOX0LEcFGXv&T*QFdrMsI%8~L*Ys<0>MG>efAO~IZ9ijZeQD0274EcnK4?#s8# zuJOd;ReO0wJY~A9obqq`RCBoP(+zhMnedFKWCA0j!S10l$5g2c|7 zZtn#WbB$i?zk~w#9X#$+uiB&?R9t3=llYCHwbSG~W+@0UF4=UMTG)<(O~=cW^IVm1 zD&R7n+~BlQ0hN8s6}fqLr#C1wpE@`+YAAm1(`!_eFIQm`v2N0K+h{UfVarJqjgfJ^ zMe=;E&+9^$+C`@L^*>(qx0Qq-2^>F#0f%QlhbR;MUxc>{)g0FpZrG*=!E=s8i=q@) zme@>fn!Ft8VUH8vDEkQh)A--rIN4x4ZrmTlCRr)6_LhL9`eN)?5SQ|W;HijF0s?Oy ziNi7QyIt{?q~wg5S~~?GY;(=dcsCuyD&$x_@Pxf3r3O^t{x4SdRkJP`@3IbEFxMJm+^NXhF+UV-6Z7o~ZWt*0a9cC(UvAktK)|4CIK#31%Fav`;okrHrE5Dl@97&T;rU8VY9{+V4`$+K@& z`wow_-DOzttLlCTX&zi$NSq4WLt7BbYuI8RHMKtnXGH^-gIB)3fhBF))YVjBJJYLZ3WqN zLeS;X>1r&d2%nuN(2<(Gvs%3t@-K*fW@uSFJt;xlwR2dG2}FS*&s!5IcM!U?>@qb~ zE^U~Vws|6b7V2dx@>coovHz}yu-XBgO4=FM4#;@+k-Z=I!>)?cER7^Ak(pYaGLC;l z3x<^|k*1Cj6G%5~dR`;ld0cuzY)qEJOQGufxBqR*hHjX<@cpjp{ZOVC$a#p#8dy`o z=p_9OXc$Ix|9CP@l-G>El6>^ulrLb>;=x|C3oAptwjK2a3ppD}4gUOkblf7qAmhh} zLPq>j&F7Pg^L%nsgO(TXChzt(rqLe1Dn$!d!kJzN1%$4CPBksQ+j$>I_6`}?S+4M3 z_c#rj8TR3m$X)Qb6Z_3%pA0{)iGn6mh}fH?DlZBPTjngQ*H%_#6JtWhvTr=ub@7S~ zVsD(>)G)N;91*Iq06w@Wo8D$|rN|g+9D$roc-;pmJx6vDPW(xZxa5!M&GX&4b|hQ^ zHy$o~T@X3{G4kSW9aYen@Wk#se_c2O%^P)pjwhjdwAaGzS>V1xx$a@I-)6(l{7OY= zO&DDJxcj~%WJ+dXz!|0VnA!m>pUDz>nT~rW$nV3aZv=c^%)O3|h+Eb8`(F00n)BmA z4nKgA;|mL#KecJUM{!Sd${>#b`}5?chSY=q@(W(~7}k0vfC3q&KyPk{ZWt!z-_qWx z76lb8Si)nYo?gZr0)5dWXZCnKv9Pm~IwNgGiERw3eNKHIu2JoP*yslTClutUx+0)p z)5`AR3$x#7q77(Ii1!9pg>R9XZR)>{QiKP#Q4XWFWL)pcXX?x3vB1-JY%jpo4}Z1+{DJl~IK7L& zsJG0&iW=A$`$*hHm?*bcxWzlJSJ#e1VN%rP(_wD{;$Q;m2gba+Z{jY4ayBOqmFDL` zloN6~G=c7z>!GOmKp3tTaSu^MsHjmIB_I}Rj{enE0k7-N>SajxP@PD1cnV+yNb7)= zdG^9>93*P|K*wFm34DjMU!^$&nPG8wSa2s>i&e~O=*irI~em#@?MchhIY7;X^I!e=-c^qoGO<+y)VwWV2Vh z`ftCzdqtWm^6xq@*_tDD908p-$OJbG@o=86j2KoUtybnpC1-6omTOKdXFp5bzgt_X zKgH=fY_zApWW-bd#PC4q)=*!E)ITkYPG8Pcbo5rM*QQ|-SFR8w z#QRAd?_9?QR3GmDM1}2uNvs4b?p?pPuaOk+<;$7v0q*gOp~R?#58>35dGqQrf8~yf z`h8&c+!NLTtj-0mgIukSr*emz1f1O8P`a`!$^{V`<^|E{p^4fn0_NzL)0@-X-KU-Tm&;1$szUHi3)b;DN8%xnGf$-|-@p1!g zC4BAatkCJOgs0e{TMR8~~+-Rdwn5L0jk0Vb!f6t0;%u#4>4U+MV_#lWL~J z{g+e{ANrULuMuLX+)$kA@G`E7DHY>bW@&hU3{S_*#8j?UZCG zVPzJ{3*2boF9_V72@Zq0gg2lv9YzFgIRCXj)7V|XrSY-jU?J0E zhxR`iI`efx*1|6Qy6A4(&CdyrERLarwIMBkp;?+7w3%>KpQDz#& z1+JpL2OPV92unADj9?NrXJCbY5F{&&qQ}qA^s1wXLDk|u(SH3+K}Aa)I5QF-84*{= z7x0LY#>x*`Ymox2PEu%LD>AV69gH-_XZ{(@CO4sy?njAOHUHyd>|_3k@VkG!e1J3#_j8VPfAdyL1^OKkEx0K#MfghVS0`%!z@r#7*Qg5J%oPV@F z20OEZ!X)To#?fOATy=~_4Fs}{k7?`x)*so%aVA5?2%6_Z5lfI>TxWYx-qkm%OG|S0 zVLi@r+cM(9bjrNN7`+hpIL`<3{Scnx9z1@sn#tJoQv!TOThQ?agBYlKjlB&;^`Ybn z@G?ph+>|?i8SY{(T-0*AhS&hVz{tzC_~ve)-Rn->ZNrD^h}KsdwcIGHnVihx!H@yS z_;N}=ISt-i(q?w>r}kAkugxNg(qus@O+fv{v{oe?NI3r>-`?##;C&&g*(6*)3JaGD zP|aQuzMMhcTW*6IbVvZ|z#*o9N9#Z1h51)G7V-sHAA#*Qp52ZUPN}@tsd#?pVpc@#Zo!%xpI_2yyli|v~SKx6_IGAND+}FG2y>W zCF5;wXJo!^euEEsS29V;MNn{HjeQp}JlS>diBKNJG z0Z@DKKi%vgu^oc5PA&;FZDIqK-RPXf#XeDVzAPI-+!(>AQoJE3P^3oM@oK5j4AM)D zQ3JVAX1e}*>sE7mb`$_1yrNrG*kWNolY2s6~L`S@sWmt zqgL7vM|7GWljVY5gNDj4ZxLsi{L*`#DrKUOV~#LWfX48 zT~^IMneX&07VjeQ%Mo91k(Xxve9FEx*q?`_aRy4?c5@i_Rn{Pe4GdDQ4RZ!EU2H84 za(pzECDJOv9*Do9>20*_ppN;>J%Zvu^4CxH%!QLZGQ;bwL()Uj`hgZGHJjjp=?UR! zy4xl?f3rIUH{)OP)D~e}kcCYQ!=rLHWnP2@Zr#mX@<0eFSzVsuZSTn&?d{ZCs+8$f zX-J#`TBtkj@9-70pi{>*QXZD&uPdnr*rJl(UnDE9_+Awp`Q%q9M1{B?xKOV&x&`@N z-P(oX5rZs{Pc$7@yxY(}py#3bH+n{u;*10O4}ery;#&+%nC52yMJ!Q0^NgNZNTyo& z^uor`J}T;|K!c=Q8jWBiHe|o%MU08KNldj#4<1_Oo$T-A@JVKDg^k7;|7Y~^&iQ3K zB2p-yaXaMwcBKFBu|A1$8&&vx1!75P zW%?K2Xi@%rKWKEcH*{~+qIB#;bvN1wNgA?MD2!<#C0RHlcsNflP?#>%JcD84f`6%{b0SvBd!>C~9KAkY zKk&G?lqZGhq>l-PcQf*!`;6aZyHin%4=?;Gt@)VnHjHuZq zI0*cHLtb*iNh6z&1QZA4-Jr}N{d&&ZJ9}$T1|Za~+)n6`BK}`o4e)aSgTOmC5I?%> zAYR*Z;{(N7c+M)y)r4~fv5CyOlo$kE`E_vNK8je};NEseSHU&j3YJxD#kNqq$e`t5 z49sH;0Nu(i=)&wojl(h6hdoL*WVbn^1O;S`9$QG6Ugq|lv+fr4dyH4^K|d2TjbVyT zqwv1yQb}PVNy8NvM^shW1@E8+J2dMxEI)^xt9pEza4F06>NC)I!I90Y3MK$L!UoN% z3d#Hof%luJs$P*Z&&>_^pPZ2_CWWavyw&(w{#Awo)|{Pf<+IGgZ5F-1<}%x3e=Kjl zD@#w8hA3Qg z4FQ5IOC^YYex0WsU1ISxD*6h|xzxI?CZv_3D_1z#WQV(rWCa{h6%|qT8aG7Hl|UNU zJD-sIA`)lF|L{m3I=ph>tzh%4x zb%;9dt{E3raAXR3SzxoSJ_FG>gv7MdtCBN>Jh9oNtJY`aY7@pHgV_iAG!;k{Tn)4s z9MCYI*3$K|W28JV;xa>Dr2uUKAYy>C@MghHom+HlwbY0S;0tRw^B<@AU+LoOWx*5G zvgnRo#rUEEy;~6h282wWuM?+T!=$uY^WhBtLu6*lVg_>tO$e;BbR8?lVLkK}}6nWn&Wg#x4E<@w`bwy~C+grAp z;<7(|et1pQU2Zqz$c>;k`B(wMGGl&s_z84W+HtcgAzT`=<7;n{N!#1oDZ~b86K)B5 zNtGV+_nYeX@026{Iz)37_8+)-V{7(V4c3c_IgFjk@dSfhG2q2H-y0LAKX4`4-W0FJ z2mDIy0GTBTF|={l1s^pdPE;O6q;K2P`7dmvwh1fQC@m7r17fN)cDY_gY8cLIsY5!b z{A8kZ|7Mp(=!wKwWYD*({@#i!CbNI_2U!{-puFLCo<<))GY#ZCZ-}dhY66y7xx=V) zVPtoe*-5c-yBD9SDzt3>=xxo~svD7{p@}+KUzXDQpwjbtMQc_nBN7Ig{>6t@wGjs8 z`!bD)@#pwZC7h?|kYE!rbY}Oo+vm!&1SUpFE;N`OP@GU(>dZ`I z;H8+KlCzR7zPg6-;-QPmWz1Wsyo=X0_vB10;FiWt?3 zZK^H$HR$u;hsc=J)7&gs=}pgLpi#jcc(3tY?XN{(_UB70yhn!~ED~r>W+gY%>`;DS zwT#-!aL!_0I#-hZ2vunc>7Q6HV}X!0?O6W4UE|Pu7rwK*brPqy<*I>bI+nrJS=tx0 z&!VNxJlf0XG{6=#imt?fq3&%aRnE|;t9<&KUg3kSY4Mu@lR5#xrd$kh%D*ii#emCm zSbHm5jbRfXNI~{}rgZdjzgvuc-gIP#aQFzyDm%0<)b%ff=jEO*2{Hj%W(s(irLZZR56WO%R8ZGqyDA* zRw@eQ{N|t{Tq*_ya#^qx4nCTa8FSS0`la0a#%HB&j@l;JIdf4)?Fqj>)ZP#`p0=PI zUhAQ%980-ZZjDU5U~FusAG;M?jxjiM?z2BMMNRER{~F~HC{eBfu~=BeupF=F+NQmm zXqsLV?YRBw=PiAmbsI!VsdrN1Ee!TfN|_sWuH21(KX)SDcUB)u%$;XVf%?jEihOj*s@_SE{Uu_Em?)Q35~ugKo%tu#ahPK}{Gbmao75B4;D+t4FU3 z1~hj%fmdbj@6X_`&}VCYRnbQb<&ZIW&~unRUWQoGcQS94E`=`yZL;>M_bP~|=(ms3a}xOb5Tl!b(s`l>HGH-g;`UZMu54Y6900r;l*DFy7$#Nb1jn(;8lsq--hb(z zt?Hqq@G;fL^Q*Gc!ZJ_BNgr$&cZi_di)92Riy2F zWMsmgmh11ePNx~pR^yEyNBiBCOMfx>QMzhTMsU$8`-qqd2c$~70cQ= z`kdl_7kLvCz=;OX|2*!0I+p7>cwrMmm@=^Yp{mjxDny}Zo0Tc|63Ki8&X8Er!+578P65ueL(12x-C3;Pe zhPP(cjr4;tzx6#_J7=Pm$P)fs*i@rP|qRT?ed<>N|ou5k*i`Pdl)0Ft!FjSSw`U33GTI!iZh`zHt9Z+7K9M^~? zjjTWx@&nU<;T)o3@{5aR=+bvMgc0|ghp2p>3>j~3`kbrc1AR`ZxQ=K{=dAY}OX2@g zB1K;;3@A|WeC3N~(&GO2>s7)4*i7@J^2OG#OX&Y!gakG3{*zIdfClL5y|(@#T#9VB zn;^WBk@-?acPwiY!kf`4CGt#=wqjykwr9Hfo87VdmL~5ZDCVd|O6Q*X7LvUcT6R}B zWG4MzGReJ2n9Mc5JY7}H$% z%O6BbViT6roC4DPX*USbyL42o2ERLrvDyHekyh2>ep^x!Ku;mYhH3D5xH(}HICE7; zG7Ju_Rk^rt6QCnGm(Qh*O_Q_N8#yj%>Vf`VH@08$g>2_sl-e7qS8iRus0RavxM{*l zJX9USxo?*NCII*DDSr{p<7}LtZipto?aou-g$>-UUd$Ofg>^%qj(_(0GUic4D@lwo zgTfCa6MIeEZ`w+l_nYrgw{41avOSY%97Y9DMB!RClza%$m2~UyKb5g>cljjQhT>lp z)$aKGe#xYI8#~3MQZ0nIdvtf%NZVf8Fv5BGsxXd4LmD;Dm{QbL*G9%;+DXNSQe(gP z1+Ek5yLZoX%kIv28eQEWdHa`S^tF`F!8UMoH zZ~d`)1F_My7X8S%cr=jPeRIQoRS$e>jigK?8oUnWN2HW=3Zl@nL_$YGwNY4nsa8sv z0C;cGX92CqwL1BtnrX33au)#Kv41b3E8^7fB_YQ0g5zQ{3`db^2qc?6x)`JM^ae+7 zDJUC)6!DXR9p#b5UI`ur%@UZ4sR9{bB8bAbE64j%};d%?cZY(~a z*PZaN*H-55$-hI+BO{*h&1&NhykEtt+M>{cU@9hnTpHC6#07Zz3XFrpcxstDd^_6G znJK{P^?sn0bc{s_c(|or07^!lrBkPjE*Y<&N=2yY&)@(mwNCv0f>c74A#oe7x^-Z7 z^;vWEN+QiA;bb`?7428bbFhca?wcCjJ!jK5-^qoW2cP)^?>O9N(v=A|@4(ytfG-jT zasSB$fw!@+x8>!uYVi|eoJ#7*wcgG-yNdhC94_s6mp>Y`dwW$CYK2mJLf@R7E~9g> zW0qaAi=Whw!0DZgDnS)slk(nlRon&26hxXKkCl~`4|-?XIOt6YhcQMA+LSv%ko9jv z>rQG`E=Ot1PAN~v!aslIf|H@dEt2ZlLl?6gGN7lktK_F_nTOFeq>Ad}k;020cX!O% z@_t7ji>I64#mi?csW}COqQcSX!ROj{X5B!XzOeVnGM3USr>%p63`YHNHyNU!zXC>Y z$y(4UBb^NJ4VIFqmsViLu93Q&s-7b4Q8B}yg9bhXsce80}9rivf#F}*aaKir^} zXDig_U7Zu=FnTpS@ui+$D2*htbxqy=#Cyq}uA4M`}eArONLVSC(YKEe%bkmra(jAAmRhy-!@1til73?)Kdj$9k zvWoqUFHuM0eOZRr47sVIw5QBIWb|ZDWhPlVz)HqDZ2G%z*5J8of=wyx$YNmOl5@(G zxAd3uSRcH9wgkR&yG-c6=7Q6C&|GiZd&I!)xUy#CpA6G1v;YBaI;gUt0~fjY2h zS}~Rtyxn!bZ49|TDa9jnp|!j(4;IP&-q$xwPf5gqA8tY<`kCJIN!kacFLQM-OWmWU z6qccw)q?hCrj^RqwnotX5WrjUk`OCixH05Weik@QG&UMQSn*cTFl<5PSMfy>c?Z=m zAsWiy*6uU6)eeX9@_`Ckp=`DAr{@H10AS@*texHv@Pz>SmkSYNaQPzzN1u((<=-RH zc(zLXcP&%?+F^mf@~c()ee)$k%4j1&uHsq1{(w-x-4wclFc@n)CsJHO9-Q3##^Zzd z(zt81N9Rh+S3)aJj830~ClaJ3n?pDHL^V-xUqpCIo;sq;saDg>QU9f})rTp~r8mBWRG6{7Tv}aO-MQ=vA*)@P7UZ0dg+Jgk&Np5@C8uch)j zv%DDn&pp9Z06(1%W=5~LBMR))nDMWU0F^_zN1AI0tU4I?o?UX}BTGC7UmG+o9U z#FfW0yK=uiem3pXOd=m=I}Q8g;5<_^n)(w9CtC*&|8_jplM*9^x|}sEc?_N62Pngy zG}yCXFC+s$h7-Cl58wAvS$8g4e~U{^Hi$-$B1G#6Jf~9fP|vLR5UwFhJ^~DODXbSA z=Z{BOx%4aA0rZ#P|N9P!Gw%d2AF6dj-od@8?lJB-2tQd~2R>dq2xLz#u*V^o6pi|e zlza@1M_qfy^Wlf@t;obkDJpW8Etv-okjwhkA4=3h){B8W&Jf*)t4boR4#4dBw^+V& z?V?Ow+e=E4DTAH0`1IoWVNo&4qtR)ZZ;yD>BV6C^uuPutJM_Hip-JKrpbcv>^v=AW zGRS;4R$Ev&4qjdfK+BckztxkyexTy2Xe~hr#Cm@zUvqhJ_2o>#^WRsNY2S{r{swP9 zNjwX0Tv__xSL z{clYB zv;p(RN_C}B@qsa0Kcj(Pj~TX5ZbnC0m+fP6y6^8zQg zRaWrz+PTZ3rLr-3b-m>o1v1pjPXY0#V*iaf*qih-eS7olAKMkFgVIv6ag06NcK4MC zd*~Cq(q_*~EvDkOd4lP4!gZ3I++e9-1cAXFm}Wq3%|>h)8)sT3<1~pnvEBtd*mG}r z?IypJ5m;EIM0($vwFrmaTWwDcfK&D^RSxKqrEQHS^0$Ie#ep4~65J7yvLDG9NW$<@ zJux-&C2gj#YU+h_Uo;3RekbCbz!6=>CK~~u$D)V7pYh`)76d%SdG@hnvEu%qxL410;#NvOo>VZy}EbD`SyAw zOm2ja|1@{t0Li~j51cpf%)C|^!~fIa0%DiTQJK45OaL&>;=la|Kt1a7+qxLeYWvKPkBKo|NVDt zy+c3|rnW2F<;PVCnupjIfht^Kv;4MG>_tF9-FZ9ZfCTknnzD;V8ys`Ofi}zqMM`w* zk*~sR$$7?1A?UsA@*Rom(4>tlbmRBPhN}%fmy879>^JK3Ph9154CANhKHs12dZm@t z46g~{TY}xWRYsDH_yb^Rhtm`>Fa1MAoK344>MuuoSioPgfHazLhEs-OdiG^G#l%wC zx43=ri2}w;%;X(X!}aI`gRI3jjqCh$)XSH-$IU#4<#c`s7?&}|yi8JW#MGJ-$zHha zEwqQL_)S$>aCQuTxz%Xf_%aQB2SCCZi>ArU(-w;D@KFiXq$h>qozcR6iE|{ItkDo4 z$5D8wR4sfNT{Wd-P$NTaw1`;yT3|sH-o)d7^I^y|%E`UN@a{Xl=wGL{p4uh_@HMtG zt}!P=bpIg4!QWc1oMRkQb@bn2Snw}@n?Wum>38vO$3W&sU}cT_5;20CKXAB@ zU)fst8dA>|{jl<=^QWulb1vdE{A~I7@u2&rO`?t`@BpH;6}kZSURR-thN#}~L{gV} zV^F*eoE(9iqZD3+QDhr;#kSQXrT8rC4%mQrc~|wu3yuC*f9SM&q&wkJzR}cuR9jab zLYbW)!zMcg+nx zn<%&Kr)BnUYF8$150!#~U)@)NZ;SBHROG`eAQ@-R{gBH~lC%yC;UyD8GlHB6mFG|} zGUuJ4(Ql8&D`MAThTntEX=%an3fbvQxTO0$?Kv;T3LP{YMaNcFQ4iKlro` z^M+Z78W(c-`r<3#eNe6*arEM+zaVY|rdbbD=H$jn&%qeu*&t)vS_EdRv=Utl~3gm3CVG_t>H@MgByleedW)bcN~n zlDqXifowImRvR_i_(#$Fqtcs6wKEw!m<<>G$fvZkSlL=}~ zg%U+BX_c7A=$3{CMyqVYQMy);`O`RdDX8wh#<*NGP96$IRCRU$R=760y_GU!Bu|ghy;9 z&&dDO!PxK7(Tea2G(r(==AM@sF1Tt;VUw*~lEi@4osa&2N(!|OLg)XAgrOroz4I6* zR&Y>|w#COZw0rC6y9J^tIs{TKYu@P83Mecf`1i)o;uE7kWq+UW7Ky z9oKhw-r@odAAF5EiaTdia3(tl8NZUO-{(a&@0lPX?u)rVuSf)71cA$wBgvb(KWPHA z&VG&+u_}=2iZc~Eb5WLMW+`hY$V^R1ki*zjqw#~ zu||!=F$O7XF&nKqFnQPB!rl8E8cp4OL-Kzdo%LUoO&5okMmnWgN=mv*mM)QQk?!u0 zSh`^;k&p%fMJ1%98)>AwyE~TMefN3)f%}*F+%sp+e9v`#{)2p3f_khlHv7BoT~LU4 zG93_^Og#~<1c`Hfj&mw0gOze9qhFILO@u~%x{msh%in;i^D%5T?k%|tu@93R!zD&O z<)Z?6S(Z!|#@EZKOnxRSj&u}9+(fa4 zjD@yTw47X?`I7$O!+`8dwaVuz2Rnny%Kxtu&U5~EfkJ-Nt&i*`2wxRRUaccw;zU(w z@;9)N;fGcNs<5#1&Qv#og;0#e=T^k{_e(5sw&JW3mu0ViXZ!y)fV?Fj%H720Uz)3c zfr}Z+qXB;*{P9fUHyWQwBO^US)l>%=GM-7miNompY8f#ARH*sH^~v291IEq+5r#E(GcpUha5ljtHIEOrrSQ`u*EwXFTxbxuM*mWvzCSRdcGKT;U!U>Sf z@q403;IGsnj?avpOsbsAS6}qlFiQ?}iVS3=G>4`xQtbIB19y;CNYCLu8Rl{zVHNJp zW(}F_JdSvx=Ym9TovMH!0|^Dgjh5nMVer#;D>naA?dD8BKfEJUvi^=d?v!4(8dKp9 zBkhu^qzs-YVz^=ZJEni*tJYqVL4^K$2Xv}b5@&jrhg`;bgoI4-WT%wB6pG8#x&|iW zOTUWO*J}{WV@=tgJ2|6Hg0pqrG_bi^pI}%tCZagPC3CJQY`YTEuv4(QvUP~Hmf(F4 z?^zOTbK)?xvs2VBnK0>3Xx`>5vRsb*a4g48r3_LR*3*l6W%Y`CqqtiXnT3#0=!+VJ zquR51qHc6I5Vl`mM7l34%mt(ULujqA{~>y$Nnd)^vdWh>8<~^MS9$MVgdS!cYJ6k= zI|;5m=Dy|XjyobIL8XH@z2i_j-9C;FEJ%5?m!H9$O26Hf%VM1P0d;}6hRG@Xx>U=6 zy%lxgvS!h(FRk~sgX7LgOr)83V8FSile9Z2X<(q%y4L+N=(hv4MMp^Buj?s)goGoV zq{<%OV&RL&a8fykQdJHXyFutJD`BG_-A|Xj;v-nzO=VkT9{q+xEhNT$zPzg`zL2I3CMzEFh!Qy zvQ4q`htVIkEt%_Neu=Mi>`1z;(eL=E9Q259U>YSP^idh*zpfKG%M}pb9FJ=9h!zWq z%JjlKUe5>hnj9gYsmP9Q08EG~&-X-^6VUw03NcCWKq5SPQ1zGMNiXENtLBxABfSBl z6nMRZr|`tTzXaZ4lrf_8JE5IqdD~%e zFj!Q<0#`S5-qm)c&#sJt4$sqx3q5WgS)Q1-DW{sqF+(tJ1$4&syGr^W-HtTtpjDKz z*}k8bhF}eh-JnhR-RNPiSa6Xm%%nG?j5lYD)NJ6 z*INoD;jJQHMsX|}lnlQjjP3;9ccaXXjSs`?$fK~=ulE({AEf9ShSw7{ zaP*|M{!4pT7NV7fOGN)9wCI8V|G~mFvFtB zj3qcaWZnjrnjvx6%fOj=HpV||i(^dqdw-pT4%kAt?w>_f*8DBSZ=bDC3yt9pH&c(_ zzQQq-@!mBEdxyYE6!-D!0b81>B7ikp$6!7uv?7}ezn7;xq^KW4$|#+Yd0~?s6|v>>X?F*=cdb!)oMPw( zm_wiM-Xf+G?-DwcLlYL)L_~iA#ddJ4j#(t?I7*{6ct}vwY~pixr9_d76ju=kW`4LY z-i{!LVE(rimQ>ye8!Bq@ZK*oip$j1PFJmva6hEdoPPgdOK6tOJ@g0k0&c?{D_n&gl zJI#F%fhHMlLWCFo(!21AUPZbzf6mKUnS1$nLHC2Ghp3Et`^E(|$gW(BrvJcO4HP$o zN0r=#7plg#-(Mq2*E(e6t6>99WDq=#9n#eY;L+HiX0OKt?XQTX0o;FffbS>3&WTQN zabkGF*I(B57E&zlP&5#b^)(T@f7y9IUwZOQJPo|01D#B0j)IdW(^@*)7I>D&NJiEt zvv)-^bFzKR=`<4|-(7QzBxE!I5-99MQECy_SJV=;3*=!Qp=`O^gUP?>FoS4^N$utr z+`fBk-vT_n*Qgak!lo?perOGPj$F`50^z60XAOzqFuEs?P*yR?t)1K#BFQQ#Tj&?f zHaut>Q<{J9I%ZHkuF8`t(XSq>Usz6S*(s@E^z_=ijOAWd{HJEE?>b;BjmaKeJK1zG;Z6UU|~=uW(+h*!D4}9NNQE^ z?F#XOH99^392fSDMiGPOej6W;9c~MV_($AIc^WxP zB^$C~3f(}2h5xoFya_RbOiRyoPZD-b?ng=yAoE)#d9%3l6PquuE-(M8yg|g$^uJVC z8h~IX!E0Zg-z-)PPThiv-;|2qI8;*P^bHQ!!i!5nIeRA`R`jqchXf68sf_;I(JFj* z|MunkPsJZWF5dFVF-Uh2)o7`LpqP`QThmnm&BS|x=v*u9*xe87m5W?5QFzM5DNg{H z+q`^8k>5Na{1Vh~yC?P~C!aFm!_Rio;{qm+g6*z9cm5JG4$ar8L#) zZ6)A|eiir&|s=q8jgsUx!y?V4W(S zzRJgZ7|NOs?9WlhPMycgc&=&Z_V^7HD}U$fRwHV>cOo|ThY)eqetr~saY_>zzHb0x z8u1)icYrX1t1E)|;F8e7s3o75NWY5TOX-6hj&D$Fuyl&rz(JwTZKCRly%<EWxsVuT;Mc*wjvFLB7zqZKS$Y`A%v@Cyng(89qYTTd61fdMKY=23zVw&(wcJFl zs2h^E8*}UDdmd+%J3142{d0v#Dhab(QL?od4vOS;b4`zYL_)R%RBaI$sS!iOVXTug zPVxEe1$q&9FAi5`pP$8xL4sIdNjzYSL`?hPT4i>}ImVH?n%J_+JN(aE9e+R*x|{%8 zng;iY3+T@?+?qmwt|*n6v^mzM{c z^J%Yr6Xf`#rUFUFu@CA^4&I+=#}3W3->mTD3wz?He$dNkkS763qNfeQsR!Fv4Vc~v z4Vt2*tN=B*AFE|z#rX^P_O&i~bA_t27VKiG{Z&?ktWfLHJqE`16z&rBKJeYJCSvT$ z#3VH)^zJkCM4NV8wkN*^Hp9)~Q_v&!JX{V>78sH<^m~B1c)2$V#3#2}+oNG~c@#?6 zic+~d-r`mrQbRiW`5mSAQ*+DjKX!4J9nT`vMPY{@Gw<^YJ1P1@Qq*(5|IVfRi(R&F zb@P@vN`={_mKmTJA(7vddpE3Zl-qfv-rF}VIN@#h(=@)K2kAq3Bbc#?vVq*7|Fwn3K@QzqO_wQ3~?I%UW6M$RknI^q<$@C*ZjlhDq6`yiZCM zY8a|)bSasJk~(+=XNuJE0S%va0D?QSuQ~<{sbs@vaGs(LgpZuBwm$zvI8#V_x|Qwc z!iXf0Fugh2Sl+4l$5@aJuPwKjz5S@%wU-Mo!9*|8BwB;kJ9NowZ>Lhiiu8kRK-eM2sQ zDe%!>)@`02#xbwLyj@POSXLs?f0RAM*gnay)Tlfm90KTO!P6|_Pq%{wmwNIVA8$(T zC~}k;c0g12pYdeK`O7i|-BQRg9bOO2b)!+rHtp=SuHR_riV`owU3#PG6%ZM^)|TkZ z2)CE4AAj`xPSYZc0pbk`eLJ&t{8z~TeSUtMJPy9^xG+)M?DEpuX}Pdaxx4V1P=aC$ z_gO!t&%nm9lxSK3Xd!K-Ec?C=kBi6$(o**nL|n0+lTkA&%9OAnGwIxDS@_>s2K5YiPL6e^R8 z5<|x;MfhxbgPI;1w(FRDLM!12>(xOuC9UPevuTk+pO2+jjZ@jt;Z%%cmD$P~vf%ib z|A5-h5bFUnMFUCr{`?QYgqQiIhS>`3S&ys^XW9dI+NZs+Ag|%|r^xZ6#B35tM3Hv4 zzD|+crN@8VYvzc|C(Uj)C86xCo%KfVbd-$)PVW-yR5DH1j zM%Yy$IL$xwW$21`5}bR`O>W3anW0nw5Ve@Y)Er7YgA%KYfWof>0V9u(n?jETu0&w%BNvSG;1&iETCtKNWzVzcd~^8&*JH$$Q~m zp8rZ@vQ97m(IM*VvSB^Shj$wuV8xKd_|vt7WK%ejU>Gx#qvkarXzNlk8y0!sggL!e zi#vNu$L=kZOGWiQU7`bC3~PsUKt)saP>S!w=#6|Hyo6e21UQ0U<+OI`bV*UNBjaJ5 zgJS#-YX-hFJGHj1fL#6!{07{uJk$o%I#LF2;E=Y$_8EsW*ZU3q}LgEh3GT6ke5f_DZA0hE8g6IZ;?jJU;-rU*m5nT6S$~yj}R#dEq zX*L7ewt=_;;XEvh#(y!(Y!&!$nFJ~NN`^8e1xztAFtl$l4XUC;{r3kZI-c{fYCijp z2x9SVO9`MZ?rAIQ-Vy{YV^C?3!DQ#a5-t{|jy$NF);Azd_$TFCRNRrWeUk3aZxG-Q zEF8yW=P9qkyY|oI)RzYxgkPWwXQ*G4f4}@~xk=--LF>=HkWa7*%*%aoS3@7%$*#rP zjIlmz^|$wiISX{PLNR|19UOUt?~yOa6N(2Mr84Z5zcUUitIbT|Uq6r{x{QbwwiI;O zaz-!MeftN09B&ydql@$#`bQqT8q!oX)k;E3V+QO7l%#hi0M<{rD$IbYLRCs^I?Pej z4Fc%Yq4(-?hl>=R07&GZHPzgIVc2QZmCGd>5KGZQa{$<0N7ZoZvmVKyp7@k6c-U4c z61KG&gCq(nql%;reLL~SQ_+Tgi7n>(N4P%RpQy|N{u^L%1ooaz-9xCXHzb79z`hm+ zGCs3U^tf9PXj_Vs7>|%S_Wjzufj>Tb<9lO9+qO zUO3zC@l2poZ}uqJ*HkD&T&CDYIAI5!Tmf3*0R9Qr@I3AKlKnG0UjQ zRGlF!8`#_0>x7siw8-l9(8(0XL8OZI`fn5B0L+^Zy8b?~9}@Ey7pu5oiy6#CY(=f6YOWx_~6 z9tLlzI0(aL#A6CW-fy}?-i(K!=j3?k<)2L0pf^InDV|Su`BW2FjxmUPDdbr z0@q{nTfsr*n2#Pc9l=7ZIor};%RF5Xz>BDYpvmj5G$$6giR}WUA*0z3ynTd40Q&P= zxa%;~mlVpLgdC0Oo5yWh`1TNJzf6Aq(XKNF|GvyNSZrkG-y6S{_7qr>Vl7;LmbdEvSO$kf5jS7Y;7 zfiAbU7sg=(Vgi2W3>tIF3BA20lp`BM5u_GM!IZH&GGO4gH3cRR_G1jr26{G=I%*iz zVB93o#7jTJan^Y<-@)AsED(gHr-&CS|Nh)ZQR5h4VWFl(dnI0J!;nk3bMm4ovQADT z6Gc^MNc$xqxl=QTWk@8Di`(*OJ@vOdan){S{=e=bF&3|*gPXV86m1qOeOYw*f2FF> zG#cY^J-&G%iBvdUgOvo?S=)i?KXQ?EBl>^veaq-Fc5B~Jjx}pnQdOI0v?d!qr+1)_ zQCJ2XUZ#-(U0I6)jrCZbdh>&Jd&@*fDn8vTe4A16iRCUb1_%zQ;C*tz(HM2ESl{XNcK}_oj+yGKG@It zbxF6(7=op3+CfT^r@Fdt*VZ62Lqs65`>8?;3Qf|!!%bigpSYwYV8b3KItSRg=Dq%G zy?r#B{iAW~=*g_hvzvarqF*&y@`nd0ZBF|~-c)su<-uDtGO?aH8Kmrj(-Ny#+QUN1 zwGE#5>!aZsXeGQ9-5H@J^^zd%?;#!*8^2L>cQX#E~lzYvP;7FnB7xg6t zdX-!TmGlV~e1>vl3*Kj}i1Rmv?Ozs7#X^OhPBF4vE38Zbtw3U^2Oa*#6BWNX{3wXo zrlyBLuc)!heqlvGH^ZLG?oZ9mY(AB@SeqjTE&CVZuoQkx+%o1bf9${5p^!n)|LcoX zSHflVkrZ@^4<;sF4t!baOz>6tLj*Fp-2dlbv{o?q&EA`){3co@jfLY=BYt8pLkKqbBhO{Ta<*A#XF z9l2dtN~&WzT$aGNpa#a)`TW`_;8H~HBlBE#akxOYDH<;08|gyyzbI+GBgDuso&JSAPRdu_(HkSe-)X6bKrWAZ(ejrHmFv**Wo!|3qz zj2{JITi*YjUa@plZl=DN|90v%_T8xCB_N~-hTC|g$s~z;PO%~tJx+n6^7ERsfl)QA zsT20u3}XuMBCZB&sIIZ(UULVOG0^Ze9Q2b6kj};TuJBrQOZclSU-`;+^_$liVU9j7 zRUE)FvJJJyii^iU zhsJ>f4i>oTjr*G!IGq5324(O#cboDy66Mnkh+v~zNOJ70%v522@dhE%x6Q&<#Ke9r zPL=qL(}Kx|sb(dt5WF`!7UqprL}{sGh-!I8p!+>J#@NHm&hM`0=8TaVw%}>Jg2iSr zlQJmJj`rJx#UGF0J-6skB70r%{TsyDcBCe}A6P6$ScZ~Pp@Xxxk{Hnf_!7LS9Gyg_ zuoEq2V?@HP1GQt-4=ZE9-lfZB5aWU_^kH@5h1tY;#K`!RFm9I3l9h*VKFQZr*=|Ej z!@iVP8mCa-eHR^)r;sX2o8pBQ7@lr6xGdSxd|6g)9!NAJ#nBxsj+&}B+=v`!qN*8< zV`L=Sx4yvMzut%VcxK{+D-}P`7MqoAZT3Wlmf_(J6I~K=B7%R&=6b_Nsala)xWx8J zBPij$`PU9`W*Rr<2hpW!=;>PMULka;WlnGcR(2n{S0lQBvK@r&=btKjworV+yOUhJ z2C140-IH3$TM3#&*_h-0HfwbZoQ1c~K&xJxmw^>IcoN(o&y{r?#Dbdg!IKwS8}=>S z_{&c?)Q1#&6C0Qd+LV#J46IyoX~jm|)j}rUZR@o%hNLgo!58bN&yVhIb0MyiMeL#k zqYef>Sd7526!Oz*_DS|X)Qzz4Vjs4Wb#c4~6SmZqUqpz>uAeOZpx(YtC!qox8^{+* zZKz=3t8^0&C+5sQLgEshDF}7?b1kNkFKg{L=2%!br3!rXz3;If3k_Vq#t+GPL(6WQB02# zEW3MCFkwX2Ahm>-HS4hg7)IM?A*4O7p<7v}cB$ZBs-}xX`+UlaxLS8^L+pb*7vciv zc&|tsmgP&Q@M(mHGH3GmBh>*C0iTi4O{e4!O7AKtN;4=fDBm8wGC&OMtbAiGdZ;c& zh75YcV};=HTz)A%h@80FcS3Nn3oK^ilV~%HZHrM3@1D`@%Ua!;`_9PQeuy_3H?v_;=gX?HP8ApDVEldsX?E6 z>=9UsPyOUs#4;a075^IZ_#LLMw*Vn zKHt(aJ`Dw`POOvEo^1+}5T<#is4fzNBtHc#ol+<}og+70Vth{Y2((Czt^q&M=2Md! zEgYHT$oOhmTS6qJCW|gwjnHUBR(pYU%nI9gnahCpIRnIfC-SRDb;uNRaOSH{SbwO- z7Al!zQq75x$_EtI((5D}nOF+6%jYP<4I`Q`JgMpoDnp5wY^3p&fhio*0I%d2((8fD$1>gnMC5vHQlzza02aJ@+ zIGju|7UlB5N&7`>=)3I>Dm2dT2EZ9~NT% zq4Y*%pxNQ%+3)j-kc0%47|P536t2EKGLAN6*xzIocb}F+pAFSzTmhm4 zh08c{*hzi$7HO|kxIMmp9bG7MBcL#5HwvKr1pU`t-)6T3n7rom!PK(uxqf3N*n_o! z2WWpe{oq*ehVhA1+_q$+cawTxZq}%E{~Z1+2np>^Z77Zk;||{z;&~tw`}keO{m@O4 zrT^}%Ed!$t&)=lT`%{W1XD3TavJMJaAuh6<3?7$>Oij`>iP7F19)45irc|}5G5B+0 zLXr%wI37|~YFW?H_c2zbN2{q6`8s|7u$(p7YAsv3$ z$Fp01eoy{jItC67uK7|Z&OGE$lJltjeA8gCwS9ziH>krv)hfo(Ggj>TQo{h6e~cDv zVHgowj6~B*Mjc}9AK(0xrLw?p5)9(h==SfhYJ8VVDYgf>ypi`vGU-q{O*7)Dk~grq zxb$C@YQEb9^?XyOOW{uA#-;zMAQ9H``?M5OKFtJu1f{EQr|37xc6aQ;v_4z#&7exB z3oPlAh&C~90+0A-WOU~^VOS&J$KOmD<j&zU&O)}m@9yu_ z!<<9fXTzu495DySn->p*xUxPTxTDouU-(A^Cw$`x`?AlRBhvedY7CQI`t^a3O#gn= zH;ot6Q8;M%PKdW}k8h~wg#6ETW)P0v4t%@f*&V$x$AsCJlJDK>*L_(c%<;Z-9y^;y z%hJziwi2^d%MKShL1+BA4-I?OT{y8Uj%F{}H?serXmv#oJSQw@DvWGQU3l-r{+14- zi0SM#>p=}2*#ySGF&tqR{w(;5a-sgVb5d0>V|pfKCFPHZ_9p9^7J~!enOi%wVl5=B z3L&-AsQ)@wYyAuv=|nSkCQCAF!i*u1o|p~VG{O}C7`{^&kfK&o&ncY)QBTIxhz@Pb zlqL`}4$evG9irkQ4F6g}Zk`_;6qt$x_E8WNKd~fHj*lr$)Vxu?gnj?*vU}rb)22+D zoOt*U=Z#u0m$FRs0&-g);L%KMl016mzgamCWg$&k&0R1Cg-y5L?HR(x=@1Y11^Ujv zm)2UWJqScD1FRj_bPEbtAExX#qc`3y(x@1tXp(^@1iI>UJcM&suydG0A-f#%X`dLm zIqzTA6wD#FI{Js+%FY&CD` zY`U+gaB5jycg(5!OZ$npRNPqfJE4!3YJ3YIZkO>F>dKqu)z?nBI}U@I-pv_ummL3< zBKFBg&FjNEpfu?2%*__}d3S;R5tMBV@iRZ$LHx_9G$ye&R{Bmuv|;{lWb7B>0tQTV zawx<0MBZ6ttU0UKQWM*G3c(<(^~9`zxJgR~)DGcut9%s9q+<_o`mnLs*)R%KJs~>?-tk{=Ppk&Bz=cg+y7q7H z2pPT8FmAjFLb!b#WHbbu+j~89g|3OSp9V7nkE$x7M`&T|UeDH79h_Ag$}^N@-qOzt zJLoL2EI(RQph;zlK8E9RRA@;wpM;;W0*xlepoE95_O}L~KNZnQgWuXUvJ#<}dV@c=CulrZ10Pva4_?NB0mT`V71KU`_NEOt!S6u-8fAt7H;a{8vG-LhUB*Z>z$j{w3NcTGrK}2eRFV>Pl;CmW z*3IR1D*lEz3Y|aEsU>gHpT8apk$5t|6n)~fIO3;^k8}jrC7VaQZNuo8 z7AAnpqsT1`X=;xIIn5RdSD)2eQ_x+bAwlJ0Sz$5WKtvy3x=EQ4L~ zR%P)5%w4sYqD(kZZ2)EoGM^uRvRSeAhA@WY#k%N*?e@)4i~-FzIFf7Qj!H6LsM&mF zPOxR7yMo=a`opt6k42B*y1i%vonUTQYVIe~BK}e7@*tP*KbzbHj^m2^H|Pl7qX4yP z^@Z)jd|R-1`X$8}!U}MRuzqKVM_{@#dU`aQ*H~Y_YhwNgt1xxFIadD$d!M;L+yiW* ziT&k~JR67Z!GsXE`at?RF9$|e9F8B$6<&eOlN{2o4zLGAok9Xl&e6t5I907I_%K~g zjZui?f5?g-u%%vTreewkCv9V$#EqHKluo&-z%mvziLvlmV8Y6B6vs<51tKqzEBGgH zvsE!X((9{5>oNO7B$v4Mv-}lpD815TC*U-v_m~t)|{S%II z)CGR3Ba)4d>#mX@_B`#uv~Jvrq(MvBWy6ToZ~d$7$CgJ$#CQ@41#~PvnNRd7gc^jS z+AKrNIXtG&2B3+TB|uu1wrbWz^0N+}?Gf{OZ1%P|Kgt?4CPr2u-mAyNnelj)gp>nx zCT))}7L*R2Y$&nS7{vkO$4o+nLHpNlO9@b~Elp^EiP_z- za=wc-!(-$w`*H(e#J-WMy!IBV7s-b4ld4`~p`v}v0L)85<h18lTPN9iP{#W_EcLc@Yo4&pbNZU3m zLE~Yh>QS$sD?z-O3XJ*EeRMVwW7~Zo?FFGPBHv`Cg#AIJzH#;i`$NVD<76>2iiTUy z1;V*-U2e+c|Cnp<;j0GvPot%JxIgVsh#WUE;)oP^uxd!dpvn8d^293GwUEN~0XpRw zj!X=8D1r`&v9AB1-c#!+&jG;5H8H{|;)oBd6}>1n1L8g=zlG)_-`VIEPykB4)G2R_ z4kMJrwOPaJP*~_ZO{Sfke4+qr_^-`#+)5_kA37R^)o8~J^!~m7DpR?%PnMlaSuyYGj`gAtNu1~hpcXh$ON zVHR#hj05Va6;wnqaYgJX$sIB=xd=UaD>yjcHtK>ij{Lmn=|>l?u)@ROcNP*lPZ^wW zpEJe^fY~?R3zIm;kxgpAKA(JaS1QFuJEb0WbtI_{T15@P`S)I5)cab@_wGq4GZmZC zG^UT!V4sWE2!}u`uRmf3y~0v2a0v$!KeD~Nbq3-rF4_~l@Uh%da@g)0RLlz96Bv;a zH>rB|dV8mQjFO;zZpu-1^sxug_gd zm0-U)q@bs_Wp29jj-1li7mCILzYT20A+2JEX@V|7WrBl8aVVW0M|ATFE0(~-B)~4B z_{6v{{`!J=vy>sT>(em7IcI%^U>9Lc0!e$=95F zjoEOt`hf2h0>j$wG>eQ2 z_(4&72B|`@+_ze!P$i{JJ#0gyKZj1}{()s3dO&6gL#rhs$df-(q57uWoGhP~H#;oZ zIZ`dl500w2L;RM)d#!_k1h>3mdCeQtB&yqweO5I68{NA&r@U%c?0+?gHWO4}Qn?0C(4kHau!m3@jaF$0?~n~mcrrYOEH zV#VQv*^kO3V9F=dA+$@SD@-K2#6^k+}afga?v23yK zk%tuBz;R$@ zCEwWAoCA;ZEq@=^P&_GoKO5*gQ!YHsD>cUjZ4KQ?Tj&d`<^6l}RjXxyTJdRK)QE#OsjpQ@e@n!oR6Ca5u6Q7`p#1L$v#9=IZO~gizwEH0?@z`#{S<=WgKvugu4O z6+)e5PwT`WxaSP75`4gv|FhaQxYWf{+sUW5-N+k z!Bx-uN?8&a`R87hanf~$*$YJr{&3Vl)13sN(ZgQx*D3_kB`%1E>ypw)@z+%DcPt1tuCTFqQ55_X}1=d4-Nd*ooGZ$l4AG@$Bmd$db11Bd+qv|J|J=TN|gyiM>4 zB}MF(FGTspyG=86<+A$zQ3XuBjL*cqfG9aq&xLi-NdNRh#}-u}lG z=v-!%hD_*GtHVpx+*#|sr)64te#@(vm0&D(YQg`a43k} zA&$U7pOJ4y`|Bzb2=ahX+Xlrg@wi4js4U<0a^`T5Y7!fMY#>*f0MV}Oj|b)|vM$Ht zoaQKFMq(kk>I6B4@fR}6*t?JlQ#QF5?6k*w{Z;WFDLt({eefPhjSryJ$g$y%f+PIB z^`YzE*Xf>C>C}J8*MQr)3dSR_L@b}A`L=;C@@}#-gI%3&qre9!61t1N>CfeZLL5Zz z6-fhUuKHx!8o#ZwQmxigGl&CxYFkzm&(Imzx@!4|UKi+lD`<`M(If@0jH`2d&l6F+woE;I`R4END`F|Y!;mLw{9;fwz&9i>Wm zm)<8t%{}lIUS)`cGhLKM-@4&4fG;`HZDK5(mK;rj1lHR=cu&Ceg(1l-e>J0(C`78$koNg zT?ZkSeiX$#s%2Z{EL^|8ne6YY5_Yu9bwoI-PNYt}(i7qc_*Q)l93}ld)G_3cazJ{j=yVT*5PJ*El2}?4%!zwvxp@$F6n;- zcWhhDEC50kwKN)T2MaJ*%QSVyp0W zzhj`AP>koHXI|gBy1G*8P*Pz0Fr0cO-KfiBabvC?7<`dqzIgaq|5ILBiA+oZ8;k1* zCkOP^+tq*Jm@sI2WTyTFnQfa^zx>^V6WHa>+n(tY9z*t3EW+~+d^L$MS-2?0RA@^! zB#TYIXEVxC$BIZ8Zmlk>9@{<@91ur8QXf9vjcF-uT5dYBN*2XMWPOMrV3Z-aF>hy zwk^^TM2(IGsx)!q>qohc5#LBLQ1{kGySVBUYOK1sD$&fM;^tmqJKYH>p@!Jn z<~N``%uC8*e&P(wF`#V5jq-*mKL#;-CY4j7+UyS&Uj5dwaUTZcaEdGjfQrX%{WGva{@nCz z;mELf28uc{^2>a=PK+H!3(HMb`19Zu+u1J<1aohcF=&6msa(eJ_Gte2{ATw^e03$a zVZUea{S7tuH;hj})&6Y1~CL5KGez-6S zgDhQzCXtUx3LhTui9c*tm^K3Nyu_;4l%g~%eT+E{y1X-3E81V3Bf|2!q3`yNP!tIe z3?MB2gh}NZfG)#CDV6siF~EVhLLl4XfcBz;Nd>_0kf6mzF?(u(SX*!XRw{jL zO&W{n!kQ#wADeQ1Nr(11ohk{PiM@t7-+;2-1>H4l%pbmL@1mb_2$}gx0>dj%Qk0d^ zuXQBN6XlOZ196eSCJ$>}s5To=dIBo(3Bs`v7XYG^o|V|2ob+_QmDud(uZsD^aWr2T z;MmL-6_Hhb-=H6I&iTY?Owsk)fYWULXGw*08K0F+`i}Z`E8@`nKugi3bA{jA$#CqS zJ9eTA07aduF{lSNVk9N<-x3Xtbv)ubE?@ubnt5KAT zZU9bW#|rffViJ?Dm=177{yZLQ4nDqwQ7kBwgNEr9awgu%%ba9ltDmGcJwb@5URo@TLIaNZ{ZT?Xp=7hj}tM% zeNi&U%D4@;BHb%~-!;t$QZ{mV^ zwSA%Q9?0X(Gllk?5Mu1EWBI4ZZRB_=@{%62hnTsCjr!{t-{PGX^fy{s}j7)YWF`ODJ!(`y+rBERoy%k@{9c2tFhbnvB0PM?t0Wka@z4ppb`ZaloV=$Xe%FiDL%8zcF|!${xk6`yTA!*9UX+!yBV zuz%|hHjCg3rf3hx+-$`WQj{fckp!}dJeFGNKXkDP%1xV`+{hp7Fvku>c5UqXd!5|9e z_;255MihVD?R>He9sqqa_;(P?V(4DmxsrLh);Ao2ytd%UaIVD zSMX7i;DmS&p3nBg|K23%pB{^b=OQqNj1w(pG3d)>&^7rlczpU@Vw7Y?y=c}alEXkHyz478ey_R(5-;JlRAZ&ZJuq&@NRru zmx!;`!Tz6tFlEw@o+!n1{de2%Q8MohG4!9C)*qSAC-t1ve&x#xwH9u~DIsx!7euL6#VDQqSAn=mGPfbx8F{yWH-(+L`kYw^c#b zAI9+1vCJxc^!^z1`gHCWc91WE^6UGX*`b)mBs^0OY~$)c=r3piXPkkL37aDeO!jtS z0xo|?VQb846%En;i}g5BnLF2M@2&aNUIS3NQkHB<3<3W_KNx{Kc`fI1@k6#-2MDDR zIar18hSd_8JIx#rEuxZk)k%8~a#FC z-8I{f7lMBA$f+C-;QO}ROBDQ(oyAr#Z5zNIwVw3-_gaoY?1eTeS+MF1H+VaS9u&>b zVuSdOvpP)UWc#5CepJ^HavccIB|n0>yRGe}KXoT!4U6ddJ-^-KfL7c%@KN7)AuF+U z!c8FP-dzm97cLXcm2ejz62-5zZOaq3Jta+4&j3Brv4-i%%(#oPLnYyUd~kA|x&&LZ zFQA#g{g@-*@=#WJquEZfIN(`$l$Fc)MMv5z!T$lFKwiJ}+@`A0u($opPd(EyIkM2A zD3U5~8&}Xt(;hdfK{9k^q^f>ZRmOSFG=N>o4A3| z=?>_%!{OhZY1sYUL8WFpbc~MOh%R~3v~EyUBl@Gi{I9<6ne+d{N50u)?WsnpmWtAC zf(vL8D(nY|Ukz^|lZ2;cxbp99gQNMAw+q(z2t>ey*@XB?1Ozx<`FB##{{!LBQ%;zM z3LZcT<{vev60b%8ZAeHH;wNA|8?J6KJCR8V;FTo9ad9}+%JZZ>|2@fTSAU_p`OJYT zC>EVA^k0IX$X~!-ue`~{qa~=(KVY?1(<%#SyPR(#I?u9 z9qdx?|6hJ5ZN+CSBvA`{q6#%m!v;r_TsSjRc z7sVc3y3_MsS{WD0#K$ES%FCk)!5D>&)$T|Czh41ogPy}YJ%a`dHw7Z6Z~P<7th_z| zk9}IM0{KcnXd7`q2xdWn55So}l77ncsl`-rg^9w$1kQjc9YHKO3+*XCD#+uiVT6@O zTSGg`am?vOu9PPolx5`x%m>iA-T7mG`HJfI5ilpNDmAJAXYhs9f`(P_`SALo>ejvf z&q5n+mD_Uh60MqJ1x5)WQ1A#y03i6Xh{Q8Q1K#ilrT^Lp67{b!!(I-SeLt1@l}n3b zy-XYV?(Qw@s=8g}bmX?QnLYb9+7PSZczkHQOPbI0m3R4LG9YF8Tsj5AT1Tg~Q1Xwn z{sulgUjKih)P^oE-HWons>XiY&++bT!R{_f#ogFQ`m1PzN5;oYD=G;i>|pozFzc_X zl0p$`;Ty9=kJA`#-CBS7+7JG=rqX{gpwd85Rx`703*ujg`u;~y`8Ft`J%FbP0^aBekW%rv#Z zSrR4@a1Tas8r1=H90m0H6*{T|su<+*I3SY&>4}xYqU@nak#rXR)8r4mbz1fIHMjsu z?W*7jAKXw|D=P*;xPMLkrREgq>MDUk2o#)z1OS3Binwva4^?m=>cN&wPq0M+m{o6yI0UeY7 zcymmW0+RqPj{bRhUrMwv>tCUnTd_+IGBFl?PbSK2&I`4`1DM(Z$k>$g0z3(4{AtGD z$Ql6j942mnO!(6ojsvgt7Y+&tx+kgWWJxlMdhh;+e(Hk?WW$nb!nt-l^ItVfjHV5a z&~g~l;WW02v;Uq;vVm2B^$(<_n_x8~gS)viMi7o%}r*=<7no4o!fM=xJ(z;lo7 zqfkY1_22OoKwuQ--5?W~JaEg~J5D{I%_?nK4MO0|939ThN<(L1zpPsA#5M~{0a;Qt z3jBSH-TLLf`$1b)aAcm!(sXt*4N$QukM{|%kRh)9?8>nAU`!#7zu zqRev$M*47UJ5$r{a4@nx%1{kw|MR|lO@|j)|2X{VC1MHOX4J!9>uF@bK66`%0xl2P zyGDUM^(scag%QU|qkjZ`_oxkkgA8hSd7itCtwUd@p$fpJdQ3q-0gi!~3eZVE1a=ME zrYZoemPdxxLNl>>lcjsB-sbwz-gEDLADZ%MY96C#E~}Uf=mP-|@!3=YtpE#QLB->M z;En{R$S?tbRYd<8zmlS~bcO&E!KU#oC{(1<7=*%-nvH^370~Me;OlAxR~85|7!UO7 zfE)}{HK0E#_E^ZcGymP4Kk;8bc0hqMUIqlxTh+iUt4$Wxx_$dLzdRVDB{$KK}WaSnAFtZHJe+mJV?X*nqfDYGk zn53`$*0-j}{;i`*XEjihEQoud$E8u_O@FjD$CCh->DxY=qHN1=uHFNHvoIv}v?22b z4SBYhy;;xr=RR-6A^~g!T-oEne+~k`NMsQJKQGQbW2zxEljICenQAoXz4S9b@Qfb1 zq7Q)|>ig?4U0NMaHk>jp%T;-fGE++aIs50{KVcKZKjp_F(feNyKN-F6)z$BEzU;pe z=D4r&!5>HezFyed^~@8$n-6ZT^2c@JBfH&EaD)H};z%3KAQOzq3A6%Gr7;u;^qUrK z7M+Z2l42wRI378jHm8>U%p{o)V)c6qqHK?@i(OOH>K61+6mNh74e8e0ac`6UG}(B@=0C18*XbRe6Gi0@NT{6-0pO z&`)AO;FSXTHhtl!C<~}!w$pF=vu}4cH@!XTIkj8n{8KG+@7`G7tqPV0W?cY&?_FY# z0Ph_Us{rd!9$25K)%K**xt_~(18mf8Pa z>)(I~NS8ECxCM}6qvnk`u{w-!@#vo?X*-SrqS+5%5g7O&z$sJ!Ks~H@=cZeE3Y%HF zefQt~?f(~tO4eyOSkjKD&rBgrrNCmO>|YO?)d4*QRO|K!MFrBD+UrrDc!v+J^R=~hzk&B=)X?Nwv%d7eTpP11Y%9062gQ)R01fYy?MuvNJ1|GqDf~r zANbc{pV}(a6GxlHBn`XSPaL!Xc1HWQ*=oBPrufs}rUBBWsWyN8M}F1XYMf-rLSmAR zMGJtZK~R-fzVBaJ&n!{w`=BOW0k0*@>VSSqpi(&WHOmHro}#$j#InH#s+0*6Qz257 zqDmFUS2J%+#RtA)bwJ+|KoGzjn8XzPe$d`Ea4@P45R;ll=i9SC^#hN?G8+|uT@V6i zT4r(fys?1`5aqU69B9q!0${qr2LTVaT59bisR9TX5&#Gu!b!$3PN6GTt{ChiRAPK+ zy`cAx3}m=8WzhRq_mo;(oY7^gZ`2;jmTldfn@U@+|1;l#dAM;^9?_$Z*yP7~iC=7b zkoz?}C+!J95;BB`p`h6l-hg{+H9t&{#MtF-xp-m->!Q2$He#+Punb~5W7GCKIh z@GoGJI2t&S{AJHSss!YX^a*@i?B4#&{&Vl%)exJhC|GG43*sL<>f4=;n@W5pYBH4m z2X;QZHqf<4_J2N<{%?kv|Le;4{pt7*qkmV}*FA35G4rR}-puyv1FU9<-z!d&)TaVs z1th*Em9yD0#I-eA0Th0=>F-XJfCig8G+go7 z_v{|s`P6j~0jZsHj){Mu>;;=(%F4a7ls&Eh`02mOb3J5EN>C^LM@-mf5Z> zSR4pe+Iq)Vm-szL7=;R)pCn4FO=qI;PxPaQ zN}YH8>uK~ISJVv!tJ3tIpJPY%zrJ}_@9piWPV*>%-LHDnUwqt5ExZlmQ%A${Ks%N} zEtEO#hx#%oPH|m0tpZCLJ%2a@nlepd1%R?E%VMsUv#OAVS?!5{sqy1|ylGr zD!lfGDJ%UMFZhGrKOGia3Wnq_r`r?>8GEzUibg%q|);B?&KDK zzaSILx1(18fC@||&MtvP znNlE02Wy#BxBtao{Gb~TdK7r(&CDz_8L%u99{Ge%Q?LxKf)XUSBFr(+F#w~Wk&b1q z2n0WXs2Het4SHTcs=XPNqc#=0RB`}oZ4|9S6@bNn62q-7HU^@=mwr~^iGeN%1nKf< zSRCLzVe+ZBw7>Ts{zr!gh1oC1X6L~+a{=HK$W?$zE8r=;cKI@o<*xPKp*^YeSh8CV zeZiw30f1nFI^!I3#K$cF98l|%9wYAKx&P6KZ(|c$wu`!&ZJG^h^DP&3@?G___Z;tU_ruDz0$}HeopxmxW3| zfh^2=)wX)smMj0R*5j?h;U8xHU10uKWr2rB>3{AJ|dg1hU#+VTUH6 z3q9h%FcEDgZP=&g<|!k6ndN@DPpw|2AYg*i|tqZ4U&)?6H-%wb?)m230LH_YIH;p4Qdk0>6m2>4LGql?xYmDhF+p z_&$vtfRjO`kO2jN1OS2wVu`SJSCALIqCxyyQ{IJ)KLfWv+I2ui!rcD`W&gG+^e(k$ z)xm*+=nt}g-JJfjU^VxLMK5IbMeP4$rv+ z&l;qDL*@@@VC4l|?4&Z0uO{N9RfM7=2~4*t)&` z^1uDTPd6xo)OpH!@69ADTb-=KZE)@MxESP_X&uywH~V~INhk>%8HIM!6R$p z-G=-&CMXbM9{WjMn@sJ*_jP?DLxKQ-1ONg?*bF9q;(-Ln83g)?*pV;yF!z6*jYyD{ zmFLg-4dmWkWvTZ+YYW|JCan6W+AW>G;Vo~&K@Gis+GIz(;eqiSi8ubS{(`5ZL+`e5$7NjZ?V{w58;Mu_ zV`jMbi#M4z-6TuqFr#&U?Z=k6Xm?GR|HbyLn_C|;y`gMaNR*A z5N?6c1-KZjrO#h{Jy!u#k~;_l?c@VKspk?OfGMg1P)d(#k{u_Q)}VC(zlJg?VHULU zj{oUHltPc`Idro|G8c6LSRqgaeSnIaM85a$Z32~=Xa&(qDJ#AP?}SwWK@voT3Pe^uAq<2T5_}81UjR?I_*Q^ZaU#a+Vwk`Yphq5$#ubYLnKPH()~5H=UO9y0 zlzDz@Q!lzgU#}Lt@+N@S>H2kU(IHTWR!4Y+`F;FwkR`eR0`US6)DTaidL;na|JoY* zi6|*jS$1X1tbgK=vJP+fbC$Ay7?qs4zolM!f_ADSYHjWprnUOl&Z>O+E$FgR?|&Z| z4K_8C=z=yrssgA22R=*vvO`)J{R1hGdj7QiB0a|rT7jaaL!Td+zDa$VKf@G1tXpu@ z176-;qY_Y-80k}doPy59j_lZXG5+OSvj&tuZ2krYKQ7VjM)D-3Z%J|Y)4y?aV{H!v zuBmPtvtt!T%=A=V=}~I?gMoYOiFtJ}+Ea z#s}0I(%I|Et*L1Ab3F4O$ywpreZBYpfx5;){JniE1ouXVNhBvLZtd1P)a9GkS>JxN z!R2m^0E?P9YDrNkd~eU~+pe3j6o@q&+7*KYV}Wiwu2j2Ynn#D_paCt(v?_O=9~?aQ z?zQPRe*3rQsd=I*t9>pWL95@S6%Uv|&4-DkhM!sji%C|Vf-`k+lSE*Ug#bbGNFWAE zbw-~rRmJrKLP_Y{qQH;er3R4t*YoBRpSJsWf@KYr`k%LouzW~$W{kOxkVWo{b-QW@FPH0L*M`Q#wO3R z~-drAjq$SN$JDriPVqoAxws&Y}CBCdaS3sl8K853N9k?qkBw~e!Jd^=nXJFVOt>>sH6#gPFQ;2u@rA{mgM z>va|Vl>)w3Va@3P+!MGbMgoD;4XFSK81;T&Jcuwxgz`USW7PYB?VZc0x;irOSGRxquRo!i-9HNl)}v9iXZ(D#m;L3LXT_O5O8*&4 z`|1)xDJdPaVEh{uz18VtPBQcW`0(d(D^y^y!BPzXix<6E!zS!_#wa3C7FJPTRMU29 zDPuzmxKupmMXdtO&rerO{2RLhF6?0cH`(f!9&O{_{Ls&X@ee7Woc8C!WF^Rds@-sU zG`7Q3SEH=q=3q~o?$M7g+%j1IiJw!);e_jze98@nQ*@AR`6|HLdR+{sp7BqrE~hB~ zs0TkfM4!ig0qZJi16;fIISQV-s(0%ay{1F8uAYMF1oKXo3+gI;s%O>Gyq=%wQAV9B zv}F2JL^~l;R&+TYv?e?$z$h(%m`|tmyEX&SNpJ~6W>|UDEQm6`O zKU1|JQCOr{f+ih_x z1{VPC0SQ(i7y^dHe+(-Fa%>8DL6>-b09b}D8I;9Ao|~>t^Kb6_xxfF1dhhx>pD-n; z0#xNt12s3-HM_g?I;h-@)<>F+In*VJ+2`mQuOCE@J?A98{84O5aJnHC0D-E@{s!o{ zJ0J^NTYCq80`u7zH@aE+-v3?t?{Uh)wr5K{OCL|!F$Dm0WK!>+zS|aM*{`Z{>^1+L zm-~(7e!2z^n=0?n`40+!jwSqT)cQvSfG7AU1^}Zv@#9v<*;nZYvCMJi&zp7SGdC~I zek}H0LOB4_S%o!J>8CuAo&g>D%|`YVy#i*meS00H|FZOY|Kp-6RjcJ#?w3mc)1!8Y z3==c|cls~$!M?qd9q*!zuDz{1BO4+~>+4%K%CmZgJ8oT_d^rxj6Qs*ih1i3R2hlPA zWW_~=z*srKXy7`nzm@zB`zaWzwD3g0@?#3UaF$+9`fe6(fyunpM-T|21i!4@JQgz^XIrqx2|re=(Gsb41!esH9t*3r{I;4 z06@TaSfvf*H0%t=I<1iXWwo)_hVuW58)}(0ox4>2pPg!%o$ZmSs5IIBw*TgFlXu@j z`^)%fRP3uz%5|49&_xZD6wV5*poc{6v+`mgvl%;C!*37aM9LXzk%3PI@-kA6RqP zq60Uj>deSOoM|ehJ`ctM+Y~gmsg09sH>OemDm?do{xAOq9jm<=Lob$oE*TWpQ0QjO(UYF4=P=_&9j0LiDWiSb1K_Hj~*+>Y)m>@_2$}3`WK;X)# z3lNR6j>bigR>@dr`J38*;m6**U!=*t-PKhqOXgoUO;tFo_b?IAUox0HQ7c=)5_r|% za%|;&m0$NL6|6)V@YF&A00E<(iDG{M`43}6IKa??MMeRX&kfj<93@!ZbSg?#_V$!( z=jO0?ptEoKbAJsj)zP@<)9F1j-sab5GG6Q7XE$t=5;7k;_|fyn+&}B4`))mFQpljd zy7q^^*I(!IKV2Jay4HWpYJf2afI>UZ{*Oa>oeq8zH2%5PN-+o?ntJ{XD*dAme01{z zA1*%k{$2RVH*(7Pp!E;p->9&I;n+fUR%b035V>AsWEZIgumz_-v%>;4=uP8b!Ub}_ zXu>Wnt%bwvn)8yk*CGi^*E6uwoP|9~nl?_L#McWGC|3|f!FKx6CAAX90u=`V+wLs< z7U*vQv!H!&0p=IkD5#GI9#T<$Tvjb;13)6UNNj_u0L9Rj+aLZHzlM{zktJuS8Q!e? ziOl1n=nX-csto!OaU2jRtCFvAm4a_#eGq`s6(&*)Q%xZ-5T*fiJ`ej1JVVDk)J4V3#0;k^tp}bSZ7tZZ;##V)yfAs!0DFZ#<=yB;E*?$!MS*4P7 zJ@Y?4%v602TSl=0>TM_lqd1(9p~kEgxJK(yVZ@DYU*A8&$qVM+%i9!?sZx?PP;uN)<=ggnnUamMCg>M2{ME-BNezVGM0t@YT-AEJiQ-f%d6p4MZ5 zY&=zI2~|pNLm5y2Xf4urnJ|swgU|&0eN3D%nF`Ah)2tP(2~&(rNh=p?(ZQ8~er7=z z2uD-QS}~_0a|org9-)>iVhm|I?%Oi&^pd3?9J(g$!WdPNv`p^=3KXRmMQ|x z(aXmyH~IkM2NZ-%Cy80q6ddfV{lte0%E1~a|I=2TH+l50 zR8uL>a6#@Dhrc-*+5P0usc`tC{LCY1=jjJ_mb~KMx2WR0lV+K`mD1BY5nx_Lm)?=Lr@JW#USI2FDYNT-Z z>u441{90tUK)OcNiZv=co3+ZYjuW;I<|!BUykLGncrQ%aVqO?1%48dJ%$pgEiUYha z8jIiX-4u6IU^6xdcB*@K%=We?psHXM%tS!tZGzdsGa$-NpAeuDoI*$daLQ2|`(p++ znEyDikSSo};B1Ss|8>g#&!0c9&|`elrHg*uJfMr6(&$H0)@5{~`yXS43PWR+LxT-+}D5?19Hl@pKN(U}f)k<$_4&fEbtt{OA zK+Hl#fby`UJpSFdXX|*FfH!e$=oTA0ZSu`#_6=bDAKv-+hacQ{*B+Gq#@;5T98*%K z>F^)yjO}!$%FW>(HUIl=j}DdH{fvG#m7JFq%l&f6b%RQ-qeIOl*Hv%!gV)cy{Y^}M z9@=bW*6av!*wQ#CxirP79 z+^A+dDYpWOk}gL{)w}=vp!d1=zu!Q^F*Q%oX`NL;9S}u($Lprz=oJAa$Cq^K&^k+lt>m zigg0Qc%UvvWz|Q&OQ(%DjhFvO#~oOfErx>d++5SVX};^Sxj>oDrNaDm5nkBx#R z0l>r{NTvZ!FC+js#fYP4H4l1sT&ljp{r_lP3x9TG7D%@4z4W3+&+&mRD7T^mwm)#4 z@BEQJOb^tq%4%pUJ2uMqFIA8}H8`4)-5>#Hncs>I{0dGg%#zkA1p=7=PrXTswcgi< znba8nOW6jumQ8`-w0#ht{Tz)9(>#@O7cMVgBUEg1z_%5dD0)`Ut4+O3EEh5 zJ0A8ne)=yx+b~VqV3RU$Hqonvf?GA*Eo^71>-tAW?i>tf=2JH}M~6^Qp92FO(zF~D zDaC#1`fD2xEpPSf760lRt!%ol#7VD!Pz_Mt+V&c&1fsIi?Vjb*cAif;kW$mz8;*+r z=z&uputWix-tRd~YOqq{bV9wTX)4!`?T8kOZndevP8A*Uw=Wh&5Qk-EYp=u8~}M z_P^y#96uEPtH!!kn(8Nz{crx8AHJ3~GIsh?kdK9oY>6`Km_8mlO_}4&?4s=@eP<2_ zHld5UuT-|%wG+bC#)r7?-(mvw1d#bBEOm*XSo2}el``$w|0<3L>V$(-+)vMC2&E#^=$vuA z1KlZegE8EyDkxkSvpQ!K1zMlHtgHNQd@W<3Ul(E$oIXeZAb3dqFDm~b``=Qldbqo* z;mwZE!`c??|IPBQuBKaNmkwN%AP;*7#$=sk#T9nzCDT|*&maDNp4oC)-zsm4g0Vk# z{d0a4${26=tAnpPvVKptD%tH1**}k3Q7J&DxlNHI(QW+4?EfhEhaiByvn(oRa3kY~ zO$%rLwoIC>#y42nX-5z4Ja=&OJ$srC07d&|4y#|xi_=EE&~7Un7RVg&kUAbFlv#Sk zzq<-^=$`cVW(VCB7GLXr&Ux{gV~_j5w4U6S%>PTHP6n)b*mK6}53NXSvuZh;lnEUN?hHUO{b6rMr6 z_Wej8d@W1}j@d9Mcm=Rokm6|>FFgbw4O9Uvp)9zils1=Jt=t?Q9xB@{xguw_8}9DL zh$nR}hN!)J{d$mB-g<~sdHj;gnmnzL0N@nEop1y5BSI^o)Jhlh4pBmU0UO;wZ@jpn z7K;%jGiSYJ>r_W~s067xZS2@iv%QW6?HL_Uu&81nP_gu>_d2KaNBh1f?0sSRiwXdJ zoFOeYEbPxy{yy^$%6};D)5Z!dRm@*80T7+oYNRoa6>Qn~csY$Qvx z;Ahmh-{1Q6AODR8bpZ5t?M?wQTR^@9*L90)JO&da1CCCzbr8s5EB0h|v6GI&=Ylu*8%<(-E@)yw%H zI5A%H0%d*VK!NC0q(5zElWZghSEfGYq>G1&@W4R-2vpL_D0+GaoY zExvzae^(!3GsM7kIq1^^*@R_9G{&hp`{!UFWdGa}K=#iUcKd;)T9wk4nzEm|V+Xg2 z-ToStuL5}GKlVjWVDeM?jEeyypkUBqJyDDAj=g{G`BVAdCHR(BBTdgCUpxHl2R_p0 znSWb)*p`k|CPXZDpOGl?un_X+9`flmEZvoMx&9xpCbA#YM-Em0zO4>q13e( zT%v$e2nhgAIfDLrPzb}nSGZK@TZY$pa|PQP1VB3;>czzcy|r2Bndwq@)q(0LY#u#h z`}_B4Ke1_wIV>JynjHAZWSH=Tia=odBio5H*4!6$-ZB-6X<3}L#<6aF=Fh!cx@4go z?=vop^~a1q;a;qA6M}(`qkl-a+Ie=4HreLz{_i}u{VRX#)7W&!x@nsUcnGP_3aK<~ zsP9i%K5W=5h<`hHOl1G8I!Bo$vj2RG$!C|Fx48H3C0AD`#6SO9UY(4z;bY0Nes_qK zfD^XClOW*AmA}eW04Awk_bzy-0^G(IP!Iqvz%sRKP^|(XaR1=YO;1m&{$OOys9g?V z>r7RE{c&OQW?JQe5V-Z8pZdaR^Ru6%d_8NovkN$q;nu_IfY7aWUQEijn<`#ou`Q5c zjiL&W_=CTZrPhxIhOD0g+ANF&!a)etF4U-aG63s81_7v9ffyJLee363xROTKRhH-! zQc|WG9u5WrrTTq!z|W=B3(Cs^^UFYO5$cbyhR52Y+^DkNmB;y5@TQ06RGbDERWIdj!1Fyylt@ zR258byRNyu&cZh<9dEvbKy7oAYE|3&ObFbi`wkl|t7qmMnDa~s)E(DK@^VbA0N7PF zOj@djb`Rcp^;uPo3tADgd9Kcs)F8roqH89Tq8;E$KOGQTPa{=@+kTCLtHNtFDpe+Y zl2h96+gg?KZ2`lE6`uT>xY!2p=2w;-gDFtpgP-RM@P4vX$!cg&UN=6ut_J?+_YUcG z=(Nm(2M^TdJ+FWXUx1tO?5a9; z6h;3ZV^(0kgJErFr!@}89#sHbyXCWuTh|ZmxW5iF^JX(?p`s5}RfogB0)ZbbPsiHm zHprvmHcFW~ao$2T_2NI46^2X4lBzcJ`jztKRVbvI$nZ{_iltcN%l_raGq;uTy?<=p zt!DC#sKO4u@LM14fBt>@e&*k>O)N{q>M05h#(X&%j%|Nyw^Fn8_>?*7odcI_dZ#}% zary)6{}$iAejQ_yOSSRItN!0($<Mg2RrHYopK-2|TQ|x@t)tFHrtftfh zKeySls04t#xp+XW0IC8&&p{9Os_t|H0UoWCky8b=0;nA{>)Tl$OKITf_Yu@BRQS zFr8=F`Bc#&F}%*aNRajwfHH^!O@Q{4J+4sswOX=S6_Z&hnAL?JW#vjhm9W7TSHM(! zUr^?spso-D1NaVEzQ+5f(a0Lg&^x9o?+@Plk8bmiqW9nv)3ffNcj#v6y@|>PkEot_ zJy*j>F9Q9zJZqCFvOrHEBmg+Yi0}Dm!;1btj{s5|U@d$NHr3mKT*W|dl|UO1wE(6k zckkK0DK|g&LG;vV)0|SsSoq>tSlw#QW_Tk@!bYb!`!B6$O#41Rllv&cr!0qWWBkuh zDHZ*HWKn$hWBfW%T>dZF^~aZDSr7%XgHg?me!x_#@gyB1tztAd-1yn=r|h5lsYvAD z4p-Q6M1A0P$2dJ|P#w2n=kgBP0d9|a$554HRyj5P&%Ne?J5N8Vv-L3xZ+akVBzVUE z)yZptR5kYfWncZhAvguAS}R3Ig+R1iP4`PX@sl~kcM^uy9fG%-oH0^j>fkP5-wta2*|yE zRMa|o)-iZfZQl5$5&HJcoPR!A0Mp$my`y#%Mggf`$GQOc+B=#&%9+{=1ehC?Yy&J$b9(Xz`|2JE|uBf@J9!KQ4UoJHnml(xn4Oc z{i~7#5Im=ZtpgHf|I_C@`H$^gi-b1N7X7@ZV88zIzx~_4pknF2N#)m8S~c5=ZBZE* zR=+q5pc=QY_PN3^ujbX#PUfKXk3$3#5Fq{`!(6|0>)52`%92CS6gN~HRDobMQCSm$ z)$a{42nYvNT&FsYS^`nE(hCH6%V1nK?4oDDt6&y%@S^LFX|bTiV+IbI4})M9G=@ST z41-LQu5G#bt3Uc{6b=-$hR$Z%%p#yfaLJP;Xf=hvvj|nF=t9ZB4R8Vy-vWS|C2ltq zf`HUZS>ydt`00Qu1OqzoUreZ$DO3YEkk%9gCrO^AUHWORf8*CbiyzaXTAMl=xZWYv z0v0NPCG za_`<<=KsHbae?ofX7@cxpqfpX{Mo_Xj~|sgx8H*#snbe96<}R7Y+m32atnaIBjJF6 z^--xj+whwnHpsE#u_@M8hrU0Z_{jcw_MbM-EVKY1#&SIRmvSlAZ_1VL|8sVh=&45X zS_4D42fy>&(T%k|U8WFIshTD$Tggl>#z5BmW-29boOs@=vBiHG4)MLwSt!8J{ z9tAmPmX`RnIv-!Obx)F9<=1QV70!!FaB3j|fM7CfjZGDo)m7Ro)+oQF&2%Mv4LAVU zL|0ZWsRuk@O=ZU(IDkiLh>)xv;Oled5n6cv*TgEzy1E7 z{4k^e8&etU6^tm-7*W8|rmRmx8kS1`ba<%gZim{$_bjW(o$;F}1b;yMQ>?5Ci`8#& z5d874$`wBR>&j|C%v7cP|NDn{@W)C3-L}5sfY~b!Y{!Ofcp61qF%JA)-rZ@BQ@mJzEX;A84v3O?4Vi;poP& zAJ!VLH*i`(2&_^b4J^y_xD^nHfc`eEYdXn?ffUGc){aYL%meV60hNCr(0jwOCWf(z z4>eqxsI-wJEd-N;kNop@jz=T@8H3@FUJ`mo^%FN8-W%J`?K?;!vnkNc7pMeqi7O*( zwbwINtm11cLF(y*1OS4G+M3r0zckrM`4WKnYD;~^?dP6%%g|as=(*`9x@yWKwmmRz zh%d@>MOA=7wX^Y?_^{K==Q-zRI)L)>sC@8y7eBUCWkdXEW z9nLUxQz`PIk~1*Q_<7#n3%Ae#PDP32DLm5P<_AAg+<5=4E|O||WNWI|>uGErz-pH|CH$dl&Nacxw_|Fa z9)96tpN1e%E6)}(+7fL%^tIpEw2NC@#bZ%AD5zmmEYUZ$z6wB_tHQWnmH7TYM1YD> z$;y8K&tGfE_k;PLYKZ#Nv2L1;^fi>(w~DP>pS|~sKlB;ZXkfFfbkmFe=r$ev-D#`n z@E?q;YG!86VbpM*O8-myExU9^vFZ=T{_uNWd_#*F=FEw>-kpq7q5S;x(@)#zu2vVX z5mxnA4G)nkW3W{V#Aw~VPNPi&sbEZOfW(^Z_=x}n0cZvAW6V?d2_9=QvPXL0+G(R| z8<0U$RtX$~6lj{&gAe@F7s{7!{5GxMMyr{=4o-n=taWAB>v~*yRZ6-bAZE^r z^@2ddFbc>)Evj6h(gl0#xZbUAnECgH3BfXI2NWH*n<;dt)adgcdnPySN{`FRzYbKj zpa8~AwKanBt*X#fHP-xIEk`<rd-A2@t0%WVxPBq)Kq=5#Rin0zf&H zFI)daO{7-U9d&N$l2I>?oTc*rX3=$X-8t1!36)p3RlYc{_5RQz6VG!hvA^#h-mF&M z@;ga;?#Wg=o$C+FJ{JK}-n?1eB;yG|<7fMI;*t!cC_4O+E$L7lNPPb93LfiIR9#gm z1qI-670C8Mz(N+rqCe>SThq++T$bp^EZx5U-kD41tJrGqhiQ|XBg4u-Cu z9NKfOGZu2cs+B5ph|)hr#oG;szA=yer5i54le_E9CdB?7NL2nc^6dY>odAhaoe-{( z?Em*4ocY(tfb}*DwWs1}AoLn3fL-(Cyo(p}a5D!|DMg;qAhd{UkA(HTn}%l-AyR=im9rliz>s4QZ0iw$t>nL1kacK<(2o zz=kIft-ma>XicTi0rF&2dU~l#vjP-8tYdgp(0ZqJRt>#TQB|>rKw-V2AkP;fP*%qa zsng8n>B%(8Vz7JguYc$>y4lA2Qt6Zq{~rCMnWlnj<-+4<-2SbB-Dcei#bc|Z(Nmhr zSFXbcjtP%{vZ8K*%hRA#0O4 zxa4)|Ybe(N{;pL^e4iNl{N6C-%HwG+?T zHdC%|GTWV=aT|wycl#h^wK!k;_lG|i)ZXg%wJK)+z_n{v9{EDX!(V!-UtQq!t*a}B zs>`GbfHmw#1A{=&<)(LQ+&Z+-$44aqr-T z06dc*Y0bI3_DYs4VWkvn21kj3W}Yy$e{}1k??p9h9LoP_V?l~@syn6B%#3s0Gmj< zvFYw^Zad^wTleXo1?*Xiym6`y1cBSMA-A0#_gPYP`@R3@cU(Exr@m$0Xyj9jSes^w3sz~$l>o5(%hH!$9VcLwX}7ZTbSAV*%>4iK z+dfP`*EV$1i~h9QmdmCX`=ibFY(nW?n%h~7{88y2hru$-{d%#V^K`jQzjMr66FG0Xp7n6evi0d~_1^{ekr4-u+vkKm8Y3W>i0}JH9&}nOX$6-tb zfBRWAt2DK^@2P)0#7=LZuboRQ~Yy z;zN$r14?5tNX0$>ib}AW3bv+Az5nx;?!5P}fAANn=8q{u+Q4D>l2xOmQFT!IPfDwY zY1Nxf)Iy_W4_@B0W{Eax%KnoqX#G?6j~VidbZE@nZ}NB<4ipH^pnr-g$;!$~{Watk zfZ#t29^qnHcU%mkfopDSYgK~}fKV1B&e3b1(&wMc-R<#MpT&Vp2WCQl_kDY)^&B1k zMZ@|ZFw}$5ShsCMK`dfe71c-^ot37#|E~Y_*Pr~}AN$YqEIU^e#TI?pc4jQC)`V+U z4TCm-)`enGYGW+4EDDujVbi%@u!o;t&n1%t=;^VYb#*K%=${3`Wi{JsJ^@?JvbX(t z)u57oWmR(wV<8Gs=v`pC(@y8kE#@to(C@Pcd0}M#FK(a(FnNt)02`eugZP(_RZlsj z0&t2^C#_)v1qa|bi&~w09dz$uECM#QF&CIf1?=wbQf8C5E)xN99-}l_*b(nL4Y%`w zpZvHgi&2v3>1HFFwhm%Fl^!dQqbv?{ziCg1{G!&`lc-DTTt>|ngImcD=`1H zXaARqg8&!}bUN8LAsZXrzxn+5^Uv&Mf%unG$}}o%iHr_Te;qyTX4A4t?S17}l->9D zP|_jYp&%X7AqNl;_4cg2 z&e><5y+1JoSzcPwmhiqG;M?WOc>c3$4(+-0+RlC;OiaOczgJ+&2)Jc1(_*=YY?Zd6 z!e98rnkRD_W9(a6U$yHE$P%TLHz(1UoKZBKjBR)5VDLSco7nquO4{F#q*yOP9y0qE zHQ&^>Pekf|Yuqw&g2nKLZ2mY%uZYuzt0L!E_6$3k(&{g)WzA@K?Dd!?nxwKNU7a%e zTAHp;YGMF6%C&!)CunjEP&<6~A`sq*s|+B5vI+7l6S{;@LKvC~k*M+xxaFjW=C8Q^ zFhxW-YY=fj9~M^M9}lv1i($FGg9vowbNyWpG$ph6MMZ8LRL_ow`jGY4bAS5K;+_^)bUm3a)ulh$r~+uv!`t-Lt8;U2$4xfK z!}c2Q*NQF|QEIG5i1pon7b%y$cm zAimHeqKS~q*181{B=W4`I@&cy0NSpIa)wT&_P(1rw>>*Q6H6!eSo) zDiO8B#{L|DZ+xJJni8LyXKLTYqZjEGCf~mi@ia907W|6~&4SM-%D1Z&@;y_m-YLq3 zDXd1C$r!d&o(s{^>1dNG^#mcp@?(HQ^tCpR!IMKp@(*wz2Sc@m_uSS$Y(7ucQXKaH zCRzYW7D{n{ZjW8m&56U&^r2@mE6U|NKasKJ{1Qe0Ge;S@pzvhyIbi(TA;bW*&qP;g zHFs#8K}Y!I>*Ke9jw!l@l4sshZ7+52+y@faz{Z*VzZ%WJSsT&usvo&CyC0);OI4yz z6~8@LJ%uTifdgEW?uOm7CRa%5n4@Oq$2FTFN(Jv#OyzW9SdJqZ1++$^koH{y? ztUgZGfTm-GmJOx=zC5tPrF>|G~`l;zaHmvD_GRr z|C*O$hP{u0**`-RIneqlNxk zB7PN@BJV^gji*vzSyz)1O6fcCo$4m2uKvlE}tBizK*j7$8ss^JlKGR;{HoY{> zj<-N>@Ds~KXrlDO0&KLz`T{aJdJm#>kP|9PhVu=@(3=q#Yqg?|+P}8_l5&fJQ_)j> z6pSM;pgt9X>AznLeDRq}{VI~i-n`4rpB15wI24%HcH7;>Hp6HbV#yR1FB}OJ2GVW4 z*a;rJOnobZ*Tq4i2im995CY^ucE14Wvu|ZNIQF9i1?KDGkSNqVr2%tW8Rsf(A_ zByyA%+!P8|d(T3oTf<)j@&BtMO}2PQzy>8=QJ78r0+KZ$#^$@apAHWl8P&S@VZ$y9 z?-1)R`Snd;{`^&qO`EZ<)m#yKgJG__1=~LxeeCC$omM@T#&VVD#tWd|jNT9e5;hpS=s(KY zGgp#zqw0bGnZyC1yCd=pE~&qcM+bAtI zgcm30HNtIII|w+6sIIZtsLwB~7 zI;)f%hV6gTWL;_$#s2CZ5ejT5sZpW=3hOWG3zg2Lt5z63u(XxacHLhjCz;((7eF&t zP}UFSVP12^PHCAS5vnEn7B&@VGYr|^TUgp^;%&p*bshLdyKDf<9*mAXW+<^*nRA_R zg=VE6k@v8E0HcFLu}XVm;Pk^z4;)S+MYTT9?R#Fvrgw{gw#4-_o*$_EhzZhZE&T)A zO4V!hMMG`MjS?Z3bxLfLP{=4go1b?%uubgU{XK6tjT*8f*z$=L{%NIYmd{9ezE#D7 ziQaaCW-R{X;6jrq+SDg6ZlSnC?OyDv?AA5Qz#4EeLa-pBhi%{uICVxs#x;0NBm z7~^?CZmuPZTDG1{H#PAv?RfVtsu9ybnV?DlY&QI2Zcvl7ti+T!5t_}Q)XIjL^#{W1vQD2)q9h@QD6?ZUs@0Ki4i+L`!{L1y0%fQ~-wh4tJrtgZ(<$#ki zc#l2j3B%7NKcvboBsP7ya$aG@B^=o22VAyjhu4#xuf2jNT9&;4|A-wF%8%sQ2{L%w zM-uvngx@xEa!>~_Bty8=I$wm-+W@guKx$^BkFnXjWLK5hXXyO#Be|Hs)*}5>jSE& zFVnAHQb?mP{x`-L1-~T`6~+*kx<>-XYg0dWP6eF4ix=OLYR}Jy24eEggn_rq+XYTl z7ArL{di&}xGshghFF*GJ;XytP52)9(d*w@RrN(S}Jl0C`7tz=rv#1M_!jt`O#Vo?w zK?VHqCWw}EgZ9L+v4qIl=f<8a@PXSi>JRG6H(#H#nFlwysUtsZ{TK7TJTWE2lDLvpRC&R_jDE+&3GIP)`otjYoI~ z_Z5!@67yuBQgXtzoRy>qDGE(N`fo*(;^v*|;fp7HRI!!1ANnQ7*F4 zxqSWij;!wByke=2?fbil0%su_PMt?}c|R$5USQ#;se)Yt7mg_{d=$@~THj%x^^5L6 z{qA>^25Gw?rxFIfMOQ97z@aGy>#F!sbqYhah$3-Tzxisn+x9PL|ozsf>nfn$YbvjPyNgZzyzK%dzM+G)Pe!W52F%W{?$ zS1Zil`DqTI0$>ca9rmU>E@_g?Fp3Yz{9^uEK;p8agWaHG$=3AiP3?l~QR3hHRt4|-HCPUVe`_iYgkQs; zr&6h{Em2wTRO7~ihP?i-fNONq56PC{RSf@vkW(0n0HX0=O^5ebA>J+FW zYPclsB77B9wg6>N*79nlCJeX(@5F#x5et52i3gGb<&IE$6;)mi6ukYtfd|6;hUT^A zKv<4Zd;LH7-SWywY^2Z_qHfJ|m{?c2Ui8VTh&k-|Ao|!ERo)sk=8v#~UY}dA3C#4K zd%(AiQ#SabszRUo-dAj9H0j2(rRZc+e@dlg{C2ljM^#BZ4rOPnq|~5XF@vD#x#U&8 zQd)ZJbm{Y>Tb|it65?XYW+m!-GYY6#ksd#0kZ$z)P60|M4aJ*cQEaj;psvI!P}KhJ zTp6s9S+cngb%XD&6vB>r=A;?OZS)t}d?YxR942EBIW-3KfBJw+_Il47!XT!}Hs*>1 z*QNNLO85IUf*J%H@zx5wbHZ&r`|uZ#Nwv$7i12wNcSuOysDzXUK9t2fm9uefkmziX zSTM6U78VU1j5e87mYZsOaOg5|In2?`Y+F$p@SHz!Wzp$VUlGjcOsY&aOKg(Qd{c6W z)!#qTk2GJuIS~n-FI2izi)rFi4m*3^XlpmiyfxQJ3QU2is^)6CPpf^m?w%|1aT$MS zi0^0U@SRo6YnO=U@qEOq);LooE8ocI;Fyr10oh8+gbuWq|7P?8%>=9z=Hxy91>Yp^*>zv! z6`fTaIxSub$O;~ekwGPIVLr` zmuhoIJ;(Fjhbx?EUbEf))89j`dFkPr2yg}~;~{tGB9{5AO3F=;5;E|Nn@pevO1xPi zl-AZ(K@&XwH=h&InXJNZ{gHDw$5uC6J9Z~(d=^3d_ zW0g|Qbe8lZ7`_Bwswn4ykHn8$=R7nEbbO>zk0>0gT;s%qEe%HG@w)UJF-Yl2wh2ww za7)MZ2xkz8pQIC!MZ9!L*Ji&_MB2grW}t(^kPMYwxibB8yWxCQQ`s_vi=T(pSn);S z)p!r@v+NDg3Bme*vL}ti#Afk^e2jTJ)qo3U2{A~l1QStY%Q4}w5En!RHp>~FbxL4DpTtYfS%-dw-`9{rv zIbG6AX2`T1B1VxK$5SSs{{7~*#qf=>@$sF=fh*e`=4pS|KI+{}LT zpFkYpkiE`gF`G%rp9Y8uq|>#qoI%bqX|-p zNz`jn;@P4E{lU$4S4sfhho@jhxn*gdP;&KhC)KK6haaKGYA>0`*Y$EFj5-aav1QOn zoN~wA23JI5Mf`{LX6`P)&(@q4gknpdj+9Kz;`!nEw}d?F&}d~J;{1=7WS)&gsPsL# zp~-7VxR~9L!2Z zCv^z$IQ*Ou%q3q&uW>kc)0hhvrTCDzxxp|m*wB2fM~7GA-oXQZ-B$x3A}%UQ8lfZ; z#-fG$r~-;Q+DG&7kSbF6X7UO^y7_&%Q^qCTDk8@ey$`Gap3@(`XTLBcKDrwav&aaM5>HX`3t6mJlyeB7K9l z->W;@Hl=LjZRDUS=%C8VelrMZl3{8rh6x2vSJDpF&-QSnH5K93I@IhC8zP#wtKOwh z_}BDRR<_?$k2PAy|2LwK z(csOY|Gv@HK`l`|I29)OY*>%$o+l;TY+%X7my2#uA})#=FMjh{hZL__Vn{V3z?pz9 z|H?p2%2Q4gKmM!m2L=Nx>q z$z&3`<)Qb~l^kKz99B$38V;x@OzrTR?$AhnP|Pwy3(Olv^Qz;wF!8fLQT3s5uj26L zH#t-*v1U<1uL|m2dcVVMI5s<9u^Pf~w?oS8UBOmNoFJg|QSzO?m(?i9j_Ca>FO-=dNB-C`r#Qr1d&qgc^=bWo2sAkwKwaAtB@Q4otaMtLS6Y9!6OKk~sdpUuX+gam0JEFS&YQx&{?v|N zp!{}CDDQ44-~dn3R5AaNTqVMDYu(%ck64c^V!35%2jdE(g7B!WH>KBGhPkn%FE&A z(sJ3RGYBAfjVo3W%#~f@4t8^6oV0bbgM}r@dVo;V8DaTy0EMN0eha_uVP7*m+}j z<5$75W2yw;cfKy$Q}OgBpl%T)(F!C~A;#k0B3mffg~Q(`4l%8(b9KlD*2&=HLT_*~ z;vV<1R1}X4|Fo~Jr_R53oAjM{Iu@*fU*o;GLEUJH0n8grkf1gfTx1hC&PRmlHrK^8 zd*(r^JPoH_f56Bk2sWIp)m=K#kY1uMzx~{eBU76sbE5TkW=VmY%cjn+17bdye{y{+ zFZiSxatbD%t(&3yrnQ#{emcXRAN_q#DASGHhscx68#kg8x+Yo|-H|+u`g8u@(E-^a z7n1OOWl6nbx>gDIad`r&O4@ za`x0|VuzlXe)az(EhAl#%8bcN&qm zxX@jwyH@wPPw}X#iZzeuh*%&Nea=|b5e0DAMeLdP(QesBDkL4$8;B6r8TF1{+~r=#>7SDMf0!cY#! zx8Z}8ve8V%s(NR;6z*y^G_@u88)O`d%aJ#r0GyVhBW6 z*n3swSK-%?5(AqfW9Rpbb8ktg@>m{EBE8;X{adx$z1%`#bh4#f_h`n1!~PnU809WM z;0k|i$7}SMVM@jq{HB^p{LEj5Pxd^$&}r0-9tB)vq`7|fQXV5eKHheZtGhG#;y;s# z4Y8-t?s3@DE?{gKD(ztrj*@Am5E*G-S66*d_Z_bnh(uLS_pbAhv}E*;@Su+AL9fhXe5U7NOJM%1jigrE2r!ZY$BD@ZZ{KBl9Lb~ z*>uQiGiOlXtDvaqV@D1t)sR!_doS-~X5}JMc?QgC8+dW^lx0Ne;^Rr+X~LU z8TJxY4+ayF%@3SmAXRVOnwyj8xay@Y@3MTjD`gFl$1W=N0pAt&g`ERMUHj)XHH$JQ zHH!k^Yv@Ll34T@!Q-(TB89ck({qPQq5aYmh=JK1E*-QX;PIN3zW(EZgX9hrhZwi8o z>_}~|>}E~p{v57LS2>gs5RlxF1|xYvEfxNqMAnrjNC^FxN!q5@qHQZX(LHuBP8?}b z%1<(l|E6XhznB=6odmP1y*18Bc#`|jb)N?P9bPXnYh;v`{2GN6PQfY{-cV;zD-m$W z9-Ic%arVhKDe~>@>VV`nx0kon;+z~mkG#tL*3zZyM7!`r@Vg;14zc^YZ`_WdP%p&g zD5Ah9)LIBsFKvmj;1&X|{4r@GgFyhQMVjc5jXjDU#Xf)y=EJd( zg26$WU(+#lhc6*%^%q=@yj3_dWX?*dBmhgsQ-w1fm(EJz$?hDf?&@Cr-sk<2Vt&3J zq^;OrZnQ13&$Z)!_I&;P=K5!-V(2-$eebR$MS#G1l}**)X%aaD(wvv_M2(8YYlX!+ z$`!y4^5RHknjJ^V#LL&<jkQ0z zibA)qCe4(B9ji?QYB$MMg~U1Rd*GV<$z3fIl2nlC9oN=w?j+1VQFCbdp>QPXqrY`t z#TSU_nn&;D@W3SjD!KnTM}WvCn+yD<)P$(_+wZ-pbdrp0RG-4WAmMGc z<)fPJQ1RII8U7_*!wo?%2OZ0i&>q+9O>m=SGekJXhQFYN6V>v=@W-5t9|qQ7x}DN8E~mQv z8_9cZI8a2CQ*&!!`IMP8*Y3OgSsBiI z)+NQ^V#LGK1pZh}$h9#$=X*s`isPic@y2$u@g&P=Z!!BPzmB!Roj>-MB*KbhN~I9` zQO)rv_+BHH5m4Z=fbL-!7OjDeeZjN9R({!enZ>)4}7u zWRSdYi`q%wxG#6N2#UEqpS?x2lZ=u8;0RlPiF_WOvuF~cZtncky5>O8P~Bjm1_5X8 zSn`AtLm8wQlGb1`J0_I@=RyWrsihWVORC#<;>e6|4Z~6+r#KqJwdKTpKJ?#r!SwxYz-931XeYi<~iL8JWB>-C$@r(iMz%LgO0;>r=GfK z4=N(x`wwy#ylk zwt%5)_twa!Z5I6Z#GwGj5MDQPr)CG!Q`OUf@>r$biIfBLzcqGJX%l=wlM(!N=8K-= zVx2YZ*-^Vogq%-<^`f87of_rHDix4wv!a*O8hoTujK8?;G*?T0YD4(&u z9r~c5^f6(e`vpmd7EySdv9g`pnBm}9I~AJMr|NDkO0`yp_=oS@i@B?oX{jj{mN7^ZOq)Z3rL^iNX|1NgS%TMPD!+qSG{Nf{AiMZ(-fcO1IVSn_ zL+lmz_1#a1yTP|@hCSHpKlR-*(R(L{QzF)ix{6R`oVyF36$t={2Ye6940Zc7 zS8d!)yn{9a-fh*@&9)lElvu>LXC!*CgoXMDG<4Vh35Fc~vsQi>XD}l;?Yk(&{~VGf zD9E)b*~mhHnweH=Vz3m>i;Y}tkCBQ}`BUFO&b4)c_#1VLHwF*T-rUR6z~0R0-#Egf zt2<*)!7Hae71P_slB*i^F~pp1pYLx$ywjVBK~K9K?d^^)or^AsxHbBslNSDL$Hw?Z zRX$^@72BqisH=7T;*jZ@C!p0sZxw`E%?{{mcScG=`)?pqn-3(CW*A$SQm&XJ3_*@A zC--6-Z>@6H0?B?+A+2b~6#w!dm$-(HylkK9UUH%w>VMcH6RvJ#h~0dI)x|OZ#&4;RcT|pmr#7$m^d3VUubL%xEC zwqOdK5J#Zjt5YpRj^{lxZ8#b}5Mm^?dyt671&ka6{$ugaTeib_kaLssmlDie5s6ffzMMX?=>wVu&b6?!UZxmgt`ig_Smv z9ynIoss7_@l!=az;LEwVNQ_NYv^IiGTn{n(f1VG~F2&TIKeT462zSuz;x!B`K&}QJ z%tuupuNF?2hV~qGGH>~HFy?E6S@pc5R!-`#JxRegb-BXbter9$g@)M4^bZ{Vv^1+~ z98!gp=(9`4sA1CQ45V!NP~PUZIgc(oMylfJ`uL|v7D=B^=RGVVwy=IpeQ8DZZg`26 z-p|vdrzb=cweO7hrsbwmsP^f1QLLGs+0yle>{-OUkNzHEJs4zkG`vP46*5SjCB#jH z)m=^`%nVw}rl$f#;tkD8g;@7$Ea|99x>thh;9WPW_rG4S=asJCg^$PtdYa@Le@_-a zb}9tRxf|iyo4x$-wNt%|zX60)%tjBd7Yk}ky!`d;DNf}uJ~&_8V}Bm#$G?xIF4Oe7 zPY=z^^BJOGeblmUe)-G_J>v{FzmZ$T{c?kg9X^PoQcjGg-D^nHH7Ee2gH{;~v8)ko@jqQMp8%`oDbYxH&|M&Y}2>!PV{y#Yg d_mE8lX1MB4hco$z5CHO1lvDdq_uf4G{{Xk2EzSS{ literal 0 HcmV?d00001 diff --git a/homeflow/assets/images/android-icon-monochrome.png b/homeflow/assets/images/android-icon-monochrome.png new file mode 100644 index 0000000000000000000000000000000000000000..77484ebdbca253297baea4a7d416233aa47a45c0 GIT binary patch literal 4140 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 literal 0 HcmV?d00001 diff --git a/homeflow/assets/images/favicon.png b/homeflow/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..408bd746615785760b09e6f23fa8378d3e614331 GIT binary patch literal 1129 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
    H|zz{j8vX-lqku;-NW2E3;BMf3f>Jhxt3 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
    %-(a@!i`89VK;?-qg=ZiR0A&pVk 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

    wrV@M0ad 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 literal 0 HcmV?d00001 diff --git a/homeflow/assets/images/partial-react-logo.png b/homeflow/assets/images/partial-react-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..66fd9570e4fac42bca15352def191c563100b2ed GIT binary patch literal 5075 zcmW-lc{CK>`^RUDF*EjzZN@faiImZdeUh<+LiR{8$Wp|Fki?9!D^2#LvJW9kmXEAs zO%Xz+kg-+vJzMzA_xHy=&+~rW=ic`{=bm%Vy*JL>%#e#6$qoPjxQvbTEdc-)HUI#K zgMygk$)C6`W`Gfm?EL`%L7D$Gps}U&Iuio@Ee&-66$7FROu_1bH^l=0)z3KoIfI!x z&D_M=fEl5rVrV!GN-E$bRYJoGq2Yzlumb4gB4z>!FMyJYprjmVSP=&^2`hqx6+*(8 zl{v7mLNJqrGhrd@F|)FWJ(R|Tu&^RnI1LtF1R*gY4f2>t3fM^nFs39ky9%LXCMjei zF>4ChNi_D*0_G4XDW5Hr_WzDd_re?F>9fq0DF;}ZSpiUOI=oX;Btp&_0X2mVA6(;I zL+9iYE6oR~&nk(}h*Wc;?=z<=^FecSUxIntU@W5{3jpAYGuFpj2Rkmmi1V3M=Zj82 zJ?Ke7Ii&f%zn>_+);)dLHsQ`k7=Z_P$Q)VP)h;~(>UI3qG`0}xUl!0)>tD8=BFT@8 zXxA86H1WiD{7}?b*kpTwt})HJ4RPRKr8JKH=sd1{7bRp)JJg$QrPUuMw^}0Hv#sh^ z)>%|#ZpmL>ySJkKXZ`%B4TAbN^jLqSPFd^wj~zM97gritK3dr}0PPqX-}A~kxQew4 z-NsHxdMnZJmC6oQD*HSV~a7*rJfmTDP45WC=wlG+Dpz2EO4R=|ZPkAR;JInJpjs{KW z0m&JEkwZ@CHI-$$S#}B|lN>*>iKf@}Cy+CDJkiCqa|i!|kurF=H$k-Wz9!e1j-j*oAh zM4&42%aQ)+=nygmY4-ne&IK-b9jGLI!D=q@dEX#vWwC1=tP6S2S_U%6wo#a^FR2|**;HbYA9qkP@ zC+tR0dKFaWIg#|~#-$qUo@t8RNKj20aos`OwaV4}b8bGVHRmDDN1e*&{Crqz+p@_~ zXMAK~9DG$RAwEV3Iv8xhs5I&7B&R@axt8Et0{fkbV%*Xg{n9wn<}kBNf6bmP{nrP;S2YDg`(V*_Rz_Wc53E~{Yv z-4pKC9ZaAt*#5{a;`x>5CvA6Mf$Z@L2Dz$p2IG@X&ObFtUwIt@a>`LSDSy2IJ3@qX z9MA~btRB|sh(BLf&b8tG)4viWtrNrRZ5#Ust_ugreQNLvbix!|gQhNZp9a%$5SA=E zz(g3&-2mz-k{$08$m_!-FfbO}9*iE`n9)&$PJzbXsq?1!pmw`no^}+C1y6@xHvuMt zsu>};GmVPb;F>^Qh#uglQpG=fCDeUMr@r~3QF~p49qAE0yk(mL=!ziX&a4BI?08!t z=NwPRgQp)+XH@e4C)qQY^4lyv@zbepmI=_YSJb8Mi1mwfh!ICM%9CduX%YCzOAVN2 zXF2mG!aLd4c>R%VgAFgov1x!%BLrN}O#MtNu@A?@Ylm#{W-sPV*R(hVHcsQsUd4i| z^Mj1QEBN@JCocFs@s!~AX9OeH+HY!?p2QV93UY2UqIPZZ+SI+7Mn8*f*aO&C${SAZ zFxr9-dEdZ$Ww||H+E(;7aUEXDrU?B`f!M2r=jLk*62$f6g`X3)PFDkVNhb^xAICx1 ztWWFeGFejf&rf78kRm8Ngt-`&JCWY2xxm3e;7QB#B-{?(ivm|ccDultvTYW?FOueR zwlB;?d$IelD!?Y8+Yq#Gx5!on*w%q_lq(7teIbE!AqkdP200$U0pL-8`us=5>#K^f z0y_k8kgK#iQaa$sTbX11*_!W%OFaKov}5i9SKE^gedLqLcnH%};WJ(78VO8-ESsG! z62nqQF7E?4LMC11_q|Z2x<7eMm)dpjf2GHR!#8-4{bIZI7T7Ts%E{-8Rn00?TV=^u z>Bu)*mwat0>{SFl9)l75;JfK7EbcW6oEq9U6~vWIsMgm1{7jKis}48_#x^1pfJ>$FkyW$T^;G zSmm$3hwZUdo@Jiy;dxVIg>8g_sWTpxbO(<DJmcE{loifrBifhGc4^!?x_?`F?{#l3clu8@biy>EYEmbcmBE_p#Q8P%_p)Of zcwKhpa}FX=#hgv4RDgJJ3y2AYskj?Yd$F)*)S+8sqP|pH31oOhBK*^CCX2r?HHyG= z?|e$E^O}0jeNzdZG2Qo>OG0YZ2v|l$5Lht9zdWP4PMsvB(}f=pXr2)ZZCBHbQ*QEQ z6cNAR^q&-9u1zdJJ*vxLF+?URkzBvP+UV^cYBpYKtQ5o;5^G-1S{+ zKkO#ANpxW+w%yF%JiPyR+UI&AEAi|jp5su4Z;N(y0j!S^(h6?!D~w5PnHq>G;eJ)c zIZ&9g`_8Ffjxzk*vVML-$vv4YS+`tp!BOrk=vw^#keat@a!Nbdy3;~TRNRPdDe6S9 zN$ld*>`l4wJ;5s0$qOZWqJJx9U13)(6IV3HYx*$Pm4&_)xFD=!wjQT$#t&zXZoTqL zUp-#+zmo^OoX1&8X{)rX)H*Bn+QWe+8|;C(gU?m{ccMUa+G#{h4uPuH>gHTmHSV%X zJm@8~K+Arr5kf+s+96KWtxnqEonDkGPKCc;x!xh0m^WLiKHaZ;7C3}F({4QMPc|Yo z57KU}7sRsc8{@|(IlZe%bg-blpbW6nbq~2LE#j z7jjs3980K@!M_TcTY6)|x~_m??fG9F8CXfwwswQE$l#srp`!^7tQ)=sKDUR4DE=fa zo{CdF$pxX zcO<^#Gu16eit@dh+jQ1To_Rc%BAm3QCpxSnc=^nQ)M(l6dgQm0ipR9dK1&-*MQK{^ zK@0@vh%Je`EZ9-jb#P&1j-hPj@)B7Y!;y#H-^$DT;M`*p_urf+`X;nnIY@gOi~kop z(Dz10Kr*tpf1gV0trr~xkALEqitL%6NUSL|b}{VJ58U&ZyZV{LOE?WWTDLQueKdH9 zvHrou0+eNtcZ;op+c)gKo8w8ue&f2Y;ZkIvcwvsCMqQ)48B}R+OMWlZE{4N*W~yqs zFI&JY?$r-v*ByIW3M`&R?TZ;Ww$wQr+P<%=ab-kUb46tjEOoZ^m#5&fNWxA}cJ1$> zBFmX2hVdriF<+8cv%NPjGI%DVf8kTFs6)x?rwWqpx>6k<09gj!+5x_zk2>06h5F)m z3Uf`Y)y{`Q_RJP7494U1t)(Y;%L3nAr6vw356;z(b#!<;+Swa zPBy(KG*T@eP4r9Ap}F68>SCSydkeQ)Pm!e*Wu^GW?PRul^wX_g(Ui9jULkcbBf1zG zBABddu|5~Q_KxR+yXO8oCE!%IM`Ea_nKE21*){v^T6KACfgmb@^U`IJ(@H>*Y$Cs` z-bjQ0Lj3_e=pb-UeFH{dV-RC`;wRp7FTS|yA2u=Aal4_P&=zO^o$D)k#TD{jdCal5 zhI`WxBfDE7J0o+Fr&+9-=A%MD3RxuzWplOK|2qZt{0y8~b2;#_rbD_V02qKZtNtz0 zx1Vh0@ZmA>%Qx;}soAFM3iKs{LyTs4EUY_U- zpcyz=EZ4(GwMceUx)d~?6qDDoD$nlc$3XDOjYjf4+V<;JzL}s3n$u(ndrY=k&J}Fp zrSqKQ;MA_!9Hcfpva6AP0~&us&a7@xd!?Bz#vgGVypMOwqnjm~oa&Yr9peV5 z0BNA95l-Z`#zWlo^##ZAjr6)g9Y`Gs5m^!;Uc z)bmsiWMoWoW|gq^B&HzD;pReGJsm~a4f&cT25>~;x@Q+zp^m%pA;#su#9xEc{*;hp=%ng|E z?R@pZF}xWjV};&}lltZZK_s_(LrgT@$xSRnRVZFhYQ&x}%J)q9tX?2cBbuPQEbLYf z>gAUEb!0qVYwlW2o%X9p=Db4JyEwD_f-0scujclR3dK@*Q#YktAu?|71K+UgU>GI* zY5R4^k32z~aq1Yf#W}MsZpHccf#vM#mb=9{ymd zszl$)0KZ=JgM(E+#r@nV^7*#10>8!PK!OqV_h05~e3RWm14w{Wkz$WL6l0- zY;l7G;O2-O6WvONCVS-+gb1eeadXD`dx?k=aLWhJsK8Vb2`X8uGAPV5TOv*~sT)kf z)!z%l(mCA`-e+}m`2PsUp~VB^7xxo3$J#d~Zmk9~qcg`qLqTLZszVoRR kvXn3fU`gP6K*T?Yo!&0+^B6>v`J)9eHZaq#&?Q9tAFP`sjQ{`u literal 0 HcmV?d00001 diff --git a/homeflow/assets/images/react-logo.png b/homeflow/assets/images/react-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9d72a9ffcbb39d89709073e1a7edd8ba414932c1 GIT binary patch literal 6341 zcmV;$7&_;PP)#OzF;@4h$(c0?u zg^(FgtCp&*RcTdJd={+=B9LT~@KT{#EGRIUIp^$k*PbLZ=S*fM^E%w?_s#!(`7-;x zXRp22-s`dV0F+Ti8D*4FMj2(4QAQbMluTI4g!RqV=|Y3cICwJuRV7pL zBOZ~4vos#)j*>G>y{Xc;H0M7|BbsO~?7%^YtrpCJ(CSC=IFU1)d&>;w70{^c{Ukh#~vMw!zh19oO zXQEB_@y8=GWKk^YRRmJ~8OWa}5W2aiz|mGj6!3}ypS0CDqn z6gRE#W3(rJ>U#1G)a)tD$!9Q;&UM#9!x6Qo8(OUUkE+q;%}2EQYWLzDG(i8%TmUv* zo|?v!!Qw%G5+p9OqT2Hhj7zRQwa+!STGx_*UommC?&#xVc62uXzYRQwrz>PWk-oLf zTF*$93^gcR0t0+`@Rp!kG% zObEJZakcMl$bvv?Y!2tXH_ zkZ=j~-g|bD31^4K7_amyv$69m6xxH_*dS*-0=5y-kAi;VZ;&GbEzD{WCMW8U_BlLyc2SR@1B{H=Wm>~D1BpoOWe2!;vz!}-l9Q#kuwMSEl!7VpM zQJattG2#$-yF09Z2Rw$S1mPKZj3X#DKP-nl5gLO#f;GOmyboQ-D=e|+@ByGg4Rn30 zeT51KTA~Z2z~Aux(9cnP7ataW7_8A7AM)d8kSC1YnmR zCFDU9`V=UOY7IPsA(5n*x!RxM-H~C|g;FruvgNXHHvo_NRC=!Iy z)o&P8M0sj=-4KXQqLLT^pMr<*j38`7P+HU-j;LxV0-dIP6aPypDFOBfl4pg!QW=i7 zH>xts3c+*0Vc25XXA+v$5-0+)M+WJtaO)yOPd5>dH+A`rBXDp%Q6&_B`qs`Xcx2|d zYL;~Ml3L%J&bVN;@wz0tA*J}aGuvXbp#UfiG*cnTval3#O?G%p5bYyZumkc|J=YoaxSb;|>BKAxG$W13gE*YU z)s+ol>s@Ad9YWG}FvK>E?5#(9;A@$GY8s;#!HLeGv}9WCKq=v=J*1(Tsz_Ly_+ytE z1!*hV#?fe4lXxt@#u3%5qo2qu$j_<$;r|Y-MW8UE_&e`a9jv^3^T7W4Yr8tlwM=Dy zcb<eWr7(Nj6ZbDMfYtGSB5;7N`srOw`O8iEpHRj|f51w2N{38L7~?2f44vbD20 za5l4woGpZzE9JAlfX%#;_OQKUFV`7i)@3rAvXn|Z-mD@rs{>d-G&tbn&uZVPL0ZK-YE4NXXN4oXBHjtj5~33D!=wx)!tjlZVm47Bi| zVRFzoXB!#D*tpbRB&NQ;t>3`Ghpp!RCS?mjcLb|_SES~h88-iekI+f`JHc9By#shH zXVo_FiEo({+OI;RFboAE@6C1I$22g|8oiBWfwkO)=^2O-CKT6^LF3sTUdQX(CD;iY zd%5?_YK_)0F`R=#n!q`wAcn&7$wMO&gPU|Bk-hthDBQemw>~uT`w3>h6e@QPDqNTxFUp|8NAu|Hd-Ns`N&ZptTSGR zJdpDWX$afbaqd4u3NiQ#@reg+#|phJSfkfBRU0oliJ`E3s5%wl3P+)S6=;8}Cm3k9 z&H-?_41G+}m=Ap*E>N~o9nZ*9XRze1!hMyoHSGo-ti&eF1-|plIQxvA@V?#l6m*$s z@sCbo#A6VN2YOYgMn6ybtg$HI4p65*SLeWw8obcZX6L0x%ZVTjE#`cdpl{+vQiL~J zik;Tc!CK?TO-JEJ+3Mgg`G_mR=1r4vS(qxg7r#!)ep{$6yJuoUICd9**^g|nHjsoD zG$GbDw%I#*1>9S|F)}<;*=3_}E7`EX-8Wj;rAUmQ=q^g>_v4TSp%MKy^CY}NROw^5 zo(G(1JXtG9%KI9_=1(C<^f{wgDL0Q*(08Ro?_?9v1;J6q^N=HyThP{4YX{HaLwe%K z)<>XjpT<-Den*!&$k4`Q+B=x%*9*c$TuH37>g;_{{%?cPjTScS5US5)FOM`T~B z85K`U+iG_hz;+Gu>x1VbO2`piY+ZdH9PW(gQ{`1nwZ^aeDxYd6EOm9v6*~g3uYxoykaoe(sx&&B{nNl7Ovwe zcZ~L5VB6QGn1=r+A7Uslw|E|ebrScpBc;6?)p+(*KI;nMv-?W!;5QvnZ`rm!Wmz5W zgaXjmLBphFZB8_f5M`;*X={In)e{ramfc3xa-a2g?r}b+m)$aIPgpv(vOQfQA0(8p z`L#^_5kmK~MBWAkV8#bDSl?$Ur@l#v`T<_n{rYLyj9eL4NMoCMf{Pfac&|0BP+}-7 z8HroC&cw<}A%^PB)tSmt#JoOFVkjJd72>Llsi?c!bM*)5#X^apu*@3<7c_%dr$zFbu`q!nBG#! zwvkopvQD}*KCq?lXC8=4?no|&Z4%;~Y-KX`MW_sHn=6#ciG)l)?>o z228$q?T%a&rG4U}4SR>UBzc6as-TPnL0cyE{iM`SaxRnr{oCRLUzgfkw~i<+sw61q zf&zVmahLX?Z&Sup#9o?Y-h9Vb3>bVIlmNQn3%DDEb=mS~B#6+(pPXTq)PEdkqino5 zCkP3dROu(q3P(;!mvE;aqX^Ulh2e?Nsp;jKnJwnGAa%8N!-mqCf*7e({E zmb_C4YeA+&A;hiDa7uqpYurG?pg<^XFUwrZxz@xaW;U>L$!O!XY~?Z%WYI)4rKPEh z_RbCIYbN$z9r&=Ym4dc5(-~&9d=vBU?a2%k23UGg|f?p=s9B;1D`hZ=_~l*;m=DsuNc5v1t`< zaL3X}*kisDXs6R44=7z0|GP91fxK6n+AX}Kf9cAIun;n6ZCM?^Sdf^5`Rokn`N=DuS>;Bg?HO5_n;EzjH=?Yv<`Y`jorSaqg<2HNFMGS#!B zM!OFU-LG!uGE4n;O7cHB{vM0;+E9%zl&KDgT9>)6T4Vd3n6Yf}=zePReqe8C-0gxxkG}{Jy($sV8RxRbXRm4(j+@qEwjx_i`moLYlXCf1$Ks zb@@`B_%nLK0&&_BzaGDpJ99(lcZ9AvZ$#~~HGP~?l|wct50~cH(Uu_&)@`}{z8YVP zvQ=a&QokuO94%wD%L@hN_t6z+_vnMcq!c%)rFY^Qf z%Ut4@O@6m4Y&PU)G2CcQMjb-kj&1IW5cjY)_gUT;?-=%w{>uFMNiC^z36&8`IRJEZ znBdcXU($!&eJIA|3niNjXpLVraNGlDi(!oi7Q>cUh&$`t%bsF|=2<-f^>mXDtR2vE zy_#V6p8oofxRI?JQ=XxUAvM-ylByp1K1U5oZHHIMdOnC;v9uOfLLSJAKPq!1M)!SP zf?NnGasdl_15vpE5xlfzy7hh_Y~P^#Z&jMLH>UO*$LyhJdWfO0oTXv``t@$B8_t}u zu`?%jkt^cITuiP~P~M>+uW{y4W@SDNJ(%nU9565vi|f&5gk$3aZT2-o{MLKQDAsKX zP9;W+XX3*Crt$TBiP6Q^Qf1M>Lv&$(ozGRL^X#9Vi(i(y zIK)K$y@A@Ti~QIQMWSS$i?iG5085$|@lu}7U-tMs>Q+j;b-V{{Ws~ANOo5?%6mE2+ z$Cw?S7^?NLji_em!48NbMD59&?_DU)cYdhdh>BEkoN7|%?T#VvK= zL8`SRQSxzLa9gB&dn=g54CEY_Du%&O%9+U=G?pF@G-N! zof5V8gCn6W9s3D{W6H$ad=I*})0%1A? z$zIKaHzE;n;=C8>~3|_37CC^_xRL|?uzeTV{b1-$Z?HceH-d-&uw>?3OGTwtcaes|(4IfQi zYH;3*t_`$Ce~>PJeRFIs??*1Vg;&^hi|c%O&+N#~f4a1@OynWpF}x)RQt|~k)?XF+ z3IZ$l)Xm)#A6pS@Y&K7D#;}EM67K~I-TCM~*8Khs3V^!85Px5|r$xZ8g2(WTAhTJs z##1V3$U-RU6$CQ$MwVxs*V-yr0Qqx$JH-{9aaE3G|0U%X*P3XjQIsi`rS^n@i&xr^ zxGlv)c=!0srnn&Hna(jSJBAyrNO~pL6zYtkZv8-`I`W!f}pKZN7 zqn(a|Qb5Q(#oF!!v>m|H=T>@r2%lm5Ikfk+@`IXHCSm-bBYGm~O0c2Gp-H zXtwoQ{l;hso(9K6zq#Gc!-sr9pZHV1@ezMvx*L2Ns#d>r0|g?`9Qz?FsaEr-eAyAL zJh&F9M`2iTnd*dgq|n4$4Pom-C=g1PV&W!DzPy{P$@hv|zVLKYXa4I{l?d~I*qM+g zF5F3jcu*I!{Ym*XC63ZehzM(iuMGK(_#MU2=*r)6Y=is3el}7OJ*aNx&fc&$Z?%Wj zW={jx7-8P3pM2pdL6}WF?T!$Ax>7pP*k*pa;#2!=a+`D&>)4Hi(?X-&Dv@A~FUV9- z9xf@5!O$F2uXweg**q2U02?Fcxx%*f6nG3z2~sggd!Bhp(s>SHa$~DKr>}Ce+F}y| zE#_lP&=r*Oz6j6yw}rIE2W#}SgVR)Nyjo#c<9k2YPa|0k@&ecU_^f8?)5g-!W?#*G zHu+;Ntorfot@tZ=jQ#O|+0{IVw>nz1g%H;d9Vu>e^5cuw(g3}G{LcDJmL<;WWrvU3 zwCRq)5#whI$MyY-ZOZwss?EHIC&VRbGY~wX5ib3(W7A((oas-nxhY|)IE<|8d0>=> zisLz_-0qnd3(pDC<&9$TOo!v$4dZrJZ@eRr*d!_r<^zCw-!OyXjDz4=3;N~K<|k^Oa|}?#b0oQQ&N3%IqsbU`t3OJ_Mt-~;4wTWh{D_!IwFeZtEsOW z*o6px2t-(rfa&Yr?G3Tz1NOX zl$U^m#)bw00)ms06jlCh$NpC#!GE8%nsxcV4V0s#mJ1LNI@$j!u#__C-ESwbi?W0; zP~8mf`R@y;g^-*O5Kv3;5D*8sl&FxZC-8M1gfH&!^55N@?cNmINlX=Cr@<8| zdP5c2+afSz$VA1sI8vNNVG1HdzjU(|R+9v#D3KMoZP;xGhaNr`Lh#-861nPL7)JOr5GZshWd_@eY zAuaHPF#2@N-GJLalkLS-6ysasYz4$wiX}{EoIi))(fZqs(-a7p{t%pPTJ%k{Px6lw zaxrKDGazhYJWfOAF9C@$m?;nvEhFgm)_*k;H?fAWU0mDhf>qgv5Re1ikVXvl#~@wM z!aS0mIiWocAJ20x?ePQbcfcC6W%)MJ2LeE-7*b zm)B|slB7Oc!$8&J<5*RR4%8SaabpjcKVEW2kWM31XZWA6fI53Oky!z5kV8dKS<

    +L1RZ_)2HVI>t4=P36y~fTekjR(YtH4n_DyD8xV>aMmJm5BS4Ec~!ow&sC2VaZ zX~ z)<-bhv6t=?=?pL5VEXvuCp1xWEe?Od&4Xo*Gdf^5p;lx62&4EIvkjpNXYNtujNBCl zxYEk`VqM*!j7}6$1UTjT`RpjGWP;b{b%?hd3Owl;KNddj^bvlxFumA!Vo9#;ZBchx z&Kg|_3u^|>H$X$ED-jvmGwt$&obEzXa#3_5?ryq)b#z-N zN`^2d)?kiFQG3OpW0fFp#w!Y{^)D7kY_~NDC&WT%ZOG_-X~?qX#!NG!kj@md#1#Hi zi89CE7ZBw|%mVqyLp~V78a7;R_xFamk2x@M_J!xR{m)cBAQU1zA)&K9{ims}$Tw8e zAnJUZ#=U9deM-5*7Rs0JfTl3N+mIyu>Oz<$)&(Nc+zK~xSM_!CyT^Q(Z6E`fv7s{7 zCHLF_D}D4y`210ZYV@X|4zb3ha7G4@#46xYQ$)kK@(`a}DnIYczWgl$9>V{~0i!3I z%rEZ9HPXocB#&{?ODO|BWcL^J79+w>h0_06JI#nnHTQRa`C_?D`B@;m{7@d)u+-a4 zru^f>>Ulm6XTT4pWe&m7))Uo*JjxyGeXyy_O;P+otkc>>Dkxhbkwh^oi++h0AWEW_ zRpWg9_?D}C{MvB7{IrFRAa2?5j6P+kw~4+&WX`2N1AkQ)OdZ7q{Swpw)qQ>1$k*k z@%ShCHL&jOEXmcj#474;ATkv^Q!`m1>nzSV118NXnnlamFA#et^>)CXlI9>1P1tol zY+Dz+94$sWcLW%saC~-HKr})U?yn(c@o)susY`dCH;-9GgJPPH+xEDN0j^>x;D<%&_xX`UNp%k77-gu|)yF?S^ z&UakjYK?#SbbYp1o4H>k#Ru&>0Q|hNUN`mu^5DDN z{c@G58ncoExEcig3`K#e92>LFG~7kaCRHT|FLM~au?!N4P}PPycZl#{P@0fn=I@4| zxU`R>Tb|?rz5S9gsE#hw1NTqOYKm;iT zekfWauG{=|l}UEZp0Y8v*G`&bJ!RfZwR_c;PhsJkQ09+y4mSosX@qV=ghvdwjj2r|R*O?Oofe2QkWgE7R=O{R|lS55cB=yp^ zy7^GMzoW0pf}v5`z)o;Jc&J1OqSE@#cBi9JUl>#a_~&K8XQIbw5yYX4J?b7?iS{dp zAV(;D*EhUvR|;DGTU==K8mG@NUJNYIvsfVTKxqe!iH7| zF_~~;6A%73G4xaT zyU27A#)Giu5-w0;JlPe&3}B$+%kMz4NYtvP3G$Wp<#=OGKNHhsFz9$2;?j=}YA{xa zs7Ov41Y*O8iY<@*s&^G7h{NRDPR@D7jk$kb{|e5;_-cf>9y_`eMv%t9StT-VM~t#! zBzSB%w2_a%V@ygetAQWZ$HcuCS~6-FWG1{mT{_ z(=equB++XwickaRl+}n6qZEd$6Ssu?@9R+3&-Tl=g3;E~D&W*1J8FCeRAgZXv>1s| z%qPwN_(w88nB7>L&J|I9(k(S85viezL|z%Ih5k!M{ZjnbK(9jM-_Bq7EuPM$A11M^ z7uY(L2Rd*Cld;&QNVw*Dja9B@S5BS&=Oyc46EAFwr`;2u6dN4OaKRTEDa?Mqdr@3n z0+ry=_i%0F`>c|>imnGfyW(zCtjh+;(2MnCiCwyKtY55YpVCK_#9q4Xz4fgL>=uF0C@=#{4Y8D`yii-JJZ=^e1Vek}6$U-dv!TZ8-HJx@bpb zK<7PX>3Df(c=V-@PO@>Y9xwt`J>L-&#+9Gz=-U%0iDZ$Zodr@gO}@T%)(}?)9eM9V zbX1!Q0!##d1>}H$dWx3`xz$8!nhjfa-$6ov%mW@zI1=gyT@Fo!XcUD?>g1zDzNO;s+MfXjp=MHl7goj>Q)5KmocZ#)kQ2_)3QZ~*j z5bnZHtb_-ksn!?{ILR!HGf7j69pxIdxLDF!RUz4V4T*~x1017t+4s4_8H?jDhiFN* z_J^+jz(zS2rB7V~;@xnhS`0d8#itYvD5r8KT)ifN3K*dy@@jE&#!rJ9 z#s9&K8cDMh@;(3Q2^!jM`=^n4$3V*8R0st9AFeYHEm}QKXO9a~I$fsP_Su#&xo?zG zr+DabHfJb@Fiy)fCe*dwHRp`M4gf`X%m)y1_VE@munICz|7y1qV$&0^B6WuNeQG3` z6!nsVCP2&|Dgcibjzx41uQh)KOEh0W0KFE~=YUhD(NSluQ#>|mfZLC@lz2CdyF?hNxH>0d-RU<^7S~NExblqU8j4j{mImMf6w$=>pS^UKA`kyZyp>mf) zv-!eEedQt_)Rqkaa318C)z$Rnw(0FS-YfprV%$-%5AvKLPHtXjf;{JzWK}1ta8elJ zIW)Myo34>v+vg82@t(_PK}iGE%r^w?p_3*Y zkTvC<+g@Pte<9 zc15O!>beg@Is`n|Ci@);&ZL8wt*o^Qj>RpKScAGKsD z#HH&ynj&{|t){-#YJ2}KN=$zWzBKk71ZIgjO$5X5RAR_EaGVt6zNmXHv(Ndl0?$Ba zsee~BvZjch$W>_d?-MtM(DeG)-uBuqE!1lX>8tdw(UzrzBi_}BK(}*51IcQfwrAGl zb3eSUZ@R8G=aM;~(+frSUWpZCfF!)Lc$_bXZ!e?&BrLqMgX4HWA1s-FkLtu{uj@9N zk?x{TXIz>Aud{sqo9o4UV~Cyl+F7LR$%hi83g=K@-)lXui}`A|qmtcNZ*{#(iLK=*<|CNFBsnc>91 zr7a`ZXU1vGyjQUg!xxO|;xAj=y^`)T-vXzq){{?T+ZHE4^WVkLLgw&{3TdxO-~At~ zlyE1@K}25+<)h$qIUaGdbE418gz{toCX^14zP*`~{ssIKyO*a?g+fTm%&hjVvfcnU zl~4Hf!K^{FN13rAM^eEOi?5wmv#Nn2*#AObAr|V{BbzvW9*nbHtCHrNt{;U^3}ONY z2HgCs^O2N~01r(JiW9d-(wwN)`y>hW8bh0TVr+3UsWIAr1W+@3ehF43>Md71A85Cua(b-sc^I#J5qzP>>+~W45~orZsVkX zZ0?Q=x%?+t)^9BMu%^sbrMrBf7&x7d`#?$ zbbFkNp6hF8ovZ9N$`yvmm3|cp!lYT?S_zPw}C7)DSB){5zD)s-}uv9u+uA2lsh%d30h~2Upx?& ze7^+-Vb$%DJC~vw{geY00;$A6QXibNLK481bvSp2}q+e!KfAxHTn+?wt235Kwp5 z1}f4E-ntEv>{y)Utw6#uql4O?i)HNq@y3o=x{apkhlsVY-Bp8pq-*0m16l9&{ERqx zQP`y(I7ClnOYl>6a0U=>~??rt0Q4F5mYrgT>)%9R=MBBpTWQgxd670mOfdq zBryO(7-6b6?0tm9T!o#7GL`w*v=Fd}2!9i21&^aXlTgG}3>bLV;~pr=>_nlyeX*Sd z`3#0b%&(U9Ve77Fp8m0%6S|}6gNzWCTYDq>A(v__(Z@Z`KXFUsyS4Cyh9K3yTRex9 zH~@(6L93@wXrXRvAjYfQ;wP8Ef2_#$C;6H%s4+x;VLD5${L(LThIhmM!!%3r4$b~fFz zwA~i9O;g1EmStpWL+w#C3+$y#wmT3{zEjp>$j($IlJ>adHEw4Ze?0rCYaVBZ)B&%Z%fsDxIaOJhwk`lfRqcbPXK#U z*4M*3bThuQpgLG-*YFpZq?bw6v6t}+SAtQWX~puC?M2Ej*x2p3;3j}Vdu=Yf>dwUpAEC>65cO%@9bK&I>@VQ`6x< z?M{t6*+Ty?91IJ%0O@rS$x*~$vgvzkuM+=I1Y`sRN3`{iB&=dn3rC2gOS-Buaiy24 zmgrXnBb!Neb_1AQ*-W!)DmB^Sp4F@%B~tA!7Q?J!t7teX%zT=}C<~tWCCdhe9ptoU z?bOrR-oei5xqS|G9}5zR*kS;*humHA?j0~%oHzRdm1*r|JMCGDR`7eBgQmzc2N&cY z?}ut_Rj^h+e^ozTZs*hXNBj?0f=<`8J?JerqlyxQ3&<0iu-fakGO^=^#qTARbJpfF zbCJ_;s#WoX(#IztnT?b_g*Ep0sL;r*okDqx%uD~NjUl0=&v~rn^~C-<+lqTT(3m0Q z@InhJ4XUsY+nsK`%2uCLty!NjVr7R7=CIge4ok+vAYP>hi)>h%#N2H~%r0a^0pngU zmB9rfVSG=qK;uu22nod2>j<$X5P3$N1rMY0hqx5#r_pEhPf1OsPT?$KX5i+xUD)d? z(2_G%@1o1+!s%xZkOLP}2%4NXvPG00hMonjSpSyF)PoPq5_sR0ujn+@nCd<$N z%n$NFb_6v$Q{hHKXqL6IiPTrh=6@k({Im#_1qH;HC|iqhd2ozC_q`s&!EPU@N3 zv(is*Hkk`ONyQfwVQVe9)t`Em)9>z9G_nzws9La1H!^MQ-5iN$wen$1kkCba_t-k+ z@-3ydfg>8U-`fLS3;)I2%KXA=$mYR?IG!&?+Z_y9uEyn(NAU{P}>yhnd=>T1U%qX{_ zs1wXsQ43YZBI+A{CI4WwpGxq&>yAjox_~?zNNRCF%o4tsZ z7TmDHF|ylZvBC;@+^_i{SEKvKN0cX#3=U0^-9NK+QKyZ|f-jVwkM+akVQ7+!`T+{Z zO}#r%q=-hMxMUqo=#lh7h7|8*KGcPy}pp2EG2EpBueRKmcQzx zMnQ|)T6iwlY0|^M5bxyskUIb%GN_cZHG{Ba3ofBGUV-umx zAPAhrhneAm;z__9*gcZ~o?hWFP@@g{U(yg*BF9kKDXrxu)`F>G=RK&vAw(h+sKYdF zv`kUp5<-85meeboWoT}}Es#fJGl6SRET|~=v)IP*BxwDTxNv2bp9`$cpBwW$ZoNUl zR8rlfsPBoqX6W&(S=w$M&2l&GE{e+9TKcS2%2BG)h-vc6mQ&NtLI_$7yQxK|?)AbT zJ!!C{w!lANL0cE`_uMnqliXCM8-xCJjO_le$R1>m3%u8HL1|c=U}DG>j|` z#uI@NRR0PnF7z#MMJ!i$*7i=V7D9HgAV*~xd2!k4KW%e?N>m9FCK6e}NRE?Z4#Ca1 zL}2i^ea|c6Pn<(fx+;Q26QiFhs^S$^;)Vaz)Dg_P}lWk{zgXJxA+Vs#LlK? z=;wzut#}JZK;6K|yk%zsQiKb-R)I{zb`)Dhys{pLdfzLFwsrI8F>0~#hKiEBqc+L$ zr;3V*GXIUdx&9nsk3{nGTwFe^_5%s=x>$PXMHpwe<#6NuvLdfgdFEGZwa@hC-PfRLJ`|oTImI@FBC+Mz3HdEy>&ubR|(> zwqIQ10&7bsRKnqCHP&ix5KxLtl!NxxTyjh(1i=&GU^=Vy{__eyRp-5BNg4ULh`lgB zwNyV)kSn9D{=*aTF_I8u9K4CG1MlWfNcDHxb{NQ%kPvS(RNa~6!4?$sb+9Vkll__B zG%V^?34vW&FKvXX3_MfAl=#R^MC}0c9rFQp_blS+_`IU~+go9r?ObbTsFfO$5EbgQ zHgF&LygMJPqt;#pT^k%L`S)6k5pC`1&!bYYk?zc=T^FqnT_59)9B%({oiUo{{8Kgl zMsEr-Z$LDA_u)y}D9I<6&cQ9w;E0zy!}Uoex&PH52OMlrR< znm7N6ua{dKlQ3&T3)W%he_rNNq=-1fG+Ds(*c166{%ze5P289uc^c4P-T!u zHlZF><#2~R(dMQMQAyM9dznCgL6uAi-*#mCqZj%Xh|F*Y2=A575X!Exjrxh4-Nj=L z3=~f=5d5zwFxH{5Z*&AKEoE2*&3yS%%_cHy{`-sW*R)v+07Lc2=|C27NVgZ2&+~&q zgZe}+hu6vGiP~-#T`J@#6uBzImT-mnL~h-N2xX$^*?c1{h+Ze{0UvqKvC;#6GGA5) z;ul#m_g*jQ#|(dNBs$ymc}hhA)+As&lKFy6^uz9zQ_y2;a6f z_>({VxKSk!xtxzatq)T(PU zkzP%$g*n5Fd~)@ReJ<*5Zloaw-Jch)BozJu+>ok+mct_4R)4P)b&6f>lgL!Sy{;{7 zX&(j|nB#vurS$c9_GP`a;(Rd3-?}=Idm{f4kHCH(W!>gp+MSxgm`DiaE810b4Fdvq zHy0CW5xEDbCoQKf1!h-VDC?vRU^}nOo9bNFs20tigCmjy=Rdc*o_Z zJR3dzOXQ8VWwu%(1ahYtdbf%vP$y0@4w`Pp7EA^Fc}^NzkRCp9Cx(C2DakL01icJB z-7tIZaf0D?=JwK<2Y!3H0FfT@Nrhe(5&jxmAmh#XfH@=VaNiQH3S?D^tEpS?6-LH^ zj>Imyq}@B^ZmHYK1;%2u_a6oFhtoKlxErc=UztlD>J6uTB$}&}D|ukwjh)-6^pQ4!yUiLph6SJwaz|yWSgFG&8N5mqo`(e`=(EAY^>B5?WX zD#`-uSA4P849BMHT}BCBRyE%4J=Q?;N?vXhu%X9Euk%Ac0wVKVmXoL3MagMs~ORI?K|>Wh34FS6zhGFA6lG-L~8{A243}Sws4IDJ7OhL+tmQbvnWeUrYhVE zV)Jo$Bo`zraxYhrwTVQ%5?m5@VzVo0LWmqI2t#DM?>ROKt2a6nQ=U#17LBtXxtp0}djEO|$yp3!dfGN>hFD0+*FDjtr0e zFB8N56^HF9!+*fy+^hK#WIW3wO^Wi{zt~rV^zNtpQPRE(N1-DNuf;vtTlmO{Ee5z3 zU3K2wLeb4=zJ!QHR8yK0Pf@YilFp?WtinrxR9vZKFWuxyq1@p zD9J<&d^7ktianNl)&zJd>`Q_corJGz1WC0>nK-wsQd3k_8p6go&j1q#lCA}?Y)lyG_uv;P$<`_j zd8@J{xQ;vbQ_REQk=JdF&r%kqYA|RSl+ikRHeURD_qpSKJrgR+a`Oa~+pOze=BVP0j-K_T# zdP#qyz)Z_AR}^An%5TRGs_UVPNbu;e&%jYJWmdR(Hv5W4ODGd5yPAHatXj%fh#Rht_C$GRLyB{r&`BO;~Cbw_0ly{A$GbKSHvhMLo?r-4T zobuIHP7eTXLcMfW?ubXrnuG_+g8P-l1laJ4du4 z#OTDy4CR72r&Fwa1*`Pt#R*0&i1K3kcmt{9rfn~Ro~a>G0xqS?zgZ;>wbpn~{S4RA z>_`OT$FoO1Yb7-E`kG)mw371pibmT7x9>9_Gks1l9QGF3d;tS|K@(?7%hx%j$qEl5 zJu|Bxfq1y>j|SXNYK71d+D7HKOL?iR+CwsMyNk?&RY5P)&p-ZgY87_I2kJ*Tw z7#ynUrP)}pTHAhTJuh|Lx+l&=LyUEMDQjF^H155Al}lLdTIF7&OGKK9mRw+)*gQp@ zy#+BR%ao1eR&^1yfAP;?*2mMkP@-@|W8gl?E$a5)^t zAB1%|vq{MMm8i+3_yF@5JtDqC^cgQZuxGB+J{^b2b?QYDT0oUcc-K@hAn3s_;7%xe z!}R@GPUIoQI;gHHtF838QPY&C3K&M&$}Crnvg&xTxG?Jqb z-?d2W&cy7i`@>)D#`qdjuJUpEzTM8tTCkQtnVC>}J+EsiyEmGbopGw=QF=)RprYKm2UWY?E)#TBEvDRM=n}9DP$NcPKmuPS0tD%A&vhK*7 zTi}<;Y$P*2qet}a?Dy|Ed)5r9&Lxvf&(rzCZrY={m78c2)s9qDj5yC_>YE6YGu)@~ zzgDc;rUYyy&tyqz#r%oE+HK=#NCsc1`<8+mmK$^hHF!B}`8f~Dmb~7R^n%*2) zU%Yz@#}q&QbqWiZ;QVOgN3A%DtdYVtj<=$8eUPhvZ6?N2V#EeZDXo%0z&Q>gZ*|}} zqd@KBGLBiX4G@#svX}-PrWS%3VR^{(v&w)9F@Ub?K+_&-EwpW|eK;rd;jPZke6qjL zDc;#SsH$rRck(h%w@B9n$l^dwM$^Cdfg3=MaVVwC4O@)Tzzxj@4|#NcaDk`T_rZ>_ zQ1h?hOi)pV`PTY7b_^>B-^=+@5bCHbWA;VT{MbWMVk<^Iu7~oXbpa2v;aUI{&yiWV zHur3^2?kxEE`=7Dxhdd4ZYsQL3y#d_ZKpil4fe!W>+We<`;U@wrc%6VG**21Z{bD~ z(tOZwJ<<|OkH(6AUKawUx9J2^Y(2u|SC;A%yyTKvC;rkEq z51hQ)mr@uY;PA2l)VgGWJ?4t9)aYuk>OTMT;KdNk3uCP(fb5!6a~l-j?w*C+pY}N3 zl%C_Ev%KLXT{6?dVmLtOq$+2ri{oPHUmT&kD~1S}X@^8<=3Q%GW*z2v@C&o&N?5_= z)vbYps`t-j!B1gs8qLQbVaApb@BMCGJ!9tXGoj-#{g$Wu(X8KCh1-a^B^59SBvs#$ zh30UT6%5B6I(jHN^4uCWLMw0f2)y`>s{X!>{MA299n2`*Rz5DoMB#y|6#E3uVU8jF z2-eq)n9YZ$*+rf2I^rRZe?j`?Fuk~oH#SLYL1E?)!k<(GGnBp-_?eT&_Ylv@^%5F& zPKtGnv5wWQanC_%b1P~;B2oy4Pnt_atxIjqho2Hp_T?e7_pO0c{1&q5yW6qsk6IxzSqcQU5u{{eIcBO{J!=U zFHS`HCuT&tkxNmdO4sgd19RJwr7H(lOt*%~#~QDD>zG;F%ZIY;9$|+-_PcaKy*S*8;47l&48+5z&9#z>C9I3y?<#`>7c4u! zt2_IT3kR4c7gxhB_M9nAe?Qm`WFO;B?=!EuM+D9O{@@*|3J+I$cn$`z(vrjk;3%6n zMJJYhfjdW_zQ*2NA)NJ`Yk@CKLB8n-U;E80K8qhyAcEHjva(tE9yTVL9L=EoSE^U~ zS9&%CR9=TQHBPgGN`;_N|F}^|?0Hcu0+yX%b(Jymm-VJNXlm6EC{1z zE*{b40{EX0z24{wLYhDnwzqq1p`)UFL}o2{`b$;mDDGrEA@y;-_MBwzEKQX z+t{v5u}g~ui0j>t|A!!H?qUaE+)(0NV+W%D>};`%?iJGjI?_%kS$dZC&W*jYo{_+~ z{xwYsrr1eKP34pMN$EP**S~Zyn2bTrIh{4pU&#QA`c)a8^j+Fx%TdIyfAn=BW#%Mz zM_Z(iYDExf4n=gEymY%0DQ*=Ng;tV7gJT%*NB>|1bl{d!ssYs9SYRz6Ev-OxaXhgl zz2NU7qr#-JLWol6t23xmS;=k!K0{4(YZwnn$9y=PhV$cFdmCY;S7b-Vwhw}Lnf|Nz zI#&Uk&MBIlCoZX-9*U-3T)vi~FBKuUv|SkvDKv6<6AONa5*(psa(kM&> zl&T|$H0}?zR=dFs{GH122>osg6BENSF8`&X`A>s1NKZCxfGB8gAnwV0!wjC@CNmCy2+nGQ7RuWm)6=y)zz0w{HnQR ziMW5Af_g39w`;@q^U4e7l?6eE(h^({!b!n(fI2$hcMr9r-|uhLen<(F!`hC z6qS=cC02kaQEi_3_w}p;)bwzof!Z=GAKP2jai9V8bu_>8Lx#eG;$5Z%F5cr=ugbBC zXktHgVwW<=lV+BA-u~1D(fw~+DWkhaBjPcm>a8~GkBt@>*f}zcT_&G1PA#|Y)vJdD zQ80NP%eBE+Pmo#+6^Ln{B(WBAPQ8$mp54&<;D2Z<1X2?^nxM*!pSgkNXKxqc(&)#e z7P8Wyg@_+Mc&Bd*qfvKQ{3CrzazH1R@pij54i*8wc)&x-Eye|0`c%&z(}#>^R`|x5 zBwLe!$$sOZJ-leY;Qqf)Xq3wRWPL*gK?`{~8Q-l^*y1wRv@{vJ)^$K#0zX?W-M%{S1jwuR$=3T9Cr-7*icLTKt=D-ahnH9A_({sXI0 zX6ybAR8AWY<}di$=sUWEhm7JrTkea{U)r(1X44kSC*|i}w?iV(;KU%ZJKM=?MgK}vO zy!FZW%a)Et4`?;9I=F;YIn2pjCH17RF}i-4>yoCi82ntWt~}k4dte6X3fGa9{=nC) z)&6@tx*{P=P^t{@=7NjJWJwXY$@`V&Vr{(E?%cR$a!li(vb*DkS$yMVQ4pb!)ETG!M6)41 z-RPT_v(&206_Imdr2Cw8FZcX~@|sT+Gc0ET6c=U zH;sN$%QATna|VLq2_Vz^#3}OFgT?16UlyB+nuELR4U9EdU{c&T`K(uiL2!gCc5>GP zH3(+q@-XrxU>#Bbo#(>x9Ncw-I~`>SPpu22Ro-4>!VKdIacc`9;#+aK^ix{9iEAAk zw6X}OvTi{*_V!0|8;Dw?9~>Ej0N*qI702rfqN>T=gM;#NNHt>8jCcr70W2hJ!*Crpe4*2{X6QcEsw(6yL^oj%s`tjc zCzBkmntVJf=?|CII&<7vWu)tlEV^<7mdhRYxD-T0%>H0^L2U~QTC2BQ3pd{Be7Y-- zOBA&o0tQz~Go%if^TS%PNGEmw>b*IXyn@|Uq-TnRH-uT|p9@d_Gb-v4%{YCV>sMZ2 z1)S2CV*gbLJi@7g_8&{hP#7i3R2PjyueHp*m`E|}TEyxcV%Df?$-JVYvkhY?AG$6H|< z^TYq9s*n&yXOn+aYzZzk#eLQe4uo?2h@t+YL32ih9(zUK$Sd_>k-2p8njVRv4rA5R z!+_d`--b2F@oG009O{Y7xs>b5MbipF79en9;Voj@adrM5>C}lQ$U!1E=$_2!%HBwv=Oq1x`JTEp6w7i?oJ%7S++V@VqwL)u`St}J6^=HR6c-Bi@kUjX43qubJ5L9J&DM z>^wU{URE3d78e!-1O!1+LR1k11eE^23jp=~#KR}n<-35fm(Xwm0U_c1?*bJ|VbTA7 z2H9xA9;pBelA zbD@C{NK!CQpN}$^LWMR13b8H533_x`^4*yVE?KSHeTh%-EJHi4ZcOa9C*_|th#~n232H!k}{r&ZB;`Z`5 zNVFp``Hu5GGFFW2F|fIx4;3RRBxQd|Cc3wAz-{Xcop1;+nHu{fx%KsHVb(g}(-PO=u62O3UM~L!LAeoJ&q5}AHX8S`% zWw5qbeVZ|vgTFCh`}2-_LF#%-xD(~hYYf9nVR3M>%PaKxHAx%A80yXm1F&Cf(itj6F)nOK?2l(Sx4O{DV=ix?XeqcB7JbY!8 z!d*(3BQ~7N?cjFq&6%{;veYl&{sb$$25uj{p|FzA3cIexP62j5lS*?51h^+-^lSYEb562H1D1MD@S#=UKCzi!&VaAF0c#d zN)`-KR*Ji;>ig_{*%ep}uYfrqd>rD{_gTsC-m`?rSX15UgWV*YQt;Og{h{jMuIez6 z2tF+Q2plk!3|`>TM6B3m z0DTc{HgEKF1LhCxt)bn{n3yAhydJeeDy(blx`~I5NyF*<#ba^7S@LBY@FaZ?mh5;! zQi<>@T_y(5RgN1e18T-rVnr0V#RTJ`FA&I8~ns@%pKEkoxi_cQ&3SaDwkS_zSn= z0PV~Eb_egBaQH6c0+OV^xLHMgH$6*hAk#W>YLiguKzAbFlkV#e=N5+s9WvJEM$Bs>Tb!_e=~7ep4+u?<-`il@A18e52IfEvf10Sy`Vg_WKuU=kT}}A~ z`BPqKi~P(dBnn&8E#JVD)FqF#_(%+*DPycZfg{eI;>9vae1lo3Qv7cx+IQiGU_+(~S$P3teL#^Gg@Pn^URMo#7s zg)w#cC9(K#h?uJwGtkOEDVRhey63n;Czp*bnVdesLJ17PmOcFm){X)~)o)O$5%kX1 z;d}-vW}gjwLYzVxzSrV#L+ZrK-PP#79RX#ISGCey4M5syaP{B%=`d1N037`_QaO`T z)iGVIVukv}`Z(69OO}y4kOv7qfEiPjqsEU~(b{YL1@;2x9y@1Wqkg#L7aS6X;=IPjMilDUd&bB;-MH}w!KdippN+AghBVCLX%o}+0Z9&fsi zx@1wiz)t+1VTg6+k?ZBgMVBSoCY08)!cW-{g`~rkdTK7`&?(I1XhlLF^pcjTo>tAVA=>ZHm z-s(|c&5$-sLQt1>A2?*{I`Z}Du8YzW;!Hn(V<$hTSewSuXp1%ZkP8s7n!o+cOVT%c zM~+zBV$wX#!YuST*lnuz?0SNxa0QYQ97Wk{31#>wUzkt4)@j~#@m3@kzT0erw{+`t zB)Ec!#9{ZIf=PMqJ?~&+H*})k1NH&uY+D0#5nCi%0%;eCEslPA7D+hYIsb-?*QKkqZ1&4lt-B(+S?8}Wl4c%>UT|gW6Iqp)vPjw; z?>@F6$C*afBkKG1M^(=Ee8E9Pe1LQO(k{ba0|u2)yRNw+nn<5XHc>0-Fzf4eWh!9E z=~nS-pN3qlFeIoEt9J)F3!4G5BbTRUS%jbG|kg`R2r-c5wo$iBPBLwx3B@PyE- z*86PX4et0S&B&e=ZbDNSSoMfHuRzq(JYdBY}>>!v0o3aH{ZW&0Cln z=y(?QgyFC!GQ=ncIn;VCBXQBf(r0jO4R@X+!3`QJCwQRf*bBL}6#D6SWxM<`+DrWx znqu(Q;asxUOO!`?TAMnF^-eX+lbWcdlTHP?;H=5cK;tZ?%I+i&WbGQ7!0@@5O#0{#E#M$>O(VVHQ$6iTq%1@BC@;~Vot25EJU z+2Nloj{0k=pr+Jdub@1w?;Zyd&GdlAo}ayv6XEx7^yM(rt#HQyKAB=_!U%z^mg5(! zuRckTi_Dw%592w_GCs zK(HsY0E=R~+R%n_k`df~xjN@hlm7&cpO zQyjkX`4|6xNI;O_>Mo}U5FMv!*b=ZRNastfP^3R0wm0V3uwP;xJ7W6AZEjS`;uCo zFvuO?-fE#lJeMJ!@6z41JSE>90m`mQ^5McX4k^{xy{}AxOs@)1u&l;pN|+5XD1wc7 z$;d_mBmoa+V?&Ry$5`g{HLyyic~t)a$n5UJNy2<3-fve5mIp~-p*S~ou!%#6`S=Sx zPPfL~YRsd~5%M!LAQ7HeLMf*P`n!&>#0iv5#?@!&Xp}`N`7#r-5RP%^O)P=O%^Z6J z+&+uuM=-Jd*V%vS0m7}ShmKnU-F@1iO5xkzr(df!i(*wWd|(>W((3d8ZlOcjMv(r$ zk72A~)_?Nm$f~mVaKqSl;;l$NsT@Nt2WH4;+1rKjLXtf94Ec-!{)b#UZ!?4)!|e}R zkA;`ZB5wl4GQ99VnqwxIm2^#J43h#9#XyEWQ)cHVlnPl1(wNDK2G)I?WSHu75I>mG zhnV7v$*F+%V9SFaUr6raE`8+zyx>9*RiXWh%TWKTw49<|KHDMx;z=x5qAkVpI9^Ka ze9`E_zkLO%;59Z8+bn<3Mi~iy}1HiLf9nqc3Mqsgdh6 zd&k0}Q$`g$;W?@sZNR_Bx$@eqkp3w@We3qD+N&$HR%VSYd2*`${DJr_cJ@#`n3BjH z1Ds=-nDiKxdd623w>kvS>DS?C`<(Na zNC@jGSl%Nzz^m5YxxR0idc;SV1hZF~c_bIzMq$G%jciv^5TwnB&+w3}`CHX@QrmV@ zq410>)F6`c}$> zP{Ql^ojaJlW-KqZIuqG=g&sO$&WuQ4$v{~C$to%GZiv=MxdWk$y2dxTg|D9f0B-{U z1y}1cVCAQZg3_)7MtYPz0%;i_+mI*A;<&nJxe9-pP8-b5aUZf;L$F-+Jvln7f%c8$ z%7h5+b+3Yc*Y}q%U?e)s)vw(un|wTypNSmM+h>pDQY%at-*l^>dtMU|L~G*x#S`ND z!G7i>*YNx!27Wcg+Yb`k^IN}Q<;uz6PD&S}9n8B_Sl-$iD)56l3u$h_3RXneS3fZZ-l%N_>0E_$kf30{(#f&#Ka}aU%-tM7phoip0vd&hsQs zzd+~0?LtwV7K+`2+Br{P0?==B>w9{zEsH%o5K)W9G51ug5pC zOAs>5lc@dQ3u_kQs=f}(sz3<*%sQj**p%0Wwz~CY7K^~nnO0;cJSl$utgD6qHFd_% z?>2(WCAXUr5QFLea_{(s5JlJpQ3CE`jWpCYaQb_+lAZr>5GGP}8x8!35w97z2|@y&oZ`^bK*r#HlV1Nf?$Bs@ql2zZ2>#NZ zAZ)J3H~nQ2%>rA$dU=y20@^&Cgrr z?mt!mXAqmr$v&qFOxht7#eS_lfBd|;vAeB>w#upquD49zZ)_|Aq6lb>0Ra3u6xa9= zWa^;bHV9$R2yW2>#*gm}^A{Aif6cTSEY(z&Rq{E9fjVAxodmTV_-;b_OV(+kaF-g=M(fDJ|MT%C=d>(V^O zpJBt5L%UPnaj!jsN|*iH^fFY0g!KiX$!~J>Zh?hrY@%>$wzh(o#2+T*Cp$ftcjg?<>+gFxkA7RMICg?95h<|%=!M7AYv$+>tr+xD^nyq6z0aT9 zRYg)Q-MMHDBB(mn5B8ysuZ_lGX~w&-iuYqm^b4~m;8mn^dm?DcR zq+qE<+4Pv{oy#L{brCISImylkLD4(390T5L6P{Vj5EA$o+bZy${vx`3*E_^YUSK1$>H z>RnvMGv~6a23KcGT6cS%#l_o4fY`2YG;tMd4(bIgB9=(C2$)74hx$+IbmeDHA^M2; z_OeRr<^^vjXQNcvgmZBOkszB&wSbR=EwQw~jT+QC_RQGLqLjxzqAJpaEZVVbt`o?s zn|G&3fkFlugb_byFPMV;VrN$BV{9=dLD)DYkK10zVD%r^>EPtYooxJJ3|6>cZSsK- z><*T{Naxb;K!Dvg$Qzua&>1WR_)roWQCg|B$L&r^&am_%I9I=sb45>8DUFxB#ro3H zPf(jwc2BG(1y_d3h&8_PCnQ;^@d=A9@a_GolVG@$j=YXi=<2crB`x#zc^?OSO|?)8 zT3}U@qtokNxAz4svOb-M{@qujdTrE~c^#$#Cu@h#9zdFdS=XAE+6Ec%o5ut~gASS| zIMxfkqFdk4l+UT&maL%4O3w$`WQaLQvnkHaE!6oe|E8+jEB~1aFYznVzaoL$AVSQS zMO_vq>Oi(4h^M~hA~>AquDg4PH0^Go$qnFYJpRlY^;Xbj)5+-tADVE%zI5UisM6}a zr@xb&IhploWsQ>g7mPoT$bc-f@8E?9cfA?x!Lp$|m;*?KU)pOeEqcO## zl=QDBUR69{X`EOWXe+!NOL_Ww*vc)Z+7+j|V3XfZ_eJ^a+{O42~%ba#y)yu)>SubfZ$5F8kJpHwsH^6eYEYI z{P?@*utD{&(lm)~KTBVR%yFIaYMj?lckDAR@fq#g2!g8U(*ReU+yD5vCwhBBD^TWN zOqF>(g~$l~Tvw%9?{97Hk{Gifc)x18TZ(8jnbQ0AXDuA#fT+5lHphOa2Z6(REMmfpdJ0V{q?rOs*mMIs%TCyySn{=##U$mEzo5hcALtaEq>ANdh75yKXPT6=g^xasv?vCR2CFsO&MLa1^`NSw_!Le&Mqlrx zLy7ft#;MlJ^4e+UU!P^cPbAVJ1jcFVG|N4^0NuJ^Grciq-TT1-CZo^9rE9q3&+LGDcq2r4qtu%na!J zbW~K|!yP-nvlL&uGbNmm{S6~$*_o4cB!v6hD-r6suT!VJig;$yNlNB*{`MwP@AW4An-)$pS zJIrBKcsr9S#j!Nd$hh%erzJ(q(9b8zCi|&F*2!hsXjqPI-8%nn0h&T@sRmI@w{Rt_ z%q0mC*cqkdNN8v;H*(2nq$*%a563CHs~;n-LB%AmaU+s^7df4dss zMaBtLl8^r#v87HtT}D;CYK{A-rUqsAKB$@62>LtTtDT7NkxXfRMBB81)j@zwOo$p_l;m>G^$=64W6^)9_40i|qipJGjTkxL}8j}K- zu}t|lI`^Q=FqS(#TmN7pTXUXI8*I|rPV_WmaUR4Srfd*1F>9@%?y+lrR_esuPIgpp zE9KssU+JYhxFK*$;6+Vl*vQwsa2KrpPtg=>DOJ3xj3KV03a!4cE38-${4up~-`kDv zNxaQ)kl^FF1({fGwBt$$7I>5mi5tXkC2#Kr_C|R2OMG+B%frH% zqdb}+4{jN+6sq(0zA4>}kEgY7pI5%4M-O+VkEp7K`a;ZR8gIfx=tT%fUx+?mw;jXF zV?}6f3)oz4nFXGkqqxd2Oq25OnxWbYAJf?0Nn~JD${b18RcF~jyRZb%=4uHK2eU4D z%*~t`(}On3?Dt-csgQFZZc89x50Yzuedhvhl)#0*P5-G8g+(Q@ZcCv{62m#JYPTf4 zB^ik|^1N*H)qJWZlIdQcj4B{S(~^Pu8c)5V3u@<1?Wfz-ANEyG(h0opKzxn~2`s)} z5czZ&T^v73;l(|cUW3}D&;Hu`=UX6@`5M(i%#eVvK-kr!WX%RH4E$RvKX%t)GI+7v zpKVABJsdj$I3ZprP=oS!9M`%WC=wP25-}*zRXI#!z0s_*V_E~k zq;#a6N@iGBqs*mr=bUOwSk2Bhw__zZE5}5hUeb;nFKKlwF`1Aa--FKQU~5h`8^?DhhhUK1GHW%x@x`X&=(^yKr&BC@k#u}vru=!KZkj}^HW z#N+2b{;D=UOE`RX&@@`}DY=-pDS|T<4G>mZP|LL*{WTarBxC{+llDKtRnDT3SrffS z_`B}T=wRy&na^2!%Vb*wjGuO#VX3r9Mmu*E$d49Rf4FxyyOyhQcy#Z^AJ^qxtW0Dp zs#!j@VAa&ke(=l5`9k4d2f3PwXzV*4iz&Y=){%3q*HuKu<`)Qh#iIv3uiKEG+|<3B zHVH4*nY3f~y!Na@(0TDpkS0&gdT(x3(z$rTlclX6%j^i%f`au;J-*?NU0BRWYh&9H zS)qLbt3SAqrBq>lqs}3$$j4U5L6mzc+$z@HFap8`d8uS;Eb^LtlBX9)4#$9 z%Lp)Ho`!N22UC#0WOVUKV$NVPW}3s6RP>$PWWKjcFX#;|jLy$Gu_sZV8jXbyoUYcJ zy*ZNOoihaCyK62iXST;8o+>r-UFGSN9x!n|7Eu@i^j07rS4%0s2v5u31!!UYRQmKr z7sY1q_ZSdgp(mm-=r2xFRUFh}&X@e5ARHA%H10`8h)=sze!d)O398vm!z8V1m&>q>U2oCdZ_tMms*+I`IR@*n-jBs&9e6!J%;~oqw*Af zm|cMR!b3e)m2gW11VjaPX<puGV51tAF%z!+i zfls;i2UbdGn@i1Cp=0nA*dEb5BjcLTpbN?j4{gzZo;26XU0ih}Xo$|gkFQF)b+k+c zl#gvI^x;mh2;dY;`*Jb}-ka-qjwp}GJSY3gem|>S&wXA15h1F9S85#5bP|FoJ;JQ9 zsqk1(Hq%%gMfx?J;zyO-);gsf8dQSzBcR;grn%>7uO;_$T}RWW)bsHM&*{8m*6pT? z=I_Wq1Z6T~O#_ta!XSm>b^`1_uh|!u{>t_Eg>jWA+WT*E!{SnnNLh$oIMn~570`8+ zUs={A32q64&Vd0!(fg|1-q$QKRO;5&l%Za-0B$`c2udqxq0d?CB`eS$ShNQSI0+m0 zo_2N@yZIWPa4DxWL}<-*5G0`3)5oq zVuIgwDM{nY@z$nA@8{7^k&ktTz%{FtU4Em8gjOdeHLdy<>@n4k+}URHe+XEpFN5Z$ z#irrDI&v=)G`?*YKh%z}Z||JYYtt<7?1L^UYRxB6Aa+Xpf-E;>zc}|`jGO1gSKQOk z1?BO4Tn^k4!Bh%6blm^6Q3Ghu0bde+11iV`9}TIOlx3YI?DHp1NMcmih;Ck3Js8TvB`2nAUe- z;(bq$4@MVTJYrKqxfgqDhgLbS-d3Y^RQ&CMxi z|8}OZZFf|#D<`s1E25OSQ9$oSX09p9g6#%H&cA|yrMkZk<_fk1uLYMU1m%T^FSBs% zh~P++NL78Io7K7yqhl7`=6&kC9jdZ1emk8$5!B$;Wu|%U4wDhq#VKip5r;^4@aL{K z!F3~aiVi_YLss7?c`y`$^~R8mojWN`k}P0d2hI2wqF_sMa%qq<8J6z?WeWRsz3|b~8E& z>>&C5&8gct8dPOeAdgAyFGG+O^5D$HtvrC(NE#5;h6MCQdf#InSj6jogN+fPCk&tW zfu+v|+^bgEBzju(K~z`GcM18oG?6(=KnDkmA(hiBj49dQ zk#o3c))tv5H3783p1;tdHUK609}M4%(TE{%AjXmcL)dr#+X}J!NNNP+ecKjdD;=p7 zHcGV~s}*Nqtcx(PIEh0r6h@~e674ghg8!?)1-TDS1d4lULV#WSEU!6@3-xPMc0~SP zxHnWB=ldYSuVHeh@)=0rL-v(S77Lp|**{o|(&Q$2B8Z<%hjteAgdxZ$ z)OY(mUqSf(AJ&?0bl-CD^A#BuehqbZaBHNRgh;;DNWoa?pYaY5whs_|a{x{LuuugM7E`oJeb8zx|=e(l`aH4nq*fy>Pd^U4`efcTTLSa5`1%c#2tOVDauRu0fhXYHZd;!3dW zX76V^$5{v>B?VTzIZL743&yKZ%qRI3#=T(a7_zF!?o(j@v%~Y641lAOpEc8l>uFYFi=YOPVJ%d~4tC!6-|O#JFSVarXUEBe~owjQEm(VV!S*L3g9hjpjXs zXvj}6y$0`V%DcYmQ%rg;eLCehzXuxd`olPU2I8#mL3seNdD~+|tVPAT4xxRei=%Q~ zB-fk6oy-`_!0c^IUrik~VUO6D`zO^K(AKv&t|$jy*NJ&p{!h16qm|Llie% zUyP#{dj_^9(a)dP^su)jChOp&0-KMoZ2l9?7$m#x+pu3kN-SdlL4PSPPv412b_$Sw zHW_%|c#aq$2Tw(onbTPkLE;dz^*RzTxhI+1@MYDy}AiUKHJ{D{w|`7?^WV9 z!w~+Pw%d$1?{Y|^Bejqtq~c9>MmXX$e!?Doh={DCnKIjOx--_iACmgjO?luLt_T&i>;X6>qn$%P1$jJFr_-C#YMB!FaFsrjO?iEkq@nzLDaT2(uN*;sqzOL+O+pjKx;8m3I>YQpOjdz2dI`uJ z4Sg*^;ND-xf_YRTC=iAHedkObtD&iOQ%Hi6DxTv&dtnu_m{8tg^O;2<`s08c4QT55 zOq(xKw%$ncHE=Vv{ew^8t*0M#yNNQuYo-A78@{W>*biTv+yYW3L{e7g%~Nir_9rw6 z3}+`pIa6-^!jeoM^$?-8x2AOv9O4FO!|KT6A6c~cng{8@0NPIG0H za$DSRAR!nbTjT0D+*ipm*WDdpj~Egtgdkm97c#gY9x-lGGb!QAm(8LnLQnvinkF+q zQIXIZT(A-qV`0aGk%w#V3B*YeK4sw94+9gJYpkLK*yd`<*F|U`Okt|3EOXcN>?5jN zdA_V{UfmpOCQ1vJzW3B;+GrQ*rLHh)z}?Yx_|GoRU1-${ZQRhi!m;cSPo`iPRGl4KZlFcWJm>6X9)QRQdfZNp@Ux(4c99mtnpsiO>G z+4IY7JT?Q5#NuwxMsWJ1vQPc0^8@lrEhOQQl2!0kjApMsH$Qugz#pi7^J?$}thcm} zk}+unHW`8!ww3T6Ihq!YE zPgK+$8~R?&MAe#tiMm_ue;|h;E2QvgOeG^zf*~!Nw!VpE%P%Z*r(+10U)|ij&rPuW zsl86TK3XStIjhBh+2KWX%?s!f_WW!nwjNiRqfv3V;sxMjCmxB0kP=-Zs_-BQ7cNU> zi-;P$$%p)&YbHkej&x%b)R^6bb15Hj8m!S=+Avj?*8$p6=6SsbFv++*TlM7r_t5%(V&8yzTTH6{jE`aCv7A-TWFw zHB)9%_#k#um^LWio7z@6g~=V>8Z>t&{2}p6l^vq@Ay*?j085r>9lV1`o>5CvQg86q zm@1iN!BbaGdA^w9sSGsW{&6TTlduV66*+2ZFYFv= zM0k1l@wbl$x$>EmjzE)AH8@|xB^pxKLZ<>G7ut82quT8c z8xYlWXLAhs1M^swD5`@2<`P6FTnuh7PVMS|FS)eSISpjATjJZ0Ymkj+roFRu<-6g3 zGM_IuY82dvIOD5Su#vrWD{hk|eXcl#8kQWf+Rz~EGCqh*_UoRs$ay9M2`>Bd)Lur> zQ>}A%lVdguN;On-#~?o%Y}tMaGXWKZYM_?8ccEE}Ci2fgcw9`@eJnJ|iW)nMI7%!} zsgIFcxLMZVvymUkEO`>;-06-7MG$D}HfGeGl*2@X*^6vKyNXu8UMkxn180ap^gOqW z%2mq+Zh#(%ZE`8sW~cbWrYj+d{CUyjwQz}}SGH^AHU%81$=l8nF;AlHEpVO@(Xgr) z%QBl*I9JJZG5^^XUw0;8-+Dxfq0 z{m93or$hTTE9N#Xg_I;3-}9OGF6RLII9mg^tvLxh04eO*Y)tA}naBHD$kb8rOwU?B z+rk6b6kX#l%bP&dshD@U<&}Fe1;ct#dFpq{B=YTY#zOjykPE6Q53Vt?KiDAclE?#Y zb0*0@p5*9}*AtU+p)KEy1tm*|0oA!nR>l<7K{@(`SO^=iot#>(eNUK`9+7ZhQRA(k zm=!1M?8N%2)m0PN=6zvhCz+th1EC!KTP4wr&Dej%2zECmi#Gr|U6%%aEaxEYXYohF z?-wE3jP-u?)y6p-$)0aBJhUY6g)6*IlTw|MdzCk~sY0jig*mS@riCQH~ zg(xHC0shAS1>5<%nyV3y7WPtqT-YZ6H`U|?3%~o7D#g0q@9%>ujU6K7rkThX;o!GZ zTGx-joZ})GwB=%q)_6ah7Frl3LH_mc%mFYh1nvo3op%EtkNfidJLlAGpAiu2HhN=& zXHStrXZmCL=AL|Rm6oMsW_1w?UsyIW%LXFZ8H zSlFZ$;0}&to-SK0KG!otF9lc^PgNRKON7CMkly{X}XWyLA+L+c|1S!jP()S z;N~nB$VXk>uiSl_k4X6f%n<4k^~Vwavp?!K#~JXR=7|H+zMRJSgZP-YeY1SfImEpPPdSg02l4w4DEynfgUgfagEEZ5` zbi+_App;te`L$PdY=1|RUdcJ@^LQQQObU4Zgk_z<%#~;NlP!07Q{2O#f4f4Z~F)jKJ==Q{2O3O ztt}7g=#Ty0n3_C&?LpkM?7dg+jVHw}M$85AYyTE!L7G>juUnxvj$b2`tkovg(F86_ zX9rr1F^Gn1yiE@lm-%rn*RK-f1^*j)sgLf-z3-^70EOQDXNSONnFE0nUhw6h-AY}u464Q z=S18(J2i8zpu4nK_{yJ~Q0YhvZrMav5*6qK|Lh8nh^YY-wh?6y2f1!j=K)Uky$V!xuO4~5p>j7$pL zel3?$Da!RMVkAnwTWI@tT{V79strfXg0&V!t#K z_v(?y5}%*1=Dy6@5Z)wO?(og@X{9PR#74%1kZWvSF`Fu*hUbg(c7jNz0qlfN(Q#Q1Jry|_}SM}~6_(IIR)8o&2|BLk{I98p;a-6K1Z0t=i4x4g= z=a$0DiZ%)U=4uv&4svT;?=(Ew&F(|2yk0^=$W0qoxUmj!E8ydzTHcBJ!Db zhsU>m_V~-zss;z6xq|a-_qnlYNc3;RY(!kSkJm2u=?5OHr%*n5RViJwZ4kP=g~sa7 zHaiqUjUJJoT*kwuDQ=zL6ugn0haE>HmGqSlCXEW^WeLM@SJDR2W}paT|zdGg!{NXi}88JWl9RYGZC)ZT@Ssg?>``%-l5m^0LCiajxrW_}HDYlK%uLW#xr*l~Z5*45HTnPUl|6xT8H7dQ z|IM9ZTeg2$Td^HQ%e(zhrcPpu4A^3FzL<46n6hd8*6NvP6@DynAHp4F4(0#eZ@L1_ zf553N+DM~7tR@Gw?d74gpoF-voA)8^=xHyDwhIyF^J8gAts*+z9!p8Eafqc6RFX3Sx*1az@-k`B>_3kAIn*?Sz*bRHh8H(1a%G)X+P{Pq$%Sqd5OEjfjJBJA0UlC*GC$LoUs<8vWRGB4>GD^h9+~(XEbQ9oL9KoINw}jv zjR^tSot<+L=!xN0cHS_xpszT|(Ol;>Jf`iJgFy-N%iI%)kl&%rNg?q){7UaQM$pPq z{;?c;_-&tIbNZ(i2VTtmHNyKP=IZ{DWLIGc36Cm?O%kFv^mHzWS^V+BH*|OP=ueMa z;wMrg21uVS*z1%n{jmHSmG(&CL4d;NA~b%PjmD(}sMtLKiZE*lFqPWi)kH2?r!S*= z>7g*H`G|?TNaiVV^c}H6&?Y7K5R%V(Q@5k4=fJX`89Z`Me+Y!kP6^tz_*nW#K8o}S& za1+y^_pG{+^0dv6yaE1-@?kr@GEl^3o_m%(iS)i=?eg1y{iMVID7u!d&VlO(%_a41 zRAEU@&UeOrECTJfqkZeknu1w3$ChwrZ-lGEtjP`#+okdyQ3Dl)o#R})k7k^@( z>1ofy4l!ui7nHXoxp@zS1N3JfkG;Dp^z)>0Do|-*QHm}iFbce_$v64{FJO96G2Wm# zLdbIMYZYdP=W$xS*O33wlEdn|TDI+7U2;a%j?I(Pq2NPnR=U_tx!~Td$OjWqEINO% zj@MJ%vwtV<^@N;RaI~*znN@&@Kmjjow8Ba@@bm$qQ@`4tFc*tAKYvxg;|QapV?K

    OG^bt6yG2??7FhdGVc8feK}syBta)V!iG4 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

    %@NE}v6PB;8Or#Uu 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 literal 0 HcmV?d00001 diff --git a/homeflow/assets/images/spezivibe-logo.png b/homeflow/assets/images/spezivibe-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b76731f0c0d621e7c73beeb6314be4fddc045099 GIT binary patch literal 138338 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∈!bkIkgE}PTZ9& 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 literal 0 HcmV?d00001 diff --git a/homeflow/assets/images/splash-icon.png b/homeflow/assets/images/splash-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..03d6f6b6c6727954aec1d8206222769afd178d8d GIT binary patch literal 17547 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 + * + * + * ``` + */ +export class ErrorBoundary extends Component { + constructor(props: Props) { + super(props); + this.state = { hasError: false, error: null }; + } + + static getDerivedStateFromError(error: Error): State { + return { hasError: true, error }; + } + + componentDidCatch(error: Error, errorInfo: ErrorInfo): void { + logger.error('Uncaught error in component tree', { error, errorInfo }); + } + + handleRetry = (): void => { + this.setState({ hasError: false, error: null }); + }; + + render(): ReactNode { + if (this.state.hasError) { + if (this.props.fallback) { + return this.props.fallback; + } + + return ( + + Something went wrong + + {this.state.error?.message || 'An unexpected error occurred'} + + + Try Again + + + ); + } + + return this.props.children; + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + padding: 24, + backgroundColor: '#fff', + }, + title: { + fontSize: 20, + fontWeight: '600', + marginBottom: 8, + color: '#11181C', + }, + message: { + fontSize: 14, + color: '#687076', + textAlign: 'center', + marginBottom: 24, + }, + button: { + backgroundColor: '#8C1515', + paddingHorizontal: 24, + paddingVertical: 12, + borderRadius: 8, + }, + buttonText: { + color: '#fff', + fontSize: 16, + fontWeight: '600', + }, +}); diff --git a/homeflow/components/external-link.tsx b/homeflow/components/external-link.tsx new file mode 100644 index 0000000..883e515 --- /dev/null +++ b/homeflow/components/external-link.tsx @@ -0,0 +1,25 @@ +import { Href, Link } from 'expo-router'; +import { openBrowserAsync, WebBrowserPresentationStyle } from 'expo-web-browser'; +import { type ComponentProps } from 'react'; + +type Props = Omit, 'href'> & { href: Href & string }; + +export function ExternalLink({ href, ...rest }: Props) { + return ( + { + if (process.env.EXPO_OS !== 'web') { + // Prevent the default behavior of linking to the default browser on native. + event.preventDefault(); + // Open the link in an in-app browser. + await openBrowserAsync(href, { + presentationStyle: WebBrowserPresentationStyle.AUTOMATIC, + }); + } + }} + /> + ); +} diff --git a/homeflow/components/haptic-tab.tsx b/homeflow/components/haptic-tab.tsx new file mode 100644 index 0000000..7f3981c --- /dev/null +++ b/homeflow/components/haptic-tab.tsx @@ -0,0 +1,18 @@ +import { BottomTabBarButtonProps } from '@react-navigation/bottom-tabs'; +import { PlatformPressable } from '@react-navigation/elements'; +import * as Haptics from 'expo-haptics'; + +export function HapticTab(props: BottomTabBarButtonProps) { + return ( + { + if (process.env.EXPO_OS === 'ios') { + // Add a soft haptic feedback when pressing down on the tabs. + Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); + } + props.onPressIn?.(ev); + }} + /> + ); +} diff --git a/homeflow/components/hello-wave.tsx b/homeflow/components/hello-wave.tsx new file mode 100644 index 0000000..5def547 --- /dev/null +++ b/homeflow/components/hello-wave.tsx @@ -0,0 +1,19 @@ +import Animated from 'react-native-reanimated'; + +export function HelloWave() { + return ( + + 👋 + + ); +} diff --git a/homeflow/components/parallax-scroll-view.tsx b/homeflow/components/parallax-scroll-view.tsx new file mode 100644 index 0000000..ca13a88 --- /dev/null +++ b/homeflow/components/parallax-scroll-view.tsx @@ -0,0 +1,84 @@ +import type { PropsWithChildren, ReactElement } from 'react'; +import { StyleSheet } from 'react-native'; +import Animated, { + interpolate, + useAnimatedRef, + useAnimatedStyle, + useScrollOffset, +} from 'react-native-reanimated'; + +import { ThemedView } from '@/components/themed-view'; +import { useColorScheme } from '@/hooks/use-color-scheme'; +import { useThemeColor } from '@/hooks/use-theme-color'; + +const HEADER_HEIGHT = 250; + +type Props = PropsWithChildren<{ + headerImage: ReactElement; + headerBackgroundColor: { dark: string; light: string }; +}>; + +export default function ParallaxScrollView({ + children, + headerImage, + headerBackgroundColor, +}: Props) { + const backgroundColor = useThemeColor({}, 'background'); + const colorScheme = useColorScheme() ?? 'light'; + const scrollRef = useAnimatedRef(); + const scrollOffset = useScrollOffset(scrollRef); + const headerAnimatedStyle = useAnimatedStyle(() => { + return { + transform: [ + { + translateY: interpolate( + scrollOffset.value, + [-HEADER_HEIGHT, 0, HEADER_HEIGHT], + [-HEADER_HEIGHT / 2, 0, HEADER_HEIGHT * 0.75] + ), + }, + { + scale: interpolate( + scrollOffset.value, + [-HEADER_HEIGHT, 0, HEADER_HEIGHT], + [2, 1, 1] + ), + }, + ], + } as any; + }); + + + return ( + + + {headerImage} + + {children} + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + header: { + height: HEADER_HEIGHT, + overflow: 'hidden', + }, + content: { + flex: 1, + padding: 32, + gap: 16, + overflow: 'hidden', + }, +}); diff --git a/homeflow/components/themed-text.tsx b/homeflow/components/themed-text.tsx new file mode 100644 index 0000000..d79d0a1 --- /dev/null +++ b/homeflow/components/themed-text.tsx @@ -0,0 +1,60 @@ +import { StyleSheet, Text, type TextProps } from 'react-native'; + +import { useThemeColor } from '@/hooks/use-theme-color'; + +export type ThemedTextProps = TextProps & { + lightColor?: string; + darkColor?: string; + type?: 'default' | 'title' | 'defaultSemiBold' | 'subtitle' | 'link'; +}; + +export function ThemedText({ + style, + lightColor, + darkColor, + type = 'default', + ...rest +}: ThemedTextProps) { + const color = useThemeColor({ light: lightColor, dark: darkColor }, 'text'); + + return ( + + ); +} + +const styles = StyleSheet.create({ + default: { + fontSize: 16, + lineHeight: 24, + }, + defaultSemiBold: { + fontSize: 16, + lineHeight: 24, + fontWeight: '600', + }, + title: { + fontSize: 32, + fontWeight: 'bold', + lineHeight: 32, + }, + subtitle: { + fontSize: 20, + fontWeight: 'bold', + }, + link: { + lineHeight: 30, + fontSize: 16, + color: '#0a7ea4', + }, +}); diff --git a/homeflow/components/themed-view.tsx b/homeflow/components/themed-view.tsx new file mode 100644 index 0000000..6f181d8 --- /dev/null +++ b/homeflow/components/themed-view.tsx @@ -0,0 +1,14 @@ +import { View, type ViewProps } from 'react-native'; + +import { useThemeColor } from '@/hooks/use-theme-color'; + +export type ThemedViewProps = ViewProps & { + lightColor?: string; + darkColor?: string; +}; + +export function ThemedView({ style, lightColor, darkColor, ...otherProps }: ThemedViewProps) { + const backgroundColor = useThemeColor({ light: lightColor, dark: darkColor }, 'background'); + + return ; +} diff --git a/homeflow/components/ui/collapsible.tsx b/homeflow/components/ui/collapsible.tsx new file mode 100644 index 0000000..2dc3ac5 --- /dev/null +++ b/homeflow/components/ui/collapsible.tsx @@ -0,0 +1,44 @@ +import { PropsWithChildren, useState } from 'react'; +import { StyleSheet, TouchableOpacity } from 'react-native'; + +import { ThemedText } from '@/components/themed-text'; +import { ThemedView } from '@/components/themed-view'; +import { IconSymbol } from '@/components/ui/icon-symbol'; +import { Colors } from '@/constants/theme'; +import { useColorScheme } from '@/hooks/use-color-scheme'; + +export function Collapsible({ children, title }: PropsWithChildren & { title: string }) { + const [isOpen, setIsOpen] = useState(false); + const theme = useColorScheme() ?? 'light'; + + return ( + + setIsOpen((value) => !value)} + activeOpacity={0.8}> + + + {title} + + {isOpen && {children}} + + ); +} + +const styles = StyleSheet.create({ + heading: { + flexDirection: 'row', + alignItems: 'center', + gap: 6, + }, + content: { + marginTop: 6, + marginLeft: 24, + }, +}); diff --git a/homeflow/components/ui/icon-symbol.ios.tsx b/homeflow/components/ui/icon-symbol.ios.tsx new file mode 100644 index 0000000..7b3ce18 --- /dev/null +++ b/homeflow/components/ui/icon-symbol.ios.tsx @@ -0,0 +1,38 @@ +import { SymbolView, SymbolViewProps, SymbolWeight } from 'expo-symbols'; +import { StyleProp, ViewStyle } from 'react-native'; + +// Export the type for use in other components (matches the non-iOS version) +export type IconSymbolName = SymbolViewProps['name']; + +export interface IconSymbolProps { + name: IconSymbolName; + size?: number; + color: string; + style?: StyleProp; + /** SF Symbol weight - only applies on iOS */ + weight?: SymbolWeight; +} + +export function IconSymbol({ + name, + size = 24, + color, + style, + weight = 'regular', +}: IconSymbolProps) { + return ( + + ); +} diff --git a/homeflow/components/ui/icon-symbol.tsx b/homeflow/components/ui/icon-symbol.tsx new file mode 100644 index 0000000..1bd1dd7 --- /dev/null +++ b/homeflow/components/ui/icon-symbol.tsx @@ -0,0 +1,70 @@ +// Fallback for using MaterialIcons on Android and web. + +import MaterialIcons from '@expo/vector-icons/MaterialIcons'; +import { ComponentProps } from 'react'; +import { OpaqueColorValue, type StyleProp, type TextStyle } from 'react-native'; + +type MaterialIconName = ComponentProps['name']; + +/** + * Add your SF Symbols to Material Icons mappings here. + * - see Material Icons in the [Icons Directory](https://icons.expo.fyi). + * - see SF Symbols in the [SF Symbols](https://developer.apple.com/sf-symbols/) app. + */ +const MAPPING = { + // Navigation & Tabs + 'house.fill': 'home', + 'calendar': 'event', + 'person.2.fill': 'people', + 'paperplane.fill': 'send', + + // UI Elements + 'chevron.left.forwardslash.chevron.right': 'code', + 'chevron.right': 'chevron-right', + 'checkmark': 'check', + 'checkmark.circle.fill': 'check-circle', + 'info.circle.fill': 'info', + + // Features & Welcome + 'heart.fill': 'favorite', + 'chart.line.uptrend.xyaxis': 'trending-up', + 'bell.badge.fill': 'notifications', + 'sparkles': 'auto-awesome', + 'lock.shield.fill': 'security', + 'star.fill': 'star', + + // Contacts & Communication + 'person.circle.fill': 'account-circle', + 'phone.fill': 'phone', + 'message.fill': 'chat', + 'envelope.fill': 'email', + 'questionmark.circle.fill': 'help', + 'safari.fill': 'language', + 'exclamationmark.triangle.fill': 'warning', + + // Documents + 'doc.text.fill': 'description', +} satisfies Record; + +export type IconSymbolName = keyof typeof MAPPING; + +export interface IconSymbolProps { + name: IconSymbolName; + size?: number; + color: string | OpaqueColorValue; + style?: StyleProp; +} + +/** + * An icon component that uses native SF Symbols on iOS, and Material Icons on Android and web. + * This ensures a consistent look across platforms, and optimal resource usage. + * Icon `name`s are based on SF Symbols and require manual mapping to Material Icons. + */ +export function IconSymbol({ + name, + size = 24, + color, + style, +}: IconSymbolProps) { + return ; +} diff --git a/homeflow/components/ui/loading-screen.tsx b/homeflow/components/ui/loading-screen.tsx new file mode 100644 index 0000000..e23e5a6 --- /dev/null +++ b/homeflow/components/ui/loading-screen.tsx @@ -0,0 +1,29 @@ +import { ActivityIndicator, StyleSheet, View } from 'react-native'; +import { useThemeColor } from '@/hooks/use-theme-color'; + +interface LoadingScreenProps { + /** Optional message to display below the spinner */ + message?: string; +} + +/** + * Full-screen loading indicator with theme support + */ +export function LoadingScreen({ message: _message }: LoadingScreenProps) { + const backgroundColor = useThemeColor({}, 'background'); + const tintColor = useThemeColor({}, 'tint'); + + return ( + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, +}); diff --git a/homeflow/components/ui/screen.tsx b/homeflow/components/ui/screen.tsx new file mode 100644 index 0000000..e7ab280 --- /dev/null +++ b/homeflow/components/ui/screen.tsx @@ -0,0 +1,276 @@ +import { useCallback, useState } from 'react'; +import { + KeyboardAvoidingView, + LayoutChangeEvent, + Platform, + ScrollView, + StyleProp, + StyleSheet, + View, + ViewStyle, +} from 'react-native'; +import { StatusBar } from 'expo-status-bar'; +import { useSafeAreaInsets, Edge } from 'react-native-safe-area-context'; +import { useThemeColor } from '@/hooks/use-theme-color'; + +const isWeb = Platform.OS === 'web'; + +type ScreenPreset = 'fixed' | 'scroll' | 'auto'; + +type StatusBarStyle = 'light' | 'dark' | 'auto'; + +export type ScreenProps = { + /** + * Children to render in the screen + */ + children?: React.ReactNode; + /** + * Override the background color + */ + backgroundColor?: string; + /** + * Style for the outer container + */ + style?: StyleProp; + /** + * Style for the inner content container + */ + contentContainerStyle?: StyleProp; + /** + * Which edges to apply safe area insets to + * @default ['top', 'bottom'] + */ + safeAreaEdges?: Edge[]; + /** + * Preset determines scroll behavior: + * - 'fixed': No scrolling, content fills available space + * - 'scroll': Always scrollable + * - 'auto': Scrollable only when content exceeds screen height + * @default 'fixed' + */ + preset?: ScreenPreset; + /** + * Whether to avoid the keyboard + * @default true + */ + keyboardAvoidingEnabled?: boolean; + /** + * Additional offset for keyboard avoiding behavior + * @default 0 + */ + keyboardOffset?: number; + /** + * Status bar style + * @default 'auto' + */ + statusBarStyle?: StatusBarStyle; + /** + * Whether the scroll view should bounce at the edges + * @default true + */ + bounces?: boolean; + /** + * Whether to show scroll indicators + * @default true + */ + showsScrollIndicator?: boolean; +}; + +/** + * Screen component that wraps content with safe area handling, + * keyboard avoidance, and optional scrolling. + */ +export function Screen(props: ScreenProps) { + const { + children, + backgroundColor: backgroundColorProp, + style, + contentContainerStyle, + safeAreaEdges = ['top', 'bottom'], + preset = 'fixed', + keyboardAvoidingEnabled = true, + keyboardOffset = 0, + statusBarStyle = 'auto', + bounces = true, + showsScrollIndicator = true, + } = props; + + const themeBackground = useThemeColor({}, 'background'); + const backgroundColor = backgroundColorProp ?? themeBackground; + + const insets = useSafeAreaInsets(); + + // Calculate safe area padding based on specified edges + const safeAreaStyle: ViewStyle = { + paddingTop: safeAreaEdges.includes('top') ? insets.top : 0, + paddingBottom: safeAreaEdges.includes('bottom') ? insets.bottom : 0, + paddingLeft: safeAreaEdges.includes('left') ? insets.left : 0, + paddingRight: safeAreaEdges.includes('right') ? insets.right : 0, + }; + + // Determine status bar style (expo-status-bar uses 'light', 'dark', 'auto') + const resolvedStatusBarStyle = statusBarStyle === 'auto' + ? 'auto' + : statusBarStyle; + + const containerStyles = [ + styles.container, + { backgroundColor }, + safeAreaStyle, + style, + ]; + + // On web, keyboard avoiding is handled by the browser + // On iOS, use 'padding', on Android use 'height' + const keyboardBehavior = Platform.OS === 'ios' ? 'padding' : 'height'; + const shouldAvoidKeyboard = keyboardAvoidingEnabled && !isWeb; + + const renderContent = () => { + if (preset === 'fixed') { + return {children}; + } + + if (preset === 'scroll') { + return ( + + {children} + + ); + } + + // Auto preset - scrolls only when content exceeds container + return ( + + {children} + + ); + }; + + return ( + + + {shouldAvoidKeyboard ? ( + + {renderContent()} + + ) : ( + renderContent() + )} + + ); +} + +/** + * Fixed content - no scrolling, fills available space + */ +function FixedContent({ + children, + style, +}: { + children: React.ReactNode; + style?: StyleProp; +}) { + return {children}; +} + +/** + * Scrollable content - always scrollable + */ +function ScrollContent({ + children, + style, + bounces, + showsScrollIndicator, +}: { + children: React.ReactNode; + style?: StyleProp; + bounces: boolean; + showsScrollIndicator: boolean; +}) { + return ( + + {children} + + ); +} + +/** + * Auto content - scrollable only when content exceeds container height + */ +function AutoContent({ + children, + style, + bounces, + showsScrollIndicator, +}: { + children: React.ReactNode; + style?: StyleProp; + bounces: boolean; + showsScrollIndicator: boolean; +}) { + const [containerHeight, setContainerHeight] = useState(0); + const [contentHeight, setContentHeight] = useState(0); + + const shouldScroll = contentHeight > containerHeight; + + const handleContainerLayout = useCallback((e: LayoutChangeEvent) => { + setContainerHeight(e.nativeEvent.layout.height); + }, []); + + const handleContentLayout = useCallback((e: LayoutChangeEvent) => { + setContentHeight(e.nativeEvent.layout.height); + }, []); + + return ( + + {children} + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + keyboardAvoidingView: { + flex: 1, + }, + content: { + flex: 1, + }, + scrollView: { + flex: 1, + }, + scrollContent: { + flexGrow: 1, + }, + autoContent: { + flexGrow: 1, + }, +}); diff --git a/homeflow/constants/theme.ts b/homeflow/constants/theme.ts new file mode 100644 index 0000000..7db6c74 --- /dev/null +++ b/homeflow/constants/theme.ts @@ -0,0 +1,95 @@ +/** + * Below are the colors that are used in the app. The colors are defined in the light and dark mode. + * There are many other ways to style your app. For example, [Nativewind](https://www.nativewind.dev/), [Tamagui](https://tamagui.dev/), [unistyles](https://reactnativeunistyles.vercel.app), etc. + */ + +import { Platform } from 'react-native'; + +// Stanford Cardinal Red +const tintColorLight = '#8C1515'; +const tintColorDark = '#fff'; + +export const Colors = { + light: { + text: '#11181C', + background: '#fff', + tint: tintColorLight, + icon: '#687076', + tabIconDefault: '#687076', + tabIconSelected: tintColorLight, + border: '#ddd', + buttonBackground: '#8C1515', + buttonText: '#fff', + }, + dark: { + text: '#ECEDEE', + background: '#151718', + tint: tintColorDark, + icon: '#9BA1A6', + tabIconDefault: '#9BA1A6', + tabIconSelected: tintColorDark, + border: '#444', + buttonBackground: '#8C1515', + buttonText: '#fff', + }, +}; + +// Stanford color palette +export const StanfordColors = { + cardinal: '#8C1515', + cardinalLight: '#B83A4B', + cardinalDark: '#6B0F0F', + white: '#FFFFFF', + black: '#2E2D29', + coolGrey: '#4D4F53', + beige: '#F5E6D3', +}; + +/** + * Layout spacing constants + */ +export const Spacing = { + /** Horizontal padding for screen content */ + screenHorizontal: 24, + /** Top padding to account for status bar (use SafeAreaView when possible) */ + screenTop: 60, + /** Standard vertical gap between sections */ + sectionGap: 24, + /** Small gap between related elements */ + elementGap: 12, + /** Extra small gap */ + xs: 4, + /** Small gap */ + sm: 8, + /** Medium gap */ + md: 16, + /** Large gap */ + lg: 24, + /** Extra large gap */ + xl: 32, +}; + +export const Fonts = Platform.select({ + ios: { + /** iOS `UIFontDescriptorSystemDesignDefault` */ + sans: 'system-ui', + /** iOS `UIFontDescriptorSystemDesignSerif` */ + serif: 'ui-serif', + /** iOS `UIFontDescriptorSystemDesignRounded` */ + rounded: 'ui-rounded', + /** iOS `UIFontDescriptorSystemDesignMonospaced` */ + mono: 'ui-monospace', + }, + default: { + sans: 'normal', + serif: 'serif', + rounded: 'normal', + mono: 'monospace', + }, + web: { + sans: "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif", + serif: "Georgia, 'Times New Roman', serif", + rounded: "'SF Pro Rounded', 'Hiragino Maru Gothic ProN', Meiryo, 'MS PGothic', sans-serif", + mono: "SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace", + }, +}); diff --git a/homeflow/eslint.config.js b/homeflow/eslint.config.js new file mode 100644 index 0000000..09b3971 --- /dev/null +++ b/homeflow/eslint.config.js @@ -0,0 +1,15 @@ +// https://docs.expo.dev/guides/using-eslint/ +const { defineConfig } = require('eslint/config'); +const expoConfig = require('eslint-config-expo/flat'); + +module.exports = defineConfig([ + expoConfig, + { + ignores: ['dist/*'], + }, + { + rules: { + 'import/no-unresolved': 'off', + }, + }, +]); diff --git a/homeflow/hooks/use-color-scheme.ts b/homeflow/hooks/use-color-scheme.ts new file mode 100644 index 0000000..17e3c63 --- /dev/null +++ b/homeflow/hooks/use-color-scheme.ts @@ -0,0 +1 @@ +export { useColorScheme } from 'react-native'; diff --git a/homeflow/hooks/use-color-scheme.web.ts b/homeflow/hooks/use-color-scheme.web.ts new file mode 100644 index 0000000..7eb1c1b --- /dev/null +++ b/homeflow/hooks/use-color-scheme.web.ts @@ -0,0 +1,21 @@ +import { useEffect, useState } from 'react'; +import { useColorScheme as useRNColorScheme } from 'react-native'; + +/** + * To support static rendering, this value needs to be re-calculated on the client side for web + */ +export function useColorScheme() { + const [hasHydrated, setHasHydrated] = useState(false); + + useEffect(() => { + setHasHydrated(true); + }, []); + + const colorScheme = useRNColorScheme(); + + if (hasHydrated) { + return colorScheme; + } + + return 'light'; +} diff --git a/homeflow/hooks/use-onboarding-status.ts b/homeflow/hooks/use-onboarding-status.ts new file mode 100644 index 0000000..55fb9b2 --- /dev/null +++ b/homeflow/hooks/use-onboarding-status.ts @@ -0,0 +1,34 @@ +/** + * Stub onboarding status hook for base template + * When onboarding feature is added, this file is replaced + */ +import { useState, useEffect } from 'react'; + +/** + * Hook that returns onboarding completion status + * Base implementation always returns true (onboarding complete) + */ +export function useOnboardingStatus(): boolean | null { + const [status, setStatus] = useState(null); + + useEffect(() => { + // In the base template, onboarding is considered complete + setStatus(true); + }, []); + + return status; +} + +/** + * Mark onboarding as completed (no-op in base template) + */ +export async function markOnboardingCompleted(): Promise { + // No-op in base template +} + +/** + * Reset onboarding status (no-op in base template) + */ +export async function resetOnboardingStatus(): Promise { + // No-op in base template +} diff --git a/homeflow/hooks/use-theme-color.ts b/homeflow/hooks/use-theme-color.ts new file mode 100644 index 0000000..0cbc3a6 --- /dev/null +++ b/homeflow/hooks/use-theme-color.ts @@ -0,0 +1,21 @@ +/** + * Learn more about light and dark modes: + * https://docs.expo.dev/guides/color-schemes/ + */ + +import { Colors } from '@/constants/theme'; +import { useColorScheme } from '@/hooks/use-color-scheme'; + +export function useThemeColor( + props: { light?: string; dark?: string }, + colorName: keyof typeof Colors.light & keyof typeof Colors.dark +) { + const theme = useColorScheme() ?? 'light'; + const colorFromProps = props[theme]; + + if (colorFromProps) { + return colorFromProps; + } else { + return Colors[theme][colorName]; + } +} diff --git a/homeflow/lib/constants.ts b/homeflow/lib/constants.ts new file mode 100644 index 0000000..40e71a9 --- /dev/null +++ b/homeflow/lib/constants.ts @@ -0,0 +1,14 @@ +/** + * Shared application-wide constants + */ + +/** + * Storage keys + */ +export const ONBOARDING_COMPLETED_KEY = '@onboarding_completed'; +export const CONSENT_KEY = '@consent_given'; + +/** + * FHIR identifier system for task IDs + */ +export const SPEZIVIBE_TASK_ID_SYSTEM = 'http://spezivibe.com/fhir/identifier/task-id'; diff --git a/homeflow/lib/healthkit-config.ts b/homeflow/lib/healthkit-config.ts new file mode 100644 index 0000000..b96d92a --- /dev/null +++ b/homeflow/lib/healthkit-config.ts @@ -0,0 +1,32 @@ +/** + * HealthKit Configuration + * + * Configure which health data types to collect and display. + * Modify this file to customize the health metrics for your app. + */ + +import { HealthKitConfig, SampleType } from '@spezivibe/healthkit'; + +export const healthKitConfig: HealthKitConfig = { + // Health data types to collect (request read/write access) + collect: [ + SampleType.stepCount, + SampleType.heartRate, + SampleType.activeEnergyBurned, + SampleType.sleepAnalysis, + ], + + // Health data types to read only (no write access) + readOnly: [ + SampleType.bodyMass, + SampleType.height, + ], + + // Enable background delivery for these types (optional) + // backgroundDelivery: [ + // SampleType.stepCount, + // ], + + // Whether to sync health data to the backend (optional) + syncToBackend: false, +}; diff --git a/homeflow/lib/questionnaires/index.ts b/homeflow/lib/questionnaires/index.ts new file mode 100644 index 0000000..9053ce3 --- /dev/null +++ b/homeflow/lib/questionnaires/index.ts @@ -0,0 +1,2 @@ +export * from './types'; +export * from './sample-questionnaires'; diff --git a/homeflow/lib/questionnaires/sample-questionnaires.ts b/homeflow/lib/questionnaires/sample-questionnaires.ts new file mode 100644 index 0000000..ea069cb --- /dev/null +++ b/homeflow/lib/questionnaires/sample-questionnaires.ts @@ -0,0 +1,93 @@ +import { Questionnaire, QuestionnaireBuilder } from '@spezivibe/questionnaire'; + +export const WELLNESS_QUESTIONNAIRE: Questionnaire = new QuestionnaireBuilder('wellness-checkin') + .title('Daily Wellness Check-In') + .description('Take a moment to reflect on your overall wellness today') + .addInteger('mood', 'How would you rate your mood today?', { + required: true, + min: 1, + max: 10, + }) + .addInteger('energy', 'What is your energy level?', { + required: true, + min: 1, + max: 10, + }) + .addChoice('sleep_quality', 'How was your sleep last night?', { + required: true, + answerOption: [ + { value: 'excellent', display: 'Excellent' }, + { value: 'good', display: 'Good' }, + { value: 'fair', display: 'Fair' }, + { value: 'poor', display: 'Poor' }, + ], + }) + .addInteger('stress_level', 'How stressed do you feel?', { + required: true, + min: 1, + max: 10, + }) + .addText('notes', 'Additional notes', { + required: false, + }) + .build(); + +export const GRATITUDE_QUESTIONNAIRE: Questionnaire = new QuestionnaireBuilder('gratitude-reflection') + .title('Evening Gratitude') + .description('Reflect on the positive moments of your day') + .addText('grateful_for', 'What are you grateful for today?', { + required: true, + }) + .addText('positive_moment', 'Describe a positive moment from today', { + required: true, + }) + .addBoolean('helped_someone', 'Did you help someone today?', { + required: true, + }) + .addInteger('overall_satisfaction', 'How satisfied are you with today?', { + required: true, + min: 1, + max: 10, + }) + .build(); + +export const WEEKLY_REFLECTION_QUESTIONNAIRE: Questionnaire = new QuestionnaireBuilder('weekly-reflection') + .title('Weekly Reflection') + .description('Review your progress and set intentions for the week ahead') + .addDate('reflection_date', 'Week ending date', { + required: true, + }) + .addInteger('week_rating', 'Overall, how was your week?', { + required: true, + min: 1, + max: 10, + }) + .addText('accomplishments', 'What did you accomplish this week?', { + required: true, + }) + .addText('challenges', 'What challenges did you face?', { + required: false, + }) + .addChoice('self_care', 'How well did you practice self-care?', { + required: true, + answerOption: [ + { value: 'excellent', display: 'Excellent - Made it a priority' }, + { value: 'good', display: 'Good - Regular practice' }, + { value: 'fair', display: 'Fair - Could improve' }, + { value: 'poor', display: 'Poor - Needs attention' }, + ], + }) + .addText('next_week_goals', 'What are your goals for next week?', { + required: true, + }) + .build(); + +export const SAMPLE_QUESTIONNAIRES = [ + WELLNESS_QUESTIONNAIRE, + GRATITUDE_QUESTIONNAIRE, + WEEKLY_REFLECTION_QUESTIONNAIRE, +]; + +export function getQuestionnaireById(id: string): Questionnaire | undefined { + return SAMPLE_QUESTIONNAIRES.find((q) => q.id === id); +} diff --git a/homeflow/lib/questionnaires/types.ts b/homeflow/lib/questionnaires/types.ts new file mode 100644 index 0000000..57bbcb7 --- /dev/null +++ b/homeflow/lib/questionnaires/types.ts @@ -0,0 +1,10 @@ +// Re-export FHIR R4 types from the @spezivibe/questionnaire package +export type { + Questionnaire, + QuestionnaireResponse, + QuestionnaireItem, + QuestionnaireTheme, + QuestionnaireFormProps, + QuestionnaireResult, + CancelBehavior, +} from '@spezivibe/questionnaire'; diff --git a/homeflow/lib/services/README.md b/homeflow/lib/services/README.md new file mode 100644 index 0000000..3c82efd --- /dev/null +++ b/homeflow/lib/services/README.md @@ -0,0 +1,151 @@ +# Backend Services Module + +This module implements the **Standard pattern** from Stanford Spezi, providing centralized data orchestration with pluggable backend support. + +## Overview + +The **Standard** (`standard-context.tsx`) is the central orchestrator that: +- Initializes and provides the backend service to all modules +- Manages application-wide data flow +- Handles initialization order and error states +- Exposes retry mechanism for failed initialization + +## Architecture + +``` +┌─────────────────────────────────────────┐ +│ Application Layer │ +│ (Scheduler, Questionnaires) │ +└─────────────────┬───────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ Standard Context │ +│ Provides: backend, backendType, error │ +└─────────────────┬───────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────┐ +│ LocalStorage Backend │ +│ (AsyncStorage) │ +└─────────────────────────────────────────┘ +``` + +## Usage + +### Basic Setup + +The Standard is configured at the root of your application: + +```typescript +// app/_layout.tsx +import { StandardProvider } from '@/lib/services/standard-context'; + +export default function RootLayout() { + return ( + + {/* Your app content */} + + ); +} +``` + +### Using the Standard + +Access the backend from any component: + +```typescript +import { useStandard } from '@/lib/services/standard-context'; + +function MyComponent() { + const { backend, backendType, isLoading, error, retry } = useStandard(); + + if (isLoading) return ; + if (error) return ; + + // Use backend for data operations + return ; +} +``` + +## Local Storage Backend + +The default backend stores all data locally using AsyncStorage. + +**Use Cases:** +- Offline-only apps +- Privacy-sensitive applications +- Development and testing +- No backend setup required + +## Adding Firebase Support + +To add cloud storage and authentication, regenerate your app with Firebase: + +```bash +npx create-spezivibe-app my-app +# Select "Firebase" as the backend +``` + +This adds: +- Firebase authentication via `@spezivibe/account` +- Firestore data storage +- User ID synchronization between auth and storage + +## API Reference + +### StandardContextValue + +```typescript +interface StandardContextValue { + backend: BackendService | null; // The backend service instance + backendType: BackendType | null; // 'local' or 'firebase' + isLoading: boolean; // True during initialization + error: Error | null; // Initialization error if any + retry: () => void; // Retry initialization +} +``` + +### BackendService Interface + +```typescript +interface BackendService { + initialize(): Promise; + setUserId(userId: string | null): void; + + // Scheduler operations + loadSchedulerState(): Promise; + saveSchedulerState(state: SchedulerState): Promise; + + // Task operations + createTask(task: Task): Promise; + updateTask(task: Task): Promise; + deleteTask(taskId: string): Promise; + getTasks(): Promise; + + // Outcome operations + createOutcome(outcome: Outcome): Promise; + getOutcomes(): Promise; + + // Questionnaire responses + saveQuestionnaireResponse(response: QuestionnaireResponse): Promise; + getQuestionnaireResponses(taskId?: string): Promise; +} +``` + +## Best Practices + +1. **Use the Standard** - Never import backends directly +2. **Handle Loading** - Show appropriate UI during initialization +3. **Handle Errors** - Provide retry mechanism for users +4. **Memoization** - Context values are memoized to prevent re-renders + +## Files + +| File | Purpose | +|------|---------| +| `standard-context.tsx` | Standard provider and hook | +| `backend-factory.ts` | Creates backend based on config | +| `config.ts` | Backend configuration | +| `types.ts` | TypeScript interfaces | +| `backends/local-storage.ts` | AsyncStorage implementation | diff --git a/homeflow/lib/services/backend-factory.ts b/homeflow/lib/services/backend-factory.ts new file mode 100644 index 0000000..f6038fd --- /dev/null +++ b/homeflow/lib/services/backend-factory.ts @@ -0,0 +1,20 @@ +import { BackendService, BackendConfig } from './types'; +import { LocalStorageBackend } from './backends/local-storage'; + +/** + * Factory to create the appropriate backend service based on configuration + * + * Base template only supports local storage. + * When firebase feature is added, this file is replaced with one that supports Firebase. + */ +export class BackendFactory { + static createBackend(config: BackendConfig): BackendService { + switch (config.type) { + case 'local': + return new LocalStorageBackend(); + default: + console.warn(`Backend type ${config.type} not available, falling back to local storage`); + return new LocalStorageBackend(); + } + } +} diff --git a/homeflow/lib/services/backends/local-storage.ts b/homeflow/lib/services/backends/local-storage.ts new file mode 100644 index 0000000..cfff63d --- /dev/null +++ b/homeflow/lib/services/backends/local-storage.ts @@ -0,0 +1,154 @@ +import AsyncStorage from '@react-native-async-storage/async-storage'; +import { BackendService } from '../types'; + +// Stub types for the base template +type Task = { id: string; [key: string]: unknown }; +type Outcome = { id: string; completedAt: Date; [key: string]: unknown }; +type SchedulerState = { tasks: Task[]; outcomes: Outcome[] }; +type QuestionnaireResponse = { id?: string; completedAt?: Date; metadata?: { taskId?: string }; [key: string]: unknown }; + +const STORAGE_KEYS = { + SCHEDULER: '@scheduler_state', + RESPONSES: '@questionnaire_responses', +}; + +/** + * Helper to deserialize a task from JSON + */ +function deserializeTask(task: any): Task { + return { + ...task, + schedule: task.schedule + ? { + ...task.schedule, + start: task.schedule.start ? new Date(task.schedule.start) : undefined, + end: task.schedule.end ? new Date(task.schedule.end) : undefined, + } + : undefined, + }; +} + +/** + * Local AsyncStorage backend + * Stores all data locally on the device + * No authentication required - user ID management is a no-op + */ +export class LocalStorageBackend implements BackendService { + async initialize(): Promise { + // No initialization needed for AsyncStorage + } + + setUserId(_userId: string | null): void { + // No-op for local storage - doesn't need user ID + } + + async loadSchedulerState(): Promise { + try { + const data = await AsyncStorage.getItem(STORAGE_KEYS.SCHEDULER); + if (!data) return null; + + const parsed = JSON.parse(data); + // Deserialize dates + return { + tasks: parsed.tasks.map((task: any) => deserializeTask(task)), + outcomes: parsed.outcomes.map((outcome: any) => ({ + ...outcome, + completedAt: new Date(outcome.completedAt), + })), + }; + } catch (error) { + console.error('Failed to load scheduler state:', error); + return null; + } + } + + async saveSchedulerState(state: SchedulerState): Promise { + try { + await AsyncStorage.setItem(STORAGE_KEYS.SCHEDULER, JSON.stringify(state)); + } catch (error) { + console.error('Failed to save scheduler state:', error); + throw error; + } + } + + async createTask(task: Task): Promise { + const state = (await this.loadSchedulerState()) || { tasks: [], outcomes: [] }; + state.tasks.push(task); + await this.saveSchedulerState(state); + return task; + } + + async updateTask(task: Task): Promise { + const state = (await this.loadSchedulerState()) || { tasks: [], outcomes: [] }; + const index = state.tasks.findIndex((t) => t.id === task.id); + if (index >= 0) { + state.tasks[index] = task; + await this.saveSchedulerState(state); + } + return task; + } + + async deleteTask(taskId: string): Promise { + const state = (await this.loadSchedulerState()) || { tasks: [], outcomes: [] }; + state.tasks = state.tasks.filter((t) => t.id !== taskId); + state.outcomes = state.outcomes.filter((o) => !o.id.startsWith(taskId)); + await this.saveSchedulerState(state); + } + + async getTasks(): Promise { + const state = await this.loadSchedulerState(); + return state?.tasks || []; + } + + async createOutcome(outcome: Outcome): Promise { + const state = (await this.loadSchedulerState()) || { tasks: [], outcomes: [] }; + state.outcomes.push(outcome); + await this.saveSchedulerState(state); + return outcome; + } + + async getOutcomes(): Promise { + const state = await this.loadSchedulerState(); + return state?.outcomes || []; + } + + async saveQuestionnaireResponse(response: QuestionnaireResponse): Promise { + try { + const existing = await AsyncStorage.getItem(STORAGE_KEYS.RESPONSES); + const responses: QuestionnaireResponse[] = existing ? JSON.parse(existing) : []; + responses.push(response); + await AsyncStorage.setItem(STORAGE_KEYS.RESPONSES, JSON.stringify(responses)); + } catch (error) { + console.error('Failed to save questionnaire response:', error); + throw error; + } + } + + async getQuestionnaireResponses(taskId?: string): Promise { + try { + const data = await AsyncStorage.getItem(STORAGE_KEYS.RESPONSES); + if (!data) return []; + + const responses: QuestionnaireResponse[] = JSON.parse(data); + + // Deserialize dates + const deserialized = responses.map((r) => ({ + ...r, + completedAt: r.completedAt ? new Date(r.completedAt) : undefined, + })); + + return taskId ? deserialized.filter((r) => r.metadata?.taskId === taskId) : deserialized; + } catch (error) { + console.error('Failed to load questionnaire responses:', error); + return []; + } + } + + async syncToRemote(): Promise { + // No-op for local storage + } + + async syncFromRemote(): Promise { + // No-op for local storage + } +} diff --git a/homeflow/lib/services/config.ts b/homeflow/lib/services/config.ts new file mode 100644 index 0000000..3e55305 --- /dev/null +++ b/homeflow/lib/services/config.ts @@ -0,0 +1,32 @@ +import { BackendConfig } from './types'; + +/** + * Backend Configuration - Local Storage Only + * + * This configuration uses AsyncStorage for local data persistence. + * Data is stored on-device and will be lost if the app is uninstalled. + * + * FOR CLOUD STORAGE (Firebase): + * Add the Firebase feature when generating your app: + * npx create-spezivibe-app --features firebase + * + * The Firebase feature replaces this file with one that: + * - Reads EXPO_PUBLIC_BACKEND_TYPE from environment + * - Supports both Firebase Firestore and local AsyncStorage + * - Validates Firebase configuration on startup + */ + +const DEFAULT_CONFIG: BackendConfig = { + type: 'local', +}; + +/** + * Get the backend configuration + * + * Returns local storage config. For Firebase support, + * regenerate with the Firebase feature enabled. + */ +export function getBackendConfig(): BackendConfig { + return DEFAULT_CONFIG; +} + diff --git a/homeflow/lib/services/index.ts b/homeflow/lib/services/index.ts new file mode 100644 index 0000000..88934c8 --- /dev/null +++ b/homeflow/lib/services/index.ts @@ -0,0 +1,12 @@ +/** + * Backend Services Module + * + * This module provides an abstraction layer for different backend implementations, + * allowing the app to use local storage or other backends + * without changing the core business logic. + */ + +export * from './types'; +export * from './backend-factory'; +export * from './config'; +export { LocalStorageBackend } from './backends/local-storage'; diff --git a/homeflow/lib/services/standard-context.tsx b/homeflow/lib/services/standard-context.tsx new file mode 100644 index 0000000..9f18216 --- /dev/null +++ b/homeflow/lib/services/standard-context.tsx @@ -0,0 +1,131 @@ +import React, { createContext, useContext, useEffect, useState, useMemo, useCallback, ReactNode } from 'react'; +import { Scheduler, SchedulerContext, createSampleTasks } from '@spezivibe/scheduler'; +import { BackendService, BackendType } from './types'; +import { BackendFactory } from './backend-factory'; +import { getBackendConfig } from './config'; +import { createLogger } from '../utils/logger'; + +const logger = createLogger('Standard'); + +/** + * StandardContext - Local Mode with Scheduler + * + * Provides backend service and scheduler for local data storage. + * No authentication is configured in this mode. + */ + +interface StandardContextValue { + backend: BackendService | null; + scheduler: Scheduler | null; + backendType: BackendType | null; + isLoading: boolean; + error: Error | null; + retry: () => void; +} + +const StandardContext = createContext(null); + +interface StandardProviderProps { + schedulerStorageKey?: string; + children: ReactNode; +} + +export function StandardProvider({ + schedulerStorageKey = '@scheduler_state', + children, +}: StandardProviderProps) { + const [backend, setBackend] = useState(null); + const [backendType, setBackendType] = useState(null); + const [isLoading, setIsLoading] = useState(true); + const [error, setError] = useState(null); + const [retryCount, setRetryCount] = useState(0); + + const scheduler = useMemo(() => new Scheduler(schedulerStorageKey), [schedulerStorageKey]); + const [schedulerLoading, setSchedulerLoading] = useState(true); + + // Initialize all services once + useEffect(() => { + let cancelled = false; + + async function initializeStandard() { + if (cancelled) return; + + try { + const config = getBackendConfig(); + const backendInstance = BackendFactory.createBackend(config); + + await Promise.all([ + backendInstance.initialize(), + scheduler.initialize(), + ]); + + if (cancelled) return; + + setBackend(backendInstance); + setBackendType(config.type); + setSchedulerLoading(false); + setIsLoading(false); + + // Load sample tasks for local backend + if (config.type === 'local') { + const existingTasks = scheduler.getTasks(); + if (existingTasks.length === 0) { + await loadSampleTasks(scheduler); + } + } + + logger.debug('Standard initialized successfully (local mode with scheduler)'); + } catch (err) { + if (cancelled) return; + + logger.error('Failed to initialize Standard', err); + setError(err instanceof Error ? err : new Error('Failed to initialize')); + setIsLoading(false); + setSchedulerLoading(false); + } + } + + initializeStandard(); + + return () => { + cancelled = true; + }; + }, [retryCount, scheduler]); + + const retry = useCallback(() => { + setRetryCount((prev) => prev + 1); + }, []); + + const standardValue = useMemo( + () => ({ backend, scheduler, backendType, isLoading, error, retry }), + [backend, scheduler, backendType, isLoading, error, retry] + ); + + const schedulerValue = useMemo( + () => ({ scheduler, isLoading: schedulerLoading }), + [scheduler, schedulerLoading] + ); + + return ( + + + {children} + + + ); +} + +async function loadSampleTasks(scheduler: Scheduler): Promise { + const predefinedTasks = createSampleTasks(); + for (const task of predefinedTasks) { + await scheduler.createOrUpdateTask(task); + } +} + +export function useStandard(): StandardContextValue { + const context = useContext(StandardContext); + if (!context) { + throw new Error('useStandard must be used within a StandardProvider'); + } + return context; +} diff --git a/homeflow/lib/services/types.ts b/homeflow/lib/services/types.ts new file mode 100644 index 0000000..67fb819 --- /dev/null +++ b/homeflow/lib/services/types.ts @@ -0,0 +1,61 @@ +/** + * Stub types for the base template + * These are replaced when specific features are added + */ + +// Scheduler types (stubs - replaced when scheduler feature is added) +type Task = { id: string; [key: string]: unknown }; +type Outcome = { id: string; completedAt: Date; [key: string]: unknown }; +type SchedulerState = { tasks: Task[]; outcomes: Outcome[] }; + +// Questionnaire types (stubs - replaced when questionnaire feature is added) +type QuestionnaireResponse = { id?: string; [key: string]: unknown }; + +/** + * Common backend interface for data persistence + * Authentication is handled separately by AccountService + */ +export interface BackendService { + // Initialization + initialize(): Promise; + + // User ID management (for remote backends that need to know the current user) + setUserId(userId: string | null): void; + + // Scheduler data operations + loadSchedulerState(): Promise; + saveSchedulerState(state: SchedulerState): Promise; + + // Task CRUD operations (optional - for real-time sync) + createTask(task: Task): Promise; + updateTask(task: Task): Promise; + deleteTask(taskId: string): Promise; + getTasks(): Promise; + + // Outcome operations + createOutcome(outcome: Outcome): Promise; + getOutcomes(): Promise; + + // Questionnaire responses + saveQuestionnaireResponse(response: QuestionnaireResponse): Promise; + getQuestionnaireResponses(taskId?: string): Promise; + + // Sync operations (for offline support) + syncToRemote(): Promise; + syncFromRemote(): Promise; +} + +export type BackendType = 'local' | 'firebase'; + +export interface BackendConfig { + type: BackendType; + // Firebase config (used when firebase feature is added) + firebase?: { + apiKey: string; + authDomain: string; + projectId: string; + storageBucket: string; + messagingSenderId: string; + appId: string; + }; +} diff --git a/homeflow/lib/utils/logger.ts b/homeflow/lib/utils/logger.ts new file mode 100644 index 0000000..15339ab --- /dev/null +++ b/homeflow/lib/utils/logger.ts @@ -0,0 +1,83 @@ +/** + * Logging utility that respects __DEV__ flag + * Prevents verbose logs in production builds + */ + +/** + * Check if running in development mode + * In React Native, __DEV__ is a global boolean + */ +const isDevelopment = (): boolean => { + return typeof __DEV__ !== 'undefined' && __DEV__; +}; + +/** + * Log levels + */ +export enum LogLevel { + DEBUG = 'DEBUG', + INFO = 'INFO', + WARN = 'WARN', + ERROR = 'ERROR', +} + +/** + * Logger class with development-only verbose logging + */ +class Logger { + constructor(private prefix: string) {} + + /** + * Log debug message (development only) + */ + debug(...args: unknown[]): void { + if (isDevelopment()) { + console.log(`[${this.prefix}]`, ...args); + } + } + + /** + * Log info message (development only) + */ + info(...args: unknown[]): void { + if (isDevelopment()) { + console.log(`[${this.prefix}]`, ...args); + } + } + + /** + * Log warning (always logged) + */ + warn(...args: unknown[]): void { + console.warn(`[${this.prefix}]`, ...args); + } + + /** + * Log error (always logged, but sanitized in production) + */ + error(message: string, error?: unknown): void { + if (isDevelopment()) { + console.error(`[${this.prefix}]`, message, error); + } else { + // In production, only log the message without details + console.error(`[${this.prefix}]`, message); + } + } +} + +/** + * Create a logger instance for a module + * + * @param moduleName - Name of the module (e.g., 'StandardContext', 'SchedulerInit') + * @returns Logger instance + * + * @example + * ```typescript + * const logger = createLogger('MyModule'); + * logger.info('Initialized'); // Only logs in dev + * logger.error('Failed', error); // Logs in prod (sanitized) + * ``` + */ +export function createLogger(moduleName: string): Logger { + return new Logger(moduleName); +} diff --git a/homeflow/metro.config.js b/homeflow/metro.config.js new file mode 100644 index 0000000..11c3b56 --- /dev/null +++ b/homeflow/metro.config.js @@ -0,0 +1,59 @@ +const { getDefaultConfig } = require('expo/metro-config'); +const path = require('path'); +const fs = require('fs'); + +// Find the project and workspace root +const projectRoot = __dirname; +const workspaceRoot = path.resolve(projectRoot, '.'); + +const config = getDefaultConfig(projectRoot); + +// Watch all files within the monorepo +config.watchFolders = [workspaceRoot]; + +// Configure resolver for monorepo - resolve to source files directly +config.resolver.nodeModulesPaths = [ + path.resolve(projectRoot, 'node_modules'), +]; + +// Store the original resolver +const defaultResolver = config.resolver.resolveRequest; + +// Resolve workspace packages to their source files instead of dist +config.resolver.resolveRequest = (context, moduleName, platform) => { + // Check if it's a workspace package + if (moduleName && moduleName.startsWith('@spezivibe/')) { + const packageName = moduleName.split('/')[1]; + const packagePath = path.join(workspaceRoot, 'packages', packageName); + + // Check if the package exists + if (fs.existsSync(packagePath)) { + // Resolve to the source index file + const sourceIndex = path.join(packagePath, 'src', 'index.ts'); + if (fs.existsSync(sourceIndex)) { + return { + filePath: sourceIndex, + type: 'sourceFile', + }; + } + // Fallback to tsx if ts doesn't exist + const sourceIndexTsx = path.join(packagePath, 'src', 'index.tsx'); + if (fs.existsSync(sourceIndexTsx)) { + return { + filePath: sourceIndexTsx, + type: 'sourceFile', + }; + } + } + } + + // Use default resolver for everything else + if (defaultResolver) { + return defaultResolver(context, moduleName, platform); + } + + // Last resort fallback + return context.resolveRequest(context, moduleName, platform); +}; + +module.exports = config; diff --git a/homeflow/package-lock.json b/homeflow/package-lock.json new file mode 100644 index 0000000..c268235 --- /dev/null +++ b/homeflow/package-lock.json @@ -0,0 +1,16474 @@ +{ + "name": "my-app", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "my-app", + "version": "1.0.0", + "workspaces": [ + "packages/*" + ], + "dependencies": { + "@ai-sdk/anthropic": "^3.0.1", + "@ai-sdk/google": "^3.0.1", + "@ai-sdk/openai": "^3.0.1", + "@blazejkustra/react-native-alert": "^1.0.0", + "@expo/vector-icons": "^15.0.3", + "@kingstinct/react-native-healthkit": "^9.0.0", + "@react-native-async-storage/async-storage": "^2.2.0", + "@react-navigation/bottom-tabs": "^7.9.0", + "@react-navigation/elements": "^2.9.3", + "@react-navigation/native": "^7.1.26", + "@spezivibe/chat": "*", + "@spezivibe/healthkit": "*", + "@spezivibe/questionnaire": "*", + "@spezivibe/scheduler": "*", + "ai": "^6.0.3", + "expo": "~54.0.30", + "expo-constants": "~18.0.12", + "expo-font": "~14.0.10", + "expo-haptics": "~15.0.8", + "expo-image": "~3.0.11", + "expo-linking": "~8.0.11", + "expo-router": "~6.0.21", + "expo-splash-screen": "~31.0.13", + "expo-status-bar": "~3.0.9", + "expo-symbols": "~1.0.8", + "expo-system-ui": "~6.0.9", + "expo-web-browser": "~15.0.10", + "formik": "^2.4.9", + "react": "19.1.0", + "react-dom": "19.1.0", + "react-native": "0.81.5", + "react-native-gesture-handler": "~2.28.0", + "react-native-nitro-modules": "^0.24.0", + "react-native-reanimated": "~4.1.6", + "react-native-safe-area-context": "~5.6.0", + "react-native-screens": "~4.16.0", + "react-native-web": "~0.21.0", + "react-native-worklets": "0.5.1", + "yup": "^1.7.1" + }, + "devDependencies": { + "@types/react": "~19.1.17", + "eslint": "^9.39.0", + "eslint-config-expo": "~10.0.0", + "typescript": "~5.9.2" + } + }, + "node_modules/@0no-co/graphql.web": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.2.0.tgz", + "integrity": "sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==", + "license": "MIT", + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + } + }, + "node_modules/@ai-sdk/anthropic": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@ai-sdk/anthropic/-/anthropic-3.0.23.tgz", + "integrity": "sha512-mu9djDW2kiJS/ihH5BwGy2c/zwSlcTjx1NWPvY/Ug12SWToqzozSyd1EIXRlfXyfwzL2CWrqMNyybqi9OVDXgg==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "3.0.5", + "@ai-sdk/provider-utils": "4.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/gateway": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.23.tgz", + "integrity": "sha512-hievGeM4cXkKvEbaHvlfVDubyp+XiTZmd0f2uvzBEMKfA98lDw0Fg/RKvNwQE6DQjRADkvVJNhSaHmlZRZeh3g==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "3.0.5", + "@ai-sdk/provider-utils": "4.0.9", + "@vercel/oidc": "3.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/google": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@ai-sdk/google/-/google-3.0.13.tgz", + "integrity": "sha512-HYCh8miS4FLxOIpjo/BmoFVMO5BuxNpHVVDQkoJotoH8ZSFftkJJGGayIxQT/Lwx9GGvVVCOQ+lCdBBAnkl1sA==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "3.0.5", + "@ai-sdk/provider-utils": "4.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/openai": { + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/@ai-sdk/openai/-/openai-3.0.19.tgz", + "integrity": "sha512-qpMGKV6eYfW8IzErk/OppchQwVui3GPc4BEfg/sQGRzR89vf2Sa8qvSavXeZi5w/oUF56d+VtobwSH0FRooFCQ==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "3.0.5", + "@ai-sdk/provider-utils": "4.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/provider": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-3.0.5.tgz", + "integrity": "sha512-2Xmoq6DBJqmSl80U6V9z5jJSJP7ehaJJQMy2iFUqTay06wdCqTnPVBBQbtEL8RCChenL+q5DC5H5WzU3vV3v8w==", + "license": "Apache-2.0", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ai-sdk/provider-utils": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.9.tgz", + "integrity": "sha512-bB4r6nfhBOpmoS9mePxjRoCy+LnzP3AfhyMGCkGL4Mn9clVNlqEeKj26zEKEtB6yoSVcT1IQ0Zh9fytwMCDnow==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "3.0.5", + "@standard-schema/spec": "^1.1.0", + "eventsource-parser": "^3.0.6" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/react": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-1.2.12.tgz", + "integrity": "sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider-utils": "2.2.8", + "@ai-sdk/ui-utils": "1.2.11", + "swr": "^2.2.5", + "throttleit": "2.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/@ai-sdk/react/node_modules/@ai-sdk/provider": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz", + "integrity": "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ai-sdk/react/node_modules/@ai-sdk/provider-utils": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz", + "integrity": "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "nanoid": "^3.3.8", + "secure-json-parse": "^2.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.23.8" + } + }, + "node_modules/@ai-sdk/ui-utils": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@ai-sdk/ui-utils/-/ui-utils-1.2.11.tgz", + "integrity": "sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "@ai-sdk/provider-utils": "2.2.8", + "zod-to-json-schema": "^3.24.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.23.8" + } + }, + "node_modules/@ai-sdk/ui-utils/node_modules/@ai-sdk/provider": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz", + "integrity": "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ai-sdk/ui-utils/node_modules/@ai-sdk/provider-utils": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz", + "integrity": "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "nanoid": "^3.3.8", + "secure-json-parse": "^2.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.23.8" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz", + "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", + "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.6.tgz", + "integrity": "sha512-RVdFPPyY9fCRAX68haPmOk2iyKW8PKJFthmm8NeSI3paNxKWGZIn99+VbIf0FrtCpFnPgnpF/L48tadi617ULg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-decorators": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.27.1.tgz", + "integrity": "sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz", + "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.28.6.tgz", + "integrity": "sha512-Svlx1fjJFnNz0LZeUaybRukSxZI3KkpApUmIRzEdXC5k8ErTOz0OD0kNrICi5Vc3GlpP5ZCeRyRO+mfWTSz+iQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz", + "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz", + "integrity": "sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz", + "integrity": "sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", + "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-flow": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz", + "integrity": "sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz", + "integrity": "sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.6.tgz", + "integrity": "sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.6", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.28.6", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.28.5", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.6", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.27.1.tgz", + "integrity": "sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-flow-strip-types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse--for-generate-function-map": { + "name": "@babel/traverse", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@blazejkustra/react-native-alert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@blazejkustra/react-native-alert/-/react-native-alert-1.0.0.tgz", + "integrity": "sha512-bgvKlnhfS39vz38BSBdHk1smVME0Nf5tJEzgoQOIPpci8KuTBcOORa93B2PV3/S5a0QkR1d8nW2yw76HDj6zqQ==", + "license": "MIT", + "workspaces": [ + "example" + ], + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "license": "MIT", + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@expo/code-signing-certificates": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", + "integrity": "sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==", + "license": "MIT", + "dependencies": { + "node-forge": "^1.3.3" + } + }, + "node_modules/@expo/config": { + "version": "12.0.13", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-12.0.13.tgz", + "integrity": "sha512-Cu52arBa4vSaupIWsF0h7F/Cg//N374nYb7HAxV0I4KceKA7x2UXpYaHOL7EEYYvp7tZdThBjvGpVmr8ScIvaQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~54.0.4", + "@expo/config-types": "^54.0.10", + "@expo/json-file": "^10.0.8", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "~3.35.1" + } + }, + "node_modules/@expo/config-plugins": { + "version": "54.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.4.tgz", + "integrity": "sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^54.0.10", + "@expo/json-file": "~10.0.8", + "@expo/plist": "^0.4.8", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/config-plugins/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config-plugins/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/config-plugins/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config-plugins/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/config-types": { + "version": "54.0.10", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-54.0.10.tgz", + "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==", + "license": "MIT" + }, + "node_modules/@expo/config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/config/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/config/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/devcert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.1.tgz", + "integrity": "sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==", + "license": "MIT", + "dependencies": { + "@expo/sudo-prompt": "^9.3.1", + "debug": "^3.1.0" + } + }, + "node_modules/@expo/devcert/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@expo/devtools": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-0.1.8.tgz", + "integrity": "sha512-SVLxbuanDjJPgc0sy3EfXUMLb/tXzp6XIHkhtPVmTWJAp+FOr6+5SeiCfJrCzZFet0Ifyke2vX3sFcKwEvCXwQ==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@expo/env": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.8.tgz", + "integrity": "sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^2.0.0" + } + }, + "node_modules/@expo/fingerprint": { + "version": "0.15.4", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.15.4.tgz", + "integrity": "sha512-eYlxcrGdR2/j2M6pEDXo9zU9KXXF1vhP+V+Tl+lyY+bU8lnzrN6c637mz6Ye3em2ANy8hhUR03Raf8VsT9Ogng==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "arg": "^5.0.2", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "minimatch": "^9.0.0", + "p-limit": "^3.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" + }, + "bin": { + "fingerprint": "bin/cli.js" + } + }, + "node_modules/@expo/fingerprint/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@expo/fingerprint/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/glob/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/fingerprint/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/image-utils": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.8.tgz", + "integrity": "sha512-HHHaG4J4nKjTtVa1GG9PCh763xlETScfEyNxxOvfTRr8IKPJckjTyqSLEtdJoFNJ1vqiABEjW7tqGhqGibZLeA==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "getenv": "^2.0.0", + "jimp-compact": "0.16.1", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0", + "semver": "^7.6.0", + "temp-dir": "~2.0.0", + "unique-string": "~2.0.0" + } + }, + "node_modules/@expo/image-utils/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/json-file": { + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.8.tgz", + "integrity": "sha512-9LOTh1PgKizD1VXfGQ88LtDH0lRwq9lsTb4aichWTWSWqy3Ugfkhfm3BhzBIkJJfQQ5iJu3m/BoRlEIjoCGcnQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.3" + } + }, + "node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/metro": { + "version": "54.2.0", + "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-54.2.0.tgz", + "integrity": "sha512-h68TNZPGsk6swMmLm9nRSnE2UXm48rWwgcbtAHVMikXvbxdS41NDHHeqg1rcQ9AbznDRp6SQVC2MVpDnsRKU1w==", + "license": "MIT", + "dependencies": { + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-config": "0.83.3", + "metro-core": "0.83.3", + "metro-file-map": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-resolver": "0.83.3", + "metro-runtime": "0.83.3", + "metro-source-map": "0.83.3", + "metro-symbolicate": "0.83.3", + "metro-transform-plugins": "0.83.3", + "metro-transform-worker": "0.83.3" + } + }, + "node_modules/@expo/metro-config": { + "version": "54.0.14", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-54.0.14.tgz", + "integrity": "sha512-hxpLyDfOR4L23tJ9W1IbJJsG7k4lv2sotohBm/kTYyiG+pe1SYCAWsRmgk+H42o/wWf/HQjE5k45S5TomGLxNA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.5", + "@expo/config": "~12.0.13", + "@expo/env": "~2.0.8", + "@expo/json-file": "~10.0.8", + "@expo/metro": "~54.2.0", + "@expo/spawn-async": "^1.7.2", + "browserslist": "^4.25.0", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "hermes-parser": "^0.29.1", + "jsc-safe-url": "^0.2.4", + "lightningcss": "^1.30.1", + "minimatch": "^9.0.0", + "postcss": "~8.4.32", + "resolve-from": "^5.0.0" + }, + "peerDependencies": { + "expo": "*" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + } + } + }, + "node_modules/@expo/metro-config/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@expo/metro-config/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-config/node_modules/glob/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-config/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/metro-config/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-config/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-runtime": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-6.1.2.tgz", + "integrity": "sha512-nvM+Qv45QH7pmYvP8JB1G8JpScrWND3KrMA6ZKe62cwwNiX/BjHU28Ear0v/4bQWXlOY0mv6B8CDIm8JxXde9g==", + "license": "MIT", + "dependencies": { + "anser": "^1.4.9", + "pretty-format": "^29.7.0", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-dom": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/@expo/osascript": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.3.8.tgz", + "integrity": "sha512-/TuOZvSG7Nn0I8c+FcEaoHeBO07yu6vwDgk7rZVvAXoeAK5rkA09jRyjYsZo+0tMEFaToBeywA6pj50Mb3ny9w==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "exec-async": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/package-manager": { + "version": "1.9.10", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.9.10.tgz", + "integrity": "sha512-axJm+NOj3jVxep49va/+L3KkF3YW/dkV+RwzqUJedZrv4LeTqOG4rhrCaCPXHTvLqCTDKu6j0Xyd28N7mnxsGA==", + "license": "MIT", + "dependencies": { + "@expo/json-file": "^10.0.8", + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "resolve-workspace-root": "^2.0.0" + } + }, + "node_modules/@expo/plist": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.4.8.tgz", + "integrity": "sha512-pfNtErGGzzRwHP+5+RqswzPDKkZrx+Cli0mzjQaus1ZWFsog5ibL+nVT3NcporW51o8ggnt7x813vtRbPiyOrQ==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.2.3", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/@expo/prebuild-config": { + "version": "54.0.8", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-54.0.8.tgz", + "integrity": "sha512-EA7N4dloty2t5Rde+HP0IEE+nkAQiu4A/+QGZGT9mFnZ5KKjPPkqSyYcRvP5bhQE10D+tvz6X0ngZpulbMdbsg==", + "license": "MIT", + "dependencies": { + "@expo/config": "~12.0.13", + "@expo/config-plugins": "~54.0.4", + "@expo/config-types": "^54.0.10", + "@expo/image-utils": "^0.8.8", + "@expo/json-file": "^10.0.8", + "@react-native/normalize-colors": "0.81.5", + "debug": "^4.3.1", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "xml2js": "0.6.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/@expo/prebuild-config/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/schema-utils": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-0.1.8.tgz", + "integrity": "sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==", + "license": "MIT" + }, + "node_modules/@expo/sdk-runtime-versions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", + "license": "MIT" + }, + "node_modules/@expo/spawn-async": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz", + "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/sudo-prompt": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@expo/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==", + "license": "MIT" + }, + "node_modules/@expo/vector-icons": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-15.0.3.tgz", + "integrity": "sha512-SBUyYKphmlfUBqxSfDdJ3jAdEVSALS2VUPOUyqn48oZmb2TL/O7t7/PQm5v4NQujYEPLPMTLn9KVw6H7twwbTA==", + "license": "MIT", + "peerDependencies": { + "expo-font": ">=14.0.4", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@expo/ws-tunnel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@expo/ws-tunnel/-/ws-tunnel-1.0.6.tgz", + "integrity": "sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==", + "license": "MIT" + }, + "node_modules/@expo/xcpretty": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.2.tgz", + "integrity": "sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/code-frame": "7.10.4", + "chalk": "^4.1.0", + "find-up": "^5.0.0", + "js-yaml": "^4.1.0" + }, + "bin": { + "excpretty": "build/cli.js" + } + }, + "node_modules/@expo/xcpretty/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/xcpretty/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/@expo/xcpretty/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/xcpretty/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@expo/xcpretty/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/xcpretty/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "devOptional": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "devOptional": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kingstinct/react-native-healthkit": { + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/@kingstinct/react-native-healthkit/-/react-native-healthkit-9.0.11.tgz", + "integrity": "sha512-9FQMIzX59r9aotDZVLjm+M8I3N/9wScKTfrgC8z+pn77v5SY0w4KFDXQO9YHYOzQJxDOV0yC4n4XTieb+vVmRA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kingstinct" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-nitro-modules": "*" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@react-native-async-storage/async-storage": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz", + "integrity": "sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==", + "license": "MIT", + "dependencies": { + "merge-options": "^3.0.4" + }, + "peerDependencies": { + "react-native": "^0.0.0-0 || >=0.65 <1.0" + } + }, + "node_modules/@react-native/assets-registry": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.81.5.tgz", + "integrity": "sha512-705B6x/5Kxm1RKRvSv0ADYWm5JOnoiQ1ufW7h8uu2E6G9Of/eE6hP/Ivw3U5jI16ERqZxiKQwk34VJbB0niX9w==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.5.tgz", + "integrity": "sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@react-native/codegen": "0.81.5" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.81.5.tgz", + "integrity": "sha512-UoI/x/5tCmi+pZ3c1+Ypr1DaRMDLI3y+Q70pVLLVgrnC3DHsHRIbHcCHIeG/IJvoeFqFM2sTdhSOLJrf8lOPrA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/template": "^7.25.0", + "@react-native/babel-plugin-codegen": "0.81.5", + "babel-plugin-syntax-hermes-parser": "0.29.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.5.tgz", + "integrity": "sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", + "glob": "^7.1.1", + "hermes-parser": "0.29.1", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.81.5.tgz", + "integrity": "sha512-yWRlmEOtcyvSZ4+OvqPabt+NS36vg0K/WADTQLhrYrm9qdZSuXmq8PmdJWz/68wAqKQ+4KTILiq2kjRQwnyhQw==", + "license": "MIT", + "dependencies": { + "@react-native/dev-middleware": "0.81.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "metro": "^0.83.1", + "metro-config": "^0.83.1", + "metro-core": "^0.83.1", + "semver": "^7.1.3" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@react-native-community/cli": "*", + "@react-native/metro-config": "*" + }, + "peerDependenciesMeta": { + "@react-native-community/cli": { + "optional": true + }, + "@react-native/metro-config": { + "optional": true + } + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.5.tgz", + "integrity": "sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.5.tgz", + "integrity": "sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==", + "license": "MIT", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.81.5", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^6.2.3" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.81.5.tgz", + "integrity": "sha512-hORRlNBj+ReNMLo9jme3yQ6JQf4GZpVEBLxmTXGGlIL78MAezDZr5/uq9dwElSbcGmLEgeiax6e174Fie6qPLg==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.81.5.tgz", + "integrity": "sha512-fB7M1CMOCIUudTRuj7kzxIBTVw2KXnsgbQ6+4cbqSxo8NmRRhA0Ul4ZUzZj3rFd3VznTL4Brmocv1oiN0bWZ8w==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.82.1", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.82.1.tgz", + "integrity": "sha512-kVQyYxYe1Da7cr7uGK9c44O6vTzM8YY3KW9CSLhhV1CGw7jmohU1HfLaUxDEmYfFZMc4Kj3JsIEbdUlaHMtprQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@react-native/babel-preset": "0.82.1", + "hermes-parser": "0.32.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.82.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.82.1.tgz", + "integrity": "sha512-wzmEz/RlR4SekqmaqeQjdMVh4LsnL9e62mrOikOOkHDQ3QN0nrKLuUDzXyYptVbxQ0IRua4pTm3efJLymDBoEg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@react-native/codegen": "0.82.1" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-preset": { + "version": "0.82.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.82.1.tgz", + "integrity": "sha512-Olj7p4XIsUWLKjlW46CqijaXt45PZT9Lbvv/Hz698FXTenPKk4k7sy6RGRGZPWO2TCBBfcb73dus1iNHRFSq7g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/template": "^7.25.0", + "@react-native/babel-plugin-codegen": "0.82.1", + "babel-plugin-syntax-hermes-parser": "0.32.0", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/codegen": { + "version": "0.82.1", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.82.1.tgz", + "integrity": "sha512-ezXTN70ygVm9l2m0i+pAlct0RntoV4afftWMGUIeAWLgaca9qItQ54uOt32I/9dBJvzBibT33luIR/pBG0dQvg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", + "glob": "^7.1.1", + "hermes-parser": "0.32.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "hermes-parser": "0.32.0" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", + "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.32.0" + } + }, + "node_modules/@react-native/metro-config": { + "version": "0.82.1", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.82.1.tgz", + "integrity": "sha512-mAY6R3xnDMlmDOrUCAtLTjIkli26DZt4LNVuAjDEdnlv5sHANOr5x4qpMn7ea1p9Q/tpfHLalPQUQeJ8CZH4gA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@react-native/js-polyfills": "0.82.1", + "@react-native/metro-babel-transformer": "0.82.1", + "metro-config": "^0.83.1", + "metro-runtime": "^0.83.1" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/metro-config/node_modules/@react-native/js-polyfills": { + "version": "0.82.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.82.1.tgz", + "integrity": "sha512-tf70X7pUodslOBdLN37J57JmDPB/yiZcNDzS2m+4bbQzo8fhx3eG9QEBv5n4fmzqfGAgSB4BWRHgDMXmmlDSVA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.5.tgz", + "integrity": "sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==", + "license": "MIT" + }, + "node_modules/@react-navigation/bottom-tabs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.10.1.tgz", + "integrity": "sha512-MirOzKEe/rRwPSE9HMrS4niIo0LyUhewlvd01TpzQ1ipuXjH2wJbzAM9gS/r62zriB6HMHz2OY6oIRduwQJtTw==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" + } + }, + "node_modules/@react-navigation/core": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.14.0.tgz", + "integrity": "sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==", + "license": "MIT", + "dependencies": { + "@react-navigation/routers": "^7.5.3", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "query-string": "^7.1.3", + "react-is": "^19.1.0", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "react": ">= 18.2.0" + } + }, + "node_modules/@react-navigation/elements": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", + "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", + "license": "MIT", + "dependencies": { + "color": "^4.2.3", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@react-native-masked-view/masked-view": ">= 0.2.0", + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0" + }, + "peerDependenciesMeta": { + "@react-native-masked-view/masked-view": { + "optional": true + } + } + }, + "node_modules/@react-navigation/native": { + "version": "7.1.28", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", + "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", + "license": "MIT", + "dependencies": { + "@react-navigation/core": "^7.14.0", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "use-latest-callback": "^0.2.4" + }, + "peerDependencies": { + "react": ">= 18.2.0", + "react-native": "*" + } + }, + "node_modules/@react-navigation/native-stack": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.11.0.tgz", + "integrity": "sha512-yNx9Wr4dfpOHpqjf2sGog4eH6KCYwTAEPlUPrKbvWlQbCRm5bglwPmaTXw9hTovX9v3HIa42yo7bXpbYfq4jzg==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0", + "warn-once": "^0.1.1" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" + } + }, + "node_modules/@react-navigation/routers": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", + "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@spezivibe/chat": { + "resolved": "packages/chat", + "link": true + }, + "node_modules/@spezivibe/healthkit": { + "resolved": "packages/healthkit", + "link": true + }, + "node_modules/@spezivibe/questionnaire": { + "resolved": "packages/questionnaire", + "link": true + }, + "node_modules/@spezivibe/scheduler": { + "resolved": "packages/scheduler", + "link": true + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@testing-library/react-native": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@testing-library/react-native/-/react-native-12.9.0.tgz", + "integrity": "sha512-wIn/lB1FjV2N4Q7i9PWVRck3Ehwq5pkhAef5X5/bmQ78J/NoOsGbVY2/DG5Y9Lxw+RfE+GvSEh/fe5Tz6sKSvw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "jest-matcher-utils": "^29.7.0", + "pretty-format": "^29.7.0", + "redent": "^3.0.0" + }, + "peerDependencies": { + "jest": ">=28.0.0", + "react": ">=16.8.0", + "react-native": ">=0.59", + "react-test-renderer": ">=16.8.0" + }, + "peerDependenciesMeta": { + "jest": { + "optional": true + } + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/diff-match-patch": { + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz", + "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/fhir": { + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/@types/fhir/-/fhir-0.0.41.tgz", + "integrity": "sha512-MAQAFufNZBZ6V0F94Nhknmmh/E3iMXFK4n/L8RkSNjKtOJnvaAJERivNOj35VVx9VCQBJbE0BHSzikfBahoRhA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", + "license": "MIT" + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.7.tgz", + "integrity": "sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==", + "license": "MIT", + "dependencies": { + "hoist-non-react-statics": "^3.3.0" + }, + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz", + "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.1.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.17.tgz", + "integrity": "sha512-Qec1E3mhALmaspIrhWt9jkQMNdw6bReVu64mjvhbhq2NFPftLPVr+l1SZgmw/66WwBNpDh7ao5AT6gF5v41PFA==", + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-native": { + "version": "0.73.0", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.73.0.tgz", + "integrity": "sha512-6ZRPQrYM72qYKGWidEttRe6M5DZBEV5F+MHMHqd4TTYx0tfkcdrUFGdef6CCxY0jXU7wldvd/zA/b0A/kTeJmA==", + "deprecated": "This is a stub types definition. react-native provides its own type definitions, so you do not need this installed.", + "dev": true, + "license": "MIT", + "dependencies": { + "react-native": "*" + } + }, + "node_modules/@types/react-test-renderer": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.3.1.tgz", + "integrity": "sha512-vAhnk0tG2eGa37lkU9+s5SoroCsRI08xnsWFiAXOuPH2jqzMbcXvKExXViPi1P5fIklDeCvXqyrdmipFaSkZrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "^18" + } + }, + "node_modules/@types/react-test-renderer/node_modules/@types/react": { + "version": "18.3.27", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.27.tgz", + "integrity": "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz", + "integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/type-utils": "8.54.0", + "@typescript-eslint/utils": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.54.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz", + "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz", + "integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.54.0", + "@typescript-eslint/types": "^8.54.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz", + "integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz", + "integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz", + "integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0", + "@typescript-eslint/utils": "8.54.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", + "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz", + "integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.54.0", + "@typescript-eslint/tsconfig-utils": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz", + "integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz", + "integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.54.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@urql/core": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@urql/core/-/core-5.2.0.tgz", + "integrity": "sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.13", + "wonka": "^6.3.2" + } + }, + "node_modules/@urql/exchange-retry": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-1.3.2.tgz", + "integrity": "sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==", + "license": "MIT", + "dependencies": { + "@urql/core": "^5.1.2", + "wonka": "^6.3.2" + }, + "peerDependencies": { + "@urql/core": "^5.0.0" + } + }, + "node_modules/@vercel/oidc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.1.0.tgz", + "integrity": "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w==", + "license": "Apache-2.0", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ai": { + "version": "6.0.50", + "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.50.tgz", + "integrity": "sha512-JlwqjkRTa6GR2CF+JksCuh1+jeZATJvvja53cj880bJsEgkMpS+rqjwr1E397WeRjkmoicbGGD8QxIDaFbsWHg==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/gateway": "3.0.23", + "@ai-sdk/provider": "3.0.5", + "@ai-sdk/provider-utils": "4.0.9", + "@opentelemetry/api": "1.9.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", + "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.6", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", + "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.6" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-react-compiler": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + } + }, + "node_modules/babel-plugin-react-native-web": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", + "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", + "license": "MIT" + }, + "node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", + "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", + "license": "MIT", + "dependencies": { + "hermes-parser": "0.29.1" + } + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-expo": { + "version": "54.0.10", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-54.0.10.tgz", + "integrity": "sha512-wTt7POavLFypLcPW/uC5v8y+mtQKDJiyGLzYCjqr9tx0Qc3vCXcDKk1iCFIj/++Iy5CWhhTflEa7VvVPNWeCfw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.81.5", + "babel-plugin-react-compiler": "^1.0.0", + "babel-plugin-react-native-web": "~0.21.0", + "babel-plugin-syntax-hermes-parser": "^0.29.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "debug": "^4.3.4", + "resolve-from": "^5.0.0" + }, + "peerDependencies": { + "@babel/runtime": "^7.20.0", + "expo": "*", + "react-refresh": ">=0.14.0 <1.0.0" + }, + "peerDependenciesMeta": { + "@babel/runtime": { + "optional": true + }, + "expo": { + "optional": true + } + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz", + "integrity": "sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "license": "MIT", + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/better-opn/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "license": "MIT", + "dependencies": { + "stream-buffers": "2.2.x" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001766", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", + "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "license": "MIT", + "dependencies": { + "hyphenate-style-name": "^1.0.3" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.279", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.279.tgz", + "integrity": "sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg==", + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", + "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.1", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-expo": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-expo/-/eslint-config-expo-10.0.0.tgz", + "integrity": "sha512-/XC/DvniUWTzU7Ypb/cLDhDD4DXqEio4lug1ObD/oQ9Hcx3OVOR8Mkp4u6U4iGoZSJyIQmIk3WVHe/P1NYUXKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-expo": "^1.0.0", + "eslint-plugin-import": "^2.30.0", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-hooks": "^5.1.0", + "globals": "^16.0.0" + }, + "peerDependencies": { + "eslint": ">=8.10" + } + }, + "node_modules/eslint-config-expo/node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-expo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-expo/-/eslint-plugin-expo-1.0.0.tgz", + "integrity": "sha512-qLtunR+cNFtC+jwYCBia5c/PJurMjSLMOV78KrEOyQK02ohZapU4dCFFnS2hfrJuw0zxfsjVkjqg3QBqi933QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "^8.29.1", + "@typescript-eslint/utils": "^8.29.1", + "eslint": "^9.24.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.10" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/exec-async": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", + "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==", + "license": "MIT" + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "devOptional": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expo": { + "version": "54.0.32", + "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.32.tgz", + "integrity": "sha512-yL9eTxiQ/QKKggVDAWO5CLjUl6IS0lPYgEvC3QM4q4fxd6rs7ks3DnbXSGVU3KNFoY/7cRNYihvd0LKYP+MCXA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/cli": "54.0.22", + "@expo/config": "~12.0.13", + "@expo/config-plugins": "~54.0.4", + "@expo/devtools": "0.1.8", + "@expo/fingerprint": "0.15.4", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "54.0.14", + "@expo/vector-icons": "^15.0.3", + "@ungap/structured-clone": "^1.3.0", + "babel-preset-expo": "~54.0.10", + "expo-asset": "~12.0.12", + "expo-constants": "~18.0.13", + "expo-file-system": "~19.0.21", + "expo-font": "~14.0.11", + "expo-keep-awake": "~15.0.8", + "expo-modules-autolinking": "3.0.24", + "expo-modules-core": "3.0.29", + "pretty-format": "^29.7.0", + "react-refresh": "^0.14.2", + "whatwg-url-without-unicode": "8.0.0-3" + }, + "bin": { + "expo": "bin/cli", + "expo-modules-autolinking": "bin/autolinking", + "fingerprint": "bin/fingerprint" + }, + "peerDependencies": { + "@expo/dom-webview": "*", + "@expo/metro-runtime": "*", + "react": "*", + "react-native": "*", + "react-native-webview": "*" + }, + "peerDependenciesMeta": { + "@expo/dom-webview": { + "optional": true + }, + "@expo/metro-runtime": { + "optional": true + }, + "react-native-webview": { + "optional": true + } + } + }, + "node_modules/expo-asset": { + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.12.tgz", + "integrity": "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==", + "license": "MIT", + "dependencies": { + "@expo/image-utils": "^0.8.8", + "expo-constants": "~18.0.12" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-constants": { + "version": "18.0.13", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.13.tgz", + "integrity": "sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ==", + "license": "MIT", + "dependencies": { + "@expo/config": "~12.0.13", + "@expo/env": "~2.0.8" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-file-system": { + "version": "19.0.21", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", + "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-font": { + "version": "14.0.11", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", + "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", + "license": "MIT", + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-haptics": { + "version": "15.0.8", + "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-15.0.8.tgz", + "integrity": "sha512-lftutojy8Qs8zaDzzjwM3gKHFZ8bOOEZDCkmh2Ddpe95Ra6kt2izeOfOfKuP/QEh0MZ1j9TfqippyHdRd1ZM9g==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-image": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-3.0.11.tgz", + "integrity": "sha512-4TudfUCLgYgENv+f48omnU8tjS2S0Pd9EaON5/s1ZUBRwZ7K8acEr4NfvLPSaeXvxW24iLAiyQ7sV7BXQH3RoA==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } + } + }, + "node_modules/expo-keep-awake": { + "version": "15.0.8", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.8.tgz", + "integrity": "sha512-YK9M1VrnoH1vLJiQzChZgzDvVimVoriibiDIFLbQMpjYBnvyfUeHJcin/Gx1a+XgupNXy92EQJLgI/9ZuXajYQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*" + } + }, + "node_modules/expo-linking": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.11.tgz", + "integrity": "sha512-+VSaNL5om3kOp/SSKO5qe6cFgfSIWnnQDSbA7XLs3ECkYzXRquk5unxNS3pg7eK5kNUmQ4kgLI7MhTggAEUBLA==", + "license": "MIT", + "dependencies": { + "expo-constants": "~18.0.12", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-modules-autolinking": { + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.24.tgz", + "integrity": "sha512-TP+6HTwhL7orDvsz2VzauyQlXJcAWyU3ANsZ7JGL4DQu8XaZv/A41ZchbtAYLfozNA2Ya1Hzmhx65hXryBMjaQ==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo-modules-core": { + "version": "3.0.29", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.29.tgz", + "integrity": "sha512-LzipcjGqk8gvkrOUf7O2mejNWugPkf3lmd9GkqL9WuNyeN2fRwU0Dn77e3ZUKI3k6sI+DNwjkq4Nu9fNN9WS7Q==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-router": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-6.0.22.tgz", + "integrity": "sha512-6eOwobaVZQRsSQv0IoWwVlPbJru1zbreVsuPFIWwk7HApENStU2MggrceHXJqXjGho+FKeXxUop/gqOFDzpOMg==", + "license": "MIT", + "dependencies": { + "@expo/metro-runtime": "^6.1.2", + "@expo/schema-utils": "^0.1.8", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-tabs": "^1.1.12", + "@react-navigation/bottom-tabs": "^7.4.0", + "@react-navigation/native": "^7.1.8", + "@react-navigation/native-stack": "^7.3.16", + "client-only": "^0.0.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "expo-server": "^1.0.5", + "fast-deep-equal": "^3.1.3", + "invariant": "^2.2.4", + "nanoid": "^3.3.8", + "query-string": "^7.1.3", + "react-fast-compare": "^3.2.2", + "react-native-is-edge-to-edge": "^1.1.6", + "semver": "~7.6.3", + "server-only": "^0.0.1", + "sf-symbols-typescript": "^2.1.0", + "shallowequal": "^1.1.0", + "use-latest-callback": "^0.2.1", + "vaul": "^1.1.2" + }, + "peerDependencies": { + "@expo/metro-runtime": "^6.1.2", + "@react-navigation/drawer": "^7.5.0", + "@testing-library/react-native": ">= 12.0.0", + "expo": "*", + "expo-constants": "^18.0.13", + "expo-linking": "^8.0.11", + "react": "*", + "react-dom": "*", + "react-native": "*", + "react-native-gesture-handler": "*", + "react-native-reanimated": "*", + "react-native-safe-area-context": ">= 5.4.0", + "react-native-screens": "*", + "react-native-web": "*", + "react-server-dom-webpack": "~19.0.3 || ~19.1.4 || ~19.2.3" + }, + "peerDependenciesMeta": { + "@react-navigation/drawer": { + "optional": true + }, + "@testing-library/react-native": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native-gesture-handler": { + "optional": true + }, + "react-native-reanimated": { + "optional": true + }, + "react-native-web": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } + } + }, + "node_modules/expo-router/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/expo-router/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/expo-router/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/expo-router/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/expo-router/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/expo-router/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/expo-router/node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/expo-router/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-server": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-1.0.5.tgz", + "integrity": "sha512-IGR++flYH70rhLyeXF0Phle56/k4cee87WeQ4mamS+MkVAVP+dDlOHf2nN06Z9Y2KhU0Gp1k+y61KkghF7HdhA==", + "license": "MIT", + "engines": { + "node": ">=20.16.0" + } + }, + "node_modules/expo-splash-screen": { + "version": "31.0.13", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-31.0.13.tgz", + "integrity": "sha512-1epJLC1cDlwwj089R2h8cxaU5uk4ONVAC+vzGiTZH4YARQhL4Stlz1MbR6yAS173GMosvkE6CAeihR7oIbCkDA==", + "license": "MIT", + "dependencies": { + "@expo/prebuild-config": "^54.0.8" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-status-bar": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-3.0.9.tgz", + "integrity": "sha512-xyYyVg6V1/SSOZWh4Ni3U129XHCnFHBTcUo0dhWtFDrZbNp/duw5AGsQfb2sVeU0gxWHXSY1+5F0jnKYC7WuOw==", + "license": "MIT", + "dependencies": { + "react-native-is-edge-to-edge": "^1.2.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-symbols": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-1.0.8.tgz", + "integrity": "sha512-7bNjK350PaQgxBf0owpmSYkdZIpdYYmaPttDBb2WIp6rIKtcEtdzdfmhsc2fTmjBURHYkg36+eCxBFXO25/1hw==", + "license": "MIT", + "dependencies": { + "sf-symbols-typescript": "^2.0.0" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-system-ui": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-6.0.9.tgz", + "integrity": "sha512-eQTYGzw1V4RYiYHL9xDLYID3Wsec2aZS+ypEssmF64D38aDrqbDgz1a2MSlHLQp2jHXSs3FvojhZ9FVela1Zcg==", + "license": "MIT", + "dependencies": { + "@react-native/normalize-colors": "0.81.5", + "debug": "^4.3.2" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } + } + }, + "node_modules/expo-web-browser": { + "version": "15.0.10", + "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-15.0.10.tgz", + "integrity": "sha512-fvDhW4bhmXAeWFNFiInmsGCK83PAqAcQaFyp/3pE/jbdKmFKoRCWr46uZGIfN4msLK/OODhaQ/+US7GSJNDHJg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo/node_modules/@expo/cli": { + "version": "54.0.22", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.22.tgz", + "integrity": "sha512-BTH2FCczhJLfj1cpfcKrzhKnvRLTOztgW4bVloKDqH+G3ZSohWLRFNAIz56XtdjPxBbi2/qWhGBAkl7kBon/Jw==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.8", + "@expo/code-signing-certificates": "^0.0.6", + "@expo/config": "~12.0.13", + "@expo/config-plugins": "~54.0.4", + "@expo/devcert": "^1.2.1", + "@expo/env": "~2.0.8", + "@expo/image-utils": "^0.8.8", + "@expo/json-file": "^10.0.8", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "~54.0.14", + "@expo/osascript": "^2.3.8", + "@expo/package-manager": "^1.9.10", + "@expo/plist": "^0.4.8", + "@expo/prebuild-config": "^54.0.8", + "@expo/schema-utils": "^0.1.8", + "@expo/spawn-async": "^1.7.2", + "@expo/ws-tunnel": "^1.0.1", + "@expo/xcpretty": "^4.3.0", + "@react-native/dev-middleware": "0.81.5", + "@urql/core": "^5.0.6", + "@urql/exchange-retry": "^1.3.0", + "accepts": "^1.3.8", + "arg": "^5.0.2", + "better-opn": "~3.0.2", + "bplist-creator": "0.1.0", + "bplist-parser": "^0.3.1", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "compression": "^1.7.4", + "connect": "^3.7.0", + "debug": "^4.3.4", + "env-editor": "^0.4.1", + "expo-server": "^1.0.5", + "freeport-async": "^2.0.0", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "lan-network": "^0.1.6", + "minimatch": "^9.0.0", + "node-forge": "^1.3.3", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "picomatch": "^3.0.1", + "pretty-bytes": "^5.6.0", + "pretty-format": "^29.7.0", + "progress": "^2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "require-from-string": "^2.0.2", + "requireg": "^0.2.2", + "resolve": "^1.22.2", + "resolve-from": "^5.0.0", + "resolve.exports": "^2.0.3", + "semver": "^7.6.0", + "send": "^0.19.0", + "slugify": "^1.3.4", + "source-map-support": "~0.5.21", + "stacktrace-parser": "^0.1.10", + "structured-headers": "^0.4.1", + "tar": "^7.5.2", + "terminal-link": "^2.1.1", + "undici": "^6.18.2", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1" + }, + "bin": { + "expo-internal": "build/bin/cli" + }, + "peerDependencies": { + "expo": "*", + "expo-router": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "expo-router": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/expo/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo/node_modules/glob/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/expo/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo/node_modules/picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/expo/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/expo/node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "license": "MIT", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "license": "MIT" + }, + "node_modules/fbjs/node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "license": "MIT" + }, + "node_modules/fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", + "license": "BSD-2-Clause" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/formik": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.9.tgz", + "integrity": "sha512-5nI94BMnlFDdQRBY4Sz39WkhxajZJ57Fzs8wVbtsQlm5ScKIR1QLYqv/ultBnobObtlUyxpxoLodpixrsf36Og==", + "funding": [ + { + "type": "individual", + "url": "https://opencollective.com/formik" + } + ], + "license": "Apache-2.0", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.1", + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "react-fast-compare": "^2.0.1", + "tiny-warning": "^1.0.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/formik/node_modules/deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/formik/node_modules/react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", + "license": "MIT" + }, + "node_modules/freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/getenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", + "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.29.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/inline-style-prefixer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", + "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", + "license": "MIT", + "dependencies": { + "css-in-js-utils": "^3.1.0" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "devOptional": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "devOptional": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "devOptional": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jalali-plugin-dayjs": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/jalali-plugin-dayjs/-/jalali-plugin-dayjs-1.1.4.tgz", + "integrity": "sha512-d62QGMTufGQ1TSov4a85gBU58PA8aL6wVQs9BnC3+d/VA+v4Sq0OqM3o6RoY+/VZjliYJroGIPwlSVf7uLnZ3w==", + "license": "MIT" + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "devOptional": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jimp-compact": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", + "license": "0BSD" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsondiffpatch": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz", + "integrity": "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/diff-match-patch": "^1.0.36", + "chalk": "^5.3.0", + "diff-match-patch": "^1.0.5" + }, + "bin": { + "jsondiffpatch": "bin/jsondiffpatch.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/jsondiffpatch/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lan-network": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/lan-network/-/lan-network-0.1.7.tgz", + "integrity": "sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==", + "license": "MIT", + "bin": { + "lan-network": "dist/lan-network-cli.js" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.31.1", + "lightningcss-darwin-arm64": "1.31.1", + "lightningcss-darwin-x64": "1.31.1", + "lightningcss-freebsd-x64": "1.31.1", + "lightningcss-linux-arm-gnueabihf": "1.31.1", + "lightningcss-linux-arm64-gnu": "1.31.1", + "lightningcss-linux-arm64-musl": "1.31.1", + "lightningcss-linux-x64-gnu": "1.31.1", + "lightningcss-linux-x64-musl": "1.31.1", + "lightningcss-win32-arm64-msvc": "1.31.1", + "lightningcss-win32-x64-msvc": "1.31.1" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "devOptional": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/marky": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", + "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", + "license": "Apache-2.0" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "license": "MIT" + }, + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "license": "MIT", + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/metro": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", + "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "@babel/types": "^7.25.2", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.32.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-config": "0.83.3", + "metro-core": "0.83.3", + "metro-file-map": "0.83.3", + "metro-resolver": "0.83.3", + "metro-runtime": "0.83.3", + "metro-source-map": "0.83.3", + "metro-symbolicate": "0.83.3", + "metro-transform-plugins": "0.83.3", + "metro-transform-worker": "0.83.3", + "mime-types": "^2.1.27", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", + "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.32.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", + "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", + "license": "MIT" + }, + "node_modules/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.32.0" + } + }, + "node_modules/metro-cache": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", + "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", + "license": "MIT", + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "https-proxy-agent": "^7.0.5", + "metro-core": "0.83.3" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-cache-key": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", + "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-core": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", + "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.83.3" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-file-map": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", + "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-minify-terser": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", + "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-resolver": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", + "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-runtime": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-source-map": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", + "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.83.3", + "nullthrows": "^1.1.1", + "ob1": "0.83.3", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", + "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.83.3", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-symbolicate/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", + "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", + "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-source-map": "0.83.3", + "metro-transform-plugins": "0.83.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, + "node_modules/metro/node_modules/hermes-estree": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", + "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", + "license": "MIT" + }, + "node_modules/metro/node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.32.0" + } + }, + "node_modules/metro/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nested-error-stacks": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", + "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "license": "MIT" + }, + "node_modules/ob1": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", + "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/ora/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ora/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", + "license": "MIT", + "dependencies": { + "pngjs": "^3.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/property-expr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qrcode-terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "license": "MIT", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-devtools-core": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.5.tgz", + "integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==", + "license": "MIT", + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-freeze": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.4.tgz", + "integrity": "sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=17.0.0" + } + }, + "node_modules/react-is": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", + "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", + "license": "MIT" + }, + "node_modules/react-native": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.5.tgz", + "integrity": "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==", + "license": "MIT", + "dependencies": { + "@jest/create-cache-key-function": "^29.7.0", + "@react-native/assets-registry": "0.81.5", + "@react-native/codegen": "0.81.5", + "@react-native/community-cli-plugin": "0.81.5", + "@react-native/gradle-plugin": "0.81.5", + "@react-native/js-polyfills": "0.81.5", + "@react-native/normalize-colors": "0.81.5", + "@react-native/virtualized-lists": "0.81.5", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "babel-jest": "^29.7.0", + "babel-plugin-syntax-hermes-parser": "0.29.1", + "base64-js": "^1.5.1", + "commander": "^12.0.0", + "flow-enums-runtime": "^0.0.6", + "glob": "^7.1.1", + "invariant": "^2.2.4", + "jest-environment-node": "^29.7.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.83.1", + "metro-source-map": "^0.83.1", + "nullthrows": "^1.1.1", + "pretty-format": "^29.7.0", + "promise": "^8.3.0", + "react-devtools-core": "^6.1.5", + "react-refresh": "^0.14.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.26.0", + "semver": "^7.1.3", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.3", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@types/react": "^19.1.0", + "react": "^19.1.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-native-gesture-handler": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.28.0.tgz", + "integrity": "sha512-0msfJ1vRxXKVgTgvL+1ZOoYw3/0z1R+Ked0+udoJhyplC2jbVKIJ8Z1bzWdpQRCV3QcQ87Op0zJVE5DhKK2A0A==", + "license": "MIT", + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-is-edge-to-edge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.2.1.tgz", + "integrity": "sha512-FLbPWl/MyYQWz+KwqOZsSyj2JmLKglHatd3xLZWskXOpRaio4LfEDEz8E/A6uD8QoTHW6Aobw1jbEwK7KMgR7Q==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-nitro-modules": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.24.1.tgz", + "integrity": "sha512-wA04fykLsIObAd/2h0mfl3CGZ7Iqtj9CjnHD9j+yAnMCcYDWYlCV8MICmicWgN6eg4yjrEUDsrfFAYWgCFiCBw==", + "hasInstallScript": true, + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-reanimated": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.1.6.tgz", + "integrity": "sha512-F+ZJBYiok/6Jzp1re75F/9aLzkgoQCOh4yxrnwATa8392RvM3kx+fiXXFvwcgE59v48lMwd9q0nzF1oJLXpfxQ==", + "license": "MIT", + "dependencies": { + "react-native-is-edge-to-edge": "^1.2.1", + "semver": "7.7.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "react": "*", + "react-native": "*", + "react-native-worklets": ">=0.5.0" + } + }, + "node_modules/react-native-reanimated/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-safe-area-context": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", + "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-screens": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.16.0.tgz", + "integrity": "sha512-yIAyh7F/9uWkOzCi1/2FqvNvK6Wb9Y1+Kzn16SuGfN9YFJDTbwlzGRvePCNTOX0recpLQF3kc2FmvMUhyTCH1Q==", + "license": "MIT", + "dependencies": { + "react-freeze": "^1.0.0", + "react-native-is-edge-to-edge": "^1.2.1", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-ui-datepicker": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/react-native-ui-datepicker/-/react-native-ui-datepicker-3.1.2.tgz", + "integrity": "sha512-1yukCKMLUuVb5daYOgb4mLZqpynZ6GMQyNF2NPwpiDB5F2D/NGpeOmoYb7qFwDrTNwr+m4IemNUa0TlYIFktlg==", + "license": "MIT", + "dependencies": { + "clsx": "^2.1.1", + "dayjs": "^1.11.13", + "jalali-plugin-dayjs": "^1.1.4", + "lodash": "^4.17.21", + "tailwind-merge": "^3.0.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-web": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.21.2.tgz", + "integrity": "sha512-SO2t9/17zM4iEnFvlu2DA9jqNbzNhoUP+AItkoCOyFmDMOhUnBBznBDCYN92fGdfAkfQlWzPoez6+zLxFNsZEg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.6", + "@react-native/normalize-colors": "^0.74.1", + "fbjs": "^3.0.4", + "inline-style-prefixer": "^7.0.1", + "memoize-one": "^6.0.0", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "styleq": "^0.1.3" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-native-web/node_modules/@react-native/normalize-colors": { + "version": "0.74.89", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.89.tgz", + "integrity": "sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==", + "license": "MIT" + }, + "node_modules/react-native-web/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, + "node_modules/react-native-worklets": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.5.1.tgz", + "integrity": "sha512-lJG6Uk9YuojjEX/tQrCbcbmpdLCSFxDK1rJlkDhgqkVi1KZzG7cdcBFQRqyNOOzR9Y0CXNuldmtWTGOyM0k0+w==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-arrow-functions": "^7.0.0-0", + "@babel/plugin-transform-class-properties": "^7.0.0-0", + "@babel/plugin-transform-classes": "^7.0.0-0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0", + "@babel/plugin-transform-optional-chaining": "^7.0.0-0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", + "@babel/plugin-transform-template-literals": "^7.0.0-0", + "@babel/plugin-transform-unicode-regex": "^7.0.0-0", + "@babel/preset-typescript": "^7.16.7", + "convert-source-map": "^2.0.0", + "semver": "7.7.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-worklets/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native/node_modules/@react-native/virtualized-lists": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.81.5.tgz", + "integrity": "sha512-UVXgV/db25OPIvwZySeToXD/9sKKhOdkcWmmf4Jh8iBZuyfML+/5CasaZ1E7Lqg6g3uqVQq75NqIwkYmORJMPw==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@types/react": "^19.1.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-native/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/react-native/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-test-renderer": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.1.0.tgz", + "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "react-is": "^19.1.0", + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requireg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", + "dependencies": { + "nested-error-stacks": "~2.0.1", + "rc": "~1.2.7", + "resolve": "~1.7.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/requireg/node_modules/resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "license": "MIT", + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "license": "MIT", + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve-workspace-root": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.1.tgz", + "integrity": "sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==", + "license": "MIT" + }, + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "license": "MIT", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sax": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/server-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", + "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==", + "license": "MIT" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sf-symbols-typescript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", + "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "license": "MIT", + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "license": "MIT" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/stacktrace-parser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", + "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "license": "Unlicense", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/structured-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", + "license": "MIT" + }, + "node_modules/styleq": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz", + "integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==", + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swr": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.8.tgz", + "integrity": "sha512-gaCPRVoMq8WGDcWj9p4YWzCMPHzE0WNl6W8ADIx9c3JBEIdMkJGMzW+uzXvxHMltwcYACr9jP+32H8/hgwMR7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/tailwind-merge": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz", + "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tar": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.6.tgz", + "integrity": "sha512-xqUeu2JAIJpXyvskvU3uvQW8PAmHrtXp2KDuMJwQqW8Sqq0CaZBAQ+dKS3RBXVhU4wC5NjAdKrmh84241gO9cA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "license": "MIT" + }, + "node_modules/throttleit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", + "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", + "license": "MIT" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "license": "MIT" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-api-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", + "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest-callback": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.6.tgz", + "integrity": "sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vaul": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz", + "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/vaul/node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/vaul/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/vaul/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/vaul/node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/vaul/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/vaul/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/vaul/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "license": "MIT" + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warn-once": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", + "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==", + "license": "MIT" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/whatwg-url-without-unicode": { + "version": "8.0.0-3", + "resolved": "https://registry.npmjs.org/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz", + "integrity": "sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==", + "license": "MIT", + "dependencies": { + "buffer": "^5.4.3", + "punycode": "^2.1.1", + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/whatwg-url-without-unicode/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wonka": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.5.tgz", + "integrity": "sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==", + "license": "MIT" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "license": "Apache-2.0", + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yup": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.7.1.tgz", + "integrity": "sha512-GKHFX2nXul2/4Dtfxhozv701jLQHdf6J34YDh2cEkpqoo8le5Mg6/LrdseVLrFarmFygZTlfIhHx/QKfb/QWXw==", + "license": "MIT", + "dependencies": { + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + } + }, + "node_modules/yup/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", + "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", + "dev": true, + "license": "ISC", + "peerDependencies": { + "zod": "^3.25 || ^4" + } + }, + "packages/chat": { + "name": "@spezivibe/chat", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "@ai-sdk/anthropic": "^1.0.0", + "@ai-sdk/google": "^1.0.0", + "@ai-sdk/openai": "^1.0.0", + "@babel/preset-env": "^7.28.5", + "@babel/preset-react": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@expo/vector-icons": "^15.0.3", + "@react-native/babel-preset": "^0.81.5", + "@testing-library/react-native": "^12.9.0", + "@types/jest": "^29.5.14", + "@types/react": "~19.1.17", + "@types/react-test-renderer": "^18.0.7", + "ai": "^4.0.0", + "babel-jest": "^29.7.0", + "expo": "~54.0.30", + "jest": "^29.7.0", + "react": "^19.1.0", + "react-native": "^0.81.5", + "react-test-renderer": "19.1.0", + "typescript": "~5.9.2" + }, + "peerDependencies": { + "@ai-sdk/anthropic": ">=1.0.0", + "@ai-sdk/google": ">=1.0.0", + "@ai-sdk/openai": ">=1.0.0", + "@expo/vector-icons": ">=14.0.0", + "ai": ">=4.0.0", + "expo": ">=52.0.0", + "react": ">=18.0.0", + "react-native": ">=0.70.0" + }, + "peerDependenciesMeta": { + "@ai-sdk/anthropic": { + "optional": true + }, + "@ai-sdk/google": { + "optional": true + }, + "@ai-sdk/openai": { + "optional": true + } + } + }, + "packages/chat/node_modules/@ai-sdk/anthropic": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@ai-sdk/anthropic/-/anthropic-1.2.12.tgz", + "integrity": "sha512-YSzjlko7JvuiyQFmI9RN1tNZdEiZxc+6xld/0tq/VkJaHpEzGAb1yiNxxvmYVcjvfu/PcvCxAAYXmTYQQ63IHQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "@ai-sdk/provider-utils": "2.2.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.0.0" + } + }, + "packages/chat/node_modules/@ai-sdk/google": { + "version": "1.2.22", + "resolved": "https://registry.npmjs.org/@ai-sdk/google/-/google-1.2.22.tgz", + "integrity": "sha512-Ppxu3DIieF1G9pyQ5O1Z646GYR0gkC57YdBqXJ82qvCdhEhZHu0TWhmnOoeIWe2olSbuDeoOY+MfJrW8dzS3Hw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "@ai-sdk/provider-utils": "2.2.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.0.0" + } + }, + "packages/chat/node_modules/@ai-sdk/openai": { + "version": "1.3.24", + "resolved": "https://registry.npmjs.org/@ai-sdk/openai/-/openai-1.3.24.tgz", + "integrity": "sha512-GYXnGJTHRTZc4gJMSmFRgEQudjqd4PUN0ZjQhPwOAYH1yOAvQoG/Ikqs+HyISRbLPCrhbZnPKCNHuRU4OfpW0Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "@ai-sdk/provider-utils": "2.2.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.0.0" + } + }, + "packages/chat/node_modules/@ai-sdk/provider": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz", + "integrity": "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "packages/chat/node_modules/@ai-sdk/provider-utils": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz", + "integrity": "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "nanoid": "^3.3.8", + "secure-json-parse": "^2.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.23.8" + } + }, + "packages/chat/node_modules/ai": { + "version": "4.3.19", + "resolved": "https://registry.npmjs.org/ai/-/ai-4.3.19.tgz", + "integrity": "sha512-dIE2bfNpqHN3r6IINp9znguYdhIOheKW2LDigAMrgt/upT3B8eBGPSCblENvaZGoq+hxaN9fSMzjWpbqloP+7Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "@ai-sdk/provider-utils": "2.2.8", + "@ai-sdk/react": "1.2.12", + "@ai-sdk/ui-utils": "1.2.11", + "@opentelemetry/api": "1.9.0", + "jsondiffpatch": "0.6.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } + } + }, + "packages/healthkit": { + "name": "@spezivibe/healthkit", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "@babel/preset-env": "^7.28.5", + "@babel/preset-react": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@kingstinct/react-native-healthkit": "^9.0.0", + "@react-native/babel-preset": "^0.81.5", + "@testing-library/react-native": "^12.9.0", + "@types/jest": "^29.5.14", + "@types/react": "~19.1.17", + "@types/react-test-renderer": "^18.0.7", + "babel-jest": "^29.7.0", + "expo": "~54.0.30", + "expo-constants": "~17.1.8", + "jest": "^29.7.0", + "react": "^19.1.0", + "react-native": "^0.81.5", + "react-test-renderer": "19.1.0", + "typescript": "~5.9.2" + }, + "peerDependencies": { + "@kingstinct/react-native-healthkit": ">=9.0.0", + "expo": ">=52.0.0", + "expo-constants": ">=17.0.0", + "react": ">=18.0.0", + "react-native": ">=0.70.0" + }, + "peerDependenciesMeta": { + "@kingstinct/react-native-healthkit": { + "optional": false + } + } + }, + "packages/healthkit/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "packages/healthkit/node_modules/@expo/config": { + "version": "11.0.13", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-11.0.13.tgz", + "integrity": "sha512-TnGb4u/zUZetpav9sx/3fWK71oCPaOjZHoVED9NaEncktAd0Eonhq5NUghiJmkUGt3gGSjRAEBXiBbbY9/B1LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~10.1.2", + "@expo/config-types": "^53.0.5", + "@expo/json-file": "^9.1.5", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^10.4.2", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "3.35.0" + } + }, + "packages/healthkit/node_modules/@expo/config-plugins": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-10.1.2.tgz", + "integrity": "sha512-IMYCxBOcnuFStuK0Ay+FzEIBKrwW8OVUMc65+v0+i7YFIIe8aL342l7T4F8lR4oCfhXn7d6M5QPgXvjtc/gAcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@expo/config-types": "^53.0.5", + "@expo/json-file": "~9.1.5", + "@expo/plist": "^0.3.5", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^10.4.2", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "packages/healthkit/node_modules/@expo/config-types": { + "version": "53.0.5", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-53.0.5.tgz", + "integrity": "sha512-kqZ0w44E+HEGBjy+Lpyn0BVL5UANg/tmNixxaRMLS6nf37YsDrLk2VMAmeKMMk5CKG0NmOdVv3ngeUjRQMsy9g==", + "dev": true, + "license": "MIT" + }, + "packages/healthkit/node_modules/@expo/env": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-1.0.7.tgz", + "integrity": "sha512-qSTEnwvuYJ3umapO9XJtrb1fAqiPlmUUg78N0IZXXGwQRt+bkp0OBls+Y5Mxw/Owj8waAM0Z3huKKskRADR5ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^2.0.0" + } + }, + "packages/healthkit/node_modules/@expo/json-file": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.1.5.tgz", + "integrity": "sha512-prWBhLUlmcQtvN6Y7BpW2k9zXGd3ySa3R6rAguMJkp1z22nunLN64KYTUWfijFlprFoxm9r2VNnGkcbndAlgKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.3" + } + }, + "packages/healthkit/node_modules/@expo/plist": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.3.5.tgz", + "integrity": "sha512-9RYVU1iGyCJ7vWfg3e7c/NVyMFs8wbl+dMWZphtFtsqyN9zppGREU3ctlD3i8KUE0sCUTVnLjCWr+VeUIDep2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.2.3", + "xmlbuilder": "^15.1.1" + } + }, + "packages/healthkit/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "packages/healthkit/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "packages/healthkit/node_modules/expo-constants": { + "version": "17.1.8", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.1.8.tgz", + "integrity": "sha512-sOCeMN/BWLA7hBP6lMwoEQzFNgTopk6YY03sBAmwT216IHyL54TjNseg8CRU1IQQ/+qinJ2fYWCl7blx2TiNcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@expo/config": "~11.0.13", + "@expo/env": "~1.0.7" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "packages/healthkit/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/healthkit/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/healthkit/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "packages/healthkit/node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "packages/questionnaire": { + "name": "@spezivibe/questionnaire", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@blazejkustra/react-native-alert": "^1.0.0", + "@types/fhir": "^0.0.41", + "formik": "^2.4.9", + "react-native-ui-datepicker": "^3.1.2", + "yup": "^1.7.1" + }, + "devDependencies": { + "@babel/preset-env": "^7.28.5", + "@babel/preset-flow": "^7.27.1", + "@babel/preset-react": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@react-native/babel-preset": "^0.81.5", + "@react-native/metro-config": "^0.82.1", + "@testing-library/react-native": "^12.9.0", + "@types/fhir": "^0.0.41", + "@types/jest": "^29.5.14", + "@types/react": "~19.1.17", + "@types/react-native": "^0.73.0", + "@types/react-test-renderer": "^18.0.7", + "babel-jest": "^29.7.0", + "formik": "^2.4.9", + "jest": "^29.7.0", + "react": "^19.1.0", + "react-native": "^0.81.5", + "react-test-renderer": "19.1.0", + "typescript": "~5.9.2", + "yup": "^1.7.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-native": ">=0.70.0" + } + }, + "packages/scheduler": { + "name": "@spezivibe/scheduler", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@blazejkustra/react-native-alert": "^1.0.0" + }, + "devDependencies": { + "@babel/preset-env": "^7.28.5", + "@babel/preset-flow": "^7.27.1", + "@babel/preset-react": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@react-native-async-storage/async-storage": "^2.2.0", + "@react-native/babel-preset": "^0.81.5", + "@react-native/metro-config": "^0.82.1", + "@testing-library/react-native": "^12.9.0", + "@types/jest": "^29.5.14", + "@types/react": "~19.1.17", + "@types/react-native": "^0.73.0", + "@types/react-test-renderer": "^18.0.7", + "babel-jest": "^29.7.0", + "jest": "^29.7.0", + "react": "^19.1.0", + "react-native": "^0.81.5", + "react-test-renderer": "19.1.0", + "typescript": "~5.9.2" + }, + "peerDependencies": { + "@react-native-async-storage/async-storage": ">=1.0.0", + "react": ">=18.0.0", + "react-native": ">=0.70.0" + } + } + } +} diff --git a/homeflow/package.json b/homeflow/package.json new file mode 100644 index 0000000..9e19998 --- /dev/null +++ b/homeflow/package.json @@ -0,0 +1,66 @@ +{ + "name": "my-app", + "main": "expo-router/entry", + "version": "1.0.0", + "scripts": { + "start": "expo start", + "android": "expo start --android", + "ios": "expo start --ios", + "web": "expo start --web", + "lint": "expo lint", + "typecheck": "tsc --noEmit", + "build": "npm run build --workspaces --if-present", + "test": "npm run test --workspaces --if-present" + }, + "dependencies": { + "@ai-sdk/anthropic": "^3.0.1", + "@ai-sdk/google": "^3.0.1", + "@ai-sdk/openai": "^3.0.1", + "@blazejkustra/react-native-alert": "^1.0.0", + "@expo/vector-icons": "^15.0.3", + "@kingstinct/react-native-healthkit": "^9.0.0", + "@react-native-async-storage/async-storage": "^2.2.0", + "@react-navigation/bottom-tabs": "^7.9.0", + "@react-navigation/elements": "^2.9.3", + "@react-navigation/native": "^7.1.26", + "@spezivibe/chat": "*", + "@spezivibe/healthkit": "*", + "@spezivibe/questionnaire": "*", + "@spezivibe/scheduler": "*", + "ai": "^6.0.3", + "expo": "~54.0.30", + "expo-constants": "~18.0.12", + "expo-font": "~14.0.10", + "expo-haptics": "~15.0.8", + "expo-image": "~3.0.11", + "expo-linking": "~8.0.11", + "expo-router": "~6.0.21", + "expo-splash-screen": "~31.0.13", + "expo-status-bar": "~3.0.9", + "expo-symbols": "~1.0.8", + "expo-system-ui": "~6.0.9", + "expo-web-browser": "~15.0.10", + "formik": "^2.4.9", + "react": "19.1.0", + "react-dom": "19.1.0", + "react-native": "0.81.5", + "react-native-gesture-handler": "~2.28.0", + "react-native-nitro-modules": "^0.24.0", + "react-native-reanimated": "~4.1.6", + "react-native-safe-area-context": "~5.6.0", + "react-native-screens": "~4.16.0", + "react-native-web": "~0.21.0", + "react-native-worklets": "0.5.1", + "yup": "^1.7.1" + }, + "devDependencies": { + "@types/react": "~19.1.17", + "eslint": "^9.39.0", + "eslint-config-expo": "~10.0.0", + "typescript": "~5.9.2" + }, + "private": true, + "workspaces": [ + "packages/*" + ] +} diff --git a/homeflow/packages/chat/README.md b/homeflow/packages/chat/README.md new file mode 100644 index 0000000..f6b0c39 --- /dev/null +++ b/homeflow/packages/chat/README.md @@ -0,0 +1,550 @@ +# @spezivibe/chat + +A React Native chat component library with multi-provider LLM support using the Vercel AI SDK. Supports **OpenAI**, **Anthropic (Claude)**, and **Google (Gemini)**. Built with full TypeScript support and customizable theming. + +## Table of Contents + +- [Features](#features) +- [Installation](#installation) +- [Quick Start](#quick-start) +- [Providers](#providers) +- [Components](#components) +- [Theming](#theming) +- [API Reference](#api-reference) +- [Platform Support](#platform-support) +- [Examples](#examples) +- [Security Considerations](#security-considerations) + +## Features + +- **Multi-Provider Support** - OpenAI, Anthropic (Claude), and Google (Gemini) +- **AI SDK Integration** - Built on Vercel AI SDK for reliable LLM communication +- **Streaming Support** - Real-time streaming responses on all platforms +- **Themeable** - Fully customizable theme system with light/dark defaults +- **Cross-Platform** - iOS, Android, and Web support via Expo +- **TypeScript** - Full TypeScript support with exported types +- **Accessible** - Built-in accessibility labels and hints + +## Installation + +```bash +# Core package +npm install @spezivibe/chat ai + +# Install provider(s) you need +npm install @ai-sdk/openai # For OpenAI (GPT-4, etc.) +npm install @ai-sdk/anthropic # For Anthropic (Claude) +npm install @ai-sdk/google # For Google (Gemini) +``` + +### Peer Dependencies + +```json +{ + "react": ">=18.0.0", + "react-native": ">=0.70.0", + "expo": ">=52.0.0", + "@expo/vector-icons": ">=14.0.0", + "ai": ">=4.0.0" +} +``` + +## Quick Start + +### 1. Set Up Environment Variable + +Add your API key to your `.env` file: + +```bash +# Choose one or more: +EXPO_PUBLIC_OPENAI_API_KEY=sk-your-key-here +EXPO_PUBLIC_ANTHROPIC_API_KEY=sk-ant-your-key-here +EXPO_PUBLIC_GOOGLE_API_KEY=AIza-your-key-here +``` + +> **Warning:** See [Security Considerations](#security-considerations) below for production deployments. + +### 2. Create a Chat Screen + +```tsx +import React from 'react'; +import { useColorScheme } from 'react-native'; +import { SafeAreaView } from 'react-native-safe-area-context'; +import { + ChatView, + defaultLightChatTheme, + defaultDarkChatTheme +} from '@spezivibe/chat'; + +export default function ChatScreen() { + const colorScheme = useColorScheme(); + const theme = colorScheme === 'dark' + ? defaultDarkChatTheme + : defaultLightChatTheme; + + return ( + + + + ); +} +``` + +## Providers + +### OpenAI + +```tsx + +``` + +### Anthropic (Claude) + +```tsx + +``` + +### Google (Gemini) + +```tsx + +``` + +### Default Models + +| Provider | Default Model | +|----------|---------------| +| OpenAI | `gpt-4o-mini` | +| Anthropic | `claude-sonnet-4-20250514` | +| Google | `gemini-2.0-flash` | + +## Components + +### ChatView + +The main chat interface component that combines message list and input. + +```tsx +import { ChatView } from '@spezivibe/chat'; + +} // Optional, rendered above messages + emptyState={} // Optional, shown when no messages + containerStyle={{ flex: 1 }} // Optional +/> +``` + +### MessageBubble + +Individual message bubble component for custom layouts. + +```tsx +import { MessageBubble, ChatMessage, ChatTheme } from '@spezivibe/chat'; + +const message: ChatMessage = { + id: '1', + role: 'user', + content: 'Hello!', +}; + + +``` + +### MessageInput + +Text input with send/stop button. + +```tsx +import { MessageInput } from '@spezivibe/chat'; + + +``` + +## Theming + +### Using Default Themes + +```tsx +import { + defaultLightChatTheme, + defaultDarkChatTheme +} from '@spezivibe/chat'; +import { useColorScheme } from 'react-native'; + +function ChatScreen() { + const colorScheme = useColorScheme(); + const theme = colorScheme === 'dark' + ? defaultDarkChatTheme + : defaultLightChatTheme; + + return ( + + ); +} +``` + +### Custom Theme + +```tsx +import { mergeChatTheme, defaultLightChatTheme } from '@spezivibe/chat'; + +const customTheme = mergeChatTheme( + { + colors: { + userBubble: '#007AFF', + userBubbleText: '#FFFFFF', + assistantBubble: '#E5E5EA', + }, + borderRadius: { + bubble: 20, + }, + }, + defaultLightChatTheme +); + + +``` + +### Complete Theme Structure + +```typescript +interface ChatTheme { + colors: { + background: string; + userBubble: string; + userBubbleText: string; + assistantBubble: string; + assistantBubbleText: string; + inputBackground: string; + inputBorder: string; + inputText: string; + placeholderText: string; + sendButton: string; + sendButtonDisabled: string; + error: string; + timestamp: string; + }; + spacing: { + xs: number; // 4 + sm: number; // 8 + md: number; // 12 + lg: number; // 16 + xl: number; // 24 + }; + borderRadius: { + sm: number; // 4 + md: number; // 8 + lg: number; // 16 + bubble: number; // 18 + }; + fontSize: { + sm: number; // 12 + md: number; // 16 + lg: number; // 18 + }; +} +``` + +## API Reference + +### ChatViewProps + +```typescript +interface ChatViewProps { + /** LLM provider configuration (required) */ + provider: ChatProvider; + + /** Custom theme */ + theme?: PartialChatTheme; + + /** Placeholder text for input */ + placeholder?: string; + + /** Header component rendered above messages */ + header?: ReactNode; + + /** Empty state component shown when no messages */ + emptyState?: ReactNode; + + /** System prompt sent to LLM */ + systemPrompt?: string; + + /** Custom container style */ + containerStyle?: ViewStyle; +} +``` + +### ChatProvider + +```typescript +type ChatProvider = + | { type: 'openai'; apiKey: string; model?: string } + | { type: 'anthropic'; apiKey: string; model?: string } + | { type: 'google'; apiKey: string; model?: string }; +``` + +### ChatMessage + +```typescript +interface ChatMessage { + id: string; + role: 'system' | 'user' | 'assistant'; + content: string; +} +``` + +### Exported Functions + +```typescript +// Theme utilities +function mergeChatTheme( + userTheme?: PartialChatTheme, + baseTheme?: ChatTheme +): ChatTheme; + +// LLM service (for custom implementations) +function streamChatCompletion( + messages: LLMMessage[], + provider: ChatProvider, + callbacks: StreamCallbacks, + abortSignal?: AbortSignal +): Promise; + +// Default models +const DEFAULT_MODELS: Record; +``` + +## Platform Support + +| Platform | Streaming | Notes | +|----------|-----------|-------| +| Web | Yes | Full streaming support | +| iOS | Yes | Via expo/fetch polyfill | +| Android | Yes | Via expo/fetch polyfill | + +### Expo Requirements + +This package uses `expo/fetch` for streaming support on mobile platforms. Requires Expo SDK 52 or higher. + +## Examples + +### Basic Chat with OpenAI + +```tsx +import { ChatView, defaultLightChatTheme } from '@spezivibe/chat'; + +export default function BasicChat() { + return ( + + ); +} +``` + +### Chat with Claude + +```tsx +import { ChatView, defaultLightChatTheme } from '@spezivibe/chat'; + +export default function ClaudeChat() { + return ( + + ); +} +``` + +### Chat with Gemini + +```tsx +import { ChatView, defaultLightChatTheme } from '@spezivibe/chat'; + +export default function GeminiChat() { + return ( + + ); +} +``` + +### With Custom Empty State + +```tsx +import { ChatView, defaultLightChatTheme } from '@spezivibe/chat'; +import { View, Text } from 'react-native'; + +export default function ChatWithEmptyState() { + return ( + + + AI Assistant + + + Start a conversation + + + } + /> + ); +} +``` + +### With Header + +```tsx +import { ChatView } from '@spezivibe/chat'; +import { View, Text } from 'react-native'; + +function ChatWithHeader() { + return ( + + + AI Assistant + + + } + /> + ); +} +``` + +## Why No Message Persistence? + +Following the **Spezi architecture pattern**, this module focuses on UI and real-time chat functionality. Message persistence is the responsibility of the consuming application. This provides: + +1. **Flexibility** - Use any storage solution (AsyncStorage, SQLite, cloud, etc.) +2. **Simplicity** - Fewer dependencies and simpler module +3. **Control** - You decide what to persist and when + +## Security Considerations + +### Client-Side API Keys + +When using `EXPO_PUBLIC_*` environment variables in React Native/Expo apps, **API keys are embedded in the JavaScript bundle and visible to end users**. This is a security risk because: + +1. **Bundle Inspection** - Users can extract the bundle and find your keys +2. **Network Inspection** - API keys are sent in plain text with each request +3. **Key Abuse** - Malicious users can use your keys for unauthorized requests + +### Production Recommendations + +For production deployments, implement a **backend proxy** that: + +1. Keeps API keys on your server (never exposed to clients) +2. Authenticates users before allowing LLM requests +3. Applies rate limiting to prevent abuse +4. Logs usage for monitoring and billing + +**Example Architecture:** + +``` +Mobile App → Your Backend (with auth) → LLM Provider + ↑ + API key stored here +``` + +### Backend Proxy Options + +- **Firebase Cloud Functions** - If using Firebase backend +- **Vercel Edge Functions** - If hosting web version on Vercel +- **AWS Lambda / API Gateway** - For serverless deployments +- **Custom Express/Fastify server** - For full control + +### When Client-Side Keys Are Acceptable + +- **Development and prototyping** +- **Internal/enterprise apps** with trusted users +- **Apps with strict API key restrictions** (IP allowlist, usage caps) + +## Contributing + +Contributions are welcome! Please open an issue or submit a pull request. + +## License + +MIT diff --git a/homeflow/packages/chat/babel.config.js b/homeflow/packages/chat/babel.config.js new file mode 100644 index 0000000..14cd8e2 --- /dev/null +++ b/homeflow/packages/chat/babel.config.js @@ -0,0 +1,6 @@ +module.exports = { + presets: [ + 'module:@react-native/babel-preset', + ['@babel/preset-typescript', { allowDeclareFields: true }], + ], +}; diff --git a/homeflow/packages/chat/jest.setup.js b/homeflow/packages/chat/jest.setup.js new file mode 100644 index 0000000..6f0e9cd --- /dev/null +++ b/homeflow/packages/chat/jest.setup.js @@ -0,0 +1,40 @@ +// Configure testing library defaults +import { configure } from '@testing-library/react-native'; + +configure({ + asyncUtilTimeout: 10000, +}); + +// Mock React Native +jest.mock('react-native', () => { + const RN = jest.requireActual('react-native'); + RN.Platform.OS = 'ios'; + return RN; +}); + +// Mock expo/fetch for AI SDK +jest.mock('expo/fetch', () => ({ + fetch: jest.fn(), +})); + +// Mock @expo/vector-icons +jest.mock('@expo/vector-icons', () => ({ + Ionicons: 'Ionicons', +})); + +// Mock AI SDK +jest.mock('ai', () => ({ + streamText: jest.fn(), + generateText: jest.fn(), +})); + +jest.mock('@ai-sdk/openai', () => ({ + createOpenAI: jest.fn(() => jest.fn()), +})); + +// Silence console errors during tests +global.console = { + ...console, + error: jest.fn(), + warn: jest.fn(), +}; diff --git a/homeflow/packages/chat/package.json b/homeflow/packages/chat/package.json new file mode 100644 index 0000000..e8a71f3 --- /dev/null +++ b/homeflow/packages/chat/package.json @@ -0,0 +1,96 @@ +{ + "name": "@spezivibe/chat", + "version": "1.0.0", + "description": "Chat UI components for React Native with AI SDK integration", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist", + "README.md" + ], + "scripts": { + "build": "tsc", + "clean": "rm -rf dist *.tsbuildinfo", + "lint": "eslint src", + "typecheck": "tsc --noEmit", + "test": "jest", + "test:watch": "jest --watch", + "test:coverage": "jest --coverage", + "prepublishOnly": "npm run clean && npm run build && npm run test" + }, + "keywords": [ + "react-native", + "chat", + "ai", + "openai", + "anthropic", + "google", + "gemini", + "claude", + "spezi" + ], + "author": "SpeziVibe", + "license": "MIT", + "peerDependencies": { + "react": ">=18.0.0", + "react-native": ">=0.70.0", + "@expo/vector-icons": ">=14.0.0", + "ai": ">=4.0.0", + "@ai-sdk/openai": ">=1.0.0", + "@ai-sdk/anthropic": ">=1.0.0", + "@ai-sdk/google": ">=1.0.0", + "expo": ">=52.0.0" + }, + "peerDependenciesMeta": { + "@ai-sdk/openai": { + "optional": true + }, + "@ai-sdk/anthropic": { + "optional": true + }, + "@ai-sdk/google": { + "optional": true + } + }, + "devDependencies": { + "@ai-sdk/anthropic": "^1.0.0", + "@ai-sdk/google": "^1.0.0", + "@ai-sdk/openai": "^1.0.0", + "@expo/vector-icons": "^15.0.3", + "ai": "^4.0.0", + "expo": "~54.0.30", + "@babel/preset-env": "^7.28.5", + "@babel/preset-react": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@react-native/babel-preset": "^0.81.5", + "@testing-library/react-native": "^12.9.0", + "@types/jest": "^29.5.14", + "@types/react": "~19.1.17", + "@types/react-test-renderer": "^18.0.7", + "babel-jest": "^29.7.0", + "jest": "^29.7.0", + "react": "^19.1.0", + "react-native": "^0.81.5", + "react-test-renderer": "19.1.0", + "typescript": "~5.9.2" + }, + "jest": { + "preset": "react-native", + "testTimeout": 15000, + "setupFiles": [ + "./jest.setup.js" + ], + "transformIgnorePatterns": [ + "node_modules/(?!(react-native|@react-native|@expo/vector-icons|expo|@testing-library)/)" + ], + "moduleFileExtensions": [ + "ts", + "tsx", + "js", + "jsx" + ], + "testMatch": [ + "**/__tests__/**/*.test.ts?(x)" + ] + } +} diff --git a/homeflow/packages/chat/src/__tests__/MessageBubble.test.tsx b/homeflow/packages/chat/src/__tests__/MessageBubble.test.tsx new file mode 100644 index 0000000..1fcfb99 --- /dev/null +++ b/homeflow/packages/chat/src/__tests__/MessageBubble.test.tsx @@ -0,0 +1,120 @@ +import React from 'react'; +import { render } from '@testing-library/react-native'; +import { MessageBubble } from '../components/MessageBubble'; +import { testTheme, createUserMessage, createAssistantMessage } from './test-utils'; + +describe('MessageBubble', () => { + describe('user messages', () => { + it('should render user message content', () => { + const message = createUserMessage('Hello, world!'); + const { getByText } = render( + + ); + + expect(getByText('Hello, world!')).toBeTruthy(); + }); + + it('should align user messages to the right', () => { + const message = createUserMessage('Test'); + const { toJSON } = render( + + ); + + const tree = toJSON(); + // User messages should have alignItems: 'flex-end' + expect(tree).toBeTruthy(); + }); + + it('should use user bubble colors from theme', () => { + const message = createUserMessage('Test'); + const { toJSON } = render( + + ); + + expect(toJSON()).toBeTruthy(); + }); + }); + + describe('assistant messages', () => { + it('should render assistant message content', () => { + const message = createAssistantMessage('Hello! How can I help?'); + const { getByText } = render( + + ); + + expect(getByText('Hello! How can I help?')).toBeTruthy(); + }); + + it('should align assistant messages to the left', () => { + const message = createAssistantMessage('Test'); + const { toJSON } = render( + + ); + + expect(toJSON()).toBeTruthy(); + }); + + it('should show loading indicator for empty assistant message', () => { + const message = createAssistantMessage(''); + const { UNSAFE_getByType } = render( + + ); + + // Should show ActivityIndicator when streaming + const indicator = UNSAFE_getByType('ActivityIndicator' as any); + expect(indicator).toBeTruthy(); + }); + }); + + describe('custom styles', () => { + it('should apply custom bubble style', () => { + const message = createUserMessage('Test'); + const customStyle = { marginTop: 20 }; + const { toJSON } = render( + + ); + + expect(toJSON()).toBeTruthy(); + }); + + it('should apply custom text style', () => { + const message = createUserMessage('Test'); + const customStyle = { fontWeight: 'bold' as const }; + const { toJSON } = render( + + ); + + expect(toJSON()).toBeTruthy(); + }); + }); + + describe('long messages', () => { + it('should render long messages without truncation', () => { + const longContent = 'A'.repeat(500); + const message = createUserMessage(longContent); + const { getByText } = render( + + ); + + expect(getByText(longContent)).toBeTruthy(); + }); + + it('should render multiline messages', () => { + const multilineContent = 'Line 1\nLine 2\nLine 3'; + const message = createAssistantMessage(multilineContent); + const { getByText } = render( + + ); + + expect(getByText(multilineContent)).toBeTruthy(); + }); + }); +}); diff --git a/homeflow/packages/chat/src/__tests__/MessageInput.test.tsx b/homeflow/packages/chat/src/__tests__/MessageInput.test.tsx new file mode 100644 index 0000000..49657ae --- /dev/null +++ b/homeflow/packages/chat/src/__tests__/MessageInput.test.tsx @@ -0,0 +1,187 @@ +import React from 'react'; +import { render, fireEvent } from '@testing-library/react-native'; +import { MessageInput } from '../components/MessageInput'; +import { testTheme } from './test-utils'; + +describe('MessageInput', () => { + const defaultProps = { + theme: testTheme, + value: '', + onChange: jest.fn(), + onSend: jest.fn(), + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe('rendering', () => { + it('should render text input', () => { + const { getByLabelText } = render(); + + expect(getByLabelText('Message input')).toBeTruthy(); + }); + + it('should render with custom placeholder', () => { + const { getByPlaceholderText } = render( + + ); + + expect(getByPlaceholderText('Ask a question...')).toBeTruthy(); + }); + + it('should render default placeholder', () => { + const { getByPlaceholderText } = render( + + ); + + expect(getByPlaceholderText('Type a message...')).toBeTruthy(); + }); + + it('should render send button', () => { + const { getByLabelText } = render(); + + expect(getByLabelText('Send message')).toBeTruthy(); + }); + }); + + describe('input handling', () => { + it('should call onChange when text is entered', () => { + const onChange = jest.fn(); + const { getByLabelText } = render( + + ); + + fireEvent.changeText(getByLabelText('Message input'), 'Hello'); + + expect(onChange).toHaveBeenCalledWith('Hello'); + }); + + it('should display current value', () => { + const { getByDisplayValue } = render( + + ); + + expect(getByDisplayValue('Current text')).toBeTruthy(); + }); + + it('should disable input when disabled prop is true', () => { + const { getByLabelText } = render( + + ); + + const input = getByLabelText('Message input'); + expect(input.props.editable).toBe(false); + }); + }); + + describe('send button', () => { + it('should call onSend when button is pressed with text', () => { + const onSend = jest.fn(); + const { getByLabelText } = render( + + ); + + fireEvent.press(getByLabelText('Send message')); + + expect(onSend).toHaveBeenCalled(); + }); + + it('should not call onSend when input is empty', () => { + const onSend = jest.fn(); + const { getByLabelText } = render( + + ); + + fireEvent.press(getByLabelText('Send message')); + + expect(onSend).not.toHaveBeenCalled(); + }); + + it('should not call onSend when input is only whitespace', () => { + const onSend = jest.fn(); + const { getByLabelText } = render( + + ); + + fireEvent.press(getByLabelText('Send message')); + + expect(onSend).not.toHaveBeenCalled(); + }); + + it('should not call onSend when disabled', () => { + const onSend = jest.fn(); + const { getByLabelText } = render( + + ); + + fireEvent.press(getByLabelText('Send message')); + + expect(onSend).not.toHaveBeenCalled(); + }); + + it('should not call onSend when loading', () => { + const onSend = jest.fn(); + const { getByLabelText } = render( + + ); + + fireEvent.press(getByLabelText('Stop generation')); + + expect(onSend).not.toHaveBeenCalled(); + }); + }); + + describe('loading state', () => { + it('should show stop button when loading', () => { + const { getByLabelText } = render( + + ); + + expect(getByLabelText('Stop generation')).toBeTruthy(); + }); + + it('should call onStop when stop button is pressed', () => { + const onStop = jest.fn(); + const { getByLabelText } = render( + + ); + + fireEvent.press(getByLabelText('Stop generation')); + + expect(onStop).toHaveBeenCalled(); + }); + }); + + describe('accessibility', () => { + it('should have accessible label for input', () => { + const { getByLabelText } = render(); + + expect(getByLabelText('Message input')).toBeTruthy(); + }); + + it('should have accessible label for send button', () => { + const { getByLabelText } = render(); + + expect(getByLabelText('Send message')).toBeTruthy(); + }); + + it('should have accessible label for stop button when loading', () => { + const { getByLabelText } = render( + + ); + + expect(getByLabelText('Stop generation')).toBeTruthy(); + }); + }); + + describe('custom styles', () => { + it('should apply container style', () => { + const { toJSON } = render( + + ); + + expect(toJSON()).toBeTruthy(); + }); + }); +}); diff --git a/homeflow/packages/chat/src/__tests__/test-utils.tsx b/homeflow/packages/chat/src/__tests__/test-utils.tsx new file mode 100644 index 0000000..f0b5c4b --- /dev/null +++ b/homeflow/packages/chat/src/__tests__/test-utils.tsx @@ -0,0 +1,57 @@ +import { ReactElement } from 'react'; +import { render, RenderOptions } from '@testing-library/react-native'; +import { ChatTheme, ChatMessage } from '../types'; +import { defaultLightChatTheme } from '../theme'; + +/** + * Test utilities for @spezivibe/chat tests + */ + +/** + * Default theme for tests + */ +export const testTheme: ChatTheme = defaultLightChatTheme; + +/** + * Create a mock chat message + */ +export function createMockMessage( + overrides: Partial = {} +): ChatMessage { + return { + id: `msg_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`, + role: 'user', + content: 'Test message', + ...overrides, + }; +} + +/** + * Create a mock user message + */ +export function createUserMessage(content: string): ChatMessage { + return createMockMessage({ role: 'user', content }); +} + +/** + * Create a mock assistant message + */ +export function createAssistantMessage(content: string): ChatMessage { + return createMockMessage({ role: 'assistant', content }); +} + +/** + * Render component with default theme context + */ +export function renderWithTheme( + ui: ReactElement, + options?: RenderOptions +) { + return render(ui, options); +} + +/** + * Wait for async operations + */ +export const wait = (ms: number = 0) => + new Promise((resolve) => setTimeout(resolve, ms)); diff --git a/homeflow/packages/chat/src/__tests__/theme.test.ts b/homeflow/packages/chat/src/__tests__/theme.test.ts new file mode 100644 index 0000000..1cfe715 --- /dev/null +++ b/homeflow/packages/chat/src/__tests__/theme.test.ts @@ -0,0 +1,139 @@ +import { + defaultLightChatTheme, + defaultDarkChatTheme, + mergeChatTheme, +} from '../theme'; + +describe('Chat Theme', () => { + describe('defaultLightChatTheme', () => { + it('should have all required color properties', () => { + expect(defaultLightChatTheme.colors).toHaveProperty('background'); + expect(defaultLightChatTheme.colors).toHaveProperty('userBubble'); + expect(defaultLightChatTheme.colors).toHaveProperty('userBubbleText'); + expect(defaultLightChatTheme.colors).toHaveProperty('assistantBubble'); + expect(defaultLightChatTheme.colors).toHaveProperty('assistantBubbleText'); + expect(defaultLightChatTheme.colors).toHaveProperty('inputBackground'); + expect(defaultLightChatTheme.colors).toHaveProperty('inputBorder'); + expect(defaultLightChatTheme.colors).toHaveProperty('inputText'); + expect(defaultLightChatTheme.colors).toHaveProperty('sendButton'); + expect(defaultLightChatTheme.colors).toHaveProperty('error'); + }); + + it('should have all required spacing properties', () => { + expect(defaultLightChatTheme.spacing).toHaveProperty('xs'); + expect(defaultLightChatTheme.spacing).toHaveProperty('sm'); + expect(defaultLightChatTheme.spacing).toHaveProperty('md'); + expect(defaultLightChatTheme.spacing).toHaveProperty('lg'); + expect(defaultLightChatTheme.spacing).toHaveProperty('xl'); + }); + + it('should have all required borderRadius properties', () => { + expect(defaultLightChatTheme.borderRadius).toHaveProperty('sm'); + expect(defaultLightChatTheme.borderRadius).toHaveProperty('md'); + expect(defaultLightChatTheme.borderRadius).toHaveProperty('lg'); + expect(defaultLightChatTheme.borderRadius).toHaveProperty('bubble'); + }); + + it('should have all required fontSize properties', () => { + expect(defaultLightChatTheme.fontSize).toHaveProperty('sm'); + expect(defaultLightChatTheme.fontSize).toHaveProperty('md'); + expect(defaultLightChatTheme.fontSize).toHaveProperty('lg'); + }); + + it('should use Stanford Cardinal color for user bubble', () => { + expect(defaultLightChatTheme.colors.userBubble).toBe('#8C1515'); + }); + }); + + describe('defaultDarkChatTheme', () => { + it('should have dark background color', () => { + expect(defaultDarkChatTheme.colors.background).toBe('#151718'); + }); + + it('should have same spacing as light theme', () => { + expect(defaultDarkChatTheme.spacing).toEqual(defaultLightChatTheme.spacing); + }); + + it('should have same borderRadius as light theme', () => { + expect(defaultDarkChatTheme.borderRadius).toEqual( + defaultLightChatTheme.borderRadius + ); + }); + }); + + describe('mergeChatTheme', () => { + it('should return base theme when no user theme provided', () => { + const result = mergeChatTheme(undefined); + expect(result).toEqual(defaultLightChatTheme); + }); + + it('should return base theme when user theme is undefined', () => { + const result = mergeChatTheme(undefined, defaultDarkChatTheme); + expect(result).toEqual(defaultDarkChatTheme); + }); + + it('should merge partial colors with base theme', () => { + const result = mergeChatTheme({ + colors: { background: '#FF0000' }, + }); + + expect(result.colors.background).toBe('#FF0000'); + expect(result.colors.userBubble).toBe( + defaultLightChatTheme.colors.userBubble + ); + }); + + it('should merge partial spacing with base theme', () => { + const result = mergeChatTheme({ + spacing: { md: 20 }, + }); + + expect(result.spacing.md).toBe(20); + expect(result.spacing.sm).toBe(defaultLightChatTheme.spacing.sm); + }); + + it('should merge partial borderRadius with base theme', () => { + const result = mergeChatTheme({ + borderRadius: { bubble: 24 }, + }); + + expect(result.borderRadius.bubble).toBe(24); + expect(result.borderRadius.sm).toBe( + defaultLightChatTheme.borderRadius.sm + ); + }); + + it('should merge partial fontSize with base theme', () => { + const result = mergeChatTheme({ + fontSize: { md: 18 }, + }); + + expect(result.fontSize.md).toBe(18); + expect(result.fontSize.sm).toBe(defaultLightChatTheme.fontSize.sm); + }); + + it('should merge multiple partial properties', () => { + const result = mergeChatTheme({ + colors: { background: '#000000' }, + spacing: { lg: 24 }, + fontSize: { lg: 22 }, + }); + + expect(result.colors.background).toBe('#000000'); + expect(result.spacing.lg).toBe(24); + expect(result.fontSize.lg).toBe(22); + }); + + it('should use custom base theme', () => { + const result = mergeChatTheme( + { colors: { background: '#FF0000' } }, + defaultDarkChatTheme + ); + + expect(result.colors.background).toBe('#FF0000'); + expect(result.colors.assistantBubble).toBe( + defaultDarkChatTheme.colors.assistantBubble + ); + }); + }); +}); diff --git a/homeflow/packages/chat/src/components/ChatView.tsx b/homeflow/packages/chat/src/components/ChatView.tsx new file mode 100644 index 0000000..db85fbd --- /dev/null +++ b/homeflow/packages/chat/src/components/ChatView.tsx @@ -0,0 +1,185 @@ +import React, { useMemo, useRef, useEffect, useState, useCallback } from 'react'; +import { + View, + FlatList, + StyleSheet, + KeyboardAvoidingView, + Platform, +} from 'react-native'; +import { ChatViewProps, ChatMessage } from '../types'; +import { defaultLightChatTheme, mergeChatTheme } from '../theme'; +import { MessageBubble } from './MessageBubble'; +import { MessageInput } from './MessageInput'; +import { streamChatCompletion, LLMMessage } from '../services'; + +function generateId(): string { + return `msg_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`; +} + +/** + * ChatView - Full chat interface with message list and input + * + * Supports multiple LLM providers (OpenAI, Anthropic, Google) via Vercel AI SDK. + */ +export function ChatView({ + provider, + theme: userTheme, + placeholder = 'Type a message...', + header, + emptyState, + systemPrompt, + containerStyle, +}: ChatViewProps) { + const theme = useMemo( + () => mergeChatTheme(userTheme, defaultLightChatTheme), + [userTheme] + ); + + const flatListRef = useRef(null); + const abortControllerRef = useRef(null); + + const [input, setInput] = useState(''); + const [messages, setMessages] = useState([]); + const [isLoading, setIsLoading] = useState(false); + + // Auto-scroll to bottom when new messages arrive + useEffect(() => { + if (messages.length > 0) { + const timer = setTimeout(() => { + flatListRef.current?.scrollToEnd({ animated: true }); + }, 100); + return () => clearTimeout(timer); + } + }, [messages]); + + const handleSend = useCallback(async () => { + if (!input.trim() || isLoading) return; + + const userMessage: ChatMessage = { + id: generateId(), + role: 'user', + content: input.trim(), + }; + + const assistantMessage: ChatMessage = { + id: generateId(), + role: 'assistant', + content: '', + }; + + setMessages((prev) => [...prev, userMessage, assistantMessage]); + setInput(''); + setIsLoading(true); + + // Build messages for LLM + const llmMessages: LLMMessage[] = []; + if (systemPrompt) { + llmMessages.push({ role: 'system', content: systemPrompt }); + } + // Add previous messages + messages.forEach((msg) => { + if (msg.role !== 'system') { + llmMessages.push({ role: msg.role, content: msg.content }); + } + }); + llmMessages.push({ role: 'user', content: userMessage.content }); + + abortControllerRef.current = new AbortController(); + + await streamChatCompletion( + llmMessages, + provider, + { + onToken: (token) => { + setMessages((prev) => + prev.map((msg) => + msg.id === assistantMessage.id + ? { ...msg, content: msg.content + token } + : msg + ) + ); + }, + onComplete: () => { + setIsLoading(false); + abortControllerRef.current = null; + }, + onError: (error) => { + setIsLoading(false); + abortControllerRef.current = null; + // Update the assistant message with error + setMessages((prev) => + prev.map((msg) => + msg.id === assistantMessage.id + ? { ...msg, content: `Error: ${error.message}` } + : msg + ) + ); + }, + }, + abortControllerRef.current.signal + ); + }, [input, isLoading, messages, provider, systemPrompt]); + + const handleStop = useCallback(() => { + abortControllerRef.current?.abort(); + setIsLoading(false); + }, []); + + const renderItem = ({ item }: { item: ChatMessage }) => { + return ; + }; + + return ( + + {header} + + {messages.length === 0 && emptyState ? ( + {emptyState} + ) : ( + item.id} + renderItem={renderItem} + contentContainerStyle={[ + styles.messageList, + { padding: theme.spacing.md }, + ]} + showsVerticalScrollIndicator={false} + /> + )} + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + emptyContainer: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + messageList: { + flexGrow: 1, + }, +}); diff --git a/homeflow/packages/chat/src/components/MessageBubble.tsx b/homeflow/packages/chat/src/components/MessageBubble.tsx new file mode 100644 index 0000000..0c10573 --- /dev/null +++ b/homeflow/packages/chat/src/components/MessageBubble.tsx @@ -0,0 +1,92 @@ +import React from 'react'; +import { View, Text, StyleSheet, ActivityIndicator } from 'react-native'; +import { MessageBubbleProps } from '../types'; + +/** + * MessageBubble - Displays a single chat message in a styled bubble + * + * - User messages appear on the right with primary color + * - Assistant messages appear on the left with neutral color + * - Shows loading indicator when message content is empty (streaming) + */ +export function MessageBubble({ + message, + theme, + bubbleStyle, + textStyle, +}: MessageBubbleProps) { + const isUser = message.role === 'user'; + + const bubbleColors = { + backgroundColor: isUser + ? theme.colors.userBubble + : theme.colors.assistantBubble, + }; + + const textColors = { + color: isUser + ? theme.colors.userBubbleText + : theme.colors.assistantBubbleText, + }; + + const content = message.content; + const isStreaming = message.role === 'assistant' && !content; + + return ( + + + {isStreaming ? ( + + ) : ( + + {content} + + )} + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flexDirection: 'column', + }, + userContainer: { + alignItems: 'flex-end', + }, + assistantContainer: { + alignItems: 'flex-start', + }, + bubble: {}, + messageText: { + lineHeight: 22, + }, +}); diff --git a/homeflow/packages/chat/src/components/MessageInput.tsx b/homeflow/packages/chat/src/components/MessageInput.tsx new file mode 100644 index 0000000..b6f1f70 --- /dev/null +++ b/homeflow/packages/chat/src/components/MessageInput.tsx @@ -0,0 +1,131 @@ +import React from 'react'; +import { + View, + TextInput, + TouchableOpacity, + StyleSheet, + Platform, +} from 'react-native'; +import { Ionicons } from '@expo/vector-icons'; +import { MessageInputProps } from '../types'; + +/** + * MessageInput - Text input with send/stop button for chat messages + * + * - Multiline text input + * - Send button (disabled when empty or loading) + * - Stop button shown during generation + */ +export function MessageInput({ + theme, + placeholder = 'Type a message...', + disabled = false, + value, + onChange, + onSend, + onStop, + isLoading = false, + containerStyle, +}: MessageInputProps) { + + const handleSend = () => { + if (!value.trim() || disabled || isLoading) return; + onSend(); + }; + + const handleStop = () => { + onStop?.(); + }; + + const canSend = value.trim().length > 0 && !disabled && !isLoading; + + return ( + + + + + + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + borderTopWidth: 1, + }, + inputContainer: { + flexDirection: 'row', + alignItems: 'flex-end', + borderWidth: 1, + }, + input: { + flex: 1, + minHeight: 40, + maxHeight: 120, + paddingVertical: 10, + }, + sendButton: { + justifyContent: 'center', + alignItems: 'center', + paddingBottom: 8, + }, +}); diff --git a/homeflow/packages/chat/src/components/index.ts b/homeflow/packages/chat/src/components/index.ts new file mode 100644 index 0000000..be74b4d --- /dev/null +++ b/homeflow/packages/chat/src/components/index.ts @@ -0,0 +1,3 @@ +export { ChatView } from './ChatView'; +export { MessageBubble } from './MessageBubble'; +export { MessageInput } from './MessageInput'; diff --git a/homeflow/packages/chat/src/index.ts b/homeflow/packages/chat/src/index.ts new file mode 100644 index 0000000..441e324 --- /dev/null +++ b/homeflow/packages/chat/src/index.ts @@ -0,0 +1,56 @@ +/** + * @spezivibe/chat + * + * Chat UI components for React Native applications with multi-provider LLM support. + * Supports OpenAI, Anthropic (Claude), and Google (Gemini) via Vercel AI SDK. + * + * @example + * ```tsx + * import { ChatView } from '@spezivibe/chat'; + * + * function ChatScreen() { + * return ( + * + * ); + * } + * ``` + */ + +// Types +export type { + ChatMessage, + ChatTheme, + ChatThemeColors, + PartialChatTheme, + ChatViewProps, + MessageBubbleProps, + MessageInputProps, + ChatProvider, + ChatProviderType, + OpenAIProvider, + AnthropicProvider, + GoogleProvider, +} from './types'; + +export { DEFAULT_MODELS } from './types'; + +// Components +export { ChatView, MessageBubble, MessageInput } from './components'; + +// Theme +export { + defaultLightChatTheme, + defaultDarkChatTheme, + mergeChatTheme, +} from './theme'; + +// Services +export { streamChatCompletion } from './services'; +export type { LLMMessage, StreamCallbacks } from './services/llm'; diff --git a/homeflow/packages/chat/src/services/index.ts b/homeflow/packages/chat/src/services/index.ts new file mode 100644 index 0000000..1b15b55 --- /dev/null +++ b/homeflow/packages/chat/src/services/index.ts @@ -0,0 +1,2 @@ +export { streamChatCompletion } from './llm'; +export type { LLMMessage, StreamCallbacks } from './llm'; diff --git a/homeflow/packages/chat/src/services/llm.ts b/homeflow/packages/chat/src/services/llm.ts new file mode 100644 index 0000000..4c00c97 --- /dev/null +++ b/homeflow/packages/chat/src/services/llm.ts @@ -0,0 +1,83 @@ +/** + * Multi-provider LLM client using Vercel AI SDK + * Supports OpenAI, Anthropic (Claude), and Google (Gemini) + */ +import { createOpenAI } from '@ai-sdk/openai'; +import { createAnthropic } from '@ai-sdk/anthropic'; +import { createGoogleGenerativeAI } from '@ai-sdk/google'; +import { streamText, LanguageModel } from 'ai'; +import { fetch as expoFetch } from 'expo/fetch'; +import { ChatProvider, DEFAULT_MODELS } from '../types'; + +export interface LLMMessage { + role: 'system' | 'user' | 'assistant'; + content: string; +} + +export interface StreamCallbacks { + onToken: (token: string) => void; + onComplete: () => void; + onError: (error: Error) => void; +} + +/** + * Create an AI SDK model instance based on provider configuration + */ +function createModel(provider: ChatProvider): LanguageModel { + const model = provider.model || DEFAULT_MODELS[provider.type]; + + switch (provider.type) { + case 'openai': { + const openai = createOpenAI({ + apiKey: provider.apiKey, + fetch: expoFetch as unknown as typeof globalThis.fetch, + }); + return openai(model); + } + case 'anthropic': { + const anthropic = createAnthropic({ + apiKey: provider.apiKey, + fetch: expoFetch as unknown as typeof globalThis.fetch, + }); + return anthropic(model); + } + case 'google': { + const google = createGoogleGenerativeAI({ + apiKey: provider.apiKey, + fetch: expoFetch as unknown as typeof globalThis.fetch, + }); + return google(model); + } + } +} + +/** + * Stream a chat completion from the configured LLM provider + */ +export async function streamChatCompletion( + messages: LLMMessage[], + provider: ChatProvider, + callbacks: StreamCallbacks, + abortSignal?: AbortSignal +): Promise { + try { + const model = createModel(provider); + + const result = streamText({ + model, + messages, + abortSignal, + }); + + for await (const chunk of result.textStream) { + callbacks.onToken(chunk); + } + callbacks.onComplete(); + } catch (error) { + if (error instanceof Error && error.name === 'AbortError') { + callbacks.onComplete(); + } else { + callbacks.onError(error instanceof Error ? error : new Error('Unknown error')); + } + } +} diff --git a/homeflow/packages/chat/src/theme/default-theme.ts b/homeflow/packages/chat/src/theme/default-theme.ts new file mode 100644 index 0000000..5b4baf7 --- /dev/null +++ b/homeflow/packages/chat/src/theme/default-theme.ts @@ -0,0 +1,97 @@ +import { ChatTheme, PartialChatTheme } from '../types'; + +/** + * Default light theme for chat components + * Uses Stanford Cardinal colors to match the app theme + */ +export const defaultLightChatTheme: ChatTheme = { + colors: { + background: '#FFFFFF', + userBubble: '#8C1515', // Stanford Cardinal + userBubbleText: '#FFFFFF', + assistantBubble: '#F0F0F0', + assistantBubbleText: '#11181C', + inputBackground: '#FFFFFF', + inputBorder: '#E0E0E0', + inputText: '#11181C', + placeholderText: '#687076', + sendButton: '#8C1515', + sendButtonDisabled: '#CCCCCC', + error: '#DC3545', + timestamp: '#687076', + }, + spacing: { + xs: 4, + sm: 8, + md: 12, + lg: 16, + xl: 24, + }, + borderRadius: { + sm: 4, + md: 8, + lg: 16, + bubble: 18, + }, + fontSize: { + sm: 12, + md: 16, + lg: 18, + }, +}; + +/** + * Default dark theme for chat components + */ +export const defaultDarkChatTheme: ChatTheme = { + colors: { + background: '#151718', + userBubble: '#8C1515', // Stanford Cardinal + userBubbleText: '#FFFFFF', + assistantBubble: '#2C2C2E', + assistantBubbleText: '#ECEDEE', + inputBackground: '#1C1C1E', + inputBorder: '#38383A', + inputText: '#ECEDEE', + placeholderText: '#8E8E93', + sendButton: '#B83A4B', // Cardinal Light for better visibility + sendButtonDisabled: '#48484A', + error: '#FF453A', + timestamp: '#8E8E93', + }, + spacing: { + xs: 4, + sm: 8, + md: 12, + lg: 16, + xl: 24, + }, + borderRadius: { + sm: 4, + md: 8, + lg: 16, + bubble: 18, + }, + fontSize: { + sm: 12, + md: 16, + lg: 18, + }, +}; + +/** + * Merge a partial theme with a base theme + */ +export function mergeChatTheme( + userTheme?: PartialChatTheme, + baseTheme: ChatTheme = defaultLightChatTheme +): ChatTheme { + if (!userTheme) return baseTheme; + + return { + colors: { ...baseTheme.colors, ...userTheme.colors }, + spacing: { ...baseTheme.spacing, ...userTheme.spacing }, + borderRadius: { ...baseTheme.borderRadius, ...userTheme.borderRadius }, + fontSize: { ...baseTheme.fontSize, ...userTheme.fontSize }, + }; +} diff --git a/homeflow/packages/chat/src/theme/index.ts b/homeflow/packages/chat/src/theme/index.ts new file mode 100644 index 0000000..6bb7b62 --- /dev/null +++ b/homeflow/packages/chat/src/theme/index.ts @@ -0,0 +1,5 @@ +export { + defaultLightChatTheme, + defaultDarkChatTheme, + mergeChatTheme, +} from './default-theme'; diff --git a/homeflow/packages/chat/src/types.ts b/homeflow/packages/chat/src/types.ts new file mode 100644 index 0000000..2d7de8b --- /dev/null +++ b/homeflow/packages/chat/src/types.ts @@ -0,0 +1,169 @@ +import type { ReactNode } from 'react'; +import type { ViewStyle, TextStyle } from 'react-native'; + +/** + * Supported LLM provider types + */ +export type ChatProviderType = 'openai' | 'anthropic' | 'google'; + +/** + * OpenAI provider configuration + */ +export interface OpenAIProvider { + type: 'openai'; + apiKey: string; + model?: string; +} + +/** + * Anthropic (Claude) provider configuration + */ +export interface AnthropicProvider { + type: 'anthropic'; + apiKey: string; + model?: string; +} + +/** + * Google (Gemini) provider configuration + */ +export interface GoogleProvider { + type: 'google'; + apiKey: string; + model?: string; +} + +/** + * Chat provider configuration - supports OpenAI, Anthropic, and Google + */ +export type ChatProvider = OpenAIProvider | AnthropicProvider | GoogleProvider; + +/** + * Default models for each provider + */ +export const DEFAULT_MODELS: Record = { + openai: 'gpt-4o-mini', + anthropic: 'claude-sonnet-4-20250514', + google: 'gemini-2.0-flash', +}; + +/** + * A chat message + */ +export interface ChatMessage { + id: string; + role: 'system' | 'user' | 'assistant'; + content: string; +} + +/** + * Theme colors for chat components + */ +export interface ChatThemeColors { + background: string; + userBubble: string; + userBubbleText: string; + assistantBubble: string; + assistantBubbleText: string; + inputBackground: string; + inputBorder: string; + inputText: string; + placeholderText: string; + sendButton: string; + sendButtonDisabled: string; + error: string; + timestamp: string; +} + +/** + * Chat theme configuration + */ +export interface ChatTheme { + colors: ChatThemeColors; + spacing: { + xs: number; + sm: number; + md: number; + lg: number; + xl: number; + }; + borderRadius: { + sm: number; + md: number; + lg: number; + bubble: number; + }; + fontSize: { + sm: number; + md: number; + lg: number; + }; +} + +/** + * Partial theme for customization + */ +export interface PartialChatTheme { + colors?: Partial; + spacing?: Partial; + borderRadius?: Partial; + fontSize?: Partial; +} + +/** + * Props for ChatView component + */ +export interface ChatViewProps { + /** LLM provider configuration (OpenAI, Anthropic, or Google) */ + provider: ChatProvider; + /** Custom theme */ + theme?: PartialChatTheme; + /** Placeholder text for input */ + placeholder?: string; + /** Header component */ + header?: ReactNode; + /** Empty state component shown when no messages */ + emptyState?: ReactNode; + /** System prompt to send to LLM */ + systemPrompt?: string; + /** Custom container style */ + containerStyle?: ViewStyle; +} + +/** + * Props for MessageBubble component + */ +export interface MessageBubbleProps { + /** The message to display */ + message: ChatMessage; + /** Theme configuration */ + theme: ChatTheme; + /** Custom bubble style */ + bubbleStyle?: ViewStyle; + /** Custom text style */ + textStyle?: TextStyle; +} + +/** + * Props for MessageInput component + */ +export interface MessageInputProps { + /** Theme configuration */ + theme: ChatTheme; + /** Placeholder text */ + placeholder?: string; + /** Whether input is disabled */ + disabled?: boolean; + /** Current input value */ + value: string; + /** Callback when input changes */ + onChange: (value: string) => void; + /** Callback when send is pressed */ + onSend: () => void; + /** Callback when stop is pressed during generation */ + onStop?: () => void; + /** Whether generation is in progress */ + isLoading?: boolean; + /** Custom container style */ + containerStyle?: ViewStyle; +} diff --git a/homeflow/packages/chat/tsconfig.json b/homeflow/packages/chat/tsconfig.json new file mode 100644 index 0000000..cc1fe78 --- /dev/null +++ b/homeflow/packages/chat/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src", + "declaration": true, + "declarationMap": true, + "composite": true, + "noEmit": false, + "module": "ESNext", + "target": "ES2020", + "moduleResolution": "bundler", + "jsx": "react-native" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/__tests__/**", "**/__mocks__/**", "**/*.test.ts", "**/*.test.tsx"] +} diff --git a/homeflow/packages/healthkit/README.md b/homeflow/packages/healthkit/README.md new file mode 100644 index 0000000..d320a5b --- /dev/null +++ b/homeflow/packages/healthkit/README.md @@ -0,0 +1,788 @@ +# @spezivibe/healthkit + +A React Native package for Apple HealthKit integration in Expo apps. Provides configurable health data collection, React hooks, and pre-built UI components. Built on [@kingstinct/react-native-healthkit](https://github.com/kingstinct/react-native-healthkit). + +## Table of Contents + +- [Features](#features) +- [Requirements](#requirements) +- [Installation](#installation) +- [Quick Start](#quick-start) +- [Configuration](#configuration) +- [Components](#components) +- [Hooks](#hooks) +- [Theming](#theming) +- [API Reference](#api-reference) +- [Sample Types](#sample-types) +- [Platform Support](#platform-support) +- [Examples](#examples) +- [Troubleshooting](#troubleshooting) + +## Features + +- **50+ Health Metrics** - Steps, heart rate, sleep, blood glucose, and more +- **Configurable Collection** - Declarative API to specify which data to collect +- **React Hooks** - `useHealthKit` and `useHealthMetric` for easy data access +- **Pre-built UI** - Ready-to-use `HealthView` dashboard and `MetricCard` components +- **Expo Go Detection** - Automatic fallback UI when running in Expo Go +- **TypeScript** - Full TypeScript support with exported types +- **Theming** - Customizable theme system + +## Requirements + +> **Important:** HealthKit requires a **custom development build**. It will NOT work in Expo Go. + +- **iOS only** - HealthKit is an Apple-only framework +- **Expo SDK 52+** - Uses native modules +- **Custom dev client** - Requires `npx expo run:ios` or EAS Build +- **Physical device recommended** - Simulator has limited HealthKit support + +## Installation + +```bash +npm install @spezivibe/healthkit @kingstinct/react-native-healthkit react-native-nitro-modules +``` + +### Peer Dependencies + +```json +{ + "react": ">=18.0.0", + "react-native": ">=0.70.0", + "expo": ">=52.0.0", + "expo-constants": ">=17.0.0" +} +``` + +### Expo Configuration + +Add the HealthKit plugin to your `app.config.js` or `app.json`: + +```javascript +// app.config.js +export default { + expo: { + // ... other config + plugins: [ + [ + "@kingstinct/react-native-healthkit", + { + NSHealthShareUsageDescription: "This app needs access to your health data to display your fitness metrics.", + NSHealthUpdateUsageDescription: "This app needs permission to save health data." + } + ] + ] + } +}; +``` + +### Building for iOS + +Since HealthKit requires native code, you must create a custom development build: + +```bash +# Create native iOS project and run on device/simulator +npx expo prebuild --platform ios +npx expo run:ios + +# Or use EAS Build for cloud builds +eas build --platform ios --profile development +``` + +## Quick Start + +### 1. Create Configuration + +Create a configuration file specifying which health data to collect: + +```typescript +// lib/healthkit-config.ts +import { HealthKitConfig, SampleType } from '@spezivibe/healthkit'; + +export const healthKitConfig: HealthKitConfig = { + // Health data to actively collect and display + collect: [ + SampleType.stepCount, + SampleType.heartRate, + SampleType.activeEnergyBurned, + SampleType.sleepAnalysis, + ], + // Read-only access (request permission but don't display by default) + readOnly: [], + // Enable background delivery for specific types + backgroundDelivery: [], + // Optional: sync to backend (requires backend integration) + syncToBackend: false, +}; +``` + +### 2. Add Provider + +Wrap your app (or relevant screens) with `HealthKitProvider`: + +```tsx +// App.tsx or _layout.tsx +import { HealthKitProvider } from '@spezivibe/healthkit'; +import { healthKitConfig } from './lib/healthkit-config'; + +export default function RootLayout() { + return ( + + {/* Your app content */} + + ); +} +``` + +### 3. Display Health Data + +Use the pre-built `HealthView` component: + +```tsx +// app/(tabs)/health.tsx +import { HealthView } from '@spezivibe/healthkit'; +import { healthKitConfig } from '../lib/healthkit-config'; + +export default function HealthScreen() { + return ; +} +``` + +That's it! The `HealthView` component handles authorization prompts, displays configured metrics, and shows a fallback UI if running in Expo Go. + +## Configuration + +### HealthKitConfig + +The configuration object controls which health data your app collects: + +```typescript +interface HealthKitConfig { + /** Health data types to collect and display */ + collect: SampleType[]; + + /** Types with read-only access (permission requested but not displayed) */ + readOnly: SampleType[]; + + /** Types to receive background delivery updates */ + backgroundDelivery: SampleType[]; + + /** Whether to sync health data to backend */ + syncToBackend: boolean; +} +``` + +### Example Configurations + +#### Fitness App + +```typescript +const fitnessConfig: HealthKitConfig = { + collect: [ + SampleType.stepCount, + SampleType.activeEnergyBurned, + SampleType.distanceWalkingRunning, + SampleType.flightsClimbed, + SampleType.workoutType, + ], + readOnly: [], + backgroundDelivery: [SampleType.stepCount], + syncToBackend: false, +}; +``` + +#### Health Monitoring App + +```typescript +const healthMonitorConfig: HealthKitConfig = { + collect: [ + SampleType.heartRate, + SampleType.bloodPressureSystolic, + SampleType.bloodPressureDiastolic, + SampleType.oxygenSaturation, + SampleType.respiratoryRate, + ], + readOnly: [SampleType.bodyMass, SampleType.height], + backgroundDelivery: [SampleType.heartRate], + syncToBackend: true, +}; +``` + +#### Diabetes Management App + +```typescript +const diabetesConfig: HealthKitConfig = { + collect: [ + SampleType.bloodGlucose, + SampleType.insulinDelivery, + SampleType.dietaryCarbohydrates, + ], + readOnly: [], + backgroundDelivery: [SampleType.bloodGlucose], + syncToBackend: true, +}; +``` + +## Components + +### HealthView + +The main dashboard component that displays all configured health metrics. + +```tsx +import { HealthView } from '@spezivibe/healthkit'; + + console.log('Auth:', success)} // Optional +/> +``` + +**Features:** +- Handles HealthKit authorization prompt +- Displays metric cards for all configured types +- Shows Expo Go fallback automatically +- Supports pull-to-refresh + +### MetricCard + +Individual metric display card. + +```tsx +import { MetricCard } from '@spezivibe/healthkit'; +import { SampleType } from '@spezivibe/healthkit'; + + console.log('tapped')} // Optional: tap handler +/> +``` + +### ExpoGoFallback + +Fallback UI shown when running in Expo Go. + +```tsx +import { ExpoGoFallback } from '@spezivibe/healthkit'; + + +``` + +Or provide a custom fallback to `HealthKitProvider`: + +```tsx +} +> + {children} + +``` + +## Hooks + +### useHealthKit + +Main hook for HealthKit operations. + +```tsx +import { useHealthKit } from '@spezivibe/healthkit'; + +function MyComponent() { + const { + isAvailable, // boolean: HealthKit available on this device + isAuthorized, // boolean: user has granted permission + isLoading, // boolean: authorization in progress + error, // Error | null: any error that occurred + requestAuthorization, // () => Promise: request permission + getTodayValue, // (type: SampleType) => Promise + getMostRecent, // (type: SampleType) => Promise + } = useHealthKit(); + + const handlePress = async () => { + const success = await requestAuthorization(); + if (success) { + const steps = await getTodayValue(SampleType.stepCount); + console.log('Today steps:', steps); + } + }; + + if (!isAvailable) { + return HealthKit not available; + } + + return ( + ; +} +``` + +## Schedule Types + +### Daily Recurring + +```tsx +schedule: { + startDate: new Date(), + recurrence: { + type: 'daily', + hour: 9, + minute: 30, + }, +} +``` + +### Weekly Recurring + +```tsx +schedule: { + startDate: new Date(), + recurrence: { + type: 'weekly', + weekday: 1, // 0 = Sunday, 1 = Monday, ..., 6 = Saturday + hour: 14, + minute: 0, + }, +} +``` + +### Monthly Recurring + +```tsx +schedule: { + startDate: new Date(), + recurrence: { + type: 'monthly', + day: 15, // Day of month (1-31) + hour: 12, + minute: 0, + }, +} +``` + +### One-Time Event + +```tsx +schedule: { + startDate: new Date(), + recurrence: { + type: 'once', + date: new Date('2024-12-25T10:00:00'), + }, +} +``` + +### With End Date + +```tsx +schedule: { + startDate: new Date('2024-01-01'), + endDate: new Date('2024-12-31'), // Task expires at end of year + recurrence: { + type: 'daily', + hour: 9, + minute: 0, + }, +} +``` + +## Completion Policies + +### Anytime Completion + +User can complete the task at any time: + +```tsx +completionPolicy: { + type: 'anytime', +} +``` + +### Time Window + +User can only complete within a specific time window: + +```tsx +completionPolicy: { + type: 'window', + start: 0, // minutes before scheduled time + end: 180, // minutes after scheduled time (3 hours) +} +``` + +## Task Categories + +- `'task'` - Generic task +- `'questionnaire'` - Opens a questionnaire (requires `questionnaireId`) +- `'measurement'` - Health measurement task +- `'reminder'` - Simple reminder + +## API Reference + +### Scheduler Methods + +```tsx +const { scheduler, tasks } = useScheduler(); + +// Create or update a task +await scheduler.createOrUpdateTask(task); + +// Get all tasks +const tasks = scheduler.getTasks(); + +// Get a specific task +const task = scheduler.getTask('task-id'); + +// Delete a task +await scheduler.deleteTask('task-id'); + +// Clear all tasks +await scheduler.clearAll(); + +// Query events for a date range +const events = scheduler.queryEvents(startDate, endDate); + +// Complete an event +await scheduler.completeEvent(event); + +// Uncomplete an event +await scheduler.uncompleteEvent(event); +``` + +### ScheduleView Props + +| Prop | Type | Default | Description | +|------|------|---------|-------------| +| `isDark` | `boolean` | `false` | Enable dark theme | +| `theme` | `SchedulerUITheme` | - | Custom theme object | +| `onQuestionnaireOpen` | `(event: Event) => void` | - | Handle questionnaire tasks | +| `onEventPress` | `(event: Event) => void` | - | Override default event press | +| `renderHeader` | `() => ReactNode` | - | Custom header component | +| `headerContent` | `ReactNode` | - | Content above calendar | +| `subHeaderContent` | `ReactNode` | - | Content below date info | +| `textColor` | `string` | - | Date label text color | +| `mutedTextColor` | `string` | - | Completion text color | +| `refreshKey` | `number` | - | Force refresh (increment) | +| `style` | `ViewStyle` | - | Container style | + +### Individual Components + +If you need more control, you can use individual components: + +```tsx +import { + CalendarStrip, + EventList, + EventCard, + useScheduleScreen, +} from '@spezivibe/scheduler'; + +function CustomSchedule() { + const { scheduler, tasks } = useScheduler(); + const { + selectedDate, + setSelectedDate, + events, + completedCount, + totalCount, + } = useScheduleScreen({ scheduler, tasks }); + + return ( + <> + + {completedCount} of {totalCount} completed + + + ); +} +``` + +## Utilities + +### Date Formatting + +```tsx +import { + getDateLabel, + getRelativeDateLabel, + formatTime, +} from '@spezivibe/scheduler'; + +getDateLabel(new Date()); // "Today" or "Monday, January 1" +getRelativeDateLabel(new Date()); // "Today", "Tomorrow", "Yesterday" +formatTime(new Date()); // "2:30 PM" +``` + +### Completion Check + +```tsx +import { isAllowedToComplete } from '@spezivibe/scheduler'; + +const canComplete = isAllowedToComplete(event); +``` + +## Theming + +### Using Built-in Themes + +```tsx +import { ScheduleView, defaultLightTheme, defaultDarkTheme } from '@spezivibe/scheduler'; + + +``` + +### Custom Theme + +```tsx +import { ScheduleView, SchedulerUITheme } from '@spezivibe/scheduler'; + +const myTheme: SchedulerUITheme = { + colors: { + background: '#000000', + cardBackground: '#1a1a1a', + cardBorder: '#333333', + cardPressed: '#2a2a2a', + primary: '#007AFF', + border: '#333333', + primaryText: '#ffffff', + secondaryText: '#999999', + mutedText: '#666666', + accentText: '#007AFF', + // ... other colors + }, +}; + + +``` + +## Testing + +```bash +npm test +``` + +## Sample Data + +Load sample tasks for testing: + +```tsx +import { createSampleTasks } from '@spezivibe/scheduler'; + +const loadSamples = async () => { + const samples = createSampleTasks(); + for (const task of samples) { + await scheduler.createOrUpdateTask(task); + } +}; +``` + +## TypeScript + +Full TypeScript support with exported types: + +```tsx +import type { + Task, + Event, + Schedule, + Outcome, + AllowedCompletionPolicy, + RecurrenceRule, + TaskCategory, + SchedulerUITheme, +} from '@spezivibe/scheduler'; +``` + +## License + +MIT + +## Credits + +Inspired by [Stanford Spezi's SpeziScheduler](https://github.com/StanfordSpezi/SpeziScheduler) diff --git a/homeflow/packages/scheduler/__tests__/Scheduler.test.ts b/homeflow/packages/scheduler/__tests__/Scheduler.test.ts new file mode 100644 index 0000000..4be0bac --- /dev/null +++ b/homeflow/packages/scheduler/__tests__/Scheduler.test.ts @@ -0,0 +1,354 @@ +/** + * Tests for the Scheduler service + */ + +import AsyncStorage from '@react-native-async-storage/async-storage'; +import { Scheduler } from '../src/services/Scheduler'; +import { Task } from '../src/types'; + +describe('Scheduler', () => { + let scheduler: Scheduler; + + beforeEach(async () => { + jest.clearAllMocks(); + scheduler = new Scheduler('@test_scheduler'); + await scheduler.initialize(); + }); + + describe('Task Management', () => { + it('should create a new task', async () => { + const task = await scheduler.createOrUpdateTask({ + id: 'test-task-1', + title: 'Test Task', + instructions: 'Test instructions', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { + type: 'daily', + hour: 9, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }); + + expect(task.id).toBe('test-task-1'); + expect(task.title).toBe('Test Task'); + expect(task.createdAt).toBeInstanceOf(Date); + }); + + it('should update an existing task', async () => { + await scheduler.createOrUpdateTask({ + id: 'test-task-1', + title: 'Original Title', + instructions: 'Original instructions', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { + type: 'daily', + hour: 9, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }); + + const updatedTask = await scheduler.createOrUpdateTask({ + id: 'test-task-1', + title: 'Updated Title', + instructions: 'Updated instructions', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { + type: 'daily', + hour: 10, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }); + + expect(updatedTask.title).toBe('Updated Title'); + expect(scheduler.getTasks()).toHaveLength(1); + }); + + it('should get all tasks', async () => { + await scheduler.createOrUpdateTask({ + id: 'task-1', + title: 'Task 1', + instructions: 'Instructions 1', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { type: 'daily', hour: 9, minute: 0 }, + }, + completionPolicy: { type: 'anytime' }, + }); + + await scheduler.createOrUpdateTask({ + id: 'task-2', + title: 'Task 2', + instructions: 'Instructions 2', + category: 'questionnaire', + questionnaireId: 'q1', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { type: 'weekly', weekday: 1, hour: 10, minute: 0 }, + }, + completionPolicy: { type: 'anytime' }, + }); + + const tasks = scheduler.getTasks(); + expect(tasks).toHaveLength(2); + expect(tasks.find(t => t.id === 'task-1')).toBeDefined(); + expect(tasks.find(t => t.id === 'task-2')).toBeDefined(); + }); + + it('should get a specific task by ID', async () => { + await scheduler.createOrUpdateTask({ + id: 'task-1', + title: 'Task 1', + instructions: 'Instructions', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { type: 'daily', hour: 9, minute: 0 }, + }, + completionPolicy: { type: 'anytime' }, + }); + + const task = scheduler.getTask('task-1'); + expect(task).toBeDefined(); + expect(task?.title).toBe('Task 1'); + }); + + it('should delete a task', async () => { + await scheduler.createOrUpdateTask({ + id: 'task-to-delete', + title: 'Delete Me', + instructions: 'Instructions', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { type: 'daily', hour: 9, minute: 0 }, + }, + completionPolicy: { type: 'anytime' }, + }); + + expect(scheduler.getTasks()).toHaveLength(1); + + await scheduler.deleteTask('task-to-delete'); + + expect(scheduler.getTasks()).toHaveLength(0); + expect(scheduler.getTask('task-to-delete')).toBeUndefined(); + }); + + it('should clear all tasks', async () => { + await scheduler.createOrUpdateTask({ + id: 'task-1', + title: 'Task 1', + instructions: 'Instructions', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { type: 'daily', hour: 9, minute: 0 }, + }, + completionPolicy: { type: 'anytime' }, + }); + + await scheduler.createOrUpdateTask({ + id: 'task-2', + title: 'Task 2', + instructions: 'Instructions', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { type: 'daily', hour: 9, minute: 0 }, + }, + completionPolicy: { type: 'anytime' }, + }); + + expect(scheduler.getTasks()).toHaveLength(2); + + await scheduler.clearAll(); + + expect(scheduler.getTasks()).toHaveLength(0); + }); + }); + + describe('Event Queries', () => { + beforeEach(async () => { + await scheduler.createOrUpdateTask({ + id: 'daily-task', + title: 'Daily Task', + instructions: 'Do this daily', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { + type: 'daily', + hour: 9, + minute: 0, + }, + }, + completionPolicy: { type: 'anytime' }, + }); + }); + + it('should query events for a date range', () => { + const startDate = new Date('2024-01-01T00:00:00'); + const endDate = new Date('2024-01-03T23:59:59'); + + const events = scheduler.queryEvents(startDate, endDate); + + expect(events.length).toBeGreaterThan(0); + expect(events[0].task.id).toBe('daily-task'); + }); + + it('should return events sorted by date', () => { + const startDate = new Date('2024-01-01T00:00:00'); + const endDate = new Date('2024-01-05T23:59:59'); + + const events = scheduler.queryEvents(startDate, endDate); + + for (let i = 1; i < events.length; i++) { + expect(events[i].occurrence.scheduledDate.getTime()).toBeGreaterThanOrEqual( + events[i - 1].occurrence.scheduledDate.getTime() + ); + } + }); + }); + + describe('Event Completion', () => { + let testTask: Task; + + beforeEach(async () => { + testTask = await scheduler.createOrUpdateTask({ + id: 'completion-task', + title: 'Completion Task', + instructions: 'Test completion', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { + type: 'daily', + hour: 9, + minute: 0, + }, + }, + completionPolicy: { type: 'anytime' }, + }); + }); + + it('should complete an event', async () => { + const events = scheduler.queryEvents( + new Date('2024-01-01T00:00:00'), + new Date('2024-01-01T23:59:59') + ); + + expect(events[0].outcome).toBeUndefined(); + + await scheduler.completeEvent(events[0]); + + const updatedEvents = scheduler.queryEvents( + new Date('2024-01-01T00:00:00'), + new Date('2024-01-01T23:59:59') + ); + + expect(updatedEvents[0].outcome).toBeDefined(); + expect(updatedEvents[0].outcome?.completedAt).toBeInstanceOf(Date); + }); + + it('should uncomplete an event', async () => { + const events = scheduler.queryEvents( + new Date('2024-01-01T00:00:00'), + new Date('2024-01-01T23:59:59') + ); + + await scheduler.completeEvent(events[0]); + + let updatedEvents = scheduler.queryEvents( + new Date('2024-01-01T00:00:00'), + new Date('2024-01-01T23:59:59') + ); + + expect(updatedEvents[0].outcome).toBeDefined(); + + await scheduler.uncompleteEvent(updatedEvents[0]); + + updatedEvents = scheduler.queryEvents( + new Date('2024-01-01T00:00:00'), + new Date('2024-01-01T23:59:59') + ); + + expect(updatedEvents[0].outcome).toBeUndefined(); + }); + }); + + describe('State Management', () => { + it('should persist state to AsyncStorage', async () => { + await scheduler.createOrUpdateTask({ + id: 'persist-task', + title: 'Persist Task', + instructions: 'Test persistence', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { type: 'daily', hour: 9, minute: 0 }, + }, + completionPolicy: { type: 'anytime' }, + }); + + expect(AsyncStorage.setItem).toHaveBeenCalled(); + }); + + it('should notify listeners on state change', async () => { + const listener = jest.fn(); + scheduler.subscribe(listener); + + await scheduler.createOrUpdateTask({ + id: 'notify-task', + title: 'Notify Task', + instructions: 'Test notification', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { type: 'daily', hour: 9, minute: 0 }, + }, + completionPolicy: { type: 'anytime' }, + }); + + expect(listener).toHaveBeenCalled(); + }); + + it('should unsubscribe listeners', async () => { + const listener = jest.fn(); + const unsubscribe = scheduler.subscribe(listener); + + unsubscribe(); + + await scheduler.createOrUpdateTask({ + id: 'unsubscribe-task', + title: 'Unsubscribe Task', + instructions: 'Test unsubscribe', + category: 'task', + schedule: { + startDate: new Date('2024-01-01'), + recurrence: { type: 'daily', hour: 9, minute: 0 }, + }, + completionPolicy: { type: 'anytime' }, + }); + + expect(listener).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/homeflow/packages/scheduler/__tests__/utils.test.ts b/homeflow/packages/scheduler/__tests__/utils.test.ts new file mode 100644 index 0000000..9684053 --- /dev/null +++ b/homeflow/packages/scheduler/__tests__/utils.test.ts @@ -0,0 +1,189 @@ +/** + * Tests for utility functions + */ + +import { calculateOccurrences, isAllowedToComplete } from '../src/utils/calculations'; +import { getDateLabel, getRelativeDateLabel, formatTime } from '../src/utils/formatting'; +import { Task, Event, Schedule } from '../src/types'; + +describe('Utility Functions', () => { + describe('calculateOccurrences', () => { + it('should calculate daily recurrences', () => { + const schedule: Schedule = { + startDate: new Date('2024-01-01'), + recurrence: { + type: 'daily', + hour: 9, + minute: 0, + }, + }; + + const startDate = new Date('2024-01-01T00:00:00'); + const endDate = new Date('2024-01-03T23:59:59'); + + const occurrences = calculateOccurrences(schedule, startDate, endDate); + + expect(occurrences.length).toBe(3); + expect(occurrences[0].scheduledDate.getHours()).toBe(9); + expect(occurrences[0].scheduledDate.getMinutes()).toBe(0); + }); + + it('should calculate weekly recurrences', () => { + const schedule: Schedule = { + startDate: new Date('2024-01-01'), + recurrence: { + type: 'weekly', + weekday: 1, // Monday + hour: 10, + minute: 30, + }, + }; + + const startDate = new Date('2024-01-01T00:00:00'); + const endDate = new Date('2024-01-31T23:59:59'); + + const occurrences = calculateOccurrences(schedule, startDate, endDate); + + // Should have all Mondays in January 2024 + expect(occurrences.length).toBeGreaterThan(0); + occurrences.forEach(occ => { + expect(occ.scheduledDate.getDay()).toBe(1); // Monday + expect(occ.scheduledDate.getHours()).toBe(10); + expect(occ.scheduledDate.getMinutes()).toBe(30); + }); + }); + + it('should calculate one-time occurrences', () => { + const specificDate = new Date('2024-06-15T14:30:00'); + const schedule: Schedule = { + startDate: new Date('2024-01-01'), + recurrence: { + type: 'once', + date: specificDate, + }, + }; + + const startDate = new Date('2024-01-01T00:00:00'); + const endDate = new Date('2024-12-31T23:59:59'); + + const occurrences = calculateOccurrences(schedule, startDate, endDate); + + expect(occurrences.length).toBe(1); + expect(occurrences[0].scheduledDate.getTime()).toBe(specificDate.getTime()); + }); + + it('should respect endDate on schedule', () => { + const schedule: Schedule = { + startDate: new Date('2024-01-01T00:00:00'), + endDate: new Date('2024-01-05T00:00:00'), + recurrence: { + type: 'daily', + hour: 9, + minute: 0, + }, + }; + + const startDate = new Date('2024-01-01T00:00:00'); + const endDate = new Date('2024-01-31T23:59:59'); + + const occurrences = calculateOccurrences(schedule, startDate, endDate); + + // Should have occurrences from Jan 1-4 (endDate is exclusive) + expect(occurrences.length).toBe(4); + expect(occurrences[0].scheduledDate.getDate()).toBe(1); + expect(occurrences[occurrences.length - 1].scheduledDate.getDate()).toBe(4); + }); + }); + + describe('isAllowedToComplete', () => { + it('should allow completion for "anytime" policy', () => { + const event: Event = { + task: { + id: 'test-task', + title: 'Test', + instructions: 'Test', + category: 'task', + schedule: { + startDate: new Date(), + recurrence: { type: 'daily', hour: 9, minute: 0 }, + }, + completionPolicy: { type: 'anytime' }, + createdAt: new Date(), + }, + occurrence: { + scheduledDate: new Date('2024-01-01T09:00:00'), + index: 0, + }, + }; + + expect(isAllowedToComplete(event)).toBe(true); + }); + + it('should enforce window completion policy', () => { + const scheduledTime = new Date(); + scheduledTime.setHours(scheduledTime.getHours() - 5); // 5 hours ago + + const event: Event = { + task: { + id: 'test-task', + title: 'Test', + instructions: 'Test', + category: 'task', + schedule: { + startDate: new Date(), + recurrence: { type: 'daily', hour: 9, minute: 0 }, + }, + completionPolicy: { + type: 'window', + start: 0, + end: 180, // 3 hours after + }, + createdAt: new Date(), + }, + occurrence: { + scheduledDate: scheduledTime, + index: 0, + }, + }; + + // More than 3 hours past, should not allow + expect(isAllowedToComplete(event)).toBe(false); + }); + }); + + describe('Formatting Functions', () => { + it('should format date label for today', () => { + const today = new Date(); + const label = getDateLabel(today); + expect(label).toBe('Today'); + }); + + it('should format date label for other dates', () => { + const date = new Date(2024, 5, 15, 12, 0, 0); // June 15, 2024 at noon + const label = getDateLabel(date); + // Just check that it contains the date parts, not the specific day name (timezone-dependent) + expect(label).toMatch(/June/); + expect(label).toMatch(/15/); + }); + + it('should format relative date labels', () => { + const today = new Date(); + expect(getRelativeDateLabel(today)).toBe('Today'); + + const tomorrow = new Date(today); + tomorrow.setDate(tomorrow.getDate() + 1); + expect(getRelativeDateLabel(tomorrow)).toBe('Tomorrow'); + + const yesterday = new Date(today); + yesterday.setDate(yesterday.getDate() - 1); + expect(getRelativeDateLabel(yesterday)).toBe('Yesterday'); + }); + + it('should format time correctly', () => { + const date = new Date('2024-01-01T14:30:00'); + const time = formatTime(date); + expect(time).toMatch(/2:30/); + expect(time).toMatch(/PM/); + }); + }); +}); diff --git a/homeflow/packages/scheduler/babel.config.js b/homeflow/packages/scheduler/babel.config.js new file mode 100644 index 0000000..14cd8e2 --- /dev/null +++ b/homeflow/packages/scheduler/babel.config.js @@ -0,0 +1,6 @@ +module.exports = { + presets: [ + 'module:@react-native/babel-preset', + ['@babel/preset-typescript', { allowDeclareFields: true }], + ], +}; diff --git a/homeflow/packages/scheduler/jest.setup.js b/homeflow/packages/scheduler/jest.setup.js new file mode 100644 index 0000000..fd6cf3c --- /dev/null +++ b/homeflow/packages/scheduler/jest.setup.js @@ -0,0 +1,15 @@ +// Mock AsyncStorage +jest.mock('@react-native-async-storage/async-storage', () => ({ + setItem: jest.fn(() => Promise.resolve()), + getItem: jest.fn(() => Promise.resolve(null)), + removeItem: jest.fn(() => Promise.resolve()), + clear: jest.fn(() => Promise.resolve()), + getAllKeys: jest.fn(() => Promise.resolve([])), +})); + +// Silence console warnings in tests +global.console = { + ...console, + warn: jest.fn(), + error: jest.fn(), +}; diff --git a/homeflow/packages/scheduler/package.json b/homeflow/packages/scheduler/package.json new file mode 100644 index 0000000..6ee66f2 --- /dev/null +++ b/homeflow/packages/scheduler/package.json @@ -0,0 +1,81 @@ +{ + "name": "@spezivibe/scheduler", + "version": "1.0.0", + "description": "Scheduler module for React Native applications - local storage only (based on Stanford Spezi SpeziScheduler)", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist", + "README.md", + "EXAMPLES.md" + ], + "scripts": { + "build": "tsc", + "clean": "rm -rf dist *.tsbuildinfo", + "lint": "eslint src", + "typecheck": "tsc --noEmit", + "test": "jest", + "test:watch": "jest --watch", + "test:coverage": "jest --coverage", + "prepublishOnly": "npm run clean && npm run build && npm run test" + }, + "keywords": [ + "react-native", + "scheduler", + "tasks", + "events", + "spezi", + "recurrence", + "schedule", + "appointments", + "reminders" + ], + "author": "SpeziVibe", + "license": "MIT", + "peerDependencies": { + "@react-native-async-storage/async-storage": ">=1.0.0", + "react": ">=18.0.0", + "react-native": ">=0.70.0" + }, + "devDependencies": { + "@react-native-async-storage/async-storage": "^2.2.0", + "@babel/preset-env": "^7.28.5", + "@babel/preset-flow": "^7.27.1", + "@babel/preset-react": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@react-native/babel-preset": "^0.81.5", + "@react-native/metro-config": "^0.82.1", + "@testing-library/react-native": "^12.9.0", + "@types/jest": "^29.5.14", + "@types/react": "~19.1.17", + "@types/react-native": "^0.73.0", + "@types/react-test-renderer": "^18.0.7", + "babel-jest": "^29.7.0", + "jest": "^29.7.0", + "react": "^19.1.0", + "react-native": "^0.81.5", + "react-test-renderer": "19.1.0", + "typescript": "~5.9.2" + }, + "jest": { + "preset": "react-native", + "setupFiles": [ + "./jest.setup.js" + ], + "transformIgnorePatterns": [ + "node_modules/(?!(react-native|@react-native|@react-navigation|@testing-library)/)" + ], + "moduleFileExtensions": [ + "ts", + "tsx", + "js", + "jsx" + ], + "testMatch": [ + "**/__tests__/**/*.test.ts?(x)" + ] + }, + "dependencies": { + "@blazejkustra/react-native-alert": "^1.0.0" + } +} diff --git a/homeflow/packages/scheduler/src/hooks/index.ts b/homeflow/packages/scheduler/src/hooks/index.ts new file mode 100644 index 0000000..678f9d6 --- /dev/null +++ b/homeflow/packages/scheduler/src/hooks/index.ts @@ -0,0 +1,9 @@ +/** + * Hook exports + */ + +export { useScheduler } from './useScheduler'; +export type { UseSchedulerReturn } from './useScheduler'; + +export { useScheduleScreen } from './useScheduleScreen'; +export type { UseScheduleScreenReturn, UseScheduleScreenOptions } from './useScheduleScreen'; diff --git a/homeflow/packages/scheduler/src/hooks/useScheduleScreen.ts b/homeflow/packages/scheduler/src/hooks/useScheduleScreen.ts new file mode 100644 index 0000000..ece2e09 --- /dev/null +++ b/homeflow/packages/scheduler/src/hooks/useScheduleScreen.ts @@ -0,0 +1,124 @@ +/** + * useScheduleScreen - Hook for managing schedule screen state and interactions + * + * Provides reusable logic for date selection, event loading, and event interactions + * that are common across schedule screen implementations. + */ + +import { useEffect, useState, useCallback, useMemo } from 'react'; +import { Event } from '../types'; +import { Scheduler } from '../services/Scheduler'; + +export interface UseScheduleScreenOptions { + /** Scheduler instance (null during initialization) */ + scheduler: Scheduler | null; + /** Tasks array (used as dependency for reloading events) */ + tasks: any[]; + /** Optional callback when an event needs custom handling (e.g., opening questionnaire) */ + onEventAction?: (event: Event) => Promise | void; + /** Initial selected date (defaults to today) */ + initialDate?: Date; +} + +export interface UseScheduleScreenReturn { + /** Currently selected date */ + selectedDate: Date; + /** Set the selected date */ + setSelectedDate: (date: Date) => void; + /** Events for the selected date */ + events: Event[]; + /** Reload events from scheduler */ + refreshEvents: () => void; + /** Get completion count for selected date */ + completedCount: number; + /** Total event count for selected date */ + totalCount: number; +} + +/** + * Hook for managing schedule screen state + * + * @example + * ```tsx + * function ScheduleScreen() { + * const { scheduler, tasks } = useScheduler(); + * const { + * selectedDate, + * setSelectedDate, + * events, + * completedCount, + * totalCount, + * } = useScheduleScreen({ scheduler, tasks }); + * + * return ( + * <> + * + * {completedCount} of {totalCount} completed + * + * + * ); + * } + * ``` + */ +export function useScheduleScreen({ + scheduler, + tasks, + onEventAction, + initialDate, +}: UseScheduleScreenOptions): UseScheduleScreenReturn { + const [selectedDate, setSelectedDate] = useState(() => { + if (initialDate) return initialDate; + const today = new Date(); + today.setHours(0, 0, 0, 0); + return today; + }); + + const [events, setEvents] = useState([]); + const [refreshKey, setRefreshKey] = useState(0); + + // Load events for selected date + const loadEvents = useCallback(() => { + if (!scheduler) { + setEvents([]); + return; + } + + const startOfDay = new Date(selectedDate); + startOfDay.setHours(0, 0, 0, 0); + const endOfDay = new Date(selectedDate); + endOfDay.setHours(23, 59, 59, 999); + + const queriedEvents = scheduler.queryEvents(startOfDay, endOfDay); + setEvents(queriedEvents); + }, [scheduler, selectedDate]); + + // Reload events when dependencies change + useEffect(() => { + loadEvents(); + }, [loadEvents, tasks, refreshKey]); + + // Force refresh events + const refreshEvents = useCallback(() => { + setRefreshKey((k) => k + 1); + }, []); + + // Calculate completion stats - memoized for performance + const completedCount = useMemo( + () => events.filter((e) => e.outcome).length, + [events] + ); + + const totalCount = events.length; + + return { + selectedDate, + setSelectedDate, + events, + refreshEvents, + completedCount, + totalCount, + }; +} diff --git a/homeflow/packages/scheduler/src/hooks/useScheduler.ts b/homeflow/packages/scheduler/src/hooks/useScheduler.ts new file mode 100644 index 0000000..d4b3881 --- /dev/null +++ b/homeflow/packages/scheduler/src/hooks/useScheduler.ts @@ -0,0 +1,75 @@ +/** + * useScheduler hook + * Provides access to the scheduler instance from context + */ + +import React, { useContext, useEffect, useState } from 'react'; +import { SchedulerContext, SchedulerContextValue } from '../providers'; +import { Task } from '../types'; + +export interface UseSchedulerReturn { + /** Scheduler instance (null if not initialized) */ + scheduler: SchedulerContextValue['scheduler']; + /** Whether the scheduler is loading */ + isLoading: boolean; + /** All tasks (reactive to changes) */ + tasks: Task[]; + /** Force refresh tasks from scheduler */ + refreshTasks: () => void; +} + +/** + * Hook to access the scheduler from context + * + * @example + * ```tsx + * function MyComponent() { + * const { scheduler, tasks, isLoading } = useScheduler(); + * + * if (isLoading) return ; + * + * return ( + * + * {tasks.map(task => )} + * + * ); + * } + * ``` + */ +export function useScheduler(): UseSchedulerReturn { + const context = useContext(SchedulerContext); + + if (!context) { + throw new Error('useScheduler must be used within a SchedulerProvider'); + } + + const { scheduler, isLoading } = context; + const [tasks, setTasks] = useState([]); + + const refreshTasks = React.useCallback(() => { + if (scheduler) { + setTasks(scheduler.getTasks()); + } + }, [scheduler]); + + useEffect(() => { + if (!scheduler) return; + + // Initial load + refreshTasks(); + + // Subscribe to changes + const unsubscribe = scheduler.subscribe(() => { + refreshTasks(); + }); + + return unsubscribe; + }, [scheduler, refreshTasks]); + + return { + scheduler, + isLoading, + tasks, + refreshTasks, + }; +} diff --git a/homeflow/packages/scheduler/src/index.ts b/homeflow/packages/scheduler/src/index.ts new file mode 100644 index 0000000..a4821fe --- /dev/null +++ b/homeflow/packages/scheduler/src/index.ts @@ -0,0 +1,37 @@ +/** + * @spezivibe/scheduler + * + * Standalone scheduler module for React Native applications + * Based on Stanford Spezi SpeziScheduler + * + * This package handles task scheduling and local storage only. + * Backend synchronization should be handled by your app's orchestrator/Standard. + */ + +// Types +export * from './types'; + +// Services +export { Scheduler } from './services'; + +// Providers and Hooks +export { SchedulerProvider, SchedulerContext } from './providers'; +export type { SchedulerContextValue, SchedulerProviderProps } from './providers'; +export { useScheduler, useScheduleScreen } from './hooks'; +export type { UseSchedulerReturn, UseScheduleScreenReturn, UseScheduleScreenOptions } from './hooks'; + +// Utilities +export { + calculateOccurrences, + isAllowedToComplete, + groupEventsByDate, + getRelativeDateLabel, + getDateLabel, + formatTime, +} from './utils'; + +// UI Components +export * from './ui'; + +// Sample tasks (optional) +export { createSampleTasks } from './sample-tasks'; diff --git a/homeflow/packages/scheduler/src/providers/SchedulerProvider.tsx b/homeflow/packages/scheduler/src/providers/SchedulerProvider.tsx new file mode 100644 index 0000000..a92aeae --- /dev/null +++ b/homeflow/packages/scheduler/src/providers/SchedulerProvider.tsx @@ -0,0 +1,74 @@ +/** + * SchedulerProvider - React Context provider for the Scheduler + */ + +import React, { createContext, useEffect, useState, useMemo } from 'react'; +import { Scheduler } from '../services'; + +export interface SchedulerContextValue { + /** Scheduler instance */ + scheduler: Scheduler | null; + /** Whether the scheduler is loading */ + isLoading: boolean; +} + +export interface SchedulerProviderProps { + /** Storage key for AsyncStorage (default: '@scheduler_state') */ + storageKey?: string; + /** Child components */ + children: React.ReactNode; +} + +export const SchedulerContext = createContext(undefined); + +/** + * SchedulerProvider component + * + * Initializes the scheduler with local AsyncStorage and provides it via context. + * + * Following the Spezi pattern, this provider is backend-agnostic. Task initialization + * and backend synchronization should be handled by the app's orchestration layer. + */ +export function SchedulerProvider({ + storageKey = '@scheduler_state', + children +}: SchedulerProviderProps) { + const scheduler = useMemo(() => new Scheduler(storageKey), [storageKey]); + const [isLoading, setIsLoading] = useState(true); + + useEffect(() => { + let cancelled = false; + + scheduler + .initialize() + .then(() => { + if (!cancelled) { + setIsLoading(false); + } + }) + .catch((error) => { + if (!cancelled) { + console.error('[SchedulerProvider] Failed to initialize:', error); + setIsLoading(false); + } + }); + + return () => { + cancelled = true; + }; + }, [scheduler]); + + const value = useMemo( + () => ({ + scheduler, + isLoading, + }), + [scheduler, isLoading] + ); + + return ( + + {children} + + ); +} diff --git a/homeflow/packages/scheduler/src/providers/index.ts b/homeflow/packages/scheduler/src/providers/index.ts new file mode 100644 index 0000000..b7ce838 --- /dev/null +++ b/homeflow/packages/scheduler/src/providers/index.ts @@ -0,0 +1,6 @@ +/** + * Provider exports + */ + +export { SchedulerProvider, SchedulerContext } from './SchedulerProvider'; +export type { SchedulerContextValue, SchedulerProviderProps } from './SchedulerProvider'; diff --git a/homeflow/packages/scheduler/src/sample-tasks.ts b/homeflow/packages/scheduler/src/sample-tasks.ts new file mode 100644 index 0000000..fc91eea --- /dev/null +++ b/homeflow/packages/scheduler/src/sample-tasks.ts @@ -0,0 +1,268 @@ +import { Task } from './types'; + +/** + * Sample tasks for demonstration - varied schedule across the week + */ +export function createSampleTasks(): Omit[] { + const now = new Date(); + const today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); + + return [ + { + id: 'morning-wellness', + title: 'Morning Wellness Check', + instructions: 'Start your day with a quick wellness check-in.', + category: 'questionnaire', + questionnaireId: 'wellness-checkin', + schedule: { + startDate: today, + recurrence: { + type: 'daily', + hour: 8, + minute: 30, + }, + }, + completionPolicy: { + type: 'window', + start: 0, + end: 180, // 3 hours after + }, + }, + { + id: 'monday-goals', + title: 'Weekly Goals Review', + instructions: 'Review and set your goals for the week ahead.', + category: 'task', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 1, // Monday + hour: 9, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'midweek-checkin', + title: 'Mid-Week Progress Check', + instructions: 'Assess your progress and adjust your approach if needed.', + category: 'questionnaire', + questionnaireId: 'wellness-checkin', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 3, // Wednesday + hour: 14, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'cardio-monday', + title: 'Cardio Workout', + instructions: 'Complete 30 minutes of cardiovascular exercise.', + category: 'measurement', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 1, // Monday + hour: 17, + minute: 30, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'mindfulness-tuesday', + title: 'Mindfulness Meditation', + instructions: 'Practice 10 minutes of mindfulness meditation.', + category: 'task', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 2, // Tuesday + hour: 12, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'strength-tuesday', + title: 'Strength Training', + instructions: 'Complete strength training exercises focusing on major muscle groups.', + category: 'measurement', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 2, // Tuesday + hour: 18, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'cardio-wednesday', + title: 'Cardio Workout', + instructions: 'Complete 30 minutes of cardiovascular exercise.', + category: 'measurement', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 3, // Wednesday + hour: 17, + minute: 30, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'mindfulness-thursday', + title: 'Mindfulness Meditation', + instructions: 'Practice 10 minutes of mindfulness meditation.', + category: 'task', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 4, // Thursday + hour: 12, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'strength-thursday', + title: 'Strength Training', + instructions: 'Complete strength training exercises focusing on major muscle groups.', + category: 'measurement', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 4, // Thursday + hour: 18, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'cardio-friday', + title: 'Cardio Workout', + instructions: 'Complete 30 minutes of cardiovascular exercise.', + category: 'measurement', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 5, // Friday + hour: 17, + minute: 30, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'friday-reflection', + title: 'Weekly Reflection', + instructions: 'Reflect on your achievements and challenges from this week.', + category: 'questionnaire', + questionnaireId: 'weekly-reflection', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 5, // Friday + hour: 19, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'weekend-planning', + title: 'Weekend Planning', + instructions: 'Plan activities and self-care for the weekend.', + category: 'task', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 5, // Friday + hour: 15, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'sunday-prep', + title: 'Week Preparation', + instructions: 'Prepare for the upcoming week: review calendar, meal prep, and organize.', + category: 'task', + schedule: { + startDate: today, + recurrence: { + type: 'weekly', + weekday: 0, // Sunday + hour: 16, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + { + id: 'evening-gratitude', + title: 'Evening Gratitude', + instructions: 'Reflect on the positive moments of your day.', + category: 'questionnaire', + questionnaireId: 'gratitude-reflection', + schedule: { + startDate: today, + recurrence: { + type: 'daily', + hour: 21, + minute: 0, + }, + }, + completionPolicy: { + type: 'anytime', + }, + }, + ]; +} diff --git a/homeflow/packages/scheduler/src/services/Scheduler.ts b/homeflow/packages/scheduler/src/services/Scheduler.ts new file mode 100644 index 0000000..9a03cf9 --- /dev/null +++ b/homeflow/packages/scheduler/src/services/Scheduler.ts @@ -0,0 +1,308 @@ +/** + * Main Scheduler class for managing tasks and events + * Based on Stanford Spezi SpeziScheduler + * + * This scheduler uses LOCAL STORAGE ONLY (AsyncStorage). + * Backend synchronization is handled by the app's orchestrator/Standard. + */ + +import AsyncStorage from '@react-native-async-storage/async-storage'; +import { + Task, + Event, + Outcome, + SchedulerState, + CompletionStats, + SerializedSchedulerState, + SerializedTask, + SerializedOutcome, +} from '../types'; +import { calculateOccurrences, isAllowedToComplete } from '../utils'; + +export class Scheduler { + private state: SchedulerState = { + tasks: [], + outcomes: [], + }; + + private storageKey: string; + private listeners: Set<() => void> = new Set(); + private initialized: boolean = false; + + constructor(storageKey: string = '@scheduler_state') { + this.storageKey = storageKey; + } + + /** + * Initialize the scheduler and load saved state + */ + async initialize(): Promise { + if (this.initialized) { + return; + } + + await this.loadState(); + this.initialized = true; + } + + /** + * Load state from AsyncStorage + */ + private async loadState(): Promise { + try { + const data = await AsyncStorage.getItem(this.storageKey); + if (data) { + const parsed: SerializedSchedulerState = JSON.parse(data); + // Deserialize dates + this.state = { + tasks: parsed.tasks.map((t: SerializedTask): Task => ({ + ...t, + schedule: { + ...t.schedule, + startDate: new Date(t.schedule.startDate), + endDate: t.schedule.endDate ? new Date(t.schedule.endDate) : undefined, + recurrence: + t.schedule.recurrence.type === 'once' + ? { ...t.schedule.recurrence, date: new Date(t.schedule.recurrence.date) } + : t.schedule.recurrence, + }, + createdAt: new Date(t.createdAt), + })), + outcomes: parsed.outcomes.map((o: SerializedOutcome): Outcome => ({ + ...o, + completedAt: new Date(o.completedAt), + })), + }; + } + } catch (error) { + console.error('[Scheduler] Failed to load state:', error); + } + } + + /** + * Save state to AsyncStorage + */ + private async saveState(): Promise { + try { + await AsyncStorage.setItem(this.storageKey, JSON.stringify(this.state)); + this.notifyListeners(); + } catch (error) { + console.error('[Scheduler] Failed to save state:', error); + throw error; + } + } + + /** + * Subscribe to state changes + */ + subscribe(listener: () => void): () => void { + this.listeners.add(listener); + return () => { + this.listeners.delete(listener); + }; + } + + /** + * Notify all listeners of state changes + */ + private notifyListeners(): void { + this.listeners.forEach((listener) => { + try { + listener(); + } catch (error) { + console.error('[Scheduler] Error in listener:', error); + } + }); + } + + /** + * Get the current state (for advanced use cases or backend sync) + */ + getState(): SchedulerState { + return { + tasks: [...this.state.tasks], + outcomes: [...this.state.outcomes], + }; + } + + /** + * Create or update a task + */ + async createOrUpdateTask(task: Omit): Promise { + const existingIndex = this.state.tasks.findIndex((t) => t.id === task.id); + const now = new Date(); + + const newTask: Task = { + ...task, + createdAt: existingIndex >= 0 ? this.state.tasks[existingIndex].createdAt : now, + }; + + if (existingIndex >= 0) { + this.state.tasks[existingIndex] = newTask; + } else { + this.state.tasks.push(newTask); + } + + await this.saveState(); + return newTask; + } + + /** + * Get all tasks + */ + getTasks(): Task[] { + return [...this.state.tasks]; + } + + /** + * Get a specific task by ID + */ + getTask(id: string): Task | undefined { + return this.state.tasks.find((task) => task.id === id); + } + + /** + * Delete a task and its outcomes + */ + async deleteTask(id: string): Promise { + this.state.tasks = this.state.tasks.filter((task) => task.id !== id); + // Also remove outcomes for this task + this.state.outcomes = this.state.outcomes.filter((outcome) => !outcome.id.startsWith(id)); + await this.saveState(); + } + + /** + * Clear all tasks and outcomes (useful for resetting) + */ + async clearAll(): Promise { + this.state.tasks = []; + this.state.outcomes = []; + await this.saveState(); + } + + /** + * Query events for tasks within a date range + */ + queryEvents(startDate: Date, endDate: Date): Event[] { + const events: Event[] = []; + + for (const task of this.state.tasks) { + const occurrences = calculateOccurrences(task.schedule, startDate, endDate); + + for (const occurrence of occurrences) { + const outcomeId = this.getOutcomeId(task.id, occurrence); + const outcome = this.state.outcomes.find((o) => o.id === outcomeId); + + events.push({ + task, + occurrence, + outcome, + }); + } + } + + // Sort by scheduled date + events.sort((a, b) => a.occurrence.scheduledDate.getTime() - b.occurrence.scheduledDate.getTime()); + + return events; + } + + /** + * Complete an event + */ + async completeEvent( + event: Event, + data?: Record, + ignoreCompletionPolicy: boolean = false + ): Promise { + // Check if already completed + if (event.outcome) { + return event.outcome; + } + + // Check completion policy + if (!ignoreCompletionPolicy && !isAllowedToComplete(event)) { + throw new Error('Event cannot be completed at this time due to completion policy'); + } + + const outcome: Outcome = { + id: this.getOutcomeId(event.task.id, event.occurrence), + completedAt: new Date(), + data, + }; + + this.state.outcomes.push(outcome); + await this.saveState(); + + return outcome; + } + + /** + * Uncomplete an event (remove its outcome) + */ + async uncompleteEvent(event: Event): Promise { + if (!event.outcome) { + return; + } + + this.state.outcomes = this.state.outcomes.filter((o) => o.id !== event.outcome!.id); + await this.saveState(); + } + + /** + * Get a specific event by task ID and occurrence index + */ + getEventById(taskId: string, occurrenceIndex: number): Event | undefined { + const task = this.getTask(taskId); + if (!task) return undefined; + + // Get all occurrences for this task + const now = new Date(); + const startDate = new Date(task.schedule.startDate); + const endDate = task.schedule.endDate || new Date(now.getFullYear() + 1, 11, 31); + const occurrences = calculateOccurrences(task.schedule, startDate, endDate); + + const occurrence = occurrences.find((occ) => occ.index === occurrenceIndex); + if (!occurrence) return undefined; + + const outcomeId = this.getOutcomeId(taskId, occurrence); + const outcome = this.state.outcomes.find((o) => o.id === outcomeId); + + return { + task, + occurrence, + outcome, + }; + } + + /** + * Get all outcomes + */ + getOutcomes(): Outcome[] { + return [...this.state.outcomes]; + } + + /** + * Get completion statistics for a date range + */ + getCompletionStats(startDate: Date, endDate: Date): CompletionStats { + const events = this.queryEvents(startDate, endDate); + const completed = events.filter((e) => e.outcome).length; + const total = events.length; + const pending = total - completed; + + return { + total, + completed, + pending, + completionRate: total > 0 ? (completed / total) * 100 : 0, + }; + } + + /** + * Generate a unique outcome ID + */ + private getOutcomeId(taskId: string, occurrence: { scheduledDate: Date; index: number }): string { + return `${taskId}-${occurrence.index}-${occurrence.scheduledDate.getTime()}`; + } +} diff --git a/homeflow/packages/scheduler/src/services/index.ts b/homeflow/packages/scheduler/src/services/index.ts new file mode 100644 index 0000000..8dcf94e --- /dev/null +++ b/homeflow/packages/scheduler/src/services/index.ts @@ -0,0 +1,5 @@ +/** + * Service exports + */ + +export { Scheduler } from './Scheduler'; diff --git a/homeflow/packages/scheduler/src/types.ts b/homeflow/packages/scheduler/src/types.ts new file mode 100644 index 0000000..fbd6dfa --- /dev/null +++ b/homeflow/packages/scheduler/src/types.ts @@ -0,0 +1,170 @@ +/** + * Scheduler Module Types + * Based on Stanford Spezi SpeziScheduler + * + * This module provides a standalone scheduling system with local storage only. + * Backend synchronization is handled by the app's Standard/orchestrator. + */ + +/** + * Recurrence rules for scheduled tasks + */ +export type RecurrenceRule = + | { type: 'daily'; hour: number; minute: number } + | { type: 'weekly'; weekday: number; hour: number; minute: number } // 0 = Sunday, 6 = Saturday + | { type: 'monthly'; day: number; hour: number; minute: number } // 1-31 + | { type: 'once'; date: Date }; + +/** + * Schedule definition for a task + */ +export interface Schedule { + /** When the schedule starts */ + startDate: Date; + /** When the schedule ends (optional - no end if omitted) */ + endDate?: Date; + /** Recurrence pattern */ + recurrence: RecurrenceRule; +} + +/** + * Task categories for classification + */ +export type TaskCategory = 'questionnaire' | 'task' | 'reminder' | 'measurement'; + +/** + * Policy controlling when a task can be completed + */ +export type AllowedCompletionPolicy = + | { type: 'anytime' } // Can be completed at any time + | { type: 'window'; start: number; end: number }; // minutes before/after scheduled time + +/** + * A scheduled task + */ +export interface Task { + /** Unique identifier */ + id: string; + /** Display title */ + title: string; + /** Detailed instructions */ + instructions: string; + /** Task category for filtering/grouping */ + category: TaskCategory; + /** Schedule definition */ + schedule: Schedule; + /** Completion policy */ + completionPolicy: AllowedCompletionPolicy; + /** Link to questionnaire ID for questionnaire-type tasks */ + questionnaireId?: string; + /** When the task was created */ + createdAt: Date; +} + +/** + * A specific occurrence of a recurring task + */ +export interface Occurrence { + /** When this occurrence is scheduled */ + scheduledDate: Date; + /** Index of this occurrence (0-based) */ + index: number; +} + +/** + * The result of completing a task occurrence + */ +export interface Outcome { + /** Unique identifier for this outcome */ + id: string; + /** When the task was completed */ + completedAt: Date; + /** Optional data associated with completion (e.g., questionnaire responses) */ + data?: Record; +} + +/** + * An event combines a task, its occurrence, and optional outcome + * This is the main data structure for UI display + */ +export interface Event { + /** The task definition */ + task: Task; + /** The specific occurrence */ + occurrence: Occurrence; + /** The outcome if completed */ + outcome?: Outcome; +} + +/** + * Internal scheduler state + */ +export interface SchedulerState { + /** All tasks */ + tasks: Task[]; + /** All outcomes */ + outcomes: Outcome[]; +} + +/** + * Serialized recurrence rule (dates as ISO strings) + */ +export type SerializedRecurrenceRule = + | { type: 'daily'; hour: number; minute: number } + | { type: 'weekly'; weekday: number; hour: number; minute: number } + | { type: 'monthly'; day: number; hour: number; minute: number } + | { type: 'once'; date: string }; + +/** + * Serialized schedule (dates as ISO strings) + */ +export interface SerializedSchedule { + startDate: string; + endDate?: string; + recurrence: SerializedRecurrenceRule; +} + +/** + * Serialized task (dates as ISO strings for JSON storage) + */ +export interface SerializedTask { + id: string; + title: string; + instructions: string; + category: TaskCategory; + schedule: SerializedSchedule; + completionPolicy: AllowedCompletionPolicy; + questionnaireId?: string; + createdAt: string; +} + +/** + * Serialized outcome (dates as ISO strings) + */ +export interface SerializedOutcome { + id: string; + completedAt: string; + data?: Record; +} + +/** + * Serialized scheduler state for JSON storage + */ +export interface SerializedSchedulerState { + tasks: SerializedTask[]; + outcomes: SerializedOutcome[]; +} + +/** + * Statistics for task completion + */ +export interface CompletionStats { + /** Total number of events in range */ + total: number; + /** Number of completed events */ + completed: number; + /** Number of pending events */ + pending: number; + /** Completion rate as percentage (0-100) */ + completionRate: number; +} diff --git a/homeflow/packages/scheduler/src/ui/components/CalendarStrip.tsx b/homeflow/packages/scheduler/src/ui/components/CalendarStrip.tsx new file mode 100644 index 0000000..6ef4570 --- /dev/null +++ b/homeflow/packages/scheduler/src/ui/components/CalendarStrip.tsx @@ -0,0 +1,155 @@ +import React, { useMemo } from 'react'; +import { ScrollView, View, Pressable, StyleSheet, Text, Platform } from 'react-native'; +import { SchedulerUITheme, defaultLightTheme } from '../theme'; + +interface CalendarDay { + date: Date; + dayOfWeek: string; + dayOfMonth: number; + isToday: boolean; +} + +interface CalendarStripProps { + selectedDate: Date; + onSelectDate: (date: Date) => void; + theme?: SchedulerUITheme; + /** Number of days to show (default: 30) */ + daysCount?: number; + /** Starting offset in days from today (default: -1, starts from yesterday) */ + startOffset?: number; +} + +function generateDays(startDate: Date, count: number): CalendarDay[] { + const days: CalendarDay[] = []; + const today = new Date(); + today.setHours(0, 0, 0, 0); + + for (let i = 0; i < count; i++) { + const date = new Date(startDate); + date.setDate(startDate.getDate() + i); + date.setHours(0, 0, 0, 0); + + const dayOfWeek = date.toLocaleDateString('en-US', { weekday: 'short' }); + const dayOfMonth = date.getDate(); + const isToday = date.getTime() === today.getTime(); + + days.push({ date, dayOfWeek, dayOfMonth, isToday }); + } + + return days; +} + +export const CalendarStrip = React.memo(function CalendarStrip({ + selectedDate, + onSelectDate, + theme = defaultLightTheme, + daysCount = 30, + startOffset = -1, +}: CalendarStripProps) { + // Generate days starting from the specified offset - memoized for performance + const startDate = useMemo(() => { + const date = new Date(); + date.setDate(date.getDate() + startOffset); + date.setHours(0, 0, 0, 0); + return date; + }, [startOffset]); + + const days = useMemo( + () => generateDays(startDate, daysCount), + [startDate, daysCount] + ); + + const selectedDateKey = selectedDate.toDateString(); + + + return ( + + + {days.map((day, index) => { + const isSelected = day.date.toDateString() === selectedDateKey; + + return ( + [ + styles.dayContainer, + { + backgroundColor: isSelected + ? theme.colors.primary + : pressed + ? theme.colors.cardPressed + : theme.colors.cardBackground, + borderColor: day.isToday + ? theme.colors.primary + : theme.colors.border, + }, + ]} + onPress={() => onSelectDate(day.date)}> + + {day.dayOfWeek} + + + {day.dayOfMonth} + + + ); + })} + + + ); +}); + +const styles = StyleSheet.create({ + container: { + borderBottomWidth: 1, + borderBottomColor: '#333', + }, + scrollContent: { + paddingHorizontal: 16, + paddingVertical: 12, + gap: 8, + }, + dayContainer: { + width: 56, + height: 70, + borderRadius: 12, + borderWidth: 2, + justifyContent: 'center', + alignItems: 'center', + gap: 4, + }, + dayOfWeek: { + fontSize: 12, + fontWeight: '600', + textTransform: 'uppercase', + }, + dayOfMonth: { + fontSize: 20, + fontWeight: '700', + }, +}); diff --git a/homeflow/packages/scheduler/src/ui/components/CompletionBadge.tsx b/homeflow/packages/scheduler/src/ui/components/CompletionBadge.tsx new file mode 100644 index 0000000..8ba2b07 --- /dev/null +++ b/homeflow/packages/scheduler/src/ui/components/CompletionBadge.tsx @@ -0,0 +1,65 @@ +/** + * CompletionBadge - Status indicator for events + */ + +import React from 'react'; +import { View, Text, StyleSheet, ViewStyle, TextStyle } from 'react-native'; +import { Event } from '../../types'; +import { SchedulerUITheme, defaultLightTheme } from '../theme'; + +export interface CompletionBadgeProps { + event: Event; + theme?: SchedulerUITheme; + style?: ViewStyle; + textStyle?: TextStyle; +} + +export const CompletionBadge = React.memo(function CompletionBadge({ + event, + theme = defaultLightTheme, + style, + textStyle, +}: CompletionBadgeProps) { + const isCompleted = !!event.outcome; + + return ( + + + {isCompleted ? 'Completed' : 'Pending'} + + + ); +}); + +const styles = StyleSheet.create({ + badge: { + paddingHorizontal: 12, + paddingVertical: 4, + borderRadius: 12, + }, + text: { + fontSize: 12, + fontWeight: '600', + }, +}); diff --git a/homeflow/packages/scheduler/src/ui/components/EventCard.tsx b/homeflow/packages/scheduler/src/ui/components/EventCard.tsx new file mode 100644 index 0000000..26a0c49 --- /dev/null +++ b/homeflow/packages/scheduler/src/ui/components/EventCard.tsx @@ -0,0 +1,168 @@ +/** + * EventCard - Card display for a scheduled event + */ + +import React, { useCallback } from 'react'; +import { Pressable, StyleSheet, Text, View, ViewStyle } from 'react-native'; +import { Event } from '../../types'; +import { formatTime, isAllowedToComplete } from '../../utils'; +import { SchedulerUITheme, defaultLightTheme } from '../theme'; +import { CompletionBadge } from './CompletionBadge'; + +export interface EventCardProps { + event: Event; + onPress?: (event: Event) => void; + theme?: SchedulerUITheme; + style?: ViewStyle; + renderIcon?: (event: Event, isCompleted: boolean) => React.ReactNode; + renderTime?: (event: Event) => React.ReactNode; + showCompletionBadge?: boolean; +} + +export const EventCard = React.memo(function EventCard({ + event, + onPress, + theme = defaultLightTheme, + style, + renderIcon, + renderTime, + showCompletionBadge = true, +}: EventCardProps) { + const isCompleted = !!event.outcome; + const canComplete = isAllowedToComplete(event); + const isDisabled = !isCompleted && !canComplete; + + const handlePress = useCallback(() => { + onPress?.(event); + }, [onPress, event]); + + return ( + [ + styles.card, + { + backgroundColor: theme.colors.cardBackground, + borderColor: theme.colors.cardBorder, + opacity: pressed ? 0.7 : isDisabled ? theme.colors.disabledOpacity : 1, + }, + style, + ]}> + + {renderIcon ? ( + renderIcon(event, isCompleted) + ) : ( + + + {getCategoryIcon(event.task.category)} + + + )} + + + {event.task.title} + + + {event.task.instructions} + + + + + + {renderTime ? ( + renderTime(event) + ) : ( + + + {formatTime(event.occurrence.scheduledDate)} + + + )} + {showCompletionBadge && } + + + ); +}); + +function getCategoryIcon(category: string): string { + switch (category) { + case 'questionnaire': + return '📋'; + case 'task': + return '✓'; + case 'reminder': + return '🔔'; + case 'measurement': + return '❤️'; + default: + return '📅'; + } +} + +const styles = StyleSheet.create({ + card: { + borderRadius: 12, + borderWidth: 1, + padding: 16, + marginBottom: 12, + }, + header: { + flexDirection: 'row', + marginBottom: 12, + }, + iconContainer: { + width: 48, + height: 48, + borderRadius: 24, + alignItems: 'center', + justifyContent: 'center', + marginRight: 12, + }, + iconText: { + fontSize: 24, + }, + info: { + flex: 1, + }, + title: { + fontSize: 16, + fontWeight: '600', + marginBottom: 4, + }, + description: { + fontSize: 14, + }, + footer: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + timeContainer: { + flexDirection: 'row', + alignItems: 'center', + }, + time: { + fontSize: 14, + fontWeight: '600', + }, +}); diff --git a/homeflow/packages/scheduler/src/ui/components/EventList.tsx b/homeflow/packages/scheduler/src/ui/components/EventList.tsx new file mode 100644 index 0000000..77dcc96 --- /dev/null +++ b/homeflow/packages/scheduler/src/ui/components/EventList.tsx @@ -0,0 +1,102 @@ +/** + * EventList - Scrollable list of events with empty state + */ + +import React, { useMemo } from 'react'; +import { View, Text, ScrollView, StyleSheet, ViewStyle, ScrollViewProps } from 'react-native'; +import { Event } from '../../types'; +import { SchedulerUITheme, defaultLightTheme } from '../theme'; +import { EventCard, EventCardProps } from './EventCard'; + +export interface EventListProps { + events: Event[]; + onEventPress?: (event: Event) => void; + theme?: SchedulerUITheme; + style?: ViewStyle; + contentContainerStyle?: ViewStyle; + EmptyComponent?: React.ComponentType; + renderEvent?: (event: Event, index: number) => React.ReactNode; + eventCardProps?: Partial; + scrollViewProps?: Partial; +} + +export const EventList = React.memo(function EventList({ + events, + onEventPress, + theme = defaultLightTheme, + style, + contentContainerStyle, + EmptyComponent, + renderEvent, + eventCardProps, + scrollViewProps, +}: EventListProps) { + // Sort events by scheduled time - memoized for performance + const sortedEvents = useMemo( + () => [...events].sort( + (a, b) => a.occurrence.scheduledDate.getTime() - b.occurrence.scheduledDate.getTime() + ), + [events] + ); + + return ( + + {sortedEvents.length === 0 ? ( + EmptyComponent ? ( + + ) : ( + + + 📅 + + + No scheduled tasks for this day + + + ) + ) : ( + sortedEvents.map((event, index) => + renderEvent ? ( + + {renderEvent(event, index)} + + ) : ( + + ) + ) + )} + + ); +}); + +const styles = StyleSheet.create({ + scrollView: { + flex: 1, + }, + contentContainer: { + padding: 16, + }, + emptyState: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + paddingVertical: 60, + }, + emptyIcon: { + fontSize: 48, + marginBottom: 16, + }, + emptyText: { + fontSize: 16, + textAlign: 'center', + }, +}); diff --git a/homeflow/packages/scheduler/src/ui/components/ScheduleView.tsx b/homeflow/packages/scheduler/src/ui/components/ScheduleView.tsx new file mode 100644 index 0000000..1e56d23 --- /dev/null +++ b/homeflow/packages/scheduler/src/ui/components/ScheduleView.tsx @@ -0,0 +1,230 @@ +/** + * ScheduleView - Complete schedule screen component + * + * A ready-to-use schedule view that includes calendar, date info, and event list. + * Handles all event interactions internally with optional callbacks for customization. + */ + +import React, { useCallback, useEffect, useMemo, ReactNode } from 'react'; +import { View, StyleSheet, Text, ViewStyle } from 'react-native'; +import Alert from '@blazejkustra/react-native-alert'; +import { Event } from '../../types'; +import { useScheduler } from '../../hooks/useScheduler'; +import { useScheduleScreen } from '../../hooks/useScheduleScreen'; +import { isAllowedToComplete } from '../../utils/calculations'; +import { getDateLabel } from '../../utils/formatting'; +import { SchedulerUITheme, defaultLightTheme, defaultDarkTheme } from '../theme'; +import { CalendarStrip } from './CalendarStrip'; +import { EventList } from './EventList'; + +export interface ScheduleViewProps { + /** Theme to use (defaults to light theme) */ + theme?: SchedulerUITheme; + /** Whether to use dark theme (auto-selects dark/light theme) */ + isDark?: boolean; + /** Custom callback for handling questionnaire events */ + onQuestionnaireOpen?: (event: Event) => void | Promise; + /** Custom callback for handling any event press (overrides default behavior) */ + onEventPress?: (event: Event) => void | Promise; + /** Custom header component (replaces title) */ + renderHeader?: () => ReactNode; + /** Additional content to show above the calendar */ + headerContent?: ReactNode; + /** Additional content to show below the date info */ + subHeaderContent?: ReactNode; + /** Container style */ + style?: ViewStyle; + /** Text color for date label */ + textColor?: string; + /** Text color for completion text */ + mutedTextColor?: string; + /** Optional refresh key - increment to force refresh events */ + refreshKey?: number; +} + +/** + * Complete schedule view with calendar, date info, and event list + * + * @example + * ```tsx + * // Basic usage + * + * + * // With custom questionnaire handling + * { + * router.push({ + * pathname: '/questionnaire/[id]', + * params: { id: event.task.questionnaireId } + * }); + * }} + * /> + * ``` + */ +export function ScheduleView({ + theme: themeProp, + isDark = false, + onQuestionnaireOpen, + onEventPress: onEventPressProp, + renderHeader, + headerContent, + subHeaderContent, + style, + textColor, + mutedTextColor, + refreshKey, +}: ScheduleViewProps) { + const { scheduler, tasks } = useScheduler(); + + const { + selectedDate, + setSelectedDate, + events, + refreshEvents, + completedCount, + totalCount, + } = useScheduleScreen({ scheduler, tasks }); + + // Refresh when refreshKey changes + useEffect(() => { + if (refreshKey !== undefined) { + refreshEvents(); + } + }, [refreshKey, refreshEvents]); + + // Auto-select theme if not provided - memoized for performance + const theme = useMemo( + () => themeProp || (isDark ? defaultDarkTheme : defaultLightTheme), + [themeProp, isDark] + ); + + // Default event press handler + const handleEventPress = useCallback( + async (event: Event) => { + // Use custom handler if provided + if (onEventPressProp) { + await onEventPressProp(event); + return; + } + + // Capture scheduler to help with type narrowing + const schedulerInstance = scheduler; + if (!schedulerInstance) return; + + if (event.outcome) { + // Already completed, ask to uncomplete + Alert.alert( + 'Uncomplete Task', + 'Do you want to mark this task as incomplete?', + [ + { text: 'Cancel', style: 'cancel' }, + { + text: 'Mark Incomplete', + style: 'destructive', + onPress: async () => { + await schedulerInstance.uncompleteEvent(event); + refreshEvents(); + }, + }, + ] + ); + } else { + // Check completion policy first + const canComplete = isAllowedToComplete(event); + + if (!canComplete) { + Alert.alert( + 'Cannot Complete Yet', + 'This task can only be completed within its scheduled time window.', + [{ text: 'OK' }] + ); + return; + } + + // Check if this is a questionnaire task + if (event.task.category === 'questionnaire' && event.task.questionnaireId) { + if (onQuestionnaireOpen) { + // Use custom questionnaire handler + await onQuestionnaireOpen(event); + } else { + // Default: just complete the event + try { + await schedulerInstance.completeEvent(event); + refreshEvents(); + } catch { + Alert.alert('Cannot Complete', 'This task cannot be completed at this time.'); + } + } + } else { + // Complete the event directly + try { + await schedulerInstance.completeEvent(event); + refreshEvents(); + } catch { + Alert.alert('Cannot Complete', 'This task cannot be completed at this time.'); + } + } + } + }, + [scheduler, onEventPressProp, onQuestionnaireOpen, refreshEvents] + ); + + return ( + + {renderHeader ? ( + renderHeader() + ) : null} + + {headerContent} + + + + + + {getDateLabel(selectedDate)} + + + {completedCount} of {totalCount} completed + + + + {subHeaderContent} + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + dateInfo: { + paddingHorizontal: 24, + paddingVertical: 16, + borderBottomWidth: 1, + borderBottomColor: '#333', + }, + dateLabel: { + fontSize: 20, + fontWeight: '600', + marginBottom: 4, + }, + completionText: { + fontSize: 14, + opacity: 0.6, + }, + eventList: { + flex: 1, + }, +}); diff --git a/homeflow/packages/scheduler/src/ui/components/index.ts b/homeflow/packages/scheduler/src/ui/components/index.ts new file mode 100644 index 0000000..84a440d --- /dev/null +++ b/homeflow/packages/scheduler/src/ui/components/index.ts @@ -0,0 +1,17 @@ +/** + * UI Component exports + */ + +export { EventCard } from './EventCard'; +export type { EventCardProps } from './EventCard'; + +export { EventList } from './EventList'; +export type { EventListProps } from './EventList'; + +export { CompletionBadge } from './CompletionBadge'; +export type { CompletionBadgeProps } from './CompletionBadge'; + +export { CalendarStrip } from './CalendarStrip'; + +export { ScheduleView } from './ScheduleView'; +export type { ScheduleViewProps } from './ScheduleView'; diff --git a/homeflow/packages/scheduler/src/ui/index.ts b/homeflow/packages/scheduler/src/ui/index.ts new file mode 100644 index 0000000..49820ff --- /dev/null +++ b/homeflow/packages/scheduler/src/ui/index.ts @@ -0,0 +1,6 @@ +/** + * UI exports + */ + +export * from './components'; +export * from './theme'; diff --git a/homeflow/packages/scheduler/src/ui/theme.ts b/homeflow/packages/scheduler/src/ui/theme.ts new file mode 100644 index 0000000..7eb3c8c --- /dev/null +++ b/homeflow/packages/scheduler/src/ui/theme.ts @@ -0,0 +1,105 @@ +/** + * Default theme for scheduler UI components + */ + +export interface SchedulerUITheme { + colors: { + // Background + background: string; + + // Cards + cardBackground: string; + cardBorder: string; + cardPressed: string; + + // Event icons + iconBackgroundCompleted: string; + iconBackgroundPending: string; + iconColorCompleted: string; + iconColorPending: string; + + // Text + primaryText: string; + secondaryText: string; + accentText: string; + mutedText: string; + selectedText: string; // Text on primary color backgrounds + + // Primary colors + primary: string; + + // Border + border: string; + + // Status badges + pendingBackground: string; + pendingText: string; + completedBackground: string; + completedText: string; + + // Disabled state + disabledOpacity: number; + }; +} + +export const defaultLightTheme: SchedulerUITheme = { + colors: { + background: '#ffffff', + + cardBackground: '#ffffff', + cardBorder: '#e0e0e0', + cardPressed: '#F5F5F5', + + iconBackgroundCompleted: '#D4EDDA', + iconBackgroundPending: '#8C1515', + iconColorCompleted: '#28A745', + iconColorPending: '#ffffff', + + primaryText: '#000000', + secondaryText: '#666666', + accentText: '#8C1515', + mutedText: '#666666', + selectedText: '#ffffff', + + primary: '#8C1515', + border: '#E5E5E5', + + pendingBackground: '#FFF3CD', + pendingText: '#856404', + completedBackground: '#D4EDDA', + completedText: '#155724', + + disabledOpacity: 0.5, + }, +}; + +export const defaultDarkTheme: SchedulerUITheme = { + colors: { + background: '#000000', + + cardBackground: '#1D1D1D', + cardBorder: '#333333', + cardPressed: '#1D1D1D', + + iconBackgroundCompleted: '#2D5F3F', + iconBackgroundPending: '#B83A4B', + iconColorCompleted: '#7FD99B', + iconColorPending: '#000000', + + primaryText: '#ffffff', + secondaryText: '#999999', + accentText: '#B83A4B', + mutedText: '#999999', + selectedText: '#ffffff', + + primary: '#B83A4B', + border: '#2D2D2D', + + pendingBackground: '#4A3B1C', + pendingText: '#FFD966', + completedBackground: '#2D5F3F', + completedText: '#7FD99B', + + disabledOpacity: 0.5, + }, +}; diff --git a/homeflow/packages/scheduler/src/utils/calculations.ts b/homeflow/packages/scheduler/src/utils/calculations.ts new file mode 100644 index 0000000..cf81d57 --- /dev/null +++ b/homeflow/packages/scheduler/src/utils/calculations.ts @@ -0,0 +1,116 @@ +/** + * Calculation utilities for scheduler + * Handles recurrence logic, occurrence generation, and completion policies + */ + +import { Schedule, Occurrence, Event } from '../types'; + +/** + * Calculate occurrences for a task within a date range + */ +export function calculateOccurrences( + schedule: Schedule, + startDate: Date, + endDate: Date +): Occurrence[] { + const occurrences: Occurrence[] = []; + const current = new Date(Math.max(schedule.startDate.getTime(), startDate.getTime())); + const end = schedule.endDate + ? new Date(Math.min(schedule.endDate.getTime(), endDate.getTime())) + : endDate; + + let index = 0; + + // Handle one-time events + if (schedule.recurrence.type === 'once') { + const scheduledDate = new Date(schedule.recurrence.date); + if (scheduledDate >= startDate && scheduledDate <= endDate) { + occurrences.push({ scheduledDate, index: 0 }); + } + return occurrences; + } + + // Handle recurring events + while (current <= end) { + const occurrence = getNextOccurrence(schedule, current, index); + if (!occurrence || occurrence.scheduledDate > end) { + break; + } + occurrences.push(occurrence); + current.setTime(occurrence.scheduledDate.getTime() + 1); // Move to next millisecond + index++; + } + + return occurrences; +} + +/** + * Get the next occurrence for a recurring schedule + */ +function getNextOccurrence( + schedule: Schedule, + fromDate: Date, + index: number +): Occurrence | null { + const scheduledDate = new Date(fromDate); + + switch (schedule.recurrence.type) { + case 'daily': + scheduledDate.setHours(schedule.recurrence.hour, schedule.recurrence.minute, 0, 0); + if (scheduledDate < fromDate) { + scheduledDate.setDate(scheduledDate.getDate() + 1); + } + break; + + case 'weekly': { + const targetDay = schedule.recurrence.weekday; + const currentDay = scheduledDate.getDay(); + const daysToAdd = (targetDay - currentDay + 7) % 7; + scheduledDate.setDate(scheduledDate.getDate() + daysToAdd); + scheduledDate.setHours(schedule.recurrence.hour, schedule.recurrence.minute, 0, 0); + if (scheduledDate < fromDate) { + scheduledDate.setDate(scheduledDate.getDate() + 7); + } + break; + } + + case 'monthly': + scheduledDate.setDate(schedule.recurrence.day); + scheduledDate.setHours(schedule.recurrence.hour, schedule.recurrence.minute, 0, 0); + if (scheduledDate < fromDate) { + scheduledDate.setMonth(scheduledDate.getMonth() + 1); + } + break; + + case 'once': + return null; + } + + if (schedule.endDate && scheduledDate > schedule.endDate) { + return null; + } + + return { scheduledDate, index }; +} + +/** + * Check if an event is allowed to be completed based on its completion policy + */ +export function isAllowedToComplete(event: Event, now: Date = new Date()): boolean { + const policy = event.task.completionPolicy; + + if (policy.type === 'anytime') { + return true; + } + + if (policy.type === 'window') { + const scheduledTime = event.occurrence.scheduledDate.getTime(); + const currentTime = now.getTime(); + const startWindow = scheduledTime + policy.start * 60 * 1000; // minutes to ms + const endWindow = scheduledTime + policy.end * 60 * 1000; + + return currentTime >= startWindow && currentTime <= endWindow; + } + + return true; +} diff --git a/homeflow/packages/scheduler/src/utils/formatting.ts b/homeflow/packages/scheduler/src/utils/formatting.ts new file mode 100644 index 0000000..16e1b01 --- /dev/null +++ b/homeflow/packages/scheduler/src/utils/formatting.ts @@ -0,0 +1,92 @@ +/** + * Formatting utilities for scheduler + * Handles date/time formatting and grouping + */ + +import { Event } from '../types'; + +/** + * Group events by date for display + */ +export function groupEventsByDate(events: Event[]): Map { + const grouped = new Map(); + + for (const event of events) { + const dateKey = getDateKey(event.occurrence.scheduledDate); + const existing = grouped.get(dateKey) || []; + existing.push(event); + grouped.set(dateKey, existing); + } + + // Sort events within each date group by time + for (const eventList of grouped.values()) { + eventList.sort((a, b) => + a.occurrence.scheduledDate.getTime() - b.occurrence.scheduledDate.getTime() + ); + } + + return grouped; +} + +/** + * Get a date key for grouping (YYYY-MM-DD format) + */ +function getDateKey(date: Date): string { + // Use local date string to avoid timezone issues + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + return `${year}-${month}-${day}`; +} + +/** + * Get relative date label (Today, Tomorrow, etc.) + */ +export function getRelativeDateLabel(date: Date): string { + const now = new Date(); + const today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); + const targetDate = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + + const diffDays = Math.floor( + (targetDate.getTime() - today.getTime()) / (1000 * 60 * 60 * 24) + ); + + if (diffDays === 0) return 'Today'; + if (diffDays === 1) return 'Tomorrow'; + if (diffDays === -1) return 'Yesterday'; + if (diffDays > 1 && diffDays <= 7) return targetDate.toLocaleDateString('en-US', { weekday: 'long' }); + + return targetDate.toLocaleDateString('en-US', { month: 'short', day: 'numeric' }); +} + +/** + * Format time for display + */ +export function formatTime(date: Date): string { + return date.toLocaleTimeString('en-US', { + hour: 'numeric', + minute: '2-digit', + hour12: true, + }); +} + +/** + * Get a comprehensive date label for display + * Returns "Today" if the date is today, otherwise returns full formatted date + */ +export function getDateLabel(date: Date): string { + const today = new Date(); + today.setHours(0, 0, 0, 0); + const selected = new Date(date); + selected.setHours(0, 0, 0, 0); + + if (selected.getTime() === today.getTime()) { + return 'Today'; + } + + return date.toLocaleDateString('en-US', { + weekday: 'long', + month: 'long', + day: 'numeric', + }); +} diff --git a/homeflow/packages/scheduler/src/utils/index.ts b/homeflow/packages/scheduler/src/utils/index.ts new file mode 100644 index 0000000..4074848 --- /dev/null +++ b/homeflow/packages/scheduler/src/utils/index.ts @@ -0,0 +1,6 @@ +/** + * Utility exports + */ + +export { calculateOccurrences, isAllowedToComplete } from './calculations'; +export { groupEventsByDate, getRelativeDateLabel, getDateLabel, formatTime } from './formatting'; diff --git a/homeflow/packages/scheduler/tsconfig.json b/homeflow/packages/scheduler/tsconfig.json new file mode 100644 index 0000000..c76da52 --- /dev/null +++ b/homeflow/packages/scheduler/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src", + "declaration": true, + "declarationMap": true, + "composite": true, + "noEmit": false, + "emitDeclarationOnly": false, + "module": "ESNext", + "target": "ES2020", + "moduleResolution": "bundler", + "esModuleInterop": true, + "skipLibCheck": true, + "jsx": "react-native" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/__tests__/**", "**/*.test.ts", "**/*.test.tsx"] +} diff --git a/homeflow/tsconfig.json b/homeflow/tsconfig.json new file mode 100644 index 0000000..9be2a6e --- /dev/null +++ b/homeflow/tsconfig.json @@ -0,0 +1,34 @@ +{ + "extends": "expo/tsconfig.base", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./*"], + "@": ["./"], + + "@spezivibe/chat": ["packages/chat/src"], + "@spezivibe/chat/*": ["packages/chat/src/*"], + + "@spezivibe/healthkit": ["packages/healthkit/src"], + "@spezivibe/healthkit/*": ["packages/healthkit/src/*"], + + "@spezivibe/scheduler": ["packages/scheduler/src"], + "@spezivibe/scheduler/*": ["packages/scheduler/src/*"], + + "@spezivibe/questionnaire": ["packages/questionnaire/src"], + "@spezivibe/questionnaire/*": ["packages/questionnaire/src/*"] + } + }, + "exclude": [ + "node_modules", + "packages/**/__tests__/**", + "**/*.test.ts", + "**/*.test.tsx" + ], + "include": [ + "**/*.ts", + "**/*.tsx", + ".expo/types/**/*.ts", + "expo-env.d.ts" + ] +}