From d499020d4eb4a13fceb10826e03ad751545f0806 Mon Sep 17 00:00:00 2001 From: FengLee Date: Sat, 9 May 2026 11:32:34 +0800 Subject: [PATCH] Initial miaojingAI project with image resolution guard --- .babelrc | 15 + .coze | 15 + .env.example | 107 + .gitignore | 101 + .npmrc | 26 + DEPLOY_BACKUP_UPGRADE.md | 703 + account-profile-migration.sql | 1 + assets/image.png | Bin 0 -> 84927 bytes assets/miaojinglogo.png | Bin 0 -> 1351884 bytes audit_current_persistence.js | 204 + audit_db_storage.js | 67 + audit_recovered_data.js | 206 + backfill_gallery_user_links.js | 64 + backfill_generation_jobs_user.js | 46 + cleanup_import_edge_cases.js | 73 + components.json | 21 + deploy/nginx/miaojing-production.conf | 109 + ecosystem.config.cjs | 54 + eslint.config.mjs | 52 + fix_persistence_data.js | 59 + inspect_before_fix.js | 12 + inspect_db.js | 19 + inspect_gallery_model_owner_candidates.js | 61 + inspect_gallery_user_links.js | 53 + inspect_payload.js | 9 + inspect_recovery_candidates.js | 111 + inspect_work_link_candidates.js | 59 + model-config-migration.sql | 57 + next-env.d.ts | 6 + next.config.ts | 19 + package.json | 113 + persistence_migration.sql | 4 + pnpm-lock.yaml | 13336 ++++++++++++++++ postcss.config.mjs | 7 + public/apple-touch-icon.png | Bin 0 -> 47292 bytes public/favicon.png | Bin 0 -> 2907 bytes public/file.svg | 1 + public/globe.svg | 1 + public/icons/mozhe-api-logo.png | Bin 0 -> 120082 bytes public/logo.png | Bin 0 -> 8707 bytes public/mozhe-api-icon.svg | 6 + public/next.svg | 1 + public/vercel.svg | 1 + public/window.svg | 1 + repair_recovered_work_owners.js | 98 + scripts/apply-database-patch.sh | 20 + scripts/backup-create.sh | 72 + scripts/backup-list.sh | 32 + scripts/backup-restore.sh | 65 + scripts/build.sh | 21 + scripts/check-boundaries.sh | 50 + scripts/database-optimization-patch.sql | 169 + scripts/deploy-or-upgrade.sh | 1156 ++ scripts/dev.sh | 34 + scripts/init-database.sql | 663 + scripts/prepare.sh | 12 + scripts/start.sh | 46 + src/app/about/page.tsx | 5 + src/app/admin/page.tsx | 5 + src/app/api/admin/clear-users/route.ts | 84 + src/app/api/admin/dashboard/route.ts | 285 + src/app/api/admin/data-export/route.ts | 69 + src/app/api/admin/data-import/route.ts | 584 + src/app/api/admin/email-recipients/route.ts | 77 + src/app/api/admin/email-settings/route.ts | 84 + src/app/api/admin/generation-jobs/route.ts | 123 + .../api/admin/model-recommendations/route.ts | 118 + src/app/api/admin/orders/route.ts | 80 + src/app/api/admin/payment-methods/route.ts | 47 + src/app/api/admin/providers/route.ts | 121 + src/app/api/admin/send-email/route.ts | 147 + src/app/api/admin/stats/route.ts | 39 + src/app/api/admin/system-apis/route.ts | 142 + src/app/api/admin/users/route.ts | 74 + src/app/api/announcements/route.ts | 124 + src/app/api/auth/admin-exists/route.ts | 78 + src/app/api/auth/fetch-models/route.ts | 146 + src/app/api/auth/login/route.ts | 290 + src/app/api/auth/register/route.ts | 175 + src/app/api/auth/test-api/route.ts | 215 + src/app/api/creation-history/route.ts | 143 + src/app/api/download/route.ts | 158 + src/app/api/email/reset-password/route.ts | 72 + src/app/api/email/send-notification/route.ts | 62 + src/app/api/email/send-profile-code/route.ts | 47 + src/app/api/email/send-register-code/route.ts | 36 + src/app/api/email/send-reset-code/route.ts | 47 + src/app/api/email/verify-profile/route.ts | 73 + src/app/api/gallery/publish/route.ts | 106 + src/app/api/gallery/route.ts | 152 + src/app/api/generate/image/route.ts | 1033 ++ src/app/api/generate/reverse-prompt/route.ts | 262 + src/app/api/generate/suggest-prompt/route.ts | 151 + src/app/api/generate/video/route.ts | 651 + src/app/api/generation-jobs/[id]/route.ts | 110 + src/app/api/generation-jobs/route.ts | 105 + src/app/api/health/route.ts | 50 + src/app/api/local-storage/[...path]/route.ts | 64 + src/app/api/model-config/route.ts | 59 + src/app/api/profile/route.ts | 232 + src/app/api/profile/theme/route.ts | 44 + src/app/api/site-config/route.ts | 220 + src/app/api/site-stats/route.ts | 41 + src/app/api/user-api-keys/route.ts | 125 + src/app/auth/login/page.tsx | 530 + src/app/auth/register/page.tsx | 220 + src/app/console/dashboard/page.tsx | 3 + src/app/console/page.tsx | 3 + src/app/create/page.tsx | 90 + src/app/gallery/page.tsx | 910 ++ src/app/globals.css | 609 + src/app/help/page.tsx | 5 + src/app/layout.tsx | 46 + src/app/page.tsx | 293 + src/app/privacy/page.tsx | 5 + src/app/profile/page.tsx | 767 + src/app/robots.ts | 11 + src/app/terms/page.tsx | 5 + src/components/account-theme-sync.tsx | 19 + src/components/admin/announcement-tab.tsx | 388 + src/components/admin/api-management-tab.tsx | 1098 ++ src/components/admin/data-management-tab.tsx | 268 + src/components/admin/log-management-tab.tsx | 335 + src/components/admin/order-management-tab.tsx | 145 + src/components/admin/payment-tab.tsx | 239 + src/components/admin/pricing-tab.tsx | 247 + src/components/admin/settings-tab.tsx | 1013 ++ src/components/admin/task-management-tab.tsx | 240 + src/components/admin/user-management-tab.tsx | 933 ++ src/components/announcement-popup.tsx | 92 + src/components/app-shell.tsx | 25 + .../auth/registration-agreement-dialog.tsx | 95 + src/components/billing-plan-guard.tsx | 11 + .../create/expandable-prompt-textarea.tsx | 63 + .../create/generation-error-panel.tsx | 154 + .../create/generation-loading-panel.tsx | 165 + src/components/create/image-to-image.tsx | 674 + src/components/create/image-to-video.tsx | 558 + .../create/reverse-prompt-panel.tsx | 518 + src/components/create/text-to-image.tsx | 501 + src/components/create/text-to-video.tsx | 422 + src/components/creation-detail-dialog.tsx | 634 + src/components/fullscreen-preview.tsx | 350 + src/components/lightbox.tsx | 171 + src/components/navbar.tsx | 269 + src/components/profile/api-key-manager.tsx | 949 ++ .../profile/creation-history-tab.tsx | 126 + src/components/profile/credits-tab.tsx | 94 + src/components/profile/orders-tab.tsx | 52 + src/components/site-brand.tsx | 31 + src/components/site-config-sync.tsx | 35 + src/components/site-footer.tsx | 73 + src/components/site-policy-page.tsx | 44 + src/components/ui/accordion.tsx | 66 + src/components/ui/alert-dialog.tsx | 157 + src/components/ui/alert.tsx | 66 + src/components/ui/aspect-ratio.tsx | 11 + src/components/ui/avatar.tsx | 53 + src/components/ui/badge.tsx | 46 + src/components/ui/breadcrumb.tsx | 109 + src/components/ui/button-group.tsx | 83 + src/components/ui/button.tsx | 63 + src/components/ui/calendar.tsx | 220 + src/components/ui/card.tsx | 92 + src/components/ui/carousel.tsx | 241 + src/components/ui/chart.tsx | 357 + src/components/ui/checkbox.tsx | 32 + src/components/ui/collapsible.tsx | 33 + src/components/ui/command.tsx | 184 + src/components/ui/context-menu.tsx | 252 + src/components/ui/dialog.tsx | 143 + src/components/ui/drawer.tsx | 135 + src/components/ui/dropdown-menu.tsx | 257 + src/components/ui/empty.tsx | 104 + src/components/ui/field.tsx | 248 + src/components/ui/form.tsx | 167 + src/components/ui/hover-card.tsx | 44 + src/components/ui/input-group.tsx | 170 + src/components/ui/input-otp.tsx | 77 + src/components/ui/input.tsx | 21 + src/components/ui/item.tsx | 193 + src/components/ui/kbd.tsx | 28 + src/components/ui/label.tsx | 24 + src/components/ui/menubar.tsx | 276 + src/components/ui/navigation-menu.tsx | 168 + src/components/ui/pagination.tsx | 127 + src/components/ui/popover.tsx | 48 + src/components/ui/progress.tsx | 31 + src/components/ui/radio-group.tsx | 45 + src/components/ui/resizable.tsx | 63 + src/components/ui/scroll-area.tsx | 58 + src/components/ui/select.tsx | 194 + src/components/ui/separator.tsx | 28 + src/components/ui/sheet.tsx | 139 + src/components/ui/sidebar.tsx | 724 + src/components/ui/skeleton.tsx | 13 + src/components/ui/slider.tsx | 63 + src/components/ui/sonner.tsx | 40 + src/components/ui/spinner.tsx | 16 + src/components/ui/switch.tsx | 31 + src/components/ui/table.tsx | 116 + src/components/ui/tabs.tsx | 66 + src/components/ui/textarea.tsx | 18 + src/components/ui/toggle-group.tsx | 83 + src/components/ui/toggle.tsx | 47 + src/components/ui/tooltip.tsx | 61 + src/components/visit-tracker.tsx | 31 + src/hooks/use-mobile.ts | 19 + src/lib/admin-auth.ts | 7 + src/lib/admin-store.ts | 598 + src/lib/admin-users-service.ts | 281 + src/lib/api-error-parser.ts | 92 + src/lib/auth-store.ts | 196 + src/lib/browser-image-compression.ts | 163 + src/lib/creation-history-store.ts | 629 + src/lib/credit-records-store.ts | 114 + src/lib/custom-api-fetch.ts | 277 + src/lib/custom-api-store.ts | 254 + src/lib/email-service.ts | 786 + src/lib/generation-job-client.ts | 106 + src/lib/generation-job-estimates.ts | 203 + src/lib/generation-job-runner.ts | 36 + src/lib/generation-job-worker.ts | 193 + src/lib/local-storage.ts | 140 + src/lib/managed-model-store.ts | 26 + src/lib/model-config-types.ts | 43 + src/lib/model-config.ts | 252 + src/lib/node-runtime-polyfill.ts | 11 + src/lib/order-store.ts | 165 + src/lib/platform-logs.ts | 149 + src/lib/profile-preferences.ts | 20 + src/lib/rate-limit.ts | 103 + src/lib/remote-fetch.ts | 72 + src/lib/runtime-env.ts | 12 + src/lib/server-api-config.ts | 190 + src/lib/server-crypto.ts | 47 + src/lib/server-image-compression.ts | 93 + src/lib/server-payment-config.ts | 164 + src/lib/session-auth.ts | 118 + src/lib/site-config.ts | 201 + src/lib/site-policy-defaults.ts | 32 + src/lib/utils.ts | 162 + src/modules/api/index.ts | 1 + src/modules/api/runtime-routing.ts | 40 + src/modules/console/index.ts | 2 + .../console/pages/console-dashboard-page.tsx | 946 ++ .../console/pages/console-login-page.tsx | 143 + src/modules/shared/index.ts | 4 + src/modules/web/index.ts | 4 + src/proxy.ts | 102 + src/server.ts | 162 + src/storage/database/local-db.ts | 62 + src/storage/database/shared/relations.ts | 3 + src/storage/database/shared/schema.ts | 146 + src/storage/database/supabase-client.ts | 91 + tsconfig.json | 34 + verify_admin_import.js | 49 + verify_admin_stats.js | 38 + verify_admin_user_delete.js | 70 + verify_after_fix.js | 16 + verify_gallery_delete_admin.js | 23 + verify_import_edge_cases.js | 89 + verify_login_compat.js | 41 + verify_recovered_data.js | 57 + 264 files changed, 54160 insertions(+) create mode 100644 .babelrc create mode 100644 .coze create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 DEPLOY_BACKUP_UPGRADE.md create mode 100644 account-profile-migration.sql create mode 100644 assets/image.png create mode 100644 assets/miaojinglogo.png create mode 100644 audit_current_persistence.js create mode 100644 audit_db_storage.js create mode 100644 audit_recovered_data.js create mode 100644 backfill_gallery_user_links.js create mode 100644 backfill_generation_jobs_user.js create mode 100644 cleanup_import_edge_cases.js create mode 100644 components.json create mode 100644 deploy/nginx/miaojing-production.conf create mode 100644 ecosystem.config.cjs create mode 100644 eslint.config.mjs create mode 100644 fix_persistence_data.js create mode 100644 inspect_before_fix.js create mode 100644 inspect_db.js create mode 100644 inspect_gallery_model_owner_candidates.js create mode 100644 inspect_gallery_user_links.js create mode 100644 inspect_payload.js create mode 100644 inspect_recovery_candidates.js create mode 100644 inspect_work_link_candidates.js create mode 100644 model-config-migration.sql create mode 100644 next-env.d.ts create mode 100644 next.config.ts create mode 100644 package.json create mode 100644 persistence_migration.sql create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.mjs create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon.png create mode 100644 public/file.svg create mode 100644 public/globe.svg create mode 100644 public/icons/mozhe-api-logo.png create mode 100644 public/logo.png create mode 100644 public/mozhe-api-icon.svg create mode 100644 public/next.svg create mode 100644 public/vercel.svg create mode 100644 public/window.svg create mode 100644 repair_recovered_work_owners.js create mode 100644 scripts/apply-database-patch.sh create mode 100644 scripts/backup-create.sh create mode 100644 scripts/backup-list.sh create mode 100644 scripts/backup-restore.sh create mode 100644 scripts/build.sh create mode 100644 scripts/check-boundaries.sh create mode 100644 scripts/database-optimization-patch.sql create mode 100644 scripts/deploy-or-upgrade.sh create mode 100644 scripts/dev.sh create mode 100644 scripts/init-database.sql create mode 100644 scripts/prepare.sh create mode 100644 scripts/start.sh create mode 100644 src/app/about/page.tsx create mode 100644 src/app/admin/page.tsx create mode 100644 src/app/api/admin/clear-users/route.ts create mode 100644 src/app/api/admin/dashboard/route.ts create mode 100644 src/app/api/admin/data-export/route.ts create mode 100644 src/app/api/admin/data-import/route.ts create mode 100644 src/app/api/admin/email-recipients/route.ts create mode 100644 src/app/api/admin/email-settings/route.ts create mode 100644 src/app/api/admin/generation-jobs/route.ts create mode 100644 src/app/api/admin/model-recommendations/route.ts create mode 100644 src/app/api/admin/orders/route.ts create mode 100644 src/app/api/admin/payment-methods/route.ts create mode 100644 src/app/api/admin/providers/route.ts create mode 100644 src/app/api/admin/send-email/route.ts create mode 100644 src/app/api/admin/stats/route.ts create mode 100644 src/app/api/admin/system-apis/route.ts create mode 100644 src/app/api/admin/users/route.ts create mode 100644 src/app/api/announcements/route.ts create mode 100644 src/app/api/auth/admin-exists/route.ts create mode 100644 src/app/api/auth/fetch-models/route.ts create mode 100644 src/app/api/auth/login/route.ts create mode 100644 src/app/api/auth/register/route.ts create mode 100644 src/app/api/auth/test-api/route.ts create mode 100644 src/app/api/creation-history/route.ts create mode 100644 src/app/api/download/route.ts create mode 100644 src/app/api/email/reset-password/route.ts create mode 100644 src/app/api/email/send-notification/route.ts create mode 100644 src/app/api/email/send-profile-code/route.ts create mode 100644 src/app/api/email/send-register-code/route.ts create mode 100644 src/app/api/email/send-reset-code/route.ts create mode 100644 src/app/api/email/verify-profile/route.ts create mode 100644 src/app/api/gallery/publish/route.ts create mode 100644 src/app/api/gallery/route.ts create mode 100644 src/app/api/generate/image/route.ts create mode 100644 src/app/api/generate/reverse-prompt/route.ts create mode 100644 src/app/api/generate/suggest-prompt/route.ts create mode 100644 src/app/api/generate/video/route.ts create mode 100644 src/app/api/generation-jobs/[id]/route.ts create mode 100644 src/app/api/generation-jobs/route.ts create mode 100644 src/app/api/health/route.ts create mode 100644 src/app/api/local-storage/[...path]/route.ts create mode 100644 src/app/api/model-config/route.ts create mode 100644 src/app/api/profile/route.ts create mode 100644 src/app/api/profile/theme/route.ts create mode 100644 src/app/api/site-config/route.ts create mode 100644 src/app/api/site-stats/route.ts create mode 100644 src/app/api/user-api-keys/route.ts create mode 100644 src/app/auth/login/page.tsx create mode 100644 src/app/auth/register/page.tsx create mode 100644 src/app/console/dashboard/page.tsx create mode 100644 src/app/console/page.tsx create mode 100644 src/app/create/page.tsx create mode 100644 src/app/gallery/page.tsx create mode 100644 src/app/globals.css create mode 100644 src/app/help/page.tsx create mode 100644 src/app/layout.tsx create mode 100644 src/app/page.tsx create mode 100644 src/app/privacy/page.tsx create mode 100644 src/app/profile/page.tsx create mode 100644 src/app/robots.ts create mode 100644 src/app/terms/page.tsx create mode 100644 src/components/account-theme-sync.tsx create mode 100644 src/components/admin/announcement-tab.tsx create mode 100644 src/components/admin/api-management-tab.tsx create mode 100644 src/components/admin/data-management-tab.tsx create mode 100644 src/components/admin/log-management-tab.tsx create mode 100644 src/components/admin/order-management-tab.tsx create mode 100644 src/components/admin/payment-tab.tsx create mode 100644 src/components/admin/pricing-tab.tsx create mode 100644 src/components/admin/settings-tab.tsx create mode 100644 src/components/admin/task-management-tab.tsx create mode 100644 src/components/admin/user-management-tab.tsx create mode 100644 src/components/announcement-popup.tsx create mode 100644 src/components/app-shell.tsx create mode 100644 src/components/auth/registration-agreement-dialog.tsx create mode 100644 src/components/billing-plan-guard.tsx create mode 100644 src/components/create/expandable-prompt-textarea.tsx create mode 100644 src/components/create/generation-error-panel.tsx create mode 100644 src/components/create/generation-loading-panel.tsx create mode 100644 src/components/create/image-to-image.tsx create mode 100644 src/components/create/image-to-video.tsx create mode 100644 src/components/create/reverse-prompt-panel.tsx create mode 100644 src/components/create/text-to-image.tsx create mode 100644 src/components/create/text-to-video.tsx create mode 100644 src/components/creation-detail-dialog.tsx create mode 100644 src/components/fullscreen-preview.tsx create mode 100644 src/components/lightbox.tsx create mode 100644 src/components/navbar.tsx create mode 100644 src/components/profile/api-key-manager.tsx create mode 100644 src/components/profile/creation-history-tab.tsx create mode 100644 src/components/profile/credits-tab.tsx create mode 100644 src/components/profile/orders-tab.tsx create mode 100644 src/components/site-brand.tsx create mode 100644 src/components/site-config-sync.tsx create mode 100644 src/components/site-footer.tsx create mode 100644 src/components/site-policy-page.tsx create mode 100644 src/components/ui/accordion.tsx create mode 100644 src/components/ui/alert-dialog.tsx create mode 100644 src/components/ui/alert.tsx create mode 100644 src/components/ui/aspect-ratio.tsx create mode 100644 src/components/ui/avatar.tsx create mode 100644 src/components/ui/badge.tsx create mode 100644 src/components/ui/breadcrumb.tsx create mode 100644 src/components/ui/button-group.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/calendar.tsx create mode 100644 src/components/ui/card.tsx create mode 100644 src/components/ui/carousel.tsx create mode 100644 src/components/ui/chart.tsx create mode 100644 src/components/ui/checkbox.tsx create mode 100644 src/components/ui/collapsible.tsx create mode 100644 src/components/ui/command.tsx create mode 100644 src/components/ui/context-menu.tsx create mode 100644 src/components/ui/dialog.tsx create mode 100644 src/components/ui/drawer.tsx create mode 100644 src/components/ui/dropdown-menu.tsx create mode 100644 src/components/ui/empty.tsx create mode 100644 src/components/ui/field.tsx create mode 100644 src/components/ui/form.tsx create mode 100644 src/components/ui/hover-card.tsx create mode 100644 src/components/ui/input-group.tsx create mode 100644 src/components/ui/input-otp.tsx create mode 100644 src/components/ui/input.tsx create mode 100644 src/components/ui/item.tsx create mode 100644 src/components/ui/kbd.tsx create mode 100644 src/components/ui/label.tsx create mode 100644 src/components/ui/menubar.tsx create mode 100644 src/components/ui/navigation-menu.tsx create mode 100644 src/components/ui/pagination.tsx create mode 100644 src/components/ui/popover.tsx create mode 100644 src/components/ui/progress.tsx create mode 100644 src/components/ui/radio-group.tsx create mode 100644 src/components/ui/resizable.tsx create mode 100644 src/components/ui/scroll-area.tsx create mode 100644 src/components/ui/select.tsx create mode 100644 src/components/ui/separator.tsx create mode 100644 src/components/ui/sheet.tsx create mode 100644 src/components/ui/sidebar.tsx create mode 100644 src/components/ui/skeleton.tsx create mode 100644 src/components/ui/slider.tsx create mode 100644 src/components/ui/sonner.tsx create mode 100644 src/components/ui/spinner.tsx create mode 100644 src/components/ui/switch.tsx create mode 100644 src/components/ui/table.tsx create mode 100644 src/components/ui/tabs.tsx create mode 100644 src/components/ui/textarea.tsx create mode 100644 src/components/ui/toggle-group.tsx create mode 100644 src/components/ui/toggle.tsx create mode 100644 src/components/ui/tooltip.tsx create mode 100644 src/components/visit-tracker.tsx create mode 100644 src/hooks/use-mobile.ts create mode 100644 src/lib/admin-auth.ts create mode 100644 src/lib/admin-store.ts create mode 100644 src/lib/admin-users-service.ts create mode 100644 src/lib/api-error-parser.ts create mode 100644 src/lib/auth-store.ts create mode 100644 src/lib/browser-image-compression.ts create mode 100644 src/lib/creation-history-store.ts create mode 100644 src/lib/credit-records-store.ts create mode 100644 src/lib/custom-api-fetch.ts create mode 100644 src/lib/custom-api-store.ts create mode 100644 src/lib/email-service.ts create mode 100644 src/lib/generation-job-client.ts create mode 100644 src/lib/generation-job-estimates.ts create mode 100644 src/lib/generation-job-runner.ts create mode 100644 src/lib/generation-job-worker.ts create mode 100644 src/lib/local-storage.ts create mode 100644 src/lib/managed-model-store.ts create mode 100644 src/lib/model-config-types.ts create mode 100644 src/lib/model-config.ts create mode 100644 src/lib/node-runtime-polyfill.ts create mode 100644 src/lib/order-store.ts create mode 100644 src/lib/platform-logs.ts create mode 100644 src/lib/profile-preferences.ts create mode 100644 src/lib/rate-limit.ts create mode 100644 src/lib/remote-fetch.ts create mode 100644 src/lib/runtime-env.ts create mode 100644 src/lib/server-api-config.ts create mode 100644 src/lib/server-crypto.ts create mode 100644 src/lib/server-image-compression.ts create mode 100644 src/lib/server-payment-config.ts create mode 100644 src/lib/session-auth.ts create mode 100644 src/lib/site-config.ts create mode 100644 src/lib/site-policy-defaults.ts create mode 100644 src/lib/utils.ts create mode 100644 src/modules/api/index.ts create mode 100644 src/modules/api/runtime-routing.ts create mode 100644 src/modules/console/index.ts create mode 100644 src/modules/console/pages/console-dashboard-page.tsx create mode 100644 src/modules/console/pages/console-login-page.tsx create mode 100644 src/modules/shared/index.ts create mode 100644 src/modules/web/index.ts create mode 100644 src/proxy.ts create mode 100644 src/server.ts create mode 100644 src/storage/database/local-db.ts create mode 100644 src/storage/database/shared/relations.ts create mode 100644 src/storage/database/shared/schema.ts create mode 100644 src/storage/database/supabase-client.ts create mode 100644 tsconfig.json create mode 100644 verify_admin_import.js create mode 100644 verify_admin_stats.js create mode 100644 verify_admin_user_delete.js create mode 100644 verify_after_fix.js create mode 100644 verify_gallery_delete_admin.js create mode 100644 verify_import_edge_cases.js create mode 100644 verify_login_compat.js create mode 100644 verify_recovered_data.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..870f4b3 --- /dev/null +++ b/.babelrc @@ -0,0 +1,15 @@ +{ + "presets": [ + [ + "next/babel", + { + "preset-react": { + "development": true + } + } + ] + ], + "plugins": [ + "@react-dev-inspector/babel-plugin" + ] +} diff --git a/.coze b/.coze new file mode 100644 index 0000000..e4d6619 --- /dev/null +++ b/.coze @@ -0,0 +1,15 @@ +[project] +requires = [ "nodejs-24" ] +template = "nextjs" +version = "0.0.18" +appliedPatches = [ ] + +[dev] +build = [ "bash", "./scripts/prepare.sh" ] +run = [ "bash", "./scripts/dev.sh" ] +deps = [ "git" ] + +[deploy] +build = [ "bash", "./scripts/build.sh" ] +run = [ "bash", "./scripts/start.sh" ] +deps = [ "git" ] diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..758c488 --- /dev/null +++ b/.env.example @@ -0,0 +1,107 @@ +# ============================================================ +# 妙境 AI 创作平台 — 环境变量配置模板 +# 复制此文件为 .env.local 并填写实际值 +# cp .env.example .env.local +# ============================================================ + +# ----- 本地部署配置 (推荐) ----- +# 本地 PostgreSQL 数据库 +LOCAL_DB_URL=postgresql://postgres:postgres@localhost:5432/miaojing +LOCAL_DB_ANON_KEY=local-anon-key +LOCAL_DB_SERVICE_ROLE_KEY=local-service-role-key + +# ----- Supabase 云端配置 (可选) ----- +# 从 Supabase Dashboard → Settings → API 获取 +# 支持 COZE_ 前缀和不带前缀两种变量名 +# COZE_SUPABASE_URL=https://your-project.supabase.co +# COZE_SUPABASE_ANON_KEY=your-anon-key-here +# COZE_SUPABASE_SERVICE_ROLE_KEY=your-service-role-key-here + +# 也可以使用不带 COZE_ 前缀的变量名 (二选一) +# SUPABASE_URL=https://your-project.supabase.co +# SUPABASE_ANON_KEY=your-anon-key-here +# SUPABASE_SERVICE_ROLE_KEY=your-service-role-key-here + +# ----- 服务端口 (可选) ----- +# 默认 5000,一般无需修改 +# DEPLOY_RUN_PORT=5000 +# MIAOJING_API_PORT=5100 +# MIAOJING_CONSOLE_PORT=5200 + +# ----- 管理员注册邀请码 (可选) ----- +# 注册时输入此邀请码可创建管理员账号 +# 默认值: miaojing-admin-2024 +# ADMIN_INVITE_CODE=miaojing-admin-2024 +# ADMIN_DEFAULT_PASSWORD=change-this-before-production + +# ----- 运行环境 (可选) ----- +# DEV = 开发环境, PROD = 生产环境 +# COZE_PROJECT_ENV=PROD +# NODE_ENV=production +# APP_BIND_HOST=127.0.0.1 +# 部署脚本默认自动安装/切换 Node.js 24 LTS;如需使用 22 LTS 可设置为 22 +# DEPLOY_NODE_MAJOR=24 +# DEPLOY_NODE_INSTALL_DIR=/var/lib/miaojingAI/node + +# ----- 项目域名 (可选) ----- +# 用于构造回调 URL、分享链接等 +# COZE_PROJECT_DOMAIN_DEFAULT=https://your-domain.com +# NEXT_PUBLIC_APP_URL=https://your-domain.com +# APP_BASE_URL=https://your-domain.com + +# ----- 生产安全密钥 (生产环境必须设置) ----- +# 建议使用 openssl rand -hex 32 生成 +# DATA_ENCRYPTION_KEY= +# JWT_SECRET= +# GENERATION_INTERNAL_SECRET= + +# ----- 持久化路径 (生产环境推荐放到项目目录外) ----- +# LOCAL_STORAGE_DIR=/var/lib/miaojingAI/storage +# BACKUP_DIR=/var/lib/miaojingAI/backups + +# ----- 数据库连接池 (可选) ----- +# DB_POOL_MAX=20 +# DB_CONNECTION_TIMEOUT_MS=5000 +# DB_IDLE_TIMEOUT_MS=30000 + +# ----- Node HTTP 服务超时 (可选) ----- +# HTTP_REQUEST_TIMEOUT_MS=190000 +# HTTP_HEADERS_TIMEOUT_MS=65000 +# HTTP_KEEP_ALIVE_TIMEOUT_MS=5000 +# HTTP_MAX_HEADERS_COUNT=200 + +# ----- 危险管理功能开关 ----- +# 生产环境保持 false。只有完成备份并明确需要清空非管理员用户时,才临时改为 true。 +# ENABLE_DANGER_ADMIN_CLEAR_USERS=false + +# ----- 应用层限流 (可选) ----- +# RATE_LIMIT_AUTH_MAX=10 +# RATE_LIMIT_EMAIL_MAX=6 +# RATE_LIMIT_GENERATION_MAX=20 +# RATE_LIMIT_DOWNLOAD_MAX=60 +# RATE_LIMIT_ADMIN_MAX=120 + +# ============================================================ +# 说明: +# - 本地部署模式: +# 1. 安装并启动本地 PostgreSQL 数据库 +# 2. 创建名为 miaojing 的数据库 +# 3. 运行 scripts/init-database.sql 初始化数据库结构 +# 4. 配置 LOCAL_DB_URL 等本地数据库环境变量 +# 5. 系统会自动使用本地存储替代 S3 存储 +# +# - Supabase 云端模式: +# 1. 创建 Supabase 项目 +# 2. 运行 scripts/init-database.sql 初始化数据库 +# 3. 在 Supabase Dashboard 创建 site-assets Storage 桶 (公开读) +# 4. 配置 COZE_SUPABASE_URL 等环境变量 +# +# - 无数据库配置时,系统将运行在 Demo 模式: +# Demo 模式下:登录/注册返回模拟数据,公告/网站配置返回默认值 +# 管理后台写入操作将返回 503 错误 +# +# - AI 图片/视频生成: +# 1. 内置使用 coze-coding-dev-sdk (开发环境可用) +# 2. 用户可在前端"自定义 API"中配置自己的 AI 模型密钥 +# 3. 管理员可在管理后台配置系统默认 API +# ============================================================ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..320b208 --- /dev/null +++ b/.gitignore @@ -0,0 +1,101 @@ +.next + +# Dependencies +node_modules/ +.pnp +.pnp.js + +# Production build +dist/ +build/ +out/ +.next/ +.rsbuild/ + +# Testing +coverage/ +*.lcov +.nyc_output + +# Environment variables +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# Logs +logs/ +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Diagnostic reports +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Cache +.cache/ +.parcel-cache/ +.eslintcache +.stylelintcache +.npm +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +node-compile-cache/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +!.vscode/settings.json +.idea/ +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +*.swp +*.swo +*~ + +# OS files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db +Desktop.ini + +# Temporary files +*.tmp +*.temp +_tmp_* +.tmp/ +.temp/ + +# Optional files +*.tgz +*.gz +*.zip +*.tar + +# TypeScript +*.tsbuildinfo + +# Misc +.vercel +.turbo + +.coze-logs diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..48c18ad --- /dev/null +++ b/.npmrc @@ -0,0 +1,26 @@ +loglevel=error +registry=https://registry.npmmirror.com + +strictStorePkgContentCheck=false +verifyStoreIntegrity=false + +# 网络优化 +network-concurrency=16 +fetch-retries=3 +fetch-timeout=60000 + +# 严格使用 peer dependencies +strict-peer-dependencies=false + +# 自动生成 lockfile +auto-install-peers=true + +# lockfile 配置 +lockfile=true +prefer-frozen-lockfile=true + +# 如果 lockfile 存在但过期,更新而不是失败 +resolution-mode=highest + +# 不提示 npm 更新 +update-notifier=false diff --git a/DEPLOY_BACKUP_UPGRADE.md b/DEPLOY_BACKUP_UPGRADE.md new file mode 100644 index 0000000..58fb2ff --- /dev/null +++ b/DEPLOY_BACKUP_UPGRADE.md @@ -0,0 +1,703 @@ +# 妙境 AI 创作平台部署、备份、升级操作文档 + +本文档用于生产环境的一键部署、日常备份、安全升级和故障回滚。所有命令默认在服务器源码目录执行。 + +## 1. 适用范围 + +适用于 Linux 服务器本地化部署架构: + +- 前端访问服务:`miaojing-web` +- 后端 API 服务:`miaojing-api` +- 管理后台服务:`miaojing-console` +- 数据库:PostgreSQL +- 文件持久化:本地存储目录 +- 进程管理:PM2 + +默认路径和端口: + +| 项目 | 默认值 | +| --- | --- | +| 项目部署目录 | `/opt/miaojingAI` | +| 数据存储目录 | `/var/lib/miaojingAI` | +| 前端访问端口 | `5000` | +| 后端 API 内部端口 | `5100` | +| 管理后台内部端口 | `5200` | +| 管理后台访问路径 | `/console` | +| 本地存储目录 | `/var/lib/miaojingAI/storage` | +| 备份目录 | `/var/lib/miaojingAI/backups` | + +## 2. 部署前准备 + +### 2.1 推荐服务器配置与操作系统 + +生产环境推荐使用稳定版 Linux 发行版,不建议直接使用 Windows Server 运行生产服务。Windows 可以作为开发环境,生产环境建议使用 Ubuntu/Debian 系服务器,便于安装 PostgreSQL、PM2、Nginx、Certbot 和系统级守护服务。 + +推荐操作系统: + +| 操作系统 | 推荐版本 | 适用场景 | 说明 | +| --- | --- | --- | --- | +| Ubuntu Server | `24.04 LTS` | 首选生产环境 | 生态成熟,Node.js、PostgreSQL、Nginx、Certbot 支持完整 | +| Ubuntu Server | `26.04 LTS` | 新服务器可选 | 适合全新环境,部署前先在测试机完成一次完整构建和功能验证 | +| Ubuntu Server | `22.04 LTS` | 旧服务器可继续使用 | 仍可运行,但新采购服务器优先选择更新 LTS | +| Debian | `13` | 稳定生产环境 | 当前稳定版,适合长期运行 | +| Debian | `12` | 旧服务器可继续使用 | 已进入旧稳定版周期,可用但新部署优先 Debian 13 | +| CentOS Stream / Rocky Linux / AlmaLinux | `9` | 企业内网环境 | 可用,但脚本和文档示例默认以 Ubuntu/Debian 为主 | + +服务器配置建议: + +| 场景 | CPU | 内存 | 磁盘 | 带宽 | 适用说明 | +| --- | --- | --- | --- | --- | --- | +| 最低测试环境 | 2 核 | 4 GB | 40 GB SSD | 5 Mbps | 仅用于功能验证和少量测试用户,不建议正式上线 | +| 小型生产环境 | 4 核 | 8 GB | 100 GB SSD | 10 Mbps 以上 | 适合早期上线、低到中等访问量,是推荐起步配置 | +| 标准生产环境 | 8 核 | 16 GB | 200 GB SSD | 20 Mbps 以上 | 适合多人同时使用、较多图片/视频结果持久化 | +| 高并发/商用环境 | 16 核以上 | 32 GB 以上 | 500 GB SSD 或独立对象存储 | 50 Mbps 以上 | 建议拆分数据库、对象存储、反向代理和应用服务 | + +磁盘规划建议: + +| 目录 | 推荐大小 | 用途 | +| --- | --- | --- | +| 项目部署目录,如 `/opt/miaojingAI` | 20 GB 以上 | 源码、依赖、构建产物 | +| 数据存储目录,如 `/var/lib/miaojingAI` | 80 GB 以上 | 上传文件、生成结果、备份、部署日志 | +| PostgreSQL 数据目录 | 50 GB 以上 | 用户、作品、订单、配置、日志等业务数据 | + +生产环境基础要求: + +- CPU 架构:`x86_64/amd64` +- Node.js:推荐 `24.x LTS`;可使用 `22.x LTS`;不建议新生产环境继续使用已过维护周期的 Node.js 20 +- PostgreSQL:`16+`,推荐 `17` 或 `18`;最低可用 `14+`,但需要确认仍在安全维护期 +- pnpm:`9.x+` +- PM2:最新版稳定版 +- Nginx:建议用于域名反向代理、HTTPS、静态压缩和访问日志 +- HTTPS:正式上线必须配置有效 TLS 证书 +- 时区:建议设置为 `Asia/Shanghai` +- 防火墙:只开放 `80/443` 和必要的 SSH 端口,`5100/5200` 保持内网访问 +- 应用服务默认绑定 `127.0.0.1`,通过 Nginx 对外提供访问;不要把 `APP_BIND_HOST` 改为 `0.0.0.0`,除非已有上层网络隔离 +- 备份:数据库和 `/var/lib/miaojingAI/storage` 必须有定期离线或异地备份 + +不建议用于正式生产的环境: + +- 非 LTS 版本 Linux,例如 Ubuntu 中间版本;这类系统生命周期短,适合测试,不适合长期生产。 +- 低于 4 核 8 GB 的服务器;Next.js 构建、图片/视频结果持久化和 PostgreSQL 同机运行时容易出现资源不足。 +- 只暴露裸 IP 和 HTTP 端口;正式上线必须使用域名、Nginx 反向代理和 HTTPS。 +- 将数据库、上传文件、生成结果和备份放在项目代码目录内;升级和回滚时容易误删。 +- 使用默认管理员密码、默认数据库密码或公开的 SSH 密码。 + +### 2.2 必需软件 + +部署脚本会自动安装或切换 Node.js 到生产推荐版本,默认使用 `24.x LTS`。如需固定为 `22.x LTS`,执行脚本前设置: + +```bash +DEPLOY_NODE_MAJOR=22 bash scripts/deploy-or-upgrade.sh +``` + +Node.js 会优先从国内可访问镜像源下载,顺序包括 npmmirror、清华、腾讯、华为,最后回退到官方源。默认安装目录为数据目录下的 `node` 子目录,例如 `/var/lib/miaojingAI/node`,不会覆盖系统自带 Node.js。 + +部署脚本会检查以下命令是否存在: + +- `node` / `npm`:没有或版本不符合目标 LTS 时,脚本会自动安装/切换 +- `pnpm` +- `pm2` +- `psql` +- `pg_dump` +- `tar` +- `rsync` +- `curl` + +Ubuntu/Debian 可参考: + +```bash +sudo apt update +sudo apt install -y postgresql-client tar rsync curl +node -v +npm -v +``` + +如果未安装 `pnpm` 或 `pm2`,一键脚本会通过当前 Node.js 对应的 npm 自动安装,并使用国内可访问镜像源。 + +### 2.3 PostgreSQL 数据库 + +部署前需要准备好 PostgreSQL 数据库,并确认服务器可以连接。 + +示例连接地址: + +```text +postgresql://postgres:postgres@localhost:5432/miaojing +``` + +可先手动验证: + +```bash +psql "postgresql://postgres:postgres@localhost:5432/miaojing" -c "SELECT 1;" +``` + +## 3. 首次部署 + +### 3.1 执行一键部署脚本 + +在服务器源码目录执行: + +```bash +bash scripts/deploy-or-upgrade.sh +``` + +脚本会自动检测目标部署目录。如果目标目录没有部署记录,会进入首次部署流程。 + +### 3.2 按提示填写参数 + +首次部署时需要填写: + +| 参数 | 说明 | +| --- | --- | +| 项目部署目录 | 生产运行目录,例如 `/opt/miaojingAI` | +| 数据存储目录 | 持久化数据根目录,例如 `/var/lib/miaojingAI` | +| 前端访问端口 | 浏览器访问端口,例如 `5000` | +| 后端 API 内部端口 | 后端服务端口,例如 `5100` | +| 管理后台内部端口 | 管理后台服务端口,例如 `5200` | +| 管理员账号/昵称 | 管理员登录账号展示名 | +| 管理员邮箱 | 管理员登录邮箱 | +| 管理员密码 | 管理员初始密码 | +| 正式访问地址 | 有域名时填写 `https://域名`,没有域名时可留空使用服务器 IP 和端口 | +| PostgreSQL 连接地址 | 数据库连接字符串 | + +### 3.3 部署完成后的输出 + +部署成功后,脚本会输出: + +- 前台访问地址 +- 管理后台地址 +- 管理员账号 +- 管理员邮箱 +- 管理员密码 +- 项目目录 +- 数据目录 +- 日志文件路径 + +管理后台访问地址示例: + +```text +https://你的域名/console +``` + +只有管理员账号可以登录管理后台。 + +## 4. Nginx、HTTPS 与防火墙 + +正式上线必须使用 Nginx 反向代理和 HTTPS,不建议把 `5000/5100/5200` 直接暴露到公网。仓库已提供生产模板: + +```text +deploy/nginx/miaojing-production.conf +``` + +### 4.1 配置 Nginx + +```bash +sudo cp deploy/nginx/miaojing-production.conf /etc/nginx/sites-available/miaojing.conf +sudo nano /etc/nginx/sites-available/miaojing.conf +sudo ln -sf /etc/nginx/sites-available/miaojing.conf /etc/nginx/sites-enabled/miaojing.conf +sudo nginx -t +sudo systemctl reload nginx +``` + +需要替换模板中的: + +- `example.com` 和 `www.example.com` +- 证书路径 +- 如果一键脚本中修改过前端端口,同步替换 `proxy_pass http://127.0.0.1:5000` + +### 4.2 配置 HTTPS 证书 + +推荐使用 Certbot: + +```bash +sudo apt install -y certbot python3-certbot-nginx +sudo certbot --nginx -d example.com -d www.example.com +sudo certbot renew --dry-run +``` + +### 4.3 防火墙要求 + +生产环境只开放 `80/443` 和必要 SSH 端口,应用内部端口只允许本机访问。 + +Ubuntu UFW 示例: + +```bash +sudo ufw allow OpenSSH +sudo ufw allow 80/tcp +sudo ufw allow 443/tcp +sudo ufw deny 5000/tcp +sudo ufw deny 5100/tcp +sudo ufw deny 5200/tcp +sudo ufw enable +sudo ufw status verbose +``` + +云服务器安全组也必须同步只开放 `80/443/SSH`。 + +## 5. 部署后的检查 + +### 5.1 检查 PM2 服务 + +```bash +pm2 list +``` + +正常情况下应看到: + +- `miaojing-web` +- `miaojing-api` +- `miaojing-console` + +状态应为 `online`。 + +### 5.2 检查访问地址 + +```bash +curl -I http://127.0.0.1:5000 +curl -fsS http://127.0.0.1:5000/api/health +curl -I http://127.0.0.1:5000/console +``` + +### 5.3 检查日志 + +```bash +pm2 logs miaojing-web --lines 100 +pm2 logs miaojing-api --lines 100 +pm2 logs miaojing-console --lines 100 +``` + +部署脚本日志位于: + +```text +数据存储目录/logs/deploy-日期时间.log +``` + +示例: + +```text +/var/lib/miaojingAI/logs/deploy-20260503-120000.log +``` + +## 6. 备份操作 + +### 6.1 自动备份 + +执行升级流程时,一键脚本会自动创建升级前备份,备份内容包括: + +- PostgreSQL 数据库 dump +- `.env.local` +- 本地存储文件 +- `package.json` +- 备份清单 `manifest.json` + +默认备份目录: + +```text +/var/lib/miaojingAI/backups +``` + +### 6.2 手动创建备份 + +进入生产部署目录: + +```bash +cd /opt/miaojingAI +pnpm backup:create +``` + +或直接执行: + +```bash +cd /opt/miaojingAI +bash scripts/backup-create.sh +``` + +如果需要指定备份目录: + +```bash +cd /opt/miaojingAI +BACKUP_DIR=/var/lib/miaojingAI/backups bash scripts/backup-create.sh +``` + +脚本成功后会输出备份文件路径,例如: + +```text +/var/lib/miaojingAI/backups/miaojing-backup-20260503-120000.tar.gz +``` + +### 6.3 查看备份文件 + +```bash +ls -lh /var/lib/miaojingAI/backups +``` + +备份脚本默认保留最近 10 个 `miaojing-backup-*.tar.gz` 文件。 + +## 7. 升级操作 + +### 7.1 升级前确认 + +升级前确认: + +- 数据库可连接 +- 当前服务可访问 +- 磁盘空间充足 +- 已拿到新版本源码 +- 没有正在进行的重要生成任务 + +建议检查: + +```bash +df -h +pm2 list +psql "postgresql://postgres:postgres@localhost:5432/miaojing" -c "SELECT 1;" +``` + +### 7.2 执行升级 + +在新版本源码目录执行: + +```bash +bash scripts/deploy-or-upgrade.sh +``` + +当脚本检测到目标部署目录已有 `package.json` 且存在 `.env.local` 或 `.miaojing-deployment` 时,会进入升级流程。 + +升级流程会自动执行: + +1. 读取旧部署配置作为默认值 +2. 创建升级前备份 +3. 迁移旧本地存储到持久化目录 +4. 同步新版本代码到部署目录 +5. 保留 `.env.local` 中原有非部署配置,只更新数据库、端口、持久化目录和密钥等必要项 +6. 补齐数据库结构和索引 +7. 可选更新管理员密码 +8. 安装依赖 +9. 生产构建 +10. 执行生产依赖漏洞扫描;`high/critical` 级别漏洞会阻断上线 +11. 通过 PM2 重载前端、后端、管理后台 +12. 检查 `/api/health` 和 `/console` + +### 7.3 升级参数说明 + +升级时管理员密码可以留空: + +- 留空:不修改管理员密码 +- 输入新密码:更新管理员密码 + +升级不会删除或覆盖以下数据: + +- 用户账号 +- 用户资料 +- 管理员账号 +- 作品记录 +- 积分记录 +- 订单记录 +- 网站配置 +- API 供应商配置 +- 系统 API 配置 +- 用户自定义 API 密钥 +- 支付配置 +- 公告 +- 邮件配置 +- 本地存储文件 + +## 8. 安全与漏洞扫描 + +一键脚本在构建后会执行: + +```bash +pnpm audit --prod --audit-level=high +``` + +发现 `high` 或 `critical` 级别生产依赖漏洞时,脚本会直接失败,必须先升级依赖链并重新构建。`moderate` 级别漏洞会记录在部署日志中,正式上线前仍建议处理。 + +可手动执行完整审计: + +```bash +cd /opt/miaojingAI +pnpm audit --prod --registry=https://registry.npmjs.org +``` + +项目内置的生产安全措施: + +- `/api/admin/clear-users` 默认禁用,只有临时设置 `ENABLE_DANGER_ADMIN_CLEAR_USERS=true` 才能使用。 +- `/console` 管理后台登录要求管理员角色,普通用户不能登录。 +- 登录、注册、邮箱验证码、生成、下载、管理 API 均有应用层基础限流。 +- Nginx 模板提供边缘限流,建议正式生产同时启用应用层和 Nginx 层限流。 +- 全局安全响应头包括 `Content-Security-Policy`、`HSTS`、`X-Content-Type-Options`、`X-Frame-Options`、`Referrer-Policy`、`Permissions-Policy` 和 `Origin-Agent-Cluster`。 +- 生产构建关闭 `X-Powered-By` 技术指纹,并设置 Node HTTP 请求、请求头、Keep-Alive 超时。 +- 下载代理和远程文件持久化会阻断内网、回环和本地地址,降低 SSRF 风险。 +- API Key、SMTP 密码等敏感配置采用服务端加密存储,生产环境必须设置 `DATA_ENCRYPTION_KEY` 和 `JWT_SECRET`。 + +上线前必须确认: + +- `ENABLE_DANGER_ADMIN_CLEAR_USERS=false` +- `.env.local` 权限为 `600` +- 管理员密码不是默认值,也不是弱口令 +- 用户注册密码规则至少 8 位,并同时包含字母和数字 +- 数据库密码不是默认值 +- SSH 禁止公开弱密码,建议使用密钥登录并限制来源 IP +- 云安全组和系统防火墙均未开放 `5000/5100/5200` +- 备份文件目录权限为 `700`,备份文件权限为 `600` + +## 9. 回滚操作 + +### 9.1 使用备份回滚 + +进入生产部署目录: + +```bash +cd /opt/miaojingAI +pnpm backup:restore /var/lib/miaojingAI/backups/miaojing-backup-YYYYMMDD-HHMMSS.tar.gz +``` + +或直接执行: + +```bash +cd /opt/miaojingAI +bash scripts/backup-restore.sh /var/lib/miaojingAI/backups/miaojing-backup-YYYYMMDD-HHMMSS.tar.gz +``` + +回滚会恢复: + +- 数据库 +- `.env.local` +- 本地存储文件 + +### 9.2 回滚后重启服务 + +```bash +cd /opt/miaojingAI +pm2 startOrReload ecosystem.config.cjs --update-env +pm2 save +``` + +### 9.3 回滚后验证 + +```bash +curl -fsS http://127.0.0.1:5000/api/health +curl -I http://127.0.0.1:5000/console +pm2 list +``` + +## 10. 数据持久化说明 + +生产部署中,代码目录和数据目录分离。 + +代码目录示例: + +```text +/opt/miaojingAI +``` + +数据目录示例: + +```text +/var/lib/miaojingAI +``` + +关键持久化路径: + +| 数据 | 路径 | +| --- | --- | +| 本地上传和生成文件 | `/var/lib/miaojingAI/storage` | +| 备份文件 | `/var/lib/miaojingAI/backups` | +| 部署日志 | `/var/lib/miaojingAI/logs` | +| 生产环境变量 | `/opt/miaojingAI/.env.local` | +| 部署标记 | `/opt/miaojingAI/.miaojing-deployment` | + +升级同步代码时会排除: + +- `.env.local` +- `node_modules` +- `.next` +- `dist` +- `backups` +- `local-storage` +- `.git` +- `.codex_tmp` + +因此正常升级不会覆盖用户数据和持久化文件。 + +## 11. 常用运维命令 + +### 11.1 查看服务状态 + +```bash +pm2 list +``` + +### 11.2 查看服务日志 + +```bash +pm2 logs miaojing-web --lines 100 +pm2 logs miaojing-api --lines 100 +pm2 logs miaojing-console --lines 100 +``` + +### 11.3 重启服务 + +```bash +cd /opt/miaojingAI +pm2 startOrReload ecosystem.config.cjs --update-env +pm2 save +``` + +### 11.4 停止服务 + +```bash +pm2 stop miaojing-web miaojing-api miaojing-console +``` + +### 11.5 启动服务 + +```bash +cd /opt/miaojingAI +pm2 start ecosystem.config.cjs --update-env +pm2 save +``` + +### 11.6 查看部署日志 + +```bash +ls -lh /var/lib/miaojingAI/logs +tail -n 200 /var/lib/miaojingAI/logs/deploy-*.log +``` + +## 12. 常见问题处理 + +### 12.1 Node.js 自动安装失败 + +脚本默认会自动安装或切换到 Node.js `24.x LTS`。如果服务器无法访问所有 Node.js 镜像源,会提示安装失败。 + +```bash +node -v +curl -I https://npmmirror.com/mirrors/node/index.json +``` + +可改用 Node.js `22.x LTS`: + +```bash +DEPLOY_NODE_MAJOR=22 bash scripts/deploy-or-upgrade.sh +``` + +### 12.2 依赖安装失败 + +脚本会依次尝试以下源: + +- `https://registry.npmmirror.com` +- `https://registry.npmjs.org` +- `https://mirrors.cloud.tencent.com/npm/` +- `https://mirrors.huaweicloud.com/repository/npm/` + +如果全部失败,检查服务器网络和 DNS。 + +### 12.3 数据库连接失败 + +检查连接地址: + +```bash +psql "postgresql://postgres:postgres@localhost:5432/miaojing" -c "SELECT 1;" +``` + +检查 PostgreSQL 服务: + +```bash +systemctl status postgresql +``` + +### 12.4 健康检查失败 + +查看 PM2 日志: + +```bash +pm2 logs miaojing-web --lines 120 +pm2 logs miaojing-api --lines 120 +pm2 logs miaojing-console --lines 120 +``` + +检查端口是否被占用: + +```bash +ss -lntp | grep -E ':5000|:5100|:5200' +``` + +### 12.5 管理后台无法登录 + +确认访问路径: + +```text +http://服务器IP:5000/console +``` + +确认账号为管理员角色: + +```sql +SELECT id, email, nickname, role, is_active FROM profiles WHERE role = 'admin'; +``` + +升级时如果需要重置管理员密码,重新执行: + +```bash +bash scripts/deploy-or-upgrade.sh +``` + +在提示“管理员密码(升级时可留空表示不修改)”时输入新密码。 + +### 12.6 作品图片或视频无法访问 + +检查 `.env.local` 中的本地存储目录: + +```bash +grep LOCAL_STORAGE_DIR /opt/miaojingAI/.env.local +``` + +检查文件目录: + +```bash +ls -lh /var/lib/miaojingAI/storage +``` + +升级脚本会自动将旧部署目录中的 `local-storage` 迁移到持久化目录。 + +## 13. 上线检查清单 + +上线前逐项确认: + +- 数据库连接正常 +- 一键部署脚本执行成功 +- `pm2 list` 三个服务均为 `online` +- 首页可访问 +- `/api/health` 返回正常 +- `/console` 可访问 +- 管理员可登录后台 +- 网站设置可读取和保存 +- API 管理配置可读取和保存 +- 用户注册、登录正常 +- 创作作品可以生成、保存和访问 +- 本地存储目录存在且可写 +- 手动备份可以成功生成 +- 升级前备份路径已记录 +- Nginx 已配置域名和 HTTPS +- 系统防火墙和云安全组只开放 `80/443/SSH` +- `5000/5100/5200` 未对公网开放 +- `pnpm audit --prod` 无 `high/critical` 漏洞 +- `.env.local` 中 `JWT_SECRET`、`DATA_ENCRYPTION_KEY`、`GENERATION_INTERNAL_SECRET` 均已设置 +- `ENABLE_DANGER_ADMIN_CLEAR_USERS=false` +- `/console` 响应头不包含 `X-Powered-By`,并包含 `Content-Security-Policy` +- 管理后台“系统日志”可正常筛选查看 +- 管理后台仪表盘中数据库、存储、日志状态正常 + +## 14. 关键文件 + +| 文件 | 用途 | +| --- | --- | +| `scripts/deploy-or-upgrade.sh` | 一键部署和升级 | +| `scripts/backup-create.sh` | 创建备份 | +| `scripts/backup-restore.sh` | 恢复备份 | +| `scripts/init-database.sql` | 初始化和补齐数据库结构 | +| `scripts/database-optimization-patch.sql` | 数据库优化补丁 | +| `scripts/start.sh` | PM2 调用的启动脚本 | +| `deploy/nginx/miaojing-production.conf` | Nginx 生产反向代理模板 | +| `.env.local` | 生产环境变量 | +| `ecosystem.config.cjs` | PM2 进程配置 | diff --git a/account-profile-migration.sql b/account-profile-migration.sql new file mode 100644 index 0000000..d9d2bf5 --- /dev/null +++ b/account-profile-migration.sql @@ -0,0 +1 @@ +ALTER TABLE auth.users ADD COLUMN IF NOT EXISTS password_hash TEXT; diff --git a/assets/image.png b/assets/image.png new file mode 100644 index 0000000000000000000000000000000000000000..23f816253fb7400fef44712bf9431512e1cb49a1 GIT binary patch literal 84927 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

x>(7}DD>3Phl3nCFbsX2FXq4?Q!j%I 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

kvwba5nNE#9fi)( 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

b0{})~F2(N?b{iPj681*yLcyhNbiw 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%0Ak?}C#z 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

|9U13VlnNb+anDt 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

-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

qse*d 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 z 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�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𝔬Z++@P+ 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�Ob0$Gfu79 zWj`Ur9EtN$y$ti}ZN(bV%CqI~4v+v4QMQ{Kk^XLG;FOyv$%vk zduo-H-KZ!|XS>Gzv8CGUbW=K|;%jRx{cSVSpWPfnRFKy#_giDPhtZT^N~|~PLt3=)3q6xs zUWMz?J(Y2qaxz}chQSur7h?bp2Ezc3N~3`^Z3)HO5}L>0JoJCdCqVW%hj^i#4*mcz z;R=dSPdV(*D;p-jv$cX_6+Rgw>ym_7&4g-98=yOk)(rX0kf*@Knw39mE1CeHH1+ec z3r@bHDKnG$pYIz#{eEVR##%KSO~S+p1C!5~IV~=YU#fQE2Ryi=5%~F8)h8#yJG)BLUFafSRyZFt1qNRW8Acu-aIb(q0MR7pXN! zo}#_cn<~`^<#}Y8+msEJJeP|D9N1&j*LY`C;`IJU3K07pPC=G2{LVZr?K;z~jdf;v zg{7n@eOq7K(CVcncN@Uig!uqB;;vARe(9j4ijmfb8(QEh&<2-Q+#MO*WU@icZ0Z7AU zh#*HgXF^VFVb#3|C z1D8c}A*zGCU6`I7S)A+3_HBLHwbP1Cl)UTxUSVps<;>EWeBsse^8BmIa^l>koLt(J zvuj3DDb_)^+tR3!@}I6}?UaMIstPx_awsxL>j2R;tkd*oda`tWO*-wN{J9_fp#1pv zzEdV=UX^pF&PsoFK4muSNm|J494PH5j`HF9+3B>m=kd9Hcm43pzBhfcvrq~?3}cmC z`uy&Gy1Q44~kl;j@X zVK;DHK&L^9kk$llSXITr8Ehi*q#@rL)F9Ty!vJ1MDF+}KyQF}1o|G4rUlqWO zklGR%;@KKYPCM0+)kiI@spWs^wyiSk%#L~K@7O21uYQxv?zu)Q3<1;k!_3fGSllxx7RU+yM&w+<$nu?4dbfb z;n<4F{HPfd0fNx_uJioBu)@nodH_Ulwj@ZpFsv^cR!WblfD7y^yy7Bxjbg8moJhlq zX_=|eqOTPjjx2193D_JkY~w8#$+H!pZ^HoC0#zUnoZru(FKh^+4KZ@5i-t5dLz}A? zk`uyU`%qAgjYM*oWJm%DU}$IGs_;u5r^cAltVI7qB4JDjtU&&;>O`Y+6yuO{YN1vk zBC)Y4H&vBKssd%n@<&K5%_pCIVf0jh1+6X$d&YPq7=Tbs|m z3os~=H3}%L$3Ld1#yl#(NYCEJY&F@6_&x#4IxPZ^Ij>cHHLaz14!s8*Qbs@81aOV| zYwxk^k%l%xiwHPDKF(INB6IwW^N-=VSV(?`HuaEZSY{-QuO%6$7HFijrSmoo>CiDM zK$qD06=3dThB>ar?qXq`Iq})oIv*auw*(e1?mW=(4QEJpEcyny21li%74ghwi>fn) za``sbDaq03SEyCVUX7`ci!+btg6jJK52O7A;wvz>b$yxhBbj~Wzizi{k)WN96=;}F zWqo5qR+rahTn=iP%C?1`?AtRhdvcf( zhdqooLhd9>8TtyobAmD;HMo27+`aBNyaJ6jc8Y&V|oo#G#pgnM|nH#vYzr;TtL*LT~> zs?#;5x$DL<9D0S=)0_rXPhSuKAQ5o|y&E#NT+=Q(@^m8S&MwKfedsp% z-~X3ymuq&8M4P2_`1=CLLwZp>9a3rPwLC9$Vv0*;u)7X7-8?{MFgZ-ue%x zqxH3mPV}YE@7ibXim!X4fVtm#-S=GjyuMGX-7n0!yO&@3t-mu~Ir8qgorh&O-1P9i zu_rL~OanTHCQwWWc^K$;sMqd0bWqN%cjTY^tB=Vek3TJU+;YfLYL8M_YQ=evPY>bd zhn|w~{4i9nl~!5xvf<96v-064IKxB5N*NiuHN27_P-ZakXSnAB1_M|Y25zN64r9~a z4dW$?WI*X<0iQSzgm`+`>|5-MWObz(%+zDc6O?hD{LEDT(o$*WMsD^!#FhfhCBbfPm+`gE13i$_j`|Ew-#5uNe}Bc2S%G4oN#U70ryl*m}T$ znaN!g)QUMV_y8=p0E@YRgsx!&nHk)$dvd+l-1(|kaI8GHfWPTcE6>+FFShXg+4i0? zE|y0QOjj6m#KdxzpjBJ;7384+_SjNb!`p}NHJ=9B?4igC&<&*19m?EHN4hifGPmb| z%+jJ@J#o21+KV8XwBB}9)DHjL-8UN z{?JIy9*jF5gN9*l%5o;~Z~i@AUI9=w_!c54ShdVnLrJ11L0|0EH3i^UIbCAqK&4%ymXfk-#%A?Bn2M%n{Zi_CBrCCSwzAjWt~{J96X_ zbisb)m6E_lf=ygyGiCP0_BxzkHV-8CBUJ%_?wSo=pYaLG;7kV-i+VtNo|YXsbE0nm zBCEB`VWxO(`(B8WeYp^NPW8cu2rqc~=^)U!Qp4UOzf!%V?J8zYn-gLF> z+PPg09oj8>_Af|hye6`8S}q(rCg;x_m!;z;<=lx=a^dtj*<9O@_4UGVD^C25OiEz} zt&G|!N=G-zR5|ScoZ1sq0AVaLM7XNT!*u8<$cAC{e^pY!PN4jX z@p}|nu#gD`#OypEyM)4lEw?im=7?hP@z?g{nQQZqbL*18_2y*DS^*b!P~pl zSjS|CM8(%e#7C1soj>L?DD<9zIXD9JsfeQTaZ;VXVj%lSp&>|8?Pi@MvGwZUvQPx67^V0SEUir1#wy~U+YQJow zT6z<;aa{N4&GzK<$#Zh$<=f``xu8 z4}SNBC;#35cV^p;U9J9tYz~G70BFGlF9s2YPt%Z`%49f@+1VM{b>NUZ{N!u$^Z)Eu zWh_Iv^_u;%vNkkhL4_ZA+VKQH$09YCR#r@^3=dOWlXY(fRZV&2mbM+gExj)vJkMyTnu!EB3nA$c>#3d&1{IhjJu_a%EX41`jh)$dj1 zfq)X5S7OcieT7*E28)ILqL>Bd9AKkAuRV#v5$%%iPAkferPUruXF8T{YoulDyWOeG zZJ(9y;y#%_aE;6!yh)}zuaj|qzpSo~SuH8t4Xio6#Pi1y$e1GmIoed_ z3HZ^!Lr73tDA6~TMF2te8k+!AqZ%chfo7C@UM~ul1Y40F zms#lu!KqJ7T7vNf0YbK5Sc#~Z2Z2Pf1q@abuVVtdaxn2`TD=$y*J13(8Yskr^O3Yx zh^ZHA@gjQxV;pA%?fGbS$l5$Fs>R-5{zbm87;he68pAM(8|>D2Y_jEIjW*bRSd7sm z$bZh8M)SdXS2QE!UUO~ony4Ec<6ZUB4PAu3>n#lWLFUwQBFB|MH5xPm@v}-j+S&~H z%BDBFlJCtig8hCmfVv?)8goOko6}bKtw_?JOgUmPR_l?^h#bdsCOBg*r>@p@$Z1L= zS<5zUP%>{i{jM?Nimfo2%F=~3Szj##nXJBeaPOSF>pgeL-t7x=#nt=e-gm!6uD<#* z*}G#Z+jfqnH(i&>*>kdd;-s88bxO{^c3f7@oRkZv&&$U8ST;AtGSG&#rPZ;*3^MIn zK{%IPBhLqi9H!;>V!K$RP06WZdaC7vL*z}QW48R&%IY)l&Ojn(xcP=4;u!7iQc$t*eN_M4Z z%;Z3Gx3LY1ubR}~ly%mJ)KjpxVB=wx;~M1CwlTK%RC;B!tbo|CAyZc>Yp~>~8;^_b zYcSfvLQl5Mb!C389_lCa(Q}{D*cM*2j^bfq{jmk0i={fBxnBTi*=2L~^NxfvSTmnet;<0cP}l3y>LNxYWG0XSoqmKork~;Vt!p1JzmaZH~9v z`N3#IKr}MMkg-TgYyw-U5$l*lBu$1S+n?fJiPIg`WE9 zgZuUGsBnrkex8|kPH%3l6H&&=Jv9g$yDOViQd7x*d-7FGdx&DmN1Mt#9aIwEExwHWm z)^31+T6m)4pq|fjuN03cp)k&*Q+mG)rPmoqyEV|f82!0L>Fzur{ry+T%)aZSv-5fx z&g_-V^#wV3YFVCr`UQFDf!~(GhN*F zGh{`r;MHJAVh9AhHSICqfDvXwXCkVz0)*jeim|)d7_UGIlFBX=!e9hbDc)qx5A28h zmqV)v!13QP9$0@2{zo^fd?O{CIbTAe&=up{7bb?hjlS-y&=Gwv4ETE7wao#-C%_i% z;(|Suv202|95wk^9xq}jQcsOdhw%p^fS%2!Y=c!<=VyY5N;#KpwQ;gbkXMY1XSc3k zWYKT&Ow2>=&-ZF`2+fK$O>;+Wtw4z_EF-Xs^9dpMd8Rq^x|z?gD)NzY1E3}#1`5?q z5GQkb=6u&IAu#X&Nr8>$E52e|p~V=f+@2H?#E?qE-ZOp1pU+GWq!hRaKpqnRV&eg0 z6!VA>RcsUjZP_ux00NwlVTc8=W$QSqepA?ao{PDE%oz7kYpfamG4~JW!Td)J!j*TQ@Rvey0Ee) zD=P%VwM4EyyeQXRb%or1=T)-*z%IG<)?4J>cfUgx=cm%|pOM+=SjOki%ks$=Wa;=T zvV6RNaA#!c%&M$ylu$p*acxymJ6fbctE4*nOF_5MRE8RsYB{GZR25U;xul)NqebO> z4#1d;A`VJEaFEW6Fa!WszALGFutxoR1L6Qw*&LW!XEu_tqWl^M_jrFPKoZlF4k}wO zrr(w}#rXSLx4E%1Px~8TL*5p!+Mt)=ddQ0Gh3Xh6L>2w5hz5Cfa6V36`{WBEoyc?F zk<7IGvE&_IMSs6g2lPdx>abkLG&p9i<)<_e}d7N87ZTfRp>@OhGcUeWiZ@OkqPQCcNOh+x5>GZWSa>!DbX(qRdjcVU2+pmPK_d2qE z{Ft2LO(Ae1Z)@N@^-!ndsO& zo~Uq`1{%sYr7i9G-oncR`Z2(wWENn4bs3O4N2V4TK^SZRVtxjJ(S&&zsznd`8{0GS0-O0qyq+=S2l}Lq=rOPHGXd#x8|XSu>znM?{(G} znSRFnN+T$M)R=b%=Hf87P|jRu_P>U0nL-~?rNP=V=(B)T2=OT_vjEI6FN9%e+kmur zxp)mha}>24)VSByae{_0tV-pyav5yK5}FG(UaUEtjs)niju2ph&T4V>0R!v1*J7(A-N`5H_}$PfmL!o+u{1ls0UOk4+G zhe5)$rD`x-zp`c16n*t;>O8PW-0P9TMeJ$INp+?qHqiIsGt;d{@U8*EVOE7p=1 zAP6Tw6P#n`K()4M-+8GZXN}+%S5OP+x>QQhrC4W+@lFA=7f^cGP$;|CX;eHV1NHWnG3F z8*$$iS8kI-d-uuZhxg0fZ@oe8y!#Hh_Nx7I_?mf{neE8zq$A^{HCb7DNtTa2C(B2U z$cb?ICHv}YN^w9U!>jDR*hRF%&#!6ZiMWl;xt&XEJ$Kh;z7`*^Ic}=dAsP@@l=mU(DVxgt14R&vI-Fq zVdJD(7Hu+yMTB$m{>QYd^G$DRtImvZ3;D&)go-H$35J4dF84gV8fl#hWL-e%G!yS<-(csGSi!pZrLv&V?d88XaQ?~>)9GeM?;&ksE{WMSyKEJM<8{ZNP8=7fXQGPc9vC=c22UZ*|-Zy|?`V6q6?9?U}0WnQ{lH%1d zb#%Q0K9zy3c27`9Dlp2*%Dcmho~ws;7;3o%p!}O5TEI5|(3Dfo=g5j0pyhRvbTF-K zc*}w<`A>X4NSOmp#=v73N660x78Nnn@FuHlY~z9ZQDDJKO@;!JtgG_Sva^s!(E%_N ztMH->@$LX6ZJZT!!*{0PBw*=@V3qOa-$M~8KNUbuLvG98P#6M00QN5SueVFbLcus^ z>=grna?^E`i8$6!*VcF-t=7=0&30Ncv#=nuI}gh2;hSY{&o$E7ag7Z6+hlcpDre3O zHKqoV;5*;kMwu5bn5L9)X4Noa3P#+GY}%rJrH5|^zn?qa~`C0=`ktfrEd#5w= zyv8%C@3u6r4gm~<4`8Q1F)wEHvI0@k5`kkVS=q`c;8t)$BMk+&ve|Ypv|t=lGa9|F z5fFYM=M)1vQG=}3#Y_rb%_CleGZpKYjM6xJazx_2mLoFvG(Z4m)blXI7{Z)aY+n5A zA!1;N1fz=jwuMFG0HW>P8kobFFzAUp;S!7`AGw4v795I~8bScG#D>Y{qrC~ihXlwe z${{CEKY^xZt~&!dLO0<(89LrY)?t+hAT4j+(x`{rcN-Wi!MF0-YhvUc{UoIiO&*3X=m3k8TI9>A|B3nsO2LmyWW-9>XPbsIij>}Vhtxrc( z1y!bA>ZHgqr!!u{buIl}$O(O>k6o;|SUee)ifIQ!jm)O3*s6cW`NDEAS$ql9@II;2 z9wa!JdjjV@fVt=bvwJJ>-vL$taU@?uMx*cK%;K@GvfosDqv$i3W4E_le~vlD2pB*oVIK!uew78pbZqaz4LOCrQTuota1z!?M+fM?+q{dT^Qew(G-X-_Fc*WWE4( z1r(p{Xyn<->R67QT9cFKHx-~OdulLg%i6|3zV8p;D}U+Fe5>r~ugaODuaz2~R!jmc zngG1X0i`x%zPt2cbNSfn+*Kd?sostof2!5)oo}_fUqr*W^!eTX%v}EZbIg_5dHtU) z3e=^~m+w<(sok^votOWcjqL~Dw|?QoJ@Y#c$oj^5O1(<*rA~lQLIWWBvavCgxz%O4 z^Y$y{-S4?me)ZQrBYSpjlU}bQ8-t+=iBgUnVX9gI2?EV?K15DASCo-c!IG+?$$S{P zz;uudIXTpb^Mpm=DI$Fa-Y3p;WO?rBG^g;KPy|q{!Mg26pc^MJcT6;8Kkdw#e3RdeUkAKVbN%F*$V)! zoUy5Wb?_ByF1+@*Pr*7@=|C+FgKVk?`2@v2O6$QK?EnNvPCH;lrtF9EAGu~6c=fRy zQ+_riz}Gnjxb8{`LcDbC6s5w!L?zz?+$#pAv*>JZmp+?JC}x6zkzEgQ?kf|pQ`m0j z*Jb1UbJ9EUlJw{2Wnur7(%XGVcI>@UcI~}RuKw0rBpa&r*=u^eKOIA!O+6j~~1uer^99(3BI*ju4jAQ;PP%h2@ zvKA<;EyB*y(d_cX=aWF7Bzd{qz_?e-Edf3D)(2Y$GaPmz-jhtBH0;vK!dZnS%dDjc zk@PV#!!vIW950a9bVOkclC|w)%8EblnQB83utM{~MqmZPVUDQ%3V!iDv?BwQi@lQJ zP;`KAeLfqC%!-fUtes#m4tbv?`;|al0ufm0YBK(k?Mk^7iM7rjW@$C|ef1-lEpc5k zJOZq%RG$XBG|u3BFCrRzv)4>b2E`lqC5yfx3t|G90f%)6fZy-oy#y~^gv(VZZY57D zSx8JKtbb+!vN4~4d^P+5+{GaKSYW|00Eh78t?V||MVT9z27ZEeC=!&iI>21$G7c=1 zs*K%!$=g&z;j1pP9Hfg7QP*jWspNAL#o5XQHt(9d4Nm^h0UZc~-VeJ24u6`x0A)R# zRh{=yb=j}OngxR{76-L8_L2R)*g`Ch<2~`-T+!NQ)#qu$Isl2^BR!DoYAhSWY*BsG zKtB5ufsB4{8TY`Zr~s5Picw)UH!j*5_mGnbK%tIFF=Bj8Tb^)?PmXh?FJZ5{9h7-D zx9ZZlzMZszJq!ICy>y1Xv2%St0H8o$zd0L@Hf`?d0M@(!A=sC2qB_erXA1qUS?daZ z^Lgv`0(2!_E80F?Pd?_6*V>)a-Inxp?n|Ku+dspR$mVDyORGaoJu^RB!d-h>K<)B< zv$A_vU)I*g(wmu;2R?g5?z&@-{INguPPuGxEN5RmrWDd%r*CPCVwnBB&*O$zj3pm* zPlju!rMvB_N4xWv{kvADza*1^OvaarK71vAz9h!n@Z1w$md0HAT#9`)Jyg(RkB@w(+XT9C1%Z=r!hPE3xq1PD}P&woi_pS(U%@GyhRu zIeuR5y7_=ySlN(q$>XF+E-iqN()N{?n7{TzyGwjgBc>zVv9_j6lDuAh!gKHQg%Z7T>pinkl z0iwLfgfzl(9f*Rx2cs8^DrMw_K~9G%7>`~-Nx>|Cp1ryWf^e`Eu1Ut4jj_)ys-1G4 z9(_+5qo|~6NEC`_7>R zTw43?7MZ_R&Myz-`DdPy#~y!HKKI!#$Y&paTAqL5MLF{7SsR;nN2|MT+cqz~Ue~K# zO=L7IM#R|0$df*E_^HixvO@uWgd!fwJF%-Ody$lW@}Fw*UC1yGZ%YL}Wkp)11T4ii z$ig=XTyx$qid|04G>t;e8wEonFoE=t!>9~ch13C4I#F>szYEuXkVs5*(|t}tT_wiBA~NTVKCksx(M|@hP{SwYr`#fHun>4j66=r%gU8y zsXvypx3M@FVE3DnjSAyB-qctj*aKO0u>u1Dxbk|aFy}@NHgyWwUo~8?QFXXtdEw;p zcjAo0S&gcO2&KZZ#SaW{)LVfV!AwJKj918$T!u7LIj79ZNht+Ze{vBk3@!w_=NYBf zqToq7EC_6@Qd3ZVDgsK-4$g@hAgdqUHW8K^xSU})mp4k~)RlGF9Biu7seJbCo|Qe@ z7Uh;Zu9WL;xJqun?MAurrpx8(>krAkgL|b{8n<#vE*yVW&c5=zEFF1SRxg~Fr8DPc zV{Jo*n^T#Vv=D_gQ~sTFWZEtfGhXCPo$q4>`b`g^#f3um02B-gY?rE+s{}}_C5!*$T^k{FJ_w3Tmr~*eHlwA za6jbU_LY;m0c--h2=CEWdI&BpYMEe9dSz4FS8fwT-aY8G86Ig*$y{m);3h!G>pudP zAXlKjG^I!E%M3FO{YVii-wRH3L=Icb1=6xTT-bbWQ4B30?-T1sFNrMYc+k2O8huERKrh)JB)h#&E_OvPNp9R}Jqr zPk6bc*Dui~CFHav+vn%y?D9k|EHBBA|M>5dKk%VDWaG>cSv`GDdY#!q(lO>J#$8iQ zC0QcR+mhm@FzW^~Ts?nk{)Ye8kM(w5|8J%;9X8aEOP??Er+47qH>mi-sY}Hl-q26k zv_W#?5HNJYaKT7C#4 z?2$^R>$u~vqI1-mYoP`PjyiMA85{<(`MQeyc%H=8`uP+S^Ki8ge2U+}F(fxQLk@X{t0U*%A&g>q6^tVgPCRLsrX{NOFL1xA;K{zw~ekt z1rU9YDQhl)u^1mHUnSp$=9i;&txE|WNfd#wP*H?FTS1NTOaO!#28^X-%hT2XjCal5 z7h$hc>B>ktGSYl>t?5V;)y^#}$o$?z(%XBj%pJT=WXFCPO&8_t+N`|x+KPPkv(L*X zKK5yO{P8E`NXd&+a^ftHq~Gt$w)r`ko1d}VI|ZPFkumoD4sR`hI0k0$gI6@R-x27X zT3l`DXXr#24q@!oC*`a&X?TFXh;Hm34-OdoKMVhlGQY(*oA~OLcy<`CXr_*<$Nfb$}puq`(RSq z)yj|wFqQVS9c?(o5;zTKLvtP)p~vxT!W3c|R2p%uNHa!+;PETQV2z9u!MT)<&K~G5E1g5JnHsq~0E;2NVYc zs)FKK0f&&m>RL?B1mtb%ag7zCp0f|bGmm>ZW- zt)1+xWZ%`vN(0Pe#}HOR^=tyF8;si|>XT!Td9A({EZiK<7Ca*ZB|_HYp6Kq@;x4t( zonu@r3IdzS#Eya~;h1)XiQ5}u#z6v>OUOywoT|`faNbfO9MeIv&5`zj*-s6p10Gph zTFKaHce>K+cT^87diQWN(IRgvE329xy4x4ou`n-(uQ(`oyy;qb$2;zpt1mw&H{O1& z?7M82Y+sm&3{J}M^eeJ_@|dijJ}Kv4J0_=(oshNF6!mdv*@E&)=V5}w+Tkrz_a z$QVy#uV9<&`09KI`>3$uyt1n%&-c(tMAV?G6HSAI1IgBr=8*G9h>X?%b1v720eW_A zI{LFcrX%7Qu(>y2kl0+s7Qq>awH8ib8hPK3zN!qEi}^~%l{Ld0Fq&%{a*t$RJTsz# zD2JZQ2~BB3Ikzq0f9?tEcgkshZJhnu!$LklE=2 z*PLGG_MzHp8Uk&4xxSaCE}8gnuzO!A@2I`T<**kWORKUDF=hu<*t}tff`OYlm)g&5 zk+9}X+;28D5aVl0*`r7UF zWq9G$_3o}W|I4{+f8Sqd&n%v}RPf=A|8)1<_67lSryqOW_gwn?|M@A3(sf3{!zcRen)R^mkb7*#ApB$!Hp?lfWg=?Dh?+j*}iLs47;=PbHDH#@}GY5NxAFx zgKD^L3`g!UbMKiSGMUgcy-Ai^jy?8 zJtgm%>h+0+7(koVTXE2(&mI3meFe+UkiR(00h9r}i`;Jr^{hZVuH0)AgFYI-mjxfn z(-hzWyZ}%Vd(8WawW4cWK{UIjRr1vkU}o2P!G~BYF#eofr+MXUjE((gpdr|F;K%|< zMZ*C!r_yEpHejwT-A-Gpx^~(H9G*zG{8tQ;?nnzq%QSsWp@)9&{1$bAxQbbv2lsjzD*9ztP6 zv`&$_B0w50z(e`FV&7&1{CUm>cIy`Jh%*mf8rL)8y!3q=TOW+37_;0(8nOkZLQF7N zP?Oro#CQ{<9uLHEPhSP&F{(NS(=<n7HIZdk~hSO*+L;m_5abPmk%nrHCS!Wq5isrl!N`nMA{YsBM3d6$WZgdWz}1CwELV#II2d_SZWGo#;Lw<;KXE%$QcLu z3KK{>nZ<|{bi%m#=7Rjg$d<57WdRkYyDPfTk3(NZRa0f#tHlucNYT!iLr))qYOI*% zAS;wB9W29|%$1coYUwXdYs_0Z??}GH+A-7z&%k;!04C)ca_C`0CCe?AE!hDnKkT{5 zMg_2~&(vz8DM#2D1RXeFe%KSSm0Uk8g#sNgj`jp`0rJYCKr$2+a?a(vzZ^@S+X)#B zKn?GYB6?g*##wV78{}hW#%B;XT<69+DwzZ6%%i540RW77;M|XV zUXjxef#^za+O@y)n&tY2K$bpdL|R;6fgI1sqFJ7W)6Me2YLtI{6MQWJEj=$OP@FB)7^9X>%Zqq zc~OM&UHZI%9|fQ$y=?~{-hSN&{?XDC|MIVQ`-}74k{2R~*0r$~N~{Y)Q%*X{eptS+ zEW7u0<=ejHZSu%xkI2(6o|l`i+8K#lHG!p9egWuZIp(HYlGUn^heoSeQqzMB;R>0l z01z3t5LZwL;xG$ZISwLtz;L)h*}+qMloAif0}948BJ+^r0ze>z+mVCa$JH2v8lvcj zJ>+w_)fDJFa6?&lrW+10gdFK}BT+4q>ZXSataUIK!fEC0FV8cO6vjs8YO4x7z}xMq zTiAwx0%2pFHGH)60LITz#PZIl)alQGf&&G_y5=FCF^{gSd9E{68lvJQ8QMPP98zl$ zrW|61M#ZpZUWW*qF)vy1K4F2T;R7Sp4|9M|ILTcSl60**-K zp6-fQ2k27E&^i#3`W%1<@@6IT>0&Jmph9nlT+ctUkx$+8m-#6SVZ+Yw8a`@USWU-KCWL2i8 zpON)v9+Z{iFUf_IN9EjW$7E$`N!C|N()bdRI#a4I%B0g3=@+J#vEK?CPMPCg(9M7_ z1K>(tX{<{tz5sBd0CC2UgcDu?x^iZ^L%s?*bsfFDFWHa2z5V{3?6L(j?hJDZqE9 z+mSO%1DWYh<%hoieRAiGyJhXvD>B&_NT=P)^UcqJupzwYpczA^1eMe-?a5Gv8%rzw zE5GfZw-@$5B$L5-TF7#ju$!-n&zHoQ+c^2)m!&b6KL1ajVzBmQI@;WK{)vC_v%_=G ze9Qdy%X)+1z-iOTYSp}8#0)dQB2ABC@XpV6Wns@g`Q?v%UjEwO{dKwW@J`vYqbKW| zBlW1MAkoUA&cMR~;HA*h+rZ`m1c*r{PiIxJWt92j)i50!3W26_PMO4}AR4PJby5yj zi35izEulktBGR<3LUBh(q$cafpZs6*_0>il8lV(nu(15bj9_6kn0}+=`zg{%ql4ZJ z!LA{SMqk*_wsuE8nFv(@yU9AQ%pC^=GhZ8? zhY(XJ^3&?MHWp+pV|KwtL&YXC`s{BdoSNp7*?U!J5HaOwtZjLumsERbk3kFcLs$2Pf!&z8!r z8cI9W{FnNBDH&0!xAr>H>$Q|k*K3WXr-0s2I^B`9=VoL&vs3zeuanM>>!rQ-W|3`| z%V@kH$4;M;dMg7ya1udVehf-ge9&2`re6so}S()U=VreG7l1f z^RSa5NppsB={0di`2CDVsc1DV(-_%yT~<2tO27;t#hAhIfwLl?TP4?zzB;f%x!bBR zIG6JQ-gCHU3|Vb42Qw!JGZL^@Z0j)YD6H0#N9*$&ig_>r{oY(ZHebcD#6XnE@08tD z-aThwMgBnAN6GZE3C;5%{}&A1Sc^0$d^#n=KL4JK0{}3|Hp};M2q%v*=kLpqD;uw5 zKi47L=vRi(f?2^KvYGdYgbXq1ne7lpQ5et}{uqh|v&3*tdOzb8ZuCdUD@L!XW(`IS znv`dcy^j`UJqh)PLWe^}Xc(yn*ij*bDy-PAN0M|n8)F<*zv5ykILeqMnyZ$ZmJFCQ zKEX6?qHECMu&u4h)()h`NcN`Ri^BzS4q!W2>b^08(OaRgyz0oS~(Yz{?+(;1Q8 zj0$iC;YtoT4@E5wsK^hez>P)2D2vDet}$419-^8+mR+M@p3iTw1r#XpGb}*7QbZ!6 zXgo+(6_LzIXn;;sbd(bG$Ig;sVmcg z6Rt5W>{7&Z&l36!rY(8$xzqApf8Z|pOMmgdlg05lId}Yow8!PT5`G?!h&61{D%Ss^ zyO$J{Meg-FEg7#I9kdp%{q@=F|KJZvcjl;+eDn>y^U~*y`SdS;_Zw7|HBH=0pEvk3 z9goUEb$afyyZ+8_>7|>8!_`~5-8s+Y5HcY@E&%jk1?^u!yN;}{ZA!1VBwzQgTjYU< zz97GP-}5qe(_YKpq9L#4nHkamsihT^CJm)23{Mk>$Tii}j-aQ8*UZ5TFVITHWFB5% zf`tkhiM`zrP{e|0!|vh=@>Jj|ZityKmX{buh{My`1A|7}=>nYf z-s0u4d=qHD3)149^u8(xMJI^1$GvJuf*Sb`pdisP92u}k0gghd?)3^|-e;lwlnF$s z+&DA;JP(<^BWw)Hx6*hnR|d2^8c<*<8MJzf%*daVe0cyB!t-RtB@_+>kTUBH02t=g z3L6CE=#ZVMbTF*ZPE{7w9f*6%Tzjztf4CZxk@{dwFB}2*I9)xC&eWYfidvsT=2KKgq^%IEXlovJH44VgwrsU!s4+C<2}-5Y zcJ{i35ipVVU?{E4v$DBzPA2Uqq_?PT9_Xy#BU60N?z zIpoaO1NNO8v|-j=#1R(k;y|YGKcrlSVn)h8g{=d8YqI(xuMYuNtR%YPhOM01mOv)0ZGT0!fXya^iR6Y);4T@stOr-l8!q(V0zMuE@EIe^$!};# zzr zC@!1Nl@W}yfIy-gm&&##;0I?wej*tHgV#ARJ}%i7tg#sPkRj>u;T>;hRIc4-Q3?!b zy{7Yw;QqpBtz{R71-n5WXLUUo@h!kvgg1xgWDx}sx=Pn$O(j53uMw72U@fJ->0{v? zOQW_CM$vp;B>?O612LN{Us2heWty|%3InD9Mdi5M*c{3F+KOy$mP&|I*}ga@SKoSA zuDarY+;RK$a`)Xg$ZdDtF1Ortt#o@sk+q{TKL4DoK72$@f8i-vKXpu2E?khoXd)Y< zu8bx!jCuv; zyvn+=z6iLA9Mm3JV{E$2`3$Ea<_Dl4){=&>dU!clWBTV%(Bb29un5dOa++!nsa*g8 zlLZGBR|pk*KczfSU9&+XLf$)cmYHCP6bNGgVYei|O~Ljk8|VbF)vc`&QG#_8Hb_gu zgc(E%xd%p^J3zv%&1Z3}$#g6@25P^fE?CK1r=goT^bnN;Y_T#VNhg5L(~>sAiK*KL zs@XFUj{*?ZhzGgZzz$5C%JaCDxlYw2-$7|-U?auZP;#Mbzfk$tZ7|oF%k%V6LE}sP z8E1eOflV=h2p(7vaN4;28|?mIPeRsU4AXsJy0bYZB4ck^tDTM5S zyJx3z?$z_s8h6!B$C;cKO(;6HRoa?i+Z^8|Pvvk~Cavz%z1_F|J(-SQlku?9AufG> zuQKM2-~VN4%%#tN$)^b3kqj@qB9jZR{pF>XKKi2zJNGY4rqh-cZF06+#Pr$6{g;n;@!$Y1=ovb;8y8?Ic`A`xb!W=Z^6}rs5Q~^e0$U;c~ z8_y0RHuO=-Gegr%&#o(Ag%O*t4#n5n;Ug0H^U^5MSHz$v8=*3Nyq&d54zR@YpE;;j z049LI#(*SnHM<;a!^n<=KKS9LKo(d8Zv3<^TFo~Nf?%Z}=bNH{MsLga!YJm@!l|;z z^f{;q3pT17JJ?^E1XqEzi89fw8-5Sv3%995F$f3g;+Zy0#?_FgUh19wVm?;RrD1G2s`m6xA;UY`HL({kUZAD7?ytq0`U zXI_-GwN2^wXEYz(?CebB*t5!6o&X!uPXewslH=R>F2NzXi7fsa#Bn8-VhOQlJk3qL zCrNhHG7&~C=Xs-d6Cl8HAcb18#nK36eLSzPm`XK-kwz_KFM~>aNRZ*L|GHLR0Tyf? zkdarry7R2FoKHCpIo2+xiJ<@|4`0}T?OddifldkIV_wJzs1HRNye%MCJ^jp%fJnhy zHAW$3zVQY=;Al^hylw(wA@Aw%b~GQAgfVkzl*TY5%c8NK%?`r(w{?G1(}%O}B1S_n z$?{Gg69R~0_oOkFPs&w}uGV!!Xf08@bnOHqzcKPSV`=XN+l|;FsJnxH;M@Q)Hq9%l zgjhEsO}eQ3M_iFAk1nk?O?6CU@%Mc9W5tY82KfJ7YMno0{3TgGbw(x|o3c5W%20YTn095-^L%lWwld=Mzru(s4yBPZu12Lb1cIbPwgO_rKDlqpB1w!?KupL+vKlUZ!( zU=lE_bQv(gU6vqnDfO2;S9r5VYw2vZb2c}%%0~*@<=l9wJ*3XwyO&Gbvm=tFUiYNV6a;bUIO8O@nPwgXbQDC0eWLw!oadBZwT(Q8XCxbv%HIdbBh z{PjQo`{j>)_j_gYwHIV#X+>IvDW|XV&~WXJ7gN!LEb}O70XNODJ)90!&n(X#e*a%< z&+Pum&f=9Kt-`;m1oWlP8~EuTde<8S%)R=N*L}~W&+pd9mD0k2ZMP4fdF-G5j113x zOK)zmrFr4V&zDI<)4(^+PPxi9_IR?X$y&XaE$pZ`rI2lDyNE;Sw9WvBN z(48KB`z|6~E3Y&90A-&+5+R-L<_QAP{0AofSG{fALTW$QTfo5Lc|_PuIh8Egzg?edF+!Be zGPS;DwJqysCU?zot8;UC4mBUC2m{rRfl4seGmMsiSqhnoE-7mZUV2nK^|p}licoAF zL(Ge>(^li}NO2S4gjErRFp>N)^>rK}t^T|SBXxFN6i9Fd3+?d#w7(u=%1Qf~5vP3( z)>g6#wCDQ1GXEv#98@6#yQ0jykFj~;yf3N%IP=L1VrU^0cr?B0l!B>F*VF!3B@X>` zS_NFo+=WW(Z+yo1F{IG_eKmTiDt)P|4Vco7wgP9rN7h`ZHIbj6Icml6XjA z1k}K(OYG`AN-(df=*N9942aPjP6i6It$;1Un0QQUr%ldX)lRDN%M7>#7X0L*Fjamv zY#5Ul_j96f*&q?qSmP;i=94j4 z8J0XwY2;V)=#8$Km=qdj%7?$BW@a@xq*d_)q<|nJux6~*XEE|+>6K())^pR)S7IM} z)PjQ&F{bDb=|W(9R1Qb39_?p!{M~gV?H611u?`z@O3(4e9(Xv{h45|ja^rOeWr=C4tcb4x0ZM`yfF;TWD4V zR@>p|nw^iCClHlZ6KHAh79H5LNy}&qjg)aFFP>4KGq{J&P214A#;~63StP-9-DW;r zJjO;K(=nhS!5}4PeXOVQ9x(V^-ezCCul{=_v;7R>loT4xg2)d)JFy=kKb#MHq@0LC zI0TAmAv>2h?x^SM!0sD^!0j_KY#iEs%zyjp8iL#b8eQIDNuSD4$-p zE5m6=zHsEceDG_omB06Q{RKfhR6su@ao&ZWW^ zUKu}pn6ixf_$R<-`5wC`@>Z}?+%QxlCkr3aq0mG8yZ)9eax$9YQWQe~*E?}^B{+BkEwzj3?Nu^DRER4I7%hn21m1?dn8FxB* zUAHqUtzxMR2htfoBcpTA%jD=sq`TuXY45pFX7}DEZ-3{V^0v3XU0#0myuAAI7vy8V z`D^kkzj2>D^~@1jURjmNXe7OvS!L06yIs%Am+|)q&n9yz_bA4u{@)SaPHZ_eFF?)!#|FOMk6lLZ-7Fv ze92)Fl@fFR06dBunPfZ!utq>n8VZfvV=)=H%%2lLR~jj}k^7f9@fy<@lUDb$3VHH& zF+hhVRgRmg2bJ_r*+wiU{@+TjUz9yWm)3YB&0mI88neXp2vp~*#;*o`qIzBc*Yw&7 z7}>fL2t%pnra4Y2NYfbPW~EV-^A=e);&M8(D@IjADB~x7hCbHEB?d5dR#G>6epn_ff?4&cUimj`+FC0+0RuWXsUI*Qq7>@WW z%P1e`i!cedu7+AZAirJ!idb)3q+UZdhQ3;F*r+U9t&4oNEeS6erN5NQpc5GmhqAi1 zuFSZ(*%`U)zz%uuyKa{2uDeQZz3n==^`(%KMNJt?ct{iZCv@`S7&dqoBp zmK4kz3|ca3^<~oCA?@Cbw5A(A%KH=JRzXp(7TsPZx>_#~z3R z52VYLwvtQ=Fw7M_W@3fRkI>Qt#93;ly^`C~F3Xex2)o4jpecQ#$QpD=%0bFtlXoD- z%Kzn1Pslxl{l-7Uk&VVO z?M&q06_?B7&z+MW`0@WJ)9FyIJ+w`vJ=Q`HN@p%FMAcS*KMZoPJc>ZEoL}BPc#`9b z^rofKYKO2rE0xv&ZyZEPm9F7sW(7XNSv+J>`wHcf%oPXOBJWAVlZHb%xozepHFb@=yr_gOpg95MWQ)t*%iu%s3bwkwT3I&lrw* z2-p}JvK;I*MnAs%TVe9%%O0DtraRFp@+FONuTSX$`~(WIeOw+80M6B z%f8R?GY_YYSy4u`;DZmWG30#hcwq?*UoBy(g|XHW{kf+(F`Z4L_gl_8?NhlY3Rjqi zvQ&yU)?K-`JbNJB&PY1#iL_?>GF{jq(_J@7cmKPjwev2K);^g`&dFnsJT9O9*eB%4 zr=OEY9(!J%ec`AqFK=l7=I3V=q|*>yD9Ytu4|#>W!Ws{6FNZ;34^!wP%ewlLhAr0| zt5FTwMpbBj!*LP&)^21F1O^k;HLRY&wrXx8GP*-~rM*BQHo8t3_^+iywf~c`1ONhU zG+CxOLj4am#_k9Sqa%R@eWtESRMp820Mv(xk9BYJ;=3v%)O{_xA*I*aXhF=7+FgYg z<-B0u!pO;IdJA%bYOh2{cztJtOEUP>2!o7U6WFQy!Q<^?O){-MTXUgt2$ULf%xWa| z0@k6iow4R?AgThUd~wBjlOsv@plkeY{KjWGF~hv=`OF;iJdf>fQ31UIZ}@rG?^qi? zLJ?-(oNL-hWT;~wVSj94f;m`i+l0Z}i#Ua>EH;4{2ycSkgwzS{q-%@@9?v275h6u^ z{KeXdvn>+LH|A3Jc7XWVCR`IvOKNZIp};=4UAfeuFI6&%i^LE+h}UbbpPU1zSvDV; zFEWPR&%SbA>MB_OX%n7-0=8TL7Lm5wIWYp>@E3Va@QO9EmOC6LV5ksq%sw}($ z!j<-o%g+wPdH%ZMe~L<~z6Q%R%A^}vpA@WfKnevNj5&u;R|6{mJfQ$YDI5WO)SqyTj22CBS?iO6+|;JGammsIRZN$} z8gQU0Qkd9#FXB#%HN%Ao!ns!1OXzSFDw*pr5A?Jn&=xqTbK!d4?~omto~DN6QvPK% zTi+ipd$T3POiUpbzcw9BeBh_9=4T-nNTBg#6~LaEBml&88nYK?D(9R_p&MsnZt0q3 zA7jiiE!TztUOrE*W8-&=O0bY>{RPDS72CeZCSt-5uAzLBQPk=U(?cmp)&vPfJE?XAhrw z^#Ay28LfO{cWz-`%b6?X-nfo&G-PN;v6Y6F&!J>yd8w6Y}(vAK)4NrzMaQuBJid11W4>&UPDtdT=75Pce5WUoy zH_d<)2QcWM3EDJ-up6EL7;xAa1B#DMH?CZPjr>KhcnP$!t08PNzZr)Dqc1j=6zUY` zM^Tilp+0++gU&Yo(9)Mo)iVW>Ys1t`-8b~&T zJO}=N5t5un7fO$37zx_O3Juzg!;wbAQ2;R2P>ccd%}O}uaD#!&AY&K{WUOTlFc?_` zh#^cmw2HJ?P$d&UQUH1$>Ij=bE2r|>k7~+pnuktjMlVz+gw0x4T^T^wtmmI7-yw7u z6`>Gn83rrDW3jruKla?rrxD|-YplqI+(QP=r4p<@Zx7GakW^H6Ex??DZ1zCyL;1bP z4+qt>N~;2E3I^(rIVzHfwi z5-7#sM})PK!I1!S%{XJ<0(Mjrz)tB4H@ z+2(Y@)j-3R^?|vE{0yc*9MEYP`JAM_NKPyQe`4_HUG^Aahok?wEb`u93PN)rhm%hh z!nA6(UFKn{76n(Sb!KlA8-k3(0qpC|?W*eJ1h8R!g@KjJF~dr+x3llf{g>;5S(d&! z1HiR!O^&jm?R~<_VSLhFPC&}?Jj8*85aN*~U00^M#s~j*qGcOr9OtIp}?jz3RFX+Evb!^3!lQmbLXw z+1Oau^Jd461-a_#%jC^(zE$4;f%nLpZoNfry7@8@Sr*wmB7+w{Bg?NnE6XpxD8ut- zWOHLIndWr>uql{`>8>xDTjTZTyarP!`$o<1U32@wHa5CFcALVNSXhnpH>T&7tL178&5;S$P zzoPvd9L|(q1H{(ffyT=97|zpfQcEpK<@qMX{?(JCrxF+a?!EVm+Vp$E51;>9nwP2O8{_peYcbD`mE1M!G&aBDr|KRoVGe7;kGP`k3&K-GG zTGJWnbb2z?P#5TCcqg3g5Pb!dE6{8KvDbzpnfvJCt>67)-TA{$)|Tg`&wtHNcjt|- z`<_d{+*kdlC4&n`WpnA}4=+FW>wmI8*L|0CyZuQy$zj-$g{YvN-skjjrPZ2X8BGVW z=iols=N`e=(z}R?-a2NtOhF%g7fO%%QB*#2!ooc)(S#XGYRkH?&HaXB0s2e&ACe z8vPCxYK`<*85iZBQiC{Ej-XOjAVWO10XoLmB1F}n9dilr6Gn?KNM$S%=vEkDv2N*^ zF~SP2!9Pmio;KQ)D^24D=0yR*6wLCNUSeM=K<7qES^Lp9%f-xVw)kjVa& zzq=>Dzg4<>?v~cV)gm%0r%oJ`XP$dnKK-#z z%KZ;KET4J!X*qWCg0d90&CklVg*gQrExgB8uT{IF`EKrAcW{KE50ooJ9~%J4?10jq zMrSJbb{Y0t0%@p7#|CPy++5eSbAW-YGz8*%@_I*eqmOkyw#q;*X%_SkUO7`ko2gKS zk4wxl$+2uF_7t_C0_~~)po?c869s-&^NVZ*uCqe<1CM&Ili30wtGWr!? z@Xl502uuOs7w^p`1TzU?dprSD;ga(a#oS_y8LSDWAcbc(a-V@+o>)@--~@FrhS}&= z#Z+J;EM+jSHJE*1N7rq~98c>4KD_RDg~$0_KF%42!BlZ1@@z_ZSidU)9Dh$HnWZI? z?AF-ZG(OQ5&N+v~@-dfb#9RJWIwu*mBfBy}Vj&l*C8aYEAbwzJ!9?;A=QAzV^44)R znUtU$_DTSK4Leq!k(oRE83}@AX9zK<&S>N|YZS`hbzK?9=sU?_9FQ(ez)O#jw|Go_ zPhoPG{7>ypM{~JdSXz6mZUU$)Hx;&>e(&d&JtG~Y`ujM+ zBddstTyE}&@*H#qWaV1X>xr4Haz+6_l)&`$<$2PuYcj;u+0gn@aQ&h0XT%EDaV`m4 z>-x-y@&GX*mQw(H3`Se%C9%hdH43?t#h4s~38w+;%y}pR?8GP8@<|$~S#B(&GZjXF zRbkuYJ5Z>{#v^4(LXAEK_zr-mKEm{Q$O{r_A@ca_bxS4WPJ(b`XOdM?<%eU6CA9&H za4^{;Xu~Z?a>mE`)0D^6LFaP^hok4MP1yv;B5benpA!!J;XH<{Cg4iE7m;F>qZH96 zkl{{{K;_iYxFyHVtjpm8^YYJs?tA2pTMx>)XP=SLu;|47O24a}EKazAvr<#LlwJ&F zu(@_>_RxF(*Z$5M|3P=LIG8VezEVDyfVuyMfw_&dUubQfede!>mS6he{_N~x;f9n$ zKbQv|rVyTnJkf)8J1SLL+Y>o_w3TtMGa<%IbK!^wej` zaxmyHW@WA|MAG`4OgUU{UVi(thpi;iWNq~K1iLJTEj_DX8DiX$5l3?t@4h&bPJy{{ z@OsHD=r^I~V6F-?3`zhiL0$*~hFL3swopZ~UA(Tr+Vi>6P}=~{T`2&|PshhuiayEM zlXeFfC6=#_$IBk+A*cWaJ?6a>g8-0b?RMbS8Fj!&mGR=koZw!DB_mX}fN`a2Yx%x- zC%dI^g#XPdyIT0G6_S`pw>^+{*Qo!K_N>UZgEE;tDD8c>$=vSSMCSL)bSU!5kyG-- z=RPYBe)2x~=*J$EN1u2>R@a6y)9=dSwt1PE>FIk4!@*d_8PbeG5(t4XTZq97_mC5S zVcuF==PqNR7P35qTuA-2AuTAkBdT+|eG&2{_Z-WhCa{=51tK96OxX%9MCcpK{ji)F zP#|!IKmioXiPf|PRA7%XvvzYYLX+n)wGbQzBx|-tZd=M<7qWxekCrvU6uBSPwlpZ9 zaAVk+$BKSs3X###sM34{<7Rf6*?S3$%`mok@Eq9AJ=RWTN?Gv2o995Pgfi z#VB{RF9CwZVn|&~pKE{}@`P4QGpZmQtTdiq9)GMK^cjrWco-SBG2qEIY0d?JhgeS# z9wZZDjUxXDtpn`CJZb?@l1G3GdTe3#l1vJqgdDFIVNgQmRqLoQ>2aXMmN&FTbBXp! z3Wc_;t!&8h^12L18?t-Pg4}%VRdV}Xx5}-z-75FqdjPROPQQ=bdFL%MKi?4<9+B~} z$7K1H$7SQhb22)AQr6F}$#~k6Q8`Qca}kodIU32(S#0A8iXdbKRe)}#IpvyR$uH-{ z9E|;jFw?1rvJx;6g&zz&Qs6HN7r_yf1x3Jq)1nK0PF3KZHVoHU*sO(H=6ZwkptPX8 zI{+I1P614@GVP$3uV>f>&{Yjk^XL2c;dA2ks?c3T{-A6?zWo*d!Yd|C2-o0Qb4Skb)KIgF-f_fx|!$G_SOw z4D_ayE|AlqbL4(%vVuddxJ(Y+5P(xPURjhT#0u7d`l^tJJm&>+6MeNcOgU@46R@Y^ zP5`hzN9M3#G62p+ACIYrvXYF#06}zdS^B?(tPsbYp-bKltM zZR>J!RnU~n1~*0r0||CW6z0cpuqoSj&dIK;ZyiM^U1om$4ixw;ZBPUrG20nTJ$ykZ}53M?f8!j|YVvbqnsmOJXxwV{) z0F_{~*obRxJol<+KVQaE#5LJYQs0@u8Toilt*<&>aA z^ak>+AfC!WZfkaolGoBT%gKQ)j#Vi8=gN(z` zL+ie$A*g-VwNC8Vu(9&2fDvquG|xR79wBpx6x6(?Y7>l8{;py(@jMW-*DtKVR5lXm zl!|+l!IvzP{97K{H3-Vg70eSkGw?R7Ee1I09T!`-p;OcZsTz2$*rJff9#(lV@Y)Bw z9;4`*8)r4(mo4?sCqAE9CQ+U;dnJkzxo$@1DAs0eoO^{=$nA^)tM^QdH?1FvD8N0+ z6<4`o?9?rDP0y*GTkeK&B{4bblz^i<@qeUTn!CN5+e{XQ#?46d=%qzG;#vpt(LRE2%vD%H%4V*5Z@RjRM=L+HVNLk~Gm&p@v2cJj8&TGm#h5ZQ#)6^I~W@#OS*Cy=@$UPM6 zi#=oKT2db@5`yYcc$5^4M_ibq!obh8b7Ee|<_M=?rK_YgN(Nt^jb`iRd8A;g-{rpj zhzhdvml>N4JI=wiWJIQ(k-%z(+{2d9y+9Ry%t2K573l|bSSp!E_JHPk?#j~YL{6Su zk#GLmtL5i^?z?6CbVW|Td`w!c8R@jTwuV3?@wKD*Le(b2fLdi}t)x3%-yBY6KeBlJ zhkvrW?a(J3IllDyZxWb$@z-DXJ(oUT{!gpZYj2)?<~uLE{5yZ6*K63v%O?i?VaEBb&o<1Hhp$y$S!ewvhzzS*W!W~L`=5Vlsxwc5{s}%mVk%IQSrDU;r30`^r1w_z6 zuLqD93@E%vFG3P*I~YuGXTB)ptivH?)muGsGIEr|Tb;Sw_?ZgK5m=F4t=dRrMnM%0 z#K>q>!IO$SxR#>_OCVO(J_}XO`7!0DC_wJ9D&Z9|ANKG%{Dw|09~X?D9zK}u00Vpu zQF)P)rlqre-Z8pU^#%CK)%Z_#SBZ0CP7vk&197!yvhqpz#t63*u$zE%v6tGt3zzJT;JjU zrF>i2CO7OnT(wJMSN2pCmGJ&yjaiO4XWeRhyfl66a|29K6;IosV4j5-8F1*}o&$3_ z|NeUc=L%a6dG7R@0@4+_c?o;%*)wzqy6Ces)H7?wD7(S|(SGD`(QR8X%AEz_g4T zhIGAm%w8ZiTF4dJ+p(v%-kX3%8nX!sHGsK{K~!Vk3@Tpl35eNkyk8QGNmmO4g(*W5 zxP$S{C{2QTTeOvCKFcb<4$G2cGE_iam4gfbwJY(|j*u#`?byIca49ba>me*gDzd;$ zVg?U0889={RYn`wz@a4i`9U9ZKJ{AdB4yusvLbVf@$vrP@Z~gPByJ^zm|Wmv`TgMbTqX=VO0+{MzXxRDjVwt z#%w@P7$0=^Z{%nCRZ@Wz3!@^ATX>_D2H6D|F_ zvgI_Sw59pwkn_wKZRHvtc*l{HS%1=X_a2Bt{gD z$X#2Rl6PLls+d}ymFFZJA6N-l49G&KU7IXGoy+9t3pvKO zsHOoz%NFJyK(5raEoXP#js#;O_Z;k{T!_Zb3rAVzj{`st_8mKp(5?_uZV%~12g}WM zc{W?h{r`VP0>R&lANJd-8SPbLsO&d|J}(&d#5C{Ga@l%~PNKp_#eG*+MBP zW!#}Cnj)GWobpk>5`cqN5g-HU^rv$8mYd{LpMFvP*pK~^oISfNcigx`4dwE@a&;uu zr!YBqPy;MV=^hL!7%`zw1k(Wub5jVXcaC#+aqgsg9pk`ErWl8321C!a%Ve?f6H@pm zu*IQ93B(lFMTRnF^6l_AYc)=9XMiC911~ldx>q8I0 z4h#?rrTyYSQ?QvdM_d|y$sj@QDjfW1V;zD9g{jO7uvHXRNYAPPHwbG6j0}TK zL9haR5r~64bPT`+i!OjV0#2RD7P;#*pB#m}2LR~aWG_|`1tj1hCt$n0P^+){_ej)T z)|3{EFce9@i}2P`ctRO+#nWhjqy26nwRTPU+1Ymmz|)Y}l7nzmOd^q9PsTDMlm2dL zZ$Bj6oi|H&-(523Tq&z7Yx2U2Ps{xu|CIdZul%Y!^7vD7^u)6EpoG@$-nCt3=Vr7` zn!H={3wde)0&WqyA0B54?P9|`0%&+o2Cze7gJl8aCfIW%0ywu!$WsQJJRfBMYFL*H z`T!h@z9b!wC0O)_!#U|X^npX_u=delmo||0Dcf9Lz!?z6SDI5b6M-tmAxZPr5XFXH zfq+qb8G90*_}J5_$islC=Oy2BF#|E!Ng+0JzQNE6c}}Sms3$4rt+OE;!vGF3pA;!P zKjdJXL14pV)z|pYnHE4)jNcalARFsGfZ7Vw^`?jUhGmfFWW^dI(5Z4Fxy+AcO=nu< zC#9xY-g$inhJv}m+H0`cs`U^P zmAVG?4SJGAG9;Lpy9nEiM##^NI1(C81@QWTtAvhNVFL{vg$I^^xd2uODByfl;aCVY zB8~QP4j7xdtJkfptjNl$fpIf4BG+DXxxDioZuy8N()s&+SDk>RmN zWaIc}WpMIkSzlU`!N#V@v@6qAUxux=3<|I{D&eYy9oNzjRIQd;!pur4(-L+%n#icI z;>vekSOG;Elp*I;ReX8HdlY!kP*K-s zCdS^g+^9Bw%6#)N9_eLRbH@Hwu8y<16|@NEHv?Uc`o+EtZ#IE?shgroEcUIQiVe9C zOk{-ILPsWf>(#WZZ#qm~(G~A@eGdA$_9ax{%xM{`T*D@F-`kwnIFlcX zdvj6r3ieRBQQe>suAA#eb@0waCc~v+d;ajhn!o-#{;Z6L$6IaHh%bGR7m(WvXwL$M1m7ylQQ&BSx1W&X1? z0?4RxVq}#s&;bYh9qoeR6m}CCCmMq3YbToES0J}qFz-m&L&&P_hV(Y(5_V-!m$(%$ z&^=qgGiQXc@s{DK_6CG6!7xVQi?UC3+e8)CWFu%!IjkvfvV|Kv*rml1QjtX8HGK$x zPBLiQ6|>M4i~^zoJd0u?#&&}dr9fP90_wXBc(c$M2)5johRqqkhr$oqMhDoe-zJZW zLDub95sC7>GUObP)4rC!w>zGPt|jfB6`io~R|n=i95y_xT2x~sotd7r7cLXob*psu z-YK%}23Z?ylVh*GB9A`uxIFgQ1M-;%ACyNP{=A%88fg3HX8W3tZg!?`a?GplS-1}r z>jbgbXf*|#&TE#7iSktUB{;!=841fUloJ#)gO75W)aD8q$fhKMb(A26?_K@Jch+gfB-7;?6&xx+tOtFVGwF3O(Snj>||Q#xw#3Xp&V^-Ie{!nOrV>>_DSOe<5Zn# zjT~PLI>wxka|XhkWfPA(gj_JDxeq+oY|J#k6*{HJhzZLphloKGAHO)G>7fh<+V8gi zbF^}OR=}oSkcmYh;&3j-Ss1Aghi(N{3exK&)y#xy;jj5}|urCvQ+uT8}1koW2Js|g`wjXCnyxU$7>_=9heLY|^w`>xsEN~;hL; zoI@ADdtFiPb$W7kc_gRLt;iqzmRseg|I)X~uDOw%J$hVZ+LN}JvjAyfaJFi?mgt-7 z?QkxPF04)43%@;g)d&ApZ}E!XnodfNGPHF>F#^`>%Zqqd)1`{@Rjlk3l zDN|m%Q#`E(p4b^`?+3V>`Qa=iqbM{uD2sw-KT-m6R<**L7!z(DTpw4xYMjL*B0?cd z5~>2_iVV*QsPSM66~M*l`&AAtat!`7!C!_R zVAZQdmHxJod>P@Su5`C8qy+g!F#lz4r(LT6rz|#|V-Eul_MNq-T;jDJEQA5M^t|n6 zNPxLgy!D>v&$Vh)phJ$rRxx(UI}6ZOCPZ^sw@oIsr_yt8cp0_wEMwpm`Gfp<#+)l5 ztEF${d(A^v9@H)GEa0HEXDlLGdj2KZJaNCs{I$~EdzV~$_%^xn zns1b^|Ii2I)bW?(lfQGn+;{&c6FD z$0g{&u$Tb|2-R^%1IZ_@3g&;R3|PH}iq8Z9!UjLfQHE2vDh|NFFwh!CGC(okM-?cy zg{eadxf_<|B+Bmt454RWoWKTTkl&0ZV&YK_(~ALk)~)oGr=p%C5utSPhMMhM0WIE{ zVC_&yskIYf!KulUsSpNYu%oJWB|FHU62@$d1>Q-ZOxU>*x}4J-=ZOA;@G;DTOKAtd z(9$hTEY4?yzUB-3Y@zdvfEGFtBljk(9DYU&4(FkbRRqh_^Quv9AYPXdCggg8v2bjm z0;r@>jXfBKpIMf)o`|`Uib(=r*~r`rv`6p^jFG)Hldk)*p5qxb4*xm!7p>>Y#^!cF zZ}7fw<6_7uw4LNnf|}STShvo&$6>42QV5uzVR@F;tj`1^b9ZqYxrJUll^C?ShRes& z9F!CVR!L}meN&c~S7lsKGZERo(2_gfaqT3m!6jO zXFn^;r=F6v6EDkTuquPi0;UzF^t_B)9X-PppeyXS@*fHbnYuedvR*ax9=d6zkrlCLqSa8@90N=duL(D@t!}N^x z%DfKZnFGcddpJ9s1s17J=^6khV7OI@{E3N*by0zB2;B^=AN!Cur|V|WUA&@ruGOBY}e8)Nq6CuKOR$^T9tWf=x4!y7m;=H5tC}fTc zq|mE9|DdB_rML+)?f?|DcKf<-0Pkjl`g5V{8WQC?26D_Hk^&r21`aE{EXEqIsY}GB z<0j`nfo$j%b%X!_X?}h>%QS~J9aH7LZm%O7qp2J}wIX-jzE6Ji`@dH9?3tIdFT5br z>5Mv!kqZ)Y6e*8z5{6K@6M&q zSLkOtmCnrUWZU&0_{GWa>^2#IRLdGGkGl&Q8$b*52Dqvl~ zFBXr2qU4HW86%8GGJa|%AcLU_6gB&eYP<180!M`@#R?&K=TSA1)GC_~UpG}Ap|o>& zeWjsUujN+B`Jx3UBo9rZn@4Nl#kPyGyn4)!DH|O!{Gdv-i$V=lH-J(DlTz`umzbwA zb*7lV=!+@B;{r+%6A*?!3UfriNhxb7nqDfFPNY4~ViH;&#G>TWoDFap9!CerO5aPE zJQ#T%a-%CJBT#%FhAtlpRPopsBL*I3Q-DfkDg)5UShdx>Kmm|4rXH>{u}~(ROGlea zTY3f5D@vpnfzZDf;5XJYiewmYr;I#RhRYmuWIF8@Gfi6Kkxb4Xlj*tR(mMS)882KW z{r%U=u3fjtuIq1=E3f@-`Ovq0n>_c-=j5@+J}dWq>{IgaqmRoMUOFW!tEC!OM|LbO z$lSt=v|C*@`bwy40b|qPu85zki{>H=Bc-9F#RNg1&>p0pZQSa0qqEAOUhrtM4QW?H zo+CUbHw*x8fDSMhQqQm7iuOjxf38NCu?-!>0T;arC<%GM!w@3{zJhk}J9Ui1^3ynh zoF(5+u(-(k&k>CzT4Nq7FMTqb`5l2hFec^uGu{nGIsx@H>XxTV{+>o;&Iz%_=^Ux< zicnp0X^*$ex{jk@Z()cD8nvX6Sbg_^Sd!t$P?nwpF#$vn;7fWF%ObF@@{GxO5B;4|< zk{%wsxx8j@Lr8WA?GQ3U#~eG z0xCAsSQ?>=K<@)Mt@?BLxxrS>Rm3Md%V(Ol{3+g@Zw`lAVjeF{6Iw;+Qv&%F8E=lg@F zrPM>&52HSWPaevePe{E)V;KzAWXG-r*?rZu^0WW!VfhPx{kLRcZYp=*xF{PNLjzMP zrbGfR5R}lL*+@d}8$N|Afr~IhTA$%XZeASSKn{dJComkzj-U`!{Tq&gNcN44XX)`} z1HrRac+m*^7X44iC0Sl^1o*?_5WqcQY)5vD$YEjn233Qrmz)M+LZ^Q z0xE7z=V9vPHH39iQ3^X_JggPTpy347d}a1Nwz+aWG|Un0OZg_L?pS-upwck0%(<2a zYleu%=tge1Mo2O|^8lX}^l_#b8+w%64FxdtY=hzm!yMt7)F0hnVXS(-Jb)rTwiYrC zBPr)0eun<#Ns5zQm%v9~ZLR&e(P>gn@ zacbcqPP5kvs-5UB_CU$e#&aLR>lj-PhgJAdi!Q(%^nF12De+!wCjkw<{s5L(MO6>= zmXce}7<(FOt5sP$#)^w@TNFF-IVj<)nyYSVIp(x5L;>qMnUAh~rv)i&GRp5db}@cl z-BlM)0SSx6R0=-~q&?G-*6dDc?YTwTyY80u&RaxgE|axEPfi^>Dvv+<3cqFz=8np^C;{ zZ79nP(P}cx#u^4(>~$~;Fn6BgCs|s|ZfQaj&9J4kOE`3!J@~jc*%S5N#(QF1{DEqN zFc{C*2O11(D%V|PIH0|oe|81k6>>be3QvrEpDe&IDl2#*6?8gA8E=WX%Q<#=;qr#T z{b0QTRH+O)?6u4{YBB`jr;XwwO;d)}9h*0pZ>%l!&oTEnJJ?B9uhhnQ#@|&&K94K+ z46?)5pl=AS7LKzajpI55He75?&lvQSn3r?{VXbE}aW(+)Q*(`G-+8~J&V(`L5n}#q z0?Lv6KXew-o8mbQ@W9zK5DqpsT%e24WnY9?51HSJLWA`gsdNQ)9;{qve_M?~!-B?Va+Lx4v1fzu{^*cyOo8 z&1{OCds5bqJtpf%9+%Pb2^p_%%4Ae3r*>r8?#oa?ueJ;e@TPLu8F5}swE$oRn6vL3 zcq?qVi6~g7tTkoQ75FLvGzGo1@~7=B%Nu7QtZLvpI}1RUf_T2q%k#ARUa=L0696_D z@P}t0ih*=7XXph;h8$@QGFcll2dU=!%95{9NCF3t{vG?WVwTz8<8Lvk3BQEiO%+>h z*;_7O$ZdUwZH~}w82}9KGJ{$1P6G3s@kfg*`WZ62+V9C$jEGTR?Us9uSfj3wr5}oR z=vD%J=8BC!IAEraf@6{71MC&B(BtrcUUZT1fc!<88F!9VHUS(@l~V_EkzOHa`50Fm zsno*SF+>nuO2L#R=y81I-rZK?f(7&-%RI}4x*kOk&P-u^?W_C0)_#^6w z?H8=`{4EI(w9nWnRrK6$N6wtzl=Bxh<$M48d*pBYFW)BH+beSR)g#hr&4`pLtZq6K zeb(ORFf_)WBB*-Zz6{rwHYVN0`xmZy|Np1A>!#nD4A(9yKQDd0az6e2_q^_VE@cb+ zz4$2`e6%5*nVpZ#?YZTjEU%xvZMuG8Z+~uwj7CEb70JU4heV5nlf}HZrPrO2<+IB& zzi>*v^V{x}&pmxo{_($hSdN_Bki&cXvRTSbRn^jnq2~X_flgl30QB7RogsO!joOxY zl@vntS~*Y@Z^AuFdCr5185%f5wTY4Zx@I-77t3pmI#31qZo)SzB{_A6eLOf^FJ?^D zhX`60(-rO2CV~;?`YVoytN@hNisE;t`NMA#$w|R#!=W1oa8m7|l%oVayluSF=NW~Vqj z>mk(|c8t7m0p0p@VMN8;16QCGhM@(ZMW7o(V+{OD1atznDI1`%P|KbqhG=1_MfrI2 z&p|jxJ2gsoVoFm1`VpR5!e*iTC{ETiu)TjVNul)CMP1YoEFnJdC>Ky#*O+A|(dw&# zyq3zc1~!%u+EEG5)yC>5<(eyNzwLeX;t=gl2@CetX$Zd+!6&y0Svobf^lWwnsx)#H)u;^fn*JI_2(C0kmK&6~RsIVf>bReu9 z2G(KJHyrr^x)F0KldVK$qUcLN*Y2KJmi!>V{m^Ie8HGjgNXA8Q2@B68VEXP z2_VIH`fg+mWEKt`!o;Rz+|7#B&>%4ANc+vYln*l z<6=6M;b{^f;Z@FHsz4~hTy7#?D-u<=TAXi*@Q09B9A{#HtCnRN>8L}(t^awS(?=JY~%XyjgYW*I^-;X5snxBsJdTlFE z003NyV~`w*9CDtUOp8?benPd=SU9N8Pc? zFcHH6dMf^abT2l}wbGC|$T6JA_XoBfMuqbKkz>uqnnF(kDEGDFZHQ3($h)5Uc~j2Y z_i6u-wALSrUb(hDR#5KVH(x0~_(#81cJ1uSxo1zxbkdVn7gbhEZa_-817<8mC8(X# z?#pz%R$@1nI`jMgjr12Dn2w7x_aaKlrO#LW=Su?Sno%T|K3{6Lkrv?M`uga?M?DnLfHpiq(1EihABn?#x%me4AkKCxE5^QA@A=V7G(P znRAxp$`!bLH$S%>2bfo{#qX3`DJmZMxM{LoUmgW$$uL?#6847TWd@)H?|;16*HGz8 z%iF>8ZFX#{o*a@t_P^W9wp(lAx1vZfFz^pAX#K3>R=rfXJn+PM;p+%Xiw3WklUFPfCvC4s)i!dlBk009dd zxLt}ifZ?YxGiBb20cQ+SUDrx?vuBhZTHe28iRv2Yh;++Xb_)2|RwJofx~ia}T|Q}* zPy}O3j!~&MSb`mCce>J+S?LTX(wVNw~POX*~LHW({Sv!0EDl)t&=Q;CNWS$#ZPITUSb1FDq|<y%p1uYIcZ{vU6|v^>jv%@HmBLB zu9<)thU@1{1-7LQkX_C3;t-@t@$d-(E0o)wt@L^GGYN)Wu#{tsB;d`)W;zo69f7qa z(2(mY3kY#kOI4^RmL@x1sI^2G4R#xjljtwxZ*73r9cM5<*?Bp!^>ihJH&MLsjSy?x z#s}ffl#@`49c=}nV)060Nbax+TZfIe63a%*| z&X{pgu)!H?C6AUe&pe#9{i4Yw&PWMb}by)A85*U#=IzaSbrc!6_7QK>n`s zf5w{gWdGsR^S$SzWzR^tW1*=81UjgrRaIT@)cbtwkz)>WMz2wTFpIh1Oy~dbF`Xgp zMAPp)&n^~%w#6NGSWBEjCD>*OwB*SWmpi#(Dre4xo`SB@=pHkL=-owxkT?7?^Z$5wlG z#Q`4mafF(IayE^;gLce)l`%#lQUP^3;o~a`(*(nd3_zV2R}o z1la18hd0dhi*j;xl98cTW+4Fvqwov}tiW~rzcIYN#7<&uv3Wp3r-ZkKEAPb#OG+vZ zKn|}AlaH&+@>vpxJCt|idEox=gE)z68b)Z3dc!a;9_lYC{Lxlrm?djT zfkvCYV59{Ip~VL%eWSvo2rmn#k)HmXtG$j1qGQoJI@p?%TuLZ}YdHKkWt zFdzf|38H^J!j`N!gyK1BlcZm(xJF^rk!Xr67-s4o?}^g4qlF>-5N<}<*dlsX&Ik?N`^BZlj)8-rMK@ra_!Z(%C*=25&4?;y{Cz6Ysb#X%IdmSbSUUc46EoT%BP&QF+OtLGQ)2+K z#OdTkfHGYs_k~UpQpnkGVD?aLIBuN+hz$<^Z^}LUu?b)`N1uMG*aqk@pJ_A(VAOfr z<2k{U%6ICRfZeLs!))Qxl}EPGo-MhDur^#$^1zVe&i<6L(#D-H$fG(>6nYPf-HN?} zb?DDb$%X4NB`g>Vq$7~WKtv0%{=uv7)d@qkphNd=F z$(He})+LN)0LZ?cmVWMFeYx?DTjb4m-7fEV*IVSyJ8zNO@3>WZow3OJ^D=(%30Xe!s0_}0L8fcx zWHM~aWI894*1U{bg(cTgMqH_)x;ZLE9@-wN+L96tJ1owyl0USttC33%EV%-{c|JMh zkkgRXv4vXVI;)IoUGr3}9`PcWe;= zYk(cp7yCQT1G}few#-|Ylm+W=RZ8+<}l zK)oaR4t5Yx#a@3#EJt@hx;a3{K(@h{!pHq?wXFX1sZRDE&R3p51rPKkhAF zdwen~`7^i5+)JO|8=p&|tiP8(Mc@xsq`R>9@!9=%{OsyWXRjZuFJIQ5+b*NgASxr8 z(wM@9J(X5br==mSn=2c#cIKRX^ZRa+r=L9~fAeSWlUGk|%9Z9V@GmR(=pajlwGlPmcq9p=kJ+<*|pnVm#8> zCLEqkg9W*GP^z5Of9-ov)!jhz*u}^;hkQ_>{TQfWp17obmnxvj%FB#C*8j-&;Qxd5 z6967^rJ#^0*og2n6_#gFz%vLIOb%_0d*ZpQyUtqy3>>_|J^BncN|8H9*9eh!;PHjs zXkJdwzf;=d;Z9DzvmJ%X!>+jmRp01gRCyQsCg&v9i|2!@<}M6uZ;!ItENG?GLZGkr z6&)`CtuHPp&kQUidTmC8G8uedTb?yAq68UaFe>YIkC;gea6#KtBWb6wEC4}jYU_&T(#046ky0c6QabhA*-4^;r5mFCw64BkVNZ?gE5$!N>Q#Zg4e+hop@sc ze{9Btd_`4iUjP}ztk#sTQ~Hjo!zzP7*(T0f#`9PxRv&6~bsd~lRgbG@MXCTY8Uq{* z3R`-Env5zM;y7!PLl~j3VW;pIR>4#`N*VS=X9!zS zEK34U%FU~-BpGjyqLdRj*Em<&MZhF_B+XRHuc)+(v0{T1W8m+MZlLc$kKX!zu+N%B zl$xP>d?y2KAzR6WzSz19mRqcWtuqo`ir;y1;Jo5}$tgn+4i*BU0=)HT*aEOMl%oi; z$Pr2w=T@V(k~);nsqEKscCSDDbu>zlH%K9J$&hRpOut~#_wZocIzdB@xC zkq>h8I_->B7*|P z4KqiaGUU9fs#Z!JkDV1)z&Wd^s>ZT|Z6)eNtE`eF}bM zSa?4@{4wN56vCio3RYufAH;6m!T<-WKg=1|5jan%U0UzfNkg||*$Ah2+B?aHrPtW^ z4G(;>vSA)VSpM@3_6w=+cNKC>2&)t8E?pFFgV-adG$YU&+d72 zI$En8ZoeO}le)?$miXboHWq*LS>CKKt|$`Sp*zEPJ;1rQdBU(*)r+5X5=VLpYOC zj9fxgJvDRTWCB|CQh8AZ{ZQOR`V4RYWLTO45O`(fQ8HsX4x&uGp+-)G^~E8GP#u5^ zX7t-Zp1=~G4Yrw!+C0QVQ6?pXjAAz8;@-3{^3Z9xjxsAlh9v>qslp!VdIM2192Y$) z|COqpmVd;qRh@yn=;aIv)gOQnACu7jz?yX5Vsx*`YH&82Rqph!3+RfH@u9!5_lw3z zL%mA7oX+ouI@^7?R>MnOvDEgWz=(UPjO9g2m@>miA#>(hB&BBW8$!9jPIHhN09NRt zwPg~lgn~1~It$Cm*MpNb4A}F~V(mMXx(^G=X9C{(l7nqh@~Kgwc?IX%nmY{uI@BeY zR{Aq?%(wz(sjPu3+a4`omU;5ixG&$?dyJ_Tl`_I*~bPwP&S08Axa4l*r0)nVkQ$4CnVtYv*m!-Tzj( z`IcMc=3Bp0zW#&XA)o);Q}WOQACr%KGx)2Zf;ikGkxhPAZ;N~ zvB6Sb&3u!9@x5IDn@J}pHjg`Pe4pk&O@Jxo802KA{1I~NVbK)k8b(Y$lGZ|P)niYC z-3+#67(Th&DfEX;l$5G0H~E@i;)bCZClg|?Yv6}132G(St_ z+58Un7tW;k9(z3Ilh#cY{@Voca-GK5)k9FTJ}Hl18i@#7%el&TWI704Hv|}4GilGD z_3ZR<83;O5_AS?6`2>MGY)70Syt;_P%8MI%SgeN}Gvsy3f)>1vp$i~S)kUIOu?}Nx zCIDQoCY#T0rz@?J&$HchrE<7#MXP%Umqn{I5J|WZfWd~S#GU_hMNczfz8;wS?IU3r}g&9{^apS2BhaNUs zLRLozMK#dLSaS}r6@64gR7;VE!mtC#hI7h6HV;#^ik@CH!GQ|xtpad4mIlO?oTgdD z)vk9vq&&x2G&;BY3}Y zh(7OK6t3WX9?m!{D1_&_Eb-l9=S#=~yGNO1&`pC)=HE5K+3gHVo!h(bPS((HVr;U| z27@!ujj%sRp>&-hnbJ9LIHxfFp{_>`W0kNq9`FLH^q{7GkboJBW9!Dj`)ZOj_N zc^eY%i_3KyBO3+ulEQczHf__Pf@?I)ekyY6+`1e(uuXpW2j3^RUb`q4UVK(_S@wF{ zVsEFuV|p;sA=uYN(Hz-NZIQw1De3II{o~!8*Z=BtI$E1fM_a4XU;6x>`g}=MS;x!I zeOVfF>GS3Jr~%&JCYxuUyWz~^|L4z*S6}|6zOaZPXsXbOLgdZu(cz}Wgt}K^(VysC4HxCUG z)518m!;{&8rqpJiLlIHdAG9G9Ey(au91onlH4F$+hiv}RpB9RS;%Arx7~hr$t}wln z-4kbjhM>V9kI0(HJ>lSy1FFbb1_jkYe~Ak{Kdw~N<+$w_GH+wy=u$En1Hzwa-Tr4MInY{CgEAWwjzgJt_7`r zN)=Br-pU^HF>a%Zsg55P&`5v*N=en9s%oDG`FK0S^33%HMjlnIHPFtV>J?%2?_SBZ zRE1S|tjtTtE4(T|=b@+``fPg}=-C3U3)$a?tLxWenDy#{Nt~2>GM~D^= zEPqp%fbE~Qm5V5k?X(Bd9<55NwJDQsR|cJ(GFrS&dVBAZ*+cIT>EA3O19|evC*`xB z`J{aE6A#FvpMO$bc>YycTDl<8?#ax|jP!aP>GrzXr?LQwp$D%+=b4WG8x7+{(Rza4MJm6Qbft9kGy!#D<18kE33j#bso3R0j6Bxz; z?`jyNWgkU(nZz{06Q6y89J1FC+8C{NqnN<0M_?p&uE6K7tWxd~EY?XpSF+XpgP z|0~yxMK*^c84L!pzPcteJ&~&p@0EAH`4+kNt#`|y$f=iWt4)_Y%pKhIwrS|6va z@#h!-SHVx#S8^8ApkB>l(-u(jXIuX6T!^$Do*qVLN*U<{X65E4mS5N@DJ_$EM$VUNWK%CqJsI*0L!Hmn z|0M!J*nD;{$~*(F#jtXIZ$c&D#{IEATVEtrv!QZE3pY!1Lm*e*HM zzHbnvf|EC2L$*-rMT~~j+C8m}U@cS8!t#HeuAEs~m*H?E|I7dM4f3bH|6S5Le_WPc zJ0acPHfgnbR0W$Vv};j1fU3|-hSKfM$Y|~CbUbZ8yKwz~_ow>1ZvOSjV0p_fx%BzU z{>&VF*XzEg^AkVu6R-QG>EP_^zUR{CzvibL21Ds|=g&!}dv^2eb8naNa96iCFO%sg zLt|JOj%3C#9z5xByDgg=n2~|_pMU!~>Gj&OIM-7TqaFTsFgZ@-wjmio z$V~v{tukc%5~|RHuk$%%Fs7>*-HmtTLFB)OAO=hUL&Xev?|!n6GWsamu_ZG?R5}Ha zfCIfg80~;UVG1;;f^{O~i1gr`76K)#{i$q2xk4^AGkU1v5DqpNVZ@d*ohFTE`xm*i z(%?yh4~7pj7cd1-SaM#%un7Z;4_fb;Ghe{;Q)LOy@XDlY$SCE%@qvP1iD%g}>-qD- z$j%&B(ab1onxP!YP60CI1{K1Ch~RFVe(}t0hYcxCQ`BZ#i zY64+OT8{a)q_MR2e12KM33ehWJoZ8Hl^ic43~&HJDyn38Mx|xjW9IRzKnM@lurbEm zgIVbt6yE<(+C$aSM>7l_eL;Z`%mb2MBbQW!#Z&vyfv9E-k2gYaJb#cXnE2lEx@nk( zHml4bRn+sbH#S0!DU3YibA$n>IpWk9Ym0PdMP?SXN??05l-Ak_nVx%6M&~{&lg(G9 z+wI7{!?(%pcfLp7@$UD?Ti^C}x%H+iWv1JfbLTI}g$v8Fva+r@lMGC>Jb#^%t0_Q- zWd1>uxBbTXXCfBA-rqI!6#4Zo8v0iqD)u|s@$@7ry1@>HnA^GmwzNnNg*dy2)d2ZO zMoa}7Mw@;81AKR&fUq3j6~ruSoLMQ06KJWMnld;6lx#9Pinu2gJQ!z10&OM=(qV=7 zGi#4tQoSK$I*d#(rSgp)_DJ4*0_|Y<;be+7M95Hm567_Qbdj*5AA+$(XY1CJGT%+T z%(v4-Lyc};wZ{3%We%_m@TaWELk%JQ-dHcBqd zo?Lh3e);e>zf1napZKHl-QV}e zRGF7)e~&Wc)`x9b8%$(%b1IvImTV5DvN4#*U|6cSPGoa9mf_FKfAzny zhO-t%-OvHKBLB6(Lt(T<1yw8D1@NVSV;aI5In4@l&YAgs7M1j-3e@Sa*x&UUEfC?% zI%od_pg}PRfM)s}=#_D%IO_{J>3rA|;Be5;*Jp&hy8HzjuzZj|%^Wj%X4rpR&2#I@ zw!%ZH8wdLgMYu?@vG$_sE7*DDyaWK|i;lza!)eJ4@b#=r0!p2lWeY}}byKt`MxXl0=R3gRd`EpvuzRZ` zCk_DmlEeQgFK%OeA*V~RueHswoISrGAO7as_vD#N zIzkm`Q=G>gX-$VRSUZ2VxA!eS-QRuFe{9Kgv$hH@{U=`q|8=)rA+Psyi81%z%BNH( z9InW4`PIeMQ=k38wHJT;FDxt`+EHYMDF^P2gV6Hiv}wdrNpSTnZphw)2V_|mu2VzVRXc7({$k#X#vf@~V zJ+Xq0b|tW&k9L~^jHqPzA>NUU&x`2aNwIHWaM3&eQdt;o1P5aTu%FKZTIL6@UIM$&HU*4u3-anY&;=g7 zLV|ivhIJzUTxcU+5fh$V>l>|8XL49SFyG1E5f6ooNoyEXQQ@ip8&vfoL){XBQ}&ZK z)WRnbPMa*fIz*}TQ<-licbPv8MKdthcn|smMws>}6iON|v?>%kW3_EjRX}vbV%u6SMr|z>c z@x<)P;PW{&b{iOm#Rx1;1!vP0qfi-r7G_+SaozF-vm#MpmHzWs;$-KQTytJDLvzfP z+(-(X`aO<^6(y@M_3WXAL05kF^;FvB4B*1r>vr3wl(oD1j?Q#bTI~(JV7z!hhKn~z zYw;~IxBo37-9y^>V@IBoPu=%1x$hI7l!rh2d3pA^mo*n%k?4!_rJC!EbbF=G4jL+m zm=z1cliadG7nMgF+AX#KyPVl3qC~{3Q>2%>p>~Io3d5mh&)Pn1oDF2OY;1c#zm0t}q%l9buPdtto<u7UI{n}}WF#O^Si09BD$Lkml4n8Mi4U(Z4>XoXF%MO;@9j=9x>I0>R)o}vv^v|a)SNH)I3u%$7kZ=(OHTcmJTcGzen ztE=lW7!K6AaK)iLa?kBI$vy9Ui`@Ozx5z#B-Yp9|4{GkX@##;?=(YP~a^`uNoH=fc zw)TQddkZq0v}HIc#UZ9LD8(G~->D2e1XY2y(L~vC`d$ab#>^^H;LX6f@?8mEH5Qcv zNacMBVxfSRg|&j21?LTzYsN^kQ7E8Z`2j^CbeI%y1K4JvsP=QFf6 zsp4!U9U<>skf&VoH)B&l|iQ zT|U`*Dew3!qlFW44&zok_cJ=Hwj1m@aERCPqx{AxI-o1EMC1>^+q4%cHH5F#Xa&ph zFwHoUso6;TN7uGTR*a=BFCATyo3Gy~KmW7eD{sGPMovHfj7-)W_iTvQ7{%7+1u@!mKwL4^EbKu@FY0&42LrBm_~qPWHe+Q1v;HV zDMGHh&|rLz>UcJ~a&V z%EO1}m~n=XgGkLSU&Z-g#weFM0<9CQ2?IEunIaoo`L7O zB7pZ|j$tHSvjP<@0;0XY20CQNANG2X2mW796|Jc|7tc0;wuV@=p-xmnI z1=ZF;JpgOvL0U|~+v;)U9tQ13V8?zhg+LH?Uj8lMp|;Ig9_2Y&n8iEQMFnMVyW(~F zpEFQAOctPL0f$TVKx+@eR#6DT`cnR8k2mlx=P!+11vV8Z^w8Q8Cfn{vw{NVsl5=Fz z9?N(-mT_;V4CgMF*0vjDcF&unzw1^J*&&0C3-a`H&&xv(eo8*_8^0;{fBG>wdFq@D z2LsJPw|#zIX8Hy6L%t!)g=8V0nU~WHu(~=Y;0#lCbM2=jtL~b$fHv=e;NeujP zPR?ro(f%YbBaAbD57IKA4c5e(?T~g&J-(H*C`7-X^f_1=t_q_MZHpa?_qg+e!F%65 zC>)ey?&FOy<;jg@0eQ`a8>NOoI}o#n=LPVX9VBe3W=5x$@BLHFO4;r@GQTZ|$jbwRwRXQ@3*|}M{`l|hM?;W?wH+|FB%RArk zb~$j(HTKlC=Vfs0lQKH?kW5d%BCXXWX?5mgGP7N#ojKVUj8qRT6;+4hwrmc@8m?OM zpq4@og%MX6a-&ihr+{t+02_Hos?4o0EV1m*k1r5eGVYkP~kM?D}c?ELON~%9{M_WeIs-1F{_rH0+>zTCD8TRx#fEq zfG=cp(z@!fcmRC4T{#heDJ@m1obXzuyiAEek^!J^=*rU9?}nBIP`C%oFQjS*n}u- zN8eop`0V$(a_sbmg7JU%Z+uw3^TW5w#?ddx>d7VPx8|kY?s=3~(IGpb2gh2e#&aUw zPG81@vy<_p`^dJNzv~Bj+pl_LGAfm*c{gABe6@V~`|o;VfVt7>hhO(Smp)$!AG1c= z-5D8PICAfqNB-WwYcKh2}g~DH~!t}t?2Nk3Oba1cdXhV8)ZCN~UNIvq(SLFNt z$A2$-_RPxuU47Xcjk2l_3q1mCSeSAG;S|CYCK6(mJaD0$r>?4zqTFKw#0;qOoEnwY z=t>8%aiZ%5l&C_i@V;hcJu<|+cNcRYS7%uC*9sRv`Hm1ngc~v+yYZ~ZqYwsGY8$}@ ziAu8oW;~gFRDva-2J9JS_;?-)dyzkiz`4rc%=f{74MUlLDzsO@9?chG>j@QBu_iDr zJl;CKSTAGzbq-Wb zOHm15LawxEUNwIY0L9EIOgZub3{M6hz$%PMhR!*d1%0^zTt|DotzfJr+tEUMjV%T3dSZ#0&E2 z`|p=eec}`H;Ab9{C!c;v&YWGA?sO{K7UyJcepdRujy;u80I3F67(`?E2(Rz~&izpd5pr||VAd#(K<|v>u7Ysz z)@fB*oUpolo&&SV^dd(RHZd77*vHH;u9}ZCq_Lg?8shM(IAhX0ZL%AybwKTlvn2-H z7^BlIAXBC=XaaNLY$0&MjC_n$@N;-crA~k&Dax;7oU-qjKTJn3{llR}Yat&&w(eGk zVYT=8Iq`j-)jBfXxri7b9gGjz+PVBwol2dMy%rrI13nQ*v>!}0~0*WwCFuIVVli6+>Uh4NK z^KR@3IB3HF1k+!m^0%)q1^B4m+b<5laVb%1V5fAZp5F$UVqMoPB(F^LR#cA^S-fB`c1j zk#LB!8jZ0D$Tk64RP}X7Ogco+cM@p~^bw%v_;RdOOQqs#-t$A+k=0;CB62A51m^pL zIaqAvl9RgImi3K^oIJNCfAag^DgW#L_>D5Raa_(HKPK&QU%JxIxiMwXdy4Q_n?o&L zryPYsN*KuI@~Kznul@c1bAR8R|F+fctrJD_(&ww})8Bvh8wJcg^1AQ2^!W<<6yY!) zEDTOP@;&FD`nP|jzwOY@47h-x@JlHiMimHWM`%L&X;FeUWOndFM_D7CHWqFcu1VfAra~PhM;m$`pm`vy&z!@^P!ch0HyXyD! znA%b(Mxf7ifZRF8n9dA8t=pNPlmk17GI(1(6odeTq8wV^3t-1b~_XQL!8n^nx;F`#DgQ$Xf*F8|EG$DU88nY*LPo3gq(8 zQY04#$cL(`9?A+(vdF5A_QOE?@8_7wpa?|ypHc=u!&tr0L%FxG@!HS@3lmSr z-NvWnQ!-!Fk;9t`(S=_FB^Fm$ft$X^pM=VCRsG zXRnjaj@x8**Ui%I?ve3uS)P0LY5COs_sj2mD#$B+=S*68A3(1BgnVA?|FRm?gzbm+Wd zFsH5{O=~FcOoJw`BJd6s)M`MI!*X-;0$9(40+j&9HJnEk=Np4)=ov8z!Wi*CGAIMX z$7DJgLY1DEZ>(A4d_JM-^VZR@HV_k>l?1E{o@<_0S{D~P<6<5{#-@mf{?aq)%IqC2 zI2f8(PmrfDCoNZX15ojcrUN#f%PAjFUziq4}7aE?!HV!R%EpHf(%dGFRhagNbBsAGF>|_GMSTUd#8-s z+hind8IFgV!?+Z37)@GQLACrm91UeKHUO?PVPj|jTnQo7;tm?pYT%2pc&s9;fnAoy zMTsY~>10&NN8ob|#RTsMf01Eby=j`L~QFev`Tr_jQS&(ox`^U!FXpgbQL*{s> zFzNXr{oo`)h%xK2Bog5?hs=p~QpAM~NNU0`2#tZaU>V9-AJBh{$DUBT`qnxxewV9txv=c3{adMC}NUlS#3}HRE5(PbCgE| zIm*3{$Z6f|N7z9ONPN=CMb^D|WLZA&-Yey2e(L+=>curVck~6B3|rD`_k29n zrAu}eS7NoCI#%7cCB1G-HkV$W^!B{@pLTb@>Cg0cTyv_`o#oi+OP{Z@&m~~)(&xYI zQ;eHcIP3@`Jr*}QBBiMkMM*CFb82@64;j5fDPHcYqwmO z?2KYdPazjlWV$3>m;3QFo>V5Jm55{#PGMJdQQ=$I-GJDtHF7z+SFIKLH; zm#E|#2e9YFqEC3%^lPgIna6+`%6wRW;Rb~r=T{A~rD9zPdH-4eEe1X_I#TOzWP8wy zYfO@IKP1Bdh94U(P|QprGle^7a{=PP6K=1~vP?D>HOq;ORDB;1Bvt&#_-Pm%Y&5u~ zNrtkq+Q?3*^J94PlBH&qjZDAuFhYPRvCe#K9SF(4Aw<*GPXT0%at=@mUCaDu7)dBc zSaVGywq`dFE0GC)4jPuKwPhakA7@FGXM|A{x!cM^lA(b$rlC>1o^%ZCJqiS2N)eJ5 zP;UqY0>pEEk%J85Ws0UfTgTDzcLy^rLdV?*PW&L5at8K>3LEo}kXO!C61m#4VZOIB zMBc)6)A$854dKNKTKfYmr<}LTpQ}J#shS$#qKCOAP00FdqR~M||IgPNKuD`Hm|&<~ zX9^q`djJdcef~@<(%{eWzr{VB!o~woIWcD4jOC(h7sRgDk;!yyVOS-}@a%4xE?z0J zaHI4VZ<6k8Nj^I#7tWrP2OoS`9(?E%^6*0s$zzW`C$F72qg!ubZeAAVXQf@@Y28a* z7$|D6czey5pbZ##NmwQmw=~R!Mul;FLcA)R+xrbruw`be3!)YkP=nHen zzw>=%T?E?;=ZvKbU@I=>jo%Z18XH59sgOUICt~k5%*!|nD32P$YBpv$h7?dn(@3m~ z2s#@ON%Q+zM4$p{J( zz*$YpHFPF&vQ+v?I6~QQN0m}}(vqG` zItw!C%o_Mss;W*}GE{Ju#pU;T%7ro#^WL5 zNM^;?@hHmUNkDS$G5a~sMq0z>oQvfz9kY##o;O-QEv?S{{o8NZh3=%xwDsm zx!)t7_IUl=J!c;H+yAQ7pSh+xvnb>7*q99J@kXVJrSS3uQlsA!sWRS{>+VXoawKk5%oh&%-5h zefc9GkJIx*MibzexP^?eU4zHABoas;(lZFB}l;cpr|(Hh0mk_sr+|U zl(`*|55#?woDpgH?3GC`}gOSwlnv#z9$Q3 zpgWOorCDfz*HwgoW;kceHHY+RbJEvnkfMz@y!XgUXAHGukD(fx{^#LYx*xol12u$L zYGAE-D650I9?6<)Ioek++VJ<>OVk&DQ;7sbp$^=PF|Po5%@5M9izv9lrQx8Sm>1xv z8jsM&1Mo|Q3oN;q69>+e#hBgq&{uDlhOnlAYdPh7EIMGyc>xgsg&tzdhK}Wx^Y=RF zr|ZVwhrD>DlUl5z6mux+wcnCXuZzkN#Z@BG8A+?#muYX8OlS7VWah9;XK#`Awp*p! z-!G%lP|luwPCog``{ZLE`-FV@{?EuW&wN3aH$-N-E!n<(o6HxGuHBaL#Hth`ht9{=mVt%- zSLZ|{4<-y{?mdTZnj^(ex?q_QNKHN{?4@wrh5q3!h$`MRx3Q*jFtOKS)*I^%H{fr8 zUd;)S7zKcUYE4xv&8=x9Y>eRDXlZWY4>KP%(YpOV(OCuDl=c^R#($Z)eQtw~>6?Lq@?tIQcprV7RlhlMRCG6JBb zPJ^+6bH#B0R-A^gdSQnG)RjUuS}k?#K$nAZ3IvS_2#YG*UP;x%A&o(2OfTeZQ&7!; zEz3J+z+dbi2kT7!83V~Gbo-80K+d@NI(y3G%aF|op)GBuP}DJ9Z*55M2(mWvI!A@@ z)NxRRA@h6!C`|NCbMMi51PhE6S$ieeV{qU*^GEa2*?wrNBNHq{cgh=d<^?5Odia{O z=Ws+yD6Mt=FKs?*z~ZDMZ&`uW?vE0K(9zS?A4*DnK(P zrS0M3wT%GT7Iv4*reL1=7(@3+;3*|(L^xFEV}m&u0DH0}S(01&90H*mtUR`vSYFt* zl&`dMEAGyJ ztUSGV^Y{FzncdfaR9fxAda1_x(&xVoV6O8MKk*Z<`=-hIvDbairO#L5r!{SNd*?bc zi-Yx}55J>3J3m_t3shnI zk?))B#iLVUp!?&n0GODdM8#sLe##Q?VbJEAoaNOpVxhxW%!M3AQt3YDWAdHCTl%)^$Mnqge%f&E38H4)-$_oWe($^x6#O`{O33*>J@pDJ(^ zg%lm^N=*$)D;@s+v6Y#?F|#KsCPjng!($X>WYNRhh26D8uC!WHdakthk+f zu8|vVey4oh*MC6nx$923^6G;!-*3z2`l_5cb6!rLUsKjg@#6OSed%NML z<_DuO_YxaV7z-Y^kb}*BLgsG)1L@klr85VS^1cQ0%uz$ z#8dTvWEWMOepHu`(z z$Ntj4mtXqGOLFUV+ciY1TwlZx@<`<=i4&uyc1OwfhN%HF1dM_(c(_Vuh(IWlsDkMS zI*hQ$Y>=`T$|nSAAr0<3oo;e=~C(4kXa5VZWw;Pva$? z0b`^JKgkm8Rsj{`g@k1oBTn|3Xa(444D^u65Cs!r4C8>!^%aFIV3hk>!Qt+Yjl3us z#TdSQKjZiw)u_mr&QL`t2=Uw~tdaeP4w35v2QSvBnI)EM2lMY9IaL1i#v9WulO`MU z0-5L#ii&U~gpZZDhguvQD1wnl3HGhYaq8_)MI=E@hZO&@F*eJ(OeNb$ZwT8B<2Q;`*qD}(TYYz@KR5+~8L8^T^6(?b zhHQgZG$-%`?6gP+QJY)dhXg~o@0nw-W=^sFSe+d{_K^E=gKbbU+%NWN=5~XOs|`aK zO8T80GHC=S|1Zz;IQz+H3aSa^r9*Q=E@mg04Z>rgZQ<&tXdiw-jo5=elARNJudty^gCVW0uhVcil8+zRH%GU><&E^A4}Uei=RNPI z!&luvow+HsrccxO;^$~~`Cgh`e4Hlht8(+nL^pkebdJWHh=D^?Yhr(D5{H`T#sPfe zjMV%(A4W*1Jp*p6Eyr0*Ejy}!Twu$k45*&?fy49pcdoU7ahj1;06Szg<--nN+9b}> zGnB#}RRB#J3kM|_7us%M!Wpwpbm@?(((E#Xt=e-uxdg_F=-7qsmjH$sTej|s9vnbI zt5Z43?S2V>=d$|#=kf$8ywcWj*a7-?$x6+@4s2v)%i&(-eADu$Maw=X5d@YcE(47G zU%?(dv?0oOWeqd4RjjRZWJS_2(Elbt9$=8qI)pFdp729p8<|d>XGFys?e&ZCfl2D@ z?=wH{%`VvM;RoW??|Z8=#;eBPgHpUE8%mO}hNjX_^f!!GjH?Doaok1?kuXxXAt3syAr3eV(Xu z?3Y>xUjI$4y{|amS~@BjTuWPJ_xe)2ntNXL1p?+)AAZ^2*}c9t2eL_nI4%16(9s1_)`seh>(--Nw6DuNK z&IXe`G@hT1Kd>RlCv?~HjTgTeDMP;kGt&Wp2qn_@v1f(eSzH0`!Il9)QZC(EUKA$) z8*})I)9@@`i(6y}C6@nu8X^p=sH(P!%iRQc;k%`$@J=n6%ZH6##Q(FJSJsd#>lopt z>SF6-l7o=FKzSkY_-0qCYjR4^W(NLXRgZV%BogMOOT(clLYVm7@sDVBj~ zmN-G@j~aFe(L_0Im};UJ0T4|a&kuP6jL`60V+Km!fU&}o*k)h~Ko((X3bN+EBcrN5 zC$s=HBbI?^0*HbgsC_8y=HcHpYI=eRXa#C$D;sb8JoaHV1Qm%NOc>n?0Bp8l+Lipe z0Cf0VL+{n%gb?z#W^8RVTBjd9C9pf)5<7pmIlr04f%cA!elUUrP>@#YWr#0 zI!d$l)kLkUs5N(zCXKzcy)~dq=bxa@e(HDW*MI#t=&n!RO^=^?frch`((SfradDpJ zIvsgFvsbwP9BTl$R2(MQI*PR&^D+x9yY^t3>gAGMf-8mRSJ8QPc5c=|a~LM!D6v*J zU=d4ivBqW=g-@Zh{kWiW(@j}#2G$uUrrA~v5D?H#|Eb-o03RPFNI0t{e(;_E5XTO4 zVvh+^4(-SwS#D3)mNV8f&TPz36y`MKIiVltAY8OBzXr(TszY^!4kdG=QMly2glA2lR!cK~&1 z2)ZpU^_8|$Jze-3GGD=3EEb*QI~drPH6cB5KpN+;g8`t5y=bAvu}*>c7;&r!dv?|- z+O5iW^K7ly4&o5V=XK1!2=Psl13G@da!bkZGUK)Y9${Z%f5o$-4>QP*d7lqFvaCT~ zri=YYt}=mM6gZxP{!l;7os{S&`@GBRcwG%NulN{Rmk8gMeoQ_9{Dv1mzKh&NyD zdYz_|EgB3)k1yZ+r~hQF(YdSE=uk}#Qlsp<*O%_qIr7FY6fpPb%l^*p^~HLHlRiBA zsXw-U|3CkU=HkkcX|t;vIP^koBZcF@zsU(1HXZ@;*ti;s5dGnk*V89IbDqBCyZ=v` z)oXO@(7cJ-@{(j~81{X&aibibWhyxh1y{=xU6~$Qc=44`M7}bsEA$g!%4U!V9}M=H zF&yMnFgaxj{L4#vq0JTRdU8GsOWiVS;-$37d$UF&2f+mL*A30PqW(kH21#r^oS?fS zTm@wc2QFGXGpV9nxdrmMe1JCD;VX33tmPHd37{htEICg0#N^z|23O6T11P1*3j{z)8eGb1!%1Q3pG%35 z{my27&ekf)1x!pC#-}{9a7Gb6sm2>L+nQ!5@m-VQBJ2{1J7K5D0AxQru`pi?$IZY~25Dr>BoLxt|2pmziF|Yn*?L|%c!7bO=OhgJ z9Kso=^i_tMmOq$#g@;lC^EvBl#ZM~2C9~jlm9>-{zi^at7~;;*{a{PP+URxiXqBK00R>fTfu`g9CIr|>t$ksuj^MSfH(9v zLSqptYW;%mA=!)qIkC2aO$Qd9AN-0z1C~>;kyPt0LS12t3*hKB7$0$AE~R;!zawue z;}oEojwd?+kZiLK-6eKjfHGOvP3sb62v%y^BeISu2DyMZL0B}a5{LIW1lSkmSo2*o&)S7G=wKH58k>BQ5){P> zjkO8uWC{mOpeGK@u)Jiy1PS+GO~S3hK2|)@KvNkU6n(pD4cTv`GAuew7%J=!Eiu->AT-g-}x;c zpwXG9XnTEw8q_Q^)D>+Ji8M4xnH@0m8ao})VEf|PxvRhSM>~h!`1crIi3(?9V)yz| zy}HNV{Ib8Z3(W0acFkzI{nC8z#ZUhD_UTXlvF74|Ju_;XfuM$Dm72_(2aI0agBPID zWI)Y!jSgOW6a9mKdN+Oar$0^y_I7Ch3TLWe1Bx{*!?fg(uGrdQzw-O0Y;JD60v<_g ze5|LjNjgyB8@;7xFF>fY{8hr-aCi5`QdT4YGjI^EqzDlHM!CRxd99ot*%-x7^(jBE z7)aGI2qQy5seFnb^-$2I3;|PsQ0rro{?1qf3(CP8Z3NqY5Na8fas$Eoq4?dq!Lo|F zxd{h79u!6am~(FG*mo>*YTB&x@5-EH29&bk+&I94(s+u58rB}pj5GoM+%-6HD{KOT zsq967YhmCfhE1w#N?_~Xab~6bp$s`}&j66JGm7l080(o~hOwf~vVJ0f4hzq8pdbJM zaXXNGxL_D5(-VL)bZ&%gCK_|$2e=SjM^}zMsR%5ypyV2rvf#uwiX)nKFb)3E<5DMFkgmL?~MTSzt8*1zET& zQN77+R;O8`K{dZhnG!R_X%ig7{9R+#n^WSQ(^okR@)BSG+xNY zcLs8*W=*gM!r?=i@XdVkuCIl&>QgfHwXazf(gLQrXQoSlP7Z1HI#do<{%ef!aF)_~ z8;GYnGTD`i=cQ+O1DEf^c_}miEB7h6*Qww9#hrj*u zKnc_+ik8P#wvDDc=NmkBTW93Zqs7R5je3J2t*&p;WHglTUvvC0-SYZZ(|h0ZE_&Yw z-bYtm{R&!HWI?zmXnOfknx21H*m2XXi!>dv-_C;O4VujAGyo`OfZIq|aGJ1TW}w{2 zwBAG~&Okc`;{-sPO@&=2%v=k9MW$7NTl`rC(iDOKD5u(T8nP<)vxY(P2SsJ{djf6= z15U@BYrk3lYvP8O*8uOZ@9F2#S_if!UKg;!7IPU{)BkC{t>K$RwIR}SB8!NM{uF3Dp`%Zi#u^D%4me@xPxU_l|B!|?(4h5z0S{!Ekb7Cyy^)-%gGE*;g zZc(n%ze-Z$w0hWc_IxZJxSj>$$uC{%pAV!PeXXJB6Gkb`Au~ zBh(ITff);qn=vsQZqo9hebm`^lK#y1{u}y*UweYCK0Hr*mpe3`OmyQzNR!j%W3zAr z!9#^2Si>d5k|X6A7EPSpPsL!s=TJ#IRgzOLN8A#4koF5DkA;pd%^wWxOIFGe+>T>`|?r1psOy5UDt+GRG z15cVkIH$D2=N}GAIK-1hq}|yK9S?n>)JcNF3P-W()PfmRIBALDCm={_BL^H)RzP*2 zqW)-C0Dn40&>vyMmX4>fl|()+^y0E(?w}Z)EC=}lBt*ZUU-ijx8Yuu0+8_k^3WpXU z7Wx>3m7+1hKGU{_!Jo}!+*NIS6Kr;thk?^PzPPT2$|4J@8XSBY*ie>Nov6ux8bUEG zBPp}eTCE1P8DO)|@pl+h|0%>5O`l!r<3vKVu*9KLl8j|NA{61ybO(3Zu$pu>xtUqD*$>&tN z&=W0Wy*+QQ-2U1YqJt+4J`I)CKF~4IY_ykC zG9)rs#{&vlJy*mdt^lYNAt6|s-~wR&m@|qsW=B{}W~TYe$pI_&3ao4PbeqUn=SwD9 zDwnOL0Xl&h7~d^GLtp1Jc#V_xa_xu%q}Vh{c3?PBV0Y~NeMiH3du7)b;Zng=!Lw6b za(0UFch>4j8cx1<_%l-bF|Hj^EFufTX&h$?9fIF@QyCXu|a&P$7k1$+c*zuMn)A2c!8R#)4qd(G~ z?rmVK+eTBu($_b(XxrFvtxk<@x%mcq_q*OjZ@c5|^qM!^LdUK;NDJLQVZYfP zIvJsFk+jFcLwSv}F{W)`;jQkIM|M$+Kd}7J&%&g`7x0|K=&O0iDr}-Mq!gi~&Y8x% zNoxcEs$i1FTq(*A%frf|Kw%6}9dcod_;+}mf&r))ge8eXQn^(2BEzOtI~^_;AhLY` z@POj=THXk zx61yMw?$Zo7$UAsmZT1H=2EO-V8m)ag)~iZ_~5ojtQ#eh+@vT{R7!jv2hWx8*z7#{ zx~Tt&a>ZEpbv5ms_+7_KYM_+341QbYaK^n-v`#uOi!q0-H#7X)MNHp`wV7?p-f%{j zE^pJ@Zaqvt^OJv^ZamVab5B1lhnaOw_+YXuA*v0(%j&?IlR~XEyR9~*aes}dx$?<9 zulc5Lno;BNdTXJm%kK5%aWxOz@`VBBMwjn@+27f{zWA@%aD%3!HFl!jvG(9U{Rj2h z_@-uiMT`eFiWCG<14sh`0;Lf{gFk2vAumFc(Ka1_#VhIY=O^^PeaF9{ho3q}*Bo7< z`MHLKCg4;u8@loX|Jk{B_yS+JB|AbV6R6=ViK?@uSFEF<-IYUZq3MPD+VNMBUOT|6 z^tbJ59+qM&zpmY}QTj%L5E$bj6u^wNFJvO5y^P7lZRkuf`@S3Cm3!b1HA=LV6tGc{ z(VvCQKX%rNvlOqD%mO>*bA2)h_gbADxXUa{0~K^vbG!qmPH1x6w@k;5M%UBJ7!GLD z!mTRw-6Gs`x+7r(96krL;6z(f#ZXObGPFmA$coS*gK)CEo0m0=1n>LQU)CzcnD);= z%Pkpxg+VENCe=>k87uP`B~8Y^j0J#U_6z~gBur8h6Y%e>i4kBMV>t@A34^Usx6gA} zsU|;YKr_uiGXSN+5EGECv=L?8N(hY_^8m54%uN8dWr!jSUK}E5NRh1z?x$J?X%AV6 zduq^bgacyCs=*1?N;oKBy*Uudi6_v<^`_ikHRf#oA#4_fv5_L+KR1-My(EaRIS%%q z&Jzs=RzNO~CnWAL1}nlOEIb#0rY6czU`_x!ODZ9sYc|9&7jTh@E*u&=YtXb-r)jNC z)SjpM{7GuA+)9m=n}|C5X*{XZi!Yt0M<4nO{rYeHHr;dgJ@mxGkJI@J>(cI>PJ`wb z76hPU)*iPzJLR%Z1d8M92-d=slE>$6thdH^z~aE=g=6=5K)mdDy7OSeCaWjKFOkJH z?pOj`ad?4bB_&%8J6Q?Lq0I5Q>~|KcTH06Dugza_6w*TV@q6i@dHdwhy1Yl`y)-+c zJD7b=&v9m&em;YA1-~}-T3`9lk5<-lY4$x3Z5utEkOO=ijxpw4(f{RV^Gmre!y+id zz!C~@MPRNNvuMZEe}!Z2VXSE{s_d=$Bi8!@L`PX^9==-Ui%(Ev3mEEJG`RCj-UwnF*M4P%AN- z?BGg6Bms^h>48E=@!eqFB5Y4Fz{qZjJ_b_`pAWDtFdh$cP4k?Gk4k_>rf=9Uk?A}! z{Cq3|>`~wkHmPT5%>ZUGXAt%nmN)8(c`L0g5;yuC1tH6|Aai2zx3#X-Ef_@3NX(1G zj!;vpYXxkyNl^KYJ}0*i{#zW{8AH<-YtbUKcWvILnZBdESRsP37pu+{i--2{-(i1( z37Gbr^bx-YmT1qk>$Q$`I~_f+jRWsBK^G|{aX6!cfX3x zKmG_!hBIn5=e++Bb&>a$xVevV4S^nQa4{cRy6zjkzjNfxzev+z(sJCrzMQW5%8g$j zU~V@n>zC&xx?P;nZ;rN~`>k(YfBfJ7aHl(eq}EszV@f_E8@YuOB;()z7B7=SrW!OJ z4Tx%Ey5{EB(=Yz&4cqR>ZV}Nz=;=tB;UBe27um;WzRGu2JI#7gHJ;MgchJvU#?q9XH3O}xwGj+C^a+3?4S_(Yr5#DzM>7jfL;j-f4me2&vH_AN zqAX@;a!?Vvim{QyS7TGxI(UDEr*8cpNf4xdnO)%yeHd-;4DL-0Io~y~_#87V5>(p-6i3v^oJ8PG50#9bRwVDkB-0IY7)u`QSNQfxUR|bhB zRMfQ9Fcv-3GdmezFvRE$y%BTd5rzbZ1BN8Ru;F;?_%nv8j~TS9s(?gz7T9&6=Y=&T z7zX)xG};<{0yjg(5Wo#&hjouf9coSfU{1BM-n5EJd&}ULy<{w0M36y05Hrp|H_^lc zSd4773d{jC_Gf`9XKjY>JEKlma>`m12A{C;bkNCbRv^{sBdWJ}jy6?uk26?^?%jyd zSei8V)2wqf(ZV&eopPqU8S-S7uyXjNE_c?m(v4`ow`yQfm7kg4x z4sq>v+SKXj>9Pu@E1M;QR&W$DAff$~z=jltoE7)O38*kFvW8s3YQV~NHiflk*zYAc zl5OpBy2reSV+zN@ot?~Ph$#?xi&Ak>FK4zU?HsJL<#|czsl)+Ra=>#vDh{NxO>g4vrMUU}mUw6fSH8a_>vi}%s! z(tT9B{3O-4R%tq(&~(axdt25QW^;`uQ*mTRoYY~)pxKPZBi4uGe$}K83a}X)ju~=t zV1zY+!%Z2uQ|26(U%-3`ab-~7!d?A`qot zZhxOmI5hJ`26kEiKbbkF=6cFxY&Nl$Ifun2d)L|&^GM$ghN82(WP^#lmY<{3Jk|zh z^WmT)Y5Qq00UD;IYsVTDE0WvyseXAb7l%V&simdJ>zKA9-kULgU<1T?Qwo(a`v&)e z&yvGvoq=X+Db|Z1b5=rc5=fiyOV=8dw#|DH3ZCu5v{4}W3HC?WSPY2D|Lijk1Q%;> zm4RnryIA-D6vt^*jCEVv9iU6$)j_1F)A`HWG}o!oU;eIl(|3LA`)K{?Q?z+$o!aer zsvs8;^R=E?)hvpPE1X*1t>5rQwc!XZQNDx$6H7Sy}bC z>}6j&tfk%S%i$8kV@k8pnA-bq{+FGD&)ht?aR2|>?lxB%jkX#_y8R|6N{tvw3zMF_ zO{v*v({MPZbI(3bU-O|?(Wz(7(~te#kJF3idUVy%1r;aL2q(SZ7=blmoOM5UnTA1( z6U=HBoNR8(M}qgR8#_DGg(DJ_ZFwZf0giL%uBsWLbjMH-u{>?@=fTjh%^0tj%^Vq1 zkqcEtWX(`YU&=GBIKR&)t7fnPi^4+{WJB0)oUjAT%w@xV3v&wPiWaS&0cE!&T3!vq z0BW-Bs9)hRX4#yQ*A>2FqT5&eB6q6=99C^HeNF&Y@K*%jLCMmX(mts&F+!&edSPyu z0Bg={1@~B!vEjy<8F&d)3`0hLpXCGyPT)}xjxWhj3gg!tj-1vEtgbMk%o*eGP)~rM zzca4FfSZ6cO=h$ab=pmuYd5IXW+2Wq+a#RS*lu9in33g1tUG_|ps2G2r(KO#WhTU$ zkTC&U9jxLo3@y=yWJBd3Rxs+o9#jEp2b?M)c3=uc%d3N5V1U+dmgg`~FIoK9nBxQ=+^3d>4s00Fv9nMbXG(^oQ^)}zxreP&>>NtCDX(|d zW>d@9s>_|$PsWhcU)d!B*0I43FoolcZRo%e(wrAKsrM)Q={1~~8jZwxZ*a44h-NL_?HTUeduVb-RBhdL;4%6bndh^e z5QlBHrdh^mb&_k;U|mT`2TcNwaj5F%=C;&v&vKiNU3-FVd-EIUYro;^=#F>3oA&Qp zA)<3coA=W2sfTF1_6XJ1&rof+Nwv|?4prL9lABCvz(5?!+%PL{RHNaTfiYf}CJM|+ z2rIwOkrfKQ39!cdh9rNGcv4OF0AP*_tI=PsAqTKZ7;zS&s?0KG;8|P9p2VP9%ul(8 zfqc>K!BB(E2B1#w8B9F%p+_#5#EWMzwLz^3ZfxwN1TG5lsP(LjEWDnWs<6&H<7;KC zm4mnl+e>DybiRjH@0d@1%w3MbbO4@#?kaC1+fDHVfc1K?>PgD*897OeljyM4uXG`E z_s(@RbDX^V_D4AvY@e;J-@<;g0%1R|-qrg#%I{4t8ie&QtYZZ(cyLwA82yaJz~uys zWh@q>xMx*dB<{;|B+D59sLku{j&fKcJ71U5o(4NL?~Tj!?3{^`$sjt(D~ql0@}a%u~!$L-OA4h;ju z!kK)J$A)Tb6Cibdik2wRSd78WNK72{3Jtun?a)I}eG}7q2n)_YoLPY}*!@l43E>I} zJJ43a{*@@?61D~_e#)5@jU5Hnn|#MrMbrKCo|*<8r}%i^9CtX5DWuXjz~smlyR>_% z2<61**}%_98_*FM97?ChwMya*EHgsD34pc8=ZY+2o~$7;C<9?}!vhXV^5K%^UCG2l zaq)TXOMxYDYG!3exU0UO?~@pXieC7sr!!O-^o3RG%(pN&1RV1cf|rlxvA^xq-3yBE zNOH)gmA3$9KbX0-{!jS~cD$f+g?P~${HOKTGP0)s4L8Cnb# zVV1BS(ew!iQ%_hM0aDt$0FMj7b0Z@+5B*;do zUzY6|Rv?mQ*z?7~wzVSrzcGXpz#Sp`SW9%A*&uT;3%)QrB3f63ia`r500jLhW6i_a zQ9{$eG2jtNE97g;W;CXpj!9_NnZs@4R+~{vrTxr?BEncTVT5Y&P2v#;PJ%uYcy!qYRj8b?iU&O6Uo9ot#_!_K1{8}S5STFYNDlUX)@kRk39YY z-FNS&=-~$*qz4{)m>zoMQF`I@i^K$-R;Njwc1IFNG#d>ala`5%J#Q5OPoYsd$UsqoI_Pow&<8N(lgQk^E3m0^eRH<&fCsQ1fO(U> z>io&fVy%XG;(3XU=j~xE8F#*OKiG4NuusGa52zsFd5O-R-d-Fdct@?bg@R zJKpw2y74u)(2cKtEgiq=Dx&d=G`)NejW2$RYMakeZF`euL(V>0r`c53eFoA;0>1J7 zP@~bbMq>#Xozir~tT_edCew)kcjM8FhKk$>iw;>*1%R4p(3ylxvR0c#BuLg(0Q7u+ z(U`Mn4FTyCe3JtquAqQ;iK#8DxO{M=%tHI99n@-1OIh$;0SuAlRM~fSrfcjwjE#5= z2f)($lBHGe0bsab$az?+ty3wP7D8;XrZ8v;+XQSiWyRaG*jY}B!dl@fijn^shqy#!>1fxiuQ3!3{eV6x**Hu$kJq5#>Ig^T03LiP0KWZ z$y5a}l;L9)+jX(NrZqEGZN4(IE5=kDit!?Os>7>NFXw(PaBP&4!!r z-FW6#f3iN^yrtRME5Mu>Kj!$D>)>hXB^#71P<*1Jn-&{q!@(9^`?}ZAQ_m0Ro4@bp z>64#&j$V0UffnYQ8j8S+vy1GO&Jq^)BF%Tjz}F==r!}Y=<8kUf&5m&b9Hi!%9*@Od zzMe9(8mJS8fC%#quuz*re=|m?WzXi<0XB=2469yFSi|x1p z6vQ)Qvok;go2+Y%McDybT4mESlel>@ga9f5SVX4Ce7dN;fKzM*jjXqd=Vq3l0&AiD zmccLm-JGce+y&DzMBLFPyy;tjt-lV|mX1X=G>zxyg3S6P16d6OP#v$(`vuqr1J0Qj zVlX4@HvS1{#u-LMw@pD22{GlrTST2^le%rya8oTe)emF9P6!bIa?Aij7zzyQNfO%@ z2gsZV?l%WwCEQU#J!u(fFaykzm^9{#tOdCb0A{C9Ui4;!P)w=8E$UinX7Cwk=-(5~ zw452$O*(S`3@G>Y$c!{`63i$ygAXAwT1TDR=__iSL)RpSs*9eZ*FeStbn`F@68`3P zDuw7#~kfHsfoPK!G27B$-q6%YqY zQ#7e`ENk8ylroqq!Is6^JG&yNU-WIkc1q!*ZpdSQF^;t@WfBse)?DltCGcbKV=YT8 zvk247Gbsam;f$48g~1r}BPm;IgDrubFTgf0O?5*^ntK3)QW0=Bn-ft?gqdgXtwQw5 zW!(X6#(2&jE^EK@if4qjm4kAXFJuNS7J^asA? z!*s`6@1(1*zlw;qiN?>+;Ov7mzHkq64nYC#$(*0vB;i#P0VH%lK zCF|;pM$C5O`D(yA+kSlb%84KNd`Ci2ZEiBqrim34{D3B$uwg9BRRJ{1WGcX%C54dn zUdNCoC_{n;Wz*?cOB!u{c&7JaKv5XcCXF!yTh0!6cwa>3PO$F~Mv6T|%Z+u#Y(ju- zmUY$nSQc)lz)#3GWP4Zk=VVt)9UQ<#23M0iv1bZnI|Fh6?R=~QxZp^SolH5{37P7n z+IlcabDTfMAOKG=5>vbQWXe$~21Fwa)@y5X$kCiQxKoBc4hGUZO$X)LGwBfC)p9Fq zdO~!{0}=ya{qR-C4#0W`#SzjRm|xiV2I{2dv@(VtfY*h;3tzhZ{|~M_9GHF0yAAg3U$0VeO6s zvfL)=GpW&ad)7mU(9?^0!^Vs~E$M^0tc=<`!^w=!p5LTb-LRkj<_~@iedx|t(78t+ zr^#?iP0n0z3kmFg9cD)Fwd7=AF^k>YsMC0`#^dqS^7SA3q3%`h`Ipntrp2a%>brY= zIbO}ZYy*EGfVqqJzU=SpUSDFDIEGECcUEZQ)PMS>t!IAuhntP&v3isB=Ee??B`Za~ zraBkUiLotg#sZpsq4A!4{jKy1|K$<-jvx9ZI)7=KZoFnmfecg9%^GvQQF)fjFa)4a zhUa@&;FSzyH-0K$Ple6p3@6vx&^uuBl~;vmVkJmS0K5i`4r>g*uRHDl2yK@a>VMk7 z5K04w4r1Hbgj8E9?yKdqA@a|nT7{=6Qs80 zvZ;ZkC#abv!PtiCd#SEljoR&ou-#f^gys16|7fB_tCL)Fl5?LRjH(T3LN5+kzH z1qDY_!3kt`RWMe;D1fm6#(Cc+)+Le|@Wl?51IVKP1LHZ-;Jn`zfpmk=)s2`r6*6F zrp>J_Y3t5hm)b36)3v>y6qr-yBPMt@*ux>fc7%N*+R8y1AYK3W>4Oy^g)F)QDn?>q^SU>FgJbXWl+z{6l<@(?i*7a zw16RD-^2LS{UGY;`_C0Zeq+tY`i;6(4~2H>(iNT= zLEEo%3#0$6@CA!M9p0H%QS2I(x}gnIKgPXbJmAPDtwq^m%=h%e1#c`5?`A0gKCt17 z!LvRCa=kuHCu5qQo2TopJwdm><&E^7_r8yAzvB)%apD9KZPIk}b2L2n37TAbh-zDx zs4*Q-z0Py5OB|mnz&L|$!-GRB}S?0%2=nt?)cXNxRK6wi;+>EJ4g)uDdP|nDfZ$io_BMX6geY{1u19 zVEg54$`0z;I8#s$b2i2v?gg77&v}e#yeFU$`YuC4{@K}%@WgC~`~8f4r;;qt0gQTh za*C+3cLcNuRVKyewR|Q6H+i>@5a&3U)AdrviOsjP?yKC6PfB0cqmGb)KBjE8uT~M%^!Kw z|8ME~5B|+rt-Bc-P`lTc^VQt@+AkC^x67FOO1U^0#B@AdT7C5AeqeO*fj`^ouC!;h zmO3VIJQA5nPp~50IcU`Ey!3ioG`})W`;MQazy347OF#biew*eybvkxB_bt>BbfmX?K3C5RNS*?XGMFq+LNy6$NT3vdS!UglHa43*{228iQks za$;n-BdpA-(A$F{Cd}B1@U{7=&N78wpSFK#bP8+9GnPgIgbaMi*aTB70drv`YN(Kg z^;oz`MNBz|I=FM6Sh5kqfOZL>81s;ULkpDkwM?h2F(3tq1JGu3N;FWkz!I|SPN1<5 zJxj4ZOG8Z+_?2npx(o`;=-kD#^uT=&(eK`MH{JESpQVQ$dYCRGXu@Jo^jm}=0e(sy@oXzs-k0KF zEe=O=6J|HsLCFMY>DP4DI$ueuTw!5U9W!skC{w(x08{>a2}%SD!w>v$FEG7RpH{&* zJkwgJa1e8EWQL=UzoKPQb0hIfUDrX*ggP7yY0&Sd>`y%9C@LvEDc3t11xkFV4djJAw-nd8L-+dgR767tbeA51x4s(O~Y?< zzq_8C|7~?B#wqr$^mhUe6b#U43#}`J`T^wSH430c2>{FITmlA6EP!Cpj)aY^Z5v=n zw2hQY089XL08+|*Q=f;qR!kS`2eZT=Ga(J&JGqxxrxa{#V_(_Aq+nW}W3gs=0yx;* zg`pT@4hyrdbq;`ra|g{54s7Z?m$m#9O0qTF`^ zvI3z%Mx4EhgfOYBm9wGHE{J=mkCbh=3@Dak4Dmo=Wyd(r{t(*5`znE!zWOK7tn^|^ ze^Hxie(1YDM750zboS|IsWZ2%2a^`z z<0Zo6wUB3oLCff1<}yubG+6D|7LNUk<>T-C@#f-zQ?)Ly!MjYkuY{}l1q0?T-S@J; zvwMAMUc9hOdaE?vKL7glQ@`?)lg(%D>?|G9lPsKG`DPy*G!A5hJ>sIuGwN@%-rOz?jc~8R+U4usZ6D&J6I2ep0>bC0CZ8h{?yFr~cpO)231CFzsGWy2% z(9Co)Cj@w#i1@W+krPM6PFVdE&j2!nC|Vn;u^9|AF(xJ4uU=ti7*r-KDS(Z^8c{Zt z8WR!>pq;N@;Yvc=G16fa;{mc@a5lX^;nY^gj{T|NPMj*EuFwV3(B1&*&{4>u>9(Yu z(pC>3eNCu1_ULag6mod3M?X6tAG+#3WCY-fa)*XXVp=73YOF`bDl}kT9BSMXEH`uV zLu*dK2ZS!e-UM3@3{(XS!dC&RNm#IrdC{J;P*wv9RgX^Z%LXWP2_>tm9Ukc4 z47~ANw$}uxv-+F3o@lDHgz_hyDBx^uBDz#VTA{|`)zsbd3TiTwj>s+Fr7aiPzq&iMJD&OS)3_S`jj=0<}KQ+>WTOiIw}K+Q`_9g2}u~G7M-powo+8 za5mHtCv+G{xGHNlUU%Kqbn6>#r90mGHhSAT-$6Iud@T|6i29FH@7#SfT02Fp{`1rt zo~Jqs$=5kNt3|Wnh$e%v0C9XE#Gsoq<3^fERWhmyQ%->j32#MWFy4ar^Oo^c5<6I? zRSpjm07<|u)}Av^MV3ZOy~OtegAR!u7?|^L_6X+$Q#_IqA+%H*cr4jfqi<#@q)wT5 z2J}ch!hRJtngDZ_2{y4%wXE7#8a}Jfb~c=W8&-taH63`w-eR^L))CY-11D*WaT%TI z=HuE}S^y{QwVal~2bL{zVEP8XJ?Zdah+938i4<=jv{%cU^d}QYtp`~8ovbmJp&Z|* ztKf>wWwj?#wpX9Ss6%`o&-L%4${sNg7GMTp;=U<@BWI4Sw4Z}V_9_xX?OeC;c_23> zD-ZW7!69w4uvbuV>&dj{WalPUeCMKhiLhMdlKEcYRSW>P_)x9t$$Xx}99T%+5a!Qh z=3Ck$%Qgnsi2b-cfQt61=(n1TP+91_Hu_^K{b)VlnF>|7`hc=%6wXa!y?BD)mgC^It=JwEZ zJQh#Q7g`%iVkkjN!?J^ENEe^#PN>)4plfb=6+Qmqh`#Fwe}O)B_w)41lk?QBH_~RF zj8U*1d}B?AJ83I|x$O)zEbR6!m_WrzN(wQ;$snxhaJJ*rrXZ5eE{0PG0SxeJvqe)N{1zb0pVl-PyllU zV2=f0WGB-M4h<2uHm>b-^Kjn)&`N+MQ{7z&%$QaMUETXJ9Amv-jHeRxP1d5-Lqbt4 z$pV9LomNd)Zw$V*>O|c(Cthf%UYFcdt!*~+C#=Vl!hB%pDHBRVq_sSuXBVsrEw9WC zX)`tg`1@90IEaS7!O8Y}fWat?G-K7F&9ZJ;Vmap5aQdtu7HlGAV@=tR7OH}dE3P^i z0!8+C{~eAy7VN!gI(zmU4aZ{|k4DsC<|%8@wHlgj(nGoIWZyxoV0ELe8CVOJKn7h)eYk}F)+^mR->vGQy3-eBb>_MO zLp#Fv9JB?iC^?`QGld8^nz0NGzS4e#!6)-Q0mj~@Y5m8VJmZOIK+s??px$Tgqh?J=tLR%yc7SExyi#+ES5r@i}?1MIrhLWiSfidy;Ufe5^Py*mqBvbGVrpQcbOgaIfJfkZ1%90HxSNLvtLKgE?00PihIO7M_7d0CA#FF&A*3TyEd#GgBN@i?Zhs zPCuwf_b>;-+eGi1Qij>RwJG&o9R_+|9zQuE1@#Y*JcFosMua$rEumvB?t|xss$FVn z2h(CD+L^c}*VUUc0byvis{M)&JFHt_-&K7Z>`7SL!k@Ah$v&2WRdfa4r#yX1Ct3Nm zq+^&*uria_e@|dt+`jZzJh?*JC*899eC*_C%;K=v_XaG`Hh0m6!_ky3t@h}aoA%RB z{gppV?|$eF;KqHAw@Eq&tNbM$S0@n6xY=Qbr7gk~wy6H9=4Sm1pVFMOqR za_t7Z-9sFh*swAbrdKk4ojGRpN#d{hJU{y&d~46Nm_lIOe}_|IUkt3*(X5F-%FrVe5W)j0OnPhL_6r}NnLoq9T>ELD9PjF6jPC!x7%IkBoWXyTOhCE-BlPYh4v6V(B z04^}kGywt($LM(l@xzKkc(Xb@+L-Y@v}7ufOHKhCMyQXr8;><-%Nig8upqZ*HM}&f zKp|0O?6_>S*0N@!4Pt3syNPSX`5I-wq1Q!Ol-{3q4`Ffw;FIJJp(7|CF(3|oi)^o| zX@~X3fH_U?s>vU~@SDv{pHRzyvMIoqSaUY+)o|v_WKF7z79E$APn~)6^l3Kg(WKU* zQS&HG=Wn99!*8P2{%eS8hiQG|9R2z)e}W!+E{y*)E%N+wpgg7 z72tiAEw+QD9yc?<%lDc9X{yi3j<1ZzEXE23OeFyava$xdFz@%)Q;s*J9mi7`#u|pc zFULcAIPMMLKebiXXqCDO@LiW|$fMDe2E8Hmdp$Y)Ie1`&UiaFY=#zsF9eBu5dj&O%@(QyL*0(?B{254B9Ip^2)A9CTq;a843C zq=XS_W9D#Bd>@0sUc>yiM%DxpVTl#@Gfg*T(1C@A#1Xh({EbPQnPCoGr9-#;Qvf4l zpk=&9fwYvg%)qMr860Zr=L3kFLGmJna#rD)SbG9Kif~LTe?^ZIOhSAo%d0sX8FC^C z+<`7$o=+$Mf+;V!Z&k6z%u>`Op|sawwGwDs6zQ;aBXr0Cr(7`E$Jt@Ly7+`*MeNk8);!Gg3Rp zL#{N2^l!9#5x;34if31wA=k|xja|puFYguJ9oV~!m06DE%089sO&dn|GXZGuj?z8? zwS_{*RB+xBtbTmlgT=;rSvn zXa?5OitC$Xgq7F{Qet{dlcxhFf;&Jde8$7%+~SVp1^9sz@w_pjG~s|`WUihUMgx%vUGG7K_nQw8O4;;S1e==m zV+d%DEWR*ORktjhOEAd9z%+0gZ2&!^Y`MA1fm2U!3=Xrk6J-Hf0AOoU0sb2rXqtUB zB{#wIip;#K*MstF-)Vvaty^f+X_%nZVRUNpfdmW+Xk=MXA#x4& zNafUBjU;0Yri@uJo-hLda78xFm`4dwNIEte@(G|?jeVc402?feED~-Mx+eHuW?iAp zt)9>)32+iwgTY?Zu_}P2uUonnFi?dxQj%(L+bUA#2`IEpEzyKCHg^Jc4y;)M2xjR> znNWY9bgWBPf^qc%ST%4_n30iLma|5(4xJ*3+zu0(jRzV!#-j6chp2JzRn*;gE76{l zM6@Is*Y5tEd*~Pc-7nLpKl=ckIe(VUojFIF>znetcDGCO-L^irZtNEW5Wp4%yQ5&W zIf#|b{pWysCnGYgs!a*-O~;)aqshHfSeyWZ77i;1vI^=U z9V^^n*J5Kvv1d0`CYtD*1^G24rAWXRLS21K*a%PAUlk9GG423gvLONdian866MtUp zN3u&uk-$@19L zK^6ys?4UB;8{lNN8!<;b#5S{10rpv9GX*?@(Ig2z5N>YaktGaOOwITm_O#cx^h;pl zb3cZ=;ZTzOABS$i><-*0?5tv+s4%xx%PzN>?>OZu>#WB(v)tj~duHz{&{*PazWk>5 z^wZ7p8?aHG9Kv)%C3uehtV3(W0a|Gj~^(bgH7^e()*f95lPdA$1QM>>m# z7dX6VS{M}xSgI_}x(^t2xW7p&2Un=Ja*+Pk&-^a^$ltk(4(@5u;eFl8sRYhC%B*`C zi`R=ZXbB=Z7%a*#P4!bnkG2gX9hF1G|WI zc7$+K51&9H4LrPZ+LjqdR>I=%;^nZD!f~+jr$B)Kw-VzhgI}2?STY>qlvjQSB`md* zZfdE%m9@zAzVNsFCpo}5+%{FRVE-9-B?dOLFge_kh3OkLYI6ou)`e>~X<@EKa~z7= z;@31Ba0cxh{%1}KiU@!qz{?0Bw&Cq;Kp4Vdt_4#v8zBkDF=k+dH^JIeBf&(MF$7F^ z$NR@ac7t)~Or~T|DTv|$z&ild7&JSRawug#LU91hdAoaN-UKk2HW2WQJWh9n*ZP>T zIvKdH#mT3g!M@b;CrBlq@OnRl!K%7wDU=4o+M;JXtTxX{4|~^VX_zPaG{6D?Z@J%5 zH&3SlEh>cV+L|ff;W3)R*woq40ixht4i&cSuPI|RgCNduvt$&ii3rhc1&lTGuC=oO zXb}`I_cPX<&OKxCC3Yjm0&A&Yw#u_4o)+x^(9hbP|87R&4+j1;3%H8+)oDoe*^sC{ zq)Ba_CVOw9+4AeDxo{n|mJU$A-=vq$Y|*nXyhsn;cQ1YFuHT{i?t6fqJ$;t8`vVzc z^Ye4mYPG4=X*z(!fCHF0=mlS2e31c|mWF>`EYms_%T+Zbvvdv=^u{_HNLsNkCg-bs zX8ufaN8C}&bF*aU;qN%CLD|YMr0O&&D(B&w_T-cyJ(l~ZJy?3FA;N*%K|D-re)>vs zYqi!z0dwtgTSeGZ{=g2~;|lkPa%RbjO7X&zE&;skd|U6J&3)}i_sG0;-#LBjvh`Zn z*nBwAknawLL)zHt(V#z|JqumB>Bej6*4u8Scf9LPde^(&Lx&DuN7Ly#4K_bV_0@Z* zvGxen`WH03YTBgPtf3hiW+R%7CaP&_V4FxRa6$*sgPSC9PQf>JHhB*epl+=89Wtbv zc_!MZdI)Rp&XKob$4-B_B%mwf?^|03jc$p5FgX$STqtBPE)UrCG zr6qGJfWgSR$>5#?D9Cc204wyRW{3vv7h})E>A}(ivk3_yFdiyln-(2h+5-t_mt+qP zgdu4~%y}e|L1?8U;z`V}I6$lze}4XJA)pxm!vsm?+HntO1t!Lz?V}p8;#O#w%BdZ- z%?y}N_Mji4zL|>=j=2|%VY^y#j^&Q6%=iu z>qzYi8hL5OC_?a)rdnEyvF3W;B>lhayF`J*!6^1OFXI)L%kTwI{seYa_p7*VbW*~B zb15vMD27wH&7`%o*jLk?s|;mt4qXebSg@SYsQjkii|w1?Xhs(5}&N7UZ`aBJ@?{!DZE%TuR_Y#da&(uci&%JZJ{>0DF@bW8L?R_+yjNRaO@z!kkn^uG#db$-u zvxbSYbovrNL!$VPr_tC86;pX%WRC)LP7 ziqd&0H)hv+NZ*gJ9q6TnVHPJ);f%S_0YCx$XqoTglkc^)1bLdljb@N$%@KC_AKivPh{t0Jn`_r zEZmzg3$HI4%|nsJaphApV^j%i3pN4(kT~H*7;_nN4Z3_h!?V*SpbrKO##?k?#hGP& zJOf7LQ=$!~;ks@}flcLxlLwvbXzOecYwPCru+vn95IxizC!+Ev5(N~Xu7XVflC*9* z4p4WThNE8TeB9bgGllB7gX2^MOB9IIGHCtvBPLrd4iI1xYfG#Hi3OpcRkV`a4b7Ao zbaALqVa-q;`*==-mjiJ&EUs8vBuc_~t~new%7v_)nlM6HvH3p1P(nstpSR9>)6iAT zc&f=RJShm;7&BTx!C*bAHlFsMhI?yo={(go^RQWDf8~s@Ejt9@GO=i5o#opnG@UkR zGVRc`vqZDStEqMH4b)tIHBsv*O=k_-+Bip_yZ2uD*l&N5?z#JO^u%LN(z)}OXnljj zP-@g^cO>MMGrTrh40ZrGfD;}dnmd2#ZvcoTo5CDwPX^;INCJBjGcD~e0sdI%TuiLA zZ{?Ad9Eu%#TO3@4=bjwTOk~6SO4>VMrTAK?b3CohO4+oS5yX7)mSBSK;Q zo=Jnx*)o}-Qt1b0KNu4=KQH%_udW3vu*?$Z_i(^106M>y?}v$HY^*PM?D3so-(jtc z^{WK#I8>FhAxo>u{!pW>?LMuoZpiodEp_OPZ+JERfscGOedvQ9qHA9HI;yw3G@HCY zy~~eKZR;UwZa+ee?dL_>R2ZqVCUM*;hoDaQr)5i(%&NkOn;1Jzb>*g)CQ1wbcRRYg0_SZs-@#M*Ld!=;c{X2;3CtYDiw$B-JnuY!TG?+P$z_r@R* z<~l}@fPUzoVA)}gC% zM;fn%H4U)P>zWc_;Qf4n=GJ2Zh+xa6_L2IeP<%W$uhAunlt3I`!<3cpI0fe36WkL*cJkZzEkQ{5-vPvt|X2tUT$^KtDO!8?&h*uT-# z%A!1XVUync`or|MfAkO0Yp(9l`O~MVKH;Qo9k)AS@8CdP$CIt=u6JCccB@I#!8(ol z+h-SV0H{D$zxc*KH-Gd^|8_d=Go>y)dH4ECx|;iM`N9Bm<4X^`?C=%y#^VHxiK(GROtzG=tTySLU<2C=+H!fRt$l=0TXp|CK^H zGV9c@Y|w(ShnE3rYL99ELSrpWF=LtO2MjRO!4{xM1`a9~aP-&X+UtR0j9hk#AruV%2o%H?>eSogM?)B7a*J;{6MbnM@iMAi1$>pbrdKakK zZc?q*ln{Oz3?;dW=*3xR>QFS_bdO{<_=q**#>xoi&vCK`WrpkL7%&rHPLe+uP{&L$ z0nRK5gfabPFLeM-584E16ULh*W3Z$UVk0^T2f$8~hVeaBJ5Ddj_{uuQ<>^o8(g~PV zD?uIW2C#epB<8uKp^OnC>xqL3mRn}1sWeK=d9yjO4p>5om_5eiaR4R4NdrjJ%E;eH zGNA*l7`OaWrC5xG=L|WuixEy4qWvkn+p?AC@ru0^0~eq|Y2_qvgMUW@n(lMh^4juX z`$3^u8T|%WVoEx*DfN-BeMwfpr%`4iC1x7>ID=j3zIk41yZCJOI_ff*z(WkKqQ7i? zw#7r2Kj%nQc;o1kv|gl8)dXRgeTDw8{oPIToXDcApF^sW;6zKIpEX$}0x%#VrWbUfB|4gmfUKfGR-Rmp%YJTB>x%*%CcXqEYr;8V*CQXJLhqs^k zmG9qr`j`J~XV0~oeam(pUIbNpyUa2d+5svk!wcPL(xXOmN=L4`n(lvgK!4=h|2dsH zy-lw=xn#DKh9Eh+0fu$Qw3vyj~6Uwf;i5;T741CDSip z2RQoKx3Oo~-vHet(hd6Qwg#HW_%-&D>dZyL zf;^5esx;)(PTl{Llo1*$Py{|ey+FokP!50Z*)aPO{)^hGP4KanI$X^aocgFyn zp{ndNXgK=pk*}BYTKnEUVT?z=hm9!(LXqh;Kn_jdkN|xH54m2UDW~JS;lIbdwE5}* zBqsKrwhp7=`Wy|_)w0YiBu^9n*rScTmk%o>$%KUND#K4R%QD-J!&~|L4FT!ulG#;I z1${PaZ#5Tb+B`th)*)fjHTU04^~TjSnAYgh#b@Y~pZqjE@X*8b!t*cCJ)gXXo_gjq zjYe7)4mnv`nxnb-uCYfMz+i@+IlO3xVlRvS$etpUeQnU@L$%@sBEhXGFW|8hPDufQ6GE+kHQe{aAu>QCkPuY!UIfm_n6Y z#|NOm4hDre)%o?};3742v4>`$apziq*6@`j2r=gD1$e4`3+Fi;cbT^c*RQm%vr-wX zZm@2t%s?8BCbZe_)7HkOe15)DqvOX8(EH!>4*L49`=995Z@hz+SB_J&y-nlZX`=0i zsj=}Xs;!+OnhdC3Z>#q>;>@KJsxcF8#N(J~C`lWPEth~YWzFg94BCy5$U%}VaG$H5 zoC0tv?9ZXDp7GQU!Bh_}fo=%nG(e2+5B)ROjI->m&~AfP9M5VlA9?6217?wA!UnI* zuSt47bWUfYWrqINtgnSW9CYviP#Mb$i6LYSx5F_2RxZr~{W#N@!{AlW4q9sZ-HFY0 z(YAEfYzF24UKtz9L7$wE!uF6fZn4K`o8@^BfP;f$={qqFeWDZx4FF!$vJ9g@Y%Dap zvFEUMIOvHrEq8 z`;8W!ljvN&$bRR9{??Cu1AXI%Z=wE6Pf~AnojUCWs`JsHHM&OXxJ74&nI;-yRpY-| zl4H2~Y;W$^9sjs}__iN!EF5~S*68FxvwM97Ud>%#Zuk0vU9|?y##^<~>f^88e)0GI z=HT3eceYlpY6-}aPVL#5lW+hJWx*nvvm$W@upZ6LwP^XsHT0i<`vv+F-~F#?GON?c zBl8y85pjiC$UERED^@b#aS~IUw7F-jpMg<|EGse;6=k7zjJSexGV6Du)9hqb0zKW`o3`YBx0W zjsXN__&~2qLIXvYOPyJqqK07|r@;!y>XD$cWy~RfbE@6014=V=Vw{^08W@hQ-DW_a zjX~T-u^0tWG!#v#n4C2bwTetXzp52F4zyXFiRU za*8N+=&fkmnmW9Nth&-nGHTTyNT;_sbkNF%d4UjfR1{qRMjq~sxq(nyga|>BUs;h3 ziTb$pt<~9P*+CESWxa0z0RadFt4IJWTNC&*m>=2E;c^I=B}^X!ckQt#JHlESG^@`d z##MN1t~nQAgw6vC%P~M%`V;y;{yD5a%7{~qJUdken4RBgO0Nbe)#px7W93?EE*+;)`v~=itY>K#FgUpR;3pig*h2yC ztDaH32exT;l>I;`0b@Q-j714Bq#7cO1rqLy-ygtdVt2wB_dVM;sHjKw4KrA$+GFW( zA)#&F_Gu3jzyWH|MVbsw(|Gl9np}E_YJ=0%q(0TB4XQJmHJwlmEVrR0 zCqm)|31PLvFNBUFv4e%DGE+{#H#sD;5LIEpsTQ4vwT4EVGTZ>RS=LsZI2yAIAmD`I zHUqaXC6sw*%su(r^jjUcOWJP6X2bisw@DDHC3lGa5J1eM0W@qEA&NR~j8*PQAE0v= ztT%vty!I+MsAbT3ZS{6g4%%?35T;#+tg>L+!G?p$i$h7w5f}z;C%8SALKls}$d|S^ zfT;v@IRFtXHW;A}U{pgx0rS|ti8+R)O8cqQU<3e|K_?uFDbQG0ylEARa>d?XX%~a( zl&y@mOyT?fOk+Lb6$2~POh_zaybWXs_L%!0F|ncZi9?924H}>-I?UDqYpBe$^?Ro* zxUtry15bawOu~`vkpO+872}?jT*HJyDk>DdQWq8*Lh_Kfl)8bIoVF2jB2r zwS}whYt9{*)|%a2VD2mYYJS0hxr_I`?C=fe|^>1V3lI=*=cHoeZeE)TPdWy#b@cy|Mid2o`nV-JJ9to zJ$L%cbv|v00nBBCBww;b$MI7EbogeR?ge+a1QLqFvg9OHGeIV6%%24}H>urZXC>7s zOeJ@XlDU&{$2b}DVinAbIPJ-P9gL}h!H2d@%oxe&Y2cfj^P2;&hSrP^>xun~@d#qk z8X}4;Y;62C8XRI;r&gVHpBPAM$j|vsgBH7WTAFXto`n|eUvAUiNBhhZ`XpCtvo=8}mWRH`&*lFE_Gte<3Z>otM%qba;r!*K$ zsW+O?c7ICSgE4LQC$!ZYQE$liVnDG*!|{v;!wC(B>cBt~j6nmwKLd19rdCt3xOQ6& z(Y9ldK|n_aFwJ?5FaS6 ztR+sBCzX#W`MibBI1{l5nX5SW0HQ3cGi#{ndvPMH4!l|E@@qKEQ8%n3ng~NR+ANgW z!|Sr{R%#Oa4F3`dRKmf|APN61tS;(QlE#HGy*wgDm(I}r_dY;(ee#oZ*YDm#FFt>chJ6MS7;0Z>a0a{jRIQ_%D& z=W;b9^$JDYab4-H+K%4>ATM8!`4CZ{UXcVK!bZ4qK}yD4`kc2XMB;ycTh{FcD`K&I z|KDE8VJ=OFV!a8rqS`+)rgId-=Y&IkI-vwzKOo}>;5pk z^Icy}d-m+3xw#(ICNI%+;}N3O`>8f~f@Z@lnvH5yv&EpsTByQe<4{u##g_eT#L{xQ z7b-Ijhf&OW<9*LG<8Uy>uOT6W0C@V@abmnlat33>G3f8f8=U2(he00FD50nw6{Z|OKs|uNI6xR}Vo=%5 z@YyufVvlwkN%i%jTwstz_$3&77&2hRIvAxei&sEC1G_ElOj?$ZtMDWf84v>akU5jP6nu>W`XU&DZE*+lGMg|+Ipxr8amb!1u@Ht zIhf}_Oxo=20RU0+{PYMFDr<8TbN@;|0s>U20E@6cSFgGv{#S zLlb?~+dV~n___SP=Y>PzRSL0xLq zTh1U=JJ|=V9kl3eYHR&81g-qBeikxV3ngYR$P_VD2mY zYVQAnC4YGIWq)V)`f|JYL}N^|@izagk2lYL`0@ik`wtt<&XGoI!3{dT@`+y7B#4ce z&$8H1o6vODr=@+%G+I1LKlo$6O8@ZZ9-w3U+qAOKG20?7*0$mK-+mgCorJ6j0&04k z;>QNJa~sL`@ON^SIn=~AB{=%osK^^nVh#FUitwNWtL5F@A-sIIX=s4?UBVD596T@- zYZgve-rD;|Mej2($iPHHoQlYJrUJ&p@q~s$W;u>EgPR>)YZxfA$}}8pu2Z9fD{VS< zaE=b{Y0y%)P7B=zEibfbVX;jMa~*28o78R9sMD&6L(G5{18-Aer(!Ib;J}QWvM{v( zeH^lbzJ%@=hCqbAYWN+qY>WX1G5iKmlgaAr=vxRZ*OMDnvPsrwG#hdKMl_y`MPG-V z^4@q#>supQT^rHH_LzG8DfRnf+Uzr+H=*spgnEN1%llA&$V?kG!i4QJW9>X`8_opV zWIYOm$x0RgEx&{k!Xa^Hn9n%*Z)8}7zD!~OvbAggSd4Yk^>WrDLKHJ=i(j|VRIwuv zq6w0dj963B1*?XijWEXur&i{H8#4g*U_U3#Ic2%oTA>I~4#G%AH-Ar)duV@JmJSPT zQm{`83MVFvYv`4LS*V7Z1BV$bGnQU5L6re%f5m43+C{iA=Ag8R^?hEa;P@z56|>u! zcBr|Btj2POvg&7;(aB@nG!pS0X>2P8k2`>D!u~|KWMl;fD5i5K!Z$s1R+yDBUILhl zHk8k6whsqwx<6`%M6G4PH+)yDUG053+flYRD`m#Y~uVyuQV{ z$FU_m|CpK7p-Fw7W^;R~Hg|%WE7wzd={V8cN$QWUNQ96#m?7?IS$1YJBqsI#;IrXORjG8kouFv^6sh{DGHFZ0L172d;Y z%mOu*mV9<0E-8p5h3DC@c zOV}&_uJdRzsp|oj09TQ`L58w~t|sj^iyRQpOF~}x858?V0>wDHsAXzUz{YguWJ0mN zoax#*P^Jf9S#u76n@B(K0R<8>B%4N9eHb$KO+BE~c?)0;HG=R} z{D3Vbin0|bY0Slaouy>Ymc$vhKJd88A@FMR*bGa|IDma%nu9s!)}e*;<~hbQ3>tI@ z%lA^{P|^Zh(NUelfqkSGz*%CwRn~?bw!SXawl^Wk1m=A88@+d=>4y`>Bdg+1b-*p-K5zeK+mqad%ZWsB|wGn&+DazfASy8dt`8aw^Lga!j;q%o+~AC4vDRRpCO81oZ! z4TJU5W%(IkRb)Q3kT(Myz$Vgcks9(U3^s(}3j2eOZ}Ed~w+fKY}Ii+O{AWL1~n3(;mf&JW$O7=+F>wlW|*+)&hd3Q3oKGs{9_c&QIQkg?G+^~5-~zgTqOWG!h`O%CJw2BN zZfmb=-v?7pej>>T067bL)xHm~51My;7g>J*{uo;*+L+Tu(5yL6_0~RWu3Sfr#gkN9IZo6)NWH-VU0&_eb5B1+4?Xlbdg!rd z>8_9e9zFQE2dLSpQ*V1L2NkVWOTt|_+=UM!+`$w!3&vME^ohkhLdH@!Wrnx30x2}o zoBaxhP5==qp`pQ`$=?pgB_|FFhY0&)+}pwaE3n`I;6=iR*fRlGgHhr|_x&oyXbOZ2 z&D7cF2}8}HR*5l__}_kcxLJ{9)t(_fVHt+(?H4apcKV`F>A5*s5|ZoKn6KAm-|YAL zw6W2X@xg6>^4i1nws+h{ciwp?z2z;p(>2##M~id3NIg%J^`~fb=|P(Ho}$@kK#kE@ zw2mZfo%fjWm}=vZXuUBboVR1?Z(+8PFu>&>GsY2yDj=EZy(RX#?86des#M9|G~RfM0$Pp^X#&swSQO!+1fmP{oE+HbUHGE1Q6W#vVte)vQ5>P+1-J z2A*LYdFZXpCOG5Rqbv$S!gSME&*PLC^Z*y+-Uj+bsHKJSf`w(HA}65;VA$AM2(>Ma zhOj4L{wNHfVU{tf0XX3+VB+zEB*Zp@SzzYj=?u&z5Zn-a2ND4Y#XTbN1VS8HN+N)& zO4w|1z@FCzOMsC;@_-n9`V@0W0ndQReYZ!bu{TLN4q))t*P?)YGJ6mVJG7aX)^*~t zWggHG^!~(_@-{-7SzFk;9pfO|75Pf*h#&r2-(d~+HMCsUs{TuLjdr$JMJqG!HN_g6 z6ZQE0^!w58$#+OYC-$D~O&H_PdMy~*vEbtFJ`$?WKc{e(j^Z=YIE3&h0(CI2sOxvK@{_Ec$UW2qQ|vS$Q$kli&#*zUBlyd1gd^ z{LlTL^uUwrbn?i8gg?q+&sJky*<8hDlGrR&)7?+ka>)hEvArbSN}Zwjz5@d0k&9^% zNQ1S4ZPvbfm|$)OFe+h8VBvVWara!1;`uIkV9}8{Equ}3#>pGfSAKpngWD`GbJEh0_vPuD0Q&p2uYs>8B_iI-`cLo^ys>7 z{6{0^Lo|YXMleC^sC)p7eky=Agu$B7zhsRR-8XZ@jTINC>2{a^Z9)KjE`}Ida{>@r z`zd?XLXb_@PR6kSgF5yZ@N^(u#+L%t3M2+wQUO?izGbM1jJ-N*=NVee#ge^+=VhIy zwGPb|_ED{SglY>Xsj+mDYRd;{TA!nfn|(U<$P;wmXYQl(>jS#$w?0XCf9xI_ad_Tz zMuRa?x5IO?MRVN_)tjM5siAQ^kFC)v&XUh3`#V6X#JWokTEGC9aIxlNJ_Na|oXhBJ zWtirdGW)J7T5jL>iI(;*u%@u1^Mz!)gqd;T zOs>|}NRHrA4SeutVd1jhs(mPB1fXXi8`ySiL+bu!j=R{1rb8wjqWd_W5q+FNG_d_p z7ck(AaRxBYmRx{}`a=&cW*jOn?`pn!XSP=~xH8L4#)C){1S+lVnPL+isLb|o$y|eO zsy@pyzQ$zH{mth`9?QwL&95caA3(6GzM6~yw~ZtGG|xww3jhM~sxbD{evbXz`T@zZ zFi&}`8`BAMEZg+HmJ~LECHnC8%gizz5ZXMNL@EPB#TtXg@!j2Y*W{&$<-r4DSB(}( zE4pb|=57GH&gySWeE>ziM#4w1%9g8*mcp%j?)aQs%q{r^{Eo)rv8Qxx$b0YZ^_6}#cY(Rx>wnCp`aYBXMH+9NeZ|HTzxwyb8_&PB zv%G(vLpaos4PXvo21=pErf(n$45aap8uc-qc+Ji9TlYLqf8x7-p3Yqw(22u~)NR&j zG9AZ>seB=TD*Gj|$*|Dwq>ERQUnV>+SUPY(r509H*M&-_q{ztTZoa)AEQQbj(|fCc zIWkA(a%ebRlv~P>)Uh+)pmZvX`H~!Ny^V&U@+m%tp$^5!SA7{S6-y~GGi+(TM$4TV z9p2lb6Gs>5$bkh~m~YY||LZoW%Nt%@0aV_&m|52wj3u;lZDT~6+Y{8?37Q9W7QGj`Uq&(V5VJzx}6#=%+-Za$PRpWu0>08 zE!D!a^zFQ{GqA@eb{pG6T3;X1`sR=}wuZFPAJN*@kk)%MTHE5bREI^fRdU#Ho5Oxp zXHSz)nCG2*dpCeQ8*do5p4AhEch$^vJuqt)VX*;3z~>Z1QIH2(QU(Z0asdN4kr==o zf3BwPeoLCoNYzJUup~o;%g;irAd@%ZuIoH-G4?CCpMV4F#2aELm~N2$4Vh-mK#qV{px9POu5k3U9t|K`W&*_Y1Jv!`F8M;?5Ho`2~j zx_EBW*Vt~SMeSxw!t-10W`M&2LWHJd9Hghftfc7#a4BXDm*3VVus{&jlvwEDblZG( zc6OP(s0^9ac@cnAV!J>L9pF_yD1yhH4v7@_2eZ^&<_KxUv~b$EX=?jHO5Vo;fD2Hr zY%eKaW}0BX&xvz9JgT&F!>QYupdthzA{!rN=8Vfj=$PeSnWeV9-KW7|D9kio77riV zLwCIOjr5-PzJp$O>#cO{btmcQkvXEtMH*dxj0P7UrrOpE)SPZ`ZdL)W8`Kn_o!8nK zulaIVW+0m|;&?C8kkg4BsA)n6eGRNRNw6S{^U#A+9XLw{0Z_>qb&=pf*lLz=K{R5m zuN}}Tw1W-6a!}1eALU-g{7Rr5B1DDxWsE!wd#>iETxMHRpe3|so!{)oQie|a7K$oIUDMwiae+PTZrYAjH*(e^NFL^i-5a0a*^ zLTN&ZRtPGD}leU8Q(r)ji$ z>V2!veCn@vyRFyN+lwMXZ1#@}#^Tf*1{5q_7$|IXjK?GD&Nt}zYhOeE^k3ae-|@r0 zB04C?56laTNI()8GF4zMZ6XMD3}6lpYUOMy{{e?TpTcL)0YE`!IV2|`Ap&+XgxAb* zcEd0XkvtOtWa=hiV1>7n0fS~}E3-wN3m5}91!tkt5o^IoNGdy_6Z!63wB8Ao3Slr9ivi#OgB+daOqg{G^DSDOXPrIP*lP&uaIw>* zHiyhM)Tm_!rAA)g)PiA)d@;&?FFOL!ER2zG*;} zC36Ts(8H3kwlQd*!fh4Y1bA;uMyaPIR`E;|s4oCWgsTIT3kF`)fH$TQ%~(%zHnQ;H z4mFmKQDe__RA0K5XyqtT_W-SJH0b>LHl2R@33~Y9Q}laxKSYn7dWxQX>N#3pTc>`H z1M-NPtp;`5ZECk$67s@-W6cNqM7J#{#wW4$v?{USUSOP{+CPhYrx2-*^js@I&vQH@*1|y5YtX zRIiPQ2G7#;(tR|#^bk#l7lpmanUNVpM&g$`?;)JfL3H725@I=GJy!w9Ch|-H)0j0U zz#0W$C&^D#=S}u{)_G&_i|=Q9oPcmh`~X}^06u+9?KFOthT>w6mOW1BYuYagWU2FQ z8>D4gH`cp^$nw2`(x!~A22$lruMU_Q!wk$e$>eSTp(Z~FTMYV+niNy z0~`=qo0($zJO%v>Xe`20^;s-i0YF6CBUo?1$vi=Ul>_5ap6R7QljMX5`mRdwnRGz{ z=A7}DqD=tI=|N%6J{&-*hN<#%wDV=01MTt<-LRB>O|-e7=K%qJ1Q4b+m9AOb+qS1! z?UmV=f-I%nwxQUesl4omtO#q3HgdKe+DpQv(;|lhQrOQ4bgJb(wSLFK7{FZ2>j36r zoz-OsAfMeAm{K5w zd%Gv5KFTd~6`k!xFFYl0d+6Kp+|Zpk`V!6QfFUF~viyh7o_JIMzbZ{r9L{(-%evz1 z#bS#H2m<_(g85oaoK`nR9-U3)0hUm zjq}Sl{-M9n=&bx~b8dwi?PWbw*#+iyum2GmbK|v#U-ox)uP^6IkMO2^g3w>3>GnAq z4g24+_Q)^%mCoYw!Fr>m2Bol#z(k=6RUOoKYCnD8YH~_@Ha7h9$jahB^HXf2L^!LntPGg2uap~Y61A>Uw4ExgpO@`F3B$^( zX*1JPOzdwNZot+WTMsln;26hIQyk}M2%3g+>C-i2MKX4p@X>#3b519CR2q%2bGW54~qTVGJEA zn47}VkuXJ(xGx;m=wxJd%g%E!!P2g+j+C*ekV0J(Mgq;V-sNN#628lh6$GzMIDR%2 zP=UuZXQ$<`Ck`9l%gHf1oGgROtcg+BS!1xYH<-|wi+y_WVxKN=uznr06sOX65{_&R z2OAI!h_+iAX2*b?fCdKGsn$r0L3cv4G3Q67stxG>OTZltOC4x307hU=SldILG-Y?83@EpS2Z#Tn?O|DJgQ=80V0E`!`?y1*2WNmffX8(S z<5K=H=x2;w?SBgm#q7xm9z2X3V0OwZt5g>ST^&e8TbMEKF|;#<Dp`d645ytpLvk_mma0s@C>y^Yt)>LSUi+hVp-EUnFE8ulF-NwbFfbcgH4#{3Y=+} zs4~b9?x|p$%0Ynr#=nnk&rtA9_g>f*u04kgtCrwFG~Q&-(?dT1Yr1|$qywC8?ArjG zk?rj6^Z91``!9U09Y{h9Kf-*vV%AIhJQJvWkhNN z8?)(T3%G55gs(rqEAI=%4dDQY%218c|TwAm&w2rE7T>^iXp>ugI; zXw+X@>l}akPw%wiFs#6s9uY;8$_%t!$}huh^tLz)Z#3sZKCCFL-gQY zdF=`v*~dv3YBb-f(Y~b)EzUP+IG##!f=laTy0AK;OREFg+MWn2k?m!6{26THWC$EK zDPfD^+!|13^@Mb=hRedp(4O!!Q{Rkrqt=&@kUk8B>^cQI!Zu?7MKFrZ35UZ5qr$(I z!zXbM0c;|a)mb!f6mbHVjDG=1%qS~aAh3NDq!q^vNi{q?&oX5q3{jG$*omfjHtZa* zw$G4tgxCogtC7Ji$6(#kVuO|!TeR41(Y~c7EzLC~WR?L&762cQYr@=E+aA${)uHIv zU055^=5R`bf$FXBqgpLX@6HJ(1XNWGGK4?Mm=>T{jbQ%-n zru8u69*G|^-e=FmlXY!~({Qf`lxWOh@lXg16dMx|*4A;L<*z6085|bqoX=|mm}csj zA}pQz3XDE5)D-WtNgxk3k!FlTWQ7(3mVr5Qc8p0E;>N}ll<{D*+dwqe*^{zQJkf=g zK`m)GWIn$NMuml#+t`Z?ucm>Ctgs3Bb&y@=mSuP~2B0wLtTV&mv9NCsmo<>i=A^cP zC5^CqY9?7cSnt7N(35GOrlTH>2P2wH>(p9YqT13C>K=bB)%M*?#33v+lq}WHpWUR# zpLmY$zwa@6^s(pYxo2OZ=bn0j&R@Jh>z6m>{_G5J**J`SexXZs)(EsjDDI?TZNYdn z#t$+z7yD;%tOG}Jx&w^MTBAO#Qo^FDEvOnpp|e!TKBRTpB^Q$W4U`Q!m_>QvgnFWj z4j0T+620<>8;Dl(rk7{_|75!z{NI0LaXX##7@S$L`dZV^V!(jN+# z@!GC?AAe?OnOoJlv@EVj5|Du}vy%i=lV5_plR-B`K_GNi{^l|`7-MAvL&!DejB#h} z@0nRSF@;D<7{kxPM>9AGi_XCyDXMDYaa}Y~n66>Y21C*Tj0<7waaoM_W2hV7Uo`g= zJ$EM_U`wG>XDtSeIR&ejy{8A)z!9*v;spgg11eFwF6JN(esE~WpAdE<=1q#`@Mk0t z4f93qCbMw>tRuNn3X=u4kZs#&=LGJhaRQW8p{c=!Z% zu#9%k->+zGUisuAz;3|J((ZBg>52BF$6Ts5t)D*p5}25xM9`(xNS&xp8gp3pU1}kZ z*NC7{U=DUtI$z1GI_t+`FR}gG-_QG)XG6}iHu^EvYu?x#(5qg#kN(yVe+|9w_N(aB z=N_QinC*vl(nE!fU;o>e3w|o75S8LyE z=?eqQUHaV1{?6|8m3P&r(}fH7|Fge0y8Og9wB}akrqqyd45!Z*n=A}-`O7y(aS`hi z8um8m>et^yFI}F}xBrD-qW|)VXK7`nOM8}D;x=m-q=JLET(d{+n=@S*lS5Zy3rBUH z)lSy7eaC%Kca~xQ<76s377#xTZ~}%#b)R*E73Py~W)bq{My~0|FbK!tscgJ+Hqpg) zjrK3M=+JVPjvt+)gZr9vaJfSV78Sm}x?(G0euLIsj^dY@UM{YB6X94 zp4gx%>63_-lsqOGKVaK2s8D5&q_9hqdNZMW7|qEJ!jQ_tAa|aJ5by_;fd`M;nLg>8 zdU_rAQ}97#>=k6Jha>0?nP>tA(~h6V7{uaYi}o%xY0q+#R_2-c*p%>OzBlX9t#6Iw zA2T1fhGSaW9MffHL2mMxQRk-7(pHx+So;S6B-#`W5eTyMyq#n!C=^bwhLUP%DOisX z#%mkSMiFxSYzt0m{P>rFdjgKxt7Fm81 z`fJfrs(0o66Wyo=y2hWn##YI!3nSebh@OZeLOcBZw5Iaw+Gcj&RA*%G<&Wy)BNQ0l z5gj;A&|snZ0{EI99}=2K=2lB2A$7NKRec^lV+no?afNOjE?uJl6oLZ{pwr5(F|`6P z)R{9p>(Puw`s)*#G#070=W1%sAD||OyY4+nw0N9|mg({)(ep1{rY9diMUOuE5Z!z4 z!}P-G7wMTNUlO*})>cnIc)n|^rHN!X%bPMy!O9GvAdz^}xGz_zf<31%*qF{T=)L<|4{RqIWf%l3YN zU|@B*h8%3UBs(Gcbn+t4-^{23CT92J=N6yW`$NKle+Ns@y2=43X#)mREV|bBZIi&@ zHPQZQq-6%^IM9|4pCc&+e+#ygLlqg=N&iq- zi3qWonDx>8Alp$ZjQbQ~nrzEJ+5o13VHS35$-IlbRX?q3GgyV0fgV)|kPzR2QSX3J z0=Y0P6UJDu=zON9e#i&dNcy2qj{VqetrP|c0Hy*Z73&b{;@D5IPL-gfM*zTSF(1N# zUq4_|TPLqUdjGWkqVgGB^|6}%2sF*Xxu~n{wYX=+w}`gMK3A@p)gyIiX4+w%7tRa5 z3sM5W=;Ry48eLiRE5ICni6gpHjtbD}rW||$P*;)hoj3vARFXYheQc3__`+$;qR-r7awXZ9NM|R?OwZA zx^{uN-Rq0$n)Oy`I$po&(t|(u(==FpXT7uB){{{U6I0_3pjkMJ>U<|13-F^Q{bYM@1mKU049A@w*K$19-!^x!n4JTOt1XPr+46>yY zGMpgBW^0*eEk#=}<6>jY4r-iWs!=KL$Vqr;b|C~)jZ+0%IB5eL(oCi1ET}6B48FDK z*r5(xb7+oE9Gs^;3mt0DHE1v%3j6K+r6Ij|wkJ%g?ZK2r)0t!vWPx(dw%X<})H?su zO_rS?%_hhvmx+M@m(@bw^sp0pJ7KgJ0GC4`VeojnV2l881F+{Cang1GWj|%30)QuO zEtpH5{2-Wd9+n_q*G_Y=)Qgxk>&i<3zNkQGjM%%zjtWLq^c_G|Fg9R}pnNbs@|e@G zI|kn@v``XZsAiXp1!gqNIC%%N;WU8<-;u-P=I3g(cd12(_O(PikV9dme_M6x^@enD zeJIRG252?0#FW-ICNyAYZ~_f4PA0)wUmMh9K#2){W>~6^t>qAKLla$^7F=R%85p8~ zkhYeDgE;^LV-?n~i2*wJ9YWP9s62sT>9pTNYN1qO%qojb37|2MS?5FfI5fo^gz7o~ zXP};C28N9ZP*?jTGZr#qw&Gj>i1JX;2Gyn(R&B{hB>dRMGX$5xU4zjYYYviqL`WwX zd(ITJ%b9`JW=i@{hmXe@K&!k0>NvDU@;(hfN9LS`+Os1pT6Zz<6=d@=#hBOUg5?Ls zB{Uv`@u1b$dds-6xf5(%(`__hF7)Xv@k9#4<#2m|hPq~@*{$e|eoqbwG>fv#JuojN zwXL>Sy_q!bYJ95E7pBp4IH75?Nt5~_)%G5z_JJFyz5Gg|Jy#L6=h$kZ7hXJ1Pd$B_ zPCa~z*0wh3{`;PwyYG60&YWAL!Ei+V!2snz8ox;TpP%1qamZ_f>a0)a`gqZvu{v6} zrnR-opi^c+Fqd%wye@6PybhMD;m*KTyq;K@SbME7C}%k%Dl6@kOwhb{`YrNdSelTi zUjpIMHeZY-us|Ga^sLp!qPEX-w(Nd?K>dDCR*aRs%XHnf$LY4)-azku-+SrZcfOPM z?qLA7M>IK2TQ7ZzW~=v5qxUQ|W<#piy40w3G+dRbZetFM<}9gGnsR8WC2WWU4SMLM z5(moU^K7XM*jXl3BxMkp3M5C6a8|9fu68GH%5wRPLTIB2&z>rO&&b+9UHE*N^s zIOjZzHWUEtrKBL33!Yil#s%y^-I{Iu$TZhMrE(C7IbUeIl>k~CG#fDHpqYVDNRZ&= zvNCuihRu|e#Zt#`gp(swSV1{FTl+OYH`|{vt*pYvwcf$f!`v)%A9sNNxvju3vcAgq zv&I4diS|MLu*PS=CENaPr+cHPwZg-GVe^F@02U?sQNNbfDIVLvTYv!C*uZBii<$Qw z4yJ;A273*M&E;Z~{~MZ>0Flz;eeB>MBZc56SqqtOsf^yX39yPbEEhcVc+@M6kCgZ; zGm_(qcF*TIXx|vZ@g_(X8IW^dCy^PzR)l?w=lFec+)SYz7i>emviv}~*JPDaT z?P=5Z{h4>rcm1jN(o0V~N$cm&QMbDg2QqL(0Q{Mq<943moV@-E^M15Bn~cYwTD0kJRYmfid_ct5#=Gy#nO^rS^ zL}Twsi?r?L5^e=HLxVH1ZgaX;I`O90)5kvfEPclh{R%z!#05HfuuBVF(`&)A(S&3bi%0nbkbI~b&6kcNRj4I#|^9-*K7w=$Tly`d9W zOTb*jKxWI$jMI``2WCQu8pG+q*tHNuq(L=ZHf6%GlcR2rfGEOPi_>l}(+YFW`Uq=+ zO-mbN0M*sS$-sO8IY6M_3~Y=~&v=%fp@Z4m3czw^tYsq`;I$=7b+)35?|YhPV`8Q; zEq^B_gN`FS$8P3R7ATzlF6=fHZL|4VGE!X~&Ju7002k|=0-3>V)v7Acq~Woq2WQ%H zzGj;aox7S=FKF2bU@GCK3Y5wFNbG>QDDR^UlX!v+*{KCnK7+7N|D2pXzf5Y5wR*YArFN?f_AHfru9A;+YreuDc$l z#~**5E?m4!Pd@bmy>R+0z4*dKy0qS>t?iLw*6bKCo3734w`P|WkXO)98wc(u>Uhmq zt%I>x{oIiZxOP0ATiv<%1E8hC`Z+hSZ(w(p6U-r8m6cwRHO(x6^HJc{9D? zwKr3Xf!4|MG`#d#n)M%|*~S^FZJwvvWI)tl5VlKo&S1?+uNaVHHXH+RmVk+~l}koa z302j@Hn6)y8%_S^@;02Qu9|YZ-ZMK+@55`qhPE2`2%eD&!LkEE5J^ zXsK!DR(*!VHbD2#LoNdV)y$v(oIHJ_F~k6|!A5PX`GT!_2`EJR>JKfM#KUaQ=L|V5?QZBL~gw)(TQ+9dk&d zz8*k!gqET%0bT`D$u#^7IMn%5f+!)=8_YKBrP-YI!~hf4q(U<27$%b4YV@b^6x-<&E@%-|-zmBxAFXEzrWRK9;$VgXvn9?tWRXC?2c1=-(W;W zST(zv4H^!%sMV>_(OX|n|L))1OW*z1euK_j*rHGpRM|Q(B&H(vdxF2jh+% z=+eq^M^39Zwt95_Vvo*U8q)a<{obtBq;{iDon})Vxt4DFA{Z?|oC>;ncu>;Bf}<18 z8U%fFrn(TP*UfBa)0qCeIJT|}1AqY`%=n-giHf@fJ1#rV+Ij}6SXr>YDhPqBV*pR$ zv{Ie&QUtni;au-5>JfdYAcf`iD*91EJ2F5Mc!rDeBAJ1VKPxu?6WHkRafL19EUc8c z0HBPASm9JZ3>APJ1`*2VBs7Y%?G48Q*m2?sX8yG6M2GivY41vt_Ab?FVZK50?Uod1 zqc@_9>jS#9I+Uam>pf=iOeFIzw-Y~}1?-t!*=U9)nQDcFW?#;>sqLu-p6ZWf2O&F2 zVUjxA$;KFP4{0|KU$N}6bq4G)-tasHS&(2r+u8KhQXis2U|>2}??$R6RIsopc~3wg zb25>=6@6;;%Gqq;^*cD5LRRq*8zuTt>uX_2`iZkkle=z?u*fiEofYU4RPKlDw5i4c zHd?5r)hByjNG)ot9HZLGacb_lisn`h5gj~6L~SDK(Av4Pbn3~M=#d8> zrq6xuF?#5cGxXB=O}cntoz~X3X*gnrEHel>0Z*NpZB1IC^G(-UVNyvk@j9;u#=K4F zmR1G4a{XUqVAOl~xVHB)bHgz7aMDdLO1q?*@f?|+ZO_P9T4I4%u{SOoeAz{t>B%wfm>0bhTpF*9O=#+#2*@6xBJ*?WXq{b#8*TBF*84-7aws;l>BAczk~4ESOoZY()bZGlJNTYoypd&P&_@2sme zKtg3@&WE27HfXweNTgze!a*#|UjMz4`L(dCvv%1P%3!13l>~FHwsVyGd4yt$fvL9CJKE)FaQ&bUunx!_QFQJ5@RmgA{AD0Vr-ceYvZ%r z=VHYy?L{r0L7y2wyi!K({F$OYrH_&CBcH*cN^0}?X72y0vA$DVw5&ooh66}OVa%RS z_Fnm%!jUT0{j$wdR8ofcirWN%A_IS#L`}c9u|1Uc{^-}gihlh2znYfn6FU9qDQa~V zs9A5Srlm(~RN6zpztH;S`!pI&YE1hy>aVZQ9eMjt?|;Le{L9nfhG|A>^0wV;_xk;= z)`2fj@`v%oU0`na`meZTfivf!yG-Xl{g3{}_H%cAYin_3o;r&(8IK)!sEXevl>%d_ zs6ow^_;|EMo%wk>@`@Yi@BFj7=%YXNaq10bbo}7FfCj9+lCxxmkz*OCJlrR+0h3sA~Ob#c-jW6Ab5q4Cb`00PK`5^3MG@3~$6YJ5;w`;V}Y0$ov79HE)rjth& z=LhB`z$NWA*rel*WoZLK4q8FY`!<2T3f(`82}6(u&Zln zFC3(EJvi5Yf+1i|nkQBW5son4%m}yp0kq1Vmxhmq6;e>?qj5Z`1om(Aj{_DilAp?t z2qZTU;zToi>6A?kAb>gC`W`}DbJ7kig|d;%a6nt8I^dZggh4Ra?i}E4!h`hIQ6^|+ z;REV$Og&^&0S06_%i_2;j@^*7dRsjprmy1iH5zb&iOGxxea+s=pIKS#(B9=X?cu}{ z3(BmlPbRdz%>dm<5=pH0#=@rK#2}n(LYP7vsKo$5gMT9PrIrED<%&j#Yne1b8I8fH z40tY*L&%u5HirX`EPUF=))w|G0Z(j90F=d?!yE=YWdAS6QZZgEn`+X^(tc1US3e6> zJIrT99HKKFJ3!sj!r@~)V}`gKoS+&1lN3M`6;LrlD0= z>WjLW?j2`}_BC0;Uo|O20DU?xb&kcHcXnA?H$1~E+QNW0BrVW!Yaz9kc{n=_!Zfr& zz=<6MkP>iiM6+R^rh^_ycAi>?S_ckNZRrFx_g+JD%ZG_LJhI-W$=U@v{bG-vJKLwH zpL&i?J@N=W_ssM3(o3tfc6p0dSGQ=y&cTE;IbL=mP918s2K8u0*?U?J zB)h=onK?elc5J(Q0ukfz$H!WcX|)6;^=o$6XqNznX`Poo0I-S#Mg@o#+HT&4fpOR~ zupb5R=NXbcgg43^y1RJ-r9t69jl20E523~%r1cdUvDgaVLf z{erI-d(6%@3?_4B!!2x2j3e|#>T3thY+h!zxsBc8p2^RNXQKpmK%7R5w^adDMqgl! z&XNZhUtzO@Ic+U-h4ACDZ=-BDXbV6yL0oWtT7KpKweNM`{H@feZS6o(cdy;+_qld~ zx!voF_Y&sAaR1rg`^P^$y!7ZdcJ>@>aHdv1SUNuSWZ!~he`Utm&J*5}S)QMhnQW2OP~WVw+~OWPHxqUQJp40h zZsEj=H%HCD$yweco`pIsq62%{bbL>nP8{mep?w{36xitB+8)yRwZ4EOTfGU5XQ~O; zZt=gS2=`0q9vg^uqMjLQMF>wijYO%jRl+I9M}#QnbuWQ~Tz6zxmAipegbg)kZiQh1 z5n<2#2-8z+QylscxnOD&anaCDceuw`lPsUmR*_dpTb~c-9Ss2(< zu#{5StX){24UQyL*&k`V6`-BGp4nQFKm%#!6&z6^ZDj;TN5nk>xT+dtDu}B<0<-3X zDJ5?++e|f!27`$>hRxcHx}7>L&NXOht|o~?=3AU)xh5>v%}ow{9Z3e*wXG42C+hgH z)8CX#uQdt7<)6&l)H$f&Et! zW6lX`3q2mwVM9h+TjMnGfq|fPON4EWhLeE9*}yr65VtIP}b}4iEU}ggFVc(dHI-4Z6oDknQV@ zh499cqwW~b0JGfXMe-A=)=aeNoCRBN&}=rM@vu*|>5wLafxbV#NbQxwRGU9QtwSfM zvvM`n<`0u>5VS_U^XKXL)0gS#r_Rt*Pdq_qo_~?fy?BW>dQ<9cj_lBiHAuNY4XN^I zGM0JU8%(G_m{Ok)fyOf$j5tv!v#>PD00UYYLaCW78MsphXsROygd=Y0SFFzn|4D}v zdG5IOYvEWL5M^vK4DJ9D3@zboqSp30x9p%IC0}wjt*i@EViG+cYBgBXv00Nt1wIgD zni?NK>|0!*>#jdRx4!vSdhdHbNVmTAoz!d}AfiP0=#}-MGBmmXb_?+i}cnG=5K+jslt?bk%j`bTyI?RRQB7TvV9klE4AS z7W#cn7@=*aVXXl;2@}tOE^gNV3jyk69XII;E)&>$*5WK>0B{fNAcUd9@dtCs8CERE zA^V9&IY_@^15ODW)UGofJRG!GXKM&6FqzPr6MzuFo~@h!Mzq`!3Ymd389lBi6^xx= zVMSRoYmLE4dC!45j6&PfTpzgvQ~>C~<|)CN*rx(`;xX$DZ{t1zg&FwHpjQzl8+(?w zcfqqNLoJJN-vrn=P+4JYDVT->URQvg)amRI_Y+%`P|&#nS+0Fbf|f$`!cO)S6?Bm=mbKJ80r z0J!;cX8ETcjEo-W~J=wlI zt<4?(&--rrL*H9#FFw+k+q27(+r3`awF}JcUSGUdtwGcN1)2=EZoc&3zyBMP&1XK? zSvjJj#MrE{pu3&}PB83%1A0=j@l0sk-=d>8o}}KiOW*&a|Al_`-`-CL4$RS>#jXHz z5;|h{bS)$)i~ev8xkRl8%Lf~YgEv;VVB2Mx(%8JhZ~#jKOud?FRMwLt(^S-WUr@sXx{-Nyfe=voFlSm5m98eK@1?tOPtd#XZw< z5JHlf560N?6C}{Z5n5@d$-&C8a3$O1a1sg!);I83T|(u=$uqsU=!1aDw7kmdLVX1A zfo_=rSn=g3ht@sO>aBQk&)h)iiQ2b?Ips!WM)Dl65riWC&i#x`lE@CJ1~SeKgH9R1 zoN8+6ZK2Tw2iV46iYSDp99|b@SOy6J%E(&~{)wMoPQL~4K}u=bCj24MJQAHc zcIep2CkcP$@M+Hcy0X-!g}J88udUvQHhN=P-{P@4qm8X0jl@A!)>Es&KQ-&CG^eqb z0CsX60HlD`5ZX9c55ghQFwmeiaLYsYD+g_8Xl*cnR8~3ud>93IoX3JO28T~4a{u3(7E$|fv%<}zX;Z!0C<>TsK50YLijZkFX{mC>+(QH08Y~w z)cRRgTLB3h$}pA8i!+*xwum_Nb<9BBjHb;N)#vw+=-KQ)LhVCWQEUDL)#jFo>f1EA ze3ni<@)SM($g}k9lV|Dtxpg}G(j^*?M#7|9T<8e+v^dWiqjhQ-$TOHss6Qmh$lV)H zX>%~4&Hk7+w#SkfrZ<{Wf5-<%90Jea9kXNs8X;UVg_O)KgtI&3dY@F)+t%siCHU4HE4eW5xI83RtCm9}F;+g9T6prkw464xr)?SSuxb^vvqI0;p%VF2G&1Vd@Tj z6@Ci*k2HRBIr4YP21o#LW+W8MLf_r;rhJ7^*DA}c487KN$cuY`c~!eEfKS+|VMpc9 zW&2zn0m%r)Bc?=`S9^5rHB0ov-}lw@jqksK&OCXFMq52i2xKy>Q?^HRcb~E-<%yz1(XTnA^R+=z+P>_Ql$CaQOr4PygnR zPPfnB+FCkh;>R%W;e@vG)26TCCAemDqrVrF?HL1yAUFKM40~aFnA*u~0HVMiaFektVgyUg& zhDT{x93x~>oq7Wu5;%$X9d=7B5j(5(b`bEuQP!LZ%0LBUzhvVxGmKzofTg1jv^@Y1 z2NfNmb;(f4=19PVrUm6nELQ*MZr1{lHcLh%jNH(@OQ2ril;=>#D$gbvJ$4Ic_`!Cx za1Upku<)#F_9a6G^|$9HXgk0|3pdQ*9Dt8Fkq_Rd_b~vCI?o~1hf*fXQ~+fL+&JWQ zWvNMf78^9*ZHdFWzBQ1{uV+?=w6VpyP3i>HTPn!kk^~YYCy@c3M0jQ4G}&0Gifl(u zg!UeUdnN1?fQo67Apr%(t&1BQxRQZrH~#?QR>Dr>=~3W1=2ITyC|hEeWg}fR5o2UH z*li6VMtwp#w5?Krh>t-Fin8?v;8*C>1yE=rMXqBA{3s3@BBb5J5*hARA7Emqi zDFPn)0-;DQBool@3g87Y2vAqrNWK@~8@R`K-yH})05BGv-#Y+e%`B_gUyYALv*}3w z(QHi9abNbjMyE~n`Tf+|f0F8Zk5F^(VQMbyA!=yaUq zC;+Ajk<05sp}1D!5DZ=VC;2^0kZu?pb9-YjiXoo8xi*{+!mu5uXwhNpv_6wV5!Vc2J3 zw*g2E+gJC~96solFv5`m3>9px)c>$?Odqt^&OMPwW{-t+<@HLetRf^cCnm7PUB^n8 zXhj4kDqA6H;S1h|jv}HqzB2oBao~glw`kLn*Z_{hFZX*=&^T4IduWCg~U4WKdE5@~!F_o|c?;2Z$X++TT2WmD+F zw@X0XLlCiRM*43ac`Aov*xAt z{#X6Q&eDmWX)hg{G!__`+q(f(7tx4~~H*TN3|A%J7jq6(r zhiEbxI~e172KhuPpAMOm%EI82$&l)e5nc7FYw36HzeIob`~Cxc=CMn3_~1Ovwd3?n z%nQefN+;XRh=jRhP!M6Mvc1>>&fkH=wK|5n*s~Kd;_yDH&qP84m**RFaHT`X_s`M6 zeRI@m67_lmTH73nz&?Xx>o`2!V$CLCW8~qJN{c4YV5Sv>q6NOmI_DOu}U#%8vf|)Lujdf?%*nASPc-LBTl-7w~4w_Xm zqTS(Ct`I0s!=$^po2N7cu!v z3mJ9M!~_yX(i+d`%6)*kSUcvilIIY-lL&1Hgatg_li0eCsM&S9=8)Dnpe(8`h_*a_CQtC+Uh6dH8a z_3*tk2KUtg}Fkm4nn-I!2v?$EeYnr*UIUlfee{F09j|55GY7KJYv} z@ZcG`cyW_9HnwSVb4z@ScCAKxmRdC5Y0}bSn>sR=>jJ(@7UrgAL$|3wP07;Spa!?S zg%N`-EIP8>@BA5~ALw4BBSa3##K~n9RItcx7(3g9+siVQ7Ft?d@3Am>IW$+^o2Vp& zGSOyKYx473!b;oN7}DycExNohpz)|dC$Bz6cYf7d>CJcCPKQsvirNQ`(X3IUY42H@ zZ9Gl2jZ@UvewrG?i_Ddv*|bZuNy8H&=w7Zm7!q&=-{#;QY-2z{n9<3uM?fVv0|1x_MbdIo;zc4dhoz%~=G zPeTkdR-~Yujccouu)xd^$&4@T6Z*RXM=1y*u>!Rm631Ynwox}NH|mTPliLnkHUJxd z8d?uyTU*@#c)?!GF0_WcrZw6@9X^0E-8w`~r;OTFkSKtuVA<*P2e1XO0@-yV5&$-U z>mK^vAK(Yt%UQ;*TL*wK%57iLwt;=88)PiCe(wZUMKcGWQn0lm6gTfDPIR)(sIX@e zIEZc7pOYS}Egc7`u5|}{3b!l5PGO(aitM!5o3NJpXT6}=?kqv4=+j(@WGi`(l|QjH z7vHJ?P9RCgXHx&?oB5psJY zp{N(ip6inJ^iUJn$nk#lHaj4R4EUxo&U?^hK6Gl#==;9yo%Ef5;>|SOI7^q$UZ8ek ziD=d;?Vm*14;zT>2&_YF&o+q0n>5(EJX<{Zp M^EdpJ>2PZx0JUd(-@SIP|N5)B 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

BX!^+V245yuL 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 { + await client.connect(); + const checks = {}; + + checks.tableCounts = await q('table_counts', ` + select 'auth.users' as table_name, count(*)::int as count from auth.users + union all select 'profiles', count(*)::int from profiles + union all select 'user_api_keys', count(*)::int from user_api_keys + union all select 'works', count(*)::int from works + union all select 'generation_jobs', count(*)::int from generation_jobs + union all select 'credit_transactions', count(*)::int from credit_transactions + union all select 'orders', count(*)::int from orders + union all select 'api_providers', count(*)::int from api_providers + union all select 'model_recommendations', count(*)::int from model_recommendations + `); + + checks.profiles = await q('profiles', ` + select id, email, nickname, role, membership_tier, credits_balance, is_active, + avatar_url is not null as has_avatar, created_at, updated_at + from profiles + order by created_at desc + `); + + checks.profileAuthIntegrity = await q('profile_auth_integrity', ` + select 'profile_without_auth' as issue, count(*)::int as count + from profiles p left join auth.users u on u.id = p.id where u.id is null + union all + select 'auth_without_profile', count(*)::int + from auth.users u left join profiles p on p.id = u.id where p.id is null + `); + + checks.admin = await q('admin', ` + select p.id, p.email, p.nickname, p.role, p.membership_tier, p.is_active, + u.password_hash is not null as has_password_hash + from profiles p + left join auth.users u on u.id = p.id + where p.role = 'admin' or p.email = 'admin@example.com' + order by p.created_at + `); + + checks.apiKeys = await q('api_keys', ` + select id, user_id, provider, supplier_name, type, model_name, note, + api_key_preview, length(api_key_encrypted) as encrypted_len, + api_key_encrypted like 'mjenc:v1:%' as has_enc_prefix, + api_key_encrypted = api_key_preview as encrypted_equals_preview, + is_active, created_at + from user_api_keys + order by created_at desc + `); + + checks.apiKeyIntegrity = await q('api_key_integrity', ` + select count(*)::int as orphan_api_keys + from user_api_keys k left join profiles p on p.id = k.user_id + where p.id is null + `); + + checks.worksDistribution = await q('works_distribution', ` + select type, status, is_public, count(*)::int as count, + count(*) filter (where result_url like '/api/local-storage/%')::int as local_urls, + count(*) filter (where result_url like 'data:%')::int as data_urls, + count(*) filter (where result_url like '[%')::int as placeholder_urls + from works + group by type, status, is_public + order by type, status, is_public + `); + + checks.worksByUser = await q('works_by_user', ` + select p.email, p.nickname, w.user_id, count(*)::int as works + from works w + left join profiles p on p.id = w.user_id + group by p.email, p.nickname, w.user_id + order by works desc nulls last + `); + + checks.workIntegrity = await q('work_integrity', ` + select 'works_missing_user' as issue, count(*)::int as count + from works w left join profiles p on p.id = w.user_id + where p.id is null + union all + select 'works_null_user', count(*)::int from works where user_id is null + union all + select 'works_bad_url', count(*)::int + from works + where result_url is null or result_url = '' or result_url like 'data:%' + union all + select 'public_not_gallery_url', count(*)::int + from works + where is_public = true and result_url not like '/api/local-storage/gallery/%' + `); + + checks.reversePromptWorks = await q('reverse_prompt_works', ` + select id, user_id, type, + left(result_url, 100) as result_url, + left(coalesce(params->>'referenceImage', ''), 100) as reference_image, + prompt <> '' as has_prompt, + negative_prompt is not null as has_negative_prompt, + created_at + from works + where type = 'reverse-prompt' + order by created_at desc + limit 20 + `); + + checks.galleryWorks = await q('gallery_works', ` + select id, user_id, type, is_public, left(result_url, 100) as result_url, created_at + from works + where is_public = true + order by created_at desc + `); + + checks.generationJobs = await q('generation_jobs', ` + select status, count(*)::int as count, + count(*) filter (where user_id is null)::int as null_user_count + from generation_jobs + group by status + order by status + `); + + checks.generationJobsByUser = await q('generation_jobs_by_user', ` + select p.email, p.nickname, j.user_id, count(*)::int as jobs + from generation_jobs j + left join profiles p on p.id = j.user_id + group by p.email, p.nickname, j.user_id + order by jobs desc nulls last + `); + + const works = (await client.query(` + select id, result_url, thumbnail_url, params + from works + order by created_at desc + `)).rows; + + const missingFiles = []; + let referencedLocalUrls = 0; + for (const work of works) { + const urls = [ + ['result_url', work.result_url], + ['thumbnail_url', work.thumbnail_url], + ['referenceImage', work.params && work.params.referenceImage], + ]; + if (work.params && Array.isArray(work.params.referenceImages)) { + work.params.referenceImages.forEach((url, index) => urls.push([`referenceImages[${index}]`, url])); + } + for (const [field, url] of urls) { + const key = storageKeyFromUrl(url); + if (!key) continue; + referencedLocalUrls++; + const full = path.join(root, 'local-storage', key); + if (!fs.existsSync(full)) missingFiles.push({ workId: work.id, field, key }); + } + } + + checks.storage = { + localStorageExists: fs.existsSync(path.join(root, 'local-storage')), + backupsExists: fs.existsSync(path.join(root, 'backups')), + localFiles: countFiles(path.join(root, 'local-storage')), + generatedFiles: countFiles(path.join(root, 'local-storage', 'generated')), + galleryFiles: countFiles(path.join(root, 'local-storage', 'gallery')), + reversePromptFiles: countFiles(path.join(root, 'local-storage', 'reverse-prompt')), + referencedLocalUrls, + missingFiles, + }; + + console.log(JSON.stringify(checks, null, 2)); + await client.end(); +})().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/audit_db_storage.js b/audit_db_storage.js new file mode 100644 index 0000000..9defd1f --- /dev/null +++ b/audit_db_storage.js @@ -0,0 +1,67 @@ +const { Client } = require('pg'); +const fs = require('fs'); +const path = require('path'); +require('dotenv').config({ path: '/root/miaojingAI/.env.local' }); +const c = new Client({ connectionString: process.env.LOCAL_DB_URL }); +const root = '/root/miaojingAI'; +function storageKeyFromUrl(url) { + if (!url || typeof url !== 'string') return null; + const marker = '/api/local-storage/'; + const idx = url.indexOf(marker); + if (idx < 0) return null; + try { return decodeURIComponent(url.slice(idx + marker.length).split('?')[0]); } catch { return null; } +} +async function query(name, sql, params=[]) { + try { const r = await c.query(sql, params); return { name, rows: r.rows }; } + catch (e) { return { name, error: e.message }; } +} +(async () => { + await c.connect(); + const out = {}; + out.db = await query('db', `select current_database() as database, current_user as user, now() as checked_at`); + out.tables = await query('tables', `select schemaname, tablename from pg_tables where schemaname in ('public','auth') order by schemaname, tablename`); + const tableNames = out.tables.rows || []; + out.counts = []; + for (const t of tableNames) { + const full = t.schemaname === 'public' ? t.tablename : `${t.schemaname}.${t.tablename}`; + const r = await query(full, `select count(*)::int as count from ${full}`); + out.counts.push({ table: full, count: r.rows?.[0]?.count ?? null, error: r.error }); + } + out.admins = await query('admins', `select id,email,nickname,role,membership_tier,is_active,created_at,updated_at from profiles where role='admin' or email in ('admin@example.com','admin@miaojing.ai') order by created_at`); + out.authAdmins = await query('auth_admins', `select id,email,created_at, password_hash is not null as has_password from auth.users where email in ('admin@example.com','admin@miaojing.ai') order by created_at`); + out.profileWithoutAuth = await query('profile_without_auth', `select p.id,p.email,p.role from profiles p left join auth.users u on u.id=p.id where u.id is null order by p.created_at limit 50`); + out.authWithoutProfile = await query('auth_without_profile', `select u.id,u.email from auth.users u left join profiles p on p.id=u.id where p.id is null order by u.created_at limit 50`); + out.worksMissingUser = await query('works_missing_user', `select w.id,w.user_id,w.title,w.type,w.status,w.created_at from works w left join profiles p on p.id=w.user_id where w.user_id is not null and p.id is null order by w.created_at desc limit 50`); + out.worksNullUser = await query('works_null_user', `select id,title,type,status,created_at from works where user_id is null order by created_at desc limit 50`); + out.worksByStatus = await query('works_by_status', `select status, count(*)::int from works group by status order by status`); + out.worksByUser = await query('works_by_user', `select p.email,p.nickname,w.user_id,count(*)::int as works from works w left join profiles p on p.id=w.user_id group by p.email,p.nickname,w.user_id order by works desc nulls last limit 20`); + out.workLikesMissing = await query('work_likes_missing_refs', `select wl.id,wl.user_id,wl.work_id from work_likes wl left join profiles p on p.id=wl.user_id left join works w on w.id=wl.work_id where p.id is null or w.id is null limit 50`); + out.creditMissingUser = await query('credit_missing_user', `select ct.id,ct.user_id,ct.amount,ct.type,ct.created_at from credit_transactions ct left join profiles p on p.id=ct.user_id where p.id is null limit 50`); + out.ordersMissingUser = await query('orders_missing_user', `select o.id,o.user_id,o.order_no,o.status,o.created_at from orders o left join profiles p on p.id=o.user_id where o.user_id is not null and p.id is null limit 50`); + out.apiKeysMissingUser = await query('api_keys_missing_user', `select k.id,k.user_id,k.provider,k.type from user_api_keys k left join profiles p on p.id=k.user_id where p.id is null limit 50`); + out.jobsMissingUser = await query('jobs_missing_user', `select j.id,j.user_id,j.type,j.status,j.created_at from generation_jobs j left join profiles p on p.id=j.user_id where j.user_id is not null and p.id is null order by j.created_at desc limit 50`); + out.jobsNullUser = await query('jobs_null_user', `select id,type,status,created_at from generation_jobs where user_id is null order by created_at desc limit 50`); + out.jobsByUser = await query('jobs_by_user', `select p.email,p.nickname,j.user_id,count(*)::int as jobs from generation_jobs j left join profiles p on p.id=j.user_id group by p.email,p.nickname,j.user_id order by jobs desc nulls last limit 20`); + out.worksFileCheck = { totalLocalUrls: 0, missing: [] }; + const works = await query('works_urls', `select id,result_url,thumbnail_url from works order by created_at desc`); + for (const w of works.rows || []) { + for (const field of ['result_url','thumbnail_url']) { + const key = storageKeyFromUrl(w[field]); + if (!key) continue; + out.worksFileCheck.totalLocalUrls++; + const abs = path.join(root, 'local-storage', key); + if (!fs.existsSync(abs)) out.worksFileCheck.missing.push({ workId: w.id, field, key }); + } + } + out.storage = { + localStorageExists: fs.existsSync(path.join(root,'local-storage')), + backupsExists: fs.existsSync(path.join(root,'backups')), + localFiles: 0, + galleryFiles: 0, + }; + function walk(dir) { if (!fs.existsSync(dir)) return 0; let n=0; for (const e of fs.readdirSync(dir,{withFileTypes:true})) { const p=path.join(dir,e.name); n += e.isDirectory()?walk(p):1; } return n; } + out.storage.localFiles = walk(path.join(root,'local-storage')); + out.storage.galleryFiles = walk(path.join(root,'local-storage','gallery')); + console.log(JSON.stringify(out, null, 2)); + await c.end(); +})().catch(e => { console.error(e); process.exit(1); }); diff --git a/audit_recovered_data.js b/audit_recovered_data.js new file mode 100644 index 0000000..02daf34 --- /dev/null +++ b/audit_recovered_data.js @@ -0,0 +1,206 @@ +const { Pool } = require('pg'); +require('dotenv').config({ path: '.env.local' }); + +const SYSTEM_USER_ID = '00000000-0000-0000-0000-000000000000'; + +function short(value, length = 160) { + if (value == null) return value; + const text = typeof value === 'string' ? value : JSON.stringify(value); + return text.length > length ? `${text.slice(0, length)}...` : text; +} + +async function main() { + const pool = new Pool({ connectionString: process.env.LOCAL_DB_URL }); + const client = await pool.connect(); + try { + const tableColumns = await client.query(` + SELECT table_schema, table_name, column_name, data_type + FROM information_schema.columns + WHERE (table_schema = 'public' AND table_name IN ('profiles', 'works', 'user_api_keys', 'orders', 'credit_transactions')) + OR (table_schema = 'auth' AND table_name = 'users') + ORDER BY table_schema, table_name, ordinal_position + `); + + const userSummary = await client.query(` + SELECT + (SELECT COUNT(*)::int FROM auth.users) AS auth_users, + (SELECT COUNT(*)::int FROM profiles) AS profiles, + (SELECT COUNT(*)::int FROM profiles WHERE role = 'admin') AS admins, + (SELECT COUNT(*)::int FROM profiles WHERE role <> 'admin') AS non_admin_profiles, + (SELECT COUNT(*)::int FROM auth.users u LEFT JOIN profiles p ON p.id = u.id WHERE p.id IS NULL) AS auth_without_profile, + (SELECT COUNT(*)::int FROM profiles p LEFT JOIN auth.users u ON u.id = p.id WHERE u.id IS NULL) AS profile_without_auth, + (SELECT COUNT(*)::int FROM auth.users WHERE password_hash IS NULL OR password_hash = '') AS auth_without_password_hash, + (SELECT COUNT(*)::int FROM auth.users WHERE password_hash IS NOT NULL AND password_hash <> '') AS auth_with_password_hash + `); + + const userSamples = await client.query(` + SELECT p.id, p.email, p.nickname, p.role, p.membership_tier, p.is_active, + u.id IS NOT NULL AS has_auth, + (u.password_hash IS NOT NULL AND u.password_hash <> '') AS has_password_hash, + p.created_at + FROM profiles p + LEFT JOIN auth.users u ON u.id = p.id + ORDER BY p.created_at DESC NULLS LAST + LIMIT 80 + `); + + const workSummary = await client.query(` + SELECT + COUNT(*)::int AS total, + COUNT(*) FILTER (WHERE status = 'completed')::int AS completed, + COUNT(*) FILTER (WHERE is_public = true AND status = 'completed')::int AS public_completed, + COUNT(*) FILTER (WHERE is_public = false AND status = 'completed')::int AS private_completed, + COUNT(*) FILTER (WHERE user_id IS NULL)::int AS null_user_id, + COUNT(*) FILTER (WHERE user_id = $1)::int AS system_user_id, + COUNT(*) FILTER (WHERE p.id IS NULL)::int AS missing_profile, + COUNT(*) FILTER (WHERE p.id IS NOT NULL)::int AS linked_profile + FROM works w + LEFT JOIN profiles p ON p.id = w.user_id + `, [SYSTEM_USER_ID]); + + const publicWorkSummary = await client.query(` + SELECT + COUNT(*)::int AS public_total, + COUNT(*) FILTER (WHERE w.user_id IS NULL)::int AS null_user_id, + COUNT(*) FILTER (WHERE w.user_id = $1)::int AS system_user_id, + COUNT(*) FILTER (WHERE p.id IS NULL)::int AS missing_profile, + COUNT(*) FILTER (WHERE p.id IS NOT NULL)::int AS linked_profile + FROM works w + LEFT JOIN profiles p ON p.id = w.user_id + WHERE w.is_public = true AND w.status = 'completed' + `, [SYSTEM_USER_ID]); + + const workByUser = await client.query(` + SELECT + COALESCE(p.email, '[missing-profile]') AS email, + COALESCE(p.nickname, '') AS nickname, + COALESCE(p.role, '') AS role, + w.user_id, + COUNT(*)::int AS total_works, + COUNT(*) FILTER (WHERE w.status = 'completed')::int AS completed_works, + COUNT(*) FILTER (WHERE w.is_public = true AND w.status = 'completed')::int AS public_works, + COUNT(*) FILTER (WHERE w.is_public = false AND w.status = 'completed')::int AS history_works + FROM works w + LEFT JOIN profiles p ON p.id = w.user_id + GROUP BY w.user_id, p.email, p.nickname, p.role + ORDER BY total_works DESC + LIMIT 120 + `); + + const orphanSamples = await client.query(` + SELECT w.id, w.user_id, w.type, w.status, w.is_public, w.result_url, + LEFT(COALESCE(w.prompt, ''), 140) AS prompt, + w.params, + w.created_at + FROM works w + LEFT JOIN profiles p ON p.id = w.user_id + WHERE p.id IS NULL OR w.user_id = $1 OR w.user_id IS NULL + ORDER BY w.created_at DESC NULLS LAST + LIMIT 80 + `, [SYSTEM_USER_ID]); + + const paramKeys = await client.query(` + SELECT key, COUNT(*)::int AS count + FROM works w + CROSS JOIN LATERAL jsonb_object_keys(COALESCE(w.params, '{}'::jsonb)) AS key + LEFT JOIN profiles p ON p.id = w.user_id + WHERE w.is_public = true + AND w.status = 'completed' + AND (p.id IS NULL OR w.user_id = $1 OR w.user_id IS NULL) + GROUP BY key + ORDER BY count DESC, key + LIMIT 80 + `, [SYSTEM_USER_ID]); + + const possibleOwnerFields = await client.query(` + SELECT + id, + user_id, + params->>'user_id' AS params_user_id, + params->>'userId' AS params_user_id_camel, + params->>'publisher_id' AS publisher_id, + params->>'publisherId' AS publisher_id_camel, + params->>'owner_id' AS owner_id, + params->>'ownerId' AS owner_id_camel, + params->>'created_by' AS created_by, + params->>'createdBy' AS created_by_camel, + params->>'email' AS params_email, + params->>'userEmail' AS params_user_email, + params->>'publisherEmail' AS params_publisher_email, + params->>'nickname' AS params_nickname, + params->>'userName' AS params_user_name, + LEFT(COALESCE(prompt, ''), 120) AS prompt + FROM works + WHERE is_public = true + AND status = 'completed' + AND (user_id IS NULL OR user_id = $1 OR NOT EXISTS (SELECT 1 FROM profiles p WHERE p.id = works.user_id)) + ORDER BY created_at DESC NULLS LAST + LIMIT 80 + `, [SYSTEM_USER_ID]); + + const duplicateCandidates = await client.query(` + SELECT + public.id AS orphan_id, + public.user_id AS orphan_user_id, + private.id AS owned_id, + private.user_id AS owner_user_id, + p.email, + p.nickname, + CASE + WHEN private.result_url = public.result_url THEN 'result_url' + WHEN COALESCE(private.thumbnail_url, '') <> '' AND private.thumbnail_url = public.thumbnail_url THEN 'thumbnail_url' + WHEN COALESCE(private.prompt, '') <> '' AND private.prompt = public.prompt THEN 'prompt_time' + ELSE 'unknown' + END AS match_type, + ABS(EXTRACT(EPOCH FROM (private.created_at - public.created_at)))::int AS seconds_apart, + LEFT(COALESCE(public.prompt, ''), 120) AS prompt + FROM works public + JOIN works private + ON private.id <> public.id + AND private.user_id IS NOT NULL + AND private.user_id <> $1 + AND ( + private.result_url = public.result_url + OR ( + COALESCE(public.thumbnail_url, '') <> '' + AND private.thumbnail_url = public.thumbnail_url + ) + OR ( + COALESCE(private.prompt, '') <> '' + AND private.prompt = public.prompt + AND private.created_at BETWEEN public.created_at - INTERVAL '30 minutes' AND public.created_at + INTERVAL '30 minutes' + ) + ) + JOIN profiles p ON p.id = private.user_id + LEFT JOIN profiles public_profile ON public_profile.id = public.user_id + WHERE public.is_public = true + AND public.status = 'completed' + AND (public_profile.id IS NULL OR public.user_id = $1 OR public.user_id IS NULL) + ORDER BY public.created_at DESC NULLS LAST, match_type, seconds_apart + LIMIT 100 + `, [SYSTEM_USER_ID]); + + const output = { + columns: tableColumns.rows, + userSummary: userSummary.rows[0], + userSamples: userSamples.rows, + workSummary: workSummary.rows[0], + publicWorkSummary: publicWorkSummary.rows[0], + workByUser: workByUser.rows, + orphanSamples: orphanSamples.rows.map(row => ({ ...row, result_url: short(row.result_url, 120), params: short(row.params, 300) })), + anonymousParamKeys: paramKeys.rows, + possibleOwnerFields: possibleOwnerFields.rows, + duplicateCandidates: duplicateCandidates.rows, + }; + + console.log(JSON.stringify(output, null, 2)); + } finally { + client.release(); + await pool.end(); + } +} + +main().catch(error => { + console.error(error); + process.exit(1); +}); diff --git a/backfill_gallery_user_links.js b/backfill_gallery_user_links.js new file mode 100644 index 0000000..289b201 --- /dev/null +++ b/backfill_gallery_user_links.js @@ -0,0 +1,64 @@ +const { Pool } = require('pg'); +require('dotenv').config({ path: '.env.local' }); + +const SYSTEM_USER_ID = '00000000-0000-0000-0000-000000000000'; + +(async () => { + const pool = new Pool({ connectionString: process.env.LOCAL_DB_URL }); + const client = await pool.connect(); + try { + await client.query('BEGIN'); + const result = await client.query(` + WITH candidates AS ( + SELECT DISTINCT ON (public.id) + public.id AS public_id, + private.user_id AS owner_user_id, + CASE + WHEN private.result_url = public.result_url THEN 1 + WHEN private.thumbnail_url = public.thumbnail_url THEN 2 + ELSE 3 + END AS confidence_rank, + ABS(EXTRACT(EPOCH FROM (private.created_at - public.created_at))) AS time_distance + FROM works public + JOIN works private + ON private.id <> public.id + AND private.user_id <> $1 + AND ( + private.result_url = public.result_url + OR ( + public.thumbnail_url IS NOT NULL + AND private.thumbnail_url = public.thumbnail_url + ) + OR ( + COALESCE(private.prompt, '') = COALESCE(public.prompt, '') + AND private.created_at BETWEEN public.created_at - INTERVAL '10 minutes' AND public.created_at + INTERVAL '10 minutes' + ) + ) + JOIN profiles p ON p.id = private.user_id + WHERE public.is_public = true + AND public.status = 'completed' + AND public.user_id = $1 + ORDER BY public.id, confidence_rank, time_distance + ), + updated AS ( + UPDATE works w + SET user_id = candidates.owner_user_id + FROM candidates + WHERE w.id = candidates.public_id + RETURNING w.id, w.user_id + ) + SELECT COUNT(*)::int AS fixed_count FROM updated + `, [SYSTEM_USER_ID]); + await client.query('COMMIT'); + console.log(JSON.stringify(result.rows[0] || { fixed_count: 0 }, null, 2)); + } catch (error) { + await client.query('ROLLBACK'); + throw error; + } finally { + client.release(); + await pool.end(); + } +})().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/backfill_generation_jobs_user.js b/backfill_generation_jobs_user.js new file mode 100644 index 0000000..2bf2a82 --- /dev/null +++ b/backfill_generation_jobs_user.js @@ -0,0 +1,46 @@ +const { Client } = require('pg'); +require('dotenv').config({ path: '/root/miaojingAI/.env.local' }); + +(async () => { + const client = new Client({ connectionString: process.env.LOCAL_DB_URL }); + await client.connect(); + try { + await client.query('BEGIN'); + const admin = await client.query( + `SELECT id FROM profiles WHERE role = 'admin' ORDER BY created_at ASC LIMIT 1`, + ); + if (!admin.rows[0]?.id) { + throw new Error('No admin profile found'); + } + const result = await client.query( + `UPDATE generation_jobs + SET user_id = $1 + WHERE user_id IS NULL + RETURNING id`, + [admin.rows[0].id], + ); + await client.query('COMMIT'); + + const summary = await client.query( + `SELECT status, + count(*)::int AS count, + count(*) FILTER (WHERE user_id IS NULL)::int AS null_user_count + FROM generation_jobs + GROUP BY status + ORDER BY status`, + ); + console.log(JSON.stringify({ + backfilled: result.rowCount, + adminUserId: admin.rows[0].id, + summary: summary.rows, + }, null, 2)); + } catch (error) { + await client.query('ROLLBACK'); + throw error; + } finally { + await client.end(); + } +})().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/cleanup_import_edge_cases.js b/cleanup_import_edge_cases.js new file mode 100644 index 0000000..9d99e7d --- /dev/null +++ b/cleanup_import_edge_cases.js @@ -0,0 +1,73 @@ +const fs = require('fs'); +const path = require('path'); +const { Pool } = require('pg'); +require('dotenv').config({ path: '.env.local' }); + +function collectLocalStorageKeys(value, keys = new Set()) { + if (typeof value === 'string') { + const marker = '/api/local-storage/'; + const index = value.indexOf(marker); + if (index >= 0) { + keys.add(decodeURIComponent(value.slice(index + marker.length).split('?')[0])); + } + return keys; + } + if (Array.isArray(value)) { + value.forEach(item => collectLocalStorageKeys(item, keys)); + return keys; + } + if (value && typeof value === 'object') { + Object.values(value).forEach(item => collectLocalStorageKeys(item, keys)); + } + return keys; +} + +(async () => { + const pool = new Pool({ connectionString: process.env.LOCAL_DB_URL }); + const client = await pool.connect(); + try { + const works = await client.query( + `SELECT id, result_url, thumbnail_url, params + FROM works + WHERE title LIKE 'codex-import-edge-%' OR prompt LIKE 'codex-import-edge-%'`, + ); + const keys = new Set(); + for (const row of works.rows) { + collectLocalStorageKeys(row.result_url, keys); + collectLocalStorageKeys(row.thumbnail_url, keys); + collectLocalStorageKeys(row.params, keys); + } + + const deletedWorks = await client.query( + `DELETE FROM works + WHERE title LIKE 'codex-import-edge-%' OR prompt LIKE 'codex-import-edge-%'`, + ); + const deletedAnnouncements = await client.query( + `DELETE FROM announcements + WHERE title LIKE 'codex-import-edge-%'`, + ); + + let deletedFiles = 0; + const base = path.join(process.cwd(), 'local-storage'); + for (const key of keys) { + const filePath = path.normalize(path.join(base, key)); + if (!filePath.startsWith(base)) continue; + if (fs.existsSync(filePath)) { + fs.unlinkSync(filePath); + deletedFiles += 1; + } + } + + console.log(JSON.stringify({ + deletedWorks: deletedWorks.rowCount || 0, + deletedAnnouncements: deletedAnnouncements.rowCount || 0, + deletedFiles, + }, null, 2)); + } finally { + client.release(); + await pool.end(); + } +})().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/components.json b/components.json new file mode 100644 index 0000000..3289f23 --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/deploy/nginx/miaojing-production.conf b/deploy/nginx/miaojing-production.conf new file mode 100644 index 0000000..715d583 --- /dev/null +++ b/deploy/nginx/miaojing-production.conf @@ -0,0 +1,109 @@ +# 妙境 AI 创作平台 Nginx 生产配置模板 +# 使用前替换: +# - example.com +# - /etc/letsencrypt/live/example.com/fullchain.pem +# - /etc/letsencrypt/live/example.com/privkey.pem +# - 如脚本中修改了前端端口,请同步 proxy_pass 的 5000 + +limit_req_zone $binary_remote_addr zone=miaojing_auth:10m rate=10r/m; +limit_req_zone $binary_remote_addr zone=miaojing_email:10m rate=6r/m; +limit_req_zone $binary_remote_addr zone=miaojing_generation:10m rate=20r/m; +limit_req_zone $binary_remote_addr zone=miaojing_download:10m rate=60r/m; +limit_req_zone $binary_remote_addr zone=miaojing_admin:10m rate=120r/m; + +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +server { + listen 80; + server_name example.com www.example.com; + + location /.well-known/acme-challenge/ { + root /var/www/html; + } + + location / { + return 301 https://$host$request_uri; + } +} + +server { + listen 443 ssl http2; + server_name example.com www.example.com; + + ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; + ssl_session_timeout 1d; + ssl_session_cache shared:MozSSL:10m; + ssl_session_tickets off; + ssl_protocols TLSv1.2 TLSv1.3; + ssl_prefer_server_ciphers off; + + client_max_body_size 80m; + keepalive_timeout 65; + proxy_connect_timeout 60s; + proxy_send_timeout 360s; + proxy_read_timeout 360s; + + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header Referrer-Policy "strict-origin-when-cross-origin" always; + add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" always; + + access_log /var/log/nginx/miaojing-access.log; + error_log /var/log/nginx/miaojing-error.log warn; + + location = /api/auth/login { + limit_req zone=miaojing_auth burst=20 nodelay; + proxy_pass http://127.0.0.1:5000; + include proxy_params; + proxy_set_header X-Forwarded-Proto https; + } + + location = /api/auth/register { + limit_req zone=miaojing_auth burst=20 nodelay; + proxy_pass http://127.0.0.1:5000; + include proxy_params; + proxy_set_header X-Forwarded-Proto https; + } + + location ^~ /api/email/ { + limit_req zone=miaojing_email burst=10 nodelay; + proxy_pass http://127.0.0.1:5000; + include proxy_params; + proxy_set_header X-Forwarded-Proto https; + } + + location ^~ /api/generate/ { + limit_req zone=miaojing_generation burst=30 nodelay; + proxy_pass http://127.0.0.1:5000; + include proxy_params; + proxy_set_header X-Forwarded-Proto https; + } + + location = /api/download { + limit_req zone=miaojing_download burst=120 nodelay; + proxy_pass http://127.0.0.1:5000; + include proxy_params; + proxy_set_header X-Forwarded-Proto https; + } + + location ^~ /api/admin/ { + limit_req zone=miaojing_admin burst=120 nodelay; + proxy_pass http://127.0.0.1:5000; + include proxy_params; + proxy_set_header X-Forwarded-Proto https; + } + + location / { + proxy_pass http://127.0.0.1:5000; + include proxy_params; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + proxy_set_header X-Forwarded-Proto https; + } +} diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs new file mode 100644 index 0000000..09e9a00 --- /dev/null +++ b/ecosystem.config.cjs @@ -0,0 +1,54 @@ +module.exports = { + apps: [ + { + name: 'miaojing-api', + cwd: '/root/miaojingAI', + script: 'npm', + args: 'run start', + exec_mode: 'fork', + instances: 1, + max_memory_restart: '512M', + restart_delay: 3000, + env: { + NODE_ENV: 'production', + COZE_PROJECT_ENV: 'PROD', + APP_RUNTIME_ROLE: 'backend', + DEPLOY_RUN_PORT: '5100', + }, + }, + { + name: 'miaojing-web', + cwd: '/root/miaojingAI', + script: 'npm', + args: 'run start', + exec_mode: 'fork', + instances: 1, + max_memory_restart: '512M', + restart_delay: 3000, + env: { + NODE_ENV: 'production', + COZE_PROJECT_ENV: 'PROD', + APP_RUNTIME_ROLE: 'frontend', + BACKEND_INTERNAL_URL: 'http://127.0.0.1:5100', + CONSOLE_INTERNAL_URL: 'http://127.0.0.1:5200', + DEPLOY_RUN_PORT: '5000', + }, + }, + { + name: 'miaojing-console', + cwd: '/root/miaojingAI', + script: 'npm', + args: 'run start', + exec_mode: 'fork', + instances: 1, + max_memory_restart: '512M', + restart_delay: 3000, + env: { + NODE_ENV: 'production', + COZE_PROJECT_ENV: 'PROD', + APP_RUNTIME_ROLE: 'console', + DEPLOY_RUN_PORT: '5200', + }, + }, + ], +}; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..a97ed47 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,52 @@ +import nextTs from 'eslint-config-next/typescript'; +import nextVitals from 'eslint-config-next/core-web-vitals'; +import { defineConfig, globalIgnores } from 'eslint/config'; + +const syntaxRules = [ + { + selector: 'JSXOpeningElement[name.name="head"]', + message: + '禁止使用 head 标签,优先使用 metadata。三方 CSS、字体等资源可以在 globals.css 中顶部通过 @import 引入或者使用 next/font;preload, preconnect, dns-prefetch 通过 ReactDOM 的 preload、preconnect、dns-prefetch 方法引入;json-ld 可阅读 https://nextjs.org/docs/app/guides/json-ld', + }, +]; + +const nextConfigRestrictedSyntaxRules = [ + { + selector: + 'Property[key.name=/^(root|outputFileTracingRoot)$/] > Literal[value=/^\\//]', + message: + '禁止在 next.config 中写死绝对路径,请改用 path.resolve(__dirname, ...)、import.meta.dirname 或 process.cwd() 动态拼接。', + }, +]; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + { + rules: { + 'react-hooks/set-state-in-effect': 'off', + 'no-restricted-syntax': ['error', ...syntaxRules], + }, + }, + { + files: ['next.config.ts'], + rules: { + 'no-restricted-syntax': ['error', ...nextConfigRestrictedSyntaxRules], + }, + }, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + '.next/**', + 'out/**', + 'build/**', + 'next-env.d.ts', + // Build artifacts: + 'server.js', + 'dist/**', + // Script files (CommonJS): + 'scripts/**/*.js', + ]), +]); + +export default eslintConfig; diff --git a/fix_persistence_data.js b/fix_persistence_data.js new file mode 100644 index 0000000..ff2138d --- /dev/null +++ b/fix_persistence_data.js @@ -0,0 +1,59 @@ +const { Client } = require('pg'); +const fs = require('fs'); +const path = require('path'); +require('dotenv').config({ path: '/root/miaojingAI/.env.local' }); +const root = '/root/miaojingAI'; +const c = new Client({ connectionString: process.env.LOCAL_DB_URL }); +function keyFromUrl(url) { + if (!url) return null; + const marker = '/api/local-storage/'; + const idx = String(url).indexOf(marker); + if (idx < 0) return null; + try { return decodeURIComponent(String(url).slice(idx + marker.length).split('?')[0]); } catch { return null; } +} +function publicUrl(key) { return `/api/local-storage/${key}`; } +function copyToGallery(url, type, id, field) { + const key = keyFromUrl(url); + if (!key) return url; + if (key.startsWith('gallery/')) return url; + const src = path.join(root, 'local-storage', key); + if (!fs.existsSync(src)) return url; + const ext = path.extname(key) || '.bin'; + const folder = field === 'thumbnail_url' ? 'gallery/thumbnails' : (type === 'text2video' || type === 'img2video' || type === 'video' ? 'gallery/videos' : 'gallery/images'); + const destDir = path.join(root, 'local-storage', folder); + fs.mkdirSync(destDir, { recursive: true }); + const destKey = `${folder}/${id}-${field}${ext}`; + const dest = path.join(root, 'local-storage', destKey); + if (!fs.existsSync(dest)) fs.copyFileSync(src, dest); + return publicUrl(destKey); +} +(async () => { + await c.connect(); + await c.query('BEGIN'); + try { + const adminRes = await c.query(`select id,email from profiles where role='admin' order by case when email='admin@example.com' then 0 else 1 end, created_at asc limit 1`); + if (!adminRes.rows.length) throw new Error('No admin profile found'); + const admin = adminRes.rows[0]; + const password = process.env.ADMIN_DEFAULT_PASSWORD || 'admin123'; + await c.query(`update auth.users set password_hash = crypt($1, gen_salt('bf')) where id=$2`, [password, admin.id]); + const worksFixed = await c.query(`update works set user_id=$1 where user_id is null or user_id not in (select id from profiles) returning id`, [admin.id]); + const creditDeleted = await c.query(`delete from credit_transactions where user_id not in (select id from profiles) returning id`); + const publicWorks = await c.query(`select id,type,result_url,thumbnail_url from works where is_public=true order by created_at asc`); + let copied = 0; + for (const w of publicWorks.rows) { + const nextResult = copyToGallery(w.result_url, w.type, w.id, 'result_url'); + const nextThumb = w.thumbnail_url ? copyToGallery(w.thumbnail_url, w.type, w.id, 'thumbnail_url') : null; + if (nextResult !== w.result_url || nextThumb !== w.thumbnail_url) { + await c.query(`update works set result_url=$1, thumbnail_url=$2, updated_at=now() where id=$3`, [nextResult, nextThumb, w.id]); + copied++; + } + } + await c.query('COMMIT'); + console.log(JSON.stringify({ admin: admin.email, passwordHashSet: true, worksFixed: worksFixed.rowCount, orphanCreditsDeleted: creditDeleted.rowCount, publicWorksCopiedToGallery: copied }, null, 2)); + } catch (e) { + await c.query('ROLLBACK'); + throw e; + } finally { + await c.end(); + } +})().catch(e => { console.error(e); process.exit(1); }); diff --git a/inspect_before_fix.js b/inspect_before_fix.js new file mode 100644 index 0000000..19d4031 --- /dev/null +++ b/inspect_before_fix.js @@ -0,0 +1,12 @@ +const { Client } = require('pg'); +require('dotenv').config({ path: '/root/miaojingAI/.env.local' }); +const c = new Client({ connectionString: process.env.LOCAL_DB_URL }); +(async () => { + await c.connect(); + for (const [name, sql] of [ + ['works_public', `select is_public, count(*)::int from works group by is_public order by is_public`], + ['works_urls', `select id,user_id,is_public,type,result_url,thumbnail_url from works order by created_at desc`], + ['orphan_credit', `select id,user_id,amount,type,description from credit_transactions where user_id not in (select id from profiles)`] + ]) { const r=await c.query(sql); console.log('--- '+name); console.table(r.rows); } + await c.end(); +})().catch(e=>{console.error(e);process.exit(1)}); diff --git a/inspect_db.js b/inspect_db.js new file mode 100644 index 0000000..075378a --- /dev/null +++ b/inspect_db.js @@ -0,0 +1,19 @@ +const { Client } = require('pg'); +require('dotenv').config({ path: '/root/miaojingAI/.env.local' }); +const c = new Client({ connectionString: process.env.LOCAL_DB_URL }); +(async () => { + await c.connect(); + const queries = [ + ['profiles_count', 'select count(*)::int as n from profiles'], + ['profiles', 'select id,email,nickname,role,membership_tier,is_active,created_at from profiles order by created_at desc limit 20'], + ['jobs_count', 'select count(*)::int as n from generation_jobs'], + ['jobs', 'select id,user_id,type,status,created_at from generation_jobs order by created_at desc limit 20'], + ['jobs_join_profiles', `select j.id,j.user_id,p.email,p.nickname,p.role,j.type,j.status,j.created_at from generation_jobs j left join profiles p on p.id=j.user_id order by j.created_at desc limit 20`] + ]; + for (const [name, sql] of queries) { + const r = await c.query(sql); + console.log('--- ' + name); + console.table(r.rows); + } + await c.end(); +})().catch(e => { console.error(e); process.exit(1); }); diff --git a/inspect_gallery_model_owner_candidates.js b/inspect_gallery_model_owner_candidates.js new file mode 100644 index 0000000..df60259 --- /dev/null +++ b/inspect_gallery_model_owner_candidates.js @@ -0,0 +1,61 @@ +const { Pool } = require('pg'); +require('dotenv').config({ path: '.env.local' }); + +const SYSTEM_USER_ID = '00000000-0000-0000-0000-000000000000'; + +(async () => { + const pool = new Pool({ connectionString: process.env.LOCAL_DB_URL }); + const client = await pool.connect(); + try { + const apiKeys = await client.query(` + SELECT id, user_id, provider, supplier_name, model_name, note, type, created_at + FROM user_api_keys + ORDER BY created_at DESC + LIMIT 200 + `); + + const modelCounts = await client.query(` + SELECT params->>'model' AS model, COUNT(*)::int AS count + FROM works + WHERE is_public = true + AND status = 'completed' + AND user_id = $1 + GROUP BY params->>'model' + ORDER BY count DESC + `, [SYSTEM_USER_ID]); + + const directMatches = await client.query(` + SELECT + w.params->>'model' AS work_model, + COUNT(*)::int AS work_count, + k.id AS api_key_id, + k.user_id, + p.email, + p.nickname, + k.provider, + k.supplier_name, + k.model_name, + k.note + FROM works w + JOIN user_api_keys k ON w.params->>'model' = CONCAT('custom:', k.id::text) + JOIN profiles p ON p.id = k.user_id + WHERE w.is_public = true + AND w.status = 'completed' + AND w.user_id = $1 + GROUP BY w.params->>'model', k.id, k.user_id, p.email, p.nickname, k.provider, k.supplier_name, k.model_name, k.note + ORDER BY work_count DESC + `, [SYSTEM_USER_ID]); + + console.log(JSON.stringify({ + userApiKeys: apiKeys.rows, + anonymousGalleryModelCounts: modelCounts.rows, + directMatches: directMatches.rows, + }, null, 2)); + } finally { + client.release(); + await pool.end(); + } +})().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/inspect_gallery_user_links.js b/inspect_gallery_user_links.js new file mode 100644 index 0000000..2c874d3 --- /dev/null +++ b/inspect_gallery_user_links.js @@ -0,0 +1,53 @@ +const { Pool } = require('pg'); +require('dotenv').config({ path: '.env.local' }); + +(async () => { + const pool = new Pool({ connectionString: process.env.LOCAL_DB_URL }); + const client = await pool.connect(); + try { + const summary = await client.query(` + SELECT + COUNT(*)::int AS total, + COUNT(*) FILTER (WHERE w.user_id IS NULL)::int AS null_user_id, + COUNT(*) FILTER (WHERE p.id IS NULL)::int AS missing_profile, + COUNT(*) FILTER (WHERE p.id IS NOT NULL)::int AS linked_profile + FROM works w + LEFT JOIN profiles p ON p.id = w.user_id + WHERE w.is_public = true AND w.status = 'completed' + `); + + const samples = await client.query(` + SELECT + w.id, + w.user_id, + w.title, + LEFT(COALESCE(w.prompt, ''), 80) AS prompt_preview, + w.params, + w.created_at + FROM works w + LEFT JOIN profiles p ON p.id = w.user_id + WHERE w.is_public = true AND w.status = 'completed' AND p.id IS NULL + ORDER BY w.created_at DESC + LIMIT 20 + `); + + const profileSamples = await client.query(` + SELECT id, email, nickname, role, created_at + FROM profiles + ORDER BY created_at DESC + LIMIT 20 + `); + + console.log(JSON.stringify({ + summary: summary.rows[0], + missingSamples: samples.rows, + profileSamples: profileSamples.rows, + }, null, 2)); + } finally { + client.release(); + await pool.end(); + } +})().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/inspect_payload.js b/inspect_payload.js new file mode 100644 index 0000000..d40d33d --- /dev/null +++ b/inspect_payload.js @@ -0,0 +1,9 @@ +const { Client } = require('pg'); +require('dotenv').config({ path: '/root/miaojingAI/.env.local' }); +const c = new Client({ connectionString: process.env.LOCAL_DB_URL }); +(async () => { + await c.connect(); + const r = await c.query(`select id, payload from generation_jobs order by created_at desc limit 3`); + for (const row of r.rows) { console.log('---', row.id); console.log(JSON.stringify(row.payload).slice(0, 1200)); } + await c.end(); +})().catch(e => { console.error(e); process.exit(1); }); diff --git a/inspect_recovery_candidates.js b/inspect_recovery_candidates.js new file mode 100644 index 0000000..55e1a5c --- /dev/null +++ b/inspect_recovery_candidates.js @@ -0,0 +1,111 @@ +const { Pool } = require('pg'); +require('dotenv').config({ path: '.env.local' }); + +const SYSTEM_USER_ID = '00000000-0000-0000-0000-000000000000'; + +(async () => { + const pool = new Pool({ connectionString: process.env.LOCAL_DB_URL }); + const client = await pool.connect(); + try { + const byModelOwner = await client.query(` + SELECT + COALESCE(w.params->>'model', '') AS model, + COALESCE(p.email, '[missing-profile]') AS email, + COALESCE(p.nickname, '') AS nickname, + w.user_id, + COUNT(*)::int AS count, + COUNT(*) FILTER (WHERE w.is_public = true)::int AS public_count, + COUNT(*) FILTER (WHERE w.is_public = false)::int AS private_count, + MIN(w.created_at) AS first_at, + MAX(w.created_at) AS last_at + FROM works w + LEFT JOIN profiles p ON p.id = w.user_id + WHERE w.status = 'completed' + GROUP BY model, w.user_id, p.email, p.nickname + ORDER BY model, count DESC + `); + + const orphanModelTotals = await client.query(` + SELECT params->>'model' AS model, COUNT(*)::int AS count + FROM works + WHERE status = 'completed' + AND is_public = true + AND user_id = $1 + GROUP BY params->>'model' + ORDER BY count DESC + `, [SYSTEM_USER_ID]); + + const ownersByPrompt = await client.query(` + WITH orphan AS ( + SELECT id, prompt, created_at + FROM works + WHERE status = 'completed' + AND is_public = true + AND user_id = $1 + AND COALESCE(prompt, '') <> '' + ), + owned AS ( + SELECT w.id, w.user_id, p.email, p.nickname, w.prompt, w.created_at + FROM works w + JOIN profiles p ON p.id = w.user_id + WHERE w.status = 'completed' + AND w.user_id <> $1 + AND COALESCE(w.prompt, '') <> '' + ) + SELECT + orphan.id AS orphan_id, + owned.user_id, + owned.email, + owned.nickname, + COUNT(*)::int AS matches, + MIN(ABS(EXTRACT(EPOCH FROM (owned.created_at - orphan.created_at))))::int AS best_seconds_apart + FROM orphan + JOIN owned ON owned.prompt = orphan.prompt + GROUP BY orphan.id, owned.user_id, owned.email, owned.nickname + ORDER BY matches DESC, best_seconds_apart + LIMIT 120 + `, [SYSTEM_USER_ID]); + + const maybeAdminByDates = await client.query(` + SELECT + w.id, + w.created_at, + w.params->>'model' AS model, + LEFT(w.prompt, 100) AS prompt, + ( + SELECT json_agg(json_build_object( + 'user_id', nearby.user_id, + 'email', p.email, + 'nickname', p.nickname, + 'seconds_apart', ABS(EXTRACT(EPOCH FROM (nearby.created_at - w.created_at)))::int, + 'prompt', LEFT(nearby.prompt, 80) + ) ORDER BY ABS(EXTRACT(EPOCH FROM (nearby.created_at - w.created_at)))) + FROM works nearby + JOIN profiles p ON p.id = nearby.user_id + WHERE nearby.user_id <> $1 + AND nearby.status = 'completed' + AND nearby.created_at BETWEEN w.created_at - INTERVAL '1 hour' AND w.created_at + INTERVAL '1 hour' + LIMIT 8 + ) AS nearby_owned + FROM works w + WHERE w.status = 'completed' + AND w.is_public = true + AND w.user_id = $1 + ORDER BY w.created_at DESC + LIMIT 80 + `, [SYSTEM_USER_ID]); + + console.log(JSON.stringify({ + orphanModelTotals: orphanModelTotals.rows, + byModelOwner: byModelOwner.rows, + ownersByPrompt: ownersByPrompt.rows, + nearbyOwnedByTime: maybeAdminByDates.rows, + }, null, 2)); + } finally { + client.release(); + await pool.end(); + } +})().catch(error => { + console.error(error); + process.exit(1); +}); diff --git a/inspect_work_link_candidates.js b/inspect_work_link_candidates.js new file mode 100644 index 0000000..43da2c9 --- /dev/null +++ b/inspect_work_link_candidates.js @@ -0,0 +1,59 @@ +const { Pool } = require('pg'); +require('dotenv').config({ path: '.env.local' }); + +(async () => { + const pool = new Pool({ connectionString: process.env.LOCAL_DB_URL }); + const client = await pool.connect(); + try { + const duplicates = await client.query(` + SELECT + public.id AS public_id, + public.user_id AS public_user_id, + private.id AS private_id, + private.user_id AS private_user_id, + p.email, + p.nickname, + public.result_url AS public_url, + private.result_url AS private_url, + LEFT(COALESCE(public.prompt, ''), 80) AS prompt_preview + FROM works public + JOIN works private + ON private.id <> public.id + AND private.user_id <> '00000000-0000-0000-0000-000000000000' + AND ( + private.result_url = public.result_url + OR private.thumbnail_url = public.thumbnail_url + OR ( + COALESCE(private.prompt, '') = COALESCE(public.prompt, '') + AND private.created_at BETWEEN public.created_at - INTERVAL '10 minutes' AND public.created_at + INTERVAL '10 minutes' + ) + ) + JOIN profiles p ON p.id = private.user_id + WHERE public.is_public = true + AND public.status = 'completed' + AND public.user_id = '00000000-0000-0000-0000-000000000000' + LIMIT 50 + `); + + const paramKeys = await client.query(` + SELECT id, params + FROM works + WHERE is_public = true + AND status = 'completed' + AND user_id = '00000000-0000-0000-0000-000000000000' + LIMIT 10 + `); + + console.log(JSON.stringify({ + duplicateCandidateCount: duplicates.rowCount, + duplicateCandidates: duplicates.rows, + paramSamples: paramKeys.rows, + }, null, 2)); + } finally { + client.release(); + await pool.end(); + } +})().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/model-config-migration.sql b/model-config-migration.sql new file mode 100644 index 0000000..0347862 --- /dev/null +++ b/model-config-migration.sql @@ -0,0 +1,57 @@ +CREATE TABLE IF NOT EXISTS api_providers ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + name VARCHAR(128) NOT NULL UNIQUE, + default_api_url TEXT, + default_model VARCHAR(255), + type VARCHAR(16) NOT NULL DEFAULT 'image', + website TEXT, + is_active BOOLEAN NOT NULL DEFAULT true, + sort_order INTEGER NOT NULL DEFAULT 0, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE TABLE IF NOT EXISTS model_recommendations ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + model_name VARCHAR(255) NOT NULL, + display_name VARCHAR(255), + type VARCHAR(16) NOT NULL DEFAULT 'image', + provider_id UUID REFERENCES api_providers(id) ON DELETE SET NULL, + is_active BOOLEAN NOT NULL DEFAULT true, + sort_order INTEGER NOT NULL DEFAULT 0, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE INDEX IF NOT EXISTS api_providers_active_sort_idx ON api_providers (is_active, sort_order); +CREATE INDEX IF NOT EXISTS model_recommendations_active_type_sort_idx ON model_recommendations (is_active, type, sort_order); +CREATE INDEX IF NOT EXISTS model_recommendations_provider_idx ON model_recommendations (provider_id); + +INSERT INTO api_providers (name, default_api_url, default_model, type, website, is_active, sort_order) +VALUES + ('硅基流动', 'https://api.siliconflow.cn/v1/images/generations', 'black-forest-labs/FLUX.1-schnell', 'image', 'https://cloud.siliconflow.cn', true, 10), + ('mozheAPI', 'https://openai.mozhevip.top', '', 'image', 'https://openai.mozhevip.top', true, 20), + ('OpenAI', 'https://api.openai.com/v1/images/generations', 'dall-e-3', 'image', NULL, true, 30), + ('Stability AI', 'https://api.stability.ai/v1/generation/stable-diffusion-xl/text-to-image', 'stable-diffusion-xl', 'image', NULL, true, 40), + ('Midjourney', '', 'midjourney-v6', 'image', NULL, true, 50), + ('Runway', 'https://api.runwayml.com/v1/image_to_video', 'gen-3-alpha', 'video', NULL, true, 60), + ('Pika', '', 'pika-1.0', 'video', NULL, true, 70), + ('Kling', '', 'kling-v1', 'video', NULL, true, 80), + ('DeepSeek', 'https://api.deepseek.com/v1/chat/completions', 'deepseek-chat', 'text', NULL, true, 90), + ('OpenAI GPT', 'https://api.openai.com/v1/chat/completions', 'gpt-4o', 'text', NULL, true, 100), + ('自定义', '', '', 'image', NULL, true, 999) +ON CONFLICT (name) DO UPDATE SET + default_api_url = EXCLUDED.default_api_url, + default_model = EXCLUDED.default_model, + type = EXCLUDED.type, + website = EXCLUDED.website, + is_active = EXCLUDED.is_active, + sort_order = EXCLUDED.sort_order, + updated_at = NOW(); + +INSERT INTO model_recommendations (model_name, display_name, type, provider_id, is_active, sort_order) +SELECT 'gpt-image-2', 'gpt-image-2', 'image', NULL, true, 10 +WHERE NOT EXISTS ( + SELECT 1 FROM model_recommendations + WHERE model_name = 'gpt-image-2' AND type = 'image' AND provider_id IS NULL +); diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..9edff1c --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,6 @@ +/// +/// +import "./.next/types/routes.d.ts"; + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 0000000..2f2ed30 --- /dev/null +++ b/next.config.ts @@ -0,0 +1,19 @@ +import type { NextConfig } from 'next'; + +const nextConfig: NextConfig = { + // outputFileTracingRoot: path.resolve(__dirname, '../../'), // Uncomment and add 'import path from "path"' if needed + /* config options here */ + poweredByHeader: false, + allowedDevOrigins: ['*.dev.coze.site'], + images: { + remotePatterns: [ + { + protocol: 'https', + hostname: '*', + pathname: '/**', + }, + ], + }, +}; + +export default nextConfig; diff --git a/package.json b/package.json new file mode 100644 index 0000000..38a1f9b --- /dev/null +++ b/package.json @@ -0,0 +1,113 @@ +{ + "name": "projects", + "version": "0.1.0", + "private": true, + "scripts": { + "build": "bash ./scripts/build.sh", + "build:with-install": "INSTALL_DEPS=1 bash ./scripts/build.sh", + "backup:create": "bash ./scripts/backup-create.sh", + "backup:list": "bash ./scripts/backup-list.sh", + "backup:restore": "bash ./scripts/backup-restore.sh", + "db:patch": "bash ./scripts/apply-database-patch.sh", + "dev": "bash ./scripts/dev.sh", + "preinstall": "npx only-allow pnpm", + "lint": "eslint", + "start": "bash ./scripts/start.sh", + "pm2:restart": "pm2 startOrReload ecosystem.config.cjs --update-env", + "pm2:save": "pm2 save", + "ts-check": "tsc -p tsconfig.json", + "check:boundaries": "bash ./scripts/check-boundaries.sh" + }, + "dependencies": { + "@aws-sdk/client-s3": "^3.958.0", + "@aws-sdk/lib-storage": "^3.958.0", + "@hookform/resolvers": "^5.2.2", + "@radix-ui/react-accordion": "^1.2.12", + "@radix-ui/react-alert-dialog": "^1.1.15", + "@radix-ui/react-aspect-ratio": "^1.1.8", + "@radix-ui/react-avatar": "^1.1.11", + "@radix-ui/react-checkbox": "^1.3.3", + "@radix-ui/react-collapsible": "^1.1.12", + "@radix-ui/react-context-menu": "^2.2.16", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.16", + "@radix-ui/react-hover-card": "^1.1.15", + "@radix-ui/react-label": "^2.1.8", + "@radix-ui/react-menubar": "^1.1.16", + "@radix-ui/react-navigation-menu": "^1.2.14", + "@radix-ui/react-popover": "^1.1.15", + "@radix-ui/react-progress": "^1.1.8", + "@radix-ui/react-radio-group": "^1.3.8", + "@radix-ui/react-scroll-area": "^1.2.10", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-separator": "^1.1.8", + "@radix-ui/react-slider": "^1.3.6", + "@radix-ui/react-slot": "^1.2.4", + "@radix-ui/react-switch": "^1.2.6", + "@radix-ui/react-tabs": "^1.1.13", + "@radix-ui/react-toggle": "^1.1.10", + "@radix-ui/react-toggle-group": "^1.1.11", + "@radix-ui/react-tooltip": "^1.2.8", + "@supabase/supabase-js": "2.95.3", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "coze-coding-dev-sdk": "^0.7.21", + "date-fns": "^4.1.0", + "dotenv": "^17.2.3", + "drizzle-orm": "^0.45.2", + "drizzle-zod": "^0.8.3", + "embla-carousel-react": "^8.6.0", + "input-otp": "^1.4.2", + "lucide-react": "^0.468.0", + "next": "16.2.4", + "next-themes": "^0.4.6", + "pg": "^8.17.2", + "react": "19.2.3", + "react-day-picker": "^9.13.0", + "react-dom": "19.2.3", + "react-hook-form": "^7.70.0", + "react-markdown": "^10.1.0", + "react-resizable-panels": "^4.2.0", + "remark-gfm": "^4.0.1", + "sharp": "^0.34.5", + "sonner": "^2.0.7", + "tailwind-merge": "^2.6.0", + "tw-animate-css": "^1.4.0", + "vaul": "^1.1.2", + "zod": "^4.3.5" + }, + "devDependencies": { + "@react-dev-inspector/babel-plugin": "^2.0.1", + "@react-dev-inspector/middleware": "^2.0.1", + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/pg": "^8.16.0", + "@types/react": "^19", + "@types/react-dom": "^19", + "drizzle-kit": "^0.31.8", + "eslint": "^9", + "eslint-config-next": "16.2.4", + "only-allow": "^1.2.2", + "react-dev-inspector": "^2.0.1", + "recharts": "2.15.4", + "shadcn": "latest", + "tailwindcss": "^4", + "tsup": "^8.3.5", + "tsx": "^4.19.2", + "typescript": "^5" + }, + "packageManager": "pnpm@9.0.0", + "pnpm": { + "overrides": { + "@langchain/core": "1.1.44", + "langsmith": "0.6.0", + "fast-xml-parser": "5.7.0", + "postcss": "8.5.10", + "uuid": "14.0.0" + } + }, + "engines": { + "pnpm": ">=9.0.0" + } +} diff --git a/persistence_migration.sql b/persistence_migration.sql new file mode 100644 index 0000000..c0b33b8 --- /dev/null +++ b/persistence_migration.sql @@ -0,0 +1,4 @@ +ALTER TABLE user_api_keys ADD COLUMN IF NOT EXISTS supplier_name VARCHAR(128); +ALTER TABLE user_api_keys ADD COLUMN IF NOT EXISTS type VARCHAR(16) NOT NULL DEFAULT 'image'; +CREATE INDEX IF NOT EXISTS user_api_keys_user_active_idx ON user_api_keys (user_id, is_active); +CREATE INDEX IF NOT EXISTS works_user_result_url_idx ON works (user_id, result_url); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..d9a03ee --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,13336 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + '@langchain/core': 1.1.44 + langsmith: 0.6.0 + fast-xml-parser: 5.7.0 + postcss: 8.5.10 + uuid: 14.0.0 + +importers: + + .: + dependencies: + '@aws-sdk/client-s3': + specifier: ^3.958.0 + version: 3.975.0 + '@aws-sdk/lib-storage': + specifier: ^3.958.0 + version: 3.975.0(@aws-sdk/client-s3@3.975.0) + '@hookform/resolvers': + specifier: ^5.2.2 + version: 5.2.2(react-hook-form@7.71.1(react@19.2.3)) + '@radix-ui/react-accordion': + specifier: ^1.2.12 + version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-alert-dialog': + specifier: ^1.1.15 + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-aspect-ratio': + specifier: ^1.1.8 + version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-avatar': + specifier: ^1.1.11 + version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-checkbox': + specifier: ^1.3.3 + version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-collapsible': + specifier: ^1.1.12 + version: 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-context-menu': + specifier: ^2.2.16 + version: 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-dialog': + specifier: ^1.1.15 + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-dropdown-menu': + specifier: ^2.1.16 + version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-hover-card': + specifier: ^1.1.15 + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-label': + specifier: ^2.1.8 + version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-menubar': + specifier: ^1.1.16 + version: 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-navigation-menu': + specifier: ^1.2.14 + version: 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-popover': + specifier: ^1.1.15 + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-progress': + specifier: ^1.1.8 + version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-radio-group': + specifier: ^1.3.8 + version: 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-scroll-area': + specifier: ^1.2.10 + version: 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-select': + specifier: ^2.2.6 + version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-separator': + specifier: ^1.1.8 + version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slider': + specifier: ^1.3.6 + version: 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': + specifier: ^1.2.4 + version: 1.2.4(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-switch': + specifier: ^1.2.6 + version: 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-tabs': + specifier: ^1.1.13 + version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-toggle': + specifier: ^1.1.10 + version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-toggle-group': + specifier: ^1.1.11 + version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-tooltip': + specifier: ^1.2.8 + version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@supabase/supabase-js': + specifier: 2.95.3 + version: 2.95.3 + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + cmdk: + specifier: ^1.1.1 + version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + coze-coding-dev-sdk: + specifier: ^0.7.21 + version: 0.7.21(openai@6.34.0(ws@8.19.0)(zod@4.3.6))(ws@8.19.0) + date-fns: + specifier: ^4.1.0 + version: 4.1.0 + dotenv: + specifier: ^17.2.3 + version: 17.2.3 + drizzle-orm: + specifier: ^0.45.2 + version: 0.45.2(@types/pg@8.16.0)(pg@8.17.2) + drizzle-zod: + specifier: ^0.8.3 + version: 0.8.3(drizzle-orm@0.45.2(@types/pg@8.16.0)(pg@8.17.2))(zod@4.3.6) + embla-carousel-react: + specifier: ^8.6.0 + version: 8.6.0(react@19.2.3) + input-otp: + specifier: ^1.4.2 + version: 1.4.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + lucide-react: + specifier: ^0.468.0 + version: 0.468.0(react@19.2.3) + next: + specifier: 16.2.4 + version: 16.2.4(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next-themes: + specifier: ^0.4.6 + version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + pg: + specifier: ^8.17.2 + version: 8.17.2 + react: + specifier: 19.2.3 + version: 19.2.3 + react-day-picker: + specifier: ^9.13.0 + version: 9.13.0(react@19.2.3) + react-dom: + specifier: 19.2.3 + version: 19.2.3(react@19.2.3) + react-hook-form: + specifier: ^7.70.0 + version: 7.71.1(react@19.2.3) + react-markdown: + specifier: ^10.1.0 + version: 10.1.0(@types/react@19.2.10)(react@19.2.3) + react-resizable-panels: + specifier: ^4.2.0 + version: 4.5.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + remark-gfm: + specifier: ^4.0.1 + version: 4.0.1 + sharp: + specifier: ^0.34.5 + version: 0.34.5 + sonner: + specifier: ^2.0.7 + version: 2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + tailwind-merge: + specifier: ^2.6.0 + version: 2.6.0 + tw-animate-css: + specifier: ^1.4.0 + version: 1.4.0 + vaul: + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + zod: + specifier: ^4.3.5 + version: 4.3.6 + devDependencies: + '@react-dev-inspector/babel-plugin': + specifier: ^2.0.1 + version: 2.0.1 + '@react-dev-inspector/middleware': + specifier: ^2.0.1 + version: 2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + '@tailwindcss/postcss': + specifier: ^4 + version: 4.1.18 + '@types/node': + specifier: ^20 + version: 20.19.30 + '@types/pg': + specifier: ^8.16.0 + version: 8.16.0 + '@types/react': + specifier: ^19 + version: 19.2.10 + '@types/react-dom': + specifier: ^19 + version: 19.2.3(@types/react@19.2.10) + drizzle-kit: + specifier: ^0.31.8 + version: 0.31.8 + eslint: + specifier: ^9 + version: 9.39.2(jiti@2.6.1) + eslint-config-next: + specifier: 16.2.4 + version: 16.2.4(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + only-allow: + specifier: ^1.2.2 + version: 1.2.2 + react-dev-inspector: + specifier: ^2.0.1 + version: 2.0.1(@types/react@19.2.10)(eslint@9.39.2(jiti@2.6.1))(react@19.2.3)(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + recharts: + specifier: 2.15.4 + version: 2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + shadcn: + specifier: latest + version: 3.7.0(@cfworker/json-schema@4.1.1)(@types/node@20.19.30)(hono@4.11.7)(typescript@5.9.3) + tailwindcss: + specifier: ^4 + version: 4.1.18 + tsup: + specifier: ^8.3.5 + version: 8.5.1(jiti@2.6.1)(postcss@8.5.10)(tsx@4.21.0)(typescript@5.9.3)(yaml@1.10.2) + tsx: + specifier: ^4.19.2 + version: 4.21.0 + typescript: + specifier: ^5 + version: 5.9.3 + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@antfu/ni@25.0.0': + resolution: {integrity: sha512-9q/yCljni37pkMr4sPrI3G4jqdIk074+iukc5aFJl7kmDCCsiJrbZ6zKxnES1Gwg+i9RcDZwvktl23puGslmvA==} + hasBin: true + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-s3@3.975.0': + resolution: {integrity: sha512-aF1M/iMD29BPcpxjqoym0YFa4WR9Xie1/IhVumwOGH6TB45DaqYO7vLwantDBcYNRn/cZH6DFHksO7RmwTFBhw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/client-sso@3.975.0': + resolution: {integrity: sha512-HpgJuleH7P6uILxzJKQOmlHdwaCY+xYC6VgRDzlwVEqU/HXjo4m2gOAyjUbpXlBOCWfGgMUzfBlNJ9z3MboqEQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/core@3.972.0': + resolution: {integrity: sha512-nEeUW2M9F+xdIaD98F5MBcQ4ITtykj3yKbgFZ6J0JtL3bq+Z90szQ6Yy8H/BLPYXTs3V4n9ifnBo8cprRDiE6A==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/core@3.973.3': + resolution: {integrity: sha512-ZbM2Xy8ytAcfnNpkBltr6Qdw36W/4NW5nZdZieCuTfacoBFpi/NYiwb8U05KNJvLKeZnrV9Vi696i+r2DQFORg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/crc64-nvme@3.972.0': + resolution: {integrity: sha512-ThlLhTqX68jvoIVv+pryOdb5coP1cX1/MaTbB9xkGDCbWbsqQcLqzPxuSoW1DCnAAIacmXCWpzUNOB9pv+xXQw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-env@3.972.2': + resolution: {integrity: sha512-wzH1EdrZsytG1xN9UHaK12J9+kfrnd2+c8y0LVoS4O4laEjPoie1qVK3k8/rZe7KOtvULzyMnO3FT4Krr9Z0Dg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-http@3.972.3': + resolution: {integrity: sha512-IbBGWhaxiEl64fznwh5PDEB0N7YJEAvK5b6nRtPVUKdKAHlOPgo6B9XB8mqWDs8Ct0oF/E34ZLiq2U0L5xDkrg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-ini@3.972.2': + resolution: {integrity: sha512-Jrb8sLm6k8+L7520irBrvCtdLxNtrG7arIxe9TCeMJt/HxqMGJdbIjw8wILzkEHLMIi4MecF2FbXCln7OT1Tag==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-login@3.972.2': + resolution: {integrity: sha512-mlaw2aiI3DrimW85ZMn3g7qrtHueidS58IGytZ+mbFpsYLK5wMjCAKZQtt7VatLMtSBG/dn/EY4njbnYXIDKeQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-node@3.972.2': + resolution: {integrity: sha512-Lz1J5IZdTjLYTVIcDP5DVDgi1xlgsF3p1cnvmbfKbjCRhQpftN2e2J4NFfRRvPD54W9+bZ8l5VipPXtTYK7aEg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-process@3.972.2': + resolution: {integrity: sha512-NLKLTT7jnUe9GpQAVkPTJO+cs2FjlQDt5fArIYS7h/Iw/CvamzgGYGFRVD2SE05nOHCMwafUSi42If8esGFV+g==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-sso@3.972.2': + resolution: {integrity: sha512-YpwDn8g3gCGUl61cCV0sRxP2pFIwg+ZsMfWQ/GalSyjXtRkctCMFA+u0yPb/Q4uTfNEiya1Y4nm0C5rIHyPW5Q==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.972.2': + resolution: {integrity: sha512-x9DAiN9Qz+NjJ99ltDiVQ8d511M/tuF/9MFbe2jUgo7HZhD6+x4S3iT1YcP07ndwDUjmzKGmeOEgE24k4qvfdg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/lib-storage@3.975.0': + resolution: {integrity: sha512-F6vrnZ3F7oqr3oONCIpx+uZDTwXWfh8sBoNNJollDn5pIn7TI+R+7WxVIXAMq/JWLXE6N8T3M6ogWk4Y4JWPPw==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@aws-sdk/client-s3': 3.975.0 + + '@aws-sdk/middleware-bucket-endpoint@3.972.1': + resolution: {integrity: sha512-YVvoitBdE8WOpHqIXvv49efT73F4bJ99XH2bi3Dn3mx7WngI4RwHwn/zF5i0q1Wdi5frGSCNF3vuh+pY817//w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-expect-continue@3.972.1': + resolution: {integrity: sha512-6lfl2/J/kutzw/RLu1kjbahsz4vrGPysrdxWaw8fkjLYG+6M6AswocIAZFS/LgAVi/IWRwPTx9YC0/NH2wDrSw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.972.1': + resolution: {integrity: sha512-kjVVREpqeUkYQsXr78AcsJbEUlxGH7+H6yS7zkjrnu6HyEVxbdSndkKX6VpKneFOihjCAhIXlk4wf3butDHkNQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-host-header@3.972.2': + resolution: {integrity: sha512-42hZ8jEXT2uR6YybCzNq9OomqHPw43YIfRfz17biZjMQA4jKSQUaHIl6VvqO2Ddl5904pXg2Yd/ku78S0Ikgog==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-location-constraint@3.972.1': + resolution: {integrity: sha512-YisPaCbvBk9gY5aUI8jDMDKXsLZ9Fet0WYj1MviK8tZYMgxBIYHM6l3O/OHaAIujojZvamd9F3haYYYWp5/V3w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-logger@3.972.2': + resolution: {integrity: sha512-iUzdXKOgi4JVDDEG/VvoNw50FryRCEm0qAudw12DcZoiNJWl0rN6SYVLcL1xwugMfQncCXieK5UBlG6mhH7iYA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.972.2': + resolution: {integrity: sha512-/mzlyzJDtngNFd/rAYvqx29a2d0VuiYKN84Y/Mu9mGw7cfMOCyRK+896tb9wV6MoPRHUX7IXuKCIL8nzz2Pz5A==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.972.0': + resolution: {integrity: sha512-0bcKFXWx+NZ7tIlOo7KjQ+O2rydiHdIQahrq+fN6k9Osky29v17guy68urUKfhTobR6iY6KvxkroFWaFtTgS5w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.972.2': + resolution: {integrity: sha512-5f9x9/G+StE8+7wd9EVDF3d+J74xK+WBA3FhZwLSkf3pHFGLKzlmUfxJJE1kkXkbj/j/H+Dh3zL/hrtQE9hNsg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-ssec@3.972.1': + resolution: {integrity: sha512-fLtRTPd/MxJT2drJKft2GVGKm35PiNEeQ1Dvz1vc/WhhgAteYrp4f1SfSgjgLaYWGMExESJL4bt8Dxqp6tVsog==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-user-agent@3.972.3': + resolution: {integrity: sha512-zq6aTiO/BiAIOA8EH8nB+wYvvnZ14Md9Gomm5DDhParshVEVglAyNPO5ADK4ZXFQbftIoO+Vgcvf4gewW/+iYQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/nested-clients@3.975.0': + resolution: {integrity: sha512-OkeFHPlQj2c/Y5bQGkX14pxhDWUGUFt3LRHhjcDKsSCw6lrxKcxN3WFZN0qbJwKNydP+knL5nxvfgKiCLpTLRA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/region-config-resolver@3.972.2': + resolution: {integrity: sha512-/7vRBsfmiOlg2X67EdKrzzQGw5/SbkXb7ALHQmlQLkZh8qNgvS2G2dDC6NtF3hzFlpP3j2k+KIEtql/6VrI6JA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.972.0': + resolution: {integrity: sha512-2udiRijmjpN81Pvajje4TsjbXDZNP6K9bYUanBYH8hXa/tZG5qfGCySD+TyX0sgDxCQmEDMg3LaQdfjNHBDEgQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.975.0': + resolution: {integrity: sha512-AWQt64hkVbDQ+CmM09wnvSk2mVyH4iRROkmYkr3/lmUtFNbE2L/fnw26sckZnUcFCsHPqbkQrcsZAnTcBLbH4w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/types@3.972.0': + resolution: {integrity: sha512-U7xBIbLSetONxb2bNzHyDgND3oKGoIfmknrEVnoEU4GUSs+0augUOIn9DIWGUO2ETcRFdsRUnmx9KhPT9Ojbug==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/types@3.973.1': + resolution: {integrity: sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-arn-parser@3.972.0': + resolution: {integrity: sha512-RM5Mmo/KJ593iMSrALlHEOcc9YOIyOsDmS5x2NLOMdEmzv1o00fcpAkCQ02IGu1eFneBFT7uX0Mpag0HI+Cz2g==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-arn-parser@3.972.1': + resolution: {integrity: sha512-XnNit6H9PPHhqUXW/usjX6JeJ6Pm8ZNqivTjmNjgWHeOfVpblUc/MTic02UmCNR0jJLPjQ3mBKiMen0tnkNQjQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-endpoints@3.972.0': + resolution: {integrity: sha512-6JHsl1V/a1ZW8D8AFfd4R52fwZPnZ5H4U6DS8m/bWT8qad72NvbOFAC7U2cDtFs2TShqUO3TEiX/EJibtY3ijg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-locate-window@3.965.4': + resolution: {integrity: sha512-H1onv5SkgPBK2P6JR2MjGgbOnttoNzSPIRoeZTNPZYyaplwGg50zS3amXvXqF0/qfXpWEC9rLWU564QTB9bSog==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-user-agent-browser@3.972.2': + resolution: {integrity: sha512-gz76bUyebPZRxIsBHJUd/v+yiyFzm9adHbr8NykP2nm+z/rFyvQneOHajrUejtmnc5tTBeaDPL4X25TnagRk4A==} + + '@aws-sdk/util-user-agent-node@3.972.2': + resolution: {integrity: sha512-vnxOc4C6AR7hVbwyFo1YuH0GB6dgJlWt8nIOOJpnzJAWJPkUMPJ9Zv2lnKsSU7TTZbhP2hEO8OZ4PYH59XFv8Q==} + engines: {node: '>=20.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.972.0': + resolution: {integrity: sha512-POaGMcXnozzqBUyJM3HLUZ9GR6OKJWPGJEmhtTnxZXt8B6JcJ/6K3xRJ5H/j8oovVLz8Wg6vFxAHv8lvuASxMg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/xml-builder@3.972.2': + resolution: {integrity: sha512-jGOOV/bV1DhkkUhHiZ3/1GZ67cZyOXaDb7d1rYD6ZiXf5V9tBNOcgqXwRRPvrCbYaFRa1pPMFb3ZjqjWpR3YfA==} + engines: {node: '>=20.0.0'} + + '@aws/lambda-invoke-store@0.2.3': + resolution: {integrity: sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==} + engines: {node: '>=18.0.0'} + + '@babel/code-frame@7.28.6': + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.6': + resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.6': + resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.6': + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.6': + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.20.5': + resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + engines: {node: '>=6.9.0'} + + '@cfworker/json-schema@4.1.1': + resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==} + + '@date-fns/tz@1.4.1': + resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} + + '@dotenvx/dotenvx@1.52.0': + resolution: {integrity: sha512-CaQcc8JvtzQhUSm9877b6V4Tb7HCotkcyud9X2YwdqtQKwgljkMRwU96fVYKnzN3V0Hj74oP7Es+vZ0mS+Aa1w==} + hasBin: true + + '@drizzle-team/brocli@0.10.2': + resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} + + '@ecies/ciphers@0.2.5': + resolution: {integrity: sha512-GalEZH4JgOMHYYcYmVqnFirFsjZHeoGMDt9IxEnM9F7GRUUyUksJ7Ou53L83WHJq3RWKD3AcBpo0iQh0oMpf8A==} + engines: {bun: '>=1', deno: '>=2', node: '>=16'} + peerDependencies: + '@noble/ciphers': ^1.0.0 + + '@emnapi/core@1.8.1': + resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} + + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + + '@esbuild-kit/core-utils@3.3.2': + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild-kit/esm-loader@2.6.5': + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.1': + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.3': + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.2': + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.7.4': + resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==} + + '@floating-ui/dom@1.7.5': + resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==} + + '@floating-ui/react-dom@2.1.7': + resolution: {integrity: sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@hono/node-server@1.19.9': + resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==} + engines: {node: '>=18.14.1'} + peerDependencies: + hono: ^4 + + '@hookform/resolvers@5.2.2': + resolution: {integrity: sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==} + peerDependencies: + react-hook-form: ^7.55.0 + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} + + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@langchain/core@1.1.44': + resolution: {integrity: sha512-RePW1IjGCHr9ua2vcby3aE8mOOz3EnwDZxMEGbNDT91kf14eqkJqxDXvaZFviGdcN9DTrxM5RPQNAHmwSm4tbg==} + engines: {node: '>=20'} + + '@langchain/openai@1.4.4': + resolution: {integrity: sha512-mRr/X5rvlwPj6cSXPxbL+CtOqYANO1/+CQ3Z+5t48kWnrlgPYOazmA+UAWvqQOuwJ6LaYn3SFrt43rR4lte/Ow==} + engines: {node: '>=20'} + peerDependencies: + '@langchain/core': 1.1.44 + + '@modelcontextprotocol/sdk@1.25.3': + resolution: {integrity: sha512-vsAMBMERybvYgKbg/l4L1rhS7VXV1c0CtyJg72vwxONVX0l4ZfKVAnZEWTQixJGTzKnELjQ59e4NbdFDALRiAQ==} + engines: {node: '>=18'} + peerDependencies: + '@cfworker/json-schema': ^4.1.1 + zod: ^3.25 || ^4.0 + peerDependenciesMeta: + '@cfworker/json-schema': + optional: true + + '@mswjs/interceptors@0.40.0': + resolution: {integrity: sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==} + engines: {node: '>=18'} + + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + + '@next/env@16.2.4': + resolution: {integrity: sha512-dKkkOzOSwFYe5RX6y26fZgkSpVAlIOJKQHIiydQcrWH6y/97+RceSOAdjZ14Qa3zLduVUy0TXcn+EiM6t4rPgw==} + + '@next/eslint-plugin-next@16.2.4': + resolution: {integrity: sha512-tOX826JJ96gYK/go18sPUgMq9FK1tqxBFfUCEufJb5XIkWFFmpgU7mahJANKGkHs7F41ir3tReJ3Lv5La0RvhA==} + + '@next/swc-darwin-arm64@16.2.4': + resolution: {integrity: sha512-OXTFFox5EKN1Ym08vfrz+OXxmCcEjT4SFMbNRsWZE99dMqt2Kcusl5MqPXcW232RYkMLQTy0hqgAMEsfEd/l2A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.2.4': + resolution: {integrity: sha512-XhpVnUfmYWvD3YrXu55XdcAkQtOnvaI6wtQa8fuF5fGoKoxIUZ0kWPtcOfqJEWngFF/lOS9l3+O9CcownhiQxQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.2.4': + resolution: {integrity: sha512-Mx/tjlNA3G8kg14QvuGAJ4xBwPk1tUHq56JxZ8CXnZwz1Etz714soCEzGQQzVMz4bEnGPowzkV6Xrp6wAkEWOQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@16.2.4': + resolution: {integrity: sha512-iVMMp14514u7Nup2umQS03nT/bN9HurK8ufylC3FZNykrwjtx7V1A7+4kvhbDSCeonTVqV3Txnv0Lu+m2oDXNg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@16.2.4': + resolution: {integrity: sha512-EZOvm1aQWgnI/N/xcWOlnS3RQBk0VtVav5Zo7n4p0A7UKyTDx047k8opDbXgBpHl4CulRqRfbw3QrX2w5UOXMQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@16.2.4': + resolution: {integrity: sha512-h9FxsngCm9cTBf71AR4fGznDEDx1hS7+kSEiIRjq5kO1oXWm07DxVGZjCvk0SGx7TSjlUqhI8oOyz7NfwAdPoA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@16.2.4': + resolution: {integrity: sha512-3NdJV5OXMSOeJYijX+bjaLge3mJBlh4ybydbT4GFoB/2hAojWHtMhl3CYlYoMrjPuodp0nzFVi4Tj2+WaMg+Ow==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@16.2.4': + resolution: {integrity: sha512-kMVGgsqhO5YTYODD9IPGGhA6iprWidQckK3LmPeW08PIFENRmgfb4MjXHO+p//d+ts2rpjvK5gXWzXSMrPl9cw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@noble/ciphers@1.3.0': + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.7': + resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@nodable/entities@2.1.0': + resolution: {integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@open-draft/deferred-promise@2.2.0': + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + + '@open-draft/logger@0.3.0': + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + + '@open-draft/until@2.1.0': + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + + '@radix-ui/react-accordion@1.2.12': + resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} + 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 + + '@radix-ui/react-alert-dialog@1.1.15': + resolution: {integrity: sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==} + 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 + + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + 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 + + '@radix-ui/react-aspect-ratio@1.1.8': + resolution: {integrity: sha512-5nZrJTF7gH+e0nZS7/QxFz6tJV4VimhQb1avEgtsJxvvIp5JilL+c58HICsKzPxghdwaDt48hEfPM1au4zGy+w==} + 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 + + '@radix-ui/react-avatar@1.1.11': + resolution: {integrity: sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q==} + 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 + + '@radix-ui/react-checkbox@1.3.3': + resolution: {integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==} + 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 + + '@radix-ui/react-collapsible@1.1.12': + resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} + 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 + + '@radix-ui/react-collection@1.1.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} + 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 + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context-menu@2.2.16': + resolution: {integrity: sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==} + 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 + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.3': + resolution: {integrity: sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.15': + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} + 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 + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + 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 + + '@radix-ui/react-dropdown-menu@2.1.16': + resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} + 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 + + '@radix-ui/react-focus-guards@1.1.3': + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + 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 + + '@radix-ui/react-hover-card@1.1.15': + resolution: {integrity: sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==} + 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 + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.1.8': + resolution: {integrity: sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==} + 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 + + '@radix-ui/react-menu@2.1.16': + resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} + 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 + + '@radix-ui/react-menubar@1.1.16': + resolution: {integrity: sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==} + 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 + + '@radix-ui/react-navigation-menu@1.2.14': + resolution: {integrity: sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==} + 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 + + '@radix-ui/react-popover@1.1.15': + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} + 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 + + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + 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 + + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + 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 + + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + 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 + + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + 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 + + '@radix-ui/react-primitive@2.1.4': + resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==} + 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 + + '@radix-ui/react-progress@1.1.8': + resolution: {integrity: sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==} + 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 + + '@radix-ui/react-radio-group@1.3.8': + resolution: {integrity: sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==} + 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 + + '@radix-ui/react-roving-focus@1.1.11': + resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} + 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 + + '@radix-ui/react-scroll-area@1.2.10': + resolution: {integrity: sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==} + 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 + + '@radix-ui/react-select@2.2.6': + resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==} + 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 + + '@radix-ui/react-separator@1.1.8': + resolution: {integrity: sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g==} + 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 + + '@radix-ui/react-slider@1.3.6': + resolution: {integrity: sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==} + 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 + + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.4': + resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.2.6': + resolution: {integrity: sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==} + 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 + + '@radix-ui/react-tabs@1.1.13': + resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==} + 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 + + '@radix-ui/react-toggle-group@1.1.11': + resolution: {integrity: sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==} + 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 + + '@radix-ui/react-toggle@1.1.10': + resolution: {integrity: sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==} + 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 + + '@radix-ui/react-tooltip@1.2.8': + resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} + 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 + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-is-hydrated@0.1.0': + resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + 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 + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@react-dev-inspector/babel-plugin@2.0.1': + resolution: {integrity: sha512-V2MzN9dj3uZu6NvAjSxXwa3+FOciVIuwAUwPLpO6ji5xpUyx8E6UiEng1QqzttdpacKHFKtkNYjtQAE+Lsqa5A==} + engines: {node: '>=12.0.0'} + + '@react-dev-inspector/middleware@2.0.1': + resolution: {integrity: sha512-qDMtBzAxNNAX01jjU1THZVuNiVB7J1Hjk42k8iLSSwfinc3hk667iqgdzeq1Za1a0V2bF5Ev6D4+nkZ+E1YUrQ==} + engines: {node: '>=12.0.0'} + + '@react-dev-inspector/umi3-plugin@2.0.1': + resolution: {integrity: sha512-lRw65yKQdI/1BwrRXWJEHDJel4DWboOartGmR3S5xiTF+EiOLjmndxdA5LoVSdqbcggdtq5SWcsoZqI0TkhH7Q==} + engines: {node: '>=12.0.0'} + + '@react-dev-inspector/umi4-plugin@2.0.1': + resolution: {integrity: sha512-vTefsJVAZsgpuO9IZ1ZFIoyryVUU+hjV8OPD8DfDU+po5LjVXc5Uncn+MkFOsT24AMpNdDvCnTRYiuSkFn8EsA==} + engines: {node: '>=12.0.0'} + + '@react-dev-inspector/vite-plugin@2.0.1': + resolution: {integrity: sha512-J1eI7cIm2IXE6EwhHR1OyoefvobUJEn/vJWEBwOM5uW4JkkLwuVoV9vk++XJyAmKUNQ87gdWZvSWrI2LjfrSug==} + engines: {node: '>=12.0.0'} + + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + cpu: [x64] + os: [win32] + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@smithy/abort-controller@4.2.8': + resolution: {integrity: sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==} + engines: {node: '>=18.0.0'} + + '@smithy/chunked-blob-reader-native@4.2.1': + resolution: {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} + engines: {node: '>=18.0.0'} + + '@smithy/chunked-blob-reader@5.2.0': + resolution: {integrity: sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.4.6': + resolution: {integrity: sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.22.0': + resolution: {integrity: sha512-6vjCHD6vaY8KubeNw2Fg3EK0KLGQYdldG4fYgQmA0xSW0dJ8G2xFhSOdrlUakWVoP5JuWHtFODg3PNd/DN3FDA==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.2.8': + resolution: {integrity: sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-codec@4.2.8': + resolution: {integrity: sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.2.8': + resolution: {integrity: sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.3.8': + resolution: {integrity: sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@4.2.8': + resolution: {integrity: sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-universal@4.2.8': + resolution: {integrity: sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.3.9': + resolution: {integrity: sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-blob-browser@4.2.9': + resolution: {integrity: sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.2.8': + resolution: {integrity: sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-stream-node@4.2.8': + resolution: {integrity: sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.2.8': + resolution: {integrity: sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.2.0': + resolution: {integrity: sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==} + engines: {node: '>=18.0.0'} + + '@smithy/md5-js@4.2.8': + resolution: {integrity: sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.2.8': + resolution: {integrity: sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@4.4.12': + resolution: {integrity: sha512-9JMKHVJtW9RysTNjcBZQHDwB0p3iTP6B1IfQV4m+uCevkVd/VuLgwfqk5cnI4RHcp4cPwoIvxQqN4B1sxeHo8Q==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.4.29': + resolution: {integrity: sha512-bmTn75a4tmKRkC5w61yYQLb3DmxNzB8qSVu9SbTYqW6GAL0WXO2bDZuMAn/GJSbOdHEdjZvWxe+9Kk015bw6Cg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@4.2.9': + resolution: {integrity: sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@4.2.8': + resolution: {integrity: sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.3.8': + resolution: {integrity: sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.4.8': + resolution: {integrity: sha512-q9u+MSbJVIJ1QmJ4+1u+cERXkrhuILCBDsJUBAW1MPE6sFonbCNaegFuwW9ll8kh5UdyY3jOkoOGlc7BesoLpg==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@4.2.8': + resolution: {integrity: sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.3.8': + resolution: {integrity: sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@4.2.8': + resolution: {integrity: sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@4.2.8': + resolution: {integrity: sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@4.2.8': + resolution: {integrity: sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.4.3': + resolution: {integrity: sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.3.8': + resolution: {integrity: sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.11.1': + resolution: {integrity: sha512-SERgNg5Z1U+jfR6/2xPYjSEHY1t3pyTHC/Ma3YQl6qWtmiL42bvNId3W/oMUWIwu7ekL2FMPdqAmwbQegM7HeQ==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.12.0': + resolution: {integrity: sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.2.8': + resolution: {integrity: sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.3.0': + resolution: {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.2.0': + resolution: {integrity: sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.2.1': + resolution: {integrity: sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.2.0': + resolution: {integrity: sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@4.2.0': + resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.3.28': + resolution: {integrity: sha512-/9zcatsCao9h6g18p/9vH9NIi5PSqhCkxQ/tb7pMgRFnqYp9XUOyOlGPDMHzr8n5ih6yYgwJEY2MLEobUgi47w==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.2.31': + resolution: {integrity: sha512-JTvoApUXA5kbpceI2vuqQzRjeTbLpx1eoa5R/YEZbTgtxvIB7AQZxFJ0SEyfCpgPCyVV9IT7we+ytSeIB3CyWA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.2.8': + resolution: {integrity: sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@4.2.0': + resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.2.8': + resolution: {integrity: sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.2.8': + resolution: {integrity: sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.5.10': + resolution: {integrity: sha512-jbqemy51UFSZSp2y0ZmRfckmrzuKww95zT9BYMmuJ8v3altGcqjwoV1tzpOwuHaKrwQrCjIzOib499ymr2f98g==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@4.2.0': + resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.2.0': + resolution: {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-waiter@4.2.8': + resolution: {integrity: sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==} + engines: {node: '>=18.0.0'} + + '@smithy/uuid@1.1.0': + resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} + engines: {node: '>=18.0.0'} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@standard-schema/utils@0.3.0': + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} + + '@supabase/auth-js@2.95.3': + resolution: {integrity: sha512-vD2YoS8E2iKIX0F7EwXTmqhUpaNsmbU6X2R0/NdFcs02oEfnHyNP/3M716f3wVJ2E5XHGiTFXki6lRckhJ0Thg==} + engines: {node: '>=20.0.0'} + + '@supabase/functions-js@2.95.3': + resolution: {integrity: sha512-uTuOAKzs9R/IovW1krO0ZbUHSJnsnyJElTXIRhjJTqymIVGcHzkAYnBCJqd7468Fs/Foz1BQ7Dv6DCl05lr7ig==} + engines: {node: '>=20.0.0'} + + '@supabase/postgrest-js@2.95.3': + resolution: {integrity: sha512-LTrRBqU1gOovxRm1vRXPItSMPBmEFqrfTqdPTRtzOILV4jPSueFz6pES5hpb4LRlkFwCPRmv3nQJ5N625V2Xrg==} + engines: {node: '>=20.0.0'} + + '@supabase/realtime-js@2.95.3': + resolution: {integrity: sha512-D7EAtfU3w6BEUxDACjowWNJo/ZRo7sDIuhuOGKHIm9FHieGeoJV5R6GKTLtga/5l/6fDr2u+WcW/m8I9SYmaIw==} + engines: {node: '>=20.0.0'} + + '@supabase/storage-js@2.95.3': + resolution: {integrity: sha512-4GxkJiXI3HHWjxpC3sDx1BVrV87O0hfX+wvJdqGv67KeCu+g44SPnII8y0LL/Wr677jB7tpjAxKdtVWf+xhc9A==} + engines: {node: '>=20.0.0'} + + '@supabase/supabase-js@2.95.3': + resolution: {integrity: sha512-Fukw1cUTQ6xdLiHDJhKKPu6svEPaCEDvThqCne3OaQyZvuq2qjhJAd91kJu3PXLG18aooCgYBaB6qQz35hhABg==} + engines: {node: '>=20.0.0'} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@tailwindcss/node@4.1.18': + resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} + + '@tailwindcss/oxide-android-arm64@4.1.18': + resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.18': + resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.18': + resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.18': + resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.1.18': + resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.1.18': + resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.18': + resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.1.18': + resolution: {integrity: sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==} + + '@ts-morph/common@0.27.0': + resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-shape@3.1.8': + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@20.19.30': + resolution: {integrity: sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==} + + '@types/node@20.19.39': + resolution: {integrity: sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/pg@8.16.0': + resolution: {integrity: sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==} + + '@types/phoenix@1.6.7': + resolution: {integrity: sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==} + + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react-reconciler@0.33.0': + resolution: {integrity: sha512-HZOXsKT0tGI9LlUw2LuedXsVeB88wFa536vVL0M6vE8zN63nI+sSr1ByxmPToP5K5bukaVscyeCJcF9guVNJ1g==} + peerDependencies: + '@types/react': '*' + + '@types/react@19.2.10': + resolution: {integrity: sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==} + + '@types/statuses@2.0.6': + resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/validate-npm-package-name@4.0.2': + resolution: {integrity: sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@typescript-eslint/eslint-plugin@8.54.0': + resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.54.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.54.0': + resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.54.0': + resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.54.0': + resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.54.0': + resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.54.0': + resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.54.0': + resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.54.0': + resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.54.0': + resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.54.0': + resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + acorn-import-phases@1.0.4: + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} + engines: {node: '>=10.13.0'} + peerDependencies: + acorn: ^8.14.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} + engines: {node: '>=14'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.11.1: + resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} + engines: {node: '>=4'} + + axios@1.15.2: + resolution: {integrity: sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.10.21: + resolution: {integrity: sha512-Q+rUQ7Uz8AHM7DEaNdwvfFCTq7a43lNTzuS94eiWqwyxfV/wJv+oUivef51T91mmRY4d4A1u9rcSvkeufCVXlA==} + engines: {node: '>=6.0.0'} + hasBin: true + + baseline-browser-mapping@2.9.18: + resolution: {integrity: sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==} + hasBin: true + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + body-parser@2.2.2: + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} + engines: {node: '>=18'} + + bowser@2.13.1: + resolution: {integrity: sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001766: + resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} + + caniuse-lite@1.0.30001790: + resolution: {integrity: sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + cmdk@1.1.1: + resolution: {integrity: sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + + code-block-writer@13.0.3: + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} + engines: {node: '>=20'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + content-disposition@1.0.1: + resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} + engines: {node: '>=18'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} + + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} + engines: {node: '>= 0.10'} + + cosmiconfig@6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + coze-coding-dev-sdk@0.7.21: + resolution: {integrity: sha512-yO+vhA4+4ksF6KzPqISFob9CaEC9SrXAzkwh6nVot42kVoKTaK170lKhs3W2tkxVW6ejA+bi71bDhae9wWgNog==} + engines: {node: '>=18.0.0'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + date-fns-jalali@4.1.0-0: + resolution: {integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==} + + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + + dedent@1.7.1: + resolution: {integrity: sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.4.0: + resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} + engines: {node: '>=18'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + detect-port-alt@1.1.6: + resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} + engines: {node: '>= 4.2.1'} + hasBin: true + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff@8.0.3: + resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dotenv@17.2.3: + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} + engines: {node: '>=12'} + + drizzle-kit@0.31.8: + resolution: {integrity: sha512-O9EC/miwdnRDY10qRxM8P3Pg8hXe3LyU4ZipReKOgTwn4OqANmftj8XJz1UPUAS6NMHf0E2htjsbQujUTkncCg==} + hasBin: true + + drizzle-orm@0.45.2: + resolution: {integrity: sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=4' + '@electric-sql/pglite': '>=0.2.0' + '@libsql/client': '>=0.10.0' + '@libsql/client-wasm': '>=0.10.0' + '@neondatabase/serverless': '>=0.10.0' + '@op-engineering/op-sqlite': '>=2' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1.13' + '@prisma/client': '*' + '@tidbcloud/serverless': '*' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/sql.js': '*' + '@upstash/redis': '>=1.34.7' + '@vercel/postgres': '>=0.8.0' + '@xata.io/client': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=14.0.0' + gel: '>=2' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + prisma: '*' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + '@libsql/client-wasm': + optional: true + '@neondatabase/serverless': + optional: true + '@op-engineering/op-sqlite': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@prisma/client': + optional: true + '@tidbcloud/serverless': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@upstash/redis': + optional: true + '@vercel/postgres': + optional: true + '@xata.io/client': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + gel: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + prisma: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + + drizzle-zod@0.8.3: + resolution: {integrity: sha512-66yVOuvGhKJnTdiqj1/Xaaz9/qzOdRJADpDa68enqS6g3t0kpNkwNYjUuaeXgZfO/UWuIM9HIhSlJ6C5ZraMww==} + peerDependencies: + drizzle-orm: '>=0.36.0' + zod: ^3.25.0 || ^4.0.0 + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eciesjs@0.4.17: + resolution: {integrity: sha512-TOOURki4G7sD1wDCjj7NfLaXZZ49dFOeEb5y39IXpb8p0hRzVvfvzZHOi5JcT+PpyAbi/Y+lxPb8eTag2WYH8w==} + engines: {bun: '>=1', deno: '>=2', node: '>=16'} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.279: + resolution: {integrity: sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg==} + + electron-to-chromium@1.5.343: + resolution: {integrity: sha512-YHnQ3MXI08icvL9ZKnEBy05F2EQ8ob01UaMOuMbM8l+4UcAq6MPPbBTJBbsBUg3H8JeZNt+O4fjsoWth3p6IFg==} + + embla-carousel-react@8.6.0: + resolution: {integrity: sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==} + peerDependencies: + react: ^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + embla-carousel-reactive-utils@8.6.0: + resolution: {integrity: sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==} + peerDependencies: + embla-carousel: 8.6.0 + + embla-carousel@8.6.0: + resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + enhanced-resolve@5.18.4: + resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} + engines: {node: '>=10.13.0'} + + enhanced-resolve@5.20.1: + resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} + engines: {node: '>=10.13.0'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.2.2: + resolution: {integrity: sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==} + engines: {node: '>= 0.4'} + + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-next@16.2.4: + resolution: {integrity: sha512-A6ekXYFj/YQxBPMl45g3e+U8zJo+X2+ZQwcz34pPKjpc/3S4roBA2Rd9xWB4FKuSxhofo1/95WjzmUY+wHrOhg==} + peerDependencies: + eslint: '>=9.0.0' + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-react-hooks@7.0.1: + resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.39.2: + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.7: + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} + engines: {node: '>=18.0.0'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@9.6.1: + resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} + engines: {node: ^18.19.0 || >=20.5.0} + + express-rate-limit@7.5.1: + resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} + engines: {node: '>= 16'} + peerDependencies: + express: '>= 4.11' + + express@5.2.1: + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} + engines: {node: '>= 18'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-equals@5.4.0: + resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==} + engines: {node: '>=6.0.0'} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + + fast-xml-builder@1.1.5: + resolution: {integrity: sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==} + + fast-xml-parser@5.7.0: + resolution: {integrity: sha512-MTcrUoRQ1GSQ9iG3QJzBGquYYYeA7piZaJoIWbPFGbRn6Jj6z7xgoAyi4DrZX4y2ZIQQBF59gc/zmvvejjgoFQ==} + hasBin: true + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + filesize@8.0.7: + resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} + engines: {node: '>= 0.4.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@2.1.1: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + fork-ts-checker-webpack-plugin@6.5.3: + resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + fs-extra@11.3.3: + resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} + engines: {node: '>=14.14'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-monkey@1.1.0: + resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + fuzzysort@3.1.0: + resolution: {integrity: sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ==} + + fzf@0.5.2: + resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-own-enumerable-keys@1.0.0: + resolution: {integrity: sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==} + engines: {node: '>=14.16'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphql@16.12.0: + resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + headers-polyfill@4.0.3: + resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + + hono@4.11.7: + resolution: {integrity: sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==} + engines: {node: '>=16.9.0'} + + hotkeys-js@3.13.15: + resolution: {integrity: sha512-gHh8a/cPTCpanraePpjRxyIlxDFrIhYqjuh01UHWEwDpglJKCnvLW8kqSx5gQtOuSsJogNZXLhOdbSExpgUiqg==} + + html-url-attributes@3.0.1: + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + + iceberg-js@0.8.1: + resolution: {integrity: sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==} + engines: {node: '>=20.0.0'} + + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {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. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + + input-otp@1.4.2: + resolution: {integrity: sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==} + 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 + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@3.0.0: + resolution: {integrity: sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==} + engines: {node: '>=12'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-regexp@3.1.0: + resolution: {integrity: sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==} + engines: {node: '>=12'} + + is-root@2.1.0: + resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} + engines: {node: '>=6'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + jose@6.1.3: + resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + js-tiktoken@1.0.21: + resolution: {integrity: sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema-typed@8.0.2: + resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + langsmith@0.6.0: + resolution: {integrity: sha512-GGaj5IMRfLv2HXXFzGk9diISMYLTpSTh6fzCZGKxWYW/NqEztIFtnXLq6G/RVhzFRmCykLap1fuC67LVKoQLcg==} + peerDependencies: + '@opentelemetry/api': '*' + '@opentelemetry/exporter-trace-otlp-proto': '*' + '@opentelemetry/sdk-trace-base': '*' + openai: '*' + ws: '>=7' + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@opentelemetry/exporter-trace-otlp-proto': + optional: true + '@opentelemetry/sdk-trace-base': + optional: true + openai: + optional: true + ws: + optional: true + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-android-arm64@1.30.2: + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.30.2: + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.2: + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.2: + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.2: + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.2: + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.30.2: + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.30.2: + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.30.2: + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.30.2: + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.2: + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.2: + resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + engines: {node: '>= 12.0.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} + engines: {node: '>=6.11.5'} + + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lucide-react@0.468.0: + resolution: {integrity: sha512-6koYRhnM2N0GGZIdXzSeiNwguv1gt/FAjZOiPl76roBi3xKEXa4WmfpxgQwTTL4KipXjefrnf3oV4IsYhi4JFA==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mlly@1.8.1: + resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + msw@2.12.7: + resolution: {integrity: sha512-retd5i3xCZDVWMYjHEVuKTmhqY8lSsxujjVrZiGbbdoxxIBg5S7rCuYy/YQpfrTYIxpd/o0Kyb/3H+1udBMoYg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + typescript: '>= 4.8.x' + peerDependenciesMeta: + typescript: + optional: true + + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + + next@16.2.4: + resolution: {integrity: sha512-kPvz56wF5frc+FxlHI5qnklCzbq53HTwORaWBGdT0vNoKh1Aya9XC8aPauH4NJxqtzbWsS5mAbctm4cr+EkQ2Q==} + engines: {node: '>=20.9.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + + node-releases@2.0.38: + resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object-treeify@1.1.33: + resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} + engines: {node: '>= 10'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + only-allow@1.2.2: + resolution: {integrity: sha512-uxyNYDsCh5YIJ780G7hC5OHjVUr9reHsbZNMM80L9tZlTpb3hUzb36KXgW4ZUGtJKQnGA3xegmWg1BxhWV0jJA==} + hasBin: true + + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + openai@6.34.0: + resolution: {integrity: sha512-yEr2jdGf4tVFYG6ohmr3pF6VJuveP0EA/sS8TBx+4Eq5NT10alu5zg2dmxMXMgqpihRDQlFGpRt2XwsGj+Fyxw==} + hasBin: true + peerDependencies: + ws: ^8.18.0 + zod: ^3.25 || ^4.0 + peerDependenciesMeta: + ws: + optional: true + zod: + optional: true + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@8.2.0: + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} + engines: {node: '>=18'} + + outvariant@1.4.3: + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-expression-matcher@1.5.0: + resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} + engines: {node: '>=14.0.0'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + path-to-regexp@8.3.0: + resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pg-cloudflare@1.3.0: + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} + + pg-connection-string@2.10.1: + resolution: {integrity: sha512-iNzslsoeSH2/gmDDKiyMqF64DATUCWj3YJ0wP14kqcsf2TUklwimd+66yYojKwZCA7h2yRNLGug71hCBA2a4sw==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-pool@3.11.0: + resolution: {integrity: sha512-MJYfvHwtGp870aeusDh+hg9apvOe2zmpZJpyt+BMtzUWlVqbhFmMK6bOBXLBUPd7iRtIF9fZplDc7KrPN3PN7w==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.11.0: + resolution: {integrity: sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg@8.17.2: + resolution: {integrity: sha512-vjbKdiBJRqzcYw1fNU5KuHyYvdJ1qpcQg1CeBrHFqV1pWgHeVR6j/+kX0E1AAXfyuLUGY1ICrN2ELKA/z2HWzw==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkce-challenge@5.0.1: + resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} + engines: {node: '>=16.20.0'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: 8.5.10 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + engines: {node: '>=4'} + + postcss@8.5.10: + resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} + engines: {node: ^10 || ^12 || >=14} + + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-bytea@1.0.1: + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + engines: {node: '>= 0.10'} + + react-day-picker@9.13.0: + resolution: {integrity: sha512-euzj5Hlq+lOHqI53NiuNhCP8HWgsPf/bBAVijR50hNaY1XwjKjShAnIe8jm8RD2W9IJUvihDIZ+KrmqfFzNhFQ==} + engines: {node: '>=18'} + peerDependencies: + react: '>=16.8.0' + + react-dev-inspector@2.0.1: + resolution: {integrity: sha512-b8PAmbwGFrWcxeaX8wYveqO+VTwTXGJaz/yl9RO31LK1zeLKJVlkkbeLExLnJ6IvhXY1TwL8Q4+gR2GKJ8BI6Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + react: '>=16.8.0' + + react-dev-utils@12.0.1: + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true + + react-dom@19.2.3: + resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} + peerDependencies: + react: ^19.2.3 + + react-error-overlay@6.1.0: + resolution: {integrity: sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==} + + react-hook-form@7.71.1: + resolution: {integrity: sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-markdown@10.1.0: + resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} + 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 + + react-resizable-panels@4.5.2: + resolution: {integrity: sha512-PJyyR41poi1O1MvvQzDVtEBRq1x7B/9jB6yoFbm67pm8AvPUUwhljFtxfhaYy8klsmkQ6AvxZgDxXTkDl4vy4Q==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + react-smooth@4.0.4: + resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + 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 + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@19.2.3: + resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} + engines: {node: '>=0.10.0'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} + + recharts-scale@0.4.5: + resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} + + recharts@2.15.4: + resolution: {integrity: sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + rettime@0.7.0: + resolution: {integrity: sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + schema-utils@2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} + + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} + engines: {node: '>= 10.13.0'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} + engines: {node: '>= 18'} + + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} + engines: {node: '>= 18'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shadcn@3.7.0: + resolution: {integrity: sha512-zOXNAIFclguSYmmoibyXyKiYA6qjEJtXDSvloAMziSREW9Q0R/dLqBUYdb81lOejmZkDYuZApGabbMLH7G8qvQ==} + hasBin: true + + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + sonner@2.0.7: + resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + stringify-object@5.0.0: + resolution: {integrity: sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==} + engines: {node: '>=14.16'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strnum@2.2.3: + resolution: {integrity: sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==} + + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + + tailwind-merge@2.6.0: + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + + tailwindcss@4.1.18: + resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} + + tapable@1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + terser-webpack-plugin@5.4.0: + resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.46.1: + resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} + engines: {node: '>=10'} + hasBin: true + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + tldts-core@7.0.19: + resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==} + + tldts@7.0.19: + resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==} + hasBin: true + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tough-cookie@6.0.0: + resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} + engines: {node: '>=16'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@2.4.0: + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-morph@26.0.0: + resolution: {integrity: sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==} + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsup@8.5.1: + resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: 8.5.10 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + + tw-animate-css@1.4.0: + resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@5.4.2: + resolution: {integrity: sha512-FLEenlVYf7Zcd34ISMLo3ZzRE1gRjY1nMDTp+bQRBiPsaKyIW8K3Zr99ioHDUgA9OGuGGJPyYpNcffGmBhJfGg==} + engines: {node: '>=20'} + + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.54.0: + resolution: {integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + + until-async@3.0.2: + resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + 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 + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + 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 + + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + validate-npm-package-name@7.0.2: + resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} + engines: {node: ^20.17.0 || >=22.9.0} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vaul@1.1.2: + resolution: {integrity: sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==} + 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 + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + victory-vendor@36.9.2: + resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} + + watchpack@2.5.1: + resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} + engines: {node: '>=10.13.0'} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + webpack-sources@3.3.4: + resolution: {integrity: sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==} + engines: {node: '>=10.13.0'} + + webpack@5.104.1: + resolution: {integrity: sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-pm-runs@1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + 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 + + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + + zod-to-json-schema@3.25.1: + resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} + peerDependencies: + zod: ^3.25 || ^4 + + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@antfu/ni@25.0.0': + dependencies: + ansis: 4.2.0 + fzf: 0.5.2 + package-manager-detector: 1.6.0 + tinyexec: 1.0.2 + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.1 + tslib: 2.8.1 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.1 + tslib: 2.8.1 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-locate-window': 3.965.4 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-locate-window': 3.965.4 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.1 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-s3@3.975.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.973.3 + '@aws-sdk/credential-provider-node': 3.972.2 + '@aws-sdk/middleware-bucket-endpoint': 3.972.1 + '@aws-sdk/middleware-expect-continue': 3.972.1 + '@aws-sdk/middleware-flexible-checksums': 3.972.1 + '@aws-sdk/middleware-host-header': 3.972.2 + '@aws-sdk/middleware-location-constraint': 3.972.1 + '@aws-sdk/middleware-logger': 3.972.2 + '@aws-sdk/middleware-recursion-detection': 3.972.2 + '@aws-sdk/middleware-sdk-s3': 3.972.2 + '@aws-sdk/middleware-ssec': 3.972.1 + '@aws-sdk/middleware-user-agent': 3.972.3 + '@aws-sdk/region-config-resolver': 3.972.2 + '@aws-sdk/signature-v4-multi-region': 3.972.0 + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-endpoints': 3.972.0 + '@aws-sdk/util-user-agent-browser': 3.972.2 + '@aws-sdk/util-user-agent-node': 3.972.2 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.22.0 + '@smithy/eventstream-serde-browser': 4.2.8 + '@smithy/eventstream-serde-config-resolver': 4.3.8 + '@smithy/eventstream-serde-node': 4.2.8 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-blob-browser': 4.2.9 + '@smithy/hash-node': 4.2.8 + '@smithy/hash-stream-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/md5-js': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.12 + '@smithy/middleware-retry': 4.4.29 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.11.1 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.28 + '@smithy/util-defaults-mode-node': 4.2.31 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/util-stream': 4.5.10 + '@smithy/util-utf8': 4.2.0 + '@smithy/util-waiter': 4.2.8 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.975.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.973.3 + '@aws-sdk/middleware-host-header': 3.972.2 + '@aws-sdk/middleware-logger': 3.972.2 + '@aws-sdk/middleware-recursion-detection': 3.972.2 + '@aws-sdk/middleware-user-agent': 3.972.3 + '@aws-sdk/region-config-resolver': 3.972.2 + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-endpoints': 3.972.0 + '@aws-sdk/util-user-agent-browser': 3.972.2 + '@aws-sdk/util-user-agent-node': 3.972.2 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.22.0 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.12 + '@smithy/middleware-retry': 4.4.29 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.11.1 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.28 + '@smithy/util-defaults-mode-node': 4.2.31 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.972.0': + dependencies: + '@aws-sdk/types': 3.972.0 + '@aws-sdk/xml-builder': 3.972.0 + '@smithy/core': 3.22.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/property-provider': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/smithy-client': 4.11.1 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/core@3.973.3': + dependencies: + '@aws-sdk/types': 3.973.1 + '@aws-sdk/xml-builder': 3.972.2 + '@smithy/core': 3.22.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/property-provider': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/smithy-client': 4.11.1 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/crc64-nvme@3.972.0': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.972.2': + dependencies: + '@aws-sdk/core': 3.973.3 + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.972.3': + dependencies: + '@aws-sdk/core': 3.973.3 + '@aws-sdk/types': 3.973.1 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/node-http-handler': 4.4.8 + '@smithy/property-provider': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.11.1 + '@smithy/types': 4.12.0 + '@smithy/util-stream': 4.5.10 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.972.2': + dependencies: + '@aws-sdk/core': 3.973.3 + '@aws-sdk/credential-provider-env': 3.972.2 + '@aws-sdk/credential-provider-http': 3.972.3 + '@aws-sdk/credential-provider-login': 3.972.2 + '@aws-sdk/credential-provider-process': 3.972.2 + '@aws-sdk/credential-provider-sso': 3.972.2 + '@aws-sdk/credential-provider-web-identity': 3.972.2 + '@aws-sdk/nested-clients': 3.975.0 + '@aws-sdk/types': 3.973.1 + '@smithy/credential-provider-imds': 4.2.8 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-login@3.972.2': + dependencies: + '@aws-sdk/core': 3.973.3 + '@aws-sdk/nested-clients': 3.975.0 + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.972.2': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.2 + '@aws-sdk/credential-provider-http': 3.972.3 + '@aws-sdk/credential-provider-ini': 3.972.2 + '@aws-sdk/credential-provider-process': 3.972.2 + '@aws-sdk/credential-provider-sso': 3.972.2 + '@aws-sdk/credential-provider-web-identity': 3.972.2 + '@aws-sdk/types': 3.973.1 + '@smithy/credential-provider-imds': 4.2.8 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.972.2': + dependencies: + '@aws-sdk/core': 3.973.3 + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.972.2': + dependencies: + '@aws-sdk/client-sso': 3.975.0 + '@aws-sdk/core': 3.973.3 + '@aws-sdk/token-providers': 3.975.0 + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.972.2': + dependencies: + '@aws-sdk/core': 3.973.3 + '@aws-sdk/nested-clients': 3.975.0 + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/lib-storage@3.975.0(@aws-sdk/client-s3@3.975.0)': + dependencies: + '@aws-sdk/client-s3': 3.975.0 + '@smithy/abort-controller': 4.2.8 + '@smithy/middleware-endpoint': 4.4.12 + '@smithy/smithy-client': 4.11.1 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-bucket-endpoint@3.972.1': + dependencies: + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-arn-parser': 3.972.1 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-config-provider': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-expect-continue@3.972.1': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-flexible-checksums@3.972.1': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.973.3 + '@aws-sdk/crc64-nvme': 3.972.0 + '@aws-sdk/types': 3.973.1 + '@smithy/is-array-buffer': 4.2.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.10 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-host-header@3.972.2': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-location-constraint@3.972.1': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.972.2': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.972.2': + dependencies: + '@aws-sdk/types': 3.973.1 + '@aws/lambda-invoke-store': 0.2.3 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-sdk-s3@3.972.0': + dependencies: + '@aws-sdk/core': 3.972.0 + '@aws-sdk/types': 3.972.0 + '@aws-sdk/util-arn-parser': 3.972.0 + '@smithy/core': 3.22.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/smithy-client': 4.11.1 + '@smithy/types': 4.12.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.10 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-sdk-s3@3.972.2': + dependencies: + '@aws-sdk/core': 3.973.3 + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-arn-parser': 3.972.1 + '@smithy/core': 3.22.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/smithy-client': 4.11.1 + '@smithy/types': 4.12.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.10 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-ssec@3.972.1': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.972.3': + dependencies: + '@aws-sdk/core': 3.973.3 + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-endpoints': 3.972.0 + '@smithy/core': 3.22.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.975.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.973.3 + '@aws-sdk/middleware-host-header': 3.972.2 + '@aws-sdk/middleware-logger': 3.972.2 + '@aws-sdk/middleware-recursion-detection': 3.972.2 + '@aws-sdk/middleware-user-agent': 3.972.3 + '@aws-sdk/region-config-resolver': 3.972.2 + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-endpoints': 3.972.0 + '@aws-sdk/util-user-agent-browser': 3.972.2 + '@aws-sdk/util-user-agent-node': 3.972.2 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.22.0 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.12 + '@smithy/middleware-retry': 4.4.29 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.11.1 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.28 + '@smithy/util-defaults-mode-node': 4.2.31 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.972.2': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/config-resolver': 4.4.6 + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.972.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.972.0 + '@aws-sdk/types': 3.972.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.975.0': + dependencies: + '@aws-sdk/core': 3.973.3 + '@aws-sdk/nested-clients': 3.975.0 + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.972.0': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/types@3.973.1': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/util-arn-parser@3.972.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-arn-parser@3.972.1': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.972.0': + dependencies: + '@aws-sdk/types': 3.972.0 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-endpoints': 3.2.8 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.965.4': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.972.2': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/types': 4.12.0 + bowser: 2.13.1 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.972.2': + dependencies: + '@aws-sdk/middleware-user-agent': 3.972.3 + '@aws-sdk/types': 3.973.1 + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.972.0': + dependencies: + '@smithy/types': 4.12.0 + fast-xml-parser: 5.7.0 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.972.2': + dependencies: + '@smithy/types': 4.12.0 + fast-xml-parser: 5.7.0 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.2.3': {} + + '@babel/code-frame@7.28.6': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.6': {} + + '@babel/core@7.28.6': + 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/core@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.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.6': + dependencies: + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.28.6 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@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/core@7.28.6) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.6 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.28.6 + + '@babel/helper-plugin-utils@7.28.6': {} + + '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 + + '@babel/parser@7.28.6': + dependencies: + '@babel/types': 7.28.6 + + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@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(@babel/core@7.28.6) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.28.5(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.28.6) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.29.2': {} + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + + '@babel/traverse@7.28.6': + 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.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.20.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + to-fast-properties: 2.0.0 + + '@babel/types@7.28.6': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@cfworker/json-schema@4.1.1': {} + + '@date-fns/tz@1.4.1': {} + + '@dotenvx/dotenvx@1.52.0': + dependencies: + commander: 11.1.0 + dotenv: 17.2.3 + eciesjs: 0.4.17 + execa: 5.1.1 + fdir: 6.5.0(picomatch@4.0.3) + ignore: 5.3.2 + object-treeify: 1.1.33 + picomatch: 4.0.3 + which: 4.0.0 + + '@drizzle-team/brocli@0.10.2': {} + + '@ecies/ciphers@0.2.5(@noble/ciphers@1.3.0)': + dependencies: + '@noble/ciphers': 1.3.0 + + '@emnapi/core@1.8.1': + dependencies: + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.8.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild-kit/core-utils@3.3.2': + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 + + '@esbuild-kit/esm-loader@2.6.5': + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.13.0 + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.3': + optional: true + + '@esbuild/android-arm64@0.18.20': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.3': + optional: true + + '@esbuild/android-arm@0.18.20': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.27.3': + optional: true + + '@esbuild/android-x64@0.18.20': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.27.3': + optional: true + + '@esbuild/darwin-arm64@0.18.20': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.27.3': + optional: true + + '@esbuild/darwin-x64@0.18.20': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.27.3': + optional: true + + '@esbuild/freebsd-arm64@0.18.20': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.27.3': + optional: true + + '@esbuild/freebsd-x64@0.18.20': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.27.3': + optional: true + + '@esbuild/linux-arm64@0.18.20': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.27.3': + optional: true + + '@esbuild/linux-arm@0.18.20': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.27.3': + optional: true + + '@esbuild/linux-ia32@0.18.20': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.27.3': + optional: true + + '@esbuild/linux-loong64@0.18.20': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.27.3': + optional: true + + '@esbuild/linux-mips64el@0.18.20': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.27.3': + optional: true + + '@esbuild/linux-ppc64@0.18.20': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.27.3': + optional: true + + '@esbuild/linux-riscv64@0.18.20': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.27.3': + optional: true + + '@esbuild/linux-s390x@0.18.20': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.3': + optional: true + + '@esbuild/linux-x64@0.18.20': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.27.3': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.27.3': + optional: true + + '@esbuild/netbsd-x64@0.18.20': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.3': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.3': + optional: true + + '@esbuild/openbsd-x64@0.18.20': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.3': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.3': + optional: true + + '@esbuild/sunos-x64@0.18.20': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.3': + optional: true + + '@esbuild/win32-arm64@0.18.20': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.3': + optional: true + + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.3': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.3': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': + dependencies: + eslint: 9.39.2(jiti@2.6.1) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.1': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.3': + dependencies: + ajv: 6.12.6 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.2': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@floating-ui/core@1.7.4': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.5': + dependencies: + '@floating-ui/core': 1.7.4 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/react-dom@2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/dom': 1.7.5 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + '@floating-ui/utils@0.2.10': {} + + '@hono/node-server@1.19.9(hono@4.11.7)': + dependencies: + hono: 4.11.7 + + '@hookform/resolvers@5.2.2(react-hook-form@7.71.1(react@19.2.3))': + dependencies: + '@standard-schema/utils': 0.3.0 + react-hook-form: 7.71.1(react@19.2.3) + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@img/colour@1.0.0': {} + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.8.1 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@inquirer/ansi@1.0.2': {} + + '@inquirer/confirm@5.1.21(@types/node@20.19.30)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@20.19.30) + '@inquirer/type': 3.0.10(@types/node@20.19.30) + optionalDependencies: + '@types/node': 20.19.30 + + '@inquirer/core@10.3.2(@types/node@20.19.30)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@20.19.30) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 20.19.30 + + '@inquirer/figures@1.0.15': {} + + '@inquirer/type@3.0.10(@types/node@20.19.30)': + optionalDependencies: + '@types/node': 20.19.30 + + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@langchain/core@1.1.44(openai@6.34.0(ws@8.19.0)(zod@4.3.6))(ws@8.19.0)': + dependencies: + '@cfworker/json-schema': 4.1.1 + '@standard-schema/spec': 1.1.0 + ansi-styles: 5.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + js-tiktoken: 1.0.21 + langsmith: 0.6.0(openai@6.34.0(ws@8.19.0)(zod@4.3.6))(ws@8.19.0) + mustache: 4.2.0 + p-queue: 6.6.2 + zod: 4.3.6 + transitivePeerDependencies: + - '@opentelemetry/api' + - '@opentelemetry/exporter-trace-otlp-proto' + - '@opentelemetry/sdk-trace-base' + - openai + - ws + + '@langchain/openai@1.4.4(@langchain/core@1.1.44(openai@6.34.0(ws@8.19.0)(zod@4.3.6))(ws@8.19.0))(ws@8.19.0)': + dependencies: + '@langchain/core': 1.1.44(openai@6.34.0(ws@8.19.0)(zod@4.3.6))(ws@8.19.0) + js-tiktoken: 1.0.21 + openai: 6.34.0(ws@8.19.0)(zod@4.3.6) + zod: 4.3.6 + transitivePeerDependencies: + - ws + + '@modelcontextprotocol/sdk@1.25.3(@cfworker/json-schema@4.1.1)(hono@4.11.7)(zod@3.25.76)': + dependencies: + '@hono/node-server': 1.19.9(hono@4.11.7) + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + content-type: 1.0.5 + cors: 2.8.6 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + eventsource-parser: 3.0.6 + express: 5.2.1 + express-rate-limit: 7.5.1(express@5.2.1) + jose: 6.1.3 + json-schema-typed: 8.0.2 + pkce-challenge: 5.0.1 + raw-body: 3.0.2 + zod: 3.25.76 + zod-to-json-schema: 3.25.1(zod@3.25.76) + optionalDependencies: + '@cfworker/json-schema': 4.1.1 + transitivePeerDependencies: + - hono + - supports-color + + '@mswjs/interceptors@0.40.0': + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 + + '@napi-rs/wasm-runtime@0.2.12': + dependencies: + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@next/env@16.2.4': {} + + '@next/eslint-plugin-next@16.2.4': + dependencies: + fast-glob: 3.3.1 + + '@next/swc-darwin-arm64@16.2.4': + optional: true + + '@next/swc-darwin-x64@16.2.4': + optional: true + + '@next/swc-linux-arm64-gnu@16.2.4': + optional: true + + '@next/swc-linux-arm64-musl@16.2.4': + optional: true + + '@next/swc-linux-x64-gnu@16.2.4': + optional: true + + '@next/swc-linux-x64-musl@16.2.4': + optional: true + + '@next/swc-win32-arm64-msvc@16.2.4': + optional: true + + '@next/swc-win32-x64-msvc@16.2.4': + optional: true + + '@noble/ciphers@1.3.0': {} + + '@noble/curves@1.9.7': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/hashes@1.8.0': {} + + '@nodable/entities@2.1.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@nolyfill/is-core-module@1.0.39': {} + + '@open-draft/deferred-promise@2.2.0': {} + + '@open-draft/logger@0.3.0': + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.3 + + '@open-draft/until@2.1.0': {} + + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.1.3': {} + + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-aspect-ratio@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-context': 1.1.3(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.10)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-context@1.1.2(@types/react@19.2.10)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-context@1.1.3(@types/react@19.2.10)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.7.2(@types/react@19.2.10)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-direction@1.1.1(@types/react@19.2.10)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.10)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-id@1.1.1(@types/react@19.2.10)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.7.2(@types/react@19.2.10)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.7.2(@types/react@19.2.10)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/react-dom': 2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/rect': 1.1.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-progress@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-context': 1.1.3(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.7.2(@types/react@19.2.10)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-slot@1.2.3(@types/react@19.2.10)(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-slot@1.2.4(@types/react@19.2.10)(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.10)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.10)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.10)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.10)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.10)(react@19.2.3)': + dependencies: + react: 19.2.3 + use-sync-external-store: 1.6.0(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.10)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.10)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.10)(react@19.2.3)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.10)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.10 + + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + '@types/react-dom': 19.2.3(@types/react@19.2.10) + + '@radix-ui/rect@1.1.1': {} + + '@react-dev-inspector/babel-plugin@2.0.1': + dependencies: + '@babel/core': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.20.5 + transitivePeerDependencies: + - supports-color + + '@react-dev-inspector/middleware@2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3))': + dependencies: + react-dev-utils: 12.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + + '@react-dev-inspector/umi3-plugin@2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3))': + dependencies: + '@react-dev-inspector/babel-plugin': 2.0.1 + '@react-dev-inspector/middleware': 2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + + '@react-dev-inspector/umi4-plugin@2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3))': + dependencies: + '@react-dev-inspector/babel-plugin': 2.0.1 + '@react-dev-inspector/middleware': 2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + + '@react-dev-inspector/vite-plugin@2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3))': + dependencies: + '@react-dev-inspector/middleware': 2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + + '@rollup/rollup-android-arm-eabi@4.59.0': + optional: true + + '@rollup/rollup-android-arm64@4.59.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.59.0': + optional: true + + '@rollup/rollup-darwin-x64@4.59.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.59.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.59.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.59.0': + optional: true + + '@rollup/rollup-openbsd-x64@4.59.0': + optional: true + + '@rollup/rollup-openharmony-arm64@4.59.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.59.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.59.0': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.59.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.59.0': + optional: true + + '@rtsao/scc@1.1.0': {} + + '@sec-ant/readable-stream@0.4.1': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@smithy/abort-controller@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/chunked-blob-reader-native@4.2.1': + dependencies: + '@smithy/util-base64': 4.3.0 + tslib: 2.8.1 + + '@smithy/chunked-blob-reader@5.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/config-resolver@4.4.6': + dependencies: + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + tslib: 2.8.1 + + '@smithy/core@3.22.0': + dependencies: + '@smithy/middleware-serde': 4.2.9 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.10 + '@smithy/util-utf8': 4.2.0 + '@smithy/uuid': 1.1.0 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.2.8': + dependencies: + '@smithy/node-config-provider': 4.3.8 + '@smithy/property-provider': 4.2.8 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + tslib: 2.8.1 + + '@smithy/eventstream-codec@4.2.8': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.12.0 + '@smithy/util-hex-encoding': 4.2.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-browser@4.2.8': + dependencies: + '@smithy/eventstream-serde-universal': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-config-resolver@4.3.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@4.2.8': + dependencies: + '@smithy/eventstream-serde-universal': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-universal@4.2.8': + dependencies: + '@smithy/eventstream-codec': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.3.9': + dependencies: + '@smithy/protocol-http': 5.3.8 + '@smithy/querystring-builder': 4.2.8 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + tslib: 2.8.1 + + '@smithy/hash-blob-browser@4.2.9': + dependencies: + '@smithy/chunked-blob-reader': 5.2.0 + '@smithy/chunked-blob-reader-native': 4.2.1 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/hash-node@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@smithy/hash-stream-node@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/md5-js@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.2.8': + dependencies: + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.4.12': + dependencies: + '@smithy/core': 3.22.0 + '@smithy/middleware-serde': 4.2.9 + '@smithy/node-config-provider': 4.3.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-middleware': 4.2.8 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.4.29': + dependencies: + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/service-error-classification': 4.2.8 + '@smithy/smithy-client': 4.11.1 + '@smithy/types': 4.12.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/uuid': 1.1.0 + tslib: 2.8.1 + + '@smithy/middleware-serde@4.2.9': + dependencies: + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.3.8': + dependencies: + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.4.8': + dependencies: + '@smithy/abort-controller': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/querystring-builder': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/property-provider@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/protocol-http@5.3.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/querystring-builder@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + '@smithy/util-uri-escape': 4.2.0 + tslib: 2.8.1 + + '@smithy/querystring-parser@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/service-error-classification@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + + '@smithy/shared-ini-file-loader@4.4.3': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/signature-v4@5.3.8': + dependencies: + '@smithy/is-array-buffer': 4.2.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-uri-escape': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@smithy/smithy-client@4.11.1': + dependencies: + '@smithy/core': 3.22.0 + '@smithy/middleware-endpoint': 4.4.12 + '@smithy/middleware-stack': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-stream': 4.5.10 + tslib: 2.8.1 + + '@smithy/types@4.12.0': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@4.2.8': + dependencies: + '@smithy/querystring-parser': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/util-base64@4.3.0': + dependencies: + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.2.1': + dependencies: + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@4.2.0': + dependencies: + '@smithy/is-array-buffer': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.3.28': + dependencies: + '@smithy/property-provider': 4.2.8 + '@smithy/smithy-client': 4.11.1 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.2.31': + dependencies: + '@smithy/config-resolver': 4.4.6 + '@smithy/credential-provider-imds': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/property-provider': 4.2.8 + '@smithy/smithy-client': 4.11.1 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.2.8': + dependencies: + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/util-hex-encoding@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-middleware@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/util-retry@4.2.8': + dependencies: + '@smithy/service-error-classification': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/util-stream@4.5.10': + dependencies: + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/node-http-handler': 4.4.8 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-uri-escape@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.2.0': + dependencies: + '@smithy/util-buffer-from': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-waiter@4.2.8': + dependencies: + '@smithy/abort-controller': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/uuid@1.1.0': + dependencies: + tslib: 2.8.1 + + '@standard-schema/spec@1.1.0': {} + + '@standard-schema/utils@0.3.0': {} + + '@supabase/auth-js@2.95.3': + dependencies: + tslib: 2.8.1 + + '@supabase/functions-js@2.95.3': + dependencies: + tslib: 2.8.1 + + '@supabase/postgrest-js@2.95.3': + dependencies: + tslib: 2.8.1 + + '@supabase/realtime-js@2.95.3': + dependencies: + '@types/phoenix': 1.6.7 + '@types/ws': 8.18.1 + tslib: 2.8.1 + ws: 8.19.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@supabase/storage-js@2.95.3': + dependencies: + iceberg-js: 0.8.1 + tslib: 2.8.1 + + '@supabase/supabase-js@2.95.3': + dependencies: + '@supabase/auth-js': 2.95.3 + '@supabase/functions-js': 2.95.3 + '@supabase/postgrest-js': 2.95.3 + '@supabase/realtime-js': 2.95.3 + '@supabase/storage-js': 2.95.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/node@4.1.18': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.4 + jiti: 2.6.1 + lightningcss: 1.30.2 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.1.18 + + '@tailwindcss/oxide-android-arm64@4.1.18': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.18': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.18': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.18': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.18': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + optional: true + + '@tailwindcss/oxide@4.1.18': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-x64': 4.1.18 + '@tailwindcss/oxide-freebsd-x64': 4.1.18 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-x64-musl': 4.1.18 + '@tailwindcss/oxide-wasm32-wasi': 4.1.18 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 + + '@tailwindcss/postcss@4.1.18': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.18 + '@tailwindcss/oxide': 4.1.18 + postcss: 8.5.10 + tailwindcss: 4.1.18 + + '@ts-morph/common@0.27.0': + dependencies: + fast-glob: 3.3.3 + minimatch: 10.1.1 + path-browserify: 1.0.1 + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/d3-array@3.2.2': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-shape@3.1.8': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.8 + + '@types/estree@1.0.8': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@2.1.0': {} + + '@types/node@20.19.30': + dependencies: + undici-types: 6.21.0 + + '@types/node@20.19.39': + dependencies: + undici-types: 6.21.0 + + '@types/parse-json@4.0.2': {} + + '@types/pg@8.16.0': + dependencies: + '@types/node': 20.19.30 + pg-protocol: 1.11.0 + pg-types: 2.2.0 + + '@types/phoenix@1.6.7': {} + + '@types/react-dom@19.2.3(@types/react@19.2.10)': + dependencies: + '@types/react': 19.2.10 + + '@types/react-reconciler@0.33.0(@types/react@19.2.10)': + dependencies: + '@types/react': 19.2.10 + + '@types/react@19.2.10': + dependencies: + csstype: 3.2.3 + + '@types/statuses@2.0.6': {} + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@types/validate-npm-package-name@4.0.2': {} + + '@types/ws@8.18.1': + dependencies: + '@types/node': 20.19.30 + + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 + eslint: 9.39.2(jiti@2.6.1) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 + debug: 4.4.3 + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.54.0': + dependencies: + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 + + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.2(jiti@2.6.1) + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.54.0': {} + + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@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(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.54.0': + dependencies: + '@typescript-eslint/types': 8.54.0 + eslint-visitor-keys: 4.2.1 + + '@ungap/structured-clone@1.3.0': {} + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + optional: true + + '@unrs/resolver-binding-android-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + optional: true + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + accepts@2.0.0: + dependencies: + mime-types: 3.0.2 + negotiator: 1.0.0 + + acorn-import-phases@1.0.4(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + acorn@8.16.0: {} + + address@1.2.2: {} + + agent-base@7.1.4: {} + + ajv-formats@2.1.1(ajv@8.18.0): + optionalDependencies: + ajv: 8.18.0 + + ajv-formats@3.0.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.18.0): + dependencies: + ajv: 8.18.0 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ajv@8.18.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansis@4.2.0: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@2.0.1: {} + + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array-union@2.1.0: {} + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + 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-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + ast-types-flow@0.0.8: {} + + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + + async-function@1.0.0: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axe-core@4.11.1: {} + + axios@1.15.2: + dependencies: + follow-redirects: 1.16.0 + form-data: 4.0.5 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + + axobject-query@4.1.0: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.10.21: {} + + baseline-browser-mapping@2.9.18: {} + + binary-extensions@2.3.0: {} + + body-parser@2.2.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.3 + http-errors: 2.0.1 + iconv-lite: 0.7.2 + on-finished: 2.4.1 + qs: 6.14.1 + raw-body: 3.0.2 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + + bowser@2.13.1: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.9.18 + caniuse-lite: 1.0.30001766 + electron-to-chromium: 1.5.279 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.21 + caniuse-lite: 1.0.30001790 + electron-to-chromium: 1.5.343 + node-releases: 2.0.38 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + buffer-from@1.1.2: {} + + buffer@5.6.0: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + bundle-require@5.1.0(esbuild@0.27.3): + dependencies: + esbuild: 0.27.3 + load-tsconfig: 0.2.5 + + bytes@3.1.2: {} + + cac@6.7.14: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001766: {} + + caniuse-lite@1.0.30001790: {} + + ccount@2.0.1: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.6.2: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chrome-trace-event@1.0.4: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + cli-width@4.1.0: {} + + client-only@0.0.1: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.1.1: {} + + cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + code-block-writer@13.0.3: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + commander@11.1.0: {} + + commander@14.0.2: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + consola@3.4.2: {} + + content-disposition@1.0.1: {} + + content-type@1.0.5: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + + cookie@1.1.1: {} + + cors@2.8.6: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cosmiconfig@6.0.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@9.0.0(typescript@5.9.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.9.3 + + coze-coding-dev-sdk@0.7.21(openai@6.34.0(ws@8.19.0)(zod@4.3.6))(ws@8.19.0): + dependencies: + '@langchain/core': 1.1.44(openai@6.34.0(ws@8.19.0)(zod@4.3.6))(ws@8.19.0) + '@langchain/openai': 1.4.4(@langchain/core@1.1.44(openai@6.34.0(ws@8.19.0)(zod@4.3.6))(ws@8.19.0))(ws@8.19.0) + '@supabase/supabase-js': 2.95.3 + axios: 1.15.2 + pg: 8.17.2 + transitivePeerDependencies: + - '@opentelemetry/api' + - '@opentelemetry/exporter-trace-otlp-proto' + - '@opentelemetry/sdk-trace-base' + - bufferutil + - debug + - openai + - pg-native + - utf-8-validate + - ws + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cssesc@3.0.0: {} + + csstype@3.2.3: {} + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-color@3.1.0: {} + + d3-ease@3.0.1: {} + + d3-format@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@3.1.0: {} + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + damerau-levenshtein@1.0.8: {} + + data-uri-to-buffer@4.0.1: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + date-fns-jalali@4.1.0-0: {} + + date-fns@4.1.0: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + decimal.js-light@2.5.1: {} + + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + + dedent@1.7.1: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-browser-id@5.0.1: {} + + default-browser@5.4.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + detect-libc@2.1.2: {} + + detect-node-es@1.1.0: {} + + detect-port-alt@1.1.6: + dependencies: + address: 1.2.2 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff@8.0.3: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.29.2 + csstype: 3.2.3 + + dotenv@17.2.3: {} + + drizzle-kit@0.31.8: + dependencies: + '@drizzle-team/brocli': 0.10.2 + '@esbuild-kit/esm-loader': 2.6.5 + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) + transitivePeerDependencies: + - supports-color + + drizzle-orm@0.45.2(@types/pg@8.16.0)(pg@8.17.2): + optionalDependencies: + '@types/pg': 8.16.0 + pg: 8.17.2 + + drizzle-zod@0.8.3(drizzle-orm@0.45.2(@types/pg@8.16.0)(pg@8.17.2))(zod@4.3.6): + dependencies: + drizzle-orm: 0.45.2(@types/pg@8.16.0)(pg@8.17.2) + zod: 4.3.6 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + eciesjs@0.4.17: + dependencies: + '@ecies/ciphers': 0.2.5(@noble/ciphers@1.3.0) + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.279: {} + + electron-to-chromium@1.5.343: {} + + embla-carousel-react@8.6.0(react@19.2.3): + dependencies: + embla-carousel: 8.6.0 + embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0) + react: 19.2.3 + + embla-carousel-reactive-utils@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + + embla-carousel@8.6.0: {} + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@2.0.0: {} + + enhanced-resolve@5.18.4: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + + enhanced-resolve@5.20.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + env-paths@2.2.1: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.24.1: + 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.3 + 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.20 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.2.2: + 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 + + es-module-lexer@2.0.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.3 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esbuild-register@3.6.0(esbuild@0.25.12): + dependencies: + debug: 4.4.3 + esbuild: 0.25.12 + transitivePeerDependencies: + - supports-color + + esbuild@0.18.20: + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esbuild@0.27.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-config-next@16.2.4(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@next/eslint-plugin-next': 16.2.4 + eslint: 9.39.2(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1)) + globals: 16.4.0 + typescript-eslint: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3 + eslint: 9.39.2(jiti@2.6.1) + get-tsconfig: 4.13.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): + 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: 9.39.2(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)) + hasown: 2.0.3 + 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 + optionalDependencies: + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.2(jiti@2.6.1)): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.11.1 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.39.2(jiti@2.6.1) + hasown: 2.0.3 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-react-hooks@7.0.1(eslint@9.39.2(jiti@2.6.1)): + dependencies: + '@babel/core': 7.28.6 + '@babel/parser': 7.28.6 + eslint: 9.39.2(jiti@2.6.1) + hermes-parser: 0.25.1 + zod: 4.3.6 + zod-validation-error: 4.0.2(zod@4.3.6) + transitivePeerDependencies: + - supports-color + + eslint-plugin-react@7.37.5(eslint@9.39.2(jiti@2.6.1)): + dependencies: + array-includes: 3.1.9 + 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.2 + eslint: 9.39.2(jiti@2.6.1) + estraverse: 5.3.0 + hasown: 2.0.3 + jsx-ast-utils: 3.3.5 + 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 + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.39.2(jiti@2.6.1): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.3 + '@eslint/js': 9.39.2 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + 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.4 + optionalDependencies: + jiti: 2.6.1 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + esprima@4.0.1: {} + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-util-is-identifier-name@3.0.0: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + eventsource-parser@3.0.6: {} + + eventsource@3.0.7: + dependencies: + eventsource-parser: 3.0.6 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@9.6.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.2 + + express-rate-limit@7.5.1(express@5.2.1): + dependencies: + express: 5.2.1 + + express@5.2.1: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.2 + content-disposition: 1.0.1 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.3 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.1 + fresh: 2.0.0 + http-errors: 2.0.1 + merge-descriptors: 2.0.0 + mime-types: 3.0.2 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.1 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.1 + serve-static: 2.2.1 + statuses: 2.0.2 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-equals@5.4.0: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.1.0: {} + + fast-xml-builder@1.1.5: + dependencies: + path-expression-matcher: 1.5.0 + + fast-xml-parser@5.7.0: + dependencies: + '@nodable/entities': 2.1.0 + fast-xml-builder: 1.1.5 + path-expression-matcher: 1.5.0 + strnum: 2.2.3 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + filesize@8.0.7: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@2.1.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.21 + mlly: 1.8.1 + rollup: 4.59.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + follow-redirects@1.16.0: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)): + dependencies: + '@babel/code-frame': 7.28.6 + '@types/json-schema': 7.0.15 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 6.0.0 + deepmerge: 4.3.1 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.5.3 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.7.3 + tapable: 1.1.3 + typescript: 5.9.3 + webpack: 5.104.1(esbuild@0.27.3) + optionalDependencies: + eslint: 9.39.2(jiti@2.6.1) + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.3 + mime-types: 2.1.35 + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + forwarded@0.2.0: {} + + fresh@2.0.0: {} + + fs-extra@11.3.3: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-monkey@1.1.0: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.3 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + fuzzysort@3.1.0: {} + + fzf@0.5.2: {} + + generator-function@2.0.1: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.4.0: {} + + get-intrinsic@1.3.0: + 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 + + get-nonce@1.0.1: {} + + get-own-enumerable-keys@1.0.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.13.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@14.0.0: {} + + globals@16.4.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphql@16.12.0: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hasown@2.0.3: + dependencies: + function-bind: 1.1.2 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + headers-polyfill@4.0.3: {} + + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + + hono@4.11.7: {} + + hotkeys-js@3.13.15: {} + + html-url-attributes@3.0.1: {} + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + human-signals@8.0.1: {} + + iceberg-js@0.8.1: {} + + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + immer@9.0.21: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + inline-style-parser@0.2.7: {} + + input-otp@1.4.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.3 + side-channel: 1.1.0 + + internmap@2.0.3: {} + + ipaddr.js@1.9.1: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-bun-module@2.0.0: + dependencies: + semver: 7.7.3 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.3 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-decimal@2.0.1: {} + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@2.0.0: {} + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-node-process@1.2.0: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-obj@3.0.0: {} + + is-plain-obj@4.1.0: {} + + is-promise@4.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.3 + + is-regexp@3.1.0: {} + + is-root@2.1.0: {} + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@2.0.1: {} + + is-stream@4.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.20 + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isexe@3.1.1: {} + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 20.19.39 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jiti@2.6.1: {} + + jose@6.1.3: {} + + joycon@3.1.1: {} + + js-tiktoken@1.0.21: + dependencies: + base64-js: 1.5.1 + + js-tokens@4.0.0: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-schema-typed@8.0.2: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + kleur@4.1.5: {} + + langsmith@0.6.0(openai@6.34.0(ws@8.19.0)(zod@4.3.6))(ws@8.19.0): + dependencies: + p-queue: 6.6.2 + optionalDependencies: + openai: 6.34.0(ws@8.19.0)(zod@4.3.6) + ws: 8.19.0 + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-android-arm64@1.30.2: + optional: true + + lightningcss-darwin-arm64@1.30.2: + optional: true + + lightningcss-darwin-x64@1.30.2: + optional: true + + lightningcss-freebsd-x64@1.30.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.2: + optional: true + + lightningcss-linux-arm64-gnu@1.30.2: + optional: true + + lightningcss-linux-arm64-musl@1.30.2: + optional: true + + lightningcss-linux-x64-gnu@1.30.2: + optional: true + + lightningcss-linux-x64-musl@1.30.2: + optional: true + + lightningcss-win32-arm64-msvc@1.30.2: + optional: true + + lightningcss-win32-x64-msvc@1.30.2: + optional: true + + lightningcss@1.30.2: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.30.2 + lightningcss-darwin-arm64: 1.30.2 + lightningcss-darwin-x64: 1.30.2 + lightningcss-freebsd-x64: 1.30.2 + lightningcss-linux-arm-gnueabihf: 1.30.2 + lightningcss-linux-arm64-gnu: 1.30.2 + lightningcss-linux-arm64-musl: 1.30.2 + lightningcss-linux-x64-gnu: 1.30.2 + lightningcss-linux-x64-musl: 1.30.2 + lightningcss-win32-arm64-msvc: 1.30.2 + lightningcss-win32-x64-msvc: 1.30.2 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + load-tsconfig@0.2.5: {} + + loader-runner@4.3.1: {} + + loader-utils@3.3.1: {} + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + lodash@4.18.1: {} + + log-symbols@6.0.0: + dependencies: + chalk: 5.6.2 + is-unicode-supported: 1.3.0 + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lucide-react@0.468.0(react@19.2.3): + dependencies: + react: 19.2.3 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + markdown-table@3.0.4: {} + + math-intrinsics@1.1.0: {} + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + mdast-util-from-markdown@2.0.3: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.3 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + media-typer@1.1.0: {} + + memfs@3.5.3: + dependencies: + fs-monkey: 1.1.0 + + merge-descriptors@2.0.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.13 + debug: 4.4.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + + mimic-fn@2.1.0: {} + + mimic-function@5.0.1: {} + + minimatch@10.1.1: + dependencies: + '@isaacs/brace-expansion': 5.0.0 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minimist@1.2.8: {} + + mlly@1.8.1: + dependencies: + acorn: 8.16.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.3 + + ms@2.0.0: {} + + ms@2.1.3: {} + + msw@2.12.7(@types/node@20.19.30)(typescript@5.9.3): + dependencies: + '@inquirer/confirm': 5.1.21(@types/node@20.19.30) + '@mswjs/interceptors': 0.40.0 + '@open-draft/deferred-promise': 2.2.0 + '@types/statuses': 2.0.6 + cookie: 1.1.1 + graphql: 16.12.0 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + picocolors: 1.1.1 + rettime: 0.7.0 + statuses: 2.0.2 + strict-event-emitter: 0.5.1 + tough-cookie: 6.0.0 + type-fest: 5.4.2 + until-async: 3.0.2 + yargs: 17.7.2 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/node' + + mustache@4.2.0: {} + + mute-stream@2.0.0: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.11: {} + + napi-postinstall@0.3.4: {} + + natural-compare@1.4.0: {} + + negotiator@1.0.0: {} + + neo-async@2.6.2: {} + + next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + next@16.2.4(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@next/env': 16.2.4 + '@swc/helpers': 0.5.15 + baseline-browser-mapping: 2.10.21 + caniuse-lite: 1.0.30001790 + postcss: 8.5.10 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + styled-jsx: 5.1.6(@babel/core@7.28.6)(react@19.2.3) + optionalDependencies: + '@next/swc-darwin-arm64': 16.2.4 + '@next/swc-darwin-x64': 16.2.4 + '@next/swc-linux-arm64-gnu': 16.2.4 + '@next/swc-linux-arm64-musl': 16.2.4 + '@next/swc-linux-x64-gnu': 16.2.4 + '@next/swc-linux-x64-musl': 16.2.4 + '@next/swc-win32-arm64-msvc': 16.2.4 + '@next/swc-win32-x64-msvc': 16.2.4 + sharp: 0.34.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-domexception@1.0.0: {} + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + node-releases@2.0.27: {} + + node-releases@2.0.38: {} + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object-treeify@1.1.33: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + only-allow@1.2.2: + dependencies: + which-pm-runs: 1.1.0 + + open@11.0.0: + dependencies: + default-browser: 5.4.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + openai@6.34.0(ws@8.19.0)(zod@4.3.6): + optionalDependencies: + ws: 8.19.0 + zod: 4.3.6 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@8.2.0: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.2 + + outvariant@1.4.3: {} + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-finally@1.0.0: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + p-try@2.2.0: {} + + package-manager-detector@1.6.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.3.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.28.6 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-ms@4.0.0: {} + + parseurl@1.3.3: {} + + path-browserify@1.0.1: {} + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-expression-matcher@1.5.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-to-regexp@6.3.0: {} + + path-to-regexp@8.3.0: {} + + path-type@4.0.0: {} + + pathe@2.0.3: {} + + pg-cloudflare@1.3.0: + optional: true + + pg-connection-string@2.10.1: {} + + pg-int8@1.0.1: {} + + pg-pool@3.11.0(pg@8.17.2): + dependencies: + pg: 8.17.2 + + pg-protocol@1.11.0: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.1 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg@8.17.2: + dependencies: + pg-connection-string: 2.10.1 + pg-pool: 3.11.0(pg@8.17.2) + pg-protocol: 1.11.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.3.0 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + + picocolors@1.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + pirates@4.0.7: {} + + pkce-challenge@5.0.1: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.1 + pathe: 2.0.3 + + pkg-up@3.1.0: + dependencies: + find-up: 3.0.0 + + possible-typed-array-names@1.1.0: {} + + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.10)(tsx@4.21.0)(yaml@1.10.2): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 2.6.1 + postcss: 8.5.10 + tsx: 4.21.0 + yaml: 1.10.2 + + postcss-selector-parser@7.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@8.5.10: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postgres-array@2.0.0: {} + + postgres-bytea@1.0.1: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + powershell-utils@0.1.0: {} + + prelude-ls@1.2.1: {} + + pretty-ms@9.3.0: + dependencies: + parse-ms: 4.0.0 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-information@7.1.0: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-from-env@2.1.0: {} + + punycode@2.3.1: {} + + qs@6.14.1: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + range-parser@1.2.1: {} + + raw-body@3.0.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.7.2 + unpipe: 1.0.0 + + react-day-picker@9.13.0(react@19.2.3): + dependencies: + '@date-fns/tz': 1.4.1 + date-fns: 4.1.0 + date-fns-jalali: 4.1.0-0 + react: 19.2.3 + + react-dev-inspector@2.0.1(@types/react@19.2.10)(eslint@9.39.2(jiti@2.6.1))(react@19.2.3)(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)): + dependencies: + '@react-dev-inspector/babel-plugin': 2.0.1 + '@react-dev-inspector/middleware': 2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + '@react-dev-inspector/umi3-plugin': 2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + '@react-dev-inspector/umi4-plugin': 2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + '@react-dev-inspector/vite-plugin': 2.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + '@types/react-reconciler': 0.33.0(@types/react@19.2.10) + hotkeys-js: 3.13.15 + picocolors: 1.0.0 + react: 19.2.3 + react-dev-utils: 12.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + transitivePeerDependencies: + - '@types/react' + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + + react-dev-utils@12.0.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)): + dependencies: + '@babel/code-frame': 7.28.6 + address: 1.2.2 + browserslist: 4.28.1 + chalk: 4.1.2 + cross-spawn: 7.0.6 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.3)) + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.21 + is-root: 2.1.0 + loader-utils: 3.3.1 + open: 8.4.2 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.1.0 + recursive-readdir: 2.2.3 + shell-quote: 1.8.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + webpack: 5.104.1(esbuild@0.27.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + + react-dom@19.2.3(react@19.2.3): + dependencies: + react: 19.2.3 + scheduler: 0.27.0 + + react-error-overlay@6.1.0: {} + + react-hook-form@7.71.1(react@19.2.3): + dependencies: + react: 19.2.3 + + react-is@16.13.1: {} + + react-is@18.3.1: {} + + react-markdown@10.1.0(@types/react@19.2.10)(react@19.2.3): + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/react': 19.2.10 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.1 + react: 19.2.3 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + unified: 11.0.5 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + react-remove-scroll-bar@2.3.8(@types/react@19.2.10)(react@19.2.3): + dependencies: + react: 19.2.3 + react-style-singleton: 2.2.3(@types/react@19.2.10)(react@19.2.3) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.10 + + react-remove-scroll@2.7.2(@types/react@19.2.10)(react@19.2.3): + dependencies: + react: 19.2.3 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.10)(react@19.2.3) + react-style-singleton: 2.2.3(@types/react@19.2.10)(react@19.2.3) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.10)(react@19.2.3) + use-sidecar: 1.1.3(@types/react@19.2.10)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.10 + + react-resizable-panels@4.5.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + react-smooth@4.0.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + fast-equals: 5.4.0 + prop-types: 15.8.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + + react-style-singleton@2.2.3(@types/react@19.2.10)(react@19.2.3): + dependencies: + get-nonce: 1.0.1 + react: 19.2.3 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.10 + + react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@babel/runtime': 7.29.2 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + react@19.2.3: {} + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.1.2: {} + + recast@0.23.11: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + + recharts-scale@0.4.5: + dependencies: + decimal.js-light: 2.5.1 + + recharts@2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + clsx: 2.1.1 + eventemitter3: 4.0.7 + lodash: 4.18.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-is: 18.3.1 + react-smooth: 4.0.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + recharts-scale: 0.4.5 + tiny-invariant: 1.3.3 + victory-vendor: 36.9.2 + + recursive-readdir@2.2.3: + dependencies: + minimatch: 3.1.2 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + 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 + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + rettime@0.7.0: {} + + reusify@1.1.0: {} + + rollup@4.59.0: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 + fsevents: 2.3.3 + + router@2.2.0: + dependencies: + debug: 4.4.3 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.3.0 + transitivePeerDependencies: + - supports-color + + run-applescript@7.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safer-buffer@2.1.2: {} + + scheduler@0.27.0: {} + + schema-utils@2.7.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.3.3: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.18.0 + ajv-formats: 2.1.1(ajv@8.18.0) + ajv-keywords: 5.1.0(ajv@8.18.0) + + semver@6.3.1: {} + + semver@7.7.3: {} + + send@1.2.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.1 + mime-types: 3.0.2 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.1: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.1 + transitivePeerDependencies: + - supports-color + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + setprototypeof@1.2.0: {} + + shadcn@3.7.0(@cfworker/json-schema@4.1.1)(@types/node@20.19.30)(hono@4.11.7)(typescript@5.9.3): + dependencies: + '@antfu/ni': 25.0.0 + '@babel/core': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.28.6) + '@babel/preset-typescript': 7.28.5(@babel/core@7.28.6) + '@dotenvx/dotenvx': 1.52.0 + '@modelcontextprotocol/sdk': 1.25.3(@cfworker/json-schema@4.1.1)(hono@4.11.7)(zod@3.25.76) + '@types/validate-npm-package-name': 4.0.2 + browserslist: 4.28.1 + commander: 14.0.2 + cosmiconfig: 9.0.0(typescript@5.9.3) + dedent: 1.7.1 + deepmerge: 4.3.1 + diff: 8.0.3 + execa: 9.6.1 + fast-glob: 3.3.3 + fs-extra: 11.3.3 + fuzzysort: 3.1.0 + https-proxy-agent: 7.0.6 + kleur: 4.1.5 + msw: 2.12.7(@types/node@20.19.30)(typescript@5.9.3) + node-fetch: 3.3.2 + open: 11.0.0 + ora: 8.2.0 + postcss: 8.5.10 + postcss-selector-parser: 7.1.1 + prompts: 2.4.2 + recast: 0.23.11 + stringify-object: 5.0.0 + ts-morph: 26.0.0 + tsconfig-paths: 4.2.0 + validate-npm-package-name: 7.0.2 + zod: 3.25.76 + zod-to-json-schema: 3.25.1(zod@3.25.76) + transitivePeerDependencies: + - '@cfworker/json-schema' + - '@types/node' + - babel-plugin-macros + - hono + - supports-color + - typescript + + sharp@0.34.5: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.3: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + sonner@2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + space-separated-tokens@2.0.2: {} + + split2@4.2.0: {} + + stable-hash@0.0.5: {} + + statuses@2.0.2: {} + + stdin-discarder@0.2.2: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + strict-event-emitter@0.5.1: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + + string.prototype.matchall@4.0.12: + 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-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.1 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + stringify-object@5.0.0: + dependencies: + get-own-enumerable-keys: 1.0.0 + is-obj: 3.0.0 + is-regexp: 3.1.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + + strip-bom@3.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@4.0.0: {} + + strip-json-comments@3.1.1: {} + + strnum@2.2.3: {} + + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: + dependencies: + inline-style-parser: 0.2.7 + + styled-jsx@5.1.6(@babel/core@7.28.6)(react@19.2.3): + dependencies: + client-only: 0.0.1 + react: 19.2.3 + optionalDependencies: + '@babel/core': 7.28.6 + + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.15 + ts-interface-checker: 0.1.13 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tagged-tag@1.0.0: {} + + tailwind-merge@2.6.0: {} + + tailwindcss@4.1.18: {} + + tapable@1.1.3: {} + + tapable@2.3.0: {} + + tapable@2.3.3: {} + + terser-webpack-plugin@5.4.0(esbuild@0.27.3)(webpack@5.104.1(esbuild@0.27.3)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + terser: 5.46.1 + webpack: 5.104.1(esbuild@0.27.3) + optionalDependencies: + esbuild: 0.27.3 + + terser@5.46.1: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.16.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + tiny-invariant@1.3.3: {} + + tinyexec@0.3.2: {} + + tinyexec@1.0.2: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + tldts-core@7.0.19: {} + + tldts@7.0.19: + dependencies: + tldts-core: 7.0.19 + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tough-cookie@6.0.0: + dependencies: + tldts: 7.0.19 + + tree-kill@1.2.2: {} + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-api-utils@2.4.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + ts-interface-checker@0.1.13: {} + + ts-morph@26.0.0: + dependencies: + '@ts-morph/common': 0.27.0 + code-block-writer: 13.0.3 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tsup@8.5.1(jiti@2.6.1)(postcss@8.5.10)(tsx@4.21.0)(typescript@5.9.3)(yaml@1.10.2): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.3) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.3 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.10)(tsx@4.21.0)(yaml@1.10.2) + resolve-from: 5.0.0 + rollup: 4.59.0 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.10 + typescript: 5.9.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsx@4.21.0: + dependencies: + esbuild: 0.27.3 + get-tsconfig: 4.13.0 + optionalDependencies: + fsevents: 2.3.3 + + tw-animate-css@1.4.0: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@5.4.2: + dependencies: + tagged-tag: 1.0.0 + + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.2 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + ufo@1.6.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@6.21.0: {} + + unicorn-magic@0.3.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + unrs-resolver@1.11.1: + dependencies: + napi-postinstall: 0.3.4 + 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 + + until-async@3.0.2: {} + + update-browserslist-db@1.2.3(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.3(@types/react@19.2.10)(react@19.2.3): + dependencies: + react: 19.2.3 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.10 + + use-sidecar@1.1.3(@types/react@19.2.10)(react@19.2.3): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.3 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.10 + + use-sync-external-store@1.6.0(react@19.2.3): + dependencies: + react: 19.2.3 + + util-deprecate@1.0.2: {} + + validate-npm-package-name@7.0.2: {} + + vary@1.1.2: {} + + vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + victory-vendor@36.9.2: + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-ease': 3.0.2 + '@types/d3-interpolate': 3.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-shape': 3.1.8 + '@types/d3-time': 3.0.4 + '@types/d3-timer': 3.0.2 + d3-array: 3.2.4 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-timer: 3.0.1 + + watchpack@2.5.1: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + web-streams-polyfill@3.3.3: {} + + webpack-sources@3.3.4: {} + + webpack@5.104.1(esbuild@0.27.3): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.16.0 + acorn-import-phases: 1.0.4(acorn@8.16.0) + browserslist: 4.28.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.20.1 + es-module-lexer: 2.0.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.1 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.3 + tapable: 2.3.3 + terser-webpack-plugin: 5.4.0(esbuild@0.27.3)(webpack@5.104.1(esbuild@0.27.3)) + watchpack: 2.5.1 + webpack-sources: 3.3.4 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.20 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-pm-runs@1.1.0: {} + + which-typed-array@1.1.20: + 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 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@4.0.0: + dependencies: + isexe: 3.1.1 + + word-wrap@1.2.5: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + ws@8.19.0: {} + + wsl-utils@0.3.1: + dependencies: + is-wsl: 3.1.0 + powershell-utils: 0.1.0 + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml@1.10.2: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yoctocolors-cjs@2.1.3: {} + + yoctocolors@2.1.2: {} + + zod-to-json-schema@3.25.1(zod@3.25.76): + dependencies: + zod: 3.25.76 + + zod-validation-error@4.0.2(zod@4.3.6): + dependencies: + zod: 4.3.6 + + zod@3.25.76: {} + + zod@4.3.6: {} + + zwitch@2.0.4: {} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..297374d --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,7 @@ +const config = { + plugins: { + '@tailwindcss/postcss': {}, + }, +}; + +export default config; diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1ddedcd0eb17c86048614e9a2851e7fdb9a7ef88 GIT binary patch literal 47292 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


3t9wVT6zMrUI)Fj7`QFKc7aZ-K`RGm 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

xorX<*VEfOw(j4N&cI0C?fO$O%#F2mNU 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 literal 0 HcmV?d00001 diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..71c6955984ffcd034aba039b30f9f85252d0cd4a GIT binary patch literal 2907 zcmV-h3#9akP)I85rQz7utj7EBO;3+n}R?boe6_1Vi{LPt1P$Cff;JFm=TrIvSzAWMtk|E z?(4uXGv#)xPSvfqod3K3IsN)xjpj#2Z*R*GjYczw%mHNJ+ryRpeJeK}KeFuXqYp2* zytRAA=UX?<_+sxv3$HwRc*TYO(_IhZ+auKgv;!#y4dnP`1NhI2z*Wno{?#kCbhiF! zQcD#ohZi6x8ivmwfJgB|@%j-61d*SYi@NG^OrJCg+c!+Tbm`*y6~I3%Hx>e5(9agv zXf%V#{JYC*S~st1`l!010J7VYbU5XtqIhG0V0Jtb2_iC`!g^LqWs zKp>cG95oC*Yui5h?&_A7fz*S45~8asB@7_#)hDO!n%G+z4`WA_=e0A9s7a$*B`6@kZa`T_mTPyQ^#P53C#m zwLY)^?T)d1Wko?SoGs>6JPEJY1I6Qp*Q>zq^CH{tMUX%YfT%E`pc({*Kt;l29!%II zS8U|)e4IJZ-UocDzg6phhkEhpp2ib-Q3Wh-i+MdV+_DR9w+s&fP&_Jx*XM=L=Y!wx zLw2@b1t6}ZoJm0i0)F^>UW9_#knFBlX<-DtpnNJI0U_@M1AbT~XRNj&2Osp!T6e3a=0;7v zd1-R##L?mJ&6JRoU5;c{mIF>_mI^_{$=qtSs*ZSl%1t*2gwIPHNd+m9OZGr%lqJfphc@sMys@p#}>QvE?7a>9O`etZgmb9nZNMF{y*F1lq`+~sm&|Ju>d z|5qtK{LR?9+A=RJG@o=hBuJ7?6>&Kopjj)L>hti|H-3fW*H7c!cb-6bc`JM{A-|T^{OG=J9 z>{f_^5GO8>*{QQ1~kpWtH`k0?5HRWsKsq zhu%PA@q!6xtjSduLjYV(N0MR%%pR9_9q8gTe>~P)S5Y9tXkiD$MGzNwUV!4s!kM07 zc)B`!+Y?wX^r&!gHI!GUOQ-Yz`+*ZLh|c=f>d6m!<*Nd+^D%;~1JB z!8^SZ&^f*_bHs5CnlZ0TadH&Kf^1 zY%9XcJInF*;aZHV;1HHHXv|B)Gke=`#~szsXmpr8Hi!?7*5Jy?27Le8WW+Ds1N`eC z?(3M0ELI1<+XkB?!7ka<;5Z?c7j)wIhLOuO56mCB*XaTzjh%i8rU?%(hajX!GEeLruUJ z8}Q2c`(UBfUzRGY_Lo(JAc!$Vmaubq*)Gkx+4(1|B1Zt?97g~+FboUDZNno=!#L6r z#{P~dL{<-jUWX~w0($0paHu1KH+L5y@s|a_H@ooMj$!cIhCpUDC{WVy_K9)8m6aG? z76C)Eu-mO_c|{dKh}$I*+n1Ie(`=ZNe^N||#yO6Kz;iH~8B~`z@yKF74tInwWt0RmI2y~3{*yqsL$15L9-ordltGDRYGf^ zK?FrnP#xwuJ}%h=Y+F)tOtX36(0vXY2a0B51c2vR7%dEDHo4W6?pYc@)Xzb0Fhk&3 zr0EQ3skGz5)&jiHQ-pU9R^W~@8wTI5hrwt{wQ|OLK5d`O0jM2$PwLaV!IdreU>mxbH4E9-JYgYnlR@HiM>V5I~k? zpvyF1e5D=Ta{{OwDk4p50LL-vJpwVk&Wcs75`I13hYya9LT=azGev_mIq5UAg^q>& zb{yLCq_4vKCx)t}Lvd;>47C^`7bs0U*IJG}1B*7?P$( zhRz6Hy`JhHU8Wf|1p@Xg_G0raH!kif$BZ!{XfrJkMNTborqPnDC~)C#eJ%AGV7V}% zR{27!H$mW;q~2&jW4R5hCP>)O?m}^d2f0Q7Se6Axf|QB`%Ro@)oVqd+6wN^7DIC5p zjFYQ_cztIv?w^&1G+nBMJjW&p87RpOM^Z4vVw$GZp3xgjFquuT3KV1q1G|+5$5L^l z(S(OrRrTN0?!B@7etllm=6NBsRhSb?ngx(pJwd_)(_MIIp%2}&gScyy53VfI^+xFQ zMpcZsLV|#$>5QsFRfSGW9VMf^-j0ctB1RW6sL5yGcjyx{#$*GRmsSzYn`efW7L7W2 z^KkQ~`XU~FyEayvXF*Fjh4~FUI@=^Xw#1F|n<6;3tpuAE4n<9=8zRpjLz{^VodJq0 zV&3==b}osad%BFNBRPzSm=SUs;I$jTn$u&&VGeISIsU<0HE$h*01WBv9?@43r7%2X zjJ1tmF|&@x;wCFP#!FZ`$$^LG%Q&?zjF)#5;==Y~oZK`FCpT5%m7V2yYE1|$$BAez zrceS@KX^9ix^XahRCnb5(#L8Ftza$Mq)XJt^1Y_S@UR*6`839rF_>J*qrI9( z`$!&>D_K=^ObLV9JPO6x=7eI?#|2uOtjrg%e^v40z$2NrYW%FD*~NYJljbyguSOLb z0Wdkkb&$60}K?(Iuk_g_%vBkNbC4 zPajA<_~usprv{)I)Y5X}aN0#3>nvG0?@r&PssbxQZVFB@6B4I~#A;z@wQz7c$kt3m z6bq_`ikNe!^5@4phpi&pJ(7du8d%sb8@(xrf!^rPxZK-VwWp(~d&9ik)5|9X-(TF~ zzqVvT_O;dR;rF*J%6oR-s^X3B9c!p2B^*d`b0I%8{tXm*##?L{=STnm002ovPDHLk FV1lspW=Q}5 literal 0 HcmV?d00001 diff --git a/public/file.svg b/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/mozhe-api-logo.png b/public/icons/mozhe-api-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..524ef3a16bab282b15e54ece8798debd6535a84a GIT binary patch literal 120082 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≪VV!m`~8BP}da^z@ET^pyK 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 KtZOV$@&5;*Pvd(4 literal 0 HcmV?d00001 diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9f26d0430e513b1384daf2e143d0a3db4dce6e16 GIT binary patch literal 8707 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 literal 0 HcmV?d00001 diff --git a/public/mozhe-api-icon.svg b/public/mozhe-api-icon.svg new file mode 100644 index 0000000..c31e736 --- /dev/null +++ b/public/mozhe-api-icon.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/public/next.svg b/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/window.svg b/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/repair_recovered_work_owners.js b/repair_recovered_work_owners.js new file mode 100644 index 0000000..92e775a --- /dev/null +++ b/repair_recovered_work_owners.js @@ -0,0 +1,98 @@ +const { Pool } = require('pg'); +require('dotenv').config({ path: '.env.local' }); + +const SYSTEM_USER_ID = '00000000-0000-0000-0000-000000000000'; + +(async () => { + const pool = new Pool({ connectionString: process.env.LOCAL_DB_URL }); + const client = await pool.connect(); + try { + await client.query('BEGIN'); + + const byUniqueCustomModel = await client.query(` + WITH model_owners AS ( + SELECT + params->>'model' AS model, + ARRAY_AGG(DISTINCT user_id) FILTER (WHERE user_id IS NOT NULL AND user_id <> $1) AS owner_ids + FROM works + WHERE status = 'completed' + AND params->>'model' LIKE 'custom:%' + AND EXISTS (SELECT 1 FROM profiles p WHERE p.id = works.user_id) + GROUP BY params->>'model' + ), + unique_model_owners AS ( + SELECT model, owner_ids[1] AS owner_id + FROM model_owners + WHERE CARDINALITY(owner_ids) = 1 + ), + updated AS ( + UPDATE works w + SET user_id = umo.owner_id, + updated_at = NOW() + FROM unique_model_owners umo + WHERE w.user_id = $1 + AND w.status = 'completed' + AND w.is_public = true + AND w.params->>'model' = umo.model + RETURNING w.id, w.user_id, w.params->>'model' AS model + ) + SELECT COUNT(*)::int AS fixed_count, json_agg(updated) AS rows + FROM updated + `, [SYSTEM_USER_ID]); + + const byExactPromptTime = await client.query(` + WITH candidates AS ( + SELECT DISTINCT ON (public.id) + public.id AS public_id, + private.user_id AS owner_user_id, + ABS(EXTRACT(EPOCH FROM (private.created_at - public.created_at))) AS time_distance + FROM works public + JOIN works private + ON private.id <> public.id + AND private.user_id IS NOT NULL + AND private.user_id <> $1 + AND COALESCE(private.prompt, '') <> '' + AND private.prompt = public.prompt + AND private.created_at BETWEEN public.created_at - INTERVAL '30 minutes' AND public.created_at + INTERVAL '30 minutes' + JOIN profiles p ON p.id = private.user_id + WHERE public.user_id = $1 + AND public.is_public = true + AND public.status = 'completed' + ORDER BY public.id, time_distance + ), + unambiguous AS ( + SELECT public_id, MIN(owner_user_id::text)::uuid AS owner_user_id + FROM candidates + GROUP BY public_id + HAVING COUNT(DISTINCT owner_user_id) = 1 + ), + updated AS ( + UPDATE works w + SET user_id = unambiguous.owner_user_id, + updated_at = NOW() + FROM unambiguous + WHERE w.id = unambiguous.public_id + AND w.user_id = $1 + RETURNING w.id, w.user_id, w.params->>'model' AS model + ) + SELECT COUNT(*)::int AS fixed_count, json_agg(updated) AS rows + FROM updated + `, [SYSTEM_USER_ID]); + + await client.query('COMMIT'); + + console.log(JSON.stringify({ + byUniqueCustomModel: byUniqueCustomModel.rows[0] || { fixed_count: 0, rows: [] }, + byExactPromptTime: byExactPromptTime.rows[0] || { fixed_count: 0, rows: [] }, + }, null, 2)); + } catch (error) { + await client.query('ROLLBACK'); + throw error; + } finally { + client.release(); + await pool.end(); + } +})().catch(error => { + console.error(error); + process.exit(1); +}); diff --git a/scripts/apply-database-patch.sh b/scripts/apply-database-patch.sh new file mode 100644 index 0000000..ad3d105 --- /dev/null +++ b/scripts/apply-database-patch.sh @@ -0,0 +1,20 @@ +#!/bin/bash +set -Eeuo pipefail + +COZE_WORKSPACE_PATH="${COZE_WORKSPACE_PATH:-$(pwd)}" + +if [ -f "${COZE_WORKSPACE_PATH}/.env.local" ]; then + set +u + set -a + # shellcheck disable=SC1091 + source "${COZE_WORKSPACE_PATH}/.env.local" + set +a + set -u +fi + +if [ -z "${LOCAL_DB_URL:-}" ]; then + echo "LOCAL_DB_URL is not set" >&2 + exit 1 +fi + +psql "${LOCAL_DB_URL}" -v ON_ERROR_STOP=1 -f "${COZE_WORKSPACE_PATH}/scripts/database-optimization-patch.sql" diff --git a/scripts/backup-create.sh b/scripts/backup-create.sh new file mode 100644 index 0000000..b19a64f --- /dev/null +++ b/scripts/backup-create.sh @@ -0,0 +1,72 @@ +#!/bin/bash +set -Eeuo pipefail + +COZE_WORKSPACE_PATH="${COZE_WORKSPACE_PATH:-$(pwd)}" +REQUESTED_BACKUP_DIR="${BACKUP_DIR:-}" +REQUESTED_LOCAL_DB_URL="${LOCAL_DB_URL:-}" +TIMESTAMP="$(date +%Y%m%d-%H%M%S)" +TMP_DIR="$(mktemp -d)" + +cleanup() { + rm -rf "${TMP_DIR}" +} +trap cleanup EXIT + +cd "${COZE_WORKSPACE_PATH}" + +if [ -f ".env.local" ]; then + set +u + set -a + # shellcheck disable=SC1091 + source ".env.local" + set +a + set -u +fi + +[ -n "${REQUESTED_LOCAL_DB_URL}" ] && LOCAL_DB_URL="${REQUESTED_LOCAL_DB_URL}" +BACKUP_DIR="${REQUESTED_BACKUP_DIR:-${BACKUP_DIR:-${COZE_WORKSPACE_PATH}/backups}}" +BACKUP_FILE="${BACKUP_DIR}/miaojing-backup-${TIMESTAMP}.tar.gz" +mkdir -p "${BACKUP_DIR}" +chmod 700 "${BACKUP_DIR}" + +if [ -z "${LOCAL_DB_URL:-}" ]; then + echo "LOCAL_DB_URL is required in .env.local or environment." >&2 + exit 1 +fi + +command -v pg_dump >/dev/null 2>&1 || { + echo "pg_dump is required to create backups." >&2 + exit 1 +} + +pg_dump "${LOCAL_DB_URL}" --format=custom --file "${TMP_DIR}/database.dump" + +STORAGE_SOURCE="${LOCAL_STORAGE_DIR:-${COZE_WORKSPACE_PATH}/local-storage}" +if [ -d "${STORAGE_SOURCE}" ]; then + cp -a "${STORAGE_SOURCE}" "${TMP_DIR}/local-storage" +fi + +if [ -f ".env.local" ]; then + cp ".env.local" "${TMP_DIR}/.env.local" +fi + +if [ -f "package.json" ]; then + cp "package.json" "${TMP_DIR}/package.json" +fi + +cat > "${TMP_DIR}/manifest.json" <10 {print $2}' | xargs -r rm -f + +echo "${BACKUP_FILE}" diff --git a/scripts/backup-list.sh b/scripts/backup-list.sh new file mode 100644 index 0000000..7274265 --- /dev/null +++ b/scripts/backup-list.sh @@ -0,0 +1,32 @@ +#!/bin/bash +set -Eeuo pipefail + +COZE_WORKSPACE_PATH="${COZE_WORKSPACE_PATH:-$(pwd)}" +REQUESTED_BACKUP_DIR="${BACKUP_DIR:-}" + +cd "${COZE_WORKSPACE_PATH}" + +if [ -f ".env.local" ]; then + set +u + set -a + # shellcheck disable=SC1091 + source ".env.local" + set +a + set -u +fi + +BACKUP_DIR="${REQUESTED_BACKUP_DIR:-${BACKUP_DIR:-${COZE_WORKSPACE_PATH}/backups}}" + +mkdir -p "${BACKUP_DIR}" +chmod 700 "${BACKUP_DIR}" + +if ! compgen -G "${BACKUP_DIR}/miaojing-backup-*.tar.gz" >/dev/null; then + echo "No backups found in ${BACKUP_DIR}" + exit 0 +fi + +printf '%-40s %-12s %s\n' "FILE" "SIZE" "MODIFIED" +find "${BACKUP_DIR}" -maxdepth 1 -name 'miaojing-backup-*.tar.gz' -type f \ + -printf '%T@ %f %s %TY-%Tm-%Td %TH:%TM\n' \ + | sort -rn \ + | awk '{printf "%-40s %-12s %s %s\n", $2, $3, $4, $5}' diff --git a/scripts/backup-restore.sh b/scripts/backup-restore.sh new file mode 100644 index 0000000..06f63d0 --- /dev/null +++ b/scripts/backup-restore.sh @@ -0,0 +1,65 @@ +#!/bin/bash +set -Eeuo pipefail + +COZE_WORKSPACE_PATH="${COZE_WORKSPACE_PATH:-$(pwd)}" +BACKUP_FILE="${1:-}" +TMP_DIR="$(mktemp -d)" + +cleanup() { + rm -rf "${TMP_DIR}" +} +trap cleanup EXIT + +if [ -z "${BACKUP_FILE}" ]; then + echo "Usage: pnpm backup:restore " >&2 + exit 2 +fi + +if [ ! -f "${BACKUP_FILE}" ]; then + echo "Backup file not found: ${BACKUP_FILE}" >&2 + exit 2 +fi + +cd "${COZE_WORKSPACE_PATH}" + +if [ -f ".env.local" ]; then + set +u + set -a + # shellcheck disable=SC1091 + source ".env.local" + set +a + set -u +fi + +if [ -z "${LOCAL_DB_URL:-}" ]; then + echo "LOCAL_DB_URL is required in .env.local or environment." >&2 + exit 1 +fi + +command -v pg_restore >/dev/null 2>&1 || { + echo "pg_restore is required to restore backups." >&2 + exit 1 +} + +tar -xzf "${BACKUP_FILE}" -C "${TMP_DIR}" + +if [ ! -f "${TMP_DIR}/database.dump" ]; then + echo "Invalid backup: missing database.dump." >&2 + exit 2 +fi + +pg_restore --clean --if-exists --no-owner --dbname "${LOCAL_DB_URL}" "${TMP_DIR}/database.dump" + +if [ -d "${TMP_DIR}/local-storage" ]; then + STORAGE_TARGET="${LOCAL_STORAGE_DIR:-${COZE_WORKSPACE_PATH}/local-storage}" + rm -rf "${STORAGE_TARGET}" + mkdir -p "$(dirname "${STORAGE_TARGET}")" + cp -a "${TMP_DIR}/local-storage" "${STORAGE_TARGET}" +fi + +if [ -f "${TMP_DIR}/.env.local" ]; then + cp "${TMP_DIR}/.env.local" ".env.local" + chmod 600 ".env.local" +fi + +echo "Restore completed from ${BACKUP_FILE}" diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100644 index 0000000..9685f36 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,21 @@ +#!/bin/bash +set -Eeuo pipefail + +COZE_WORKSPACE_PATH="${COZE_WORKSPACE_PATH:-$(pwd)}" + +cd "${COZE_WORKSPACE_PATH}" + +if [ "${INSTALL_DEPS:-0}" = "1" ] || [ ! -d node_modules ]; then + echo "Installing dependencies..." + pnpm install --prefer-frozen-lockfile --prefer-offline --loglevel debug --reporter=append-only +else + echo "Skipping dependency install. Set INSTALL_DEPS=1 to force it." +fi + +echo "Building the Next.js project..." +pnpm next build + +echo "Bundling server with tsup..." +pnpm tsup src/server.ts --format cjs --platform node --target node20 --outDir dist --no-splitting --no-minify + +echo "Build completed successfully!" diff --git a/scripts/check-boundaries.sh b/scripts/check-boundaries.sh new file mode 100644 index 0000000..567f1c1 --- /dev/null +++ b/scripts/check-boundaries.sh @@ -0,0 +1,50 @@ +#!/bin/bash +set -Eeuo pipefail + +fail=0 + +search_pattern() { + local pattern="$1" + shift + + if command -v rg >/dev/null 2>&1; then + rg -n "$pattern" "$@" || true + else + grep -RInE "$pattern" "$@" || true + fi +} + +check_no_match() { + local label="$1" + local pattern="$2" + shift 2 + local output + + output="$(search_pattern "$pattern" "$@")" + if [ -n "$output" ]; then + echo "Boundary violation: ${label}" >&2 + echo "$output" >&2 + fail=1 + fi +} + +check_no_match \ + "web module must not import server database/storage internals" \ + "@/storage|@/lib/local-storage|@/lib/session-auth|@/lib/admin-auth|@/lib/runtime-env|@/lib/server-crypto" \ + src/modules/web + +check_no_match \ + "console module must not import server database/storage internals directly" \ + "@/storage|@/lib/local-storage|@/lib/runtime-env|@/lib/server-crypto" \ + src/modules/console + +check_no_match \ + "shared module must not depend on app-specific modules" \ + "@/modules/(web|console|api)|@/app/|@/components/admin" \ + src/modules/shared + +if [ "$fail" -ne 0 ]; then + exit 1 +fi + +echo "Module boundaries OK" diff --git a/scripts/database-optimization-patch.sql b/scripts/database-optimization-patch.sql new file mode 100644 index 0000000..fe3075c --- /dev/null +++ b/scripts/database-optimization-patch.sql @@ -0,0 +1,169 @@ +-- Idempotent local PostgreSQL patch for production maintenance. +-- It creates missing application tables and adds indexes used by hot paths. + +CREATE EXTENSION IF NOT EXISTS "pgcrypto"; +CREATE EXTENSION IF NOT EXISTS "pg_trgm"; + +CREATE TABLE IF NOT EXISTS works ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + user_id UUID, + title VARCHAR(255), + type VARCHAR(32) NOT NULL, + prompt TEXT, + negative_prompt TEXT, + params JSONB DEFAULT '{}'::jsonb, + result_url TEXT, + thumbnail_url TEXT, + width INTEGER, + height INTEGER, + duration NUMERIC(6, 2), + is_public BOOLEAN NOT NULL DEFAULT false, + likes_count INTEGER NOT NULL DEFAULT 0, + credits_cost INTEGER NOT NULL DEFAULT 0, + status VARCHAR(32) NOT NULL DEFAULT 'completed', + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE TABLE IF NOT EXISTS orders ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + user_id UUID, + order_no VARCHAR(64) NOT NULL UNIQUE, + product_type VARCHAR(32) NOT NULL, + product_name VARCHAR(255) NOT NULL, + amount NUMERIC(10, 2) NOT NULL, + credits_amount INTEGER, + status VARCHAR(32) NOT NULL DEFAULT 'pending', + payment_method VARCHAR(32), + paid_at TIMESTAMPTZ, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE TABLE IF NOT EXISTS user_api_keys ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + user_id UUID, + provider VARCHAR(64) NOT NULL, + api_url TEXT, + model_name VARCHAR(128), + api_key_encrypted TEXT NOT NULL, + api_key_preview VARCHAR(20), + is_active BOOLEAN NOT NULL DEFAULT true, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE TABLE IF NOT EXISTS work_likes ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + user_id UUID, + work_id UUID NOT NULL REFERENCES works(id) ON DELETE CASCADE, + created_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +CREATE TABLE IF NOT EXISTS generation_jobs ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + type VARCHAR(16) NOT NULL, + status VARCHAR(16) NOT NULL DEFAULT 'queued', + payload JSONB NOT NULL DEFAULT '{}'::jsonb, + result JSONB, + error TEXT, + user_id UUID, + provider VARCHAR(128), + model_name VARCHAR(255), + api_url TEXT, + progress JSONB NOT NULL DEFAULT '{}'::jsonb, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + started_at TIMESTAMPTZ, + finished_at TIMESTAMPTZ, + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +ALTER TABLE generation_jobs ADD COLUMN IF NOT EXISTS user_id UUID; +ALTER TABLE generation_jobs ADD COLUMN IF NOT EXISTS provider VARCHAR(128); +ALTER TABLE generation_jobs ADD COLUMN IF NOT EXISTS model_name VARCHAR(255); +ALTER TABLE generation_jobs ADD COLUMN IF NOT EXISTS api_url TEXT; +ALTER TABLE generation_jobs ADD COLUMN IF NOT EXISTS progress JSONB NOT NULL DEFAULT '{}'::jsonb; + +CREATE INDEX IF NOT EXISTS works_user_created_idx ON works (user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS works_public_status_created_idx ON works (is_public, status, created_at DESC); +CREATE INDEX IF NOT EXISTS works_public_status_likes_idx ON works (is_public, status, likes_count DESC); +CREATE INDEX IF NOT EXISTS works_type_created_idx ON works (type, created_at DESC); +CREATE INDEX IF NOT EXISTS works_status_created_idx ON works (status, created_at DESC); + +CREATE INDEX IF NOT EXISTS credit_transactions_user_created_idx ON credit_transactions (user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS credit_transactions_type_created_idx ON credit_transactions (type, created_at DESC); + +CREATE INDEX IF NOT EXISTS orders_user_created_idx ON orders (user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS orders_status_created_idx ON orders (status, created_at DESC); +CREATE INDEX IF NOT EXISTS orders_order_no_idx ON orders (order_no); + +CREATE INDEX IF NOT EXISTS user_api_keys_user_active_idx ON user_api_keys (user_id, is_active); +CREATE INDEX IF NOT EXISTS user_api_keys_provider_idx ON user_api_keys (provider); + +CREATE INDEX IF NOT EXISTS work_likes_user_id_idx ON work_likes (user_id); +CREATE INDEX IF NOT EXISTS work_likes_work_id_idx ON work_likes (work_id); +CREATE UNIQUE INDEX IF NOT EXISTS work_likes_user_work_uniq ON work_likes (user_id, work_id); + +CREATE INDEX IF NOT EXISTS announcements_active_window_idx ON announcements (is_active, starts_at, expires_at); +CREATE INDEX IF NOT EXISTS profiles_email_trgm_idx ON profiles USING GIN (LOWER(email) gin_trgm_ops); +CREATE INDEX IF NOT EXISTS profiles_nickname_trgm_idx ON profiles USING GIN (LOWER(COALESCE(nickname, '')) gin_trgm_ops); +CREATE INDEX IF NOT EXISTS profiles_phone_trgm_idx ON profiles USING GIN (LOWER(COALESCE(phone, '')) gin_trgm_ops); +CREATE INDEX IF NOT EXISTS generation_jobs_status_created_idx ON generation_jobs (status, created_at DESC); +CREATE INDEX IF NOT EXISTS generation_jobs_status_updated_idx ON generation_jobs (status, updated_at DESC); +CREATE INDEX IF NOT EXISTS generation_jobs_running_timeout_idx ON generation_jobs (updated_at) WHERE status = 'running'; +CREATE INDEX IF NOT EXISTS generation_jobs_created_idx ON generation_jobs (created_at DESC); +CREATE INDEX IF NOT EXISTS generation_jobs_user_created_idx ON generation_jobs (user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS generation_jobs_provider_model_created_idx ON generation_jobs (type, provider, model_name, created_at DESC); + +CREATE TABLE IF NOT EXISTS platform_log_settings ( + id INTEGER PRIMARY KEY DEFAULT 1, + retention_days INTEGER NOT NULL DEFAULT 30, + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); +INSERT INTO platform_log_settings (id, retention_days) +VALUES (1, 30) +ON CONFLICT (id) DO NOTHING; + +CREATE TABLE IF NOT EXISTS platform_logs ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + type VARCHAR(32) NOT NULL, + level VARCHAR(16) NOT NULL DEFAULT 'info', + action VARCHAR(128) NOT NULL, + message TEXT NOT NULL, + user_id UUID, + user_name VARCHAR(255), + user_email VARCHAR(255), + target_type VARCHAR(64), + target_id VARCHAR(255), + ip_address VARCHAR(64), + user_agent TEXT, + metadata JSONB NOT NULL DEFAULT '{}'::jsonb, + created_at TIMESTAMPTZ NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS platform_logs_type_created_idx ON platform_logs (type, created_at DESC); +CREATE INDEX IF NOT EXISTS platform_logs_level_created_idx ON platform_logs (level, created_at DESC); +CREATE INDEX IF NOT EXISTS platform_logs_user_created_idx ON platform_logs (user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS platform_logs_created_idx ON platform_logs (created_at DESC); +CREATE INDEX IF NOT EXISTS platform_logs_user_name_idx ON platform_logs (LOWER(COALESCE(user_name, ''))); +CREATE INDEX IF NOT EXISTS platform_logs_user_email_idx ON platform_logs (LOWER(COALESCE(user_email, ''))); + +DROP POLICY IF EXISTS "site_config_write_auth" ON site_config; +DROP POLICY IF EXISTS "announcements_write_auth" ON announcements; +DROP POLICY IF EXISTS "site_stats_write_auth" ON site_stats; + +DROP POLICY IF EXISTS "site_config_admin_write" ON site_config; +DROP POLICY IF EXISTS "announcements_admin_write" ON announcements; + +CREATE POLICY "site_config_admin_write" ON site_config FOR ALL USING ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +) WITH CHECK ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +); + +CREATE POLICY "announcements_admin_write" ON announcements FOR ALL USING ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +) WITH CHECK ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +); + +ANALYZE; diff --git a/scripts/deploy-or-upgrade.sh b/scripts/deploy-or-upgrade.sh new file mode 100644 index 0000000..5661529 --- /dev/null +++ b/scripts/deploy-or-upgrade.sh @@ -0,0 +1,1156 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +APP_NAME="妙境 AI 创作平台" +APP_MARKER=".miaojing-deployment" +DEFAULT_PROJECT_DIR="/opt/miaojingAI" +DEFAULT_DATA_DIR="/var/lib/miaojingAI" +DEFAULT_WEB_PORT="5000" +DEFAULT_API_PORT="5100" +DEFAULT_CONSOLE_PORT="5200" +DEFAULT_ADMIN_ACCOUNT="admin" +DEFAULT_ADMIN_EMAIL="admin@example.com" +DEFAULT_DOMAIN="" +DEFAULT_NODE_MAJOR="24" +MIRRORS=( + "https://registry.npmmirror.com" + "https://registry.npmjs.org" + "https://mirrors.cloud.tencent.com/npm/" + "https://mirrors.huaweicloud.com/repository/npm/" +) +NODE_DIST_MIRRORS=( + "https://npmmirror.com/mirrors/node" + "https://mirrors.tuna.tsinghua.edu.cn/nodejs-release" + "https://mirrors.cloud.tencent.com/nodejs-release" + "https://mirrors.huaweicloud.com/nodejs" + "https://nodejs.org/dist" +) + +SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +LOG_FILE="" +PROJECT_DIR="" +DATA_DIR="" +WEB_PORT="" +API_PORT="" +CONSOLE_PORT="" +ADMIN_ACCOUNT="" +ADMIN_EMAIL="" +ADMIN_PASSWORD="" +LOCAL_DB_URL_INPUT="" +MODE="" +BACKUP_FILE="" +SERVER_HOST_IP="" +EXISTING_LOCAL_STORAGE_DIR="" +APP_PUBLIC_URL="" +NODE_MAJOR="${DEPLOY_NODE_MAJOR:-${DEFAULT_NODE_MAJOR}}" +NODE_INSTALL_ROOT="${DEPLOY_NODE_INSTALL_DIR:-}" +NODE_BIN_DIR="" +NODE_VERSION="" +NPM_BIN="npm" + +log() { + local message="$*" + if [ -n "${LOG_FILE:-}" ]; then + echo "[$(date '+%Y-%m-%d %H:%M:%S')] ${message}" | tee -a "${LOG_FILE}" + else + echo "[$(date '+%Y-%m-%d %H:%M:%S')] ${message}" + fi +} + +log_pipe() { + if [ -n "${LOG_FILE:-}" ]; then + tee -a "${LOG_FILE}" + else + cat + fi +} + +fail() { + local message="$*" + echo + echo "❌ 部署失败:${message}" | tee -a "${LOG_FILE:-/dev/null}" >&2 + if [ -n "${LOG_FILE:-}" ]; then + echo "详细日志:${LOG_FILE}" >&2 + fi + if [ -n "${BACKUP_FILE:-}" ]; then + echo "已生成升级前备份:${BACKUP_FILE}" >&2 + echo "如需回滚,可在部署目录执行:pnpm backup:restore \"${BACKUP_FILE}\"" >&2 + fi + exit 1 +} + +trap 'fail "脚本执行中断,请查看上方错误日志。"' ERR + +require_command() { + local command_name="$1" + local install_hint="$2" + if ! command -v "${command_name}" >/dev/null 2>&1; then + fail "缺少命令 ${command_name}。${install_hint}" + fi +} + +prompt_value() { + local var_name="$1" + local label="$2" + local default_value="$3" + local value="" + read -r -p "${label} [${default_value}]: " value + printf -v "${var_name}" '%s' "${value:-$default_value}" +} + +prompt_secret() { + local var_name="$1" + local label="$2" + local value="" + while [ -z "${value}" ]; do + read -r -s -p "${label}: " value + echo + if [ -z "${value}" ]; then + echo "该项不能为空,请重新输入。" + fi + done + printf -v "${var_name}" '%s' "${value}" +} + +random_hex() { + if command -v openssl >/dev/null 2>&1; then + openssl rand -hex 32 + else + head -c 32 /dev/urandom | od -An -tx1 | tr -d ' \n' + fi +} + +env_quote() { + local value="$1" + value="${value//\\/\\\\}" + value="${value//\"/\\\"}" + value="${value//\$/\\\$}" + value="${value//\`/\\\`}" + value="${value//$'\n'/\\n}" + printf '"%s"' "${value}" +} + +env_get_value() { + local key="$1" + local file="$2" + local line value + if [ ! -f "${file}" ]; then + return 1 + fi + + while IFS= read -r line || [ -n "${line}" ]; do + case "${line}" in + "${key}="*) + value="${line#*=}" + value="${value%$'\r'}" + if [[ "${value}" == \"*\" ]] && [[ "${value}" == *\" ]]; then + value="${value:1:${#value}-2}" + value="${value//\\\"/\"}" + value="${value//\\\\/\\}" + fi + printf '%s\n' "${value}" + return 0 + ;; + esac + done < "${file}" + + return 1 +} + +env_set_value() { + local key="$1" + local value="$2" + local file="$3" + local quoted tmp_file + quoted="$(env_quote "${value}")" + tmp_file="$(mktemp)" + + if [ -f "${file}" ]; then + awk -v key="${key}" -v replacement="${key}=${quoted}" ' + BEGIN { found = 0 } + $0 ~ "^" key "=" { + if (found == 0) print replacement + found = 1 + next + } + { print } + END { + if (found == 0) print replacement + } + ' "${file}" > "${tmp_file}" + else + printf '%s=%s\n' "${key}" "${quoted}" > "${tmp_file}" + fi + + mv "${tmp_file}" "${file}" +} + +js_quote() { + local value="$1" + value="${value//\\/\\\\}" + value="${value//\'/\\\'}" + value="${value//$'\n'/\\n}" + printf "'%s'" "${value}" +} + +detect_host_ip() { + SERVER_HOST_IP="$(hostname -I 2>/dev/null | awk '{print $1}')" + SERVER_HOST_IP="${SERVER_HOST_IP:-127.0.0.1}" +} + +prepend_node_path() { + if [ -n "${NODE_BIN_DIR:-}" ] && [ -d "${NODE_BIN_DIR}" ]; then + case ":${PATH}:" in + *":${NODE_BIN_DIR}:"*) ;; + *) export PATH="${NODE_BIN_DIR}:${PATH}" ;; + esac + NPM_BIN="${NODE_BIN_DIR}/npm" + else + NPM_BIN="npm" + fi +} + +node_major_version() { + node -p "Number(process.versions.node.split('.')[0])" 2>/dev/null || printf '0' +} + +node_version_matches_target() { + command -v node >/dev/null 2>&1 && [ "$(node_major_version)" = "${NODE_MAJOR}" ] +} + +node_platform_arch() { + local machine + machine="$(uname -m)" + case "${machine}" in + x86_64|amd64) + printf 'linux-x64' + ;; + aarch64|arm64) + printf 'linux-arm64' + ;; + *) + fail "暂不支持当前 CPU 架构:${machine}。部署脚本支持 x86_64/amd64 和 arm64/aarch64。" + ;; + esac +} + +detect_latest_node_version() { + local mirror="$1" + curl -fsSL "${mirror}/index.json" \ + | sed -n "s/.*\"version\"[[:space:]]*:[[:space:]]*\"\\(v${NODE_MAJOR}\\.[0-9][^\"]*\\)\".*/\\1/p" \ + | head -n 1 +} + +install_node_from_mirrors() { + local platform_arch version mirror archive_url tmp_dir archive install_dir node_bin + platform_arch="$(node_platform_arch)" + NODE_INSTALL_ROOT="${NODE_INSTALL_ROOT:-${DATA_DIR}/node}" + + mkdir -p "${NODE_INSTALL_ROOT}" + tmp_dir="$(mktemp -d)" + + for mirror in "${NODE_DIST_MIRRORS[@]}"; do + log "尝试从 Node.js 镜像源获取 ${NODE_MAJOR}.x LTS:${mirror}" + version="$(NODE_MAJOR="${NODE_MAJOR}" detect_latest_node_version "${mirror}" || true)" + if [ -z "${version}" ]; then + log "当前镜像源未获取到 Node.js ${NODE_MAJOR}.x 版本索引,切换下一个源。" + continue + fi + + archive="node-${version}-${platform_arch}.tar.xz" + archive_url="${mirror}/${version}/${archive}" + log "准备下载 Node.js ${version}:${archive_url}" + if ! curl -fL --retry 2 --connect-timeout 15 -o "${tmp_dir}/${archive}" "${archive_url}" 2>&1 | log_pipe; then + log "Node.js 下载失败,切换下一个镜像源。" + continue + fi + + install_dir="${NODE_INSTALL_ROOT}/node-${version}-${platform_arch}" + rm -rf "${install_dir}" + mkdir -p "${install_dir}" + tar -xJf "${tmp_dir}/${archive}" -C "${NODE_INSTALL_ROOT}" + NODE_BIN_DIR="${install_dir}/bin" + node_bin="${NODE_BIN_DIR}/node" + if [ -x "${node_bin}" ]; then + prepend_node_path + NODE_VERSION="$("${node_bin}" -v)" + log "Node.js ${NODE_VERSION} 安装完成,路径:${NODE_BIN_DIR}" + rm -rf "${tmp_dir}" + return 0 + fi + done + + rm -rf "${tmp_dir}" + return 1 +} + +ensure_node_runtime() { + if ! [[ "${NODE_MAJOR}" =~ ^(22|24)$ ]]; then + fail "DEPLOY_NODE_MAJOR 只允许设置为 22 或 24,当前值:${NODE_MAJOR}" + fi + + if node_version_matches_target; then + NODE_VERSION="$(node -v)" + log "Node.js 版本符合生产要求:${NODE_VERSION}" + return 0 + fi + + if command -v node >/dev/null 2>&1; then + log "当前 Node.js 版本为 $(node -v),将自动安装并切换到 Node.js ${NODE_MAJOR}.x LTS。" + else + log "未检测到 Node.js,将自动安装 Node.js ${NODE_MAJOR}.x LTS。" + fi + + install_node_from_mirrors || fail "Node.js ${NODE_MAJOR}.x LTS 自动安装失败,请检查网络或手动安装后重试。" + + if ! node_version_matches_target; then + fail "Node.js 已安装但版本校验失败,当前版本:$(node -v 2>/dev/null || printf '未检测到')" + fi +} + +normalize_data_dir_from_storage() { + local storage_dir="$1" + if [ -z "${storage_dir}" ]; then + return 1 + fi + + storage_dir="$(realpath -m "${storage_dir}")" + if [ "$(basename "${storage_dir}")" = "storage" ]; then + dirname "${storage_dir}" + else + printf '%s\n' "${storage_dir}" + fi +} + +read_marker_value() { + local key="$1" + local file="$2" + local marker_key marker_value + if [ ! -f "${file}" ]; then + return 1 + fi + + while IFS='=' read -r marker_key marker_value; do + if [ "${marker_key}" = "${key}" ]; then + printf '%s\n' "${marker_value}" + return 0 + fi + done < "${file}" + + return 1 +} + +detect_existing_deployment() { + if [ -f "${PROJECT_DIR}/package.json" ] && { [ -f "${PROJECT_DIR}/${APP_MARKER}" ] || [ -f "${PROJECT_DIR}/.env.local" ]; }; then + MODE="upgrade" + else + MODE="install" + fi +} + +load_existing_defaults() { + local marker_data_dir="" + if [ -f "${PROJECT_DIR}/${APP_MARKER}" ]; then + marker_data_dir="$(read_marker_value "data_dir" "${PROJECT_DIR}/${APP_MARKER}" || true)" + fi + + if [ -f "${PROJECT_DIR}/.env.local" ]; then + # shellcheck disable=SC1090 + set +u; set -a; source "${PROJECT_DIR}/.env.local"; set +a; set -u + if [ -n "${LOCAL_STORAGE_DIR:-}" ]; then + EXISTING_LOCAL_STORAGE_DIR="$(realpath -m "${LOCAL_STORAGE_DIR}")" + DATA_DIR="$(normalize_data_dir_from_storage "${LOCAL_STORAGE_DIR}")" + elif [ -n "${BACKUP_DIR:-}" ]; then + DATA_DIR="$(dirname "$(realpath -m "${BACKUP_DIR}")")" + elif [ -n "${marker_data_dir}" ]; then + DATA_DIR="${marker_data_dir}" + fi + LOCAL_DB_URL_INPUT="${LOCAL_DB_URL:-${LOCAL_DB_URL_INPUT:-postgresql://postgres:postgres@localhost:5432/miaojing}}" + WEB_PORT="${DEPLOY_RUN_PORT:-${WEB_PORT:-$DEFAULT_WEB_PORT}}" + API_PORT="${MIAOJING_API_PORT:-${API_PORT:-$DEFAULT_API_PORT}}" + CONSOLE_PORT="${MIAOJING_CONSOLE_PORT:-${CONSOLE_PORT:-$DEFAULT_CONSOLE_PORT}}" + ADMIN_EMAIL="${ADMIN_EMAIL:-${DEFAULT_ADMIN_EMAIL}}" + elif [ -n "${marker_data_dir}" ]; then + DATA_DIR="${marker_data_dir}" + fi + + if [ -z "${APP_PUBLIC_URL}" ] && [ -f "${PROJECT_DIR}/.env.local" ]; then + APP_PUBLIC_URL="$(env_get_value "NEXT_PUBLIC_APP_URL" "${PROJECT_DIR}/.env.local" || true)" + fi + if [ -z "${APP_PUBLIC_URL}" ] && [ -f "${PROJECT_DIR}/.env.local" ]; then + APP_PUBLIC_URL="$(env_get_value "APP_BASE_URL" "${PROJECT_DIR}/.env.local" || true)" + fi + + if [ -z "${EXISTING_LOCAL_STORAGE_DIR}" ] && [ -d "${PROJECT_DIR}/local-storage" ]; then + EXISTING_LOCAL_STORAGE_DIR="$(realpath -m "${PROJECT_DIR}/local-storage")" + elif [ -z "${EXISTING_LOCAL_STORAGE_DIR}" ] && [ -n "${marker_data_dir}" ] && [ -d "${marker_data_dir}/storage" ]; then + EXISTING_LOCAL_STORAGE_DIR="$(realpath -m "${marker_data_dir}/storage")" + fi +} + +validate_port() { + local label="$1" + local value="$2" + if ! [[ "${value}" =~ ^[0-9]+$ ]] || [ "${value}" -lt 1 ] || [ "${value}" -gt 65535 ]; then + fail "${label}必须是 1-65535 之间的数字。" + fi +} + +validate_inputs() { + validate_port "前端访问端口" "${WEB_PORT}" + validate_port "后端 API 内部端口" "${API_PORT}" + validate_port "管理后台内部端口" "${CONSOLE_PORT}" + + if [ "${WEB_PORT}" = "${API_PORT}" ] || [ "${WEB_PORT}" = "${CONSOLE_PORT}" ] || [ "${API_PORT}" = "${CONSOLE_PORT}" ]; then + fail "前端、后端 API、管理后台端口不能重复。" + fi + + if [ -z "${ADMIN_ACCOUNT}" ] || [ -z "${ADMIN_EMAIL}" ]; then + fail "管理员账号和管理员邮箱不能为空。" + fi + + if ! [[ "${ADMIN_EMAIL}" =~ ^[^[:space:]@]+@[^[:space:]@]+[.][^[:space:]@]+$ ]]; then + fail "管理员邮箱格式不正确。" + fi + + if [ -z "${LOCAL_DB_URL_INPUT}" ]; then + fail "PostgreSQL 连接地址不能为空。" + fi + + if [ -n "${APP_PUBLIC_URL}" ] && ! [[ "${APP_PUBLIC_URL}" =~ ^https?://[^[:space:]]+$ ]]; then + fail "正式访问地址必须是 http:// 或 https:// 开头的完整地址。" + fi + + if [ "${MODE}" = "install" ] && [ "${ADMIN_PASSWORD}" = "admin123" ]; then + fail "生产环境不允许使用默认管理员密码 admin123,请设置高强度密码。" + fi +} + +collect_inputs() { + echo "==============================================" + echo "${APP_NAME} 一键部署/升级脚本" + echo "==============================================" + echo "请按提示填写部署参数。直接回车将使用默认值。" + echo + + prompt_value PROJECT_DIR "项目部署目录" "${DEPLOY_PROJECT_DIR:-$DEFAULT_PROJECT_DIR}" + PROJECT_DIR="$(realpath -m "${PROJECT_DIR}")" + DATA_DIR="${DEPLOY_DATA_DIR:-$DEFAULT_DATA_DIR}" + WEB_PORT="${DEPLOY_WEB_PORT:-$DEFAULT_WEB_PORT}" + API_PORT="${DEPLOY_API_PORT:-$DEFAULT_API_PORT}" + CONSOLE_PORT="${DEPLOY_CONSOLE_PORT:-$DEFAULT_CONSOLE_PORT}" + ADMIN_ACCOUNT="${DEPLOY_ADMIN_ACCOUNT:-$DEFAULT_ADMIN_ACCOUNT}" + ADMIN_EMAIL="${DEPLOY_ADMIN_EMAIL:-$DEFAULT_ADMIN_EMAIL}" + LOCAL_DB_URL_INPUT="${DEPLOY_LOCAL_DB_URL:-postgresql://postgres:postgres@localhost:5432/miaojing}" + + detect_existing_deployment + load_existing_defaults + + if [ "${MODE}" = "install" ]; then + echo + echo "检测结果:目标目录未部署项目,将执行首次部署流程。" + else + echo + echo "检测结果:目标目录已存在部署,将执行安全升级流程。" + fi + + prompt_value DATA_DIR "数据存储目录" "${DATA_DIR}" + DATA_DIR="$(realpath -m "${DATA_DIR}")" + prompt_value WEB_PORT "前端访问端口" "${WEB_PORT}" + prompt_value API_PORT "后端 API 内部端口" "${API_PORT}" + prompt_value CONSOLE_PORT "管理后台内部端口" "${CONSOLE_PORT}" + prompt_value ADMIN_ACCOUNT "管理员账号/昵称" "${ADMIN_ACCOUNT}" + prompt_value ADMIN_EMAIL "管理员邮箱" "${ADMIN_EMAIL}" + prompt_value APP_PUBLIC_URL "正式访问地址(有域名请填 https://域名,留空则使用服务器IP和端口)" "${APP_PUBLIC_URL:-$DEFAULT_DOMAIN}" + + if [ "${MODE}" = "install" ]; then + prompt_secret ADMIN_PASSWORD "管理员密码" + prompt_value LOCAL_DB_URL_INPUT "PostgreSQL 连接地址" "${LOCAL_DB_URL_INPUT}" + else + read -r -s -p "管理员密码(升级时可留空表示不修改): " ADMIN_PASSWORD + echo + prompt_value LOCAL_DB_URL_INPUT "PostgreSQL 连接地址" "${LOCAL_DB_URL_INPUT}" + fi + + validate_inputs +} + +prepare_log() { + mkdir -p "${DATA_DIR}/logs" + LOG_FILE="${DATA_DIR}/logs/deploy-$(date +%Y%m%d-%H%M%S).log" + touch "${LOG_FILE}" + chmod 600 "${LOG_FILE}" + log "日志文件:${LOG_FILE}" +} + +check_prerequisites() { + log "检查运行依赖..." + require_command tar "请安装 tar。" + require_command rsync "请安装 rsync。" + require_command curl "请安装 curl。" + ensure_node_runtime + prepend_node_path + require_command node "Node.js 自动安装后仍不可用,请检查 PATH。" + require_command npm "Node.js 自动安装后 npm 仍不可用,请检查 Node.js 安装包。" + require_command psql "请安装 PostgreSQL 客户端,例如 postgresql-client。" + require_command pg_dump "请安装 PostgreSQL 客户端,例如 postgresql-client。" + + log "当前使用 Node.js:$(node -v),npm:$(npm -v)" + + if ! command -v pnpm >/dev/null 2>&1; then + log "未检测到 pnpm,准备通过 npm 安装 pnpm@9..." + install_pnpm + fi + + if ! command -v pm2 >/dev/null 2>&1; then + log "未检测到 pm2,准备通过 npm 安装 pm2..." + install_pm2 + fi +} + +npm_install_global_with_mirrors() { + local package_name="$1" + local mirror + for mirror in "${MIRRORS[@]}"; do + log "尝试使用镜像源安装 ${package_name}:${mirror}" + if "${NPM_BIN}" --registry="${mirror}" install -g "${package_name}" 2>&1 | log_pipe; then + log "${package_name} 安装成功。" + return 0 + fi + log "镜像源不可用或安装失败,切换下一个源。" + done + return 1 +} + +install_pnpm() { + npm_install_global_with_mirrors "pnpm@9" || fail "pnpm 安装失败,请检查网络或手动安装。" +} + +install_pm2() { + npm_install_global_with_mirrors "pm2" || fail "pm2 安装失败,请检查网络或手动安装。" +} + +install_dependencies_with_mirrors() { + local mirror + for mirror in "${MIRRORS[@]}"; do + log "尝试使用依赖镜像源:${mirror}" + pnpm config set registry "${mirror}" >/dev/null 2>&1 || true + if pnpm install --frozen-lockfile --reporter=append-only 2>&1 | log_pipe; then + log "依赖安装成功,使用源:${mirror}" + return 0 + fi + log "依赖安装失败,切换下一个镜像源。" + done + fail "所有依赖镜像源均安装失败,请检查网络。" +} + +sync_project_files() { + if [ "${SOURCE_DIR}" = "${PROJECT_DIR}" ]; then + log "源码目录与部署目录一致,跳过代码同步。" + return 0 + fi + + log "同步项目代码到部署目录:${PROJECT_DIR}" + mkdir -p "${PROJECT_DIR}" + rsync -a --delete \ + --exclude ".git" \ + --exclude "node_modules" \ + --exclude ".next" \ + --exclude "dist" \ + --exclude "backups" \ + --exclude "local-storage" \ + --exclude ".env.local" \ + --exclude ".codex_tmp" \ + "${SOURCE_DIR}/" "${PROJECT_DIR}/" 2>&1 | log_pipe +} + +migrate_local_storage() { + if [ "${MODE}" != "upgrade" ]; then + return 0 + fi + + local target_storage="${DATA_DIR}/storage" + if [ -z "${EXISTING_LOCAL_STORAGE_DIR}" ] || [ ! -d "${EXISTING_LOCAL_STORAGE_DIR}" ]; then + log "未检测到旧版本地存储目录,跳过本地存储迁移。" + return 0 + fi + + if [ "$(realpath -m "${EXISTING_LOCAL_STORAGE_DIR}")" = "$(realpath -m "${target_storage}")" ]; then + log "本地存储目录未变化,跳过迁移:${target_storage}" + return 0 + fi + + log "同步旧本地存储到新的持久化目录:${EXISTING_LOCAL_STORAGE_DIR} -> ${target_storage}" + mkdir -p "${target_storage}" + rsync -a "${EXISTING_LOCAL_STORAGE_DIR}/" "${target_storage}/" 2>&1 | log_pipe +} + +write_env_file() { + local env_file encryption_key jwt_secret generation_secret invite_code admin_default_password app_base_url existing_admin_password + env_file="${PROJECT_DIR}/.env.local" + encryption_key="$(env_get_value "DATA_ENCRYPTION_KEY" "${env_file}" || random_hex)" + jwt_secret="$(env_get_value "JWT_SECRET" "${env_file}" || random_hex)" + generation_secret="$(env_get_value "GENERATION_INTERNAL_SECRET" "${env_file}" || random_hex)" + invite_code="$(env_get_value "ADMIN_INVITE_CODE" "${env_file}" || true)" + invite_code="${invite_code:-miaojing-admin-$(random_hex | cut -c1-8)}" + existing_admin_password="$(env_get_value "ADMIN_DEFAULT_PASSWORD" "${env_file}" || true)" + admin_default_password="${ADMIN_PASSWORD:-${existing_admin_password}}" + app_base_url="${APP_PUBLIC_URL:-http://${SERVER_HOST_IP}:${WEB_PORT}}" + + mkdir -p "${DATA_DIR}/storage" "${DATA_DIR}/backups" + + if [ ! -f "${env_file}" ]; then + cat > "${env_file}" < "${PROJECT_DIR}/ecosystem.config.cjs" <&1 | log_pipe > "${DATA_DIR}/logs/.last-backup-path" + BACKUP_FILE="$(tail -n 1 "${DATA_DIR}/logs/.last-backup-path" || true)" + log "升级前备份完成:${BACKUP_FILE}" + else + log "未找到旧版备份脚本,执行基础文件备份。" + BACKUP_FILE="${DATA_DIR}/backups/miaojing-files-$(date +%Y%m%d-%H%M%S).tar.gz" + if [ -d "${DATA_DIR}/storage" ]; then + tar -czf "${BACKUP_FILE}" -C "${PROJECT_DIR}" .env.local -C "${DATA_DIR}" storage + else + tar -czf "${BACKUP_FILE}" -C "${PROJECT_DIR}" .env.local + fi + log "基础备份完成:${BACKUP_FILE}" + fi +} + +initialize_database() { + log "检查数据库连接..." + psql "${LOCAL_DB_URL_INPUT}" -v ON_ERROR_STOP=1 -c "SELECT 1;" >/dev/null + + log "执行数据库结构初始化/升级 SQL(幂等,不会删除用户数据)..." + psql "${LOCAL_DB_URL_INPUT}" -v ON_ERROR_STOP=1 -f "${PROJECT_DIR}/scripts/init-database.sql" 2>&1 | log_pipe + + if [ -f "${PROJECT_DIR}/scripts/database-optimization-patch.sql" ]; then + psql "${LOCAL_DB_URL_INPUT}" -v ON_ERROR_STOP=1 -f "${PROJECT_DIR}/scripts/database-optimization-patch.sql" 2>&1 | log_pipe + fi + + apply_runtime_schema_patch +} + +apply_runtime_schema_patch() { + log "补齐生产运行所需的动态配置表..." + psql "${LOCAL_DB_URL_INPUT}" -v ON_ERROR_STOP=1 <<'SQL' 2>&1 | log_pipe +CREATE EXTENSION IF NOT EXISTS "pgcrypto"; +CREATE SCHEMA IF NOT EXISTS auth; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_proc p + JOIN pg_namespace n ON n.oid = p.pronamespace + WHERE n.nspname = 'auth' AND p.proname = 'uid' + ) THEN + EXECUTE 'CREATE FUNCTION auth.uid() RETURNS UUID AS $fn$ SELECT NULLIF(current_setting(''request.jwt.claim.sub'', true), '''')::UUID; $fn$ LANGUAGE SQL STABLE'; + END IF; + + IF NOT EXISTS ( + SELECT 1 FROM pg_proc p + JOIN pg_namespace n ON n.oid = p.pronamespace + WHERE n.nspname = 'auth' AND p.proname = 'role' + ) THEN + EXECUTE 'CREATE FUNCTION auth.role() RETURNS TEXT AS $fn$ SELECT COALESCE(NULLIF(current_setting(''request.jwt.claim.role'', true), ''''), ''anon''); $fn$ LANGUAGE SQL STABLE'; + END IF; +END $$; + +ALTER TABLE profiles + ADD COLUMN IF NOT EXISTS email_verified BOOLEAN NOT NULL DEFAULT FALSE, + ADD COLUMN IF NOT EXISTS email_verified_at TIMESTAMPTZ, + ADD COLUMN IF NOT EXISTS email_bound_at TIMESTAMPTZ, + ADD COLUMN IF NOT EXISTS email_sender_domain VARCHAR(255), + ADD COLUMN IF NOT EXISTS preferred_theme VARCHAR(16) NOT NULL DEFAULT 'dark'; + +UPDATE profiles + SET preferred_theme = 'dark' + WHERE preferred_theme IS NULL + OR preferred_theme NOT IN ('dark', 'light'); + +ALTER TABLE site_config + ADD COLUMN IF NOT EXISTS site_description TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS site_keywords TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS announcement TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS membership_enabled BOOLEAN NOT NULL DEFAULT TRUE, + ADD COLUMN IF NOT EXISTS terms_of_service TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS privacy_policy TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS about_us TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS help_center TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS filing_info TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS filing_url TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS public_security_filing_info TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS public_security_filing_url TEXT NOT NULL DEFAULT ''; + +ALTER TABLE works + ADD COLUMN IF NOT EXISTS updated_at TIMESTAMPTZ, + ADD COLUMN IF NOT EXISTS views_count INTEGER NOT NULL DEFAULT 0; + +ALTER TABLE announcements + ADD COLUMN IF NOT EXISTS type VARCHAR(32) NOT NULL DEFAULT 'site'; + +ALTER TABLE user_api_keys ADD COLUMN IF NOT EXISTS supplier_name VARCHAR(128); +ALTER TABLE user_api_keys ADD COLUMN IF NOT EXISTS note TEXT NOT NULL DEFAULT ''; +ALTER TABLE user_api_keys ADD COLUMN IF NOT EXISTS type VARCHAR(16) NOT NULL DEFAULT 'image'; + +CREATE TABLE IF NOT EXISTS system_api_configs ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + provider VARCHAR(128), + name VARCHAR(255) NOT NULL, + api_url TEXT NOT NULL DEFAULT '', + model_name VARCHAR(255) NOT NULL, + note TEXT NOT NULL DEFAULT '', + api_key_encrypted TEXT NOT NULL DEFAULT '', + api_key_preview VARCHAR(64) NOT NULL DEFAULT '', + type VARCHAR(16) NOT NULL DEFAULT 'image', + credits_per_use INTEGER NOT NULL DEFAULT 10, + is_active BOOLEAN NOT NULL DEFAULT true, + sort_order INTEGER NOT NULL DEFAULT 0, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + updated_at TIMESTAMPTZ +); +CREATE INDEX IF NOT EXISTS system_api_configs_active_type_sort_idx ON system_api_configs (is_active, type, sort_order); + +CREATE TABLE IF NOT EXISTS payment_methods ( + id VARCHAR(64) PRIMARY KEY, + type VARCHAR(32) NOT NULL, + name VARCHAR(128) NOT NULL, + is_active BOOLEAN NOT NULL DEFAULT FALSE, + public_config JSONB NOT NULL DEFAULT '{}'::jsonb, + secret_config_encrypted JSONB NOT NULL DEFAULT '{}'::jsonb, + secret_config_preview JSONB NOT NULL DEFAULT '{}'::jsonb, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + updated_at TIMESTAMPTZ +); +INSERT INTO payment_methods (id, type, name, is_active) VALUES + ('pm-alipay', 'alipay', '支付宝', true), + ('pm-wechat', 'wechat', '微信支付', false), + ('pm-manual', 'manual', '手动转账', false), + ('pm-stripe', 'stripe', 'Stripe', false) +ON CONFLICT (id) DO NOTHING; + +ALTER TABLE generation_jobs ADD COLUMN IF NOT EXISTS user_id UUID; +ALTER TABLE generation_jobs ADD COLUMN IF NOT EXISTS provider VARCHAR(128); +ALTER TABLE generation_jobs ADD COLUMN IF NOT EXISTS model_name VARCHAR(255); +ALTER TABLE generation_jobs ADD COLUMN IF NOT EXISTS api_url TEXT; +ALTER TABLE generation_jobs ADD COLUMN IF NOT EXISTS progress JSONB NOT NULL DEFAULT '{}'::jsonb; +CREATE INDEX IF NOT EXISTS generation_jobs_user_created_idx ON generation_jobs (user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS generation_jobs_provider_model_created_idx ON generation_jobs (type, provider, model_name, created_at DESC); + +ALTER TABLE site_config ADD COLUMN IF NOT EXISTS log_retention_days INTEGER NOT NULL DEFAULT 30; +UPDATE site_config SET log_retention_days = LEAST(90, GREATEST(1, log_retention_days)); + +CREATE TABLE IF NOT EXISTS platform_log_settings ( + id INTEGER PRIMARY KEY DEFAULT 1, + retention_days INTEGER NOT NULL DEFAULT 30, + updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() +); +INSERT INTO platform_log_settings (id, retention_days) +VALUES (1, 30) +ON CONFLICT (id) DO NOTHING; + +CREATE TABLE IF NOT EXISTS platform_logs ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + type VARCHAR(32) NOT NULL, + level VARCHAR(16) NOT NULL DEFAULT 'info', + action VARCHAR(128) NOT NULL, + message TEXT NOT NULL, + user_id UUID, + user_name VARCHAR(255), + user_email VARCHAR(255), + target_type VARCHAR(64), + target_id VARCHAR(255), + ip_address VARCHAR(64), + user_agent TEXT, + metadata JSONB NOT NULL DEFAULT '{}'::jsonb, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() +); +CREATE INDEX IF NOT EXISTS platform_logs_type_created_idx ON platform_logs (type, created_at DESC); +CREATE INDEX IF NOT EXISTS platform_logs_level_created_idx ON platform_logs (level, created_at DESC); +CREATE INDEX IF NOT EXISTS platform_logs_user_created_idx ON platform_logs (user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS platform_logs_created_idx ON platform_logs (created_at DESC); +CREATE INDEX IF NOT EXISTS platform_logs_user_name_idx ON platform_logs (LOWER(COALESCE(user_name, ''))); +CREATE INDEX IF NOT EXISTS platform_logs_user_email_idx ON platform_logs (LOWER(COALESCE(user_email, ''))); + +CREATE TABLE IF NOT EXISTS email_settings ( + id INTEGER PRIMARY KEY DEFAULT 1, + enabled BOOLEAN NOT NULL DEFAULT FALSE, + smtp_host VARCHAR(255), + smtp_port INTEGER NOT NULL DEFAULT 465, + smtp_secure BOOLEAN NOT NULL DEFAULT TRUE, + smtp_user VARCHAR(255), + smtp_password_encrypted TEXT, + smtp_password_preview VARCHAR(64), + from_email VARCHAR(255), + from_name VARCHAR(255), + reply_to VARCHAR(255), + app_name VARCHAR(120), + app_base_url TEXT, + logo_url TEXT, + contact_email VARCHAR(255), + copyright TEXT, + code_length INTEGER NOT NULL DEFAULT 6, + code_charset VARCHAR(32) NOT NULL DEFAULT 'alphanumeric', + code_ttl_minutes INTEGER NOT NULL DEFAULT 5, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() +); + +CREATE TABLE IF NOT EXISTS email_verification_codes ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + email VARCHAR(255) NOT NULL, + code_hash TEXT NOT NULL, + type VARCHAR(32) NOT NULL, + user_id UUID, + ip_address VARCHAR(64), + attempts INTEGER NOT NULL DEFAULT 0, + max_attempts INTEGER NOT NULL DEFAULT 5, + is_used BOOLEAN NOT NULL DEFAULT FALSE, + locked_until TIMESTAMPTZ, + expires_at TIMESTAMPTZ NOT NULL, + used_at TIMESTAMPTZ, + metadata JSONB NOT NULL DEFAULT '{}'::jsonb, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() +); + +CREATE TABLE IF NOT EXISTS email_send_logs ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + email VARCHAR(255) NOT NULL, + type VARCHAR(64) NOT NULL, + ip_address VARCHAR(64), + status VARCHAR(32) NOT NULL, + error_message TEXT, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS email_codes_email_type_idx ON email_verification_codes (LOWER(email), type, created_at DESC); +CREATE INDEX IF NOT EXISTS email_codes_ip_created_idx ON email_verification_codes (ip_address, created_at DESC); +CREATE INDEX IF NOT EXISTS email_send_logs_email_created_idx ON email_send_logs (LOWER(email), created_at DESC); +CREATE INDEX IF NOT EXISTS email_send_logs_ip_created_idx ON email_send_logs (ip_address, created_at DESC); +SQL +} + +ensure_admin_user() { + if [ -z "${ADMIN_PASSWORD:-}" ] && [ "${MODE}" = "upgrade" ]; then + log "升级模式未输入管理员密码,跳过管理员密码更新。" + return 0 + fi + + log "创建/更新管理员账号..." + psql "${LOCAL_DB_URL_INPUT}" \ + -v ON_ERROR_STOP=1 \ + -v admin_email="${ADMIN_EMAIL}" \ + -v admin_account="${ADMIN_ACCOUNT}" \ + -v admin_password="${ADMIN_PASSWORD}" <<'SQL' 2>&1 | log_pipe +CREATE TEMP TABLE _deploy_admin_input ( + email TEXT NOT NULL, + account TEXT NOT NULL, + password TEXT NOT NULL +); + +INSERT INTO _deploy_admin_input (email, account, password) +VALUES (:'admin_email', :'admin_account', :'admin_password'); + +DO $$ +DECLARE + r RECORD; + v_admin_id UUID; +BEGIN + SELECT * INTO r FROM _deploy_admin_input LIMIT 1; + + SELECT id INTO v_admin_id FROM profiles WHERE lower(email) = lower(r.email) LIMIT 1; + IF v_admin_id IS NULL THEN + SELECT id INTO v_admin_id FROM auth.users WHERE lower(email) = lower(r.email) LIMIT 1; + END IF; + IF v_admin_id IS NULL THEN + v_admin_id := gen_random_uuid(); + END IF; + + INSERT INTO auth.users (id, email, password_hash, raw_user_meta_data, created_at) + VALUES ( + v_admin_id, + r.email, + crypt(r.password, gen_salt('bf')), + jsonb_build_object('nickname', r.account), + NOW() + ) + ON CONFLICT (email) DO UPDATE SET + password_hash = EXCLUDED.password_hash, + raw_user_meta_data = EXCLUDED.raw_user_meta_data; + + SELECT id INTO v_admin_id FROM auth.users WHERE lower(email) = lower(r.email) LIMIT 1; + + INSERT INTO profiles ( + id, email, nickname, role, membership_tier, credits_balance, + daily_quota_limit, daily_quota_used, is_active, + email_verified, email_verified_at, email_bound_at, email_sender_domain + ) + VALUES ( + v_admin_id, r.email, r.account, 'admin', 'enterprise', + 9999, 999, 0, true, true, NOW(), NOW(), split_part(r.email, '@', 2) + ) + ON CONFLICT (id) DO UPDATE SET + email = EXCLUDED.email, + nickname = EXCLUDED.nickname, + role = 'admin', + membership_tier = 'enterprise', + credits_balance = GREATEST(profiles.credits_balance, 9999), + daily_quota_limit = GREATEST(profiles.daily_quota_limit, 999), + is_active = true, + email_verified = true, + email_verified_at = COALESCE(profiles.email_verified_at, NOW()), + email_bound_at = COALESCE(profiles.email_bound_at, NOW()), + email_sender_domain = COALESCE(NULLIF(profiles.email_sender_domain, ''), EXCLUDED.email_sender_domain), + updated_at = NOW(); +END $$; +SQL +} + +build_project() { + log "开始安装依赖..." + cd "${PROJECT_DIR}" + install_dependencies_with_mirrors + + log "开始生产构建..." + pnpm run check:boundaries 2>&1 | log_pipe + pnpm run build 2>&1 | log_pipe +} + +run_security_audit() { + log "执行生产依赖漏洞扫描..." + cd "${PROJECT_DIR}" + local mirror audit_status + audit_status=1 + + for mirror in "${MIRRORS[@]}"; do + log "尝试使用漏洞库源执行 pnpm audit:${mirror}" + if pnpm audit --prod --audit-level=high --registry="${mirror}" 2>&1 | log_pipe; then + audit_status=0 + break + fi + log "当前源审计失败或发现高危漏洞,继续尝试下一个源。" + done + + if [ "${audit_status}" -ne 0 ]; then + fail "生产依赖漏洞扫描未通过。请先处理 high/critical 级别漏洞后再上线。" + fi + + if ! pnpm audit --prod --audit-level=moderate --registry="https://registry.npmjs.org" 2>&1 | log_pipe; then + log "提醒:仍存在 moderate 级别漏洞。脚本不会阻断升级,但正式上线前建议升级相关依赖链并重新构建验证。" + fi +} + +start_services() { + log "启动/重载 PM2 服务..." + cd "${PROJECT_DIR}" + pm2 startOrReload ecosystem.config.cjs --update-env 2>&1 | log_pipe + pm2 save 2>&1 | log_pipe || true +} + +wait_for_health() { + log "等待服务启动并执行健康检查..." + local api_url="http://127.0.0.1:${WEB_PORT}/api/health" + local console_url="http://127.0.0.1:${WEB_PORT}/console" + local attempt + for attempt in $(seq 1 30); do + if curl -fsS "${api_url}" >/dev/null 2>&1 && curl -fsS "${console_url}" >/dev/null 2>&1; then + log "健康检查通过:前端、后端 API、管理后台均可访问。" + return 0 + fi + sleep 2 + done + fail "健康检查失败,请检查 PM2 日志:pm2 logs miaojing-web" +} + +mark_deployment() { + cat > "${PROJECT_DIR}/${APP_MARKER}" </dev/null | awk -v port="${DEPLOY_RUN_PORT}" '$4 ~ ":"port"$"' | grep -o 'pid=[0-9]*' | cut -d= -f2 | paste -sd' ' - || true) + if [[ -z "${pids}" ]]; then + echo "Port ${DEPLOY_RUN_PORT} is free." + return + fi + echo "Port ${DEPLOY_RUN_PORT} in use by PIDs: ${pids} (SIGKILL)" + echo "${pids}" | xargs -I {} kill -9 {} + sleep 1 + pids=$(ss -H -lntp 2>/dev/null | awk -v port="${DEPLOY_RUN_PORT}" '$4 ~ ":"port"$"' | grep -o 'pid=[0-9]*' | cut -d= -f2 | paste -sd' ' - || true) + if [[ -n "${pids}" ]]; then + echo "Warning: port ${DEPLOY_RUN_PORT} still busy after SIGKILL, PIDs: ${pids}" + else + echo "Port ${DEPLOY_RUN_PORT} cleared." + fi +} + +echo "Clearing port ${PORT} before start." +kill_port_if_listening +echo "Starting HTTP service on port ${PORT} for dev..." + +PORT=$PORT pnpm tsx watch src/server.ts diff --git a/scripts/init-database.sql b/scripts/init-database.sql new file mode 100644 index 0000000..1beb926 --- /dev/null +++ b/scripts/init-database.sql @@ -0,0 +1,663 @@ +-- ============================================================ +-- 妙境 AI 创作平台 — 数据库初始化脚本 +-- 适用于: PostgreSQL 14+ (Supabase / 自托管) +-- 执行方式: 在 Supabase SQL Editor 或 psql 中运行 +-- ============================================================ + +-- 0. 启用必要扩展 +CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; +CREATE EXTENSION IF NOT EXISTS "pgcrypto"; + +-- 1. 创建 auth 模式和 users 表 +CREATE SCHEMA IF NOT EXISTS auth; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_proc p + JOIN pg_namespace n ON n.oid = p.pronamespace + WHERE n.nspname = 'auth' AND p.proname = 'uid' + ) THEN + EXECUTE 'CREATE FUNCTION auth.uid() RETURNS UUID AS $fn$ SELECT NULLIF(current_setting(''request.jwt.claim.sub'', true), '''')::UUID; $fn$ LANGUAGE SQL STABLE'; + END IF; + + IF NOT EXISTS ( + SELECT 1 FROM pg_proc p + JOIN pg_namespace n ON n.oid = p.pronamespace + WHERE n.nspname = 'auth' AND p.proname = 'role' + ) THEN + EXECUTE 'CREATE FUNCTION auth.role() RETURNS TEXT AS $fn$ SELECT COALESCE(NULLIF(current_setting(''request.jwt.claim.role'', true), ''''), ''anon''); $fn$ LANGUAGE SQL STABLE'; + END IF; +END $$; + +CREATE TABLE IF NOT EXISTS auth.users ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + email VARCHAR(255) UNIQUE, + password_hash TEXT, + raw_user_meta_data JSONB, + created_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +CREATE INDEX IF NOT EXISTS auth_users_email_idx ON auth.users (email); + +-- ============================================================ +-- 1. 用户资料表 (profiles) +-- 与 Supabase Auth 的 auth.users 表关联 +-- ============================================================ +CREATE TABLE IF NOT EXISTS profiles ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + email VARCHAR(255) NOT NULL UNIQUE, + nickname VARCHAR(128), + avatar_url TEXT, + phone VARCHAR(20), + role VARCHAR(32) NOT NULL DEFAULT 'user', -- guest, user, vip, enterprise_admin, enterprise_member, admin + membership_tier VARCHAR(32) NOT NULL DEFAULT 'free', -- free, basic, pro, enterprise + membership_expires_at TIMESTAMPTZ, + credits_balance INTEGER NOT NULL DEFAULT 0, + daily_quota_used INTEGER NOT NULL DEFAULT 0, + daily_quota_limit INTEGER NOT NULL DEFAULT 5, + is_active BOOLEAN NOT NULL DEFAULT true, + email_verified BOOLEAN NOT NULL DEFAULT false, + email_verified_at TIMESTAMPTZ, + email_bound_at TIMESTAMPTZ, + email_sender_domain VARCHAR(255), + preferred_theme VARCHAR(16) NOT NULL DEFAULT 'dark', + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE INDEX IF NOT EXISTS profiles_email_idx ON profiles (email); +CREATE INDEX IF NOT EXISTS profiles_role_idx ON profiles (role); + +-- ============================================================ +-- 2. 创作作品表 (works) +-- ============================================================ +CREATE TABLE IF NOT EXISTS works ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + user_id UUID DEFAULT auth.uid(), + title VARCHAR(255), + type VARCHAR(32) NOT NULL, -- text2img, img2img, text2video, img2video + prompt TEXT, + negative_prompt TEXT, + params JSONB, -- 生成参数 (画面比例、分辨率、模型等) + result_url TEXT, -- 生成文件的 URL + thumbnail_url TEXT, + width INTEGER, + height INTEGER, + duration NUMERIC(6, 2), -- 视频时长 (秒) + is_public BOOLEAN NOT NULL DEFAULT false, + likes_count INTEGER NOT NULL DEFAULT 0, + views_count INTEGER NOT NULL DEFAULT 0, + credits_cost INTEGER NOT NULL DEFAULT 0, + status VARCHAR(32) NOT NULL DEFAULT 'completed', -- pending, processing, completed, failed + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE INDEX IF NOT EXISTS works_user_id_idx ON works (user_id); +CREATE INDEX IF NOT EXISTS works_type_idx ON works (type); +CREATE INDEX IF NOT EXISTS works_is_public_idx ON works (is_public); +CREATE INDEX IF NOT EXISTS works_created_at_idx ON works (created_at); +CREATE INDEX IF NOT EXISTS works_status_idx ON works (status); + +-- ============================================================ +-- 3. 积分记录表 (credit_transactions) +-- ============================================================ +CREATE TABLE IF NOT EXISTS credit_transactions ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + user_id UUID DEFAULT auth.uid(), + amount INTEGER NOT NULL, -- 正数=入账, 负数=消费 + balance_after INTEGER NOT NULL, + type VARCHAR(32) NOT NULL, -- purchase, consume, gift, reward, refund + description VARCHAR(500), + related_work_id UUID, + created_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +CREATE INDEX IF NOT EXISTS credit_transactions_user_id_idx ON credit_transactions (user_id); +CREATE INDEX IF NOT EXISTS credit_transactions_type_idx ON credit_transactions (type); +CREATE INDEX IF NOT EXISTS credit_transactions_created_at_idx ON credit_transactions (created_at); + +-- ============================================================ +-- 4. 订单表 (orders) +-- ============================================================ +CREATE TABLE IF NOT EXISTS orders ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + user_id UUID DEFAULT auth.uid(), + order_no VARCHAR(64) NOT NULL UNIQUE, + product_type VARCHAR(32) NOT NULL, -- membership, credits, api + product_name VARCHAR(255) NOT NULL, + amount NUMERIC(10, 2) NOT NULL, + credits_amount INTEGER, -- 购买的积分数 + status VARCHAR(32) NOT NULL DEFAULT 'pending', -- pending, paid, cancelled, refunded + payment_method VARCHAR(32), -- wechat, alipay, stripe + paid_at TIMESTAMPTZ, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE INDEX IF NOT EXISTS orders_user_id_idx ON orders (user_id); +CREATE INDEX IF NOT EXISTS orders_order_no_idx ON orders (order_no); +CREATE INDEX IF NOT EXISTS orders_status_idx ON orders (status); +CREATE INDEX IF NOT EXISTS orders_created_at_idx ON orders (created_at); + +-- ============================================================ +-- 5. 生成任务队列表 (generation_jobs) +-- ============================================================ +CREATE TABLE IF NOT EXISTS generation_jobs ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + type VARCHAR(16) NOT NULL, + status VARCHAR(16) NOT NULL DEFAULT 'queued', + payload JSONB NOT NULL DEFAULT '{}'::jsonb, + result JSONB, + error TEXT, + user_id UUID, + provider VARCHAR(128), + model_name VARCHAR(255), + api_url TEXT, + progress JSONB NOT NULL DEFAULT '{}'::jsonb, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + started_at TIMESTAMPTZ, + finished_at TIMESTAMPTZ, + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +CREATE INDEX IF NOT EXISTS generation_jobs_status_created_idx ON generation_jobs (status, created_at DESC); +CREATE INDEX IF NOT EXISTS generation_jobs_status_updated_idx ON generation_jobs (status, updated_at DESC); +CREATE INDEX IF NOT EXISTS generation_jobs_running_timeout_idx ON generation_jobs (updated_at) WHERE status = 'running'; +CREATE INDEX IF NOT EXISTS generation_jobs_created_idx ON generation_jobs (created_at DESC); +CREATE INDEX IF NOT EXISTS generation_jobs_user_created_idx ON generation_jobs (user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS generation_jobs_provider_model_created_idx ON generation_jobs (type, provider, model_name, created_at DESC); + +-- ============================================================ +-- 6. 用户自定义 API 密钥表 (user_api_keys) +-- ============================================================ +CREATE TABLE IF NOT EXISTS user_api_keys ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + user_id UUID DEFAULT auth.uid(), + provider VARCHAR(64) NOT NULL, -- openai, stabilityai, runway, etc. + api_url TEXT, -- 完整 API 端点 URL + model_name VARCHAR(128), -- 具体模型名称 + api_key_encrypted TEXT NOT NULL, -- 加密存储的 API Key + api_key_preview VARCHAR(20), -- Key 尾号 (如 sk-...4f3e) + supplier_name VARCHAR(128), + note TEXT NOT NULL DEFAULT '', + type VARCHAR(16) NOT NULL DEFAULT 'image', + is_active BOOLEAN NOT NULL DEFAULT true, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE INDEX IF NOT EXISTS user_api_keys_user_id_idx ON user_api_keys (user_id); +CREATE INDEX IF NOT EXISTS user_api_keys_provider_idx ON user_api_keys (provider); + +-- ============================================================ +-- 7. 作品点赞表 (work_likes) +-- ============================================================ +CREATE TABLE IF NOT EXISTS work_likes ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + user_id UUID DEFAULT auth.uid(), + work_id UUID NOT NULL REFERENCES works(id) ON DELETE CASCADE, + created_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +CREATE INDEX IF NOT EXISTS work_likes_user_id_idx ON work_likes (user_id); +CREATE INDEX IF NOT EXISTS work_likes_work_id_idx ON work_likes (work_id); + +-- 唯一约束:每个用户对每个作品只能点赞一次 +CREATE UNIQUE INDEX IF NOT EXISTS work_likes_user_work_uniq ON work_likes (user_id, work_id); + +-- ============================================================ +-- 8. 网站配置表 (site_config) +-- ============================================================ +CREATE TABLE IF NOT EXISTS site_config ( + id INTEGER PRIMARY KEY DEFAULT 1, + site_name VARCHAR(128) NOT NULL DEFAULT '妙境', + site_tab_title VARCHAR(255) NOT NULL DEFAULT '妙境 - AI创作平台', + site_description TEXT NOT NULL DEFAULT '', + site_keywords TEXT NOT NULL DEFAULT '', + logo_url TEXT, + favicon_url TEXT, + announcement TEXT NOT NULL DEFAULT '', + membership_enabled BOOLEAN NOT NULL DEFAULT TRUE, + terms_of_service TEXT NOT NULL DEFAULT '', + privacy_policy TEXT NOT NULL DEFAULT '', + about_us TEXT NOT NULL DEFAULT '', + help_center TEXT NOT NULL DEFAULT '', + filing_info TEXT NOT NULL DEFAULT '', + filing_url TEXT NOT NULL DEFAULT '', + public_security_filing_info TEXT NOT NULL DEFAULT '', + public_security_filing_url TEXT NOT NULL DEFAULT '', + log_retention_days INTEGER NOT NULL DEFAULT 30, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +-- 插入默认配置 +INSERT INTO site_config (id, site_name, site_tab_title) +VALUES (1, '妙境', '妙境 - AI创作平台') +ON CONFLICT (id) DO NOTHING; + +-- ============================================================ +-- 9. 公告表 (announcements) +-- ============================================================ +CREATE TABLE IF NOT EXISTS announcements ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + title VARCHAR(255) NOT NULL, + content TEXT NOT NULL, -- 支持 Markdown + type VARCHAR(32) NOT NULL DEFAULT 'site', + is_active BOOLEAN NOT NULL DEFAULT true, + starts_at TIMESTAMPTZ, + expires_at TIMESTAMPTZ, + created_by UUID, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE INDEX IF NOT EXISTS announcements_is_active_idx ON announcements (is_active); +CREATE INDEX IF NOT EXISTS announcements_expires_at_idx ON announcements (expires_at); + +-- ============================================================ +-- 10. 网站统计表 (site_stats) +-- ============================================================ +CREATE TABLE IF NOT EXISTS site_stats ( + id INTEGER PRIMARY KEY DEFAULT 1, + total_visits BIGINT NOT NULL DEFAULT 0, + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +INSERT INTO site_stats (id, total_visits) VALUES (1, 0) ON CONFLICT (id) DO NOTHING; + +-- ============================================================ +-- 11. 平台日志 +-- ============================================================ +CREATE TABLE IF NOT EXISTS platform_log_settings ( + id INTEGER PRIMARY KEY DEFAULT 1, + retention_days INTEGER NOT NULL DEFAULT 30, + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +INSERT INTO platform_log_settings (id, retention_days) +VALUES (1, 30) +ON CONFLICT (id) DO NOTHING; + +CREATE TABLE IF NOT EXISTS platform_logs ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + type VARCHAR(32) NOT NULL, + level VARCHAR(16) NOT NULL DEFAULT 'info', + action VARCHAR(128) NOT NULL, + message TEXT NOT NULL, + user_id UUID, + user_name VARCHAR(255), + user_email VARCHAR(255), + target_type VARCHAR(64), + target_id VARCHAR(255), + ip_address VARCHAR(64), + user_agent TEXT, + metadata JSONB NOT NULL DEFAULT '{}'::jsonb, + created_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +CREATE INDEX IF NOT EXISTS platform_logs_type_created_idx ON platform_logs (type, created_at DESC); +CREATE INDEX IF NOT EXISTS platform_logs_level_created_idx ON platform_logs (level, created_at DESC); +CREATE INDEX IF NOT EXISTS platform_logs_user_created_idx ON platform_logs (user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS platform_logs_created_idx ON platform_logs (created_at DESC); + +-- ============================================================ +-- 12. API 供应商与推荐模型配置 +-- ============================================================ +CREATE TABLE IF NOT EXISTS api_providers ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + name VARCHAR(128) NOT NULL UNIQUE, + default_api_url TEXT, + default_model VARCHAR(255), + type VARCHAR(16) NOT NULL DEFAULT 'image', + website TEXT, + is_active BOOLEAN NOT NULL DEFAULT true, + sort_order INTEGER NOT NULL DEFAULT 0, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE TABLE IF NOT EXISTS model_recommendations ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + model_name VARCHAR(255) NOT NULL, + display_name VARCHAR(255), + type VARCHAR(16) NOT NULL DEFAULT 'image', + provider_id UUID REFERENCES api_providers(id) ON DELETE SET NULL, + is_active BOOLEAN NOT NULL DEFAULT true, + sort_order INTEGER NOT NULL DEFAULT 0, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ +); + +CREATE INDEX IF NOT EXISTS api_providers_active_sort_idx ON api_providers (is_active, sort_order); +CREATE INDEX IF NOT EXISTS model_recommendations_active_type_sort_idx ON model_recommendations (is_active, type, sort_order); +CREATE INDEX IF NOT EXISTS model_recommendations_provider_idx ON model_recommendations (provider_id); + +INSERT INTO api_providers (name, default_api_url, default_model, type, website, is_active, sort_order) +VALUES + ('硅基流动', 'https://api.siliconflow.cn/v1/images/generations', 'black-forest-labs/FLUX.1-schnell', 'image', 'https://cloud.siliconflow.cn', true, 10), + ('mozheAPI', 'https://openai.mozhevip.top', '', 'image', 'https://openai.mozhevip.top', true, 20), + ('OpenAI', 'https://api.openai.com/v1/images/generations', 'dall-e-3', 'image', NULL, true, 30), + ('Stability AI', 'https://api.stability.ai/v1/generation/stable-diffusion-xl/text-to-image', 'stable-diffusion-xl', 'image', NULL, true, 40), + ('Midjourney', '', 'midjourney-v6', 'image', NULL, true, 50), + ('Runway', 'https://api.runwayml.com/v1/image_to_video', 'gen-3-alpha', 'video', NULL, true, 60), + ('Pika', '', 'pika-1.0', 'video', NULL, true, 70), + ('Kling', '', 'kling-v1', 'video', NULL, true, 80), + ('DeepSeek', 'https://api.deepseek.com/v1/chat/completions', 'deepseek-chat', 'text', NULL, true, 90), + ('OpenAI GPT', 'https://api.openai.com/v1/chat/completions', 'gpt-4o', 'text', NULL, true, 100), + ('自定义', '', '', 'image', NULL, true, 999) +ON CONFLICT (name) DO NOTHING; + +INSERT INTO model_recommendations (model_name, display_name, type, provider_id, is_active, sort_order) +SELECT 'gpt-image-2', 'gpt-image-2', 'image', NULL, true, 10 +WHERE NOT EXISTS ( + SELECT 1 FROM model_recommendations + WHERE model_name = 'gpt-image-2' AND type = 'image' AND provider_id IS NULL +); + +-- ============================================================ +-- 兼容旧版本库结构的幂等补丁 +-- ============================================================ +ALTER TABLE profiles + ADD COLUMN IF NOT EXISTS email_verified BOOLEAN NOT NULL DEFAULT false, + ADD COLUMN IF NOT EXISTS email_verified_at TIMESTAMPTZ, + ADD COLUMN IF NOT EXISTS email_bound_at TIMESTAMPTZ, + ADD COLUMN IF NOT EXISTS email_sender_domain VARCHAR(255), + ADD COLUMN IF NOT EXISTS preferred_theme VARCHAR(16) NOT NULL DEFAULT 'dark'; + +UPDATE profiles + SET preferred_theme = 'dark' + WHERE preferred_theme IS NULL + OR preferred_theme NOT IN ('dark', 'light'); + +ALTER TABLE works + ADD COLUMN IF NOT EXISTS views_count INTEGER NOT NULL DEFAULT 0, + ADD COLUMN IF NOT EXISTS updated_at TIMESTAMPTZ; + +ALTER TABLE user_api_keys + ADD COLUMN IF NOT EXISTS supplier_name VARCHAR(128), + ADD COLUMN IF NOT EXISTS note TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS type VARCHAR(16) NOT NULL DEFAULT 'image'; + +ALTER TABLE site_config + ADD COLUMN IF NOT EXISTS site_description TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS site_keywords TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS announcement TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS membership_enabled BOOLEAN NOT NULL DEFAULT TRUE, + ADD COLUMN IF NOT EXISTS terms_of_service TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS privacy_policy TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS about_us TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS help_center TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS filing_info TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS filing_url TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS public_security_filing_info TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS public_security_filing_url TEXT NOT NULL DEFAULT '', + ADD COLUMN IF NOT EXISTS log_retention_days INTEGER NOT NULL DEFAULT 30; + +ALTER TABLE generation_jobs + ADD COLUMN IF NOT EXISTS user_id UUID, + ADD COLUMN IF NOT EXISTS provider VARCHAR(128), + ADD COLUMN IF NOT EXISTS model_name VARCHAR(255), + ADD COLUMN IF NOT EXISTS api_url TEXT, + ADD COLUMN IF NOT EXISTS progress JSONB NOT NULL DEFAULT '{}'::jsonb; + +CREATE INDEX IF NOT EXISTS generation_jobs_user_created_idx ON generation_jobs (user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS generation_jobs_provider_model_created_idx ON generation_jobs (type, provider, model_name, created_at DESC); + +CREATE TABLE IF NOT EXISTS system_api_configs ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + provider VARCHAR(128), + name VARCHAR(255) NOT NULL, + api_url TEXT NOT NULL DEFAULT '', + model_name VARCHAR(255) NOT NULL, + note TEXT NOT NULL DEFAULT '', + api_key_encrypted TEXT NOT NULL DEFAULT '', + api_key_preview VARCHAR(64) NOT NULL DEFAULT '', + type VARCHAR(16) NOT NULL DEFAULT 'image', + credits_per_use INTEGER NOT NULL DEFAULT 10, + is_active BOOLEAN NOT NULL DEFAULT true, + sort_order INTEGER NOT NULL DEFAULT 0, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + updated_at TIMESTAMPTZ +); + +CREATE INDEX IF NOT EXISTS system_api_configs_active_type_sort_idx ON system_api_configs (is_active, type, sort_order); + +CREATE TABLE IF NOT EXISTS payment_methods ( + id VARCHAR(64) PRIMARY KEY, + type VARCHAR(32) NOT NULL, + name VARCHAR(128) NOT NULL, + is_active BOOLEAN NOT NULL DEFAULT FALSE, + public_config JSONB NOT NULL DEFAULT '{}'::jsonb, + secret_config_encrypted JSONB NOT NULL DEFAULT '{}'::jsonb, + secret_config_preview JSONB NOT NULL DEFAULT '{}'::jsonb, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + updated_at TIMESTAMPTZ +); + +INSERT INTO payment_methods (id, type, name, is_active) VALUES + ('pm-alipay', 'alipay', '支付宝', true), + ('pm-wechat', 'wechat', '微信支付', false), + ('pm-manual', 'manual', '手动转账', false), + ('pm-stripe', 'stripe', 'Stripe', false) +ON CONFLICT (id) DO NOTHING; + +CREATE INDEX IF NOT EXISTS platform_logs_user_name_idx ON platform_logs (LOWER(COALESCE(user_name, ''))); +CREATE INDEX IF NOT EXISTS platform_logs_user_email_idx ON platform_logs (LOWER(COALESCE(user_email, ''))); + +ALTER TABLE announcements + ADD COLUMN IF NOT EXISTS type VARCHAR(32) NOT NULL DEFAULT 'site'; + +ALTER TABLE platform_log_settings ENABLE ROW LEVEL SECURITY; +ALTER TABLE platform_logs ENABLE ROW LEVEL SECURITY; +ALTER TABLE api_providers ENABLE ROW LEVEL SECURITY; +ALTER TABLE model_recommendations ENABLE ROW LEVEL SECURITY; +ALTER TABLE system_api_configs ENABLE ROW LEVEL SECURITY; +ALTER TABLE payment_methods ENABLE ROW LEVEL SECURITY; + +-- ============================================================ +-- Row Level Security (RLS) 策略 +-- ============================================================ + +-- 启用所有表的 RLS +ALTER TABLE profiles ENABLE ROW LEVEL SECURITY; +ALTER TABLE works ENABLE ROW LEVEL SECURITY; +ALTER TABLE credit_transactions ENABLE ROW LEVEL SECURITY; +ALTER TABLE orders ENABLE ROW LEVEL SECURITY; +ALTER TABLE user_api_keys ENABLE ROW LEVEL SECURITY; +ALTER TABLE work_likes ENABLE ROW LEVEL SECURITY; +ALTER TABLE site_config ENABLE ROW LEVEL SECURITY; +ALTER TABLE announcements ENABLE ROW LEVEL SECURITY; +ALTER TABLE site_stats ENABLE ROW LEVEL SECURITY; + +DROP POLICY IF EXISTS "profiles_read_own" ON profiles; +DROP POLICY IF EXISTS "profiles_update_own" ON profiles; +DROP POLICY IF EXISTS "profiles_admin_all" ON profiles; +DROP POLICY IF EXISTS "works_read_public" ON works; +DROP POLICY IF EXISTS "works_insert_own" ON works; +DROP POLICY IF EXISTS "works_update_own" ON works; +DROP POLICY IF EXISTS "works_delete_own" ON works; +DROP POLICY IF EXISTS "works_admin_all" ON works; +DROP POLICY IF EXISTS "credit_transactions_read_own" ON credit_transactions; +DROP POLICY IF EXISTS "credit_transactions_admin_all" ON credit_transactions; +DROP POLICY IF EXISTS "orders_read_own" ON orders; +DROP POLICY IF EXISTS "orders_insert_own" ON orders; +DROP POLICY IF EXISTS "orders_admin_all" ON orders; +DROP POLICY IF EXISTS "user_api_keys_read_own" ON user_api_keys; +DROP POLICY IF EXISTS "user_api_keys_insert_own" ON user_api_keys; +DROP POLICY IF EXISTS "user_api_keys_update_own" ON user_api_keys; +DROP POLICY IF EXISTS "user_api_keys_delete_own" ON user_api_keys; +DROP POLICY IF EXISTS "work_likes_read_all" ON work_likes; +DROP POLICY IF EXISTS "work_likes_insert_own" ON work_likes; +DROP POLICY IF EXISTS "work_likes_delete_own" ON work_likes; +DROP POLICY IF EXISTS "site_config_read_all" ON site_config; +DROP POLICY IF EXISTS "site_config_write_auth" ON site_config; +DROP POLICY IF EXISTS "site_config_admin_write" ON site_config; +DROP POLICY IF EXISTS "announcements_read_all" ON announcements; +DROP POLICY IF EXISTS "announcements_write_auth" ON announcements; +DROP POLICY IF EXISTS "announcements_admin_write" ON announcements; +DROP POLICY IF EXISTS "site_stats_read_all" ON site_stats; +DROP POLICY IF EXISTS "site_stats_write_auth" ON site_stats; + +-- profiles: 用户可读自己的资料,管理员可读写所有 +CREATE POLICY "profiles_read_own" ON profiles FOR SELECT USING (auth.uid() = id); +CREATE POLICY "profiles_update_own" ON profiles FOR UPDATE USING (auth.uid() = id); +CREATE POLICY "profiles_admin_all" ON profiles FOR ALL USING ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +) WITH CHECK ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +); + +-- works: 用户可管理自己的作品,公开作品所有人可读 +CREATE POLICY "works_read_public" ON works FOR SELECT USING (is_public = true OR auth.uid() = user_id); +CREATE POLICY "works_insert_own" ON works FOR INSERT WITH CHECK (auth.uid() = user_id); +CREATE POLICY "works_update_own" ON works FOR UPDATE USING (auth.uid() = user_id); +CREATE POLICY "works_delete_own" ON works FOR DELETE USING (auth.uid() = user_id); +CREATE POLICY "works_admin_all" ON works FOR ALL USING ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +) WITH CHECK ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +); + +-- credit_transactions: 用户可读自己的记录 +CREATE POLICY "credit_transactions_read_own" ON credit_transactions FOR SELECT USING (auth.uid() = user_id); +CREATE POLICY "credit_transactions_admin_all" ON credit_transactions FOR ALL USING ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +) WITH CHECK ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +); + +-- orders: 用户可读自己的订单 +CREATE POLICY "orders_read_own" ON orders FOR SELECT USING (auth.uid() = user_id); +CREATE POLICY "orders_insert_own" ON orders FOR INSERT WITH CHECK (auth.uid() = user_id); +CREATE POLICY "orders_admin_all" ON orders FOR ALL USING ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +) WITH CHECK ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +); + +-- user_api_keys: 用户可管理自己的密钥 +CREATE POLICY "user_api_keys_read_own" ON user_api_keys FOR SELECT USING (auth.uid() = user_id); +CREATE POLICY "user_api_keys_insert_own" ON user_api_keys FOR INSERT WITH CHECK (auth.uid() = user_id); +CREATE POLICY "user_api_keys_update_own" ON user_api_keys FOR UPDATE USING (auth.uid() = user_id); +CREATE POLICY "user_api_keys_delete_own" ON user_api_keys FOR DELETE USING (auth.uid() = user_id); + +-- work_likes: 认证用户可点赞,所有人可读 +CREATE POLICY "work_likes_read_all" ON work_likes FOR SELECT USING (true); +CREATE POLICY "work_likes_insert_own" ON work_likes FOR INSERT WITH CHECK (auth.uid() = user_id); +CREATE POLICY "work_likes_delete_own" ON work_likes FOR DELETE USING (auth.uid() = user_id); + +-- site_config: 所有人可读,认证用户可写 (管理员操作通过 service role key) +CREATE POLICY "site_config_read_all" ON site_config FOR SELECT USING (true); +CREATE POLICY "site_config_admin_write" ON site_config FOR ALL USING ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +) WITH CHECK ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +); + +-- announcements: 所有人可读,认证用户可写 (管理员操作) +CREATE POLICY "announcements_read_all" ON announcements FOR SELECT USING (true); +CREATE POLICY "announcements_admin_write" ON announcements FOR ALL USING ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +) WITH CHECK ( + EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') +); + +-- site_stats: 公开读,访问量递增走 SECURITY DEFINER 函数 +CREATE POLICY "site_stats_read_all" ON site_stats FOR SELECT USING (true); + +-- ============================================================ +-- Supabase Storage 桶 (通过 Supabase Dashboard 或 API 创建) +-- ============================================================ +-- 需要在 Supabase Dashboard 中手动创建以下 Storage 桶: +-- 1. site-assets (公开读) — 存放网站 Logo、Favicon +-- 2. works (私有) — 存放用户生成的图片/视频文件 +-- +-- 或者通过 SQL (需要 service_role 权限): +-- INSERT INTO storage.buckets (id, name, public) VALUES ('site-assets', 'site-assets', true) ON CONFLICT DO NOTHING; +-- INSERT INTO storage.buckets (id, name, public) VALUES ('works', 'works', false) ON CONFLICT DO NOTHING; + +-- ============================================================ +-- 触发器: 自动更新 updated_at 字段 +-- ============================================================ +CREATE OR REPLACE FUNCTION update_updated_at() +RETURNS TRIGGER AS $$ +BEGIN + NEW.updated_at = now(); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +DROP TRIGGER IF EXISTS profiles_updated_at ON profiles; +DROP TRIGGER IF EXISTS works_updated_at ON works; +DROP TRIGGER IF EXISTS orders_updated_at ON orders; +DROP TRIGGER IF EXISTS user_api_keys_updated_at ON user_api_keys; +DROP TRIGGER IF EXISTS site_config_updated_at ON site_config; +DROP TRIGGER IF EXISTS announcements_updated_at ON announcements; + +CREATE TRIGGER profiles_updated_at BEFORE UPDATE ON profiles FOR EACH ROW EXECUTE FUNCTION update_updated_at(); +CREATE TRIGGER works_updated_at BEFORE UPDATE ON works FOR EACH ROW EXECUTE FUNCTION update_updated_at(); +CREATE TRIGGER orders_updated_at BEFORE UPDATE ON orders FOR EACH ROW EXECUTE FUNCTION update_updated_at(); +CREATE TRIGGER user_api_keys_updated_at BEFORE UPDATE ON user_api_keys FOR EACH ROW EXECUTE FUNCTION update_updated_at(); +CREATE TRIGGER site_config_updated_at BEFORE UPDATE ON site_config FOR EACH ROW EXECUTE FUNCTION update_updated_at(); +CREATE TRIGGER announcements_updated_at BEFORE UPDATE ON announcements FOR EACH ROW EXECUTE FUNCTION update_updated_at(); + +-- ============================================================ +-- 触发器: 新用户注册时自动创建 profile +-- (仅在使用 Supabase Auth 时生效) +-- ============================================================ +CREATE OR REPLACE FUNCTION handle_new_user() +RETURNS TRIGGER AS $$ +BEGIN + INSERT INTO profiles (id, email, nickname, role, membership_tier, credits_balance, daily_quota_limit) + VALUES ( + NEW.id, + NEW.email, + COALESCE(NEW.raw_user_meta_data->>'nickname', split_part(NEW.email, '@', 1)), + 'user', + 'free', + 10, -- 新用户赠送 10 积分 + 5 -- 每日配额 5 次 + ) + ON CONFLICT (id) DO NOTHING; + -- 记录注册赠送积分 + INSERT INTO credit_transactions (user_id, amount, balance_after, type, description) + SELECT NEW.id, 10, 10, 'gift', '新用户注册奖励' + WHERE NOT EXISTS ( + SELECT 1 FROM credit_transactions + WHERE user_id = NEW.id AND type = 'gift' AND description = '新用户注册奖励' + ); + RETURN NEW; +END; +$$ LANGUAGE plpgsql SECURITY DEFINER; + +DROP TRIGGER IF EXISTS on_auth_user_created ON auth.users; + +CREATE TRIGGER on_auth_user_created + AFTER INSERT ON auth.users + FOR EACH ROW EXECUTE FUNCTION handle_new_user(); + +-- ============================================================ +-- 初始化管理员账户 (可选) +-- 请在注册管理员后,手动执行以下 SQL 将角色设为 admin: +-- UPDATE profiles SET role = 'admin' WHERE email = 'your-admin@example.com'; +-- ============================================================ + +-- ============================================================ +-- 原子递增访问量的 SQL 函数 +-- ============================================================ +CREATE OR REPLACE FUNCTION increment_visits() +RETURNS BIGINT AS $$ +DECLARE + new_count BIGINT; +BEGIN + UPDATE site_stats SET total_visits = total_visits + 1, updated_at = now() WHERE id = 1 + RETURNING total_visits INTO new_count; + RETURN new_count; +END; +$$ LANGUAGE plpgsql SECURITY DEFINER; + +-- 完成 +SELECT 'Database initialization completed successfully!' AS status; diff --git a/scripts/prepare.sh b/scripts/prepare.sh new file mode 100644 index 0000000..0e1abc9 --- /dev/null +++ b/scripts/prepare.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -Eeuo pipefail + +COZE_WORKSPACE_PATH="${COZE_WORKSPACE_PATH:-$(pwd)}" + +cd "${COZE_WORKSPACE_PATH}" + +echo "Installing dependencies..." +pnpm install --prefer-frozen-lockfile --prefer-offline --loglevel debug --reporter=append-only +if command -v coze > /dev/null 2>&1 && coze check-bins --help > /dev/null 2>&1; then + coze check-bins --fix +fi diff --git a/scripts/start.sh b/scripts/start.sh new file mode 100644 index 0000000..612793b --- /dev/null +++ b/scripts/start.sh @@ -0,0 +1,46 @@ +#!/bin/bash +set -Eeuo pipefail + +COZE_WORKSPACE_PATH="${COZE_WORKSPACE_PATH:-$(pwd)}" + +# Load environment variables from .env.local if it exists. PM2 role-specific +# values are restored afterwards so backend/console services keep their ports. +PM2_DEPLOY_RUN_PORT="${DEPLOY_RUN_PORT:-}" +PM2_APP_RUNTIME_ROLE="${APP_RUNTIME_ROLE:-}" +PM2_BACKEND_INTERNAL_URL="${BACKEND_INTERNAL_URL:-}" +PM2_CONSOLE_INTERNAL_URL="${CONSOLE_INTERNAL_URL:-}" + +if [ -f "${COZE_WORKSPACE_PATH}/.env.local" ]; then + set +u + set -a + # shellcheck disable=SC1091 + source "${COZE_WORKSPACE_PATH}/.env.local" + set +a + set -u +fi + +[ -n "${PM2_DEPLOY_RUN_PORT}" ] && DEPLOY_RUN_PORT="${PM2_DEPLOY_RUN_PORT}" +[ -n "${PM2_APP_RUNTIME_ROLE}" ] && APP_RUNTIME_ROLE="${PM2_APP_RUNTIME_ROLE}" +[ -n "${PM2_BACKEND_INTERNAL_URL}" ] && BACKEND_INTERNAL_URL="${PM2_BACKEND_INTERNAL_URL}" +[ -n "${PM2_CONSOLE_INTERNAL_URL}" ] && CONSOLE_INTERNAL_URL="${PM2_CONSOLE_INTERNAL_URL}" + +if [ -n "${DEPLOY_NODE_BIN_DIR:-}" ] && [ -d "${DEPLOY_NODE_BIN_DIR}" ]; then + export PATH="${DEPLOY_NODE_BIN_DIR}:${PATH}" +fi + +PORT=${1:-5000} +DEPLOY_RUN_PORT="${DEPLOY_RUN_PORT:-$PORT}" +APP_RUNTIME_ROLE="${APP_RUNTIME_ROLE:-full}" + + +start_service() { + cd "${COZE_WORKSPACE_PATH}" + echo "Starting ${APP_RUNTIME_ROLE} HTTP service on port ${DEPLOY_RUN_PORT} for deploy..." + echo "COZE_PROJECT_ENV: ${COZE_PROJECT_ENV}" + export NODE_ENV="${NODE_ENV:-production}" + export APP_RUNTIME_ROLE + PORT=${DEPLOY_RUN_PORT} node dist/server.js +} + +echo "Starting ${APP_RUNTIME_ROLE} HTTP service on port ${DEPLOY_RUN_PORT} for deploy..." +start_service diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx new file mode 100644 index 0000000..b3fe560 --- /dev/null +++ b/src/app/about/page.tsx @@ -0,0 +1,5 @@ +import { SitePolicyPage } from '@/components/site-policy-page'; + +export default function AboutPage() { + return ; +} diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx new file mode 100644 index 0000000..ece68f8 --- /dev/null +++ b/src/app/admin/page.tsx @@ -0,0 +1,5 @@ +import { redirect } from 'next/navigation'; + +export default function AdminRedirectPage() { + redirect('/console'); +} diff --git a/src/app/api/admin/clear-users/route.ts b/src/app/api/admin/clear-users/route.ts new file mode 100644 index 0000000..6241601 --- /dev/null +++ b/src/app/api/admin/clear-users/route.ts @@ -0,0 +1,84 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { requireAdmin } from '@/lib/admin-auth'; + +const DEFAULT_ADMIN_EMAIL = 'admin@example.com'; + +export async function POST(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + if (process.env.ENABLE_DANGER_ADMIN_CLEAR_USERS !== 'true') { + return NextResponse.json( + { error: '生产环境已默认禁用清空用户数据功能。如确需执行,请临时设置 ENABLE_DANGER_ADMIN_CLEAR_USERS=true 并完成备份后再操作。' }, + { status: 403 }, + ); + } + + const body = await request.json(); + const { password } = body; + + const adminPassword = process.env.ADMIN_DEFAULT_PASSWORD || 'admin123'; + + if (password !== adminPassword) { + return NextResponse.json({ error: '管理员密码错误' }, { status: 401 }); + } + + const client = await getDbClient(); + + try { + await client.query('BEGIN'); + + const adminResult = await client.query( + `SELECT id, email, nickname FROM profiles + WHERE role = 'admin' AND is_active = true + ORDER BY CASE WHEN email = $1 THEN 0 ELSE 1 END, created_at ASC + LIMIT 1`, + [DEFAULT_ADMIN_EMAIL], + ); + + if (adminResult.rows.length === 0) { + await client.query('ROLLBACK'); + return NextResponse.json({ error: '未找到可保留的系统管理员账号,已拒绝清理' }, { status: 409 }); + } + + const admin = adminResult.rows[0]; + + await client.query('DELETE FROM credit_transactions WHERE user_id <> $1', [admin.id]); + await client.query('DELETE FROM work_likes WHERE user_id <> $1', [admin.id]); + await client.query('DELETE FROM works WHERE user_id <> $1', [admin.id]); + await client.query('DELETE FROM user_api_keys WHERE user_id <> $1', [admin.id]); + await client.query('DELETE FROM orders WHERE user_id IS NOT NULL AND user_id <> $1', [admin.id]); + await client.query('DELETE FROM profiles WHERE id <> $1', [admin.id]); + await client.query('DELETE FROM auth.users WHERE id <> $1', [admin.id]); + + await client.query( + `UPDATE profiles + SET email = $2, + nickname = COALESCE(NULLIF(nickname, ''), $3), + role = 'admin', + membership_tier = 'enterprise', + credits_balance = GREATEST(COALESCE(credits_balance, 0), 9999), + daily_quota_limit = GREATEST(COALESCE(daily_quota_limit, 0), 999), + daily_quota_used = 0, + is_active = true, + updated_at = NOW() + WHERE id = $1`, + [admin.id, admin.email || DEFAULT_ADMIN_EMAIL, admin.nickname || '管理员'], + ); + + await client.query('COMMIT'); + return NextResponse.json({ success: true, message: '所有非系统管理员用户数据已清除,系统管理员已保留' }); + } catch (error) { + await client.query('ROLLBACK'); + throw error; + } finally { + client.release(); + } + } catch (error: unknown) { + const message = error instanceof Error ? error.message : '清除用户数据失败'; + console.error('[Clear Users Error]', message); + return NextResponse.json({ error: message }, { status: 500 }); + } +} diff --git a/src/app/api/admin/dashboard/route.ts b/src/app/api/admin/dashboard/route.ts new file mode 100644 index 0000000..480a7bd --- /dev/null +++ b/src/app/api/admin/dashboard/route.ts @@ -0,0 +1,285 @@ +import { NextRequest, NextResponse } from 'next/server'; +import type { PoolClient, QueryResult } from 'pg'; +import { requireAdmin } from '@/lib/admin-auth'; +import { getDbClient } from '@/storage/database/local-db'; + +type DbRow = Record; + +async function safeQuery(client: PoolClient, label: string, sql: string, params: unknown[] = []): Promise> { + try { + return await client.query(sql, params); + } catch (error) { + console.error(`[admin/dashboard] ${label} failed:`, error); + return { rows: [], rowCount: 0, command: 'SELECT', oid: 0, fields: [] }; + } +} + +function numberValue(value: unknown): number { + const parsed = Number(value ?? 0); + return Number.isFinite(parsed) ? parsed : 0; +} + +function firstRow(result: QueryResult): DbRow { + return result.rows[0] || {}; +} + +function statusCount(rows: DbRow[], status: string): number { + const row = rows.find(item => item.status === status); + return numberValue(row?.count); +} + +export async function GET(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const client = await getDbClient(); + try { + const [ + platformResult, + userResult, + workResult, + taskStatusResult, + latestTaskResult, + orderStatusResult, + orderRevenueResult, + latestOrderResult, + storageResult, + logResult, + providerResult, + recommendationResult, + userApiKeyResult, + announcementResult, + ] = await Promise.all([ + safeQuery(client, 'platform summary', ` + SELECT + COALESCE((SELECT total_visits FROM site_stats WHERE id = 1 LIMIT 1), 0)::bigint AS total_visits, + NOW() AS database_time + `), + safeQuery(client, 'user summary', ` + SELECT + COUNT(*)::int AS total, + COUNT(*) FILTER (WHERE COALESCE(is_active, true) = true)::int AS active, + COUNT(*) FILTER (WHERE COALESCE(is_active, true) = false)::int AS disabled, + COUNT(*) FILTER (WHERE COALESCE(role, 'user') IN ('admin', 'enterprise_admin'))::int AS admins, + COUNT(*) FILTER ( + WHERE COALESCE(role, 'user') = 'vip' + OR COALESCE(membership_tier, 'free') NOT IN ('free', '') + )::int AS members, + COUNT(*) FILTER (WHERE created_at >= NOW() - INTERVAL '7 days')::int AS created_7d + FROM profiles + `), + safeQuery(client, 'work summary', ` + SELECT + COUNT(*)::int AS total, + COUNT(*) FILTER (WHERE is_public = true)::int AS public, + COUNT(*) FILTER (WHERE is_public = false)::int AS private, + COUNT(*) FILTER (WHERE status = 'completed')::int AS completed, + COUNT(*) FILTER (WHERE status = 'failed')::int AS failed, + COUNT(*) FILTER (WHERE result_url IS NOT NULL AND result_url <> '')::int AS with_result_url, + COUNT(*) FILTER (WHERE created_at >= NOW() - INTERVAL '7 days')::int AS created_7d, + COUNT(*) FILTER (WHERE type = 'text2img')::int AS text2img, + COUNT(*) FILTER (WHERE type = 'img2img')::int AS img2img, + COUNT(*) FILTER (WHERE type = 'text2video')::int AS text2video, + COUNT(*) FILTER (WHERE type = 'img2video')::int AS img2video + FROM works + `), + safeQuery(client, 'task status summary', ` + SELECT status, COUNT(*)::int AS count + FROM generation_jobs + GROUP BY status + `), + safeQuery(client, 'latest tasks', ` + SELECT id, type, status, error, created_at, updated_at + FROM generation_jobs + ORDER BY created_at DESC + LIMIT 6 + `), + safeQuery(client, 'order status summary', ` + SELECT status, COUNT(*)::int AS count + FROM orders + GROUP BY status + `), + safeQuery(client, 'order revenue summary', ` + SELECT + COALESCE(SUM(amount) FILTER (WHERE status = 'paid'), 0)::numeric AS paid_revenue, + COALESCE(SUM(amount) FILTER ( + WHERE status = 'paid' AND COALESCE(paid_at, created_at) >= NOW() - INTERVAL '7 days' + ), 0)::numeric AS paid_revenue_7d + FROM orders + `), + safeQuery(client, 'latest orders', ` + SELECT id, order_no, product_name, amount, status, created_at + FROM orders + ORDER BY created_at DESC + LIMIT 6 + `), + safeQuery(client, 'storage health', ` + SELECT + COUNT(*)::int AS total, + COUNT(*) FILTER (WHERE result_url IS NOT NULL AND result_url <> '')::int AS persisted + FROM works + `), + safeQuery(client, 'log health', ` + SELECT + COUNT(*)::int AS total, + COUNT(*) FILTER (WHERE level = 'error')::int AS errors, + COUNT(*) FILTER (WHERE created_at >= NOW() - INTERVAL '24 hours')::int AS created_24h + FROM platform_logs + `), + safeQuery(client, 'provider summary', ` + SELECT + COUNT(*)::int AS total, + COUNT(*) FILTER (WHERE is_active = true)::int AS active, + COUNT(*) FILTER (WHERE is_active = false)::int AS inactive, + COUNT(*) FILTER (WHERE type = 'image')::int AS image, + COUNT(*) FILTER (WHERE type = 'video')::int AS video, + COUNT(*) FILTER (WHERE type = 'text')::int AS text, + COUNT(*) FILTER ( + WHERE is_active = true + AND (COALESCE(default_api_url, '') = '' OR COALESCE(default_model, '') = '') + )::int AS incomplete + FROM api_providers + `), + safeQuery(client, 'model recommendation summary', ` + SELECT + COUNT(*)::int AS total, + COUNT(*) FILTER (WHERE is_active = true)::int AS active + FROM model_recommendations + `), + safeQuery(client, 'user api key summary', ` + SELECT + COUNT(*)::int AS total, + COUNT(*) FILTER (WHERE is_active = true)::int AS active + FROM user_api_keys + `), + safeQuery(client, 'announcement summary', ` + SELECT + COUNT(*)::int AS total, + COUNT(*) FILTER ( + WHERE is_active = true + AND (starts_at IS NULL OR starts_at <= NOW()) + AND (expires_at IS NULL OR expires_at >= NOW()) + )::int AS active, + COUNT(*) FILTER (WHERE is_active = true AND starts_at > NOW())::int AS scheduled, + COUNT(*) FILTER (WHERE expires_at < NOW())::int AS expired + FROM announcements + `), + ]); + + const platform = firstRow(platformResult); + const users = firstRow(userResult); + const works = firstRow(workResult); + const orderRevenue = firstRow(orderRevenueResult); + const storage = firstRow(storageResult); + const logs = firstRow(logResult); + const providers = firstRow(providerResult); + const recommendations = firstRow(recommendationResult); + const userApiKeys = firstRow(userApiKeyResult); + const announcements = firstRow(announcementResult); + const taskRows = taskStatusResult.rows; + const orderRows = orderStatusResult.rows; + + const totalTasks = taskRows.reduce((sum, row) => sum + numberValue(row.count), 0); + const totalOrders = orderRows.reduce((sum, row) => sum + numberValue(row.count), 0); + const totalWorks = numberValue(works.total); + + return NextResponse.json({ + generatedAt: new Date().toISOString(), + platform: { + totalVisits: numberValue(platform.total_visits), + databaseTime: platform.database_time || null, + }, + users: { + total: numberValue(users.total), + active: numberValue(users.active), + disabled: numberValue(users.disabled), + admins: numberValue(users.admins), + members: numberValue(users.members), + created7d: numberValue(users.created_7d), + }, + works: { + total: totalWorks, + public: numberValue(works.public), + private: numberValue(works.private), + completed: numberValue(works.completed), + failed: numberValue(works.failed), + withResultUrl: numberValue(works.with_result_url), + created7d: numberValue(works.created_7d), + resultUrlCoverage: totalWorks > 0 ? numberValue(works.with_result_url) / totalWorks : 1, + byType: { + text2img: numberValue(works.text2img), + img2img: numberValue(works.img2img), + text2video: numberValue(works.text2video), + img2video: numberValue(works.img2video), + }, + }, + tasks: { + total: totalTasks, + queued: statusCount(taskRows, 'queued'), + running: statusCount(taskRows, 'running'), + succeeded: statusCount(taskRows, 'succeeded'), + failed: statusCount(taskRows, 'failed'), + latest: latestTaskResult.rows.map(row => ({ + id: String(row.id || ''), + type: String(row.type || ''), + status: String(row.status || ''), + error: row.error ? String(row.error) : null, + createdAt: row.created_at || null, + updatedAt: row.updated_at || null, + })), + }, + orders: { + total: totalOrders, + pending: statusCount(orderRows, 'pending'), + paid: statusCount(orderRows, 'paid'), + cancelled: statusCount(orderRows, 'cancelled'), + refunded: statusCount(orderRows, 'refunded'), + paidRevenue: numberValue(orderRevenue.paid_revenue), + paidRevenue7d: numberValue(orderRevenue.paid_revenue_7d), + latest: latestOrderResult.rows.map(row => ({ + id: String(row.id || ''), + orderNo: String(row.order_no || ''), + productName: String(row.product_name || ''), + amount: numberValue(row.amount), + status: String(row.status || ''), + createdAt: row.created_at || null, + })), + }, + providers: { + total: numberValue(providers.total), + active: numberValue(providers.active), + inactive: numberValue(providers.inactive), + image: numberValue(providers.image), + video: numberValue(providers.video), + text: numberValue(providers.text), + incomplete: numberValue(providers.incomplete), + recommendationsTotal: numberValue(recommendations.total), + recommendationsActive: numberValue(recommendations.active), + userApiKeysTotal: numberValue(userApiKeys.total), + userApiKeysActive: numberValue(userApiKeys.active), + }, + announcements: { + total: numberValue(announcements.total), + active: numberValue(announcements.active), + scheduled: numberValue(announcements.scheduled), + expired: numberValue(announcements.expired), + }, + system: { + apiHealth: true, + databaseHealth: true, + storageHealth: Boolean(process.env.LOCAL_STORAGE_DIR), + storageDirConfigured: Boolean(process.env.LOCAL_STORAGE_DIR), + worksPersisted: numberValue(storage.persisted), + worksTotal: numberValue(storage.total), + logsTotal: numberValue(logs.total), + logsErrors: numberValue(logs.errors), + logsCreated24h: numberValue(logs.created_24h), + }, + }); + } catch (error) { + console.error('[admin/dashboard] GET error:', error); + return NextResponse.json({ error: '获取仪表盘数据失败' }, { status: 500 }); + } finally { + client.release(); + } +} diff --git a/src/app/api/admin/data-export/route.ts b/src/app/api/admin/data-export/route.ts new file mode 100644 index 0000000..dda27a7 --- /dev/null +++ b/src/app/api/admin/data-export/route.ts @@ -0,0 +1,69 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { getDbClient } from '@/storage/database/local-db'; + +export async function GET(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const client = await getDbClient(); + try { + const data: Record = {}; + + const tables = [ + 'profiles', + 'works', + 'credit_transactions', + 'orders', + 'user_api_keys', + 'system_api_configs', + 'payment_methods', + 'work_likes', + 'announcements', + ]; + + for (const table of tables) { + try { + const result = await client.query(`SELECT * FROM ${table} ORDER BY created_at ASC`); + data[table] = result.rows || []; + } catch { + data[table] = []; + } + } + + try { + const result = await client.query('SELECT * FROM site_config'); + data.site_config = result.rows || []; + } catch { data.site_config = []; } + + try { + const result = await client.query('SELECT * FROM site_stats'); + data.site_stats = result.rows || []; + } catch { data.site_stats = []; } + + try { + const result = await client.query('SELECT id, email, created_at, raw_user_meta_data, password_hash FROM auth.users'); + data.auth_users = result.rows || []; + } catch { data.auth_users = []; } + + const exportData = { + _meta: { + version: '1.0', + platform: 'miaojing', + exported_at: new Date().toISOString(), + tables: Object.keys(data), + counts: Object.fromEntries(Object.entries(data).map(([k, v]) => [k, v.length])), + }, + data, + }; + + return NextResponse.json(exportData); + } finally { + client.release(); + } + } catch (err) { + console.error('[data-export] Error:', err); + return NextResponse.json({ error: err instanceof Error ? err.message : '导出失败' }, { status: 500 }); + } +} diff --git a/src/app/api/admin/data-import/route.ts b/src/app/api/admin/data-import/route.ts new file mode 100644 index 0000000..0973569 --- /dev/null +++ b/src/app/api/admin/data-import/route.ts @@ -0,0 +1,584 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { localStorage } from '@/lib/local-storage'; +import { encryptSecret, previewSecret } from '@/lib/server-crypto'; +import { getDbClient } from '@/storage/database/local-db'; + +interface ImportMeta { + version: string; + platform: string; + exported_at: string; + tables: string[]; + counts: Record; +} + +interface ImportPayload { + _meta: ImportMeta; + data: Record; + options?: { + skipAuth?: boolean; + }; +} + +const MAX_ROWS_PER_TABLE = 5000; +const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; +const UUID_ID_TABLES = new Set([ + 'auth.users', + 'profiles', + 'announcements', + 'works', + 'credit_transactions', + 'orders', + 'user_api_keys', + 'system_api_configs', + 'work_likes', +]); + +const TABLE_COLUMNS: Record = { + profiles: ['id', 'email', 'nickname', 'avatar_url', 'phone', 'role', 'membership_tier', 'membership_expires_at', 'credits_balance', 'daily_quota_used', 'daily_quota_limit', 'is_active', 'preferred_theme', 'created_at', 'updated_at'], + site_config: ['id', 'site_name', 'site_tab_title', 'site_description', 'site_keywords', 'logo_url', 'favicon_url', 'announcement', 'membership_enabled', 'terms_of_service', 'privacy_policy', 'about_us', 'help_center', 'filing_info', 'filing_url', 'public_security_filing_info', 'public_security_filing_url', 'updated_at'], + site_stats: ['id', 'total_visits', 'total_users', 'total_generations', 'updated_at'], + announcements: ['id', 'title', 'content', 'type', 'is_active', 'starts_at', 'expires_at', 'created_at', 'updated_at'], + works: ['id', 'user_id', 'title', 'type', 'prompt', 'negative_prompt', 'params', 'result_url', 'thumbnail_url', 'width', 'height', 'duration', 'status', 'is_public', 'likes_count', 'views_count', 'created_at', 'updated_at'], + credit_transactions: ['id', 'user_id', 'amount', 'balance_after', 'type', 'description', 'related_work_id', 'created_at'], + orders: ['id', 'user_id', 'order_no', 'product_type', 'product_name', 'amount', 'credits_amount', 'status', 'payment_method', 'paid_at', 'created_at', 'updated_at'], + user_api_keys: ['id', 'user_id', 'provider', 'supplier_name', 'api_url', 'model_name', 'note', 'api_key_encrypted', 'api_key_preview', 'type', 'is_active', 'created_at', 'updated_at'], + system_api_configs: ['id', 'provider', 'name', 'api_url', 'model_name', 'note', 'api_key_encrypted', 'api_key_preview', 'type', 'credits_per_use', 'is_active', 'sort_order', 'created_at', 'updated_at'], + payment_methods: ['id', 'type', 'name', 'is_active', 'public_config', 'secret_config_encrypted', 'secret_config_preview', 'created_at', 'updated_at'], + work_likes: ['id', 'user_id', 'work_id', 'created_at'], +}; + +const SYSTEM_USER_ID = '00000000-0000-0000-0000-000000000000'; +const AUTH_USER_COLUMNS = ['id', 'email', 'created_at', 'raw_user_meta_data', 'password_hash']; + +const CONFLICT_COLUMNS: Record = { + 'auth.users': ['id'], + profiles: ['id'], + site_config: ['id'], + site_stats: ['id'], + announcements: ['id'], + works: ['id'], + credit_transactions: ['id'], + orders: ['id'], + user_api_keys: ['id'], + system_api_configs: ['id'], + payment_methods: ['id'], + work_likes: ['id'], +}; + +type ImportResult = { imported: number; skipped: number; errors: string[] }; + +type ImportContext = { + userIdMap: Map; + workIdMap: Map; + emailUserIdMap: Map; + apiKeyIdMap: Map; + apiKeyOwnerIdMap: Map; + columnCache: Map>; +}; + +export async function POST(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const body: ImportPayload = await request.json(); + const { _meta, data } = body; + const skipAuth = body.options?.skipAuth === true; + + if (!_meta || _meta.platform !== 'miaojing' || !data || typeof data !== 'object') { + return NextResponse.json({ error: '无效的导入文件:格式不匹配' }, { status: 400 }); + } + + const client = await getDbClient(); + const result: Record = {}; + + try { + const context = await buildImportContext(client, data); + + if (!skipAuth && Array.isArray(data.auth_users)) { + result.auth_users = await importRows(client, 'auth.users', AUTH_USER_COLUMNS, data.auth_users, context); + } else { + result.auth_users = { + imported: 0, + skipped: Array.isArray(data.auth_users) ? data.auth_users.length : 0, + errors: skipAuth ? ['已按选项跳过认证账号导入'] : [], + }; + } + + for (const [table, allowedColumns] of Object.entries(TABLE_COLUMNS)) { + const rows = data[table]; + result[table] = await importRows(client, table, allowedColumns, Array.isArray(rows) ? rows : [], context); + } + + return NextResponse.json({ success: true, message: '数据导入完成', details: result, meta: _meta }); + } finally { + client.release(); + } + } catch (err) { + console.error('[data-import] Error:', err instanceof Error ? err.message : err); + return NextResponse.json({ error: err instanceof Error ? err.message : '导入失败' }, { status: 500 }); + } +} + +async function importRows( + client: Awaited>, + table: string, + allowedColumns: string[], + rows: unknown[], + context: ImportContext, +): Promise { + if (rows.length > MAX_ROWS_PER_TABLE) { + return { imported: 0, skipped: rows.length, errors: [`${table}: 单表最多允许导入 ${MAX_ROWS_PER_TABLE} 行`] }; + } + + let imported = 0; + let skipped = 0; + const errors: string[] = []; + const existingColumns = await getExistingColumns(client, table, context); + const effectiveAllowedColumns = allowedColumns.filter(col => existingColumns.has(col)); + + for (const rawRow of rows) { + const row = await normalizeImportRow(table, rawRow as Record, context); + const cols = Object.keys(row).filter(col => effectiveAllowedColumns.includes(col)); + if (!cols.includes('id') || cols.length === 0) { + skipped++; + errors.push(`${table}: 缺少 id 或没有允许导入的字段`); + continue; + } + + try { + const vals = cols.map(col => row[col]); + const placeholders = cols.map((_, i) => `$${i + 1}`).join(', '); + const conflictCols = CONFLICT_COLUMNS[table] || ['id']; + + const mergeAssignments = getMergeAssignments(table, cols); + const conflictAction = mergeAssignments.length > 0 + ? `DO UPDATE SET ${mergeAssignments.join(', ')}` + : 'DO NOTHING'; + + const insertResult = await client.query( + `INSERT INTO ${table} AS target (${cols.join(', ')}) VALUES (${placeholders}) ON CONFLICT (${conflictCols.join(', ')}) ${conflictAction}`, + vals, + ); + if ((insertResult.rowCount || 0) > 0) { + imported++; + } else { + skipped++; + } + } catch (e) { + skipped++; + errors.push(`${table}: ${e instanceof Error ? e.message : 'unknown error'}`); + } + } + + return { imported, skipped, errors }; +} + +async function buildImportContext( + client: Awaited>, + data: Record, +): Promise { + const userIdMap = new Map(); + const workIdMap = new Map(); + const emailUserIdMap = new Map(); + const apiKeyIdMap = new Map(); + const apiKeyOwnerIdMap = new Map(); + + const profileRows = Array.isArray(data.profiles) ? data.profiles : []; + const authRows = Array.isArray(data.auth_users) ? data.auth_users : []; + const profileEmails = new Map(); + + for (const raw of profileRows) { + const row = raw as Record; + seedUuidMap(userIdMap, row.id); + if (typeof row.id === 'string' && typeof row.email === 'string' && row.email.trim()) { + const email = row.email.trim().toLowerCase(); + profileEmails.set(email, row.id); + emailUserIdMap.set(email, userIdMap.get(row.id) || row.id); + } + } + for (const raw of authRows) { + const row = raw as Record; + seedUuidMap(userIdMap, row.id); + if (typeof row.id === 'string' && typeof row.email === 'string' && row.email.trim() && !profileEmails.has(row.email.trim().toLowerCase())) { + const email = row.email.trim().toLowerCase(); + profileEmails.set(email, row.id); + emailUserIdMap.set(email, userIdMap.get(row.id) || row.id); + } + } + + if (profileEmails.size > 0) { + const emails = [...profileEmails.keys()]; + const existing = await client.query( + 'SELECT id, lower(email) AS email FROM profiles WHERE lower(email) = ANY($1)', + [emails], + ); + for (const row of existing.rows) { + const importedId = profileEmails.get(row.email); + if (importedId && importedId !== row.id) { + userIdMap.set(importedId, row.id); + emailUserIdMap.set(row.email, row.id); + } + } + } + + for (const [email, importedId] of profileEmails.entries()) { + emailUserIdMap.set(email, userIdMap.get(importedId) || importedId); + } + + const apiKeyRows = Array.isArray(data.user_api_keys) ? data.user_api_keys : []; + for (const raw of apiKeyRows) { + const row = raw as Record; + const oldId = typeof row.id === 'string' && row.id.trim() ? row.id.trim() : ''; + if (oldId) { + apiKeyIdMap.set(oldId, isUuid(oldId) ? oldId : crypto.randomUUID()); + } + const ownerId = findImportedWorkUserId(row); + const ownerByEmail = findUserIdByEmail(row, { userIdMap, workIdMap, emailUserIdMap, apiKeyIdMap, apiKeyOwnerIdMap, columnCache: new Map() }); + const mappedOwnerId = ownerId + ? (userIdMap.get(ownerId) || ownerId) + : ownerByEmail; + if (oldId && mappedOwnerId) { + apiKeyOwnerIdMap.set(oldId, mappedOwnerId); + } + } + + const works = Array.isArray(data.works) ? data.works : []; + const workUrls = new Map(); + for (const raw of works) { + const row = raw as Record; + seedUuidMap(workIdMap, row.id); + if (typeof row.id === 'string' && typeof row.result_url === 'string' && row.result_url.trim() && !isDataUrl(row.result_url)) { + workUrls.set(row.result_url.trim(), row.id); + } + } + if (workUrls.size > 0) { + const existing = await client.query( + 'SELECT id, result_url FROM works WHERE result_url = ANY($1)', + [[...workUrls.keys()]], + ); + for (const row of existing.rows) { + const importedId = workUrls.get(row.result_url); + if (importedId && importedId !== row.id) { + workIdMap.set(importedId, row.id); + } + } + } + + return { userIdMap, workIdMap, emailUserIdMap, apiKeyIdMap, apiKeyOwnerIdMap, columnCache: new Map() }; +} + +async function normalizeImportRow(table: string, row: Record, context: ImportContext): Promise> { + const next = { ...row }; + + if (typeof next.user_id === 'string' && context.userIdMap.has(next.user_id)) { + next.user_id = context.userIdMap.get(next.user_id); + } + if ((!next.user_id || next.user_id === SYSTEM_USER_ID) && findUserIdByEmail(next, context)) { + next.user_id = findUserIdByEmail(next, context); + } + if (typeof next.related_work_id === 'string' && context.workIdMap.has(next.related_work_id)) { + next.related_work_id = context.workIdMap.get(next.related_work_id); + } + if (typeof next.work_id === 'string' && context.workIdMap.has(next.work_id)) { + next.work_id = context.workIdMap.get(next.work_id); + } + + if (table === 'auth.users' || table === 'profiles') { + const currentId = typeof next.id === 'string' ? next.id : ''; + if (currentId && context.userIdMap.has(currentId)) { + next.id = context.userIdMap.get(currentId); + } + } + + if (table === 'user_api_keys') { + const currentId = typeof next.id === 'string' ? next.id : ''; + if (currentId && context.apiKeyIdMap.has(currentId)) { + next.id = context.apiKeyIdMap.get(currentId); + } + const importedUserId = findImportedWorkUserId(next); + const emailUserId = findUserIdByEmail(next, context); + if (importedUserId || emailUserId) { + next.user_id = importedUserId + ? (context.userIdMap.get(importedUserId) || importedUserId) + : emailUserId; + } + } + + if (table === 'works') { + const currentId = typeof next.id === 'string' ? next.id : ''; + if (currentId && context.workIdMap.has(currentId)) { + next.id = context.workIdMap.get(currentId); + } + const importedUserId = findImportedWorkUserId(next) || findUserIdByEmail(next, context) || findUserIdByCustomModel(next, context); + if (importedUserId) { + next.user_id = context.userIdMap.get(importedUserId) || importedUserId; + } + if (typeof next.result_url === 'string') { + next.result_url = await persistImportMedia(next.result_url, getWorkMediaFolder(next.type, 'results')); + } + if (typeof next.thumbnail_url === 'string') { + next.thumbnail_url = await persistImportMedia(next.thumbnail_url, 'imported/works/thumbnails'); + } + if (next.params && typeof next.params === 'object') { + next.params = await sanitizeImportMedia(next.params, 'imported/works/references'); + remapCustomModelId(next.params as Record, context); + if ((!next.user_id || next.user_id === SYSTEM_USER_ID) && findUserIdByCustomModel(next, context)) { + next.user_id = findUserIdByCustomModel(next, context); + } + } + } + + if (table === 'user_api_keys') { + const rawEncrypted = typeof next.api_key_encrypted === 'string' ? next.api_key_encrypted.trim() : ''; + const rawApiKey = typeof next.apiKey === 'string' ? next.apiKey.trim() : ''; + const secret = rawApiKey || rawEncrypted; + if (secret) { + next.api_key_encrypted = encryptSecret(secret); + next.api_key_preview = typeof next.api_key_preview === 'string' && next.api_key_preview + ? next.api_key_preview + : previewSecret(secret); + } + } + + if (UUID_ID_TABLES.has(table)) { + const currentId = typeof next.id === 'string' ? next.id : ''; + if (!isUuid(currentId)) { + next.id = crypto.randomUUID(); + } + } + + return next; +} + +function findImportedWorkUserId(row: Record): string | null { + const directKeys = ['user_id', 'userId', 'publisher_id', 'publisherId', 'owner_id', 'ownerId', 'created_by', 'createdBy']; + for (const key of directKeys) { + const value = row[key]; + if (typeof value === 'string' && value.trim() && value !== 'anonymous' && value !== '00000000-0000-0000-0000-000000000000') { + return value.trim(); + } + } + + const params = row.params && typeof row.params === 'object' ? row.params as Record : null; + if (!params) return null; + for (const key of directKeys) { + const value = params[key]; + if (typeof value === 'string' && value.trim() && value !== 'anonymous' && value !== '00000000-0000-0000-0000-000000000000') { + return value.trim(); + } + } + return null; +} + +function findUserIdByEmail(row: Record, context: ImportContext): string | null { + const directKeys = ['email', 'user_email', 'userEmail', 'publisher_email', 'publisherEmail', 'owner_email', 'ownerEmail']; + for (const key of directKeys) { + const value = row[key]; + if (typeof value === 'string' && value.trim()) { + const mapped = context.emailUserIdMap.get(value.trim().toLowerCase()); + if (mapped) return mapped; + } + } + + const params = row.params && typeof row.params === 'object' ? row.params as Record : null; + if (!params) return null; + for (const key of directKeys) { + const value = params[key]; + if (typeof value === 'string' && value.trim()) { + const mapped = context.emailUserIdMap.get(value.trim().toLowerCase()); + if (mapped) return mapped; + } + } + return null; +} + +function findUserIdByCustomModel(row: Record, context: ImportContext): string | null { + const params = row.params && typeof row.params === 'object' ? row.params as Record : null; + const model = typeof params?.model === 'string' + ? params.model + : typeof row.model === 'string' + ? row.model + : ''; + if (!model.startsWith('custom:')) return null; + const oldId = model.slice('custom:'.length); + return context.apiKeyOwnerIdMap.get(oldId) || null; +} + +function remapCustomModelId(params: Record, context: ImportContext): void { + const model = typeof params.model === 'string' ? params.model : ''; + if (!model.startsWith('custom:')) return; + const oldId = model.slice('custom:'.length); + const newId = context.apiKeyIdMap.get(oldId); + if (newId) { + params.model = `custom:${newId}`; + } +} + +function getMergeAssignments(table: string, cols: string[]): string[] { + const has = (column: string) => cols.includes(column); + const assignments: string[] = []; + + if (table === 'auth.users') { + if (has('email')) assignments.push(`email = COALESCE(NULLIF(target.email, ''), EXCLUDED.email)`); + if (has('raw_user_meta_data')) assignments.push(`raw_user_meta_data = COALESCE(target.raw_user_meta_data, EXCLUDED.raw_user_meta_data)`); + if (has('password_hash')) assignments.push(`password_hash = COALESCE(NULLIF(target.password_hash, ''), EXCLUDED.password_hash)`); + return assignments; + } + + if (table === 'profiles') { + if (has('email')) assignments.push(`email = COALESCE(NULLIF(target.email, ''), EXCLUDED.email)`); + if (has('nickname')) assignments.push(`nickname = COALESCE(NULLIF(target.nickname, ''), EXCLUDED.nickname)`); + if (has('avatar_url')) assignments.push(`avatar_url = COALESCE(NULLIF(target.avatar_url, ''), EXCLUDED.avatar_url)`); + if (has('phone')) assignments.push(`phone = COALESCE(NULLIF(target.phone, ''), EXCLUDED.phone)`); + if (has('role')) assignments.push(`role = CASE WHEN target.role = 'admin' THEN target.role ELSE COALESCE(NULLIF(target.role, ''), EXCLUDED.role) END`); + if (has('membership_tier')) assignments.push(`membership_tier = COALESCE(NULLIF(target.membership_tier, ''), EXCLUDED.membership_tier)`); + if (has('membership_expires_at')) assignments.push(`membership_expires_at = COALESCE(target.membership_expires_at, EXCLUDED.membership_expires_at)`); + if (has('credits_balance')) assignments.push(`credits_balance = COALESCE(target.credits_balance, EXCLUDED.credits_balance)`); + if (has('daily_quota_limit')) assignments.push(`daily_quota_limit = COALESCE(target.daily_quota_limit, EXCLUDED.daily_quota_limit)`); + if (has('is_active')) assignments.push(`is_active = COALESCE(target.is_active, EXCLUDED.is_active)`); + if (has('preferred_theme')) assignments.push(`preferred_theme = CASE WHEN EXCLUDED.preferred_theme IN ('dark', 'light') THEN EXCLUDED.preferred_theme ELSE target.preferred_theme END`); + if (has('updated_at')) assignments.push(`updated_at = GREATEST(COALESCE(target.updated_at, EXCLUDED.updated_at), COALESCE(EXCLUDED.updated_at, target.updated_at))`); + return assignments; + } + + if (table === 'works') { + if (has('user_id')) { + assignments.push(`user_id = CASE WHEN (target.user_id IS NULL OR target.user_id = '${SYSTEM_USER_ID}'::uuid) AND EXCLUDED.user_id IS NOT NULL AND EXCLUDED.user_id <> '${SYSTEM_USER_ID}'::uuid THEN EXCLUDED.user_id ELSE target.user_id END`); + } + if (has('params')) assignments.push(`params = CASE WHEN target.params IS NULL OR target.params = '{}'::jsonb THEN EXCLUDED.params ELSE target.params END`); + if (has('thumbnail_url')) assignments.push(`thumbnail_url = COALESCE(NULLIF(target.thumbnail_url, ''), EXCLUDED.thumbnail_url)`); + if (has('width')) assignments.push(`width = COALESCE(target.width, EXCLUDED.width)`); + if (has('height')) assignments.push(`height = COALESCE(target.height, EXCLUDED.height)`); + if (has('duration')) assignments.push(`duration = COALESCE(target.duration, EXCLUDED.duration)`); + if (has('updated_at')) assignments.push(`updated_at = GREATEST(COALESCE(target.updated_at, EXCLUDED.updated_at), COALESCE(EXCLUDED.updated_at, target.updated_at))`); + return assignments; + } + + if (table === 'user_api_keys') { + if (has('user_id')) assignments.push(`user_id = COALESCE(target.user_id, EXCLUDED.user_id)`); + if (has('provider')) assignments.push(`provider = COALESCE(NULLIF(target.provider, ''), EXCLUDED.provider)`); + if (has('supplier_name')) assignments.push(`supplier_name = COALESCE(NULLIF(target.supplier_name, ''), EXCLUDED.supplier_name)`); + if (has('api_url')) assignments.push(`api_url = COALESCE(NULLIF(target.api_url, ''), EXCLUDED.api_url)`); + if (has('model_name')) assignments.push(`model_name = COALESCE(NULLIF(target.model_name, ''), EXCLUDED.model_name)`); + if (has('note')) assignments.push(`note = COALESCE(NULLIF(target.note, ''), EXCLUDED.note)`); + if (has('api_key_encrypted')) assignments.push(`api_key_encrypted = COALESCE(NULLIF(target.api_key_encrypted, ''), EXCLUDED.api_key_encrypted)`); + if (has('api_key_preview')) assignments.push(`api_key_preview = COALESCE(NULLIF(target.api_key_preview, ''), EXCLUDED.api_key_preview)`); + if (has('type')) assignments.push(`type = COALESCE(NULLIF(target.type, ''), EXCLUDED.type)`); + if (has('is_active')) assignments.push(`is_active = COALESCE(target.is_active, EXCLUDED.is_active)`); + if (has('updated_at')) assignments.push(`updated_at = GREATEST(COALESCE(target.updated_at, EXCLUDED.updated_at), COALESCE(EXCLUDED.updated_at, target.updated_at))`); + return assignments; + } + + if (table === 'system_api_configs') { + if (has('provider')) assignments.push(`provider = COALESCE(NULLIF(target.provider, ''), EXCLUDED.provider)`); + if (has('name')) assignments.push(`name = COALESCE(NULLIF(target.name, ''), EXCLUDED.name)`); + if (has('api_url')) assignments.push(`api_url = COALESCE(NULLIF(target.api_url, ''), EXCLUDED.api_url)`); + if (has('model_name')) assignments.push(`model_name = COALESCE(NULLIF(target.model_name, ''), EXCLUDED.model_name)`); + if (has('note')) assignments.push(`note = COALESCE(NULLIF(target.note, ''), EXCLUDED.note)`); + if (has('api_key_encrypted')) assignments.push(`api_key_encrypted = COALESCE(NULLIF(target.api_key_encrypted, ''), EXCLUDED.api_key_encrypted)`); + if (has('api_key_preview')) assignments.push(`api_key_preview = COALESCE(NULLIF(target.api_key_preview, ''), EXCLUDED.api_key_preview)`); + if (has('type')) assignments.push(`type = COALESCE(NULLIF(target.type, ''), EXCLUDED.type)`); + if (has('credits_per_use')) assignments.push(`credits_per_use = COALESCE(target.credits_per_use, EXCLUDED.credits_per_use)`); + if (has('is_active')) assignments.push(`is_active = COALESCE(target.is_active, EXCLUDED.is_active)`); + if (has('sort_order')) assignments.push(`sort_order = COALESCE(target.sort_order, EXCLUDED.sort_order)`); + if (has('updated_at')) assignments.push(`updated_at = GREATEST(COALESCE(target.updated_at, EXCLUDED.updated_at), COALESCE(EXCLUDED.updated_at, target.updated_at))`); + return assignments; + } + + if (table === 'payment_methods') { + if (has('type')) assignments.push(`type = COALESCE(NULLIF(target.type, ''), EXCLUDED.type)`); + if (has('name')) assignments.push(`name = COALESCE(NULLIF(target.name, ''), EXCLUDED.name)`); + if (has('is_active')) assignments.push(`is_active = COALESCE(target.is_active, EXCLUDED.is_active)`); + if (has('public_config')) assignments.push(`public_config = COALESCE(target.public_config, EXCLUDED.public_config)`); + if (has('secret_config_encrypted')) assignments.push(`secret_config_encrypted = COALESCE(target.secret_config_encrypted, EXCLUDED.secret_config_encrypted)`); + if (has('secret_config_preview')) assignments.push(`secret_config_preview = COALESCE(target.secret_config_preview, EXCLUDED.secret_config_preview)`); + if (has('updated_at')) assignments.push(`updated_at = GREATEST(COALESCE(target.updated_at, EXCLUDED.updated_at), COALESCE(EXCLUDED.updated_at, target.updated_at))`); + return assignments; + } + + return assignments; +} + +async function getExistingColumns( + client: Awaited>, + table: string, + context: ImportContext, +): Promise> { + const cached = context.columnCache.get(table); + if (cached) return cached; + + const [schemaName, tableName] = table.includes('.') ? table.split('.', 2) : ['public', table]; + const result = await client.query( + 'SELECT column_name FROM information_schema.columns WHERE table_schema = $1 AND table_name = $2', + [schemaName, tableName], + ); + const columns = new Set((result.rows || []).map((row: Record) => String(row.column_name))); + context.columnCache.set(table, columns); + return columns; +} + +function seedUuidMap(map: Map, value: unknown): void { + if (typeof value === 'string' && value && !isUuid(value) && !map.has(value)) { + map.set(value, crypto.randomUUID()); + } +} + +function isUuid(value: unknown): value is string { + return typeof value === 'string' && UUID_REGEX.test(value); +} + +function isDataUrl(value: unknown): boolean { + return typeof value === 'string' && /^data:[^,]+,/i.test(value); +} + +function getWorkMediaFolder(type: unknown, kind: string): string { + const text = typeof type === 'string' ? type.toLowerCase() : ''; + const media = text.includes('video') ? 'videos' : 'images'; + return `imported/works/${kind}/${media}`; +} + +function extensionFromMime(mime: string): string { + const normalized = mime.toLowerCase(); + if (normalized.includes('png')) return 'png'; + if (normalized.includes('jpeg') || normalized.includes('jpg')) return 'jpg'; + if (normalized.includes('webp')) return 'webp'; + if (normalized.includes('gif')) return 'gif'; + if (normalized.includes('mp4')) return 'mp4'; + if (normalized.includes('webm')) return 'webm'; + return 'bin'; +} + +async function persistImportMedia(value: string, folder: string): Promise { + if (!isDataUrl(value)) return value; + + const match = value.match(/^data:([^;,]+)?(;base64)?,([\s\S]*)$/i); + if (!match) return value; + + const mime = match[1] || 'application/octet-stream'; + const isBase64 = Boolean(match[2]); + const payload = match[3] || ''; + const buffer = isBase64 ? Buffer.from(payload, 'base64') : Buffer.from(decodeURIComponent(payload)); + const ext = extensionFromMime(mime); + const key = `${folder}/${Date.now()}-${crypto.randomUUID()}.${ext}`; + const savedKey = await localStorage.uploadFile({ fileContent: buffer, fileName: key, contentType: mime }); + return localStorage.generatePresignedUrl({ key: savedKey, expireTime: 2592000 }); +} + +async function sanitizeImportMedia(value: unknown, folder: string): Promise { + if (typeof value === 'string') { + return persistImportMedia(value, folder); + } + if (Array.isArray(value)) { + return Promise.all(value.map(item => sanitizeImportMedia(item, folder))); + } + if (value && typeof value === 'object') { + const output: Record = {}; + for (const [key, nested] of Object.entries(value as Record)) { + output[key] = await sanitizeImportMedia(nested, folder); + } + return output; + } + return value; +} diff --git a/src/app/api/admin/email-recipients/route.ts b/src/app/api/admin/email-recipients/route.ts new file mode 100644 index 0000000..7177bf2 --- /dev/null +++ b/src/app/api/admin/email-recipients/route.ts @@ -0,0 +1,77 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { isValidEmail, normalizeEmail } from '@/lib/email-service'; +import { getDbClient } from '@/storage/database/local-db'; + +export const runtime = 'nodejs'; + +function mapRecipient(row: Record) { + const email = normalizeEmail(row.email); + if (!isValidEmail(email)) return null; + return { + id: String(row.id), + email, + nickname: typeof row.nickname === 'string' && row.nickname.trim() ? row.nickname.trim() : email.split('@')[0], + phone: typeof row.phone === 'string' ? row.phone : null, + avatarUrl: typeof row.avatar_url === 'string' ? row.avatar_url : null, + emailVerified: row.email_verified === true, + }; +} + +export async function GET(request: NextRequest) { + const adminError = await requireAdmin(request); + if (adminError) return adminError; + + const { searchParams } = new URL(request.url); + const q = (searchParams.get('q') || '').trim().toLowerCase().slice(0, 80); + const limit = Math.min(80, Math.max(1, Number(searchParams.get('limit') || 30))); + + const client = await getDbClient(); + try { + const params: unknown[] = []; + let filter = ` + WHERE COALESCE(role, 'user') NOT IN ('admin', 'enterprise_admin') + AND COALESCE(is_active, true) = true + AND COALESCE(email, '') <> '' + `; + + if (q) { + params.push(`%${q}%`); + filter += ` + AND ( + LOWER(email) LIKE $${params.length} + OR LOWER(COALESCE(nickname, '')) LIKE $${params.length} + OR COALESCE(phone, '') LIKE $${params.length} + ) + `; + } + + const result = await client.query( + `SELECT id, email, nickname, phone, avatar_url, email_verified + FROM profiles + ${filter} + ORDER BY created_at DESC + LIMIT ${limit}`, + params, + ); + + const countResult = await client.query( + `SELECT COUNT(*)::int AS count + FROM profiles + WHERE COALESCE(role, 'user') NOT IN ('admin', 'enterprise_admin') + AND COALESCE(is_active, true) = true + AND COALESCE(email, '') <> ''`, + ); + + const users = result.rows + .map(mapRecipient) + .filter((item): item is NonNullable> => Boolean(item)); + + return NextResponse.json({ + users, + total: Number(countResult.rows[0]?.count || 0), + }); + } finally { + client.release(); + } +} diff --git a/src/app/api/admin/email-settings/route.ts b/src/app/api/admin/email-settings/route.ts new file mode 100644 index 0000000..9ebb288 --- /dev/null +++ b/src/app/api/admin/email-settings/route.ts @@ -0,0 +1,84 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { + getEmailSettings, + getRequestBaseUrl, + publicEmailSettings, + renderEmailTemplate, + saveEmailSettings, + sendTemplatedEmail, +} from '@/lib/email-service'; +import { getDbClient } from '@/storage/database/local-db'; + +export const runtime = 'nodejs'; + +export async function GET(request: NextRequest) { + const adminError = await requireAdmin(request); + if (adminError) return adminError; + + const client = await getDbClient(); + try { + const settings = await getEmailSettings(client); + const platformUrl = getRequestBaseUrl(request) || settings.appBaseUrl; + const preview = renderEmailTemplate(settings, { + title: '通知邮件模板预览', + intro: '这是一封由管理员发送给用户的通知邮件示例,用于预览全局通用邮件模板效果。', + body: '你可以在后台使用这套模板发送系统公告、功能更新、订单提醒、活动通知和安全提醒。实际发送时,标题、正文、按钮和备注会替换为管理员填写的内容。', + buttonText: '进入妙境', + buttonUrl: platformUrl, + note: '验证码邮件使用独立安全验证模板;管理员通知、管理员邮件和提醒邮件使用这套通用模板。', + templateKind: 'notification', + assetBaseUrl: platformUrl, + }); + return NextResponse.json({ settings: publicEmailSettings(settings), preview }); + } finally { + client.release(); + } +} + +export async function PUT(request: NextRequest) { + const adminError = await requireAdmin(request); + if (adminError) return adminError; + + const client = await getDbClient(); + try { + const body = await request.json(); + const settings = await saveEmailSettings(client, body); + return NextResponse.json({ success: true, settings, message: '邮箱配置已保存' }); + } catch (error) { + const message = error instanceof Error ? error.message : '邮箱配置保存失败'; + return NextResponse.json({ error: message }, { status: 400 }); + } finally { + client.release(); + } +} + +export async function POST(request: NextRequest) { + const adminError = await requireAdmin(request); + if (adminError) return adminError; + + const client = await getDbClient(); + try { + const body = await request.json(); + const to = typeof body.to === 'string' ? body.to.trim() : ''; + if (!to) { + return NextResponse.json({ error: '请填写测试收件邮箱' }, { status: 400 }); + } + await sendTemplatedEmail(client, { + to, + type: 'business', + subject: '【妙境】邮箱配置测试', + title: '邮箱配置测试', + intro: '如果你收到这封邮件,说明自定义域名邮箱 SMTP 配置已生效。', + note: '请同时检查收件箱、垃圾箱,以及 SPF/DKIM/DMARC 解析状态。', + ipAddress: 'admin-test', + assetBaseUrl: getRequestBaseUrl(request) || undefined, + }); + return NextResponse.json({ success: true, message: '测试邮件已发送' }); + } catch (error) { + const message = error instanceof Error ? error.message : '测试邮件发送失败'; + return NextResponse.json({ error: message }, { status: 400 }); + } finally { + client.release(); + } +} diff --git a/src/app/api/admin/generation-jobs/route.ts b/src/app/api/admin/generation-jobs/route.ts new file mode 100644 index 0000000..1084fee --- /dev/null +++ b/src/app/api/admin/generation-jobs/route.ts @@ -0,0 +1,123 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { getDbClient } from '@/storage/database/local-db'; +import { markStaleRunningJobs } from '@/lib/generation-job-worker'; +import { ensureGenerationJobRuntimeSchema } from '@/lib/generation-job-estimates'; +import { writePlatformLog } from '@/lib/platform-logs'; + +const STATUSES = new Set(['queued', 'running', 'succeeded', 'failed']); +const CLEANUP_STATUSES = new Set(['failed', 'succeeded']); + +function intParam(value: string | null, fallback: number, min: number, max: number) { + const parsed = Number.parseInt(value || '', 10); + if (!Number.isFinite(parsed)) return fallback; + return Math.min(max, Math.max(min, parsed)); +} + +export async function GET(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + await markStaleRunningJobs(); + + const { searchParams } = new URL(request.url); + const status = searchParams.get('status') || ''; + const userSearch = (searchParams.get('user') || searchParams.get('userSearch') || '').trim(); + const page = intParam(searchParams.get('page'), 1, 1, 100000); + const pageSize = intParam(searchParams.get('pageSize'), 20, 1, 100); + const offset = (page - 1) * pageSize; + + if (status && !STATUSES.has(status)) { + return NextResponse.json({ error: '任务状态无效' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + await ensureGenerationJobRuntimeSchema(client); + const whereClauses: string[] = []; + const params: unknown[] = []; + if (status) { + params.push(status); + whereClauses.push(`j.status = $${params.length}`); + } + if (userSearch) { + params.push(`%${userSearch.toLowerCase()}%`); + whereClauses.push(`( + j.user_id::text LIKE $${params.length} + OR LOWER(COALESCE(p.email, '')) LIKE $${params.length} + OR LOWER(COALESCE(p.nickname, '')) LIKE $${params.length} + )`); + } + const whereSql = whereClauses.length ? `WHERE ${whereClauses.join(' AND ')}` : ''; + const countResult = await client.query( + `SELECT COUNT(*)::int AS total + FROM generation_jobs j + LEFT JOIN profiles p ON p.id = j.user_id + ${whereSql}`, + params, + ); + const rowsResult = await client.query( + `SELECT j.id, j.user_id, p.email AS user_email, p.nickname AS user_nickname, + j.type, j.status, j.error, j.created_at, j.started_at, j.finished_at, j.updated_at + FROM generation_jobs j + LEFT JOIN profiles p ON p.id = j.user_id + ${whereSql} + ORDER BY j.created_at DESC + LIMIT $${params.length + 1} + OFFSET $${params.length + 2}`, + [...params, pageSize, offset], + ); + + const total = countResult.rows[0]?.total || 0; + return NextResponse.json({ + jobs: rowsResult.rows, + total, + page, + pageSize, + totalPages: Math.max(1, Math.ceil(total / pageSize)), + }); + } finally { + client.release(); + } +} + +export async function DELETE(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const { searchParams } = new URL(request.url); + const status = searchParams.get('status') || 'failed'; + const olderThanDays = intParam(searchParams.get('olderThanDays'), 7, 0, 3650); + + if (!CLEANUP_STATUSES.has(status)) { + return NextResponse.json( + { error: '只允许清理失败或已完成任务' }, + { status: 400 }, + ); + } + + const client = await getDbClient(); + try { + const result = await client.query( + `DELETE FROM generation_jobs + WHERE status = $1 + AND updated_at < NOW() - ($2::int * INTERVAL '1 day')`, + [status, olderThanDays], + ); + void writePlatformLog({ + type: 'admin', + level: 'warning', + action: 'generation_jobs_cleanup', + message: `管理员清理了${status === 'failed' ? '失败' : '已完成'}生成任务`, + targetType: 'generation_jobs', + metadata: { status, olderThanDays, deleted: result.rowCount || 0 }, + request, + }); + return NextResponse.json({ + success: true, + deleted: result.rowCount || 0, + }); + } finally { + client.release(); + } +} diff --git a/src/app/api/admin/model-recommendations/route.ts b/src/app/api/admin/model-recommendations/route.ts new file mode 100644 index 0000000..870f5b0 --- /dev/null +++ b/src/app/api/admin/model-recommendations/route.ts @@ -0,0 +1,118 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { getDbClient } from '@/storage/database/local-db'; + +function mapRecommendation(row: Record) { + return { + id: String(row.id), + modelName: String(row.model_name || ''), + displayName: String(row.display_name || row.model_name || ''), + type: String(row.type || 'image'), + providerId: (row.provider_id as string | null) || null, + isActive: row.is_active !== false, + sortOrder: Number(row.sort_order || 0), + }; +} + +async function readBody(request: NextRequest) { + return request.json().catch(() => ({})); +} + +export async function GET() { + const client = await getDbClient(); + try { + const result = await client.query( + `SELECT id, model_name, display_name, type, provider_id, is_active, sort_order + FROM model_recommendations + ORDER BY type ASC, sort_order ASC, model_name ASC` + ); + return NextResponse.json({ recommendations: result.rows.map(mapRecommendation) }); + } finally { + client.release(); + } +} + +export async function POST(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const body = await readBody(request); + if (!body.modelName?.trim()) { + return NextResponse.json({ error: '请填写模型名称' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + const result = await client.query( + `INSERT INTO model_recommendations (model_name, display_name, type, provider_id, is_active, sort_order) + VALUES ($1, $2, $3, $4, $5, $6) + RETURNING id, model_name, display_name, type, provider_id, is_active, sort_order`, + [ + body.modelName.trim(), + body.displayName?.trim() || body.modelName.trim(), + body.type || 'image', + body.providerId || null, + body.isActive !== false, + Number(body.sortOrder || 0), + ] + ); + return NextResponse.json({ recommendation: mapRecommendation(result.rows[0]) }); + } finally { + client.release(); + } +} + +export async function PUT(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const body = await readBody(request); + if (!body.id || !body.modelName?.trim()) { + return NextResponse.json({ error: '缺少推荐项 ID 或模型名称' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + const result = await client.query( + `UPDATE model_recommendations + SET model_name = $2, display_name = $3, type = $4, provider_id = $5, + is_active = $6, sort_order = $7, updated_at = NOW() + WHERE id = $1 + RETURNING id, model_name, display_name, type, provider_id, is_active, sort_order`, + [ + body.id, + body.modelName.trim(), + body.displayName?.trim() || body.modelName.trim(), + body.type || 'image', + body.providerId || null, + body.isActive !== false, + Number(body.sortOrder || 0), + ] + ); + + if (result.rows.length === 0) { + return NextResponse.json({ error: '推荐模型不存在' }, { status: 404 }); + } + + return NextResponse.json({ recommendation: mapRecommendation(result.rows[0]) }); + } finally { + client.release(); + } +} + +export async function DELETE(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const body = await readBody(request); + const id = body.id || request.nextUrl.searchParams.get('id'); + if (!id) return NextResponse.json({ error: '缺少推荐项 ID' }, { status: 400 }); + + const client = await getDbClient(); + try { + await client.query('DELETE FROM model_recommendations WHERE id = $1', [id]); + return NextResponse.json({ success: true }); + } finally { + client.release(); + } +} diff --git a/src/app/api/admin/orders/route.ts b/src/app/api/admin/orders/route.ts new file mode 100644 index 0000000..8650c31 --- /dev/null +++ b/src/app/api/admin/orders/route.ts @@ -0,0 +1,80 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { requireAdmin } from '@/lib/admin-auth'; + +export async function GET(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const client = await getDbClient(); + try { + const result = await client.query('SELECT * FROM orders ORDER BY created_at DESC LIMIT 100'); + return NextResponse.json({ orders: result.rows || [] }); + } finally { + client.release(); + } + } catch (err) { + console.error('[admin/orders] GET error:', err); + return NextResponse.json({ error: '获取订单列表失败' }, { status: 500 }); + } +} + +export async function POST(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const body = await request.json(); + const client = await getDbClient(); + try { + const id = crypto.randomUUID(); + const { user_id, order_no, product_type, product_name, amount, credits_amount, status, payment_method } = body; + await client.query( + 'INSERT INTO orders (id, user_id, order_no, product_type, product_name, amount, credits_amount, status, payment_method) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)', + [id, user_id, order_no, product_type, product_name, amount, credits_amount, status || 'pending', payment_method] + ); + return NextResponse.json({ success: true }); + } finally { + client.release(); + } + } catch (err) { + console.error('[admin/orders] POST error:', err); + return NextResponse.json({ error: '创建订单失败' }, { status: 500 }); + } +} + +export async function PUT(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const body = await request.json(); + const { orderId, ...updates } = body; + + if (!orderId) { + return NextResponse.json({ error: '缺少订单ID' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + const setClauses: string[] = []; + const params: unknown[] = []; + let paramIdx = 1; + + if (updates.status !== undefined) { setClauses.push(`status = $${paramIdx++}`); params.push(updates.status); } + if (updates.payment_method !== undefined) { setClauses.push(`payment_method = $${paramIdx++}`); params.push(updates.payment_method); } + if (updates.paid_at !== undefined) { setClauses.push(`paid_at = $${paramIdx++}`); params.push(updates.paid_at); } + setClauses.push('updated_at = NOW()'); + + params.push(orderId); + await client.query(`UPDATE orders SET ${setClauses.join(', ')} WHERE id = $${paramIdx}`, params); + return NextResponse.json({ success: true }); + } finally { + client.release(); + } + } catch (err) { + console.error('[admin/orders] PUT error:', err); + return NextResponse.json({ error: '更新订单失败' }, { status: 500 }); + } +} diff --git a/src/app/api/admin/payment-methods/route.ts b/src/app/api/admin/payment-methods/route.ts new file mode 100644 index 0000000..13730c1 --- /dev/null +++ b/src/app/api/admin/payment-methods/route.ts @@ -0,0 +1,47 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { getDbClient } from '@/storage/database/local-db'; +import { listPaymentMethods, savePaymentMethod } from '@/lib/server-payment-config'; + +async function readBody(request: NextRequest) { + return request.json().catch(() => ({})); +} + +export async function GET(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const client = await getDbClient(); + try { + return NextResponse.json({ paymentMethods: await listPaymentMethods(client) }); + } finally { + client.release(); + } +} + +export async function PUT(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const body = await readBody(request); + if (typeof body.id !== 'string' || !body.id.trim()) { + return NextResponse.json({ error: '缺少支付方式 ID' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + const paymentMethods = await savePaymentMethod(client, body.id.trim(), { + name: typeof body.name === 'string' ? body.name : undefined, + isActive: typeof body.isActive === 'boolean' ? body.isActive : undefined, + config: body.config && typeof body.config === 'object' ? body.config : undefined, + }); + return NextResponse.json({ paymentMethods }); + } catch (err) { + return NextResponse.json( + { error: err instanceof Error ? err.message : '保存失败' }, + { status: 400 }, + ); + } finally { + client.release(); + } +} diff --git a/src/app/api/admin/providers/route.ts b/src/app/api/admin/providers/route.ts new file mode 100644 index 0000000..49a347b --- /dev/null +++ b/src/app/api/admin/providers/route.ts @@ -0,0 +1,121 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { getDbClient } from '@/storage/database/local-db'; + +function mapProvider(row: Record) { + return { + id: String(row.id), + name: String(row.name || ''), + defaultApiUrl: String(row.default_api_url || ''), + defaultModel: String(row.default_model || ''), + type: String(row.type || 'image'), + website: (row.website as string | null) || null, + isActive: row.is_active !== false, + sortOrder: Number(row.sort_order || 0), + }; +} + +async function readBody(request: NextRequest) { + return request.json().catch(() => ({})); +} + +export async function GET() { + const client = await getDbClient(); + try { + const result = await client.query( + `SELECT id, name, default_api_url, default_model, type, website, is_active, sort_order + FROM api_providers + ORDER BY sort_order ASC, name ASC` + ); + return NextResponse.json({ providers: result.rows.map(mapProvider) }); + } finally { + client.release(); + } +} + +export async function POST(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const body = await readBody(request); + if (!body.name?.trim()) { + return NextResponse.json({ error: '请填写供应商名称' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + const result = await client.query( + `INSERT INTO api_providers (name, default_api_url, default_model, type, website, is_active, sort_order) + VALUES ($1, $2, $3, $4, $5, $6, $7) + RETURNING id, name, default_api_url, default_model, type, website, is_active, sort_order`, + [ + body.name.trim(), + body.defaultApiUrl?.trim() || '', + body.defaultModel?.trim() || '', + body.type || 'image', + body.website?.trim() || null, + body.isActive !== false, + Number(body.sortOrder || 0), + ] + ); + return NextResponse.json({ provider: mapProvider(result.rows[0]) }); + } finally { + client.release(); + } +} + +export async function PUT(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const body = await readBody(request); + if (!body.id || !body.name?.trim()) { + return NextResponse.json({ error: '缺少供应商 ID 或名称' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + const result = await client.query( + `UPDATE api_providers + SET name = $2, default_api_url = $3, default_model = $4, type = $5, website = $6, + is_active = $7, sort_order = $8, updated_at = NOW() + WHERE id = $1 + RETURNING id, name, default_api_url, default_model, type, website, is_active, sort_order`, + [ + body.id, + body.name.trim(), + body.defaultApiUrl?.trim() || '', + body.defaultModel?.trim() || '', + body.type || 'image', + body.website?.trim() || null, + body.isActive !== false, + Number(body.sortOrder || 0), + ] + ); + + if (result.rows.length === 0) { + return NextResponse.json({ error: '供应商不存在' }, { status: 404 }); + } + + return NextResponse.json({ provider: mapProvider(result.rows[0]) }); + } finally { + client.release(); + } +} + +export async function DELETE(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const body = await readBody(request); + const id = body.id || request.nextUrl.searchParams.get('id'); + if (!id) return NextResponse.json({ error: '缺少供应商 ID' }, { status: 400 }); + + const client = await getDbClient(); + try { + await client.query('DELETE FROM api_providers WHERE id = $1', [id]); + return NextResponse.json({ success: true }); + } finally { + client.release(); + } +} diff --git a/src/app/api/admin/send-email/route.ts b/src/app/api/admin/send-email/route.ts new file mode 100644 index 0000000..cc193c3 --- /dev/null +++ b/src/app/api/admin/send-email/route.ts @@ -0,0 +1,147 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { getRequestBaseUrl, isValidEmail, normalizeEmail, sendTemplatedEmail } from '@/lib/email-service'; +import { getDbClient } from '@/storage/database/local-db'; + +export const runtime = 'nodejs'; + +const MAX_TARGETED_RECIPIENTS = 200; +const MAX_BROADCAST_RECIPIENTS = 5000; +type AdminMailKind = 'notification' | 'admin'; + +function normalizeMailKind(value: unknown): AdminMailKind { + return value === 'admin' ? 'admin' : 'notification'; +} + +function normalizeIdList(value: unknown): string[] { + if (!Array.isArray(value)) return []; + return [...new Set(value + .filter((item): item is string => typeof item === 'string') + .map(item => item.trim()) + .filter(item => /^[0-9a-fA-F-]{36}$/.test(item)))]; +} + +function normalizeEmailList(value: unknown): string[] { + if (!Array.isArray(value)) return []; + return [...new Set(value + .map(normalizeEmail) + .filter(isValidEmail))]; +} + +async function loadRecipients(client: Awaited>, body: Record) { + const mode = body.mode === 'all' ? 'all' : 'selected'; + + if (mode === 'all') { + const result = await client.query( + `SELECT id, email + FROM profiles + WHERE COALESCE(role, 'user') NOT IN ('admin', 'enterprise_admin') + AND COALESCE(is_active, true) = true + AND COALESCE(email, '') <> '' + ORDER BY created_at ASC + LIMIT $1`, + [MAX_BROADCAST_RECIPIENTS], + ); + return result.rows + .map(row => ({ id: String(row.id), email: normalizeEmail(row.email) })) + .filter(row => isValidEmail(row.email)); + } + + const userIds = normalizeIdList(body.userIds); + const emails = normalizeEmailList(body.emails); + + if (userIds.length === 0 && emails.length === 0) return []; + if (userIds.length + emails.length > MAX_TARGETED_RECIPIENTS) { + throw new Error(`单次指定发送最多 ${MAX_TARGETED_RECIPIENTS} 个收件人`); + } + + const result = await client.query( + `SELECT id, email + FROM profiles + WHERE COALESCE(role, 'user') NOT IN ('admin', 'enterprise_admin') + AND COALESCE(is_active, true) = true + AND COALESCE(email, '') <> '' + AND ( + id = ANY($1::uuid[]) + OR LOWER(email) = ANY($2::text[]) + )`, + [userIds, emails], + ); + + return result.rows + .map(row => ({ id: String(row.id), email: normalizeEmail(row.email) })) + .filter(row => isValidEmail(row.email)); +} + +export async function POST(request: NextRequest) { + const adminError = await requireAdmin(request); + if (adminError) return adminError; + + const client = await getDbClient(); + try { + const body = await request.json().catch(() => ({})) as Record; + const title = typeof body.title === 'string' ? body.title.trim().slice(0, 120) : ''; + const content = typeof body.content === 'string' ? body.content.trim().slice(0, 5000) : ''; + const buttonText = typeof body.buttonText === 'string' ? body.buttonText.trim().slice(0, 40) : ''; + const buttonUrl = typeof body.buttonUrl === 'string' ? body.buttonUrl.trim().slice(0, 500) : ''; + const mailKind = normalizeMailKind(body.mailKind); + const mailKindLabel = mailKind === 'admin' ? '管理员邮件' : '通知邮件'; + + if (!title || !content) { + return NextResponse.json({ error: '请填写邮件标题和正文内容' }, { status: 400 }); + } + if (buttonUrl && !/^https?:\/\/[^\s"'<>]+$/i.test(buttonUrl)) { + return NextResponse.json({ error: '按钮链接必须是 HTTP(S) 地址' }, { status: 400 }); + } + + const recipients = await loadRecipients(client, body); + const uniqueRecipients = [...new Map(recipients.map(item => [item.email, item])).values()]; + if (uniqueRecipients.length === 0) { + return NextResponse.json({ error: '没有可发送的非管理员用户邮箱' }, { status: 400 }); + } + + let sent = 0; + const failed: Array<{ email: string; error: string }> = []; + const assetBaseUrl = getRequestBaseUrl(request) || undefined; + + for (const recipient of uniqueRecipients) { + try { + await sendTemplatedEmail(client, { + to: recipient.email, + type: mailKind === 'admin' ? 'business' : 'announcement', + subject: `【妙境】${title}`, + title, + body: content, + buttonText: buttonText || undefined, + buttonUrl: buttonUrl || undefined, + note: `这是一封${mailKindLabel},请勿直接回复。`, + templateKind: mailKind, + ipAddress: body.mode === 'all' ? 'admin-broadcast' : 'admin-targeted', + assetBaseUrl, + }); + sent += 1; + } catch (error) { + failed.push({ + email: recipient.email, + error: error instanceof Error ? error.message : String(error), + }); + } + } + + return NextResponse.json({ + success: failed.length === 0, + total: uniqueRecipients.length, + sent, + failedCount: failed.length, + failed: failed.slice(0, 20), + message: failed.length === 0 + ? `邮件已发送给 ${sent} 个用户` + : `已发送 ${sent} 封,失败 ${failed.length} 封`, + }, { status: sent > 0 ? 200 : 400 }); + } catch (error) { + const message = error instanceof Error ? error.message : '邮件发送失败'; + return NextResponse.json({ error: message }, { status: 400 }); + } finally { + client.release(); + } +} diff --git a/src/app/api/admin/stats/route.ts b/src/app/api/admin/stats/route.ts new file mode 100644 index 0000000..55a2852 --- /dev/null +++ b/src/app/api/admin/stats/route.ts @@ -0,0 +1,39 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { getDbClient } from '@/storage/database/local-db'; + +export async function GET(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const client = await getDbClient(); + try { + const result = await client.query(` + SELECT + COALESCE((SELECT total_visits FROM site_stats WHERE id = 1 LIMIT 1), 0)::int AS total_visits, + COALESCE(( + SELECT COUNT(*) + FROM profiles + WHERE COALESCE(role, 'user') NOT IN ('admin', 'enterprise_admin') + ), 0)::int AS total_users, + COALESCE(( + SELECT COUNT(*) + FROM works + WHERE is_public = true AND status = 'completed' + ), 0)::int AS total_works + `); + const row = result.rows[0] || {}; + return NextResponse.json({ + totalVisits: Number(row.total_visits || 0), + totalUsers: Number(row.total_users || 0), + totalWorks: Number(row.total_works || 0), + }); + } finally { + client.release(); + } + } catch (err) { + console.error('[admin/stats] GET error:', err); + return NextResponse.json({ error: '获取统计数据失败' }, { status: 500 }); + } +} diff --git a/src/app/api/admin/system-apis/route.ts b/src/app/api/admin/system-apis/route.ts new file mode 100644 index 0000000..77467e2 --- /dev/null +++ b/src/app/api/admin/system-apis/route.ts @@ -0,0 +1,142 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { getDbClient } from '@/storage/database/local-db'; +import { + encryptApiKeyForStorage, + ensureSystemApiSchema, + isUuid, + listSystemApis, + toSafeSystemApi, +} from '@/lib/server-api-config'; + +async function readBody(request: NextRequest) { + return request.json().catch(() => ({})); +} + +function normalizeType(value: unknown): 'image' | 'video' | 'text' { + return value === 'video' || value === 'text' ? value : 'image'; +} + +export async function GET(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + const includeInactive = request.nextUrl.searchParams.get('includeInactive') !== 'false'; + return NextResponse.json({ apis: await listSystemApis(includeInactive) }); +} + +export async function POST(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const body = await readBody(request); + if (!body.name?.trim() || !body.modelName?.trim()) { + return NextResponse.json({ error: '请填写显示名称和模型名称' }, { status: 400 }); + } + + const secret = encryptApiKeyForStorage(String(body.apiKey || '')); + const client = await getDbClient(); + try { + await ensureSystemApiSchema(client); + const result = await client.query( + `INSERT INTO system_api_configs ( + provider, name, api_url, model_name, note, api_key_encrypted, + api_key_preview, type, credits_per_use, is_active, sort_order + ) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, + COALESCE((SELECT MAX(sort_order) + 1 FROM system_api_configs), 0)) + RETURNING id, provider, name, api_url, model_name, note, api_key_preview, + type, credits_per_use, is_active, sort_order, created_at, updated_at`, + [ + String(body.provider || '').trim(), + String(body.name).trim(), + String(body.apiUrl || '').trim(), + String(body.modelName).trim(), + String(body.note || '').trim(), + secret.encrypted, + secret.preview, + normalizeType(body.type), + Number(body.creditsPerUse || 10), + body.isActive !== false, + ], + ); + return NextResponse.json({ api: toSafeSystemApi(result.rows[0]) }); + } finally { + client.release(); + } +} + +export async function PUT(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + const body = await readBody(request); + if (!isUuid(body.id) || !body.name?.trim() || !body.modelName?.trim()) { + return NextResponse.json({ error: '缺少 API ID、显示名称或模型名称' }, { status: 400 }); + } + + const updates: string[] = []; + const params: unknown[] = []; + let idx = 1; + const add = (column: string, value: unknown) => { + updates.push(`${column} = $${idx++}`); + params.push(value); + }; + + add('provider', String(body.provider || '').trim()); + add('name', String(body.name).trim()); + add('api_url', String(body.apiUrl || '').trim()); + add('model_name', String(body.modelName).trim()); + add('note', String(body.note || '').trim()); + add('type', normalizeType(body.type)); + add('credits_per_use', Number(body.creditsPerUse || 10)); + add('is_active', body.isActive !== false); + if (body.sortOrder !== undefined) add('sort_order', Number(body.sortOrder || 0)); + + if (typeof body.apiKey === 'string' && body.apiKey.trim() && body.apiKey !== '********') { + const secret = encryptApiKeyForStorage(body.apiKey); + add('api_key_encrypted', secret.encrypted); + add('api_key_preview', secret.preview); + } + if (body.clearApiKey === true) { + add('api_key_encrypted', ''); + add('api_key_preview', ''); + } + updates.push('updated_at = NOW()'); + params.push(body.id); + + const client = await getDbClient(); + try { + await ensureSystemApiSchema(client); + const result = await client.query( + `UPDATE system_api_configs + SET ${updates.join(', ')} + WHERE id = $${idx} + RETURNING id, provider, name, api_url, model_name, note, api_key_preview, + type, credits_per_use, is_active, sort_order, created_at, updated_at`, + params, + ); + if (result.rows.length === 0) { + return NextResponse.json({ error: '系统 API 不存在' }, { status: 404 }); + } + return NextResponse.json({ api: toSafeSystemApi(result.rows[0]) }); + } finally { + client.release(); + } +} + +export async function DELETE(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + const body = await readBody(request); + const id = body.id || request.nextUrl.searchParams.get('id'); + if (!isUuid(id)) return NextResponse.json({ error: '缺少 API ID' }, { status: 400 }); + + const client = await getDbClient(); + try { + await ensureSystemApiSchema(client); + await client.query('DELETE FROM system_api_configs WHERE id = $1', [id]); + return NextResponse.json({ success: true }); + } finally { + client.release(); + } +} diff --git a/src/app/api/admin/users/route.ts b/src/app/api/admin/users/route.ts new file mode 100644 index 0000000..253ca78 --- /dev/null +++ b/src/app/api/admin/users/route.ts @@ -0,0 +1,74 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { requireAdmin } from '@/lib/admin-auth'; +import { deleteAdminUser, listAdminUsers, updateAdminUser } from '@/lib/admin-users-service'; + +function getTokenUserId(request: NextRequest): string | null { + const header = request.headers.get('authorization') || ''; + const token = header.replace(/^Bearer\s+/i, '').trim(); + const match = token.match(/^token-[a-z_]+-([0-9a-fA-F-]{36})-\d+$/); + return match?.[1] || null; +} + +export async function GET(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const client = await getDbClient(); + try { + const params = request.nextUrl.searchParams; + const result = await listAdminUsers(client, { + search: params.get('search') || params.get('q') || '', + page: Number(params.get('page') || '1'), + pageSize: Number(params.get('pageSize') || params.get('limit') || '20'), + }); + + return NextResponse.json(result); + } finally { + client.release(); + } + } catch (err) { + console.error('[admin/users] GET error:', err); + return NextResponse.json({ error: '获取用户列表失败' }, { status: 500 }); + } +} + +export async function PUT(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const body = await request.json(); + const client = await getDbClient(); + try { + const result = await updateAdminUser(client, body); + return NextResponse.json(result.body, { status: result.status }); + } finally { + client.release(); + } + } catch (err) { + console.error('[admin/users] PUT error:', err); + return NextResponse.json({ error: '服务器错误' }, { status: 500 }); + } +} + +export async function DELETE(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const body = await request.json().catch(() => ({})); + const userId = body.userId || body.id || request.nextUrl.searchParams.get('userId') || request.nextUrl.searchParams.get('id'); + const client = await getDbClient(); + try { + const result = await deleteAdminUser(client, String(userId || ''), getTokenUserId(request)); + return NextResponse.json(result.body, { status: result.status }); + } finally { + client.release(); + } + } catch (err) { + console.error('[admin/users] DELETE error:', err); + return NextResponse.json({ error: '删除用户失败' }, { status: 500 }); + } +} diff --git a/src/app/api/announcements/route.ts b/src/app/api/announcements/route.ts new file mode 100644 index 0000000..4c9aaee --- /dev/null +++ b/src/app/api/announcements/route.ts @@ -0,0 +1,124 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { requireAdmin } from '@/lib/admin-auth'; + +function toPublicAnnouncement(row: Record) { + const startsAt = row.starts_at ?? row.start_date ?? null; + const expiresAt = row.expires_at ?? row.end_date ?? null; + const isActive = row.is_active ?? row.enabled ?? true; + + return { + ...row, + enabled: isActive !== false, + start_date: startsAt, + end_date: expiresAt, + is_active: isActive !== false, + starts_at: startsAt, + expires_at: expiresAt, + }; +} + +export async function GET() { + try { + const client = await getDbClient(); + try { + const result = await client.query('SELECT * FROM announcements ORDER BY created_at DESC'); + return NextResponse.json((result.rows || []).map(toPublicAnnouncement)); + } finally { + client.release(); + } + } catch { + return NextResponse.json([]); + } +} + +export async function POST(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const body = await request.json(); + const { title, content, startDate, endDate, enabled } = body; + + if (!title || !content || !startDate || !endDate) { + return NextResponse.json({ error: '请填写完整公告信息' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + const id = crypto.randomUUID(); + await client.query( + 'INSERT INTO announcements (id, title, content, is_active, starts_at, expires_at) VALUES ($1, $2, $3, $4, $5, $6)', + [id, title, content, enabled !== false, new Date(startDate).toISOString(), new Date(endDate).toISOString()] + ); + return NextResponse.json({ id, success: true }); + } finally { + client.release(); + } + } catch (err) { + console.error('[announcements] POST error:', err); + return NextResponse.json({ error: '创建公告失败' }, { status: 500 }); + } +} + +export async function PUT(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const body = await request.json(); + const { id, title, content, startDate, endDate, enabled } = body; + + if (!id) { + return NextResponse.json({ error: '缺少公告ID' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + const updates: string[] = []; + const params: unknown[] = []; + let paramIdx = 1; + + if (title !== undefined) { updates.push(`title = $${paramIdx++}`); params.push(title); } + if (content !== undefined) { updates.push(`content = $${paramIdx++}`); params.push(content); } + if (startDate !== undefined) { updates.push(`starts_at = $${paramIdx++}`); params.push(new Date(startDate).toISOString()); } + if (endDate !== undefined) { updates.push(`expires_at = $${paramIdx++}`); params.push(new Date(endDate).toISOString()); } + if (enabled !== undefined) { updates.push(`is_active = $${paramIdx++}`); params.push(enabled); } + updates.push(`updated_at = NOW()`); + + params.push(id); + await client.query(`UPDATE announcements SET ${updates.join(', ')} WHERE id = $${paramIdx}`, params); + return NextResponse.json({ success: true }); + } finally { + client.release(); + } + } catch (err) { + console.error('[announcements] PUT error:', err); + return NextResponse.json({ error: '更新公告失败' }, { status: 500 }); + } +} + +export async function DELETE(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const { searchParams } = new URL(request.url); + const id = searchParams.get('id'); + + if (!id) { + return NextResponse.json({ error: '缺少公告ID' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + await client.query('DELETE FROM announcements WHERE id = $1', [id]); + return NextResponse.json({ success: true }); + } finally { + client.release(); + } + } catch (err) { + console.error('[announcements] DELETE error:', err); + return NextResponse.json({ error: '删除公告失败' }, { status: 500 }); + } +} diff --git a/src/app/api/auth/admin-exists/route.ts b/src/app/api/auth/admin-exists/route.ts new file mode 100644 index 0000000..9d202e7 --- /dev/null +++ b/src/app/api/auth/admin-exists/route.ts @@ -0,0 +1,78 @@ +import { NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { ensureEmailSchema } from '@/lib/email-service'; +import { getRequiredProductionSecret, isProductionRuntime } from '@/lib/runtime-env'; +import { ensureProfilePreferenceSchema } from '@/lib/profile-preferences'; + +const ADMIN_EMAIL = 'admin@miaojing.ai'; + +export async function GET() { + try { + const client = await getDbClient(); + + try { + await ensureEmailSchema(client); + await ensureProfilePreferenceSchema(client); + const result = await client.query( + 'SELECT id, nickname FROM profiles WHERE role = $1 LIMIT 1', + ['admin'] + ); + + if (result.rows.length > 0) { + return NextResponse.json({ exists: true, nickname: result.rows[0].nickname }); + } + + if (isProductionRuntime()) { + return NextResponse.json({ exists: false, autoCreated: false }); + } + + getRequiredProductionSecret('ADMIN_DEFAULT_PASSWORD', 'admin123'); + + // Development only: bootstrap the default admin profile. + const userId = crypto.randomUUID(); + + await client.query( + 'INSERT INTO auth.users (id, email, created_at) VALUES ($1, $2, NOW())', + [userId, ADMIN_EMAIL] + ); + + await client.query( + `INSERT INTO profiles ( + id, email, nickname, role, membership_tier, credits_balance, + daily_quota_limit, daily_quota_used, is_active, email_verified, + email_verified_at, email_bound_at + ) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, true, NOW(), NOW()) + ON CONFLICT (id) DO UPDATE SET + role = $4, + membership_tier = $5, + credits_balance = $6, + daily_quota_limit = $7, + nickname = $3, + email_verified = true, + email_verified_at = COALESCE(profiles.email_verified_at, NOW()), + email_bound_at = COALESCE(profiles.email_bound_at, NOW())`, + [userId, ADMIN_EMAIL, '管理员', 'admin', 'enterprise', 9999, 999, 0, true] + ); + + try { + await client.query( + 'INSERT INTO credit_transactions (user_id, amount, balance_after, type, description) VALUES ($1, $2, $3, $4, $5)', + [userId, 9999, 9999, 'gift', '管理员初始积分'] + ); + } catch { /* non-critical */ } + + console.log('[admin-exists] Default admin account created: account=admin, password=***'); + return NextResponse.json({ + exists: true, + autoCreated: true, + nickname: '管理员', + }); + } finally { + client.release(); + } + } catch (err) { + console.error('[admin-exists] Error:', err); + return NextResponse.json({ exists: false, error: '数据库连接失败' }); + } +} diff --git a/src/app/api/auth/fetch-models/route.ts b/src/app/api/auth/fetch-models/route.ts new file mode 100644 index 0000000..842dc4a --- /dev/null +++ b/src/app/api/auth/fetch-models/route.ts @@ -0,0 +1,146 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { buildCustomApiHeaders, fetchWithRetry, parseCustomApiError } from '@/lib/custom-api-fetch'; + +interface FetchModelsRequest { + apiUrl: string; + apiKey: string; + provider: string; +} + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { apiUrl, apiKey, provider } = body as FetchModelsRequest; + + if (!apiUrl || !apiKey) { + return NextResponse.json( + { success: false, error: '请填写 API 请求地址和 API Key' }, + { status: 400 } + ); + } + + // Derive the base URL from the apiUrl + const baseUrl = apiUrl.replace(/\/images\/generations.*/, '').replace(/\/videos\/generations.*/, '').replace(/\/chat\/completions.*/, '').replace(/\/+$/, ''); + const modelsUrl = `${baseUrl}/models`; + + let response: Response; + try { + response = await fetchWithRetry( + modelsUrl, + { + method: 'GET', + headers: buildCustomApiHeaders(apiKey), + }, + 15_000, + 0, // no retry + ); + } catch (fetchError: unknown) { + const msg = fetchError instanceof Error ? fetchError.message : '请求失败'; + return NextResponse.json({ + success: false, + error: `网络错误: ${msg}`, + suggestion: '请检查 API 地址是否正确、网络是否可达', + }); + } + + if (response.ok) { + try { + const data = await response.json(); + if (Array.isArray(data.data)) { + const models = data.data.map((m: Record) => ({ + id: typeof m.id === 'string' ? m.id : '', + name: typeof m.name === 'string' ? m.name : '', + description: typeof m.description === 'string' ? m.description : '', + provider: provider, + })).filter((m: { id: string }) => m.id); + + return NextResponse.json({ + success: true, + models: models, + message: `成功获取 ${models.length} 个模型`, + }); + } else { + return NextResponse.json({ + success: false, + error: 'API 返回的数据格式不正确', + suggestion: '请检查 API 地址是否正确,确保它支持 /models 端点', + }); + } + } catch (parseError) { + return NextResponse.json({ + success: false, + error: '解析模型数据失败', + suggestion: 'API 返回的数据格式可能不正确', + }); + } + } else { + const errorText = await response.text().catch(() => ''); + const isHtml = errorText.trim().startsWith(' = { + 401: 'API Key 无效或已过期,请检查密钥是否正确', + 403: '账户无权限访问该模型,请检查账户状态', + 404: 'API 地址不正确,请确认完整的请求端点 URL', + 429: '请求频率过高或账户余额不足', + 500: 'API 服务端内部错误,请稍后重试', + 502: 'API 网关错误。可能原因:①API 服务端宕机 ②代理防火墙拦截了服务器 IP', + 503: '服务暂不可用。可能原因:①账户余额不足 ②服务维护中 ③代理限制了服务器IP', + }; + + return suggestions[statusCode] || ''; +} + +/** + * Parse common API error status codes and bodies into user-friendly messages + */ +function parseApiError(statusCode: number, errorBody: string): { error: string; suggestion: string } { + // Delegate HTML detection to shared utility + const friendlyError = parseCustomApiError(statusCode, errorBody); + + const suggestions: Record = { + 401: 'API Key 无效或已过期,请检查密钥是否正确', + 403: '账户无权限访问该模型,请检查账户状态', + 404: 'API 地址不正确,请确认完整的请求端点 URL', + 429: '请求频率过高或账户余额不足', + 500: 'API 服务端内部错误,请稍后重试', + 502: 'API 网关错误。可能原因:①API 服务端宕机 ②代理防火墙拦截了服务器 IP', + 503: '服务暂不可用。可能原因:①账户余额不足 ②服务维护中 ③代理限制了服务器IP', + }; + + return { + error: friendlyError, + suggestion: suggestions[statusCode] || '', + }; +} diff --git a/src/app/api/auth/login/route.ts b/src/app/api/auth/login/route.ts new file mode 100644 index 0000000..905b9df --- /dev/null +++ b/src/app/api/auth/login/route.ts @@ -0,0 +1,290 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { ensureEmailSchema } from '@/lib/email-service'; +import { createSessionToken } from '@/lib/session-auth'; +import { getRequiredProductionSecret } from '@/lib/runtime-env'; +import { writePlatformLog } from '@/lib/platform-logs'; +import { ensureProfilePreferenceSchema, normalizePreferredTheme } from '@/lib/profile-preferences'; + +function normalizeRoleForTier(role: string | null | undefined, tier: string | null | undefined): string { + const currentRole = role || 'user'; + if (currentRole === 'admin' || currentRole === 'enterprise_admin') return currentRole; + return tier && tier !== 'free' ? 'vip' : currentRole === 'vip' ? 'user' : currentRole; +} + +async function verifyPasswordHash(client: Awaited>, passwordHash: string, password: string): Promise { + const result = await client.query( + 'SELECT $1::text = crypt($2::text, $1::text) AS ok', + [passwordHash, password] + ); + return result.rows[0]?.ok === true; +} + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { email: rawEmail, account, phone: rawPhone, password, adminOnly } = body; + + const identifier = account || rawEmail || rawPhone; + if (!identifier || !password) { + return NextResponse.json({ error: 'Please enter account and password' }, { status: 400 }); + } + + const client = await getDbClient(); + + try { + await ensureEmailSchema(client); + await ensureProfilePreferenceSchema(client); + let loginEmail = identifier; + let userId = ''; + let userRole = 'user'; + let userNickname = ''; + let userMembershipTier = 'free'; + let userCreditsBalance = 0; + let userDailyQuotaUsed = 0; + let userDailyQuotaLimit = 5; + let userAvatarUrl: string | null = null; + let userPhone: string | null = null; + let userCreatedAt: string | null = null; + let userEmailVerified = false; + let userEmailVerifiedAt: string | null = null; + let userPreferredTheme: 'dark' | 'light' = 'dark'; + + const isEmailFormat = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(identifier); + let isAdminAccount = false; + let adminProfileId: string | null = null; + + if (!isEmailFormat) { + const adminLookup = await client.query( + "SELECT id, email, nickname, role FROM profiles WHERE (nickname = $1 OR phone = $1) AND role = 'admin' LIMIT 1", + [identifier] + ); + if (adminLookup.rows.length > 0) { + isAdminAccount = true; + adminProfileId = adminLookup.rows[0].id; + loginEmail = adminLookup.rows[0].email; + userNickname = adminLookup.rows[0].nickname || ''; + } else { + const nicknameLower = String(identifier).toLowerCase(); + if (nicknameLower === 'admin' || nicknameLower.startsWith('admin')) { + const anyLookup = await client.query( + "SELECT id, email, nickname, role FROM profiles WHERE role = 'admin' ORDER BY created_at ASC LIMIT 1" + ); + if (anyLookup.rows.length > 0) { + isAdminAccount = true; + adminProfileId = anyLookup.rows[0].id; + loginEmail = anyLookup.rows[0].email; + userNickname = anyLookup.rows[0].nickname || ''; + } + } + } + } else { + const adminLookup = await client.query( + "SELECT id, email, nickname, role FROM profiles WHERE email = $1 AND role = 'admin' LIMIT 1", + [identifier] + ); + if (adminLookup.rows.length > 0) { + isAdminAccount = true; + adminProfileId = adminLookup.rows[0].id; + loginEmail = identifier; + userNickname = adminLookup.rows[0].nickname || ''; + } + } + + if (isAdminAccount) { + const authResult = await client.query( + 'SELECT id, email, created_at, password_hash FROM auth.users WHERE email = $1', + [loginEmail] + ); + + if (authResult.rows.length > 0 && authResult.rows[0].password_hash) { + const passwordOk = await verifyPasswordHash(client, authResult.rows[0].password_hash, password); + if (!passwordOk) { + return NextResponse.json({ error: 'Invalid admin password' }, { status: 401 }); + } + } else if (password !== getRequiredProductionSecret('ADMIN_DEFAULT_PASSWORD', 'admin123')) { + return NextResponse.json({ error: 'Invalid admin password' }, { status: 401 }); + } + + userRole = 'admin'; + userMembershipTier = 'enterprise'; + userCreditsBalance = 9999; + userDailyQuotaLimit = 999; + userNickname = userNickname || '管理员'; + userEmailVerified = true; + userEmailVerifiedAt = new Date().toISOString(); + + if (authResult.rows.length > 0) { + userId = authResult.rows[0].id; + userCreatedAt = authResult.rows[0].created_at; + } else if (adminProfileId) { + userId = adminProfileId; + await client.query( + 'INSERT INTO auth.users (id, email, created_at) VALUES ($1, $2, NOW()) ON CONFLICT (id) DO NOTHING', + [userId, loginEmail] + ); + userCreatedAt = new Date().toISOString(); + } else { + userId = crypto.randomUUID(); + await client.query( + 'INSERT INTO auth.users (id, email, created_at) VALUES ($1, $2, NOW())', + [userId, loginEmail] + ); + userCreatedAt = new Date().toISOString(); + } + + await client.query( + `INSERT INTO profiles (id, email, nickname, role, membership_tier, credits_balance, daily_quota_limit, daily_quota_used, is_active) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) + ON CONFLICT (id) DO UPDATE SET + role = $4, + membership_tier = $5, + credits_balance = $6, + daily_quota_limit = $7, + nickname = $3, + is_active = true, + email_verified = true, + email_verified_at = COALESCE(profiles.email_verified_at, NOW()), + email_bound_at = COALESCE(profiles.email_bound_at, NOW())`, + [userId, loginEmail, userNickname, 'admin', 'enterprise', 9999, 999, 0, true] + ); + + const adminThemeResult = await client.query( + 'SELECT preferred_theme FROM profiles WHERE id = $1 LIMIT 1', + [userId] + ); + userPreferredTheme = normalizePreferredTheme(adminThemeResult.rows[0]?.preferred_theme); + + if (adminProfileId && adminProfileId !== userId) { + await client.query( + 'UPDATE profiles SET role = $1, membership_tier = $2, credits_balance = $3, daily_quota_limit = $4 WHERE id = $5', + ['admin', 'enterprise', 9999, 999, adminProfileId] + ); + } + } else { + if (!isEmailFormat) { + const profileResult = await client.query( + 'SELECT id, email, nickname, phone, role FROM profiles WHERE nickname = $1 OR phone = $1 LIMIT 1', + [identifier] + ); + + if (profileResult.rows.length > 0) { + const profile = profileResult.rows[0]; + loginEmail = profile.email; + userId = profile.id; + userRole = profile.role || 'user'; + userNickname = profile.nickname; + userPhone = profile.phone; + } else { + return NextResponse.json({ error: 'Account does not exist' }, { status: 401 }); + } + } + + const authResult = await client.query( + 'SELECT id, email, created_at, password_hash FROM auth.users WHERE email = $1', + [loginEmail] + ); + + if (authResult.rows.length === 0) { + return NextResponse.json({ error: 'Account does not exist' }, { status: 401 }); + } + + const authUser = authResult.rows[0]; + if (authUser.password_hash) { + const passwordOk = await verifyPasswordHash(client, authUser.password_hash, password); + if (!passwordOk) { + return NextResponse.json({ error: 'Invalid password' }, { status: 401 }); + } + } else { + return NextResponse.json({ error: '该账号缺少密码凭据,请联系管理员重置密码后再登录' }, { status: 401 }); + } + + userId = authUser.id; + userCreatedAt = authUser.created_at; + + const profileResult = await client.query( + 'SELECT nickname, role, membership_tier, credits_balance, daily_quota_used, daily_quota_limit, avatar_url, phone, email_verified, email_verified_at, preferred_theme FROM profiles WHERE id = $1', + [userId] + ); + + if (profileResult.rows.length > 0) { + const profile = profileResult.rows[0]; + userNickname = profile.nickname || loginEmail.split('@')[0]; + userMembershipTier = profile.membership_tier || 'free'; + userRole = normalizeRoleForTier(profile.role, userMembershipTier); + userCreditsBalance = profile.credits_balance || 0; + userDailyQuotaUsed = profile.daily_quota_used || 0; + userDailyQuotaLimit = profile.daily_quota_limit || 5; + userAvatarUrl = profile.avatar_url || null; + userPhone = profile.phone || null; + userEmailVerified = profile.email_verified === true; + userEmailVerifiedAt = profile.email_verified_at || null; + userPreferredTheme = normalizePreferredTheme(profile.preferred_theme); + if (userRole !== (profile.role || 'user')) { + await client.query('UPDATE profiles SET role = $1, updated_at = NOW() WHERE id = $2', [userRole, userId]); + } + } else { + userNickname = loginEmail.split('@')[0]; + await client.query( + `INSERT INTO profiles (id, email, nickname, role, membership_tier, credits_balance, daily_quota_used, daily_quota_limit) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8) + ON CONFLICT (id) DO UPDATE SET email = $2, nickname = $3, email_verified = false, email_verified_at = NULL`, + [userId, loginEmail, userNickname, userRole, userMembershipTier, userCreditsBalance, userDailyQuotaUsed, userDailyQuotaLimit] + ); + } + } + + if (adminOnly === true && userRole !== 'admin' && userRole !== 'enterprise_admin') { + void writePlatformLog({ + type: 'security', + level: 'warning', + action: 'console_login_denied', + message: '非管理员账号尝试登录管理后台被拒绝', + userId, + userName: userNickname, + userEmail: loginEmail, + request, + }); + return NextResponse.json({ error: 'Only administrators can log in to the console' }, { status: 403 }); + } + + const accessToken = createSessionToken(userId, userRole); + void writePlatformLog({ + type: 'auth', + level: 'info', + action: adminOnly === true ? 'console_login_success' : 'user_login_success', + message: adminOnly === true ? '管理员登录管理后台成功' : '用户登录成功', + userId, + userName: userNickname, + userEmail: loginEmail, + request, + }); + + return NextResponse.json({ + user: { + id: userId, + email: loginEmail, + nickname: userNickname, + role: userRole, + membership_tier: userMembershipTier, + credits_balance: userCreditsBalance, + daily_quota_used: userDailyQuotaUsed, + daily_quota_limit: userDailyQuotaLimit, + avatar_url: userAvatarUrl, + phone: userPhone, + created_at: userCreatedAt, + email_verified: userEmailVerified, + email_verified_at: userEmailVerifiedAt, + preferred_theme: userPreferredTheme, + }, + session: { access_token: accessToken }, + }); + } finally { + client.release(); + } + } catch (error: unknown) { + const message = error instanceof Error ? error.message : 'Login failed'; + console.error('[Login Error]', message); + return NextResponse.json({ error: message }, { status: 500 }); + } +} diff --git a/src/app/api/auth/register/route.ts b/src/app/api/auth/register/route.ts new file mode 100644 index 0000000..bebfe21 --- /dev/null +++ b/src/app/api/auth/register/route.ts @@ -0,0 +1,175 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { ensureEmailSchema, getRequestBaseUrl, normalizeEmail, sendTemplatedEmail, verifyEmailCode } from '@/lib/email-service'; +import { getRequiredProductionSecret } from '@/lib/runtime-env'; +import { ensureProfilePreferenceSchema } from '@/lib/profile-preferences'; + +function isStrongPassword(password: string): boolean { + return password.length >= 8 && /[A-Za-z]/.test(password) && /\d/.test(password); +} + +export async function POST(request: NextRequest) { + try { + const { email, password, nickname, phone, inviteCode, emailCode, acceptedTerms } = await request.json(); + const normalizedEmail = normalizeEmail(email); + + if (!normalizedEmail || !password) { + return NextResponse.json({ error: 'Please enter email and password' }, { status: 400 }); + } + + if (acceptedTerms !== true) { + return NextResponse.json({ error: '请先阅读并同意服务条款和隐私政策' }, { status: 400 }); + } + + if (!isStrongPassword(password)) { + return NextResponse.json({ error: '密码至少 8 位,并同时包含字母和数字' }, { status: 400 }); + } + + const isAdminRegistration = typeof inviteCode === 'string' + && inviteCode === getRequiredProductionSecret('ADMIN_INVITE_CODE', 'miaojing-admin-2024'); + const client = await getDbClient(); + + try { + await ensureEmailSchema(client); + await ensureProfilePreferenceSchema(client); + if (isAdminRegistration) { + const existingAdminResult = await client.query( + 'SELECT id FROM profiles WHERE role = $1', + ['admin'] + ); + + if (existingAdminResult.rows.length > 0) { + return NextResponse.json( + { error: 'Admin account already exists' }, + { status: 400 } + ); + } + } + + const existingUserResult = await client.query( + 'SELECT id FROM profiles WHERE email = $1', + [normalizedEmail] + ); + + if (existingUserResult.rows.length > 0) { + return NextResponse.json( + { error: 'Email is already registered' }, + { status: 400 } + ); + } + + const userId = crypto.randomUUID(); + + if (!isAdminRegistration) { + if (typeof emailCode !== 'string' || !/^[a-z0-9]{4,10}$/i.test(emailCode)) { + return NextResponse.json({ error: '请输入正确的邮箱验证码' }, { status: 400 }); + } + await client.query('BEGIN'); + try { + await verifyEmailCode(client, { + email: normalizedEmail, + type: 'register', + code: typeof emailCode === 'string' ? emailCode : '', + }); + await client.query('COMMIT'); + } catch (error) { + await client.query('ROLLBACK'); + throw error; + } + } + + await client.query( + `INSERT INTO auth.users (id, email, password_hash, created_at) + VALUES ($1, $2, crypt($3, gen_salt('bf')), NOW())`, + [userId, normalizedEmail, password] + ); + + const role = isAdminRegistration ? 'admin' : 'user'; + const membershipTier = isAdminRegistration ? 'enterprise' : 'free'; + const creditsBalance = isAdminRegistration ? 9999 : 10; + const dailyQuotaLimit = isAdminRegistration ? 999 : 5; + const displayName = nickname || normalizedEmail.split('@')[0]; + + await client.query( + `INSERT INTO profiles ( + id, email, nickname, phone, role, membership_tier, credits_balance, + daily_quota_limit, daily_quota_used, is_active, email_verified, + email_verified_at, email_bound_at, email_sender_domain + ) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, CASE WHEN $11 THEN NOW() ELSE NULL END, CASE WHEN $11 THEN NOW() ELSE NULL END, $12) + ON CONFLICT (id) DO UPDATE SET + email = EXCLUDED.email, + nickname = EXCLUDED.nickname, + phone = EXCLUDED.phone, + role = EXCLUDED.role, + membership_tier = EXCLUDED.membership_tier, + credits_balance = EXCLUDED.credits_balance, + daily_quota_limit = EXCLUDED.daily_quota_limit, + daily_quota_used = EXCLUDED.daily_quota_used, + is_active = EXCLUDED.is_active, + email_verified = EXCLUDED.email_verified, + email_verified_at = EXCLUDED.email_verified_at, + email_bound_at = EXCLUDED.email_bound_at, + email_sender_domain = EXCLUDED.email_sender_domain`, + [ + userId, + normalizedEmail, + displayName, + phone || null, + role, + membershipTier, + creditsBalance, + dailyQuotaLimit, + 0, + true, + true, + normalizedEmail.split('@')[1] || null, + ] + ); + + try { + await client.query( + 'INSERT INTO credit_transactions (user_id, amount, balance_after, type, description) VALUES ($1, $2, $3, $4, $5)', + [userId, creditsBalance, creditsBalance, 'gift', isAdminRegistration ? 'Admin initial credits' : 'New user registration bonus'] + ); + } catch { + // Ignore credit transaction errors. + } + + await sendTemplatedEmail(client, { + to: normalizedEmail, + type: 'register_success', + subject: '【妙境】注册成功', + title: '注册成功', + intro: isAdminRegistration ? '管理员账号已创建成功。' : '你的妙境账号已注册成功,邮箱也已完成验证。', + note: '若非本人操作,请尽快联系管理员。', + assetBaseUrl: getRequestBaseUrl(request) || undefined, + }).catch(() => undefined); + + return NextResponse.json({ + user: { + id: userId, + email: normalizedEmail, + nickname: displayName, + role, + membership_tier: membershipTier, + credits_balance: creditsBalance, + daily_quota_used: 0, + daily_quota_limit: dailyQuotaLimit, + avatar_url: null, + phone: phone || null, + email_verified: true, + email_verified_at: new Date().toISOString(), + preferred_theme: 'dark', + }, + message: isAdminRegistration ? 'Admin account registered' : 'Registration successful', + }); + } finally { + client.release(); + } + } catch (error: unknown) { + const message = error instanceof Error ? error.message : 'Registration failed'; + console.error('[Register Error]', message); + return NextResponse.json({ error: message }, { status: 500 }); + } +} diff --git a/src/app/api/auth/test-api/route.ts b/src/app/api/auth/test-api/route.ts new file mode 100644 index 0000000..da9f17a --- /dev/null +++ b/src/app/api/auth/test-api/route.ts @@ -0,0 +1,215 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { buildCustomApiHeaders, fetchWithRetry, parseCustomApiError } from '@/lib/custom-api-fetch'; + +interface TestApiRequest { + apiUrl: string; + apiKey: string; + modelName: string; + provider: string; +} + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { apiUrl, apiKey, modelName, provider } = body as TestApiRequest; + + if (!apiUrl || !apiKey) { + return NextResponse.json( + { success: false, error: '请填写 API 请求地址和 API Key' }, + { status: 400 } + ); + } + + // ---- Step 1: Quick connectivity check with a lightweight request ---- + // Try the /models endpoint first (most APIs support this, no cost) + // Derive the base URL from the apiUrl + const baseUrl = apiUrl.replace(/\/images\/generations.*/, '').replace(/\/videos\/generations.*/, '').replace(/\/chat\/completions.*/, '').replace(/\/+$/, ''); + const modelsUrl = `${baseUrl}/models`; + + let response: Response; + try { + response = await fetchWithRetry( + modelsUrl, + { + method: 'GET', + headers: buildCustomApiHeaders(apiKey), + }, + 15_000, + 0, // no retry for test - keep it fast + ); + } catch (fetchError: unknown) { + // If /models fails with timeout or network error, try the actual endpoint + if (fetchError instanceof DOMException && fetchError.name === 'AbortError') { + return await testActualEndpoint(apiUrl, apiKey, modelName || 'gpt-image-2'); + } + + const msg = fetchError instanceof Error ? fetchError.message : '请求失败'; + + // Network error - could be DNS, connection refused, or firewall + if (msg.includes('ECONNREFUSED') || msg.includes('ENOTFOUND') || msg.includes('fetch failed')) { + return NextResponse.json({ + success: false, + error: `无法连接到 API 地址: ${msg}`, + suggestion: '请检查 API 地址是否正确、服务是否运行。常见原因:①地址拼写错误 ②服务未启动 ③DNS 无法解析', + }); + } + + return NextResponse.json({ + success: false, + error: `网络错误: ${msg}`, + suggestion: '请检查 API 地址是否正确、网络是否可达。如果使用了代理(如 Cloudflare),可能代理防火墙拦截了服务器请求', + }); + } + + // If /models returned successfully, the key is valid + if (response.ok) { + let modelInfo = ''; + try { + const data = await response.json(); + if (Array.isArray(data.data)) { + const targetModel = modelName || 'gpt-image-2'; + const found = data.data.some((m: Record) => + typeof m.id === 'string' && m.id.includes(targetModel.replace('gpt-image-2', 'dall')) + ); + modelInfo = found ? `,模型 ${modelName || 'gpt-image-2'} 可用` : `,已连接(共 ${data.data.length} 个模型)`; + } + } catch { + // Ignore parse error, connectivity is confirmed + } + return NextResponse.json({ + success: true, + message: `连接成功${modelInfo}`, + }); + } + + // /models returned an error - check if it's HTML (Cloudflare block) + const errorText = await response.text().catch(() => ''); + const isHtml = errorText.trim().startsWith(' { + try { + const response = await fetchWithRetry( + apiUrl, + { + method: 'POST', + headers: buildCustomApiHeaders(apiKey), + body: JSON.stringify({ + model: modelName, + prompt: 'test', + n: 1, + size: '1024x1024', + }), + }, + 15_000, + 0, // no retry for test + ); + + if (response.ok) { + return NextResponse.json({ + success: true, + message: `连接成功,模型 ${modelName} 可用`, + }); + } + + const errorText = await response.text().catch(() => ''); + const parsed = parseApiError(response.status, errorText); + + return NextResponse.json({ + success: false, + error: parsed.error, + statusCode: response.status, + suggestion: parsed.suggestion, + }); + } catch (fetchError: unknown) { + if (fetchError instanceof DOMException && fetchError.name === 'AbortError') { + return NextResponse.json({ + success: false, + error: '连接超时(15秒),请检查 API 地址是否正确', + suggestion: '可能原因:①API 地址有误 ②服务响应过慢 ③代理限制了服务器IP访问', + }); + } + + const msg = fetchError instanceof Error ? fetchError.message : '请求失败'; + return NextResponse.json({ + success: false, + error: `网络错误: ${msg}`, + suggestion: '请检查 API 地址和网络连通性', + }); + } +} + +/** + * Get diagnostic suggestion based on response status and content type + */ +function getDiagnosticSuggestion(statusCode: number, isHtml: boolean): string { + if (isHtml) { + if (statusCode === 502 || statusCode === 503 || statusCode === 504) { + return 'API 代理(如 Cloudflare)返回错误。你的 API 在本地可用但部署环境不可用时,通常是代理防火墙拦截了服务器请求。建议:①检查 API 代理的 WAF/防火墙设置 ②将服务器 IP 加入白名单 ③尝试使用 API 的直连地址(绕过 Cloudflare)'; + } + if (statusCode === 403) { + return '代理防火墙拦截了请求。建议:①检查 Cloudflare WAF 规则 ②将服务器 IP 加入白名单 ③使用 API 的直连地址'; + } + return 'API 返回了错误页面而非 JSON 响应,可能是代理防火墙拦截。建议使用 API 的直连地址(绕过 CDN/代理)'; + } + + const suggestions: Record = { + 401: 'API Key 无效或已过期,请检查密钥是否正确', + 403: '账户无权限访问该模型,请检查账户状态', + 404: 'API 地址不正确,请确认完整的请求端点 URL', + 429: '请求频率过高或账户余额不足', + 500: 'API 服务端内部错误,请稍后重试', + 502: 'API 网关错误。可能原因:①API 服务端宕机 ②代理防火墙拦截了服务器 IP', + 503: '服务暂不可用。可能原因:①账户余额不足 ②服务维护中 ③代理限制了服务器IP', + }; + + return suggestions[statusCode] || ''; +} + +/** + * Parse common API error status codes and bodies into user-friendly messages + */ +function parseApiError(statusCode: number, errorBody: string): { error: string; suggestion: string } { + // Delegate HTML detection to shared utility + const friendlyError = parseCustomApiError(statusCode, errorBody); + + const suggestions: Record = { + 401: 'API Key 无效或已过期,请检查密钥是否正确', + 403: '账户无权限访问该模型,请检查账户状态', + 404: 'API 地址不正确,请确认完整的请求端点 URL', + 429: '请求频率过高或账户余额不足', + 500: 'API 服务端内部错误,请稍后重试', + 502: 'API 网关错误。可能原因:①API 服务端宕机 ②代理防火墙拦截了服务器 IP', + 503: '服务暂不可用。可能原因:①账户余额不足 ②服务维护中 ③代理限制了服务器IP', + }; + + return { + error: friendlyError, + suggestion: suggestions[statusCode] || '', + }; +} diff --git a/src/app/api/creation-history/route.ts b/src/app/api/creation-history/route.ts new file mode 100644 index 0000000..ccf138e --- /dev/null +++ b/src/app/api/creation-history/route.ts @@ -0,0 +1,143 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { getAuthenticatedUserId } from '@/lib/session-auth'; + +function toWorkType(type: string, params: Record): string { + const explicitMode = params.creationMode || params.workType || params.mode; + if (explicitMode === 'text2img' || explicitMode === 'img2img' || explicitMode === 'text2video' || explicitMode === 'img2video' || explicitMode === 'reverse-prompt') { + return explicitMode; + } + if (type === 'reverse-prompt') return 'reverse-prompt'; + const hasReference = Boolean(params.referenceImage) + || (Array.isArray(params.referenceImages) && params.referenceImages.length > 0) + || Number(params.refImageCount || 0) > 0; + if (type === 'video') return hasReference ? 'img2video' : 'text2video'; + return hasReference ? 'img2img' : 'text2img'; +} + +function fromWorkType(type: string): 'image' | 'video' | 'reverse-prompt' { + if (type === 'reverse-prompt') return 'reverse-prompt'; + return type.includes('video') ? 'video' : 'image'; +} + +function mapWork(row: Record) { + const params = (row.params || {}) as Record; + return { + id: row.id, + type: fromWorkType(String(row.type || 'text2img')), + url: row.result_url, + prompt: row.prompt || '', + negativePrompt: row.negative_prompt || undefined, + model: params.model || '', + modelLabel: params.modelLabel || params.model || '', + isCustomModel: Boolean(params.isCustomModel), + params, + referenceImage: params.referenceImage, + referenceImages: Array.isArray(params.referenceImages) + ? params.referenceImages + : params.referenceImage + ? [params.referenceImage] + : undefined, + published: row.is_public === true, + createdAt: row.created_at, + }; +} + +export async function GET(request: NextRequest) { + const userId = await getAuthenticatedUserId(request); + if (!userId) return NextResponse.json({ error: '请先登录' }, { status: 401 }); + const client = await getDbClient(); + try { + const result = await client.query( + `SELECT id, type, prompt, negative_prompt, params, result_url, is_public, status, created_at + FROM works + WHERE user_id = $1 AND status = 'completed' + ORDER BY created_at DESC + LIMIT 300`, + [userId], + ); + return NextResponse.json({ records: result.rows.map(mapWork) }); + } finally { + client.release(); + } +} + +export async function POST(request: NextRequest) { + const userId = await getAuthenticatedUserId(request); + if (!userId) return NextResponse.json({ error: '请先登录' }, { status: 401 }); + const body = await request.json(); + const records = Array.isArray(body.records) ? body.records : [body]; + const client = await getDbClient(); + try { + await client.query('BEGIN'); + const saved = []; + for (const record of records) { + const params = { + ...(record.params || {}), + model: record.model || (record.params || {}).model, + modelLabel: record.modelLabel || (record.params || {}).modelLabel, + isCustomModel: Boolean(record.isCustomModel), + referenceImage: record.referenceImage || (record.params || {}).referenceImage, + referenceImages: record.referenceImages || (record.params || {}).referenceImages, + }; + const workType = toWorkType(String(record.type || 'image'), params); + let url = String(record.url || '').trim(); + if (workType === 'reverse-prompt') { + url = url && !url.startsWith('data:') ? url : `[reverse-prompt:${record.id || Date.now()}]`; + } + if (!url || url.startsWith('data:')) continue; + const existing = await client.query( + `SELECT id, type, prompt, negative_prompt, params, result_url, is_public, status, created_at + FROM works + WHERE user_id = $1 AND result_url = $2 + LIMIT 1`, + [userId, url], + ); + if (existing.rows[0]) { + saved.push(mapWork(existing.rows[0])); + continue; + } + const result = await client.query( + `INSERT INTO works (user_id, type, prompt, negative_prompt, params, result_url, is_public, status, credits_cost, created_at) + VALUES ($1, $2, $3, $4, $5::jsonb, $6, $7, 'completed', $8, COALESCE($9::timestamptz, NOW())) + RETURNING id, type, prompt, negative_prompt, params, result_url, is_public, status, created_at`, + [ + userId, + workType, + record.prompt || '', + record.negativePrompt || null, + JSON.stringify(params), + url, + Boolean(record.published), + Number(record.creditsCost || 0), + record.createdAt || null, + ], + ); + if (result.rows[0]) saved.push(mapWork(result.rows[0])); + } + await client.query('COMMIT'); + return NextResponse.json({ records: saved }); + } catch (error) { + await client.query('ROLLBACK'); + throw error; + } finally { + client.release(); + } +} + +export async function DELETE(request: NextRequest) { + const userId = await getAuthenticatedUserId(request); + if (!userId) return NextResponse.json({ error: '请先登录' }, { status: 401 }); + const id = request.nextUrl.searchParams.get('id'); + const client = await getDbClient(); + try { + if (id) { + await client.query('DELETE FROM works WHERE id = $1 AND user_id = $2', [id, userId]); + } else { + await client.query('DELETE FROM works WHERE user_id = $1', [userId]); + } + return NextResponse.json({ success: true }); + } finally { + client.release(); + } +} diff --git a/src/app/api/download/route.ts b/src/app/api/download/route.ts new file mode 100644 index 0000000..3e2106b --- /dev/null +++ b/src/app/api/download/route.ts @@ -0,0 +1,158 @@ +import path from 'path'; +import { NextRequest, NextResponse } from 'next/server'; +import { localStorage } from '@/lib/local-storage'; +import { fetchPublicHttpUrl } from '@/lib/remote-fetch'; + +/** + * Download proxy. + * + * Supports: + * - remote http(s) URLs, fetched server-side to avoid browser CORS failures + * - same-origin relative URLs + * - local-storage URLs, read directly from disk with path traversal protection + */ +export async function GET(request: NextRequest) { + const url = request.nextUrl.searchParams.get('url'); + const filename = sanitizeFilename( + request.nextUrl.searchParams.get('filename') || 'download', + ); + + if (!url) { + return NextResponse.json({ error: '缺少 url 参数' }, { status: 400 }); + } + + try { + const localKey = getLocalStorageKey(url); + if (localKey) { + return downloadLocalStorageFile(localKey, filename); + } + + const targetUrl = resolveDownloadUrl(url, request.nextUrl.origin); + if (!targetUrl) { + return NextResponse.json( + { error: '仅支持 HTTP(S) URL 或站内文件 URL' }, + { status: 400 }, + ); + } + + const response = await fetchPublicHttpUrl(targetUrl, { + signal: AbortSignal.timeout(60_000), + }); + + if (!response.ok) { + return NextResponse.json( + { error: `远程文件获取失败: ${response.status}` }, + { status: response.status }, + ); + } + + const contentType = response.headers.get('content-type') || 'application/octet-stream'; + const body = await response.arrayBuffer(); + + return buildDownloadResponse( + body, + contentType, + filename, + body.byteLength, + ); + } catch (err) { + const msg = err instanceof Error ? err.message : '下载失败'; + console.error('[Download Proxy Error]', msg); + return NextResponse.json({ error: `下载失败: ${msg}` }, { status: 502 }); + } +} + +function getLocalStorageKey(url: string): string | null { + let pathname = url; + if (url.startsWith('http://') || url.startsWith('https://')) { + try { + pathname = new URL(url).pathname; + } catch { + return null; + } + } + + const prefix = '/api/local-storage/'; + if (!pathname.startsWith(prefix)) return null; + + try { + const key = decodeURIComponent(pathname.slice(prefix.length)); + const normalized = path.posix.normalize(key).replace(/^\/+/, ''); + if (!normalized || normalized.startsWith('..') || normalized.includes('/../')) { + return null; + } + return normalized; + } catch { + return null; + } +} + +function resolveDownloadUrl(url: string, origin: string): string | null { + if (url.startsWith('http://') || url.startsWith('https://')) { + return url; + } + + if (url.startsWith('/') && !url.startsWith('//')) { + return `${origin}${url}`; + } + + return null; +} + +function downloadLocalStorageFile(key: string, filename: string) { + if (!localStorage.fileExists(key)) { + return NextResponse.json({ error: '文件不存在' }, { status: 404 }); + } + + const fileBuffer = localStorage.readFile(key); + const contentType = getContentType(key); + + return buildDownloadResponse( + fileBuffer.buffer.slice( + fileBuffer.byteOffset, + fileBuffer.byteOffset + fileBuffer.byteLength, + ) as ArrayBuffer, + contentType, + filename, + fileBuffer.byteLength, + ); +} + +function buildDownloadResponse( + body: ArrayBuffer, + contentType: string, + filename: string, + length: number, +) { + return new NextResponse(body, { + status: 200, + headers: { + 'Content-Type': contentType, + 'Content-Disposition': `attachment; filename="${filename}"`, + 'Content-Length': String(length), + 'Cache-Control': 'no-cache', + }, + }); +} + +function sanitizeFilename(filename: string): string { + return path.basename(filename).replace(/[\r\n"]/g, '_') || 'download'; +} + +function getContentType(filePath: string): string { + const extension = filePath.split('.').pop()?.toLowerCase(); + const contentTypeMap: Record = { + jpg: 'image/jpeg', + jpeg: 'image/jpeg', + png: 'image/png', + webp: 'image/webp', + gif: 'image/gif', + mp4: 'video/mp4', + avi: 'video/x-msvideo', + mov: 'video/quicktime', + wmv: 'video/x-ms-wmv', + webm: 'video/webm', + }; + + return contentTypeMap[extension || ''] || 'application/octet-stream'; +} diff --git a/src/app/api/email/reset-password/route.ts b/src/app/api/email/reset-password/route.ts new file mode 100644 index 0000000..2f91760 --- /dev/null +++ b/src/app/api/email/reset-password/route.ts @@ -0,0 +1,72 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { ensureEmailSchema, getRequestBaseUrl, isValidEmail, normalizeEmail, sendTemplatedEmail, verifyEmailCode } from '@/lib/email-service'; +import { getDbClient } from '@/storage/database/local-db'; + +export const runtime = 'nodejs'; + +function passwordStrongEnough(value: string): boolean { + return value.length >= 8 && /[a-zA-Z]/.test(value) && /\d/.test(value); +} + +function friendlyError(error: unknown) { + return error instanceof Error ? error.message : '密码重置失败,请稍后再试'; +} + +export async function POST(request: NextRequest) { + const client = await getDbClient(); + try { + await ensureEmailSchema(client); + const body = await request.json(); + const email = normalizeEmail(body.email); + const code = typeof body.code === 'string' ? body.code.trim() : ''; + const newPassword = typeof body.newPassword === 'string' ? body.newPassword : ''; + + if (!isValidEmail(email) || !/^[a-z0-9]{4,10}$/i.test(code)) { + return NextResponse.json({ error: '邮箱或验证码格式不正确' }, { status: 400 }); + } + if (!passwordStrongEnough(newPassword)) { + return NextResponse.json({ error: '新密码至少 8 位,并同时包含字母和数字' }, { status: 400 }); + } + + await client.query('BEGIN'); + await verifyEmailCode(client, { email, type: 'reset_password', code }); + + const user = await client.query( + `SELECT p.id, p.nickname + FROM profiles p + JOIN auth.users u ON u.id = p.id + WHERE LOWER(p.email) = LOWER($1) AND p.email_verified = true + LIMIT 1`, + [email], + ); + if (user.rows.length === 0) { + await client.query('ROLLBACK'); + return NextResponse.json({ error: '该邮箱尚未绑定或未完成验证' }, { status: 400 }); + } + + await client.query( + `UPDATE auth.users + SET password_hash = crypt($1, gen_salt('bf')) + WHERE id = $2`, + [newPassword, user.rows[0].id], + ); + await client.query('COMMIT'); + + await sendTemplatedEmail(client, { + to: email, + type: 'password_reset_success', + subject: '【妙境】密码已重置', + title: '密码重置成功', + intro: '你的妙境账号密码已成功重置。请使用新密码重新登录。', + note: '若非本人操作,请立即联系管理员并检查账号安全。', + assetBaseUrl: getRequestBaseUrl(request) || undefined, + }).catch(() => undefined); + + return NextResponse.json({ success: true, message: '密码已重置,请重新登录' }); + } catch (error) { + await client.query('ROLLBACK').catch(() => undefined); + return NextResponse.json({ error: friendlyError(error) }, { status: 400 }); + } finally { + client.release(); + } +} diff --git a/src/app/api/email/send-notification/route.ts b/src/app/api/email/send-notification/route.ts new file mode 100644 index 0000000..7833eef --- /dev/null +++ b/src/app/api/email/send-notification/route.ts @@ -0,0 +1,62 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { getRequestBaseUrl, isValidEmail, normalizeEmail, sendTemplatedEmail, type EmailMessageType } from '@/lib/email-service'; +import { getDbClient } from '@/storage/database/local-db'; + +export const runtime = 'nodejs'; + +const ALLOWED_TYPES: EmailMessageType[] = [ + 'register_success', + 'email_verified', + 'password_reset_success', + 'security_login', + 'announcement', + 'order', + 'business', +]; + +export async function POST(request: NextRequest) { + const adminError = await requireAdmin(request); + if (adminError) return adminError; + + const client = await getDbClient(); + try { + const body = await request.json(); + const to = normalizeEmail(body.to); + const type = ALLOWED_TYPES.includes(body.type) ? body.type : 'business'; + const title = typeof body.title === 'string' ? body.title.trim().slice(0, 120) : ''; + const bodyText = typeof body.body === 'string' ? body.body.trim().slice(0, 4000) : ''; + const buttonText = typeof body.buttonText === 'string' ? body.buttonText.trim().slice(0, 40) : ''; + const buttonUrl = typeof body.buttonUrl === 'string' ? body.buttonUrl.trim().slice(0, 500) : ''; + + if (!isValidEmail(to)) { + return NextResponse.json({ error: '请输入正确的收件邮箱' }, { status: 400 }); + } + if (!title || !bodyText) { + return NextResponse.json({ error: '请填写邮件标题和正文' }, { status: 400 }); + } + if (buttonUrl && !/^https?:\/\/[^\s"'<>]+$/i.test(buttonUrl)) { + return NextResponse.json({ error: '按钮链接必须是 HTTP(S) 地址' }, { status: 400 }); + } + + await sendTemplatedEmail(client, { + to, + type, + subject: `【妙境】${title}`, + title, + body: bodyText, + buttonText: buttonText || undefined, + buttonUrl: buttonUrl || undefined, + note: '这是一封系统通知邮件,请勿直接回复。', + ipAddress: 'admin', + assetBaseUrl: getRequestBaseUrl(request) || undefined, + }); + + return NextResponse.json({ success: true, message: '邮件已发送' }); + } catch (error) { + const message = error instanceof Error ? error.message : '邮件发送失败'; + return NextResponse.json({ error: message }, { status: 400 }); + } finally { + client.release(); + } +} diff --git a/src/app/api/email/send-profile-code/route.ts b/src/app/api/email/send-profile-code/route.ts new file mode 100644 index 0000000..7260926 --- /dev/null +++ b/src/app/api/email/send-profile-code/route.ts @@ -0,0 +1,47 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { ensureEmailSchema, isValidEmail, normalizeEmail, sendVerificationCode } from '@/lib/email-service'; +import { getDbClient } from '@/storage/database/local-db'; +import { getAuthenticatedUserId } from '@/lib/session-auth'; + +export const runtime = 'nodejs'; + +function friendlyError(error: unknown) { + return error instanceof Error ? error.message : '验证码发送失败,请稍后再试'; +} + +export async function POST(request: NextRequest) { + const userId = await getAuthenticatedUserId(request); + if (!userId) { + return NextResponse.json({ error: '请先登录后再验证邮箱' }, { status: 401 }); + } + + const client = await getDbClient(); + try { + await ensureEmailSchema(client); + const body = await request.json(); + const email = normalizeEmail(body.email); + if (!isValidEmail(email)) { + return NextResponse.json({ error: '请输入正确的邮箱地址' }, { status: 400 }); + } + + const user = await client.query('SELECT id, email FROM profiles WHERE id = $1 LIMIT 1', [userId]); + if (user.rows.length === 0) { + return NextResponse.json({ error: '账号不存在,请重新登录' }, { status: 404 }); + } + + const duplicate = await client.query( + 'SELECT id FROM profiles WHERE LOWER(email) = LOWER($1) AND id <> $2 LIMIT 1', + [email, userId], + ); + if (duplicate.rows.length > 0) { + return NextResponse.json({ error: '该邮箱已被其他账号绑定' }, { status: 400 }); + } + + const result = await sendVerificationCode(client, request, { email, type: 'verify_email', userId }); + return NextResponse.json({ ...result, message: '验证码已发送,请查收邮箱' }); + } catch (error) { + return NextResponse.json({ error: friendlyError(error) }, { status: 400 }); + } finally { + client.release(); + } +} diff --git a/src/app/api/email/send-register-code/route.ts b/src/app/api/email/send-register-code/route.ts new file mode 100644 index 0000000..118d703 --- /dev/null +++ b/src/app/api/email/send-register-code/route.ts @@ -0,0 +1,36 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { sendVerificationCode, normalizeEmail, isValidEmail } from '@/lib/email-service'; +import { getDbClient } from '@/storage/database/local-db'; + +export const runtime = 'nodejs'; + +function friendlyError(error: unknown) { + return error instanceof Error ? error.message : '验证码发送失败,请稍后再试'; +} + +export async function POST(request: NextRequest) { + const client = await getDbClient(); + try { + const body = await request.json(); + const email = normalizeEmail(body.email); + + if (!isValidEmail(email)) { + return NextResponse.json({ error: '请输入正确的邮箱地址' }, { status: 400 }); + } + + const existing = await client.query( + 'SELECT id FROM profiles WHERE LOWER(email) = LOWER($1) LIMIT 1', + [email], + ); + if (existing.rows.length > 0) { + return NextResponse.json({ error: '该邮箱已注册,请直接登录' }, { status: 400 }); + } + + const result = await sendVerificationCode(client, request, { email, type: 'register' }); + return NextResponse.json({ ...result, message: '验证码已发送,请查收邮箱' }); + } catch (error) { + return NextResponse.json({ error: friendlyError(error) }, { status: 400 }); + } finally { + client.release(); + } +} diff --git a/src/app/api/email/send-reset-code/route.ts b/src/app/api/email/send-reset-code/route.ts new file mode 100644 index 0000000..18d60c5 --- /dev/null +++ b/src/app/api/email/send-reset-code/route.ts @@ -0,0 +1,47 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { ensureEmailSchema, isValidEmail, normalizeEmail, sendVerificationCode } from '@/lib/email-service'; +import { getDbClient } from '@/storage/database/local-db'; + +export const runtime = 'nodejs'; + +export async function POST(request: NextRequest) { + const client = await getDbClient(); + try { + await ensureEmailSchema(client); + const body = await request.json(); + const email = normalizeEmail(body.email); + if (!isValidEmail(email)) { + return NextResponse.json({ error: '请输入正确的邮箱地址' }, { status: 400 }); + } + + const user = await client.query( + `SELECT p.id + FROM profiles p + JOIN auth.users u ON u.id = p.id + WHERE LOWER(p.email) = LOWER($1) AND p.email_verified = true AND u.password_hash IS NOT NULL + LIMIT 1`, + [email], + ); + + if (user.rows.length > 0) { + try { + await sendVerificationCode(client, request, { + email, + type: 'reset_password', + userId: user.rows[0].id, + }); + } catch (error) { + const message = error instanceof Error ? error.message : '验证码发送失败,请稍后再试'; + return NextResponse.json({ error: message }, { status: 400 }); + } + } + + return NextResponse.json({ + success: true, + cooldown: 60, + message: '如果该邮箱已绑定并验证,我们已发送重置验证码', + }); + } finally { + client.release(); + } +} diff --git a/src/app/api/email/verify-profile/route.ts b/src/app/api/email/verify-profile/route.ts new file mode 100644 index 0000000..1b9d1ee --- /dev/null +++ b/src/app/api/email/verify-profile/route.ts @@ -0,0 +1,73 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { ensureEmailSchema, getRequestBaseUrl, isValidEmail, normalizeEmail, sendTemplatedEmail, verifyEmailCode } from '@/lib/email-service'; +import { getDbClient } from '@/storage/database/local-db'; +import { getAuthenticatedUserId } from '@/lib/session-auth'; + +export const runtime = 'nodejs'; + +function friendlyError(error: unknown) { + return error instanceof Error ? error.message : '邮箱验证失败,请稍后再试'; +} + +export async function POST(request: NextRequest) { + const userId = await getAuthenticatedUserId(request); + if (!userId) { + return NextResponse.json({ error: '请先登录后再验证邮箱' }, { status: 401 }); + } + + const client = await getDbClient(); + try { + await ensureEmailSchema(client); + const body = await request.json(); + const email = normalizeEmail(body.email); + const code = typeof body.code === 'string' ? body.code.trim() : ''; + if (!isValidEmail(email) || !/^[a-z0-9]{4,10}$/i.test(code)) { + return NextResponse.json({ error: '邮箱或验证码格式不正确' }, { status: 400 }); + } + + await client.query('BEGIN'); + await verifyEmailCode(client, { email, type: 'verify_email', code }); + + const duplicate = await client.query( + 'SELECT id FROM profiles WHERE LOWER(email) = LOWER($1) AND id <> $2 LIMIT 1', + [email, userId], + ); + if (duplicate.rows.length > 0) { + await client.query('ROLLBACK'); + return NextResponse.json({ error: '该邮箱已被其他账号绑定' }, { status: 400 }); + } + + const domain = email.includes('@') ? email.split('@')[1] : null; + const profile = await client.query( + `UPDATE profiles + SET email = $1, + email_verified = true, + email_verified_at = NOW(), + email_bound_at = COALESCE(email_bound_at, NOW()), + email_sender_domain = $2, + updated_at = NOW() + WHERE id = $3 + RETURNING id, email, nickname, phone, role, membership_tier, credits_balance, daily_quota_used, daily_quota_limit, avatar_url, created_at, email_verified, email_verified_at, email_bound_at`, + [email, domain, userId], + ); + await client.query('UPDATE auth.users SET email = $1 WHERE id = $2', [email, userId]); + await client.query('COMMIT'); + + await sendTemplatedEmail(client, { + to: email, + type: 'email_verified', + subject: '【妙境】邮箱验证成功', + title: '邮箱验证成功', + intro: '你的账号邮箱已完成验证,后续可用于找回密码和安全通知。', + note: '若非本人操作,请尽快修改账号密码。', + assetBaseUrl: getRequestBaseUrl(request) || undefined, + }).catch(() => undefined); + + return NextResponse.json({ success: true, profile: profile.rows[0], message: '邮箱验证成功' }); + } catch (error) { + await client.query('ROLLBACK').catch(() => undefined); + return NextResponse.json({ error: friendlyError(error) }, { status: 400 }); + } finally { + client.release(); + } +} diff --git a/src/app/api/gallery/publish/route.ts b/src/app/api/gallery/publish/route.ts new file mode 100644 index 0000000..4c45a8e --- /dev/null +++ b/src/app/api/gallery/publish/route.ts @@ -0,0 +1,106 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { localStorage } from '@/lib/local-storage'; +import { getAuthenticatedUserId } from '@/lib/session-auth'; + +export async function POST(request: NextRequest) { + try { + const tokenUserId = await getAuthenticatedUserId(request); + if (!tokenUserId) { + return NextResponse.json({ error: '请先登录后再发布作品' }, { status: 401 }); + } + + const body = await request.json(); + const { + userId, + type, + prompt, + negativePrompt, + resultUrl, + thumbnailUrl, + width, + height, + duration, + params, + model, + modelLabel, + creditsCost, + } = body; + + if (!resultUrl) { + return NextResponse.json({ error: '缺少作品 URL' }, { status: 400 }); + } + + const client = await getDbClient(); + + try { + const profileResult = await client.query( + 'SELECT id FROM profiles WHERE id = $1 AND is_active = true LIMIT 1', + [tokenUserId], + ); + if (profileResult.rows.length === 0) { + return NextResponse.json({ error: '发布用户不存在或已停用' }, { status: 403 }); + } + + const hasReference = Boolean(body.referenceImage) + || (Array.isArray(body.referenceImages) && body.referenceImages.length > 0) + || (Array.isArray((params as Record | undefined)?.referenceImages) && ((params as Record).referenceImages as unknown[]).length > 0); + const explicitMode = (params as Record | undefined)?.creationMode || body.creationMode; + const workType = explicitMode === 'text2img' || explicitMode === 'img2img' || explicitMode === 'text2video' || explicitMode === 'img2video' + ? explicitMode + : type === 'video' ? (hasReference ? 'img2video' : 'text2video') + : type === 'image' ? (hasReference ? 'img2img' : 'text2img') + : type; + + const safeUserId = tokenUserId; + + const id = crypto.randomUUID(); + let galleryResultUrl = resultUrl; + let galleryThumbnailUrl = thumbnailUrl || null; + try { + const folder = type === 'video' ? 'gallery/videos' : 'gallery/images'; + galleryResultUrl = await localStorage.copyPublicUrlToFolder(resultUrl, folder); + if (thumbnailUrl) { + galleryThumbnailUrl = await localStorage.copyPublicUrlToFolder(thumbnailUrl, 'gallery/thumbnails'); + } + } catch (copyError) { + console.warn('[gallery/publish] copy to gallery folder failed, using original URL:', copyError); + } + + await client.query( + `INSERT INTO works (id, user_id, type, title, prompt, negative_prompt, result_url, thumbnail_url, width, height, duration, is_public, likes_count, credits_cost, status, params) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, true, 0, $12, 'completed', $13)`, + [ + id, + safeUserId, + workType, + body.title || null, + prompt || null, + negativePrompt || null, + galleryResultUrl, + galleryThumbnailUrl, + width || null, + height || null, + duration || null, + creditsCost || 0, + JSON.stringify({ + ...((params as Record) || {}), + model, + modelLabel, + referenceImage: body.referenceImage || undefined, + referenceImages: body.referenceImages || undefined, + }), + ] + ); + + return NextResponse.json({ success: true, workId: id, resultUrl: galleryResultUrl }); + } finally { + client.release(); + } + } catch (err) { + console.error('[gallery/publish] POST error:', err); + return NextResponse.json({ error: '服务器错误' }, { status: 500 }); + } +} + + diff --git a/src/app/api/gallery/route.ts b/src/app/api/gallery/route.ts new file mode 100644 index 0000000..10627ac --- /dev/null +++ b/src/app/api/gallery/route.ts @@ -0,0 +1,152 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdmin } from '@/lib/admin-auth'; +import { getDbClient } from '@/storage/database/local-db'; + +function getReferenceImages(params: Record) { + const referenceImages = Array.isArray(params.referenceImages) + ? params.referenceImages.filter((item): item is string => typeof item === 'string' && item.trim().length > 0) + : []; + const referenceImage = typeof params.referenceImage === 'string' && params.referenceImage.trim() + ? params.referenceImage + : referenceImages[0]; + return { referenceImage, referenceImages }; +} + +export async function GET(request: NextRequest) { + const url = request.nextUrl.searchParams; + const type = url.get('type'); + const limit = Math.min(parseInt(url.get('limit') || '50', 10), 300); + const offset = parseInt(url.get('offset') || '0', 10); + const sort = url.get('sort') || 'newest'; + const search = (url.get('q') || url.get('search') || '').trim().toLowerCase(); + + try { + const client = await getDbClient(); + + try { + const where: string[] = ['w.is_public = true', 'w.status = $1']; + const params: unknown[] = ['completed']; + + if (type === 'image') { + params.push('text2img', 'img2img'); + where.push(`w.type IN ($${params.length - 1}, $${params.length})`); + } else if (type === 'video') { + params.push('text2video', 'img2video'); + where.push(`w.type IN ($${params.length - 1}, $${params.length})`); + } + + if (search) { + params.push(`%${search}%`); + const idx = params.length; + where.push(`( + LOWER(COALESCE(w.title, '')) LIKE $${idx} + OR LOWER(COALESCE(w.prompt, '')) LIKE $${idx} + OR LOWER(COALESCE(w.negative_prompt, '')) LIKE $${idx} + OR LOWER(COALESCE(p.nickname, '')) LIKE $${idx} + OR LOWER(COALESCE(p.email, '')) LIKE $${idx} + OR LOWER(COALESCE(w.params::text, '')) LIKE $${idx} + )`); + } + + let query = ` + SELECT w.id, w.type, w.title, w.prompt, w.negative_prompt, w.result_url, w.thumbnail_url, + w.width, w.height, w.duration, w.is_public, w.likes_count, w.credits_cost, + w.status, w.created_at, w.user_id, w.params, + p.nickname, p.email, p.avatar_url + FROM works w + LEFT JOIN profiles p ON p.id = w.user_id + WHERE ${where.join(' AND ')} + `; + + if (sort === 'popular') { + query += ' ORDER BY w.likes_count DESC, w.created_at DESC'; + } else { + query += ' ORDER BY w.created_at DESC'; + } + + query += ` LIMIT ${limit} OFFSET ${offset}`; + + const result = await client.query(query, params); + const countResult = await client.query( + `SELECT COUNT(*) as total + FROM works w + LEFT JOIN profiles p ON p.id = w.user_id + WHERE ${where.join(' AND ')}`, + params, + ); + + const works = (result.rows || []).map((w: Record) => { + const workParams = (w.params || {}) as Record; + const references = getReferenceImages(workParams); + return { + id: w.id, + type: w.type, + title: w.title, + prompt: w.prompt, + negativePrompt: w.negative_prompt, + url: w.result_url, + thumbnailUrl: w.thumbnail_url, + width: w.width, + height: w.height, + duration: w.duration, + likes: w.likes_count || 0, + creditsCost: w.credits_cost || 0, + params: workParams, + referenceImage: references.referenceImage, + referenceImages: references.referenceImages, + publisherId: w.user_id, + publisherNickname: (w.nickname as string) || ((w.email as string) || '').split('@')[0] || '匿名用户', + publisherAvatarUrl: (w.avatar_url as string | null) || null, + publishedAt: w.created_at, + }; + }); + + return NextResponse.json({ works, total: parseInt(countResult.rows[0]?.total || '0', 10) }); + } finally { + client.release(); + } + } catch (err) { + console.error('[gallery] GET error:', err); + return NextResponse.json({ error: '获取作品列表失败' }, { status: 500 }); + } +} + +export async function DELETE(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const body = await request.json().catch(() => ({})); + const searchId = request.nextUrl.searchParams.get('id'); + const bodyIds = Array.isArray(body.ids) ? body.ids : []; + const ids = [...new Set([searchId, ...bodyIds].filter((id): id is string => typeof id === 'string' && id.trim().length > 0))]; + + if (ids.length === 0) { + return NextResponse.json({ error: '缺少要删除的作品 ID' }, { status: 400 }); + } + if (ids.length > 100) { + return NextResponse.json({ error: '单次最多删除 100 个画廊作品' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + const result = await client.query( + `UPDATE works + SET is_public = false + WHERE id = ANY($1) AND is_public = true + RETURNING id`, + [ids], + ); + return NextResponse.json({ + success: true, + removed: result.rowCount || 0, + ids: result.rows.map((row: Record) => row.id), + }); + } finally { + client.release(); + } + } catch (err) { + console.error('[gallery] DELETE error:', err); + return NextResponse.json({ error: '删除画廊作品失败' }, { status: 500 }); + } +} diff --git a/src/app/api/generate/image/route.ts b/src/app/api/generate/image/route.ts new file mode 100644 index 0000000..fd0970a --- /dev/null +++ b/src/app/api/generate/image/route.ts @@ -0,0 +1,1033 @@ +import { NextRequest, NextResponse } from 'next/server'; +import sharp from 'sharp'; +import { ImageGenerationClient, Config, HeaderUtils } from 'coze-coding-dev-sdk'; +import { buildCustomApiHeaders, fetchWithRetry, parseCustomApiError, parseCustomApiJsonWithProgress } from '@/lib/custom-api-fetch'; +import { getAspectRatioPromptHint, resolveImageSize } from '@/lib/model-config'; +import { localStorage } from '@/lib/local-storage'; +import { fetchPublicHttpUrl } from '@/lib/remote-fetch'; +import { isTrustedInternalGenerationRequest, isUuid, resolveServerApiConfig } from '@/lib/server-api-config'; +import { updateGenerationJobProgress } from '@/lib/generation-job-estimates'; +import { + compressImageBufferForUpstream, + dataUrlToImageBuffer, + imageBufferToDataUrl, +} from '@/lib/server-image-compression'; + +interface CustomApiConfig { + apiUrl: string; + modelName: string; + apiKey: string; + provider: string; + customApiKeyId?: string; + systemApiId?: string; +} + +const GENERATION_TIMEOUT = 300_000; +const GENERATION_TIMEOUT_SECONDS = GENERATION_TIMEOUT / 1000; +const MAX_UPSTREAM_REFERENCE_IMAGE_BYTES = Number(process.env.MAX_UPSTREAM_REFERENCE_IMAGE_BYTES || 700 * 1024); + +interface TargetImageSize { + width: number; + height: number; +} + +interface PersistedImageResult { + url: string; + width: number; + height: number; + bytes: number; +} + +export const runtime = 'nodejs'; + +function parseImageSize(size: string | undefined): TargetImageSize | null { + const match = size?.match(/^(\d{2,5})x(\d{2,5})$/i); + if (!match) return null; + const width = Number(match[1]); + const height = Number(match[2]); + return width > 0 && height > 0 ? { width, height } : null; +} + +function resolveTargetImageSize( + size: string | undefined, + aspectRatio: string | undefined, + resolution: string | undefined, + quality: string | undefined, +): TargetImageSize | null { + const explicit = parseImageSize(size); + if (explicit) return explicit; + + if (aspectRatio && aspectRatio !== 'original' && resolution) { + return parseImageSize(resolveImageSize(aspectRatio, resolution)); + } + + const squareByQuality: Record = { + '1K': '1024x1024', + '1080P': '1024x1024', + '2K': '2048x2048', + '4K': '4096x4096', + }; + return parseImageSize(quality ? squareByQuality[quality] : undefined); +} + +function formatTargetSize(targetSize: TargetImageSize): string { + return `${targetSize.width}x${targetSize.height}`; +} + +function imageMeetsTargetSize(width: number, height: number, targetSize: TargetImageSize): boolean { + return width >= targetSize.width && height >= targetSize.height; +} + +function getImageExtension(mimeType: string | null | undefined, fallbackUrl?: string): string { + const normalized = mimeType?.split(';')[0].trim().toLowerCase(); + const mimeExt: Record = { + 'image/png': 'png', + 'image/jpeg': 'jpg', + 'image/jpg': 'jpg', + 'image/webp': 'webp', + }; + if (normalized && mimeExt[normalized]) return mimeExt[normalized]; + const urlExt = fallbackUrl?.split('?')[0].match(/\.([a-z0-9]+)$/i)?.[1]; + return urlExt || 'png'; +} + +function parseImageDataUrl(dataUrl: string): { buffer: Buffer; mimeType: string; ext: string } | null { + const match = dataUrl.match(/^data:(image\/[^;]+);base64,(.+)$/); + if (!match) return null; + const [, mimeType, base64Data] = match; + return { + buffer: Buffer.from(base64Data, 'base64'), + mimeType, + ext: getImageExtension(mimeType), + }; +} + +async function persistImageWithMetadata(url: string, prefix: string): Promise { + let buffer: Buffer; + let mimeType = 'image/png'; + let ext = 'png'; + + if (url.startsWith('data:')) { + const parsed = parseImageDataUrl(url); + if (!parsed) return null; + buffer = parsed.buffer; + mimeType = parsed.mimeType; + ext = parsed.ext; + } else { + const existingKey = localStorage.getKeyFromPublicUrl(url); + if (existingKey && localStorage.fileExists(existingKey)) { + buffer = localStorage.readFile(existingKey); + ext = existingKey.split('.').pop() || ext; + } else if (url.startsWith('http')) { + const response = await withTimeout(fetchPublicHttpUrl(url), 30_000, 'Fetch generated image'); + if (!response.ok) throw new Error(`下载生成图片失败: ${response.status}`); + mimeType = response.headers.get('content-type')?.split(';')[0] || mimeType; + buffer = Buffer.from(await response.arrayBuffer()); + ext = getImageExtension(mimeType, url); + } else { + return null; + } + } + + const metadata = await sharp(buffer, { failOn: 'none' }).metadata(); + if (!metadata.width || !metadata.height) { + throw new Error('无法读取生成图片尺寸'); + } + + const fileName = `${prefix}/${Date.now()}-${Math.random().toString(36).slice(2, 8)}.${ext}`; + const fileKey = await withTimeout( + localStorage.uploadFile({ + fileContent: buffer, + fileName, + contentType: mimeType, + }), + 30_000, + 'Local uploadFile', + ); + const presignedUrl = await withTimeout( + localStorage.generatePresignedUrl({ key: fileKey, expireTime: 2592000 }), + 10_000, + 'Local generatePresignedUrl', + ); + + return { + url: presignedUrl, + width: metadata.width, + height: metadata.height, + bytes: buffer.length, + }; +} + +async function persistQualifiedImageUrls( + urls: string[], + prefix: string, + targetSize: TargetImageSize | null, + context: string, +): Promise<{ images: string[]; rejected: string[] }> { + const images: string[] = []; + const rejected: string[] = []; + + for (const url of urls) { + try { + const persisted = await persistImageWithMetadata(url, prefix); + if (!persisted) { + rejected.push('无法读取生成图片'); + continue; + } + if (targetSize && !imageMeetsTargetSize(persisted.width, persisted.height, targetSize)) { + const message = `${persisted.width}x${persisted.height} < ${formatTargetSize(targetSize)}`; + console.warn(`[${context}] Rejected low-resolution image:`, message); + rejected.push(message); + continue; + } + console.log(`[${context}] Accepted generated image:`, `${persisted.width}x${persisted.height}`, 'bytes:', persisted.bytes); + images.push(persisted.url); + } catch (err) { + const message = err instanceof Error ? err.message : '图片处理失败'; + console.warn(`[${context}] Failed to persist generated image:`, message); + rejected.push(message); + } + } + + return { images, rejected }; +} + +async function fetchCustomImageGeneration( + endpoint: string, + apiKey: string, + requestBody: Record, + onProgress?: (progress: Record) => void | Promise, +): Promise<{ ok: true; images: string[] } | { ok: false; response: Response; errorText: string }> { + const response = await fetchWithRetry( + endpoint, + { method: 'POST', headers: buildCustomApiHeaders(apiKey), body: JSON.stringify(requestBody) }, + GENERATION_TIMEOUT, + 1, + ); + + if (!response.ok) { + return { ok: false, response, errorText: await response.text() }; + } + + const data = await parseCustomApiJsonWithProgress(response, onProgress); + return { ok: true, images: extractImagesFromGenerationsResponse(data as Record) }; +} + +async function requestQualifiedCustomImages( + endpoint: string, + apiKey: string, + requestBody: Record, + targetCount: number, + targetSize: TargetImageSize | null, + onProgress?: (progress: Record) => void | Promise, +): Promise<{ images: string[]; rejected: string[]; upstreamError?: { status: number; text: string } }> { + const accepted: string[] = []; + const rejected: string[] = []; + const maxAttempts = Math.max(targetCount * 3, 3); + + for (let attempt = 1; attempt <= maxAttempts && accepted.length < targetCount; attempt += 1) { + const remaining = targetCount - accepted.length; + const requestCount = attempt === 1 + ? Math.max(remaining, Number(requestBody.n) || 1) + : 1; + const response = await fetchCustomImageGeneration( + endpoint, + apiKey, + { ...requestBody, n: requestCount }, + onProgress, + ); + + if (!response.ok) { + return { + images: accepted, + rejected, + upstreamError: { status: response.response.status, text: response.errorText }, + }; + } + + if (response.images.length === 0) { + rejected.push('响应中无图片数据'); + continue; + } + + const persisted = await persistQualifiedImageUrls( + response.images, + 'generated/images', + targetSize, + `Custom API Image attempt ${attempt}`, + ); + accepted.push(...persisted.images); + rejected.push(...persisted.rejected); + } + + return { images: accepted.slice(0, targetCount), rejected }; +} + +function lowResolutionError(targetSize: TargetImageSize | null, rejected: string[]): string { + const target = targetSize ? `要求 ${formatTargetSize(targetSize)}` : '要求的分辨率'; + const actual = rejected.length > 0 ? `,实际返回:${rejected.join(';')}` : ''; + return `上游返回图片分辨率不符合${target}${actual}`; +} + +/** Helper: wrap a promise with a timeout that rejects with a descriptive message */ +function withTimeout(promise: Promise, ms: number, label: string): Promise { + return new Promise((resolve, reject) => { + const timer = setTimeout(() => reject(new Error(`${label} timed out after ${ms}ms`)), ms); + promise.then( + (v) => { clearTimeout(timer); resolve(v); }, + (e) => { clearTimeout(timer); reject(e); }, + ); + }); +} + +/** + * Upload a base64 data URL to S3 storage and return a presigned URL. + */ +async function uploadDataUrlAndGetPublicUrl(dataUrl: string): Promise { + try { + const match = dataUrl.match(/^data:(image\/[^;]+);base64,(.+)$/); + if (!match) return null; + const [, mimeType, base64Data] = match; + const ext = mimeType.split('/')[1] || 'png'; + const buffer = Buffer.from(base64Data, 'base64'); + const fileName = `img2img-ref/${Date.now()}-${Math.random().toString(36).slice(2, 8)}.${ext}`; + + const fileKey = await localStorage.uploadFile({ + fileContent: buffer, + fileName, + contentType: mimeType, + }); + + if (!fileKey) { + console.error('[Upload Ref Image] uploadFile returned empty key'); + return null; + } + + const presignedUrl = await localStorage.generatePresignedUrl({ + key: fileKey, + expireTime: 3600, + }); + + console.log('[Upload Ref Image] Success, key:', fileKey, 'url length:', presignedUrl?.length); + return presignedUrl || null; + } catch (err) { + console.error('[Upload Ref Image Error]', err instanceof Error ? err.message : err); + return null; + } +} + +/** + * Derive the chat completions endpoint URL from an images/generations URL. + */ +function deriveChatCompletionsUrl(imagesUrl: string): string { + if (imagesUrl.includes('/chat/completions')) return imagesUrl; + return imagesUrl + .replace(/\/images\/(generations|edits).*/i, '/chat/completions') + .replace(/\/+$/, ''); +} + +/** + * Derive the images/edits endpoint URL from an images/generations URL. + * This is the official OpenAI endpoint for image-to-image. + */ +function deriveImagesEditsUrl(imagesUrl: string): string { + if (imagesUrl.includes('/images/edits')) return imagesUrl; + return imagesUrl + .replace(/\/images\/generations.*/i, '/images/edits') + .replace(/\/+$/, ''); +} + +/** + * Extract image URLs/data from a chat completions response. + */ +function extractImagesFromChatResponse(data: Record): string[] { + const images: string[] = []; + const choices = data.choices as Array> | undefined; + if (Array.isArray(choices)) { + for (const choice of choices) { + const message = choice.message as Record | undefined; + if (!message) continue; + const content = message.content; + + if (typeof content === 'string') { + if (content.startsWith('data:image/') || content.startsWith('http')) { + images.push(content); + } + const mdMatch = content.match(/!\[.*?\]\((data:image\/[^)]+)\)/); + if (mdMatch) images.push(mdMatch[1]); + const urlMatch = content.match(/(https?:\/\/[^\s"']+\.(png|jpg|jpeg|webp)[^\s"']*)/i); + if (urlMatch) images.push(urlMatch[1]); + } else if (Array.isArray(content)) { + for (const item of content as Array>) { + if (item.type === 'image_url' && item.image_url) { + const url = (item.image_url as Record).url; + if (typeof url === 'string') images.push(url); + } + if (item.type === 'image' && item.image) { + const imgData = item.image as Record; + if (typeof imgData.url === 'string') images.push(imgData.url); + if (typeof imgData.b64_json === 'string') { + images.push(`data:image/png;base64,${imgData.b64_json}`); + } + } + if (item.type === 'text' && typeof item.text === 'string') { + const text = item.text as string; + if (text.startsWith('data:image/')) images.push(text); + if (text.startsWith('http') && /\.(png|jpg|jpeg|webp)/i.test(text)) images.push(text); + const mdMatch = text.match(/!\[.*?\]\((data:image\/[^)]+)\)/); + if (mdMatch) images.push(mdMatch[1]); + const urlMatch = text.match(/(https?:\/\/[^\s"']+\.(png|jpg|jpeg|webp)[^\s"']*)/i); + if (urlMatch) images.push(urlMatch[1]); + } + } + } + } + } + return images; +} + +function objectKeysFromUnknown(value: unknown): string[] { + if (!value || typeof value !== 'object' || Array.isArray(value)) return []; + return Object.keys(value); +} + +/** + * Extract images from images/generations or images/edits response format. + */ +function extractImagesFromGenerationsResponse(data: Record): string[] { + const images: string[] = []; + if (Array.isArray(data.data)) { + for (const item of data.data as Array>) { + if (typeof item === 'string') { images.push(item); continue; } + if (item.b64_json && typeof item.b64_json === 'string') { + images.push(`data:image/png;base64,${item.b64_json}`); + } + if (item.url && typeof item.url === 'string') images.push(item.url); + } + } else if (typeof data.url === 'string') { + images.push(data.url); + } else if (typeof data.image_url === 'string') { + images.push(data.image_url); + } + return images; +} + +/** Track which strategy produced a result */ +interface StrategyResult { + success: boolean; + images?: string[]; + error?: string; + status?: number; + strategyName: string; +} + +/** + * Try a single API request strategy and return the result. + */ +async function tryImageStrategy( + url: string, + headers: Record, + body: Record, + strategyName: string, + isChatFormat: boolean, + onProgress?: (progress: Record) => void | Promise, +): Promise { + console.log(`[Custom API img2img → ${strategyName}] URL:`, url, + '| model:', body.model, + '| body_keys:', Object.keys(body).join(',')); + + try { + const response = await fetchWithRetry( + url, + { + method: 'POST', + headers, + body: JSON.stringify(body), + }, + GENERATION_TIMEOUT, + 1, + ); + + if (response.ok) { + const data = await parseCustomApiJsonWithProgress(response, onProgress); + let images = isChatFormat + ? extractImagesFromChatResponse(data as Record) + : []; + if (images.length === 0) { + images = extractImagesFromGenerationsResponse(data as Record); + } + + if (images.length > 0) { + console.log(`[Custom API img2img → ${strategyName} SUCCESS] Got`, images.length, 'images'); + return { success: true, images, strategyName }; + } + + console.warn(`[Custom API img2img → ${strategyName}] OK but no images extracted, keys:`, objectKeysFromUnknown(data)); + return { success: false, error: '响应中无图片数据', strategyName }; + } + + const errorText = await response.text(); + console.warn(`[Custom API img2img → ${strategyName} FAILED]`, response.status, errorText.slice(0, 200)); + return { success: false, error: parseCustomApiError(response.status, errorText), status: response.status, strategyName }; + } catch (err) { + const msg = err instanceof Error ? err.message : '请求异常'; + console.warn(`[Custom API img2img → ${strategyName} ERROR]`, msg); + return { success: false, error: msg, strategyName }; + } +} + +/** + * Try images/edits endpoint with multipart/form-data format. + * + * CRITICAL: This is the format Cherry Studio (Electron app) uses for img2img. + * OpenAI's official /v1/images/edits endpoint uses multipart/form-data, NOT JSON. + * API proxies like mozhevip.top route based on Content-Type: + * - multipart/form-data → routed to img2img account pool → WORKS + * - application/json → routed to wrong pool → 503 "No available compatible accounts" + * + * This is why the same API+Key works in Cherry Studio but not from our server. + */ +async function tryEditsWithFormData( + url: string, + apiKey: string, + model: string, + prompt: string, + imageBuffer: Buffer, + imageMimeType: string, + size: string | undefined, + strength: number | undefined, + count: number, + onProgress?: (progress: Record) => void | Promise, +): Promise { + const strategyName = '策略2: images/edits (FormData)'; + console.log(`[Custom API img2img → ${strategyName}] URL:`, url, '| model:', model); + + try { + // Build multipart/form-data manually (Node.js doesn't have native FormData that works with fetch) + const boundary = `----FormBoundary${Date.now()}${Math.random().toString(36).slice(2)}`; + const parts: Buffer[] = []; + + // Add text fields + const textFields: Record = { + model, + prompt, + }; + if (size) textFields.size = size; + if (count > 1) textFields.n = String(count); + if (strength !== undefined) textFields.strength = String(strength); + + for (const [key, value] of Object.entries(textFields)) { + parts.push(Buffer.from( + `--${boundary}\r\nContent-Disposition: form-data; name="${key}"\r\n\r\n${value}\r\n` + )); + } + + // Add image file field + const ext = imageMimeType.split('/')[1] || 'png'; + parts.push(Buffer.from( + `--${boundary}\r\nContent-Disposition: form-data; name="image"; filename="image.${ext}"\r\nContent-Type: ${imageMimeType}\r\n\r\n` + )); + parts.push(imageBuffer); + parts.push(Buffer.from(`\r\n`)); + + // Close boundary + parts.push(Buffer.from(`--${boundary}--\r\n`)); + + const bodyBuffer = Buffer.concat(parts); + + const response = await fetchWithRetry( + url, + { + method: 'POST', + headers: { + 'Authorization': `Bearer ${apiKey}`, + 'Content-Type': `multipart/form-data; boundary=${boundary}`, + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36', + }, + body: bodyBuffer, + }, + GENERATION_TIMEOUT, + 1, + ); + + if (response.ok) { + const data = await parseCustomApiJsonWithProgress(response, onProgress); + const images = extractImagesFromGenerationsResponse(data as Record); + if (images.length > 0) { + console.log(`[Custom API img2img → ${strategyName} SUCCESS] Got`, images.length, 'images'); + return { success: true, images, strategyName }; + } + console.warn(`[Custom API img2img → ${strategyName}] OK but no images, keys:`, objectKeysFromUnknown(data)); + return { success: false, error: '响应中无图片数据', strategyName }; + } + + const errorText = await response.text(); + console.warn(`[Custom API img2img → ${strategyName} FAILED]`, response.status, errorText.slice(0, 200)); + return { success: false, error: parseCustomApiError(response.status, errorText), status: response.status, strategyName }; + } catch (err) { + const msg = err instanceof Error ? err.message : '请求异常'; + console.warn(`[Custom API img2img → ${strategyName} ERROR]`, msg); + return { success: false, error: msg, strategyName }; + } +} + +/** + * Image-to-image via custom API with multi-strategy approach. + * Tries 3 different endpoint formats in order: + * 1. /v1/chat/completions with image_url (Cherry Studio / OpenAI multimodal style) + * 2. /v1/images/edits with image (Official OpenAI image edit endpoint) + * 3. /v1/images/generations with init_image (Reference code / Stable Diffusion style) + */ +async function customApiImageToImage( + customApiConfig: CustomApiConfig, + prompt: string, + negativePrompt: string | undefined, + image: string, + strength: number | undefined, + size: string | undefined, + count: number, + targetSize: TargetImageSize | null, + aspectRatio?: string, + onProgress?: (progress: Record) => void | Promise, +): Promise { + const endpoint = customApiConfig.apiUrl; + if (!endpoint) { + return NextResponse.json({ error: '自定义API未配置请求地址' }, { status: 400 }); + } + if (!customApiConfig.modelName) { + return NextResponse.json({ error: '自定义API未配置模型名称,请在设置中填写模型名称(如 gpt-image-2)' }, { status: 400 }); + } + + let normalizedImage = image; + + // Prepare image buffer for FormData upload + let imageBuffer: Buffer | null = null; + let imageMimeType = 'image/png'; + if (image.startsWith('data:')) { + const parsedImage = dataUrlToImageBuffer(image); + if (parsedImage) { + imageMimeType = parsedImage.mimeType; + imageBuffer = parsedImage.buffer; + } + } else { + // It's a URL - download it first + try { + const imgRes = await fetchPublicHttpUrl(image); + if (imgRes.ok) { + const contentType = imgRes.headers.get('content-type') || 'image/png'; + imageMimeType = contentType.split(';')[0]; + const arrayBuf = await imgRes.arrayBuffer(); + imageBuffer = Buffer.from(arrayBuf); + } + } catch (e) { + console.warn('[Custom API img2img] Failed to download reference image from URL:', e); + } + } + + if (imageBuffer) { + try { + const compressed = await compressImageBufferForUpstream( + { buffer: imageBuffer, mimeType: imageMimeType }, + { maxBytes: MAX_UPSTREAM_REFERENCE_IMAGE_BYTES }, + ); + if (compressed.changed) { + console.log('[Custom API img2img] Compressed reference image:', compressed.originalBytes, '→', compressed.buffer.length); + } + imageBuffer = compressed.buffer; + imageMimeType = compressed.mimeType; + normalizedImage = imageBufferToDataUrl({ buffer: imageBuffer, mimeType: imageMimeType }); + } catch (err) { + console.warn('[Custom API img2img] Reference image compression failed, using original:', err instanceof Error ? err.message : err); + } + } + + // Upload reference image to S3 to get a public URL (for strategies that use URL instead of file upload) + let imageUrl = normalizedImage; + if (normalizedImage.startsWith('data:')) { + console.log('[Custom API img2img] Uploading reference image to S3 to reduce payload...'); + const uploadedUrl = await uploadDataUrlAndGetPublicUrl(normalizedImage); + if (uploadedUrl) { + imageUrl = uploadedUrl; + console.log('[Custom API img2img] Using S3 URL, size reduction:', normalizedImage.length, '→', imageUrl.length); + } else { + console.warn('[Custom API img2img] S3 upload failed, falling back to data URL in request body'); + } + } + + // Build prompt text with optional negative prompt and strength hints + let promptText = prompt; + if (negativePrompt) { + promptText += `\n\n负面提示词(排除以下元素): ${negativePrompt}`; + } + if (strength !== undefined && strength !== 0.5) { + promptText += `\n\n[重绘幅度: ${strength.toFixed(2)},${strength < 0.5 ? '尽量保留参考图特征' : '更贴近提示词描述'}]`; + } + // Augment prompt with aspect ratio hint + if (aspectRatio) { + const hint = getAspectRatioPromptHint(aspectRatio); + if (hint) promptText += `\n\n[${hint}]`; + } + + const headers = buildCustomApiHeaders(customApiConfig.apiKey); + const denoisingStrength = strength ?? 0.5; + + // --- Strategy 1: /v1/images/edits with multipart/form-data --- + // This is THE format Cherry Studio uses! OpenAI's official endpoint. + // API proxies route multipart/form-data to the correct img2img account pool. + let result1: StrategyResult | null = null; + if (imageBuffer) { + const editsUrl = deriveImagesEditsUrl(endpoint); + result1 = await tryEditsWithFormData( + editsUrl, + customApiConfig.apiKey, + customApiConfig.modelName, + promptText, + imageBuffer, + imageMimeType, + size, + denoisingStrength, + count, + onProgress, + ); + if (result1.success && result1.images) { + const persisted = await persistQualifiedImageUrls(result1.images, 'generated/images', targetSize, 'Custom API img2img strategy1'); + if (persisted.images.length > 0) return NextResponse.json({ images: persisted.images }); + result1 = { ...result1, success: false, error: lowResolutionError(targetSize, persisted.rejected) }; + } + } + + // --- Strategy 2: chat/completions with image_url (multimodal style) --- + const chatUrl = deriveChatCompletionsUrl(endpoint); + const chatBody: Record = { + model: customApiConfig.modelName, + stream: false, + messages: [ + { + role: 'user', + content: [ + { type: 'image_url', image_url: { url: imageUrl } }, + { type: 'text', text: promptText }, + ], + }, + ], + size: size || '1024x1024', + n: count, + }; + const result2 = await tryImageStrategy(chatUrl, headers, chatBody, '策略2: chat/completions', true, onProgress); + if (result2.success && result2.images) { + const persisted = await persistQualifiedImageUrls(result2.images, 'generated/images', targetSize, 'Custom API img2img strategy2'); + if (persisted.images.length > 0) return NextResponse.json({ images: persisted.images }); + result2.success = false; + result2.error = lowResolutionError(targetSize, persisted.rejected); + } + + // --- Strategy 3: /v1/images/generations with init_image (Reference code / SD style) --- + let rawBase64 = normalizedImage; + if (normalizedImage.startsWith('data:')) { + const commaIndex = normalizedImage.indexOf(','); + if (commaIndex !== -1) rawBase64 = normalizedImage.substring(commaIndex + 1); + } + + const imgBody: Record = { + model: customApiConfig.modelName, + prompt: promptText, + n: count, + size: size || '1024x1024', + response_format: 'b64_json', + init_image: rawBase64, + denoising_strength: denoisingStrength, + }; + const result3 = await tryImageStrategy(endpoint, headers, imgBody, '策略3: images/generations+init_image', false, onProgress); + if (result3.success && result3.images) { + const persisted = await persistQualifiedImageUrls(result3.images, 'generated/images', targetSize, 'Custom API img2img strategy3'); + if (persisted.images.length > 0) return NextResponse.json({ images: persisted.images }); + result3.success = false; + result3.error = lowResolutionError(targetSize, persisted.rejected); + } + + const upstreamError = result1?.error || result2.error || result3.error; + const upstreamStatus = result1?.status || result2.status || result3.status || 502; + return NextResponse.json( + { + error: upstreamError || '图生图失败', + }, + { status: upstreamStatus >= 500 ? 502 : upstreamStatus } + ); +} + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { + prompt, + negativePrompt, + model = 'doubao-seedream-5-0-260128', + quality = '2K', + size, + aspectRatio, + resolution, + count = 1, + guidanceScale = 7, + image, + strength, + customApiConfig, + } = body as { + prompt?: string; + negativePrompt?: string; + model?: string; + quality?: string; + size?: string; + aspectRatio?: string; + resolution?: string; + count?: number; + guidanceScale?: number; + image?: string; + strength?: number; + customApiConfig?: CustomApiConfig; + }; + + if (!prompt) { + return NextResponse.json({ error: '请提供创作描述' }, { status: 400 }); + } + + if (prompt.length < 2) { + return NextResponse.json({ error: '创作描述过短,请输入更详细的描述' }, { status: 400 }); + } + + const trustedInternalRequest = isTrustedInternalGenerationRequest(request); + const trustedUserId = trustedInternalRequest + ? request.headers.get('x-miaojing-generation-user-id') + : null; + const generationJobId = trustedInternalRequest + ? request.headers.get('x-miaojing-generation-job-id') + : null; + const resolvedCustomApiConfig = await resolveServerApiConfig( + request, + customApiConfig, + isUuid(trustedUserId) ? trustedUserId : null, + ); + const handleUpstreamProgress = (progress: Record) => updateGenerationJobProgress( + isUuid(generationJobId) ? generationJobId : null, + progress, + ); + const targetSize = resolveTargetImageSize(size, aspectRatio, resolution, quality); + + // Log all incoming parameters for debugging + console.log('[Image Generation] Params:', JSON.stringify({ + model, + size, + aspectRatio, + resolution, + count, + guidanceScale, + hasCustomApi: !!resolvedCustomApiConfig, + customApiUrl: resolvedCustomApiConfig?.apiUrl, + customApiModel: resolvedCustomApiConfig?.modelName, + hasImage: !!image, + strength, + promptLength: prompt.length, + })); + + // ---- Custom API mode ---- + if (resolvedCustomApiConfig && resolvedCustomApiConfig.apiKey) { + const resolvedApiKey = resolvedCustomApiConfig.apiKey; + try { + // Image-to-image: use multi-strategy approach + if (image) { + return await customApiImageToImage( + resolvedCustomApiConfig as CustomApiConfig, + prompt, + negativePrompt, + image, + strength, + size, + count, + targetSize, + aspectRatio, + handleUpstreamProgress, + ); + } + + // Text-to-image: use images/generations format + const endpoint = resolvedCustomApiConfig.apiUrl; + if (!endpoint) { + return NextResponse.json({ error: '自定义API未配置请求地址' }, { status: 400 }); + } + if (!resolvedCustomApiConfig.modelName) { + return NextResponse.json({ error: '自定义API未配置模型名称,请在设置中填写模型名称(如 gpt-image-2)' }, { status: 400 }); + } + + // Ensure n is at least 1 + const n = Math.max(1, count || 1); + + // Augment prompt with aspect ratio hint as fallback + // Many APIs ignore size/aspect_ratio params, so embedding in prompt helps + const ratioHint = aspectRatio ? getAspectRatioPromptHint(aspectRatio) : ''; + const augmentedPrompt = ratioHint ? `${prompt}\n\n[${ratioHint}]` : prompt; + + const requestBody: Record = { + model: resolvedCustomApiConfig.modelName, + prompt: augmentedPrompt, + n, + size: size || '1024x1024', + response_format: 'b64_json', + }; + if (negativePrompt) { + requestBody.negative_prompt = negativePrompt; + } + // Pass guidance_scale for diffusion models (CFG scale) + if (guidanceScale && guidanceScale !== 7) { + requestBody.guidance_scale = guidanceScale; + } + // Pass aspect_ratio for APIs that prefer it over pixel size + if (aspectRatio) { + requestBody.aspect_ratio = aspectRatio; + } + + console.log('[Custom API Image] Text-to-image, sending to:', endpoint, + '| model:', requestBody.model, + '| size:', requestBody.size, + '| n:', requestBody.n, + '| aspect_ratio:', requestBody.aspect_ratio, + '| guidance_scale:', requestBody.guidance_scale, + '| prompt_length:', prompt.length, + '| augmented_prompt_length:', augmentedPrompt.length); + + let customGenerationResult: Awaited>; + try { + customGenerationResult = await requestQualifiedCustomImages( + endpoint, + resolvedApiKey, + requestBody, + n, + targetSize, + handleUpstreamProgress, + ); + } catch (fetchError: unknown) { + if (fetchError instanceof DOMException && fetchError.name === 'AbortError') { + return NextResponse.json({ error: `自定义API请求超时(${GENERATION_TIMEOUT_SECONDS}秒)` }, { status: 504 }); + } + const msg = fetchError instanceof Error ? fetchError.message : '请求失败'; + if (msg.includes('ECONNREFUSED') || msg.includes('ENOTFOUND') || msg.includes('fetch failed')) { + return NextResponse.json({ error: `无法连接到自定义API: ${msg}。请检查 API 地址` }, { status: 502 }); + } + return NextResponse.json({ error: `自定义API网络错误: ${msg}` }, { status: 502 }); + } + + if (customGenerationResult.upstreamError) { + const { status, text } = customGenerationResult.upstreamError; + console.error('[Custom API Image Error]', status, text.slice(0, 500)); + return NextResponse.json( + { error: parseCustomApiError(status, text) }, + { status: status >= 500 ? 502 : status } + ); + } + + if (customGenerationResult.images.length === 0) { + return NextResponse.json({ error: lowResolutionError(targetSize, customGenerationResult.rejected) }, { status: 502 }); + } + console.log('[Custom API Image] Persisted', customGenerationResult.images.length, '/', n, 'qualified images', + '| target:', targetSize ? formatTargetSize(targetSize) : 'none'); + return NextResponse.json({ images: customGenerationResult.images }); + } catch (customError: unknown) { + const msg = customError instanceof Error ? customError.message : '自定义API请求异常'; + console.error('[Custom API Image Exception]', msg); + return NextResponse.json({ error: `自定义API异常: ${msg}` }, { status: 502 }); + } + } + + // ---- Default mode: use coze-coding-dev-sdk ---- + const customHeaders = HeaderUtils.extractForwardHeaders(request.headers); + const config = new Config(); + const client = new ImageGenerationClient(config, customHeaders); + + let sdkSize: string; + if (size) { + sdkSize = size; + } else if (aspectRatio && resolution) { + // Resolve from aspect ratio + resolution + const sizeMap: Record> = { + '1:1': { '1080P': '1024x1024', '2K': '2048x2048', '4K': '4096x4096' }, + '16:9': { '1080P': '1920x1080', '2K': '2560x1440', '4K': '3840x2160' }, + '9:16': { '1080P': '1080x1920', '2K': '1440x2560', '4K': '2160x3840' }, + '4:3': { '1080P': '1440x1080', '2K': '2560x1920', '4K': '4096x3072' }, + '3:4': { '1080P': '1080x1440', '2K': '1920x2560', '4K': '3072x4096' }, + }; + sdkSize = sizeMap[aspectRatio]?.[resolution] || '1024x1024'; + } else { + sdkSize = quality === '4K' ? '4K' : quality === '1K' ? '1K' : '2K'; + } + + const generateRequest: Record = { + prompt, + model, + size: sdkSize, + watermark: false, + }; + + if (negativePrompt) { + generateRequest.negativePrompt = negativePrompt; + } + + if (image) { + if (image.startsWith('data:')) { + const uploadedUrl = await uploadDataUrlAndGetPublicUrl(image); + if (uploadedUrl) { + generateRequest.image = uploadedUrl; + } else { + console.warn('[Image Gen] Failed to upload reference image, skipping'); + } + } else { + generateRequest.image = image; + } + } + + let response; + try { + const debugRequest = { ...generateRequest }; + if (typeof debugRequest.image === 'string' && debugRequest.image.length > 100) { + debugRequest.image = `${debugRequest.image.substring(0, 60)}... (${debugRequest.image.length} chars)`; + } + console.log('[SDK Image Request]', JSON.stringify(debugRequest)); + response = await client.generate(generateRequest as unknown as Parameters[0]); + } catch (sdkError: unknown) { + const sdkMessage = sdkError instanceof Error ? sdkError.message : '图片生成请求失败'; + let detail = ''; + try { + const errObj = sdkError as { response?: { status?: number; data?: unknown; statusText?: string } }; + if (errObj.response) { + const dataStr = errObj.response.data ? JSON.stringify(errObj.response.data) : ''; + detail = `status=${errObj.response.status} data=${dataStr.substring(0, 500)}`; + } + } catch { /* ignore */ } + console.error('[Image Generation SDK Error]', sdkMessage, detail); + if (image) { + return NextResponse.json({ + error: '图生图生成失败: 内置模型图生图功能暂不可用。建议使用自定义API重试。', + }, { status: 503 }); + } + return NextResponse.json({ error: `图片生成服务暂时不可用: ${sdkMessage}` }, { status: 503 }); + } + + const helper = client.getResponseHelper(response); + if (!helper.success) { + const errorMsg = helper.errorMessages.length > 0 ? helper.errorMessages.join('; ') : '图片生成失败'; + return NextResponse.json({ error: errorMsg }, { status: 500 }); + } + + const images = helper.imageUrls; + if (images.length === 0) { + return NextResponse.json({ error: '图片生成失败,请稍后重试' }, { status: 500 }); + } + + const persistedImages = await persistQualifiedImageUrls(images, 'generated/images', targetSize, 'SDK Image'); + if (persistedImages.images.length === 0) { + return NextResponse.json({ error: lowResolutionError(targetSize, persistedImages.rejected) }, { status: 502 }); + } + return NextResponse.json({ images: persistedImages.images }); + } catch (error: unknown) { + const message = error instanceof Error ? error.message : '图片生成失败'; + console.error('[Image Generation Error]', message, error instanceof Error ? error.stack : ''); + return NextResponse.json({ error: `生成失败: ${message}` }, { status: 500 }); + } +} diff --git a/src/app/api/generate/reverse-prompt/route.ts b/src/app/api/generate/reverse-prompt/route.ts new file mode 100644 index 0000000..489f0bb --- /dev/null +++ b/src/app/api/generate/reverse-prompt/route.ts @@ -0,0 +1,262 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { buildCustomApiHeaders, fetchWithRetry, parseCustomApiError } from '@/lib/custom-api-fetch'; +import { localStorage } from '@/lib/local-storage'; +import { resolveServerApiConfig } from '@/lib/server-api-config'; + +interface CustomApiConfig { + apiUrl: string; + modelName: string; + apiKey: string; + provider?: string; + customApiKeyId?: string; + systemApiId?: string; +} + +const REVERSE_PROMPT_TIMEOUT = 90_000; +const MAX_IMAGE_DATA_URL_LENGTH = 8_000_000; + +interface ReversePromptResult { + generalPrompt: string; + structuredPrompt: string; + negativePrompt: string; + structuredSections?: { + subject?: string; + environment?: string; + visualStyle?: string; + lighting?: string; + composition?: string; + character?: string; + }; +} + +function getDataUrlImage(image: string): { buffer: Buffer; contentType: string; extension: string } | null { + const match = image.match(/^data:(image\/[a-zA-Z0-9.+-]+);base64,([\s\S]+)$/); + if (!match) return null; + const contentType = match[1].toLowerCase(); + const extensionMap: Record = { + 'image/jpeg': 'jpg', + 'image/jpg': 'jpg', + 'image/png': 'png', + 'image/webp': 'webp', + 'image/gif': 'gif', + }; + const extension = extensionMap[contentType] || 'jpg'; + return { + buffer: Buffer.from(match[2], 'base64'), + contentType, + extension, + }; +} + +async function persistReferenceImage(image: string): Promise { + try { + if (image.startsWith('data:image/')) { + const parsed = getDataUrlImage(image); + if (!parsed) return null; + const key = `reverse-prompt/reference-images/${Date.now()}-${Math.random().toString(36).slice(2, 8)}.${parsed.extension}`; + const savedKey = await localStorage.uploadFile({ + fileContent: parsed.buffer, + fileName: key, + contentType: parsed.contentType, + }); + return localStorage.generatePresignedUrl({ key: savedKey, expireTime: 2592000 }); + } + + if (/^https?:\/\/\S+/i.test(image)) { + return localStorage.copyPublicUrlToFolder(image, 'reverse-prompt/reference-images'); + } + } catch (error) { + console.warn('[Reverse Prompt] persist reference image failed:', error); + } + return null; +} + +function parseReversePrompt(content: string): ReversePromptResult { + const trimmed = content.trim(); + const jsonMatch = trimmed.match(/\{[\s\S]*\}/); + if (jsonMatch) { + try { + const parsed = JSON.parse(jsonMatch[0]) as Record; + const generalPrompt = String(parsed.generalPrompt || parsed.general || parsed.prompt || '').trim(); + const structuredPrompt = String( + parsed.structuredPrompt || parsed.structured || parsed.fullPrompt || parsed.pixelPrompt || '', + ).trim(); + const negativePrompt = String(parsed.negativePrompt || parsed.negative || '').trim(); + const rawSections = parsed.structuredSections; + const structuredSections = rawSections && typeof rawSections === 'object' + ? { + subject: String((rawSections as Record).subject || '').trim() || undefined, + environment: String((rawSections as Record).environment || '').trim() || undefined, + visualStyle: String((rawSections as Record).visualStyle || (rawSections as Record).style || '').trim() || undefined, + lighting: String((rawSections as Record).lighting || '').trim() || undefined, + composition: String((rawSections as Record).composition || '').trim() || undefined, + character: String((rawSections as Record).character || (rawSections as Record).person || '').trim() || undefined, + } + : undefined; + if (generalPrompt || structuredPrompt) { + return { + generalPrompt: generalPrompt || structuredPrompt, + structuredPrompt: structuredPrompt || generalPrompt, + negativePrompt, + structuredSections, + }; + } + } catch { + // Fall through to plain text handling. + } + } + + return { + generalPrompt: trimmed, + structuredPrompt: trimmed, + negativePrompt: 'low quality, blurry, distorted anatomy, extra limbs, deformed hands, bad face, inaccurate details, text, watermark, logo, cropped subject, oversaturated, underexposed, overexposed', + }; +} + +function buildInstruction(outputMode: 'general' | 'structured' | 'pixel', language: 'zh' | 'en'): string { + const languageRule = language === 'en' + ? '所有提示词字段必须使用英文输出。' + : '所有提示词字段必须使用中文输出。'; + + if (outputMode === 'pixel') { + return `你是专业的图片反推提示词专家,同时熟悉 image2 / 图生图模型的提示词偏好。请严格观察用户上传的参考图,把图片转换为更适合 image2 参考图生成的高保真复刻提示词。目标不是普通描述,而是让 image2 在使用同一张参考图时尽可能保留人物身份、面部微表情、身高体态、肢体粗细、脸型、手脚细节、长相、身形、身材比例和服装场景。必须描述所有可见细节,不要编造看不见的内容。 + +输出必须只返回 JSON,不要解释,不要 Markdown。JSON 格式只允许包含这两个字段: +{ + "structuredPrompt": "完整提示词。必须是一段可直接粘贴到 image2 正向提示词输入框的复刻型提示词,先写参考图硬约束和保真目标,再写人物身份锚点、面部微表情锚点、身高体态和身体比例锚点、手脚肢体锚点、服装材质锚点、构图光影色彩锚点,最后按画面区域逐块补全细节", + "negativePrompt": "反向提示词。必须列出会破坏参考图一致性的错误,包括不同人物、不同脸型、错误表情、错误身材比例、手脚畸形、肢体粗细变化、胸腰臀比例变化、过度美化、重设计服装、改构图和低质量问题" +} + +image2 复刻级要求: +1. 只输出完整提示词和反向提示词,不要输出通用描述、结构化分项、解释文字或 Markdown。 +2. 完整提示词第一句必须明确:以参考图为硬视觉参考,保留同一个人物/主体,不重新设计,不随机换脸,不改变身材比例,不做额外美化。 +3. 完整提示词必须按 image2 更容易执行的顺序组织:保真目标 -> 主体身份和年龄气质 -> 面部骨相和五官比例 -> 面部微表情和眼神 -> 头发和皮肤纹理 -> 身高体态和身体比例 -> 手部脚部及四肢 -> 服装配饰 -> 构图镜头 -> 光影色彩 -> 背景道具 -> 画面瑕疵纹理。 +4. 人像必须写成“身份锁定”而不是普通外貌描述:脸型轮廓、额头、颧骨、下颌线、下巴、脸宽脸长比例、眉眼间距、眼型、眼睑开合、瞳孔/视线方向、鼻梁鼻尖鼻翼、嘴唇厚薄、嘴部开合、嘴角方向、法令纹/酒窝/痣/斑点/毛孔/皮肤质感、左右不对称特征、真实年龄感和气质都要尽量描述。 +5. 面部微表情必须具体到可见肌肉和局部状态:眉毛高低、眼周紧张或放松、眼神情绪、脸颊受力、嘴角上扬/下压幅度、唇线、牙齿是否可见、下巴和颈部状态;不要只写“微笑”“严肃”等泛词。 +6. 身高、身形、身材和肢体必须用相对比例锁定:人物在画面中占比、头身比、肩宽相对脸宽、颈长、胸廓/腰/髋的可见轮廓、成人非情色语境下的胸部体积和服装包裹形态、手臂粗细、手腕、手掌大小、手指长度和弯曲、腿长、膝盖、小腿脚踝粗细、脚部大小和朝向;不可把身材重塑成更瘦、更高、更丰满或更夸张。 +7. 手部和脚部要单独描述:可见手指数量、手指姿态、关节弯曲、指尖方向、手掌遮挡关系、脚趾/鞋型/脚背/脚踝可见状态;要求保持自然解剖结构,避免多指、少指、粘连、变形和错误遮挡。 +8. 服装、配饰和材质必须写清楚款式、剪裁、贴身/宽松程度、领口袖口下摆、布料厚薄、褶皱走向、拉伸变形、透明度、反光、花纹、缝线、饰品位置和遮挡关系;不要让 image2 自行换装或增强性感化。 +9. 构图必须锁定画面比例、景别、视角、镜头高度、焦段感、主体在画面中的位置、裁切边界、头顶/脚底/四肢与画面边缘的距离、前景中景背景层次、透视和景深。 +10. 颜色和光影必须描述主色、辅色、肤色倾向、衣物色块、背景色块、色温、光源方向、软硬、明暗边界、高光、阴影、反射、环境光、颗粒、压缩痕迹、噪点、模糊和瑕疵。 +11. 按画面区域补充细节时,可以用九宫格、前景/中景/背景、或主体局部区域划分;每个区域都要写清楚位置、可见物体、大小比例、边缘形状、材质纹理、遮挡关系和小瑕疵。 +12. 如果有文字、Logo、图标、符号、品牌标识或界面元素,必须描述可识别的内容、字体观感、颜色、大小、排列方式和具体位置;不可完全识别时只描述可见形态,不要臆造。 +13. negativePrompt 必须优先排除破坏参考图相似度的内容:different person, changed identity, wrong face shape, different expression, changed gaze, altered body proportions, different height impression, thinner arms, thicker legs, changed bust/waist/hip proportion, deformed hands, wrong fingers, deformed feet, over-beautified face, plastic skin, redesigned outfit, different pose, different camera angle, different crop, extra objects, missing details。 +14. 不要写“图片中”“这张图”等元描述,直接写可用于生成模型的提示词。 +15. ${languageRule}`; + } + + const preferred = outputMode === 'structured' ? '结构化提示词' : '通用描述提示词'; + + return `你是专业的图片反推提示词专家。请严格观察用户上传的参考图,把图片转换为可直接用于 AI 文生图模型的提示词,目标是让用户把提示词交给文生图模型后尽可能还原原图。必须描述所有可见细节,不要编造看不见的内容。 + +输出必须只返回 JSON,不要解释,不要 Markdown。JSON 格式: +{ + "generalPrompt": "通用描述提示词,使用连贯自然语言完整描述主体、环境、画面、风格、光照、构图、色彩、材质、镜头感和所有关键细节", + "structuredPrompt": "结构化提示词,分段包含:主题、环境、视觉风格、光照、构图;如果有人物,还必须包含人物身材比例、面部细节、面部微表情、嘴部和嘴角细节、眼神细节、发型、配饰、衣物、衣物质感、姿态、身体朝向、画面比例等", + "structuredSections": { + "subject": "主题/主体,描述主体身份、数量、动作、核心物体、关键视觉特征,以及主体与画面其他元素的关系", + "environment": "环境,描述空间、背景、道具、天气、时代、场景关系、前景/中景/远景元素", + "visualStyle": "视觉风格,描述画风、质感、色彩、镜头语言、渲染/摄影特征、清晰度、颗粒感、景深和后期效果", + "lighting": "光照,描述光源方向、软硬、色温、明暗关系、反射、高光、阴影、轮廓光和环境光", + "composition": "构图,描述景别、视角、主体位置、画面比例、裁切、留白、透视、镜头焦段感和画面重心", + "character": "如果有人物,描述身材比例、体态、肩颈腰腿比例、脸型、肤色、眉眼鼻唇、面部微表情、嘴部形态、嘴角方向、眼神方向和情绪、发型、头饰、配饰、衣物款式、衣物材质、褶皱、透明度、姿态、手部细节和身体朝向;无人物则为空字符串" + }, + "negativePrompt": "反向提示词,列出需要避免的低质量、错误结构、畸形、模糊、文字水印、不符合原图的元素" +} + +细节要求: +1. ${preferred}要更适合当前选择的输出形式,但 generalPrompt 和 structuredPrompt 两个字段都必须生成。 +2. 人物图片必须尽可能细致描述人物整体每一个可见细节:身材比例、体态、脸型、肤质、五官比例、眉毛、眼睛形状、瞳孔方向、眼神情绪、鼻梁、嘴唇厚薄、嘴部开合、嘴角上扬或下压、面部微表情、发型、发丝状态、配饰、服装款式、衣物材质、纹理、褶皱、透明度、姿态、手指、肢体动作和身体朝向。 +3. 如果参考图包含文字、Logo、图标、符号、品牌标识或界面元素,必须仔细描述可识别的文字内容、字体观感、颜色、大小、排列方式,以及它们在图片中的具体位置;如果文字不可完全识别,要说明可见形态,不要臆造。 +4. 产品、建筑、场景图片必须具体描述形状、材质、颜色、空间关系、背景、光照、反射、纹理、磨损、边缘轮廓和比例关系。 +5. 需要描述画面中的小物件、局部装饰、材质反光、阴影、高光、背景细节和遮挡关系,避免只写大概风格。 +6. 不要写“图片中”“这张图”等元描述,直接写可用于生成模型的提示词。 +7. ${languageRule}`; +} + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const image = typeof body.image === 'string' ? body.image : ''; + const outputMode = body.outputMode === 'general' + ? 'general' + : body.outputMode === 'pixel' + ? 'pixel' + : 'structured'; + const language = body.language === 'en' ? 'en' : 'zh'; + const customApiConfig = body.customApiConfig as CustomApiConfig | undefined; + + const isDataImage = image.startsWith('data:image/'); + const isHttpImage = /^https?:\/\/\S+/i.test(image); + if (!image || (!isDataImage && !isHttpImage)) { + return NextResponse.json({ error: '请上传需要反推提示词的图片' }, { status: 400 }); + } + if (isDataImage && image.length > MAX_IMAGE_DATA_URL_LENGTH) { + return NextResponse.json({ error: '图片过大,请压缩后再上传' }, { status: 400 }); + } + const resolvedCustomApiConfig = await resolveServerApiConfig(request, customApiConfig); + if (!resolvedCustomApiConfig?.apiKey || !resolvedCustomApiConfig.apiUrl || !resolvedCustomApiConfig.modelName) { + return NextResponse.json({ error: '未配置可用的多模态模型,请先在 API 设置中添加支持图片理解的多模态模型' }, { status: 400 }); + } + const resolvedApiKey = resolvedCustomApiConfig.apiKey; + const persistedReferenceImage = await persistReferenceImage(image); + + const chatBody = { + model: resolvedCustomApiConfig.modelName, + stream: false, + messages: [ + { role: 'system', content: buildInstruction(outputMode, language) }, + { + role: 'user', + content: [ + { + type: 'text', + text: '请根据这张参考图反推出文生图提示词,尽可能完整还原画面细节,并严格按 JSON 格式返回。', + }, + { + type: 'image_url', + image_url: { url: image }, + }, + ], + }, + ], + }; + + const response = await fetchWithRetry( + resolvedCustomApiConfig.apiUrl, + { + method: 'POST', + headers: buildCustomApiHeaders(resolvedApiKey), + body: JSON.stringify(chatBody), + }, + REVERSE_PROMPT_TIMEOUT, + 1, + ); + + if (!response.ok) { + const errorText = await response.text(); + return NextResponse.json( + { error: parseCustomApiError(response.status, errorText) }, + { status: response.status >= 500 ? 502 : response.status }, + ); + } + + const data = await response.json(); + const choices = (data as Record).choices as Array> | undefined; + const message = choices?.[0]?.message as Record | undefined; + const content = message?.content; + + if (typeof content !== 'string' || !content.trim()) { + return NextResponse.json({ error: '模型未返回有效的反推提示词' }, { status: 502 }); + } + + return NextResponse.json({ + ...parseReversePrompt(content), + referenceImage: persistedReferenceImage, + }); + } catch (error: unknown) { + const message = error instanceof Error ? error.message : '图片反推提示词失败'; + console.error('[Reverse Prompt Error]', message); + return NextResponse.json({ error: message }, { status: 500 }); + } +} diff --git a/src/app/api/generate/suggest-prompt/route.ts b/src/app/api/generate/suggest-prompt/route.ts new file mode 100644 index 0000000..e5aa79a --- /dev/null +++ b/src/app/api/generate/suggest-prompt/route.ts @@ -0,0 +1,151 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { buildCustomApiHeaders, fetchWithRetry, parseCustomApiError } from '@/lib/custom-api-fetch'; +import { resolveServerApiConfig } from '@/lib/server-api-config'; + +interface CustomApiConfig { + apiUrl: string; + modelName: string; + apiKey: string; + provider: string; + customApiKeyId?: string; + systemApiId?: string; +} + +const SUGGEST_TIMEOUT = 60_000; + +function parseOptimizedPrompt(content: string): { prompt: string; negativePrompt?: string } { + const trimmed = content.trim(); + const jsonMatch = trimmed.match(/\{[\s\S]*\}/); + if (jsonMatch) { + try { + const parsed = JSON.parse(jsonMatch[0]) as Record; + const prompt = typeof parsed.prompt === 'string' + ? parsed.prompt + : typeof parsed.positivePrompt === 'string' + ? parsed.positivePrompt + : typeof parsed.positive === 'string' + ? parsed.positive + : ''; + const negativePrompt = typeof parsed.negativePrompt === 'string' + ? parsed.negativePrompt + : typeof parsed.negative === 'string' + ? parsed.negative + : ''; + if (prompt.trim()) { + return { + prompt: prompt.trim(), + negativePrompt: negativePrompt.trim() || undefined, + }; + } + } catch { + // Fall through to labeled text parsing. + } + } + + const positiveMatch = trimmed.match(/(?:正向提示词|优化提示词|正面提示词|Positive Prompt|Prompt)\s*[::]\s*([\s\S]*?)(?=(?:负向提示词|负面提示词|反向提示词|Negative Prompt|Negative)\s*[::]|$)/i); + const negativeMatch = trimmed.match(/(?:负向提示词|负面提示词|反向提示词|Negative Prompt|Negative)\s*[::]\s*([\s\S]*)$/i); + const prompt = (positiveMatch?.[1] || trimmed).trim(); + const negativePrompt = negativeMatch?.[1]?.trim(); + + return { + prompt, + negativePrompt: negativePrompt || undefined, + }; +} + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { + prompt, + customApiConfig, + systemPrefix, + } = body as { + prompt?: string; + modelName?: string; + customApiConfig?: CustomApiConfig; + systemPrefix?: string; + }; + + if (!prompt) { + return NextResponse.json({ error: '请提供创作描述' }, { status: 400 }); + } + + const resolvedCustomApiConfig = await resolveServerApiConfig(request, customApiConfig); + + // Use custom/system multimodal model API if provided + if (resolvedCustomApiConfig && resolvedCustomApiConfig.apiKey) { + const resolvedApiKey = resolvedCustomApiConfig.apiKey; + const endpoint = resolvedCustomApiConfig.apiUrl; + if (!endpoint) { + return NextResponse.json({ error: '多模态模型API未配置请求地址' }, { status: 400 }); + } + if (!resolvedCustomApiConfig.modelName) { + return NextResponse.json({ error: '多模态模型API未配置模型名称' }, { status: 400 }); + } + + // Build system message with optional prefix + const baseInstruction = systemPrefix + ? `${systemPrefix}。` + : '你是一个专业的AI绘图/视频提示词优化专家。'; + const systemMessage = `${baseInstruction}请基于用户描述同时生成正向提示词和反向/负面提示词。正向提示词要更详细、更有画面感、更适合生成模型;负面提示词要列出应避免的低质量、畸形、错误结构、画面瑕疵、文字水印等内容。只返回JSON,不要解释,格式为:{"prompt":"优化后的正向提示词","negativePrompt":"优化后的负面提示词"}`; + + const headers = buildCustomApiHeaders(resolvedApiKey); + const chatBody = { + model: resolvedCustomApiConfig.modelName, + stream: false, + messages: [ + { role: 'system', content: systemMessage }, + { role: 'user', content: prompt }, + ], + }; + + console.log('[Suggest Prompt] Using custom multimodal model:', resolvedCustomApiConfig.modelName, '| prefix:', systemPrefix || 'default'); + + try { + const response = await fetchWithRetry( + endpoint, + { + method: 'POST', + headers, + body: JSON.stringify(chatBody), + }, + SUGGEST_TIMEOUT, + 1, + ); + + if (!response.ok) { + const errorText = await response.text(); + console.error('[Suggest Prompt] API error:', response.status, errorText.slice(0, 200)); + return NextResponse.json( + { error: parseCustomApiError(response.status, errorText) }, + { status: response.status >= 500 ? 502 : response.status } + ); + } + + const data = await response.json(); + const choices = (data as Record).choices as Array> | undefined; + if (choices && choices.length > 0) { + const message = choices[0].message as Record; + const content = message?.content; + if (typeof content === 'string' && content.trim()) { + return NextResponse.json(parseOptimizedPrompt(content)); + } + } + + return NextResponse.json({ error: '多模态模型未返回有效内容' }, { status: 502 }); + } catch (fetchError: unknown) { + const msg = fetchError instanceof Error ? fetchError.message : '请求失败'; + console.error('[Suggest Prompt] Fetch error:', msg); + return NextResponse.json({ error: `提示词优化失败: ${msg}` }, { status: 502 }); + } + } + + // No multimodal model configured + return NextResponse.json({ error: '未配置多模态模型,请在API设置中添加多模态模型' }, { status: 400 }); + } catch (error: unknown) { + const message = error instanceof Error ? error.message : '提示词优化失败'; + console.error('[Suggest Prompt Error]', message); + return NextResponse.json({ error: message }, { status: 500 }); + } +} diff --git a/src/app/api/generate/video/route.ts b/src/app/api/generate/video/route.ts new file mode 100644 index 0000000..0be4c78 --- /dev/null +++ b/src/app/api/generate/video/route.ts @@ -0,0 +1,651 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { VideoGenerationClient, Config, HeaderUtils } from 'coze-coding-dev-sdk'; +import { buildCustomApiHeaders, fetchWithRetry, parseCustomApiError, parseCustomApiJsonWithProgress } from '@/lib/custom-api-fetch'; +import { getAspectRatioPromptHint } from '@/lib/model-config'; +import { localStorage } from '@/lib/local-storage'; +import { isTrustedInternalGenerationRequest, isUuid, resolveServerApiConfig } from '@/lib/server-api-config'; +import { updateGenerationJobProgress } from '@/lib/generation-job-estimates'; +import { + compressImageBufferForUpstream, + dataUrlToImageBuffer, + imageBufferToDataUrl, +} from '@/lib/server-image-compression'; + +interface CustomApiConfig { + apiUrl: string; + modelName: string; + apiKey: string; + provider: string; + customApiKeyId?: string; + systemApiId?: string; +} + +const GENERATION_TIMEOUT = 180_000; +const MAX_UPSTREAM_REFERENCE_IMAGE_BYTES = Number(process.env.MAX_UPSTREAM_REFERENCE_IMAGE_BYTES || 700 * 1024); + +export const runtime = 'nodejs'; + +/** + * Upload a media data URL to S3 storage and return a presigned URL. + * Includes a 45s timeout to prevent blocking the response. + */ +async function persistMediaToStorage(dataUrl: string, prefix: string): Promise { + if (!dataUrl.startsWith('data:')) return dataUrl; + + try { + const match = dataUrl.match(/^data:((?:image|video)\/[^;]+);base64,(.+)$/); + if (!match) return dataUrl; + const [, mimeType, base64Data] = match; + const ext = mimeType.split('/')[1] || 'mp4'; + const buffer = Buffer.from(base64Data, 'base64'); + const fileName = `${prefix}/${Date.now()}-${Math.random().toString(36).slice(2, 8)}.${ext}`; + + const fileKey = await withTimeout( + localStorage.uploadFile({ fileContent: buffer, fileName, contentType: mimeType }), + 45_000, + 'Local uploadFile (video)', + ); + + if (!fileKey) { + console.error('[Persist Video Media] uploadFile returned empty key'); + return dataUrl; + } + + const presignedUrl = await withTimeout( + localStorage.generatePresignedUrl({ key: fileKey, expireTime: 2592000 }), + 10_000, + 'Local generatePresignedUrl (video)', + ); + + if (presignedUrl) { + console.log('[Persist Video Media] Success, key:', fileKey, 'size:', buffer.length, 'bytes'); + return presignedUrl; + } + + return dataUrl; + } catch (err) { + console.error('[Persist Video Media Error]', err instanceof Error ? err.message : err); + return dataUrl; + } +} + +async function persistRemoteUrlToStorage(url: string, prefix: string): Promise { + if (!url.startsWith('http')) return url; + + try { + const fileKey = await withTimeout( + localStorage.uploadFromUrl({ url, timeout: 60000 }), + 60_000, + 'Local uploadFromUrl (video)', + ); + if (!fileKey) return url; + + const presignedUrl = await withTimeout( + localStorage.generatePresignedUrl({ key: fileKey, expireTime: 2592000 }), + 10_000, + 'Local generatePresignedUrl (video remote)', + ); + + if (presignedUrl) { + console.log('[Persist Remote Video URL] Success, key:', fileKey); + return presignedUrl; + } + return url; + } catch (err) { + console.warn('[Persist Remote Video URL] Failed, using original URL:', err instanceof Error ? err.message : err); + return url; + } +} + +/** Helper: wrap a promise with a timeout that rejects with a descriptive message */ +function withTimeout(promise: Promise, ms: number, label: string): Promise { + return new Promise((resolve, reject) => { + const timer = setTimeout(() => reject(new Error(`${label} timed out after ${ms}ms`)), ms); + promise.then( + (v) => { clearTimeout(timer); resolve(v); }, + (e) => { clearTimeout(timer); reject(e); }, + ); + }); +} + +async function persistAllMediaUrls(urls: string[], prefix: string): Promise { + const MAX_DATA_URL_SIZE = 10 * 1024 * 1024; // 10MB limit for video data URLs + const results = await Promise.all( + urls.map(async (url) => { + try { + if (url.startsWith('data:')) { + const result = await persistMediaToStorage(url, prefix); + if (result.startsWith('data:') && result.length > MAX_DATA_URL_SIZE) { + console.warn('[Persist Video] Data URL too large (' + Math.round(result.length / 1024 / 1024) + 'MB), skipping'); + return null; + } + return result; + } + if (url.startsWith('http')) return persistRemoteUrlToStorage(url, prefix); + return url; + } catch (err) { + console.error('[persistAllMediaUrls video] Error:', err instanceof Error ? err.message : err); + if (url.startsWith('data:') && url.length > MAX_DATA_URL_SIZE) return null; + return url; + } + }), + ); + return results.filter((u): u is string => u !== null); +} + +async function uploadDataUrlAndGetPublicUrl(dataUrl: string): Promise { + try { + const match = dataUrl.match(/^data:(image\/[^;]+);base64,(.+)$/); + if (!match) return null; + const [, mimeType, base64Data] = match; + const ext = mimeType.split('/')[1] || 'png'; + const buffer = Buffer.from(base64Data, 'base64'); + const fileName = `img2vid-ref/${Date.now()}-${Math.random().toString(36).slice(2, 8)}.${ext}`; + + const fileKey = await localStorage.uploadFile({ fileContent: buffer, fileName, contentType: mimeType }); + if (!fileKey) return null; + + const presignedUrl = await localStorage.generatePresignedUrl({ key: fileKey, expireTime: 3600 }); + console.log('[Upload Ref Video Image] Success, key:', fileKey); + return presignedUrl || null; + } catch (err) { + console.error('[Upload Ref Video Image Error]', err instanceof Error ? err.message : err); + return null; + } +} + +async function toPublicImageUrl(image: string): Promise { + if (!image.startsWith('data:')) return image; + const uploadedUrl = await uploadDataUrlAndGetPublicUrl(image); + return uploadedUrl || image; +} + +async function normalizeReferenceImageForUpstream(image: string): Promise { + const parsedImage = dataUrlToImageBuffer(image); + if (!parsedImage) return image; + + try { + const compressed = await compressImageBufferForUpstream(parsedImage, { + maxBytes: MAX_UPSTREAM_REFERENCE_IMAGE_BYTES, + }); + if (compressed.changed) { + console.log('[Custom API img2vid] Compressed reference image:', compressed.originalBytes, '→', compressed.buffer.length); + } + return imageBufferToDataUrl({ buffer: compressed.buffer, mimeType: compressed.mimeType }); + } catch (err) { + console.warn('[Custom API img2vid] Reference image compression failed, using original:', err instanceof Error ? err.message : err); + return image; + } +} + +function normalizeReferenceImages(image?: string, images?: unknown, extraImages?: unknown): string[] { + const refs: string[] = []; + if (image) refs.push(image); + if (Array.isArray(images)) { + for (const item of images) { + if (typeof item === 'string' && item.trim()) refs.push(item); + } + } + if (Array.isArray(extraImages)) { + for (const item of extraImages) { + if (typeof item === 'string' && item.trim()) refs.push(item); + } + } + return Array.from(new Set(refs)); +} + +function uniqueStrings(values: string[]): string[] { + return Array.from(new Set(values)); +} + +function deriveChatCompletionsUrl(originalUrl: string): string { + if (originalUrl.includes('/chat/completions')) return originalUrl; + return originalUrl + .replace(/\/(videos|images)\/(generations|edits).*/i, '/chat/completions') + .replace(/\/+$/, ''); +} + +function deriveImagesEditsUrl(originalUrl: string): string { + if (originalUrl.includes('/images/edits')) return originalUrl; + return originalUrl + .replace(/\/(videos|images)\/generations.*/i, '/images/edits') + .replace(/\/+$/, ''); +} + +function extractVideosFromChatResponse(data: Record): string[] { + const videos: string[] = []; + const choices = data.choices as Array> | undefined; + if (Array.isArray(choices)) { + for (const choice of choices) { + const message = choice.message as Record | undefined; + if (!message) continue; + const content = message.content; + if (typeof content === 'string') { + if (content.startsWith('http') || content.startsWith('data:video/')) videos.push(content); + const urlMatch = content.match(/(https?:\/\/[^\s"']+\.(mp4|mov|webm)[^\s"']*)/i); + if (urlMatch) videos.push(urlMatch[1]); + } else if (Array.isArray(content)) { + for (const item of content as Array>) { + if (item.type === 'video_url' && item.video_url) { + const url = (item.video_url as Record).url; + if (typeof url === 'string') videos.push(url); + } + if (item.type === 'text' && typeof item.text === 'string') { + const text = item.text as string; + if (text.startsWith('http') || text.startsWith('data:video/')) videos.push(text); + const urlMatch = text.match(/(https?:\/\/[^\s"']+\.(mp4|mov|webm)[^\s"']*)/i); + if (urlMatch) videos.push(urlMatch[1]); + } + } + } + } + } + return videos; +} + +function extractVideosFromGenerationsResponse(data: Record): string[] { + const videos: string[] = []; + if (Array.isArray(data.data)) { + for (const item of data.data as Array>) { + if (typeof item === 'string') { videos.push(item); continue; } + if (item.url && typeof item.url === 'string') videos.push(item.url); + if (item.video_url && typeof item.video_url === 'string') videos.push(item.video_url); + if (item.b64_json && typeof item.b64_json === 'string') { + videos.push(`data:video/mp4;base64,${item.b64_json}`); + } + } + } else if (typeof data.url === 'string') { + videos.push(data.url); + } else if (typeof data.video_url === 'string') { + videos.push(data.video_url); + } + return videos; +} + +async function customApiImageToVideo( + customApiConfig: CustomApiConfig, + prompt: string | undefined, + negativePrompt: string | undefined, + image: string, + referenceImages: string[] = [], + aspectRatio?: string, + duration?: number, + fps?: number, + onProgress?: (progress: Record) => void | Promise, +): Promise { + const endpoint = customApiConfig.apiUrl; + if (!endpoint) { + return NextResponse.json({ error: '自定义API未配置请求地址' }, { status: 400 }); + } + if (!customApiConfig.modelName) { + return NextResponse.json({ error: '自定义API未配置模型名称' }, { status: 400 }); + } + + const normalizedImage = await normalizeReferenceImageForUpstream(image); + const normalizedReferenceImages = uniqueStrings(await Promise.all( + normalizeReferenceImages(normalizedImage, referenceImages).map(normalizeReferenceImageForUpstream), + )); + + // Prepare image buffer for FormData upload + let imageBuffer: Buffer | null = null; + let imageMimeType = 'image/png'; + if (normalizedImage.startsWith('data:')) { + const parsedImage = dataUrlToImageBuffer(normalizedImage); + if (parsedImage) { + imageMimeType = parsedImage.mimeType; + imageBuffer = parsedImage.buffer; + } + } + + // Upload reference image to S3 + const imageUrl = await toPublicImageUrl(normalizedImage); + const imageUrls = await Promise.all(normalizedReferenceImages.map(toPublicImageUrl)); + + let promptText = prompt || '根据参考图生成视频'; + if (negativePrompt) promptText += `\n\n负面提示词: ${negativePrompt}`; + // Augment prompt with aspect ratio hint + if (aspectRatio) { + const hint = getAspectRatioPromptHint(aspectRatio); + if (hint) promptText += `\n\n[${hint}]`; + } + + const headers = buildCustomApiHeaders(customApiConfig.apiKey); + + // Get raw base64 for strategies that need it + let rawBase64 = normalizedImage; + if (normalizedImage.startsWith('data:')) { + const commaIndex = normalizedImage.indexOf(','); + if (commaIndex !== -1) rawBase64 = normalizedImage.substring(commaIndex + 1); + } + + const strategyResults: string[] = []; + let firstUpstreamError: { error: string; status: number } | null = null; + + // --- Strategy 1: images/edits with multipart/form-data --- + // Same as img2img - Cherry Studio uses multipart/form-data for image-based requests + if (imageBuffer) { + const editsUrl = deriveImagesEditsUrl(endpoint); + console.log('[Custom API img2vid → 策略1: images/edits (FormData)] URL:', editsUrl, '| model:', customApiConfig.modelName); + try { + const boundary = `----FormBoundary${Date.now()}${Math.random().toString(36).slice(2)}`; + const parts: Buffer[] = []; + + const textFields: Record = { + model: customApiConfig.modelName, + prompt: promptText, + }; + if (aspectRatio) textFields.aspect_ratio = aspectRatio; + if (duration) textFields.duration = String(duration); + if (fps) textFields.fps = String(fps); + + for (const [key, value] of Object.entries(textFields)) { + parts.push(Buffer.from( + `--${boundary}\r\nContent-Disposition: form-data; name="${key}"\r\n\r\n${value}\r\n` + )); + } + + const ext = imageMimeType.split('/')[1] || 'png'; + const imageBuffers: Array<{ mimeType: string; buffer: Buffer }> = []; + for (const ref of normalizedReferenceImages) { + if (!ref.startsWith('data:')) continue; + const parsedImage = dataUrlToImageBuffer(ref); + if (!parsedImage) continue; + imageBuffers.push(parsedImage); + } + + imageBuffers.forEach((item, index) => { + const fieldName = index === 0 ? 'image' : 'images[]'; + const itemExt = item.mimeType.split('/')[1] || ext; + parts.push(Buffer.from( + `--${boundary}\r\nContent-Disposition: form-data; name="${fieldName}"; filename="image-${index + 1}.${itemExt}"\r\nContent-Type: ${item.mimeType}\r\n\r\n` + )); + parts.push(item.buffer); + parts.push(Buffer.from(`\r\n`)); + }); + parts.push(Buffer.from(`--${boundary}--\r\n`)); + + const bodyBuffer = Buffer.concat(parts); + + const editsResponse = await fetchWithRetry( + editsUrl, + { + method: 'POST', + headers: { + 'Authorization': `Bearer ${customApiConfig.apiKey}`, + 'Content-Type': `multipart/form-data; boundary=${boundary}`, + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36', + }, + body: bodyBuffer, + }, + GENERATION_TIMEOUT, + 1, + ); + if (editsResponse.ok) { + const editsData = await parseCustomApiJsonWithProgress(editsResponse, onProgress); + let videos = extractVideosFromGenerationsResponse(editsData as Record); + if (videos.length === 0) videos = extractVideosFromChatResponse(editsData as Record); + if (videos.length > 0) { + const persistedVideos = await persistAllMediaUrls(videos, 'generated/videos'); + return NextResponse.json({ videos: persistedVideos }); + } + strategyResults.push('策略1(images/edits FormData): 响应中无视频数据'); + } else { + const errorText = await editsResponse.text(); + const parsedError = parseCustomApiError(editsResponse.status, errorText); + if (!firstUpstreamError) firstUpstreamError = { error: parsedError, status: editsResponse.status }; + strategyResults.push(parsedError); + } + } catch (err) { + strategyResults.push(`策略1(images/edits FormData): ${err instanceof Error ? err.message : '异常'}`); + } + } + + // --- Strategy 2: chat/completions with image_url --- + const chatUrl = deriveChatCompletionsUrl(endpoint); + const chatBody: Record = { + model: customApiConfig.modelName, + stream: false, + messages: [ + { + role: 'user', + content: [ + ...imageUrls.map(url => ({ type: 'image_url', image_url: { url } })), + { type: 'text', text: promptText }, + ], + }, + ], + }; + if (aspectRatio) chatBody.aspect_ratio = aspectRatio; + if (duration) chatBody.duration = duration; + if (fps) chatBody.fps = fps; + + console.log('[Custom API img2vid → 策略2: chat/completions] URL:', chatUrl, '| model:', customApiConfig.modelName); + try { + const chatResponse = await fetchWithRetry(chatUrl, { method: 'POST', headers, body: JSON.stringify(chatBody) }, GENERATION_TIMEOUT, 1); + if (chatResponse.ok) { + const chatData = await parseCustomApiJsonWithProgress(chatResponse, onProgress); + let videos = extractVideosFromChatResponse(chatData as Record); + if (videos.length === 0) videos = extractVideosFromGenerationsResponse(chatData as Record); + if (videos.length > 0) { + const persistedVideos = await persistAllMediaUrls(videos, 'generated/videos'); + return NextResponse.json({ videos: persistedVideos }); + } + } else { + const errorText = await chatResponse.text(); + const parsedError = parseCustomApiError(chatResponse.status, errorText); + if (!firstUpstreamError) firstUpstreamError = { error: parsedError, status: chatResponse.status }; + strategyResults.push(parsedError); + } + } catch (err) { + strategyResults.push(`策略2(chat/completions): ${err instanceof Error ? err.message : '异常'}`); + } + + // --- Strategy 3: images/generations with init_image --- + const imgBody: Record = { + model: customApiConfig.modelName, + prompt: promptText, + n: 1, + size: '1024x1024', + response_format: 'b64_json', + init_image: rawBase64, + images: imageUrls, + }; + if (aspectRatio) imgBody.aspect_ratio = aspectRatio; + if (duration) imgBody.duration = duration; + if (fps) imgBody.fps = fps; + + console.log('[Custom API img2vid → 策略3: images/generations] URL:', endpoint, '| model:', customApiConfig.modelName); + try { + const imgResponse = await fetchWithRetry(endpoint, { method: 'POST', headers, body: JSON.stringify(imgBody) }, GENERATION_TIMEOUT, 1); + if (!imgResponse.ok) { + const errorText = await imgResponse.text(); + const parsedError = parseCustomApiError(imgResponse.status, errorText); + if (!firstUpstreamError) firstUpstreamError = { error: parsedError, status: imgResponse.status }; + strategyResults.push(parsedError); + } else { + const imgData = await parseCustomApiJsonWithProgress(imgResponse, onProgress); + const videos = extractVideosFromGenerationsResponse(imgData as Record); + if (videos.length > 0) { + const persistedVideos = await persistAllMediaUrls(videos, 'generated/videos'); + return NextResponse.json({ videos: persistedVideos }); + } + strategyResults.push('策略3(images/generations): 响应中无视频数据'); + } + } catch (err) { + strategyResults.push(`策略3(images/generations): ${err instanceof Error ? err.message : '异常'}`); + } + + return NextResponse.json( + { + error: firstUpstreamError?.error || strategyResults.find(Boolean) || '图生视频失败', + }, + { status: firstUpstreamError && firstUpstreamError.status < 500 ? firstUpstreamError.status : 502 } + ); +} + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { + prompt, + negativePrompt, + model = 'doubao-seedance-1-5-pro-251215', + aspectRatio = '16:9', + duration = 5, + fps = 30, + image, + images, + extraImages, + customApiConfig, + } = body as { + prompt?: string; + negativePrompt?: string; + model?: string; + aspectRatio?: string; + duration?: number; + fps?: number; + image?: string; + images?: string[]; + extraImages?: string[]; + customApiConfig?: CustomApiConfig; + }; + const referenceImages = normalizeReferenceImages(image, images, extraImages); + + if (!prompt && referenceImages.length === 0) { + return NextResponse.json({ error: '请提供视频描述或上传图片' }, { status: 400 }); + } + const trustedInternalRequest = isTrustedInternalGenerationRequest(request); + const trustedUserId = trustedInternalRequest + ? request.headers.get('x-miaojing-generation-user-id') + : null; + const generationJobId = trustedInternalRequest + ? request.headers.get('x-miaojing-generation-job-id') + : null; + const resolvedCustomApiConfig = await resolveServerApiConfig( + request, + customApiConfig, + isUuid(trustedUserId) ? trustedUserId : null, + ); + const handleUpstreamProgress = (progress: Record) => updateGenerationJobProgress( + isUuid(generationJobId) ? generationJobId : null, + progress, + ); + + // ---- Custom API mode ---- + if (resolvedCustomApiConfig && resolvedCustomApiConfig.apiKey) { + const resolvedApiKey = resolvedCustomApiConfig.apiKey; + try { + if (referenceImages.length > 0) { + return await customApiImageToVideo( + resolvedCustomApiConfig as CustomApiConfig, + prompt, + negativePrompt, + referenceImages[0], + referenceImages, + aspectRatio, + duration, + fps, + handleUpstreamProgress, + ); + } + + // Text-to-video + const endpoint = resolvedCustomApiConfig.apiUrl; + if (!endpoint) return NextResponse.json({ error: '自定义API未配置请求地址' }, { status: 400 }); + if (!resolvedCustomApiConfig.modelName) return NextResponse.json({ error: '自定义API未配置模型名称' }, { status: 400 }); + + // Augment prompt with aspect ratio hint as fallback + const ratioHint = aspectRatio ? getAspectRatioPromptHint(aspectRatio) : ''; + const augmentedPrompt = ratioHint ? `${prompt || ''}\n\n[${ratioHint}]` : (prompt || ''); + + const requestBody: Record = { + model: resolvedCustomApiConfig.modelName, + prompt: augmentedPrompt, + n: 1, + size: '1024x1024', + response_format: 'b64_json', + }; + if (negativePrompt) requestBody.negative_prompt = negativePrompt; + // Pass creation parameters for APIs that support them + if (aspectRatio) requestBody.aspect_ratio = aspectRatio; + if (duration) requestBody.duration = duration; + if (fps) requestBody.fps = fps; + + console.log('[Custom API Video] Text-to-video, sending to:', endpoint, '| model:', requestBody.model); + + let customResponse: Response; + try { + customResponse = await fetchWithRetry( + endpoint, + { method: 'POST', headers: buildCustomApiHeaders(resolvedApiKey), body: JSON.stringify(requestBody) }, + GENERATION_TIMEOUT, 1, + ); + } catch (fetchError: unknown) { + if (fetchError instanceof DOMException && fetchError.name === 'AbortError') { + return NextResponse.json({ error: '自定义API请求超时(180秒)' }, { status: 504 }); + } + const msg = fetchError instanceof Error ? fetchError.message : '请求失败'; + return NextResponse.json({ error: `自定义API网络错误: ${msg}` }, { status: 502 }); + } + + if (!customResponse.ok) { + const errorText = await customResponse.text(); + return NextResponse.json( + { error: parseCustomApiError(customResponse.status, errorText) }, + { status: customResponse.status >= 500 ? 502 : customResponse.status } + ); + } + + const customData = await parseCustomApiJsonWithProgress(customResponse, handleUpstreamProgress); + const videos = extractVideosFromGenerationsResponse(customData as Record); + if (videos.length === 0) { + return NextResponse.json({ error: '自定义API未返回有效视频数据', raw: customData }, { status: 502 }); + } + // Persist all data URLs and remote URLs to S3 + const persistedVideos = await persistAllMediaUrls(videos, 'generated/videos'); + return NextResponse.json({ videos: persistedVideos }); + } catch (customError: unknown) { + const msg = customError instanceof Error ? customError.message : '自定义API请求异常'; + console.error('[Custom API Video Exception]', msg); + return NextResponse.json({ error: `自定义API异常: ${msg}` }, { status: 502 }); + } + } + + // ---- Default mode: use coze-coding-dev-sdk ---- + const customHeaders = HeaderUtils.extractForwardHeaders(request.headers); + const config = new Config(); + const client = new VideoGenerationClient(config, customHeaders); + + const contentItems: Array<{ type: string; text?: string; image_url?: { url: string }; role?: string }> = []; + referenceImages.forEach((url, index) => { + contentItems.push({ type: 'image_url', image_url: { url }, role: index === 0 ? 'first_frame' : 'reference' }); + }); + if (prompt) { + contentItems.push({ type: 'text', text: prompt }); + } + + const ratioMap: Record = { + '16:9': '16:9', '9:16': '9:16', '1:1': '1:1', '4:3': '4:3', '3:4': '3:4', + }; + + const response = await client.videoGeneration(contentItems as Parameters[0], { + model, + duration: Math.min(Math.max(duration, 4), 12), + ratio: ratioMap[aspectRatio] || '16:9', + resolution: '720p', + generateAudio: true, + }); + + const videos: string[] = []; + if (response.videoUrl) videos.push(response.videoUrl); + if (videos.length === 0) return NextResponse.json({ error: '视频生成失败,请稍后重试' }, { status: 500 }); + + // Persist SDK video URLs to S3 for reliable browser access + const persistedVideos = await persistAllMediaUrls(videos, 'generated/videos'); + return NextResponse.json({ videos: persistedVideos }); + } catch (error: unknown) { + const message = error instanceof Error ? error.message : '视频生成失败'; + console.error('[Video Generation Error]', message); + return NextResponse.json({ error: message }, { status: 500 }); + } +} diff --git a/src/app/api/generation-jobs/[id]/route.ts b/src/app/api/generation-jobs/[id]/route.ts new file mode 100644 index 0000000..14b63c7 --- /dev/null +++ b/src/app/api/generation-jobs/[id]/route.ts @@ -0,0 +1,110 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { getAuthenticatedUser } from '@/lib/session-auth'; +import { + buildInitialGenerationProgress, + ensureGenerationJobRuntimeSchema, + getGenerationJobEstimate, +} from '@/lib/generation-job-estimates'; + +const UUID_REGEX = + /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + +export async function GET( + request: NextRequest, + context: { params: Promise<{ id: string }> }, +) { + try { + const user = await getAuthenticatedUser(request); + if (!user) { + return NextResponse.json({ error: '请先登录' }, { status: 401 }); + } + + const { id } = await context.params; + if (!UUID_REGEX.test(id)) { + return NextResponse.json({ error: '任务ID格式无效' }, { status: 400 }); + } + + const client = await getDbClient(); + try { + await ensureGenerationJobRuntimeSchema(client); + await client.query( + `UPDATE generation_jobs + SET status = 'failed', + error = '任务执行超时或被服务重启中断', + payload = '{}'::jsonb, + finished_at = NOW(), + updated_at = NOW() + WHERE id = $1 + AND status = 'running' + AND updated_at < NOW() - INTERVAL '30 minutes'`, + [id], + ); + + const result = await client.query( + `SELECT id, type, status, result, error, provider, model_name, api_url, progress, + created_at, started_at, finished_at, updated_at, + CASE + WHEN started_at IS NOT NULL + THEN FLOOR(EXTRACT(EPOCH FROM (COALESCE(finished_at, NOW()) - started_at)))::int + ELSE 0 + END AS elapsed_seconds + FROM generation_jobs + WHERE id = $1 + AND (user_id = $2 OR $3 = true) + LIMIT 1`, + [id, user.userId, user.role === 'admin' || user.role === 'enterprise_admin'], + ); + + if (result.rows.length === 0) { + return NextResponse.json({ error: '任务不存在' }, { status: 404 }); + } + + const job = result.rows[0]; + const progress = job.progress && typeof job.progress === 'object' ? job.progress : {}; + const progressEstimate = Number(progress.estimateSeconds || progress.etaSeconds || 0); + let estimateSeconds = Number.isFinite(progressEstimate) && progressEstimate > 0 + ? Math.ceil(progressEstimate) + : 0; + let etaSource = typeof progress.source === 'string' ? progress.source : 'default'; + let etaSampleCount = Number(progress.sampleCount || 0); + let etaWindowDays = progress.windowDays ?? null; + + if (estimateSeconds <= 0 && (job.status === 'queued' || job.status === 'running')) { + const estimate = await getGenerationJobEstimate( + client, + job.type, + String(job.provider || ''), + String(job.model_name || ''), + ); + estimateSeconds = estimate.estimateSeconds; + etaSource = estimate.source; + etaSampleCount = estimate.sampleCount; + etaWindowDays = estimate.windowDays; + await client.query( + `UPDATE generation_jobs + SET progress = COALESCE(progress, '{}'::jsonb) || $2::jsonb, + updated_at = NOW() + WHERE id = $1`, + [id, JSON.stringify(buildInitialGenerationProgress(estimate))], + ); + } + + return NextResponse.json({ + ...job, + estimateSeconds, + eta: { + estimateSeconds, + source: etaSource, + sampleCount: etaSampleCount, + windowDays: etaWindowDays, + }, + }); + } finally { + client.release(); + } + } catch (err) { + console.error('[generation-jobs] GET error:', err); + return NextResponse.json({ error: '查询生成任务失败' }, { status: 500 }); + } +} diff --git a/src/app/api/generation-jobs/route.ts b/src/app/api/generation-jobs/route.ts new file mode 100644 index 0000000..f4bac43 --- /dev/null +++ b/src/app/api/generation-jobs/route.ts @@ -0,0 +1,105 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { + markStaleRunningJobs, + processNextGenerationJob, +} from '@/lib/generation-job-worker'; +import { getAuthenticatedUserId } from '@/lib/session-auth'; +import type { GenerationJobType } from '@/lib/generation-job-runner'; +import { + buildInitialGenerationProgress, + ensureGenerationJobRuntimeSchema, + getGenerationJobEstimate, + resolveGenerationJobIdentity, +} from '@/lib/generation-job-estimates'; +import { writePlatformLog } from '@/lib/platform-logs'; + +export async function POST(request: NextRequest) { + try { + void markStaleRunningJobs(); + const body = await request.json(); + const type = body.type as GenerationJobType; + const payload = body.payload as Record; + const userId = await getAuthenticatedUserId(request); + + if (!userId) { + return NextResponse.json({ error: '请先登录后再创建生成任务' }, { status: 401 }); + } + + if (type !== 'image' && type !== 'video') { + return NextResponse.json({ error: '不支持的任务类型' }, { status: 400 }); + } + if (!payload || typeof payload !== 'object' || Array.isArray(payload)) { + return NextResponse.json({ error: '缺少任务参数' }, { status: 400 }); + } + + const client = await getDbClient(); + let jobId = ''; + let estimateSeconds = type === 'video' ? 300 : 90; + let etaSource = 'default'; + let etaSampleCount = 0; + let etaWindowDays: number | null = null; + let jobIdentity = { provider: '', modelName: '', apiUrl: '' }; + try { + await ensureGenerationJobRuntimeSchema(client); + const identity = await resolveGenerationJobIdentity(client, userId, payload); + jobIdentity = identity; + const estimate = await getGenerationJobEstimate(client, type, identity.provider, identity.modelName); + estimateSeconds = estimate.estimateSeconds; + etaSource = estimate.source; + etaSampleCount = estimate.sampleCount; + etaWindowDays = estimate.windowDays; + const result = await client.query( + `INSERT INTO generation_jobs (type, status, payload, user_id, provider, model_name, api_url, progress) + VALUES ($1, 'queued', $2::jsonb, $3, $4, $5, $6, $7::jsonb) + RETURNING id`, + [ + type, + JSON.stringify(payload), + userId, + identity.provider, + identity.modelName, + identity.apiUrl, + JSON.stringify(buildInitialGenerationProgress(estimate)), + ], + ); + jobId = result.rows[0].id as string; + } finally { + client.release(); + } + + void processNextGenerationJob(); + void writePlatformLog({ + type: 'generation', + level: 'info', + action: 'generation_job_created', + message: `用户创建${type === 'image' ? '图片' : '视频'}生成任务`, + userId, + targetType: 'generation_job', + targetId: jobId, + metadata: { + type, + provider: jobIdentity.provider, + modelName: jobIdentity.modelName, + estimateSeconds, + etaSource, + etaSampleCount, + }, + request, + }); + return NextResponse.json({ + jobId, + status: 'queued', + estimateSeconds, + eta: { + estimateSeconds, + source: etaSource, + sampleCount: etaSampleCount, + windowDays: etaWindowDays, + }, + }, { status: 202 }); + } catch (err) { + console.error('[generation-jobs] POST error:', err); + return NextResponse.json({ error: '创建生成任务失败' }, { status: 500 }); + } +} diff --git a/src/app/api/health/route.ts b/src/app/api/health/route.ts new file mode 100644 index 0000000..ed6764c --- /dev/null +++ b/src/app/api/health/route.ts @@ -0,0 +1,50 @@ +import { NextResponse } from 'next/server'; +import fs from 'fs'; +import path from 'path'; +import { getDbClient } from '@/storage/database/local-db'; + +export async function GET() { + const storageDir = process.env.LOCAL_STORAGE_DIR || path.join(process.cwd(), 'local-storage'); + const checks: Record = { + database: { ok: false }, + storage: { ok: false }, + secrets: { + ok: Boolean( + process.env.JWT_SECRET + && process.env.DATA_ENCRYPTION_KEY + && process.env.GENERATION_INTERNAL_SECRET, + ), + }, + }; + + let client: Awaited> | null = null; + try { + client = await getDbClient(); + await client.query('SELECT 1'); + checks.database.ok = true; + } catch (error) { + checks.database.message = error instanceof Error ? error.message : 'database check failed'; + } finally { + client?.release(); + } + + try { + fs.mkdirSync(storageDir, { recursive: true }); + fs.accessSync(storageDir, fs.constants.R_OK | fs.constants.W_OK); + checks.storage.ok = true; + } catch (error) { + checks.storage.message = error instanceof Error ? error.message : 'storage check failed'; + } + + const ok = Object.values(checks).every(check => check.ok); + return NextResponse.json( + { + ok, + service: 'miaojing', + role: process.env.APP_RUNTIME_ROLE || 'full', + timestamp: new Date().toISOString(), + checks, + }, + { status: ok ? 200 : 503 }, + ); +} diff --git a/src/app/api/local-storage/[...path]/route.ts b/src/app/api/local-storage/[...path]/route.ts new file mode 100644 index 0000000..782a6b3 --- /dev/null +++ b/src/app/api/local-storage/[...path]/route.ts @@ -0,0 +1,64 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { localStorage } from '@/lib/local-storage'; +import path from 'path'; + +export async function GET(request: NextRequest, { params }: { params: Promise<{ path: string[] }> }) { + try { + const { path: pathSegments } = await params; + const filePath = normalizeStoragePath(pathSegments.join('/')); + if (!filePath) { + return NextResponse.json({ error: 'Invalid file path' }, { status: 400 }); + } + + if (!localStorage.fileExists(filePath)) { + return NextResponse.json({ error: 'File not found' }, { status: 404 }); + } + + const fileBuffer = localStorage.readFile(filePath); + const contentType = getContentType(filePath); + + return new NextResponse(new Uint8Array(fileBuffer), { + headers: { + 'Content-Type': contentType, + 'Content-Disposition': `inline; filename="${path.basename(filePath)}"`, + }, + }); + } catch (error) { + console.error('[Local Storage API] Error:', error); + return NextResponse.json({ error: 'Internal server error' }, { status: 500 }); + } +} + +function normalizeStoragePath(value: string): string | null { + try { + const decoded = decodeURIComponent(value); + const normalized = path.posix.normalize(decoded).replace(/^\/+/, ''); + if (!normalized || normalized.startsWith('..') || normalized.includes('/../') || path.isAbsolute(normalized)) { + return null; + } + return normalized; + } catch { + return null; + } +} + +function getContentType(filePath: string): string { + const extension = filePath.split('.').pop()?.toLowerCase(); + + const contentTypeMap: Record = { + 'jpg': 'image/jpeg', + 'jpeg': 'image/jpeg', + 'png': 'image/png', + 'webp': 'image/webp', + 'gif': 'image/gif', + 'mp4': 'video/mp4', + 'avi': 'video/x-msvideo', + 'mov': 'video/quicktime', + 'wmv': 'video/x-ms-wmv', + 'pdf': 'application/pdf', + 'txt': 'text/plain', + 'json': 'application/json', + }; + + return contentTypeMap[extension || ''] || 'application/octet-stream'; +} diff --git a/src/app/api/model-config/route.ts b/src/app/api/model-config/route.ts new file mode 100644 index 0000000..3b1bc74 --- /dev/null +++ b/src/app/api/model-config/route.ts @@ -0,0 +1,59 @@ +import { NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { listSystemApis } from '@/lib/server-api-config'; + +function mapProvider(row: Record) { + return { + id: String(row.id), + name: String(row.name || ''), + defaultApiUrl: String(row.default_api_url || ''), + defaultModel: String(row.default_model || ''), + type: String(row.type || 'image'), + website: (row.website as string | null) || null, + isActive: row.is_active !== false, + sortOrder: Number(row.sort_order || 0), + }; +} + +function mapRecommendation(row: Record) { + return { + id: String(row.id), + modelName: String(row.model_name || ''), + displayName: String(row.display_name || row.model_name || ''), + type: String(row.type || 'image'), + providerId: (row.provider_id as string | null) || null, + isActive: row.is_active !== false, + sortOrder: Number(row.sort_order || 0), + }; +} + +export async function GET() { + try { + const client = await getDbClient(); + try { + const providers = await client.query( + `SELECT id, name, default_api_url, default_model, type, website, is_active, sort_order + FROM api_providers + WHERE is_active = true + ORDER BY sort_order ASC, name ASC` + ); + const recommendations = await client.query( + `SELECT id, model_name, display_name, type, provider_id, is_active, sort_order + FROM model_recommendations + WHERE is_active = true + ORDER BY type ASC, sort_order ASC, model_name ASC` + ); + + return NextResponse.json({ + providers: providers.rows.map(mapProvider), + recommendations: recommendations.rows.map(mapRecommendation), + systemApis: await listSystemApis(false), + }); + } finally { + client.release(); + } + } catch (err) { + console.error('[model-config] GET error:', err); + return NextResponse.json({ providers: [], recommendations: [] }); + } +} diff --git a/src/app/api/profile/route.ts b/src/app/api/profile/route.ts new file mode 100644 index 0000000..e1bdec7 --- /dev/null +++ b/src/app/api/profile/route.ts @@ -0,0 +1,232 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { ensureEmailSchema } from '@/lib/email-service'; +import { getAuthenticatedUserId } from '@/lib/session-auth'; +import { getRequiredProductionSecret } from '@/lib/runtime-env'; +import { ensureProfilePreferenceSchema } from '@/lib/profile-preferences'; + +function normalizeRoleForTier(role: string | null | undefined, tier: string | null | undefined): string { + const currentRole = role || 'user'; + if (currentRole === 'admin' || currentRole === 'enterprise_admin') return currentRole; + return tier && tier !== 'free' ? 'vip' : currentRole === 'vip' ? 'user' : currentRole; +} + +function isEmail(value: string): boolean { + return value.length <= 254 && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value); +} + +function isSafeAvatarUrl(value: string): boolean { + if (!value) return true; + if (value.length > 1_000_000) return false; + if (/^data:image\/(png|jpe?g|webp|gif);base64,[a-z0-9+/=]+$/i.test(value)) return true; + if (/^https?:\/\/[^\s"'<>]+$/i.test(value)) return true; + if (/^\/api\/local-storage\/[^\s"'<>]+$/i.test(value)) return true; + return false; +} + +function isSafeProfileText(value: string | undefined, maxLength: number): boolean { + if (value === undefined) return true; + return value.length <= maxLength && !/[\u0000-\u001f\u007f<>]/.test(value); +} + +async function verifyPasswordHash(client: Awaited>, passwordHash: string, password: string): Promise { + const result = await client.query( + 'SELECT $1::text = crypt($2::text, $1::text) AS ok', + [passwordHash, password] + ); + return result.rows[0]?.ok === true; +} + +export async function GET(request: NextRequest) { + try { + const tokenUserId = await getAuthenticatedUserId(request); + if (!tokenUserId) { + return NextResponse.json({ error: 'Please log in again' }, { status: 401 }); + } + + const client = await getDbClient(); + + try { + await ensureEmailSchema(client); + await ensureProfilePreferenceSchema(client); + const result = await client.query( + 'SELECT id, email, nickname, phone, role, membership_tier, credits_balance, daily_quota_used, daily_quota_limit, avatar_url, created_at, email_verified, email_verified_at, email_bound_at, preferred_theme FROM profiles WHERE id = $1', + [tokenUserId], + ); + + if (result.rows.length === 0) { + return NextResponse.json({ error: 'User not found' }, { status: 404 }); + } + + const profile = result.rows[0]; + const normalizedRole = normalizeRoleForTier(profile.role, profile.membership_tier); + if (normalizedRole !== (profile.role || 'user')) { + profile.role = normalizedRole; + await client.query('UPDATE profiles SET role = $1, updated_at = NOW() WHERE id = $2', [normalizedRole, profile.id]); + } + + return NextResponse.json({ profile }); + } finally { + client.release(); + } + } catch (error: unknown) { + const message = error instanceof Error ? error.message : 'Failed to get profile'; + console.error('[Profile Error]', message); + return NextResponse.json({ error: message }, { status: 500 }); + } +} + +export async function PUT(request: NextRequest) { + const tokenUserId = await getAuthenticatedUserId(request); + if (!tokenUserId) { + return NextResponse.json({ error: 'Please log in again' }, { status: 401 }); + } + + try { + const body = await request.json(); + const hasEmail = Object.prototype.hasOwnProperty.call(body, 'email'); + const hasNickname = Object.prototype.hasOwnProperty.call(body, 'nickname'); + const hasPhone = Object.prototype.hasOwnProperty.call(body, 'phone'); + const hasAvatarUrl = Object.prototype.hasOwnProperty.call(body, 'avatarUrl'); + const currentPassword = typeof body.currentPassword === 'string' ? body.currentPassword : ''; + const newPassword = typeof body.newPassword === 'string' ? body.newPassword : ''; + const email = hasEmail && typeof body.email === 'string' ? body.email.trim() : undefined; + const nickname = hasNickname && typeof body.nickname === 'string' ? body.nickname.trim() : undefined; + const phone = hasPhone && typeof body.phone === 'string' ? body.phone.trim() : undefined; + const avatarUrl = hasAvatarUrl && typeof body.avatarUrl === 'string' ? body.avatarUrl.trim() : undefined; + + if (email !== undefined && !isEmail(email)) { + return NextResponse.json({ error: 'Invalid email address' }, { status: 400 }); + } + + if (!isSafeProfileText(nickname, 50)) { + return NextResponse.json({ error: 'Nickname is too long or contains invalid characters' }, { status: 400 }); + } + + if (!isSafeProfileText(phone, 30)) { + return NextResponse.json({ error: 'Phone is too long or contains invalid characters' }, { status: 400 }); + } + + if (newPassword && newPassword.length < 6) { + return NextResponse.json({ error: 'Password must be at least 6 characters' }, { status: 400 }); + } + + if (avatarUrl !== undefined && !isSafeAvatarUrl(avatarUrl)) { + return NextResponse.json({ error: 'Invalid avatar image' }, { status: 400 }); + } + + const client = await getDbClient(); + + try { + await ensureEmailSchema(client); + await ensureProfilePreferenceSchema(client); + await client.query('BEGIN'); + + const profileResult = await client.query( + 'SELECT id, email, nickname, phone, role, membership_tier, credits_balance, daily_quota_used, daily_quota_limit, avatar_url, created_at, email_verified, email_verified_at, email_bound_at, preferred_theme FROM profiles WHERE id = $1 FOR UPDATE', + [tokenUserId] + ); + + if (profileResult.rows.length === 0) { + await client.query('ROLLBACK'); + return NextResponse.json({ error: 'User not found' }, { status: 404 }); + } + + const currentProfile = profileResult.rows[0]; + const authResult = await client.query( + 'SELECT id, email, password_hash FROM auth.users WHERE id = $1 FOR UPDATE', + [tokenUserId] + ); + const authUser = authResult.rows[0] || null; + + if (email !== undefined && email !== currentProfile.email) { + const duplicateProfile = await client.query( + 'SELECT id FROM profiles WHERE email = $1 AND id <> $2 LIMIT 1', + [email, tokenUserId] + ); + const duplicateAuth = await client.query( + 'SELECT id FROM auth.users WHERE email = $1 AND id <> $2 LIMIT 1', + [email, tokenUserId] + ); + + if (duplicateProfile.rows.length > 0 || duplicateAuth.rows.length > 0) { + await client.query('ROLLBACK'); + return NextResponse.json({ error: 'Email is already in use' }, { status: 400 }); + } + + if (authUser) { + await client.query('UPDATE auth.users SET email = $1 WHERE id = $2', [email, tokenUserId]); + } else { + await client.query( + 'INSERT INTO auth.users (id, email, created_at) VALUES ($1, $2, NOW())', + [tokenUserId, email] + ); + } + } + + if (newPassword) { + if (authUser?.password_hash) { + if (!currentPassword) { + await client.query('ROLLBACK'); + return NextResponse.json({ error: 'Current password is required' }, { status: 400 }); + } + const passwordOk = await verifyPasswordHash(client, authUser.password_hash, currentPassword); + if (!passwordOk) { + await client.query('ROLLBACK'); + return NextResponse.json({ error: 'Current password is incorrect' }, { status: 401 }); + } + } else if (currentProfile.role === 'admin' && currentPassword !== getRequiredProductionSecret('ADMIN_DEFAULT_PASSWORD', 'admin123')) { + await client.query('ROLLBACK'); + return NextResponse.json({ error: 'Current password is incorrect' }, { status: 401 }); + } + + await client.query( + `INSERT INTO auth.users (id, email, password_hash, created_at) + VALUES ($1, $2, crypt($3, gen_salt('bf')), NOW()) + ON CONFLICT (id) DO UPDATE SET password_hash = crypt($3, gen_salt('bf'))`, + [tokenUserId, email || currentProfile.email, newPassword] + ); + } + + const updateResult = await client.query( + `UPDATE profiles + SET email = CASE WHEN $1::boolean THEN $2 ELSE email END, + email_verified = CASE WHEN $1::boolean AND LOWER($2) <> LOWER(email) THEN false ELSE email_verified END, + email_verified_at = CASE WHEN $1::boolean AND LOWER($2) <> LOWER(email) THEN NULL ELSE email_verified_at END, + nickname = CASE WHEN $3::boolean THEN NULLIF($4, '') ELSE nickname END, + phone = CASE WHEN $5::boolean THEN NULLIF($6, '') ELSE phone END, + avatar_url = CASE WHEN $7::boolean THEN NULLIF($8, '') ELSE avatar_url END, + updated_at = NOW() + WHERE id = $9 + RETURNING id, email, nickname, phone, role, membership_tier, credits_balance, daily_quota_used, daily_quota_limit, avatar_url, created_at, email_verified, email_verified_at, email_bound_at, preferred_theme`, + [ + email !== undefined, + email || null, + nickname !== undefined, + nickname || '', + phone !== undefined, + phone || '', + avatarUrl !== undefined, + avatarUrl || '', + tokenUserId, + ] + ); + + await client.query('COMMIT'); + + return NextResponse.json({ + success: true, + profile: updateResult.rows[0], + }); + } catch (error) { + await client.query('ROLLBACK'); + throw error; + } finally { + client.release(); + } + } catch (error: unknown) { + const message = error instanceof Error ? error.message : 'Failed to update profile'; + console.error('[Profile Update Error]', message); + return NextResponse.json({ error: message }, { status: 500 }); + } +} diff --git a/src/app/api/profile/theme/route.ts b/src/app/api/profile/theme/route.ts new file mode 100644 index 0000000..b3a3397 --- /dev/null +++ b/src/app/api/profile/theme/route.ts @@ -0,0 +1,44 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { getAuthenticatedUserId } from '@/lib/session-auth'; +import { ensureProfilePreferenceSchema, normalizePreferredTheme } from '@/lib/profile-preferences'; + +export async function PUT(request: NextRequest) { + const tokenUserId = await getAuthenticatedUserId(request); + if (!tokenUserId) { + return NextResponse.json({ error: 'Please log in again' }, { status: 401 }); + } + + try { + const body = await request.json(); + const preferredTheme = normalizePreferredTheme(body?.theme); + const client = await getDbClient(); + + try { + await ensureProfilePreferenceSchema(client); + const result = await client.query( + `UPDATE profiles + SET preferred_theme = $1, + updated_at = NOW() + WHERE id = $2 + RETURNING preferred_theme`, + [preferredTheme, tokenUserId], + ); + + if (result.rows.length === 0) { + return NextResponse.json({ error: 'User not found' }, { status: 404 }); + } + + return NextResponse.json({ + success: true, + preferred_theme: normalizePreferredTheme(result.rows[0].preferred_theme), + }); + } finally { + client.release(); + } + } catch (error: unknown) { + const message = error instanceof Error ? error.message : 'Failed to save theme'; + console.error('[Profile Theme Error]', message); + return NextResponse.json({ error: message }, { status: 500 }); + } +} diff --git a/src/app/api/site-config/route.ts b/src/app/api/site-config/route.ts new file mode 100644 index 0000000..a285b49 --- /dev/null +++ b/src/app/api/site-config/route.ts @@ -0,0 +1,220 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { localStorage } from '@/lib/local-storage'; +import { requireAdmin } from '@/lib/admin-auth'; +import { DEFAULT_ABOUT_US, DEFAULT_HELP_CENTER, DEFAULT_PRIVACY_POLICY, DEFAULT_TERMS_OF_SERVICE } from '@/lib/site-policy-defaults'; +import { cleanupExpiredPlatformLogs, setPlatformLogRetentionDays, writePlatformLog } from '@/lib/platform-logs'; + +const DEFAULT_RESPONSE = { + siteName: '妙境', + siteTabTitle: '妙境 - AI创作平台', + logoUrl: null, + faviconUrl: null, + membershipEnabled: true, + termsOfService: DEFAULT_TERMS_OF_SERVICE, + privacyPolicy: DEFAULT_PRIVACY_POLICY, + aboutUs: DEFAULT_ABOUT_US, + helpCenter: DEFAULT_HELP_CENTER, + filingInfo: '', + filingUrl: '', + publicSecurityFilingInfo: '', + publicSecurityFilingUrl: '', + logRetentionDays: 30, +}; + +type SiteConfigRow = { + site_name?: string; + site_tab_title?: string; + logo_url?: string | null; + favicon_url?: string | null; + membership_enabled?: boolean; + terms_of_service?: string | null; + privacy_policy?: string | null; + about_us?: string | null; + help_center?: string | null; + filing_info?: string | null; + filing_url?: string | null; + public_security_filing_info?: string | null; + public_security_filing_url?: string | null; + log_retention_days?: number | null; +}; + +async function ensureSiteConfigColumns(client: Awaited>) { + await client.query('ALTER TABLE site_config ADD COLUMN IF NOT EXISTS membership_enabled BOOLEAN NOT NULL DEFAULT TRUE'); + await client.query("ALTER TABLE site_config ADD COLUMN IF NOT EXISTS terms_of_service TEXT NOT NULL DEFAULT ''"); + await client.query("ALTER TABLE site_config ADD COLUMN IF NOT EXISTS privacy_policy TEXT NOT NULL DEFAULT ''"); + await client.query("ALTER TABLE site_config ADD COLUMN IF NOT EXISTS about_us TEXT NOT NULL DEFAULT ''"); + await client.query("ALTER TABLE site_config ADD COLUMN IF NOT EXISTS help_center TEXT NOT NULL DEFAULT ''"); + await client.query("ALTER TABLE site_config ADD COLUMN IF NOT EXISTS filing_info TEXT NOT NULL DEFAULT ''"); + await client.query("ALTER TABLE site_config ADD COLUMN IF NOT EXISTS filing_url TEXT NOT NULL DEFAULT ''"); + await client.query("ALTER TABLE site_config ADD COLUMN IF NOT EXISTS public_security_filing_info TEXT NOT NULL DEFAULT ''"); + await client.query("ALTER TABLE site_config ADD COLUMN IF NOT EXISTS public_security_filing_url TEXT NOT NULL DEFAULT ''"); + await client.query('ALTER TABLE site_config ADD COLUMN IF NOT EXISTS log_retention_days INTEGER NOT NULL DEFAULT 30'); + await client.query('UPDATE site_config SET log_retention_days = LEAST(90, GREATEST(1, log_retention_days))'); + await client.query("UPDATE site_config SET terms_of_service = $1 WHERE terms_of_service = ''", [DEFAULT_TERMS_OF_SERVICE]); + await client.query("UPDATE site_config SET privacy_policy = $1 WHERE privacy_policy = ''", [DEFAULT_PRIVACY_POLICY]); + await client.query("UPDATE site_config SET about_us = $1 WHERE about_us = ''", [DEFAULT_ABOUT_US]); + await client.query("UPDATE site_config SET help_center = $1 WHERE help_center = ''", [DEFAULT_HELP_CENTER]); +} + +function normalizeResponse(data?: SiteConfigRow | null) { + return { + siteName: data?.site_name || DEFAULT_RESPONSE.siteName, + siteTabTitle: data?.site_tab_title || DEFAULT_RESPONSE.siteTabTitle, + logoUrl: data?.logo_url || null, + faviconUrl: data?.favicon_url || null, + membershipEnabled: data?.membership_enabled !== false, + termsOfService: data?.terms_of_service?.trim() ? data.terms_of_service : DEFAULT_TERMS_OF_SERVICE, + privacyPolicy: data?.privacy_policy?.trim() ? data.privacy_policy : DEFAULT_PRIVACY_POLICY, + aboutUs: data?.about_us?.trim() ? data.about_us : DEFAULT_ABOUT_US, + helpCenter: data?.help_center?.trim() ? data.help_center : DEFAULT_HELP_CENTER, + filingInfo: data?.filing_info?.trim() || '', + filingUrl: data?.filing_url?.trim() || '', + publicSecurityFilingInfo: data?.public_security_filing_info?.trim() || '', + publicSecurityFilingUrl: data?.public_security_filing_url?.trim() || '', + logRetentionDays: Math.min(90, Math.max(1, Number(data?.log_retention_days || 30))), + }; +} + +function decodeDataImage(value: unknown): { buffer: Buffer; ext: string; contentType: string } | null { + if (typeof value !== 'string') return null; + const match = value.match(/^data:image\/(png|jpe?g|webp|gif|svg\+xml);base64,([a-z0-9+/=]+)$/i); + if (!match) return null; + const subtype = match[1].toLowerCase(); + const ext = subtype === 'jpeg' ? 'jpg' : subtype === 'svg+xml' ? 'svg' : subtype; + const buffer = Buffer.from(match[2], 'base64'); + if (buffer.length <= 0 || buffer.length > 3 * 1024 * 1024) return null; + return { buffer, ext, contentType: `image/${subtype}` }; +} + +async function saveImageDataUrl(value: unknown, prefix: string): Promise { + const decoded = decodeDataImage(value); + if (!decoded) return null; + const key = `site-assets/${prefix}-${Date.now()}.${decoded.ext}`; + const savedKey = await localStorage.uploadFile({ + fileContent: decoded.buffer, + fileName: key, + contentType: decoded.contentType, + }); + return localStorage.generatePresignedUrl({ key: savedKey, expireTime: 31536000 }); +} + +export async function GET() { + try { + const client = await getDbClient(); + try { + await ensureSiteConfigColumns(client); + const result = await client.query( + 'SELECT site_name, site_tab_title, logo_url, favicon_url, membership_enabled, terms_of_service, privacy_policy, about_us, help_center, filing_info, filing_url, public_security_filing_info, public_security_filing_url, log_retention_days FROM site_config WHERE id = 1' + ); + + if (result.rows.length === 0) { + return NextResponse.json(DEFAULT_RESPONSE); + } + + return NextResponse.json(normalizeResponse(result.rows[0])); + } finally { + client.release(); + } + } catch { + return NextResponse.json(DEFAULT_RESPONSE); + } +} + +export async function PUT(request: NextRequest) { + const authError = await requireAdmin(request); + if (authError) return authError; + + try { + const body = await request.json(); + if (!body) { + return NextResponse.json({ error: '无效的请求体' }, { status: 400 }); + } + + const { siteName, siteTabTitle, membershipEnabled, logoBase64, faviconBase64, termsOfService, privacyPolicy, aboutUs, helpCenter, filingInfo, filingUrl, publicSecurityFilingInfo, publicSecurityFilingUrl, logRetentionDays } = body as { + siteName?: string; + siteTabTitle?: string; + membershipEnabled?: boolean; + logoBase64?: string; + faviconBase64?: string; + termsOfService?: string; + privacyPolicy?: string; + aboutUs?: string; + helpCenter?: string; + filingInfo?: string; + filingUrl?: string; + publicSecurityFilingInfo?: string; + publicSecurityFilingUrl?: string; + logRetentionDays?: number; + }; + + const client = await getDbClient(); + try { + await ensureSiteConfigColumns(client); + const updates: string[] = []; + const params: unknown[] = []; + let paramIdx = 1; + + if (typeof siteName === 'string') { updates.push(`site_name = $${paramIdx++}`); params.push(siteName); } + if (typeof siteTabTitle === 'string') { updates.push(`site_tab_title = $${paramIdx++}`); params.push(siteTabTitle); } + if (typeof membershipEnabled === 'boolean') { updates.push(`membership_enabled = $${paramIdx++}`); params.push(membershipEnabled); } + if (typeof termsOfService === 'string') { updates.push(`terms_of_service = $${paramIdx++}`); params.push(termsOfService.trim() || DEFAULT_TERMS_OF_SERVICE); } + if (typeof privacyPolicy === 'string') { updates.push(`privacy_policy = $${paramIdx++}`); params.push(privacyPolicy.trim() || DEFAULT_PRIVACY_POLICY); } + if (typeof aboutUs === 'string') { updates.push(`about_us = $${paramIdx++}`); params.push(aboutUs.trim() || DEFAULT_ABOUT_US); } + if (typeof helpCenter === 'string') { updates.push(`help_center = $${paramIdx++}`); params.push(helpCenter.trim() || DEFAULT_HELP_CENTER); } + if (typeof filingInfo === 'string') { updates.push(`filing_info = $${paramIdx++}`); params.push(filingInfo.trim()); } + if (typeof filingUrl === 'string') { updates.push(`filing_url = $${paramIdx++}`); params.push(filingUrl.trim()); } + if (typeof publicSecurityFilingInfo === 'string') { updates.push(`public_security_filing_info = $${paramIdx++}`); params.push(publicSecurityFilingInfo.trim()); } + if (typeof publicSecurityFilingUrl === 'string') { updates.push(`public_security_filing_url = $${paramIdx++}`); params.push(publicSecurityFilingUrl.trim()); } + if (typeof logRetentionDays === 'number') { + const safeLogRetentionDays = Math.min(90, Math.max(1, Math.floor(logRetentionDays))); + updates.push(`log_retention_days = $${paramIdx++}`); + params.push(safeLogRetentionDays); + await setPlatformLogRetentionDays(client, safeLogRetentionDays); + await cleanupExpiredPlatformLogs(client); + } + const logoUrl = await saveImageDataUrl(logoBase64, 'logo'); + const faviconUrl = await saveImageDataUrl(faviconBase64, 'favicon'); + if (logoUrl) { updates.push(`logo_url = $${paramIdx++}`); params.push(logoUrl); } + if (faviconUrl) { updates.push(`favicon_url = $${paramIdx++}`); params.push(faviconUrl); } + updates.push(`updated_at = NOW()`); + + if (updates.length > 1) { + await client.query( + "INSERT INTO site_config (id, site_name, site_tab_title) VALUES (1, '妙境', '妙境 - AI创作平台') ON CONFLICT (id) DO NOTHING" + ); + await client.query( + `UPDATE site_config SET ${updates.join(', ')} WHERE id = 1`, + params + ); + } + + const result = await client.query( + 'SELECT site_name, site_tab_title, logo_url, favicon_url, membership_enabled, terms_of_service, privacy_policy, about_us, help_center, filing_info, filing_url, public_security_filing_info, public_security_filing_url, log_retention_days FROM site_config WHERE id = 1' + ); + + void writePlatformLog({ + type: 'admin', + level: 'info', + action: 'site_config_updated', + message: '管理员更新了系统设置', + targetType: 'site_config', + targetId: '1', + metadata: { + fields: updates + .filter(item => !item.startsWith('updated_at')) + .map(item => item.split('=')[0]?.trim()) + .filter(Boolean), + }, + request, + }); + + return NextResponse.json(normalizeResponse(result.rows[0])); + } finally { + client.release(); + } + } catch (err) { + console.error('[site-config] PUT error:', err); + return NextResponse.json({ error: '服务器错误' }, { status: 500 }); + } +} diff --git a/src/app/api/site-stats/route.ts b/src/app/api/site-stats/route.ts new file mode 100644 index 0000000..a584159 --- /dev/null +++ b/src/app/api/site-stats/route.ts @@ -0,0 +1,41 @@ +import { NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; + +export async function GET() { + try { + const client = await getDbClient(); + try { + const result = await client.query('SELECT total_visits FROM site_stats WHERE id = 1'); + return NextResponse.json({ totalVisits: result.rows[0]?.total_visits || 0 }); + } finally { + client.release(); + } + } catch { + return NextResponse.json({ totalVisits: 0 }); + } +} + +export async function POST() { + try { + const client = await getDbClient(); + try { + const result = await client.query('SELECT increment_visits() as new_count'); + return NextResponse.json({ totalVisits: result.rows[0]?.new_count || 0 }); + } finally { + client.release(); + } + } catch { + try { + const client = await getDbClient(); + try { + await client.query('UPDATE site_stats SET total_visits = total_visits + 1, updated_at = NOW() WHERE id = 1'); + const result = await client.query('SELECT total_visits FROM site_stats WHERE id = 1'); + return NextResponse.json({ totalVisits: result.rows[0]?.total_visits || 0 }); + } finally { + client.release(); + } + } catch { + return NextResponse.json({ totalVisits: 0 }); + } + } +} \ No newline at end of file diff --git a/src/app/api/user-api-keys/route.ts b/src/app/api/user-api-keys/route.ts new file mode 100644 index 0000000..1cfd1c8 --- /dev/null +++ b/src/app/api/user-api-keys/route.ts @@ -0,0 +1,125 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDbClient } from '@/storage/database/local-db'; +import { decryptSecret, encryptSecret, previewSecret } from '@/lib/server-crypto'; +import { getAuthenticatedUserId } from '@/lib/session-auth'; + +function normalizeType(value: unknown): 'image' | 'video' | 'text' { + return value === 'video' || value === 'text' ? value : 'image'; +} + +function mapKey(row: Record) { + const apiKey = decryptSecret(row.api_key_encrypted as string); + return { + id: row.id, + provider: row.provider || '', + supplierName: row.supplier_name || row.provider || '', + apiUrl: row.api_url || '', + modelName: row.model_name || '', + apiKey: '', + apiKeyPreview: row.api_key_preview || previewSecret(apiKey), + type: normalizeType(row.type), + isActive: row.is_active !== false, + createdAt: row.created_at, + }; +} + +export async function GET(request: NextRequest) { + const userId = await getAuthenticatedUserId(request); + if (!userId) return NextResponse.json({ error: '请先登录' }, { status: 401 }); + + const client = await getDbClient(); + try { + await client.query(` + ALTER TABLE user_api_keys ADD COLUMN IF NOT EXISTS supplier_name VARCHAR(128); + ALTER TABLE user_api_keys ADD COLUMN IF NOT EXISTS type VARCHAR(16) NOT NULL DEFAULT 'image'; + `); + const result = await client.query( + `SELECT id, provider, supplier_name, api_url, model_name, api_key_encrypted, api_key_preview, type, is_active, created_at + FROM user_api_keys + WHERE user_id = $1 + ORDER BY created_at DESC`, + [userId], + ); + return NextResponse.json({ keys: result.rows.map(mapKey) }); + } finally { + client.release(); + } +} + +export async function POST(request: NextRequest) { + const userId = await getAuthenticatedUserId(request); + if (!userId) return NextResponse.json({ error: '请先登录' }, { status: 401 }); + const body = await request.json(); + const keys = Array.isArray(body.keys) ? body.keys : [body]; + + const client = await getDbClient(); + try { + await client.query('BEGIN'); + await client.query(` + ALTER TABLE user_api_keys ADD COLUMN IF NOT EXISTS supplier_name VARCHAR(128); + ALTER TABLE user_api_keys ADD COLUMN IF NOT EXISTS type VARCHAR(16) NOT NULL DEFAULT 'image'; + `); + const saved = []; + for (const item of keys) { + const apiKey = String(item.apiKey || '').trim(); + const id = typeof item.id === 'string' && /^[0-9a-fA-F-]{36}$/.test(item.id) ? item.id : undefined; + if (!apiKey && !id) continue; + const values = [ + userId, + String(item.provider || '').trim(), + String(item.supplierName || item.provider || '').trim(), + String(item.apiUrl || '').trim(), + String(item.modelName || '').trim(), + apiKey ? encryptSecret(apiKey) : null, + apiKey ? previewSecret(apiKey) : null, + normalizeType(item.type), + item.isActive !== false, + ]; + const result = await client.query( + id + ? `UPDATE user_api_keys + SET provider = $2, + supplier_name = $3, + api_url = $4, + model_name = $5, + api_key_encrypted = COALESCE($6, api_key_encrypted), + api_key_preview = COALESCE($7, api_key_preview), + type = $8, + is_active = $9, + updated_at = NOW() + WHERE id = $10 AND user_id = $1 + RETURNING *` + : `INSERT INTO user_api_keys (user_id, provider, supplier_name, api_url, model_name, api_key_encrypted, api_key_preview, type, is_active, created_at, updated_at) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, NOW(), NOW()) + RETURNING *`, + id ? [...values, id] : values, + ); + saved.push(mapKey(result.rows[0])); + } + await client.query('COMMIT'); + return NextResponse.json({ keys: saved }); + } catch (error) { + await client.query('ROLLBACK'); + throw error; + } finally { + client.release(); + } +} + +export async function PUT(request: NextRequest) { + return POST(request); +} + +export async function DELETE(request: NextRequest) { + const userId = await getAuthenticatedUserId(request); + if (!userId) return NextResponse.json({ error: '请先登录' }, { status: 401 }); + const id = request.nextUrl.searchParams.get('id'); + if (!id) return NextResponse.json({ error: '缺少 ID' }, { status: 400 }); + const client = await getDbClient(); + try { + await client.query('DELETE FROM user_api_keys WHERE id = $1 AND user_id = $2', [id, userId]); + return NextResponse.json({ success: true }); + } finally { + client.release(); + } +} diff --git a/src/app/auth/login/page.tsx b/src/app/auth/login/page.tsx new file mode 100644 index 0000000..fe768c3 --- /dev/null +++ b/src/app/auth/login/page.tsx @@ -0,0 +1,530 @@ +'use client'; + +import { useState, useEffect } from 'react'; +import { useRouter } from 'next/navigation'; +import Link from 'next/link'; +import { useTheme } from 'next-themes'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@/components/ui/dialog'; +import { Brush, Mail, Lock, User, Phone, Eye, EyeOff, Loader2 } from 'lucide-react'; +import { toast } from 'sonner'; +import { useAuth, parseApiUser } from '@/lib/auth-store'; +import { RegistrationAgreementDialog } from '@/components/auth/registration-agreement-dialog'; + +const EMAIL_REGEX = /^[^\s@<>"]+@[^\s@<>"]+\.[^\s@<>"]+$/; +const authInputIconClass = 'pointer-events-none absolute left-3 top-1/2 z-10 h-4 w-4 -translate-y-1/2 text-foreground/70 dark:text-foreground/80'; +const authPasswordToggleClass = 'absolute right-3 top-1/2 z-10 -translate-y-1/2 text-foreground/70 transition-colors hover:text-foreground dark:text-foreground/80'; + +function isEmail(value: string) { + return EMAIL_REGEX.test(value.trim()); +} + +function sanitizeCode(value: string) { + return value.replace(/[^a-z0-9]/gi, '').toUpperCase().slice(0, 10); +} + +function isStrongPassword(value: string) { + return value.length >= 8 && /[a-zA-Z]/.test(value) && /\d/.test(value); +} + +export default function AuthPage() { + const router = useRouter(); + const { login } = useAuth(); + const { setTheme } = useTheme(); + const [activeTab, setActiveTab] = useState('login'); + const [loading, setLoading] = useState(false); + const [showPassword, setShowPassword] = useState(false); + + // Login form + const [loginAccount, setLoginAccount] = useState(''); + const [loginPassword, setLoginPassword] = useState(''); + + // Register form + const [regEmail, setRegEmail] = useState(''); + const [regPassword, setRegPassword] = useState(''); + const [regNickname, setRegNickname] = useState(''); + const [regPhone, setRegPhone] = useState(''); + const [regInviteCode, setRegInviteCode] = useState(''); + const [regEmailCode, setRegEmailCode] = useState(''); + const [regCodeCooldown, setRegCodeCooldown] = useState(0); + const [sendingRegCode, setSendingRegCode] = useState(false); + const [showInviteCode, setShowInviteCode] = useState(false); + const [showForgotPw, setShowForgotPw] = useState(false); + const [resetEmail, setResetEmail] = useState(''); + const [resetCode, setResetCode] = useState(''); + const [resetPassword, setResetPassword] = useState(''); + const [resetConfirmPassword, setResetConfirmPassword] = useState(''); + const [resetCooldown, setResetCooldown] = useState(0); + const [sendingResetCode, setSendingResetCode] = useState(false); + const [resettingPassword, setResettingPassword] = useState(false); + const [showAgreement, setShowAgreement] = useState(false); + + // Auto-initialize default admin account on mount (fire-and-forget) + useEffect(() => { + fetch('/api/auth/admin-exists').catch(() => {/* silent */}); + }, []); + + useEffect(() => { + if (regCodeCooldown <= 0) return; + const timer = window.setInterval(() => setRegCodeCooldown(prev => Math.max(0, prev - 1)), 1000); + return () => window.clearInterval(timer); + }, [regCodeCooldown]); + + useEffect(() => { + if (resetCooldown <= 0) return; + const timer = window.setInterval(() => setResetCooldown(prev => Math.max(0, prev - 1)), 1000); + return () => window.clearInterval(timer); + }, [resetCooldown]); + + const handleLogin = async () => { + if (!loginAccount || !loginPassword) { + toast.error('请填写账号和密码'); + return; + } + setLoading(true); + try { + const res = await fetch('/api/auth/login', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ account: loginAccount, password: loginPassword }), + }); + const data = await res.json(); + if (!res.ok) throw new Error(data.error || '登录失败'); + + // Save auth state with full profile + const authUser = parseApiUser(data.user || {}); + login(authUser, data.session?.access_token || ''); + setTheme(authUser.preferredTheme); + + toast.success('登录成功'); + router.push('/create'); + } catch (err) { + toast.error(err instanceof Error ? err.message : '登录失败'); + } finally { + setLoading(false); + } + }; + + const handleRegister = async () => { + if (!regEmail || !regPassword) { + toast.error('请填写邮箱和密码'); + return; + } + if (!isEmail(regEmail)) { + toast.error('请输入正确的邮箱地址'); + return; + } + setLoading(true); + try { + const res = await fetch('/api/auth/register', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + email: regEmail, + password: regPassword, + nickname: regNickname, + phone: regPhone, + inviteCode: regInviteCode || undefined, + emailCode: showInviteCode && regInviteCode ? undefined : regEmailCode, + acceptedTerms: true, + }), + }); + const data = await res.json(); + if (!res.ok) throw new Error(data.error || '注册失败'); + + // Save auth state with full profile + const authUser = parseApiUser(data.user || {}); + login(authUser, data.session?.access_token || ''); + setTheme(authUser.preferredTheme); + + toast.success(data.message || '注册成功'); + router.push('/create'); + } catch (err) { + toast.error(err instanceof Error ? err.message : '注册失败'); + } finally { + setLoading(false); + } + }; + + const requestRegisterAgreement = () => { + setShowAgreement(true); + }; + + const handleAgreeAndRegister = () => { + setShowAgreement(false); + handleRegister(); + }; + + const handleSendRegisterCode = async () => { + if (!isEmail(regEmail)) { + toast.error('请输入正确的邮箱地址'); + return; + } + setSendingRegCode(true); + try { + const res = await fetch('/api/email/send-register-code', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ email: regEmail }), + }); + const data = await res.json().catch(() => ({})); + if (!res.ok) throw new Error(data.error || '验证码发送失败'); + setRegCodeCooldown(data.cooldown || 60); + toast.success(data.message || '验证码已发送'); + } catch (err) { + toast.error(err instanceof Error ? err.message : '验证码发送失败'); + } finally { + setSendingRegCode(false); + } + }; + + const handleSendResetCode = async () => { + if (!isEmail(resetEmail)) { + toast.error('请输入注册时绑定并验证过的邮箱'); + return; + } + setSendingResetCode(true); + try { + const res = await fetch('/api/email/send-reset-code', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ email: resetEmail }), + }); + const data = await res.json().catch(() => ({})); + if (!res.ok) throw new Error(data.error || '验证码发送失败'); + setResetCooldown(data.cooldown || 60); + toast.success(data.message || '如果该邮箱可用于重置,我们已发送验证码'); + } catch (err) { + toast.error(err instanceof Error ? err.message : '验证码发送失败'); + } finally { + setSendingResetCode(false); + } + }; + + const handleResetPassword = async () => { + if (!isEmail(resetEmail) || !resetCode) { + toast.error('请填写邮箱和验证码'); + return; + } + if (!isStrongPassword(resetPassword)) { + toast.error('新密码至少 8 位,并同时包含字母和数字'); + return; + } + if (resetPassword !== resetConfirmPassword) { + toast.error('两次输入的新密码不一致'); + return; + } + setResettingPassword(true); + try { + const res = await fetch('/api/email/reset-password', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ email: resetEmail, code: resetCode, newPassword: resetPassword }), + }); + const data = await res.json().catch(() => ({})); + if (!res.ok) throw new Error(data.error || '密码重置失败'); + toast.success(data.message || '密码已重置,请重新登录'); + setShowForgotPw(false); + setLoginAccount(resetEmail); + setResetCode(''); + setResetPassword(''); + setResetConfirmPassword(''); + } catch (err) { + toast.error(err instanceof Error ? err.message : '密码重置失败'); + } finally { + setResettingPassword(false); + } + }; + + return ( +

+
+
+
+ +
+ {/* Logo */} +
+ +
+ +
+ 妙境 + +

妙手丹青,境随心造

+
+ + + + + + 登录 + 注册 + + + + + +
+ +
+ + setLoginAccount(e.target.value)} + className="pl-10" + onKeyDown={(e) => { if (e.key === 'Enter') handleLogin(); }} + /> +
+
+
+ +
+ + setLoginPassword(e.target.value)} + className="pl-10 pr-10" + onKeyDown={(e) => { if (e.key === 'Enter') handleLogin(); }} + /> + +
+ +
+ +
+ + +
+ +
+ + setRegEmail(e.target.value)} + className="pl-10" + /> +
+
+ {!(showInviteCode && regInviteCode) && ( +
+ +
+ setRegEmailCode(sanitizeCode(e.target.value))} + className="uppercase" + maxLength={10} + /> + +
+
+ )} +
+ +
+ + setRegNickname(e.target.value)} + className="pl-10" + /> +
+
+
+ +
+ + setRegPhone(e.target.value)} + className="pl-10" + /> +
+
+
+ +
+ + setRegPassword(e.target.value)} + className="pl-10 pr-10" + onKeyDown={(e) => { if (e.key === 'Enter') requestRegisterAgreement(); }} + /> + +
+
+ {/* Admin invite code */} +
+
+ + +
+ {showInviteCode && ( +
+ + setRegInviteCode(e.target.value)} + className="pl-10" + /> +
+ )} +
+ +

+ 注册即表示同意 + + 服务条款 + + 和 + + 隐私政策 + +

+
+
+
+
+ + {/* Forgot Password Dialog */} + + + + 忘记密码 + + 输入已验证邮箱,获取验证码后设置新密码。 + + +
+
+ + setResetEmail(e.target.value)} + /> +
+
+ +
+ setResetCode(sanitizeCode(e.target.value))} + className="uppercase" + maxLength={10} + /> + +
+
+
+ + setResetPassword(e.target.value)} + /> +
+
+ + setResetConfirmPassword(e.target.value)} + /> +
+
+
+ + +
+
+
+ + +
+
+ ); +} diff --git a/src/app/auth/register/page.tsx b/src/app/auth/register/page.tsx new file mode 100644 index 0000000..944caa1 --- /dev/null +++ b/src/app/auth/register/page.tsx @@ -0,0 +1,220 @@ +'use client'; + +import { useEffect, useState } from 'react'; +import { useRouter } from 'next/navigation'; +import Link from 'next/link'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; +import { Separator } from '@/components/ui/separator'; +import { Brush, Mail, Lock, User, Phone, Eye, EyeOff, Loader2 } from 'lucide-react'; +import { toast } from 'sonner'; +import { addCreditRecord } from '@/lib/credit-records-store'; +import { RegistrationAgreementDialog } from '@/components/auth/registration-agreement-dialog'; + +const EMAIL_REGEX = /^[^\s@<>"]+@[^\s@<>"]+\.[^\s@<>"]+$/; +const authInputIconClass = 'pointer-events-none absolute left-3 top-1/2 z-10 h-4 w-4 -translate-y-1/2 text-foreground/70 dark:text-foreground/80'; +const authPasswordToggleClass = 'absolute right-3 top-1/2 z-10 -translate-y-1/2 text-foreground/70 transition-colors hover:text-foreground dark:text-foreground/80'; + +function isEmail(value: string) { + return EMAIL_REGEX.test(value.trim()); +} + +function sanitizeCode(value: string) { + return value.replace(/[^a-z0-9]/gi, '').toUpperCase().slice(0, 10); +} + +function isStrongPassword(value: string) { + return value.length >= 8 && /[A-Za-z]/.test(value) && /\d/.test(value); +} + +export default function RegisterPage() { + const router = useRouter(); + const [loading, setLoading] = useState(false); + const [showPassword, setShowPassword] = useState(false); + const [email, setEmail] = useState(''); + const [password, setPassword] = useState(''); + const [nickname, setNickname] = useState(''); + const [phone, setPhone] = useState(''); + const [emailCode, setEmailCode] = useState(''); + const [sendingCode, setSendingCode] = useState(false); + const [codeCooldown, setCodeCooldown] = useState(0); + const [showAgreement, setShowAgreement] = useState(false); + + useEffect(() => { + if (codeCooldown <= 0) return; + const timer = window.setInterval(() => setCodeCooldown(prev => Math.max(0, prev - 1)), 1000); + return () => window.clearInterval(timer); + }, [codeCooldown]); + + const handleRegister = async () => { + if (!email || !password) { + toast.error('请填写邮箱和密码'); + return; + } + if (!isEmail(email)) { + toast.error('请输入正确的邮箱地址'); + return; + } + if (!isStrongPassword(password)) { + toast.error('密码至少 8 位,并同时包含字母和数字'); + return; + } + if (!emailCode) { + toast.error('请输入邮箱验证码'); + return; + } + setLoading(true); + try { + const res = await fetch('/api/auth/register', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ email, password, nickname, phone, emailCode, acceptedTerms: true }), + }); + const data = await res.json(); + if (!res.ok) throw new Error(data.error || '注册失败'); + toast.success('注册成功,赠送10积分体验金'); + addCreditRecord({ type: 'gift', amount: 10, balanceAfter: 10, description: '新用户注册奖励' }); + router.push('/create'); + } catch (err) { + toast.error(err instanceof Error ? err.message : '注册失败'); + } finally { + setLoading(false); + } + }; + + const requestRegisterAgreement = () => { + setShowAgreement(true); + }; + + const handleAgreeAndRegister = () => { + setShowAgreement(false); + handleRegister(); + }; + + const handleSendCode = async () => { + if (!isEmail(email)) { + toast.error('请输入正确的邮箱地址'); + return; + } + setSendingCode(true); + try { + const res = await fetch('/api/email/send-register-code', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ email }), + }); + const data = await res.json().catch(() => ({})); + if (!res.ok) throw new Error(data.error || '验证码发送失败'); + setCodeCooldown(data.cooldown || 60); + toast.success(data.message || '验证码已发送'); + } catch (err) { + toast.error(err instanceof Error ? err.message : '验证码发送失败'); + } finally { + setSendingCode(false); + } + }; + + return ( +
+
+
+
+
+
+ +
+ +
+ 妙境 + +
+ + + + 创建账号 + 注册即可获得10积分体验金 + + +
+ +
+ + setEmail(e.target.value)} className="pl-10" /> +
+
+
+ +
+ setEmailCode(sanitizeCode(e.target.value))} + className="uppercase" + maxLength={10} + /> + +
+
+
+ +
+ + setNickname(e.target.value)} className="pl-10" /> +
+
+
+ +
+ + setPhone(e.target.value)} className="pl-10" /> +
+
+
+ +
+ + setPassword(e.target.value)} className="pl-10 pr-10" /> + +
+
+ +

+ 注册即表示同意 + + 服务条款 + + 和 + + 隐私政策 + +

+

+ 已有账号? 去登录 +

+
+
+
+ +
+ ); +} diff --git a/src/app/console/dashboard/page.tsx b/src/app/console/dashboard/page.tsx new file mode 100644 index 0000000..aa34de0 --- /dev/null +++ b/src/app/console/dashboard/page.tsx @@ -0,0 +1,3 @@ +import { ConsoleDashboardPage } from '@/modules/console'; + +export default ConsoleDashboardPage; diff --git a/src/app/console/page.tsx b/src/app/console/page.tsx new file mode 100644 index 0000000..8c270f7 --- /dev/null +++ b/src/app/console/page.tsx @@ -0,0 +1,3 @@ +import { ConsoleLoginPage } from '@/modules/console'; + +export default ConsoleLoginPage; diff --git a/src/app/create/page.tsx b/src/app/create/page.tsx new file mode 100644 index 0000000..c06cf2e --- /dev/null +++ b/src/app/create/page.tsx @@ -0,0 +1,90 @@ +'use client'; + +import { Suspense, useState } from 'react'; +import { useSearchParams } from 'next/navigation'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { TextToImagePanel } from '@/components/create/text-to-image'; +import { ImageToImagePanel } from '@/components/create/image-to-image'; +import { TextToVideoPanel } from '@/components/create/text-to-video'; +import { ImageToVideoPanel } from '@/components/create/image-to-video'; +import ReversePromptPanel from '@/components/create/reverse-prompt-panel'; +import { Brush, ImagePlus, Video, Film, Loader2, FileSearch } from 'lucide-react'; + +function CreateContent() { + const searchParams = useSearchParams(); + const typeParam = searchParams.get('type') || 'text2img'; + + const typeMap: Record = { + text2img: 'text2img', + img2img: 'img2img', + text2video: 'text2video', + img2video: 'img2video', + reversePrompt: 'reversePrompt', + }; + + const [activeTab, setActiveTab] = useState(typeMap[typeParam] || 'text2img'); + + return ( + + + + + 文生图 + + + + 图生图 + + + + + + 图生视频 + + + + 图片反推 + + + + + + + + + + + + + + + + + setActiveTab('text2img')} + onUseForImageToImage={() => setActiveTab('img2img')} + /> + + + ); +} + +export default function CreatePage() { + return ( +
+
+
+

创作中心

+

+ 选择创作模式,释放你的想象力 +

+
+
}> + + +
+
+ ); +} diff --git a/src/app/gallery/page.tsx b/src/app/gallery/page.tsx new file mode 100644 index 0000000..4b72ffd --- /dev/null +++ b/src/app/gallery/page.tsx @@ -0,0 +1,910 @@ +'use client'; + +import { useState, useMemo, useEffect, useCallback } from 'react'; +import { Card, CardContent } from '@/components/ui/card'; +import { Badge } from '@/components/ui/badge'; +import { Button } from '@/components/ui/button'; +import { + LayoutGrid, + Heart, + Download, + Brush, + ImagePlus, + Video, + Film, + X, + Clock, + Cpu, + Sparkles, + Image as ImageIcon, + MessageSquare, + Copy, + Maximize2, + ArrowLeft, + Trash2, + Search, +} from 'lucide-react'; +import { copyTextToClipboard, downloadFile } from '@/lib/utils'; +import { usePublishedWorks, useCreationHistory, syncPublishedToSupabase, type PublishedWork } from '@/lib/creation-history-store'; +import { useAuth } from '@/lib/auth-store'; +import { FullscreenPreview } from '@/components/fullscreen-preview'; +import { toast } from 'sonner'; + +const CATEGORIES = [ + { value: 'all', label: '全部', icon: LayoutGrid }, + { value: 'text2img', label: '文生图', icon: Brush }, + { value: 'img2img', label: '图生图', icon: ImagePlus }, + { value: 'text2video', label: '文生视频', icon: Video }, + { value: 'img2video', label: '图生视频', icon: Film }, +]; + +/* ---------- Gallery Work (from API) ---------- */ +interface GalleryWork { + id: string; + type: string; + title?: string | null; + prompt?: string | null; + negativePrompt?: string | null; + url: string; + thumbnailUrl?: string | null; + width?: number | null; + height?: number | null; + duration?: number | null; + likes: number; + creditsCost?: number | null; + params: Record; + referenceImage?: string | null; + referenceImages?: string[]; + publisherId: string; + publisherNickname: string; + publisherAvatarUrl?: string | null; + publishedAt: string; +} + +function getCategoryFromWork(work: GalleryWork): string { + const mode = work.params?.creationMode || work.params?.workType || work.params?.mode; + if ( + mode === 'text2img' || + mode === 'img2img' || + mode === 'text2video' || + mode === 'img2video' + ) { + return mode; + } + if (work.type === 'text2video' || work.type === 'img2video') { + return work.type; + } + if (work.type === 'img2img') return work.type; + const hasReference = + Boolean(work.referenceImage) || + (Array.isArray(work.referenceImages) && work.referenceImages.length > 0) || + Boolean(work.params?.referenceImage) || + (Array.isArray(work.params?.referenceImages) && work.params.referenceImages.length > 0); + // Fallback: infer from type + referenceImage + if (work.type === 'video' || work.duration) { + return hasReference ? 'img2video' : 'text2video'; + } + return hasReference ? 'img2img' : 'text2img'; +} + +function getCategoryLabel(work: GalleryWork): string { + const cat = CATEGORIES.find(c => c.value === getCategoryFromWork(work)); + return cat?.label ?? work.type; +} + +function formatDate(iso: string): string { + try { + return new Date(iso).toLocaleDateString('zh-CN', { + year: 'numeric', + month: 'short', + day: 'numeric', + hour: '2-digit', + minute: '2-digit', + }); + } catch { + return iso; + } +} + +function getAvatarText(nickname: string): string { + const trimmed = nickname.trim(); + return trimmed ? trimmed.slice(0, 1).toUpperCase() : '匿'; +} + +function getWorkReferenceImages(work: GalleryWork): string[] { + const fromArray = Array.isArray(work.referenceImages) ? work.referenceImages : []; + const fromParams = Array.isArray(work.params?.referenceImages) + ? (work.params.referenceImages as unknown[]).filter((item): item is string => typeof item === 'string' && item.trim().length > 0) + : []; + const single = typeof work.referenceImage === 'string' && work.referenceImage.trim() + ? [work.referenceImage] + : typeof work.params?.referenceImage === 'string' && work.params.referenceImage.trim() + ? [work.params.referenceImage] + : []; + return [...new Set([...single, ...fromArray, ...fromParams].filter(url => url && !url.startsWith('data:') && !url.startsWith('[')))]; +} + +async function copyGalleryText(text: string, successMessage: string) { + const copied = await copyTextToClipboard(text); + if (copied) { + toast.success(successMessage); + } else { + toast.error('复制失败,请手动选择文本复制'); + } +} + +function getCreateUrlForCategory(category: string): string { + const type = category === 'img2img' || category === 'text2video' || category === 'img2video' + ? category + : 'text2img'; + return `/create?type=${type}`; +} + +type MediaSize = { width: number; height: number }; + +function getEstimatedWorkHeight(work: GalleryWork, measuredSize?: MediaSize): number { + const width = Number(measuredSize?.width || work.width || 0); + const height = Number(measuredSize?.height || work.height || 0); + const imageHeight = width > 0 && height > 0 ? Math.max(120, (height / width) * 320) : 320; + return imageHeight + 152 + 16; +} + +const galleryGlassPanel = + 'liquid-glass'; +const galleryGlassCard = + 'liquid-surface'; +const galleryGlassBlock = + 'rounded-xl border border-border bg-card/40'; +const detailGlassBlock = + 'rounded-xl border border-white/[0.08] bg-[#12161d]/82 shadow-[inset_0_1px_0_rgba(255,255,255,0.045),0_16px_36px_rgba(0,0,0,0.18)] backdrop-blur-xl light:border-amber-900/18 light:bg-white/36 light:text-foreground light:shadow-[inset_0_1px_0_rgba(255,255,255,0.70),0_16px_40px_rgba(83,61,27,0.12)]'; +const detailGlassInner = + 'rounded-md border border-white/[0.07] bg-[#0d1219]/80 light:border-amber-900/16 light:bg-white/32'; +const galleryMenuItemClass = + 'inline-flex h-10 cursor-pointer items-center gap-2.5 rounded-xl border border-transparent px-5 text-base font-semibold leading-none text-foreground/75 transition-colors hover:bg-white/[0.035]'; +const galleryMenuItemActiveClass = + 'border-transparent bg-white/[0.075] text-primary shadow-[inset_0_1px_0_rgba(255,255,255,0.12),0_0_18px_rgba(244,166,36,0.18),0_6px_18px_rgba(0,0,0,0.18)] [&_svg]:text-primary'; + +export default function GalleryPage() { + const [apiWorks, setApiWorks] = useState([]); + const [loading, setLoading] = useState(true); + const [syncStatus, setSyncStatus] = useState<'idle' | 'syncing' | 'done'>('idle'); + const [category, setCategory] = useState('all'); + const [likedIds, setLikedIds] = useState>(new Set()); + const [selectedWork, setSelectedWork] = useState(null); + const [fullscreenSrc, setFullscreenSrc] = useState(null); + const [sortBy, setSortBy] = useState<'newest' | 'popular'>('newest'); + const [searchQuery, setSearchQuery] = useState(''); + const [masonryColumnCount, setMasonryColumnCount] = useState(4); + const [measuredMediaSizes, setMeasuredMediaSizes] = useState>({}); + const [selectedGalleryIds, setSelectedGalleryIds] = useState>(new Set()); + + useEffect(() => { + const updateColumnCount = () => { + const width = window.innerWidth; + if (width >= 1280) setMasonryColumnCount(4); + else if (width >= 1024) setMasonryColumnCount(3); + else if (width >= 640) setMasonryColumnCount(2); + else setMasonryColumnCount(1); + }; + + updateColumnCount(); + window.addEventListener('resize', updateColumnCount); + return () => window.removeEventListener('resize', updateColumnCount); + }, []); + + // ESC to close detail overlay + useEffect(() => { + if (!selectedWork) return; + const handler = (e: KeyboardEvent) => { if (e.key === 'Escape') setSelectedWork(null); }; + window.addEventListener('keydown', handler); + return () => window.removeEventListener('keydown', handler); + }, [selectedWork]); + + // Prevent body scroll when detail is open + useEffect(() => { + if (selectedWork) { + document.body.style.overflow = 'hidden'; + } else { + document.body.style.overflow = ''; + } + return () => { document.body.style.overflow = ''; }; + }, [selectedWork]); + const { works: localPublished } = usePublishedWorks(); + const { records: creationHistory } = useCreationHistory(); + const { user, accessToken, isAdmin } = useAuth(); + + // Fetch works from API, after syncing localStorage to Supabase + const fetchWorks = useCallback(async () => { + setLoading(true); + try { + const params = new URLSearchParams({ sort: sortBy, limit: '300' }); + if (searchQuery.trim()) params.set('q', searchQuery.trim()); + const res = await fetch(`/api/gallery?${params.toString()}`); + if (res.ok) { + const data = await res.json(); + setApiWorks(data.works || []); + } + } catch { /* ignore */ } + setLoading(false); + }, [sortBy, searchQuery]); + + // Sync localStorage to Supabase on first mount only + useEffect(() => { + setSyncStatus('syncing'); + syncPublishedToSupabase().then(synced => { + setSyncStatus('done'); + if (synced > 0) { + // Re-fetch after sync to show newly synced works + fetchWorks(); + } + }).catch(() => { + setSyncStatus('done'); + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + useEffect(() => { + fetchWorks(); + }, [fetchWorks]); + + // Merge API works with localStorage published works + published creation history + // This ensures previously shared works are visible even if not yet in Supabase + const works = useMemo(() => { + const apiUrls = new Set(apiWorks.map(w => w.url)); + + // From localStorage published gallery + const localAsGallery: GalleryWork[] = localPublished + .filter(w => !apiUrls.has(w.url)) + .map(w => ({ + id: w.id, + type: w.type === 'video' ? (w.referenceImage ? 'img2video' : 'text2video') : (w.referenceImage ? 'img2img' : 'text2img'), + title: null, + prompt: w.prompt, + negativePrompt: w.negativePrompt, + url: w.url, + thumbnailUrl: null, + width: null, + height: null, + duration: null, + likes: w.likes || 0, + creditsCost: null, + params: { model: w.model, modelLabel: w.modelLabel, ...w.params }, + referenceImage: w.referenceImage, + referenceImages: w.referenceImages, + publisherId: w.publisherId, + publisherNickname: w.publisherNickname, + publisherAvatarUrl: null, + publishedAt: w.publishedAt, + })); + + // From creation history records marked as published + const existingUrls = new Set([...apiUrls, ...localAsGallery.map(w => w.url)]); + const historyPublished: GalleryWork[] = creationHistory + .filter(r => r.published && r.url && !existingUrls.has(r.url) && !r.url.startsWith('data:') && !r.url.startsWith('[')) + .map(r => ({ + id: r.id, + type: r.type === 'video' ? (r.referenceImage ? 'img2video' : 'text2video') : (r.referenceImage ? 'img2img' : 'text2img'), + title: null, + prompt: r.prompt, + negativePrompt: r.negativePrompt, + url: r.url, + thumbnailUrl: null, + width: null, + height: null, + duration: null, + likes: 0, + creditsCost: null, + params: { model: r.model, modelLabel: r.modelLabel, ...r.params }, + referenceImage: r.referenceImage, + referenceImages: r.referenceImages, + publisherId: user?.id || 'anonymous', + publisherNickname: user?.nickname || user?.email?.split('@')[0] || '匿名用户', + publisherAvatarUrl: user?.avatarUrl || null, + publishedAt: r.createdAt, + })); + + return [...apiWorks, ...localAsGallery, ...historyPublished]; + }, [apiWorks, localPublished, creationHistory, user]); + + const filteredWorks = useMemo(() => { + const query = searchQuery.trim().toLowerCase(); + return works.filter(work => { + if (category !== 'all' && getCategoryFromWork(work) !== category) return false; + if (!query) return true; + const haystack = [ + work.title, + work.prompt, + work.negativePrompt, + work.publisherNickname, + work.params?.model, + work.params?.modelLabel, + work.type, + ].map(value => String(value || '').toLowerCase()).join('\n'); + return haystack.includes(query); + }); + }, [works, category, searchQuery]); + + const apiWorkIds = useMemo(() => new Set(apiWorks.map(work => work.id)), [apiWorks]); + + const handleCardImageLoad = useCallback((workId: string, e: React.SyntheticEvent) => { + const img = e.currentTarget; + if (img.naturalWidth <= 0 || img.naturalHeight <= 0) return; + + setMeasuredMediaSizes(prev => { + const current = prev[workId]; + if (current?.width === img.naturalWidth && current?.height === img.naturalHeight) { + return prev; + } + return { + ...prev, + [workId]: { width: img.naturalWidth, height: img.naturalHeight }, + }; + }); + }, []); + + const masonryColumns = useMemo(() => { + const columns = Array.from({ length: masonryColumnCount }, () => [] as GalleryWork[]); + const columnHeights = Array.from({ length: masonryColumnCount }, () => 0); + filteredWorks.forEach((work) => { + const targetIndex = columnHeights.indexOf(Math.min(...columnHeights)); + columns[targetIndex].push(work); + columnHeights[targetIndex] += getEstimatedWorkHeight(work, measuredMediaSizes[work.id]); + }); + return columns; + }, [filteredWorks, masonryColumnCount, measuredMediaSizes]); + + const selectedReferenceImages = useMemo( + () => selectedWork ? getWorkReferenceImages(selectedWork) : [], + [selectedWork], + ); + + const toggleLike = (id: string, e?: React.MouseEvent) => { + e?.stopPropagation(); + if (likedIds.has(id)) return; + setLikedIds(prev => new Set(prev).add(id)); + }; + + const handleDownload = async (url: string, filename: string, e?: React.MouseEvent) => { + e?.stopPropagation(); + const result = await downloadFile(url, filename); + if (!result.ok) { + window.open(url, '_blank'); + } + }; + + const toggleSelectGalleryWork = (id: string, e?: React.MouseEvent) => { + e?.stopPropagation(); + setSelectedGalleryIds(prev => { + const next = new Set(prev); + if (next.has(id)) next.delete(id); + else next.add(id); + return next; + }); + }; + + const handleDeleteGalleryWorks = async (ids: string[], e?: React.MouseEvent) => { + e?.stopPropagation(); + const targetIds = ids.filter(id => apiWorkIds.has(id)); + if (targetIds.length === 0) { + toast.error('没有可删除的服务器画廊作品'); + return; + } + const confirmed = window.confirm(targetIds.length === 1 ? '确认从画廊移除这个作品?' : `确认从画廊批量移除 ${targetIds.length} 个作品?`); + if (!confirmed) return; + + try { + const res = await fetch('/api/gallery', { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + ...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}), + }, + body: JSON.stringify({ ids: targetIds }), + }); + const data = await res.json().catch(() => ({})); + if (!res.ok) { + throw new Error(data.error || '删除失败'); + } + const removedIds = new Set((data.ids || targetIds) as string[]); + setApiWorks(prev => prev.filter(work => !removedIds.has(work.id))); + setSelectedGalleryIds(prev => new Set([...prev].filter(id => !removedIds.has(id)))); + if (selectedWork && removedIds.has(selectedWork.id)) { + setSelectedWork(null); + } + toast.success(`已从画廊移除 ${data.removed ?? removedIds.size} 个作品`); + } catch (err) { + toast.error(err instanceof Error ? err.message : '删除失败'); + } + }; + + return ( +
+
+ {/* Header */} +
+
+

作品画廊

+ {syncStatus === 'syncing' && ( + 同步本地数据... + )} +
+

探索社区创作,发现灵感之美

+
+ +
+ + setSearchQuery(event.target.value)} + placeholder="搜索作品、用户、提示词、模型" + className="h-8 min-w-0 flex-1 bg-transparent text-sm font-medium outline-none placeholder:text-muted-foreground/70" + /> + {searchQuery && ( + + )} +
+ + {/* Filters */} +
+
+ {CATEGORIES.map((cat) => { + const Icon = cat.icon; + return ( + + ); + })} +
+
+ + + {isAdmin && selectedGalleryIds.size > 0 && ( + + )} +
+
+ + {/* Gallery Grid */} + {loading ? ( +
+ +

加载中...

+
+ ) : filteredWorks.length === 0 ? ( +
+ +

暂无作品

+

创作并发布你的作品,让大家一起欣赏

+ +
+ ) : ( +
+ {masonryColumns.map((columnWorks, columnIndex) => ( +
+ {columnWorks.map((work) => ( + setSelectedWork(work)} + > +
+ {(work.thumbnailUrl || (work.url && !work.url.startsWith('data:'))) ? ( + {(work.prompt handleCardImageLoad(work.id, e)} + onDoubleClick={(e) => { e.stopPropagation(); setFullscreenSrc(work.url); }} + /> + ) : ( +
+ +
+ )} + {isAdmin && apiWorkIds.has(work.id) && ( + + )} + {(work.type === 'video' || work.type === 'text2video' || work.type === 'img2video') && ( + + 视频 + + )} + + {getCategoryLabel(work)} + + {/* Hover overlay */} +
+

+ {work.prompt} +

+
+ + + {isAdmin && apiWorkIds.has(work.id) && ( + + )} +
+
+
+ +
+
+
+ {work.publisherAvatarUrl ? ( + {work.publisherNickname} + ) : ( + getAvatarText(work.publisherNickname) + )} +
+ + {work.publisherNickname} + +
+
+ + {work.likes + (likedIds.has(work.id) ? 1 : 0)} +
+
+

+ {work.prompt} +

+
+
+ ))} +
+ ))} +
+ )} +
+ + {/* Detail - Fullscreen Overlay */} + {selectedWork && ( +
{ if (e.target === e.currentTarget) setSelectedWork(null); }} + > +
+ {selectedWork.url && !selectedWork.url.startsWith('data:') && ( + <> + +
+
+ + )} + {/* Left: Image/Video */} +
+ {selectedWork.type === 'video' || selectedWork.type === 'text2video' || selectedWork.type === 'img2video' ? ( +
+ + {/* Right: Info Panel */} +
+
+ {/* Close header */} +
+ +

作品详情

+ +
+ +
+ {/* Publisher info */} +
+
+ {selectedWork.publisherAvatarUrl ? ( + {selectedWork.publisherNickname} + ) : ( + getAvatarText(selectedWork.publisherNickname) + )} +
+
+

{selectedWork.publisherNickname}

+

+ + {formatDate(selectedWork.publishedAt)} +

+
+
+ + {/* Prompt */} + {(selectedWork.prompt || selectedWork.negativePrompt) && ( +
+ {selectedWork.prompt && ( +
+
+

+ + 提示词 +

+ +
+
+

{selectedWork.prompt}

+
+
+ )} + {selectedWork.negativePrompt && ( +
+
+

+ + 负面提示词 +

+ +
+
+

+ {selectedWork.negativePrompt} +

+
+
+ )} +
+ )} + + {/* Reference Image */} + {selectedReferenceImages.length > 0 && ( +
+
+
+ +

参考图

+
+ {selectedReferenceImages.length} 张 +
+
+ {selectedReferenceImages.map((url, index) => ( +
+ {`参考图 setFullscreenSrc(url)} + /> +
+ + +
+
+ ))} +
+
+ )} + +
+ {/* Model & Params */} + {selectedWork.params && Object.keys(selectedWork.params).length > 0 && ( +
+
+ +

模型与参数

+
+
+ {(!!selectedWork.params.modelLabel || !!selectedWork.params.model) && ( +
+

模型

+

{String(selectedWork.params.modelLabel || selectedWork.params.model || '')}

+
+ )} +
+

类型

+ {getCategoryLabel(selectedWork)} +
+ {!!selectedWork.params.size && ( +
+

尺寸

+

{String(selectedWork.params.size)}

+
+ )} + {!!selectedWork.params.steps && ( +
+

步数

+

{String(selectedWork.params.steps)}

+
+ )} + {!!selectedWork.params.cfg_scale && ( +
+

引导系数

+

{String(selectedWork.params.cfg_scale)}

+
+ )} + {!!selectedWork.params.seed && ( +
+

种子

+

{String(selectedWork.params.seed)}

+
+ )} +
+
+ )} + +
+ + + {isAdmin && apiWorkIds.has(selectedWork.id) && ( + + )} +
+
+
+
+
+
+ )} + + {/* Fullscreen image preview overlay */} + setFullscreenSrc(null)} + /> +
+ ); +} + + diff --git a/src/app/globals.css b/src/app/globals.css new file mode 100644 index 0000000..e3b3d09 --- /dev/null +++ b/src/app/globals.css @@ -0,0 +1,609 @@ +@import url('https://fonts.googleapis.cn/css2?family=Noto+Serif+SC:wght@200..900&display=swap'); +@import 'tailwindcss'; +@import 'tw-animate-css'; + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-border: var(--border); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-muted-foreground: var(--muted-foreground); + --color-muted: var(--muted); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-primary: var(--primary); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --color-card: var(--card); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --radius-2xl: calc(var(--radius) + 8px); + --radius-3xl: calc(var(--radius) + 12px); + --radius-4xl: calc(var(--radius) + 16px); + --font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; + --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --font-serif: "Noto Serif SC", "Songti SC", "SimSun", ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; + --shadow-2xs: 0px 1px 2px 0px hsl(225 27.7778% 14.1176% / 0.02); + --shadow-xs: 0px 1px 2px 0px hsl(225 27.7778% 14.1176% / 0.02); + --shadow-sm: 0px 1px 2px 0px hsl(225 27.7778% 14.1176% / 0.04), 0px 1px 2px -1px hsl(225 27.7778% 14.1176% / 0.04); + --shadow-md: 0px 1px 2px 0px hsl(225 27.7778% 14.1176% / 0.04), 0px 2px 4px -1px hsl(225 27.7778% 14.1176% / 0.04); + --shadow-lg: 0px 1px 2px 0px hsl(225 27.7778% 14.1176% / 0.04), 0px 4px 6px -1px hsl(225 27.7778% 14.1176% / 0.04); + --shadow-xl: 0px 1px 2px 0px hsl(225 27.7778% 14.1176% / 0.04), 0px 8px 10px -1px hsl(225 27.7778% 14.1176% / 0.04); + --shadow-2xl: 0px 1px 2px 0px hsl(225 27.7778% 14.1176% / 0.10); +} + +:root { + --background: oklch(0.985 0.01 85); + --foreground: oklch(0.18 0.02 60); + --card: oklch(0.995 0.005 85); + --card-foreground: oklch(0.18 0.02 60); + --popover: oklch(0.995 0.005 85); + --popover-foreground: oklch(0.18 0.02 60); + --primary: oklch(0.62 0.17 55); + --primary-foreground: oklch(0.99 0.02 95); + --secondary: oklch(0.94 0.03 85); + --secondary-foreground: oklch(0.25 0.05 60); + --muted: oklch(0.92 0.025 80); + --muted-foreground: oklch(0.48 0.03 70); + --accent: oklch(0.90 0.06 90); + --accent-foreground: oklch(0.2 0.04 50); + --destructive: oklch(0.55 0.22 25); + --border: oklch(0.88 0.02 80); + --input: oklch(0.88 0.02 80); + --ring: oklch(0.62 0.17 55); + --chart-1: oklch(0.85 0.15 90); + --chart-2: oklch(0.75 0.16 70); + --chart-3: oklch(0.65 0.17 55); + --chart-4: oklch(0.55 0.15 45); + --chart-5: oklch(0.45 0.12 40); + --sidebar: oklch(0.96 0.015 85); + --sidebar-foreground: oklch(0.18 0.02 60); + --sidebar-primary: oklch(0.62 0.17 55); + --sidebar-primary-foreground: oklch(0.99 0.02 95); + --sidebar-accent: oklch(0.92 0.025 80); + --sidebar-accent-foreground: oklch(0.2 0.04 50); + --sidebar-border: oklch(0.88 0.02 80); + --sidebar-ring: oklch(0.62 0.17 55); + --radius: 0.8rem; +} + +.dark { + --background: oklch(0.16 0.015 260); + --foreground: oklch(0.98 0.01 80); + --card: oklch(0.21 0.025 260); + --card-foreground: oklch(0.98 0.01 80); + --popover: oklch(0.25 0.025 260); + --popover-foreground: oklch(0.98 0.01 80); + --primary: oklch(0.75 0.15 70); + --primary-foreground: oklch(0.2 0.05 50); + --secondary: oklch(0.26 0.03 260); + --secondary-foreground: oklch(0.98 0 0); + --muted: oklch(0.23 0.02 260); + --muted-foreground: oklch(0.65 0.02 260); + --accent: oklch(0.28 0.06 70); + --accent-foreground: oklch(0.98 0.02 80); + --destructive: oklch(0.58 0.18 25); + --border: oklch(1 0 0 / 12%); + --input: oklch(1 0 0 / 18%); + --ring: oklch(0.75 0.15 70); + --chart-1: oklch(0.85 0.15 90); + --chart-2: oklch(0.75 0.16 70); + --chart-3: oklch(0.65 0.17 55); + --chart-4: oklch(0.55 0.15 45); + --chart-5: oklch(0.45 0.12 40); + --sidebar: oklch(0.19 0.02 260); + --sidebar-foreground: oklch(0.98 0.01 80); + --sidebar-primary: oklch(0.75 0.15 70); + --sidebar-primary-foreground: oklch(0.2 0.05 50); + --sidebar-accent: oklch(0.24 0.025 260); + --sidebar-accent-foreground: oklch(0.98 0.01 80); + --sidebar-border: oklch(1 0 0 / 12%); + --sidebar-ring: oklch(0.75 0.15 70); +} + +@custom-variant dark (&:is(.dark *)); +@custom-variant light (&:is(.light *)); + +@layer base { + * { + @apply border-border outline-ring/50; + + } + body { + @apply bg-background text-foreground font-serif; + font-size: 17px; + line-height: 1.65; + + } + + .light body { + background: + linear-gradient(135deg, rgb(250 247 241) 0%, rgb(237 242 248) 42%, rgb(251 247 236) 100%), + var(--background); + } + + @media (max-width: 767px) { + body { + padding-bottom: calc(4.25rem + env(safe-area-inset-bottom)); + font-size: 16px; + line-height: 1.55; + } + } +} + +@layer components { + .liquid-surface { + position: relative; + overflow: hidden; + isolation: isolate; + border: 1px solid rgb(255 255 255 / 0.085); + background: + linear-gradient(180deg, rgb(18 25 38 / 0.78), rgb(7 11 19 / 0.72)), + rgb(8 13 22 / 0.78); + box-shadow: + inset 0 1px 0 rgb(255 255 255 / 0.07), + 0 12px 30px rgb(0 0 0 / 0.22); + backdrop-filter: blur(14px) saturate(112%); + -webkit-backdrop-filter: blur(14px) saturate(112%); + } + + .liquid-surface:hover { + border-color: rgb(255 255 255 / 0.085); + } + + .liquid-glass { + position: relative; + overflow: hidden; + isolation: isolate; + border: 1px solid rgb(255 255 255 / 0.12); + background: + linear-gradient(180deg, rgb(255 255 255 / 0.075), rgb(255 255 255 / 0.026) 34%, rgb(2 6 23 / 0.38)), + rgb(10 16 27 / 0.70); + box-shadow: + inset 0 1px 0 rgb(255 255 255 / 0.12), + inset 0 0 0 1px rgb(255 255 255 / 0.025), + 0 16px 38px rgb(0 0 0 / 0.26); + backdrop-filter: blur(20px) saturate(122%); + -webkit-backdrop-filter: blur(20px) saturate(122%); + } + + .liquid-glass::before { + content: ""; + position: absolute; + inset: 0; + z-index: 0; + pointer-events: none; + border-radius: inherit; + background: + linear-gradient(110deg, rgb(255 255 255 / 0.11), transparent 24% 80%, rgb(244 166 36 / 0.035)), + linear-gradient(180deg, rgb(255 255 255 / 0.055), transparent 30%); + opacity: 0.46; + } + + .liquid-glass:hover { + border-color: rgb(255 255 255 / 0.12); + } + + .liquid-glass:hover::before { + opacity: 0.46; + } + + .liquid-glass:active { + filter: none; + } + + .liquid-glass-soft { + position: relative; + overflow: hidden; + isolation: isolate; + border: 1px solid rgb(255 255 255 / 0.085); + background: + linear-gradient(180deg, rgb(255 255 255 / 0.044), rgb(255 255 255 / 0.012) 36%, rgb(2 6 23 / 0.26)), + rgb(8 13 22 / 0.66); + box-shadow: + inset 0 1px 0 rgb(255 255 255 / 0.075), + 0 10px 28px rgb(0 0 0 / 0.20); + backdrop-filter: blur(16px) saturate(116%); + -webkit-backdrop-filter: blur(16px) saturate(116%); + } + + .liquid-glass-soft:hover { + border-color: rgb(255 255 255 / 0.085); + } + + .liquid-glass-control { + position: relative; + overflow: hidden; + border: 1px solid rgb(255 255 255 / 0.105); + background: + linear-gradient(180deg, rgb(255 255 255 / 0.065), rgb(255 255 255 / 0.02) 44%, rgb(2 6 23 / 0.26)), + rgb(15 23 42 / 0.64); + box-shadow: + inset 0 1px 0 rgb(255 255 255 / 0.09), + 0 8px 20px rgb(0 0 0 / 0.16); + backdrop-filter: blur(14px) saturate(118%); + -webkit-backdrop-filter: blur(14px) saturate(118%); + } + + .liquid-glass-control:hover { + border-color: rgb(255 255 255 / 0.105); + } + + .liquid-glass-control:active { + transform: none; + } + + .glass-panel { + position: relative; + overflow: hidden; + isolation: isolate; + border: 1px solid rgb(255 255 255 / 0.12); + background: + linear-gradient(180deg, rgb(255 255 255 / 0.075), rgb(255 255 255 / 0.026) 34%, rgb(2 6 23 / 0.38)), + rgb(10 16 27 / 0.70); + box-shadow: + inset 0 1px 0 rgb(255 255 255 / 0.12), + inset 0 0 0 1px rgb(255 255 255 / 0.025), + 0 16px 38px rgb(0 0 0 / 0.26); + backdrop-filter: blur(20px) saturate(122%); + -webkit-backdrop-filter: blur(20px) saturate(122%); + } + + .glass-card { + position: relative; + overflow: hidden; + isolation: isolate; + border: 1px solid rgb(255 255 255 / 0.085); + background: + linear-gradient(180deg, rgb(255 255 255 / 0.044), rgb(255 255 255 / 0.012) 36%, rgb(2 6 23 / 0.26)), + rgb(8 13 22 / 0.66); + box-shadow: + inset 0 1px 0 rgb(255 255 255 / 0.075), + 0 10px 28px rgb(0 0 0 / 0.20); + backdrop-filter: blur(16px) saturate(116%); + -webkit-backdrop-filter: blur(16px) saturate(116%); + } + + .glass-popover { + @apply border border-white/20 bg-popover/80 shadow-xl shadow-black/10 backdrop-blur-xl backdrop-saturate-150 dark:border-white/10 dark:bg-popover/68 dark:shadow-black/30; + } + + .light .liquid-surface, + .light .liquid-glass, + .light .glass-panel { + border-color: rgb(105 86 54 / 0.18); + background: + linear-gradient(180deg, rgb(255 255 255 / 0.54), rgb(255 255 255 / 0.22) 46%, rgb(248 243 232 / 0.16)), + linear-gradient(135deg, rgb(255 255 255 / 0.20), rgb(213 226 241 / 0.12) 42%, rgb(238 204 126 / 0.10)), + rgb(255 255 255 / 0.28); + box-shadow: + inset 0 1px 0 rgb(255 255 255 / 0.78), + inset 0 -1px 0 rgb(103 82 45 / 0.08), + 0 18px 48px rgb(73 55 26 / 0.13), + 0 2px 10px rgb(255 255 255 / 0.34); + backdrop-filter: blur(26px) saturate(168%) contrast(104%); + -webkit-backdrop-filter: blur(26px) saturate(168%) contrast(104%); + } + + .light .liquid-glass-soft, + .light .liquid-glass-control, + .light .glass-card { + border-color: rgb(105 86 54 / 0.15); + background: + linear-gradient(180deg, rgb(255 255 255 / 0.46), rgb(255 255 255 / 0.18) 52%, rgb(246 240 229 / 0.14)), + linear-gradient(135deg, rgb(255 255 255 / 0.18), rgb(216 228 241 / 0.10) 44%, rgb(238 204 126 / 0.08)), + rgb(255 255 255 / 0.22); + box-shadow: + inset 0 1px 0 rgb(255 255 255 / 0.70), + inset 0 -1px 0 rgb(103 82 45 / 0.06), + 0 12px 34px rgb(73 55 26 / 0.10); + backdrop-filter: blur(22px) saturate(158%) contrast(103%); + -webkit-backdrop-filter: blur(22px) saturate(158%) contrast(103%); + } + + .light .liquid-glass::before, + .light .glass-panel::before, + .light .glass-card::before, + .light .liquid-glass-soft::before, + .light .liquid-glass-control::before, + .light .liquid-surface::before { + content: ""; + position: absolute; + inset: 0; + z-index: 0; + pointer-events: none; + border-radius: inherit; + background: + linear-gradient(115deg, rgb(255 255 255 / 0.50), transparent 24% 78%, rgb(214 162 62 / 0.10)), + linear-gradient(180deg, rgb(255 255 255 / 0.34), transparent 38%); + opacity: 0.56; + } + + .light .glass-popover { + border-color: rgb(105 86 54 / 0.16); + background: rgb(255 255 255 / 0.42); + box-shadow: + inset 0 1px 0 rgb(255 255 255 / 0.72), + 0 18px 44px rgb(73 55 26 / 0.12); + backdrop-filter: blur(24px) saturate(160%); + -webkit-backdrop-filter: blur(24px) saturate(160%); + } + + .light [data-slot="input"], + .light [data-slot="textarea"], + .light [data-slot="select-trigger"], + .light input, + .light textarea, + .light button[role="combobox"] { + border-color: rgb(116 88 43 / 0.44) !important; + background: + linear-gradient(180deg, rgb(255 255 255 / 0.72), rgb(255 255 255 / 0.42)), + rgb(255 255 255 / 0.46) !important; + box-shadow: + inset 0 0 0 1px rgb(116 88 43 / 0.16), + inset 0 1px 0 rgb(255 255 255 / 0.78), + 0 4px 14px rgb(92 69 32 / 0.07) !important; + } + + .light [data-slot="input"]:hover, + .light [data-slot="textarea"]:hover, + .light [data-slot="select-trigger"]:hover, + .light input:hover, + .light textarea:hover, + .light button[role="combobox"]:hover { + border-color: rgb(116 88 43 / 0.58) !important; + background: + linear-gradient(180deg, rgb(255 255 255 / 0.78), rgb(255 255 255 / 0.48)), + rgb(255 255 255 / 0.52) !important; + box-shadow: + inset 0 0 0 1px rgb(116 88 43 / 0.22), + inset 0 1px 0 rgb(255 255 255 / 0.82), + 0 5px 16px rgb(92 69 32 / 0.08) !important; + } + + .light [data-slot="input"]:focus-visible, + .light [data-slot="textarea"]:focus-visible, + .light [data-slot="select-trigger"]:focus-visible, + .light input:focus-visible, + .light textarea:focus-visible, + .light button[role="combobox"]:focus-visible { + border-color: rgb(196 126 30 / 0.86) !important; + box-shadow: + inset 0 0 0 2px rgb(244 166 36 / 0.30), + 0 0 0 1px rgb(244 166 36 / 0.24), + 0 8px 22px rgb(92 69 32 / 0.08) !important; + } + + .light .border-dashed { + border-color: rgb(116 88 43 / 0.42) !important; + box-shadow: + inset 0 0 0 1px rgb(116 88 43 / 0.10), + 0 10px 30px rgb(92 69 32 / 0.06); + } + + .light .border-dotted { + border-color: rgb(116 88 43 / 0.38) !important; + } + + @media (max-width: 767px) { + .mobile-page-shell { + @apply px-3 py-4; + } + + .mobile-stack { + @apply grid grid-cols-1 gap-4; + } + + .mobile-card-list { + @apply space-y-3; + } + } + + @media (prefers-reduced-motion: reduce) {} +} + +/* Markdown styles for announcements */ +.announcement-markdown { + font-size: 0.875rem; + line-height: 1.7; + color: var(--foreground); +} +.announcement-markdown h1 { + font-size: 1.5rem; + font-weight: 700; + margin: 0.75rem 0 0.5rem; + padding-bottom: 0.3rem; + border-bottom: 1px solid var(--border); +} +.announcement-markdown h2 { + font-size: 1.25rem; + font-weight: 700; + margin: 0.75rem 0 0.4rem; +} +.announcement-markdown h3 { + font-size: 1.1rem; + font-weight: 600; + margin: 0.6rem 0 0.3rem; +} +.announcement-markdown h4, .announcement-markdown h5, .announcement-markdown h6 { + font-weight: 600; + margin: 0.5rem 0 0.25rem; +} +.announcement-markdown p { + margin: 0.4rem 0; +} +.announcement-markdown strong { + font-weight: 700; +} +.announcement-markdown em { + font-style: italic; +} +.announcement-markdown del { + text-decoration: line-through; + opacity: 0.6; +} +.announcement-markdown ul, .announcement-markdown ol { + margin: 0.4rem 0; + padding-left: 1.5rem; +} +.announcement-markdown ul { + list-style-type: disc; +} +.announcement-markdown ol { + list-style-type: decimal; +} +.announcement-markdown li { + margin: 0.15rem 0; +} +.announcement-markdown blockquote { + margin: 0.5rem 0; + padding: 0.5rem 0.75rem; + border-left: 3px solid var(--primary); + background: var(--muted); + border-radius: 0 0.375rem 0.375rem 0; +} +.announcement-markdown blockquote p { + margin: 0.15rem 0; +} +.announcement-markdown code { + font-size: 0.8rem; + padding: 0.15rem 0.35rem; + background: var(--muted); + border-radius: 0.25rem; + font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, monospace; +} +.announcement-markdown pre { + margin: 0.5rem 0; + padding: 0.75rem; + background: var(--muted); + border-radius: 0.375rem; + overflow-x: auto; +} +.announcement-markdown pre code { + padding: 0; + background: transparent; + font-size: 0.8rem; +} +.announcement-markdown a { + color: var(--primary); + text-decoration: underline; + text-underline-offset: 2px; +} +.announcement-markdown a:hover { + opacity: 0.8; +} +.announcement-markdown hr { + margin: 0.75rem 0; + border-color: var(--border); +} +.announcement-markdown table { + width: 100%; + margin: 0.5rem 0; + border-collapse: collapse; + font-size: 0.8rem; +} +.announcement-markdown th, .announcement-markdown td { + border: 1px solid var(--border); + padding: 0.4rem 0.6rem; + text-align: left; +} +.announcement-markdown th { + background: var(--muted); + font-weight: 600; +} +.announcement-markdown img { + max-width: 100%; + border-radius: 0.375rem; +} + +@keyframes golden-shimmer { + 0% { + transform: translateX(-18%) skewX(-10deg); + opacity: 0.35; + } + 45% { + opacity: 0.95; + } + 100% { + transform: translateX(18%) skewX(-10deg); + opacity: 0.42; + } +} + +@keyframes golden-sweep { + 0% { + transform: translateX(-34%) translateY(-50%) rotate(-8deg); + opacity: 0; + } + 18% { + opacity: 0.7; + } + 52% { + opacity: 1; + } + 100% { + transform: translateX(34%) translateY(-50%) rotate(-8deg); + opacity: 0; + } +} + +@keyframes golden-breathe { + 0%, 100% { + transform: translate(-50%, -50%) scale(0.86); + opacity: 0.36; + } + 50% { + transform: translate(-50%, -50%) scale(1.18); + opacity: 0.72; + } +} + +@keyframes golden-drift { + 0% { + transform: translateX(0) scale(0.95); + opacity: 0.22; + } + 45% { + opacity: 0.62; + } + 100% { + transform: translateX(240%) scale(1.08); + opacity: 0.2; + } +} + +@keyframes golden-float-random { + 0%, 100% { + transform: translate(-50%, -50%) translate3d(0, 0, 0) scale(0.88); + filter: blur(28px); + } + 42% { + transform: translate(-50%, -50%) translate3d(var(--float-x), var(--float-y), 0) scale(1.16); + filter: blur(38px); + } + 68% { + transform: translate(-50%, -50%) translate3d(calc(var(--float-x) * -0.35), calc(var(--float-y) * 0.42), 0) scale(1.02); + filter: blur(34px); + } +} diff --git a/src/app/help/page.tsx b/src/app/help/page.tsx new file mode 100644 index 0000000..0cb524c --- /dev/null +++ b/src/app/help/page.tsx @@ -0,0 +1,5 @@ +import { SitePolicyPage } from '@/components/site-policy-page'; + +export default function HelpPage() { + return ; +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 0000000..6d0a987 --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,46 @@ +import type { Metadata } from 'next'; +import { Inspector } from 'react-dev-inspector'; +import { ThemeProvider } from 'next-themes'; +import { AppShell } from '@/modules/web'; +import './globals.css'; + +export const metadata: Metadata = { + title: { + default: '妙境 - AI创作平台', + template: '%s | 妙境', + }, + description: '妙手丹青,境随心造 - 一站式AI多模态创作平台,提供文生图、图生图、文生视频、图生视频四大核心能力', + icons: { + icon: '/favicon.png', + apple: '/apple-touch-icon.png', + }, + keywords: [ + '妙境', + 'AI创作', + '文生图', + '图生图', + '文生视频', + '图生视频', + 'AI绘画', + 'AI视频', + ], +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + const isDev = process.env.COZE_PROJECT_ENV === 'DEV'; + + return ( + + + + {isDev && } + {children} + + + + ); +} diff --git a/src/app/page.tsx b/src/app/page.tsx new file mode 100644 index 0000000..b82a8dd --- /dev/null +++ b/src/app/page.tsx @@ -0,0 +1,293 @@ +import Link from 'next/link'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent } from '@/components/ui/card'; +import { Badge } from '@/components/ui/badge'; +import { AnnouncementPopup } from '@/components/announcement-popup'; +import { BillingPlanGuard } from '@/components/billing-plan-guard'; +import { SiteName, SiteLogo } from '@/components/site-brand'; +import { SiteFooter } from '@/components/site-footer'; +import { + Brush, + ImagePlus, + Video, + Film, + ArrowRight, + Zap, + Shield, + Coins, + Layers, + Check, + Sparkles, +} from 'lucide-react'; + +const features = [ + { + icon: Brush, + title: '文生图', + desc: '用文字描述你的想象,AI即刻生成精美画作。支持多种风格、尺寸与参数调优。', + href: '/create?type=text2img', + gradient: 'from-amber-500/20 to-orange-500/10', + }, + { + icon: ImagePlus, + title: '图生图', + desc: '上传参考图片,AI基于你的素材进行风格迁移、场景变换和创意延展。', + href: '/create?type=img2img', + gradient: 'from-emerald-500/20 to-teal-500/10', + }, + { + icon: Video, + title: '文生视频', + desc: '输入场景描述,AI生成流畅的动态视频。支持多种镜头语言和风格设定。', + href: '/create?type=text2video', + gradient: 'from-rose-500/20 to-pink-500/10', + }, + { + icon: Film, + title: '图生视频', + desc: '将静态图片转化为动态视频,照片动画化、产品展示、场景延续一站搞定。', + href: '/create?type=img2video', + gradient: 'from-sky-500/20 to-cyan-500/10', + }, +]; + +const highlights = [ + { icon: Zap, title: '极速创作', desc: '数秒出图,分钟出视频,AI辅助将传统流程缩短90%' }, + { icon: Shield, title: '数据安全', desc: '多租户数据隔离,企业级安全标准,创作内容私密保护' }, + { icon: Coins, title: '灵活计费', desc: '积分制+订阅制双模式,按需付费,用多少花多少' }, + { icon: Layers, title: '多模型支持', desc: '兼容主流AI模型,支持自备API,灵活切换无锁定' }, +]; + +const pricing = [ + { + tier: '免费版', + price: '0', + desc: '体验核心创作能力', + features: ['每日5次创作额度', '标准画质输出', '社区作品展示', '基础参数调整'], + cta: '免费开始', + popular: false, + }, + { + tier: '基础版', + price: '29', + desc: '适合轻度创作者', + features: ['每日50次创作额度', '高清画质输出', '私有作品存储', '全部参数解锁', '作品批量下载'], + cta: '立即订阅', + popular: false, + }, + { + tier: '专业版', + price: '99', + desc: '适合专业创作者与团队', + features: ['无限创作额度', '4K超清输出', '自定义API接入', '批量处理能力', '优先处理队列', '高级风格预设'], + cta: '升级专业版', + popular: true, + }, + { + tier: '企业版', + price: '499', + desc: '适合企业与大型团队', + features: ['无限创作+团队协作', '专属API额度', '品牌风格定制', '私有化部署选项', '7x24技术支持', '商业版权保障'], + cta: '联系销售', + popular: false, + }, +]; + +export default function HomePage() { + return ( +
+ {/* Announcement Popup */} + + + {/* Hero Section */} +
+ {/* Background decoration */} +
+
+
+
+ +
+ + + 一站式AI多模态创作平台 + + +

+ 妙手丹青 + 境随心造 +

+ +

+ 用AI释放你的创造力。文生图、图生图、文生视频、图生视频 — + 四大核心能力,从想象到作品只需一步。 +

+ +
+ + + + + + +
+ + {/* Stats */} +
+ {[ + { value: '4', label: '核心创作能力' }, + { value: '10s', label: '平均出图时间' }, + { value: '100+', label: '预设风格' }, + { value: '99.9%', label: '服务可用性' }, + ].map((stat) => ( +
+
{stat.value}
+
{stat.label}
+
+ ))} +
+
+
+ + {/* Core Features */} +
+
+
+

四大核心能力

+

从文字到画面,从静态到动态,全方位AI创作体验

+
+ +
+ {features.map((feat) => { + const Icon = feat.icon; + return ( + + + +
+ +
+

+ {feat.title} +

+

+ {feat.desc} +

+
+ 立即体验 +
+
+
+ + ); + })} +
+
+
+ + {/* Highlights */} +
+
+
+

为什么选择妙境

+

创作无界,效率无限

+
+ +
+ {highlights.map((item) => { + const Icon = item.icon; + return ( +
+
+ +
+

{item.title}

+

{item.desc}

+
+ ); + })} +
+
+
+ + {/* Pricing */} + +
+
+
+

灵活的计费方案

+

按需选择,从免费体验到企业定制

+
+ +
+ {pricing.map((plan) => ( + + {plan.popular && ( +
+ 最受欢迎 +
+ )} + +

{plan.tier}

+
+ ¥{plan.price} + /月 +
+

{plan.desc}

+
    + {plan.features.map((f) => ( +
  • + + {f} +
  • + ))} +
+ + + +
+
+ ))} +
+
+
+
+ + {/* CTA */} +
+
+

准备好了吗?

+

+ 加入数千名创作者,用AI开启你的创作之旅 +

+
+ + + +
+
+
+ + +
+ ); +} diff --git a/src/app/privacy/page.tsx b/src/app/privacy/page.tsx new file mode 100644 index 0000000..f21adba --- /dev/null +++ b/src/app/privacy/page.tsx @@ -0,0 +1,5 @@ +import { SitePolicyPage } from '@/components/site-policy-page'; + +export default function PrivacyPage() { + return ; +} diff --git a/src/app/profile/page.tsx b/src/app/profile/page.tsx new file mode 100644 index 0000000..64faf15 --- /dev/null +++ b/src/app/profile/page.tsx @@ -0,0 +1,767 @@ +'use client'; + +import React, { useState, useEffect } from 'react'; +import { useRouter } from 'next/navigation'; +import dynamic from 'next/dynamic'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; +import { Badge } from '@/components/ui/badge'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { Separator } from '@/components/ui/separator'; +import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; +import type { ManagedModelConfigResponse, ManagedModelRecommendation, ManagedModelType } from '@/lib/model-config-types'; +import { useCustomApiKeys } from '@/lib/custom-api-store'; +import { useCreationHistory, type CreationRecord, isPlaceholder } from '@/lib/creation-history-store'; +import { useCreditRecords, formatRecordTime } from '@/lib/credit-records-store'; +import { useUserOrders, formatOrderTime } from '@/lib/order-store'; +import { useAuth } from '@/lib/auth-store'; +import { useSiteConfig } from '@/lib/site-config'; +import { CreationDetailDialog } from '@/components/creation-detail-dialog'; +import { + User, + CreditCard, + Crown, + Receipt, + Image, + Key, + Coins, + Calendar, + Shield, + TrendingUp, + Gift, + Zap, + Settings, + Globe, + Cpu, + Trash2, + Eye, + EyeOff, + Plus, + Check, + Loader2, + Film, + LogOut, + LogIn, + ExternalLink, + Sparkles, + MessageSquare, + ImageOff, + Camera, + MailCheck, +} from 'lucide-react'; + +const EMAIL_REGEX = /^[^\s@<>"]+@[^\s@<>"]+\.[^\s@<>"]+$/; + +function isEmail(value: string) { + return EMAIL_REGEX.test(value.trim()); +} + +function sanitizeCode(value: string) { + return value.replace(/[^a-z0-9]/gi, '').toUpperCase().slice(0, 10); +} + +const ApiKeyManager = dynamic(() => import('@/components/profile/api-key-manager'), { ssr: false }); +const CreationHistoryTab = dynamic(() => import('@/components/profile/creation-history-tab'), { ssr: false }); +const CreditsTab = dynamic(() => import('@/components/profile/credits-tab'), { ssr: false }); +const OrdersTab = dynamic(() => import('@/components/profile/orders-tab'), { ssr: false }); +const membershipTiers = [ + { tier: 'free', name: '免费版', price: 0, dailyQuota: 5, features: ['每日5次创作', '标准画质', '社区展示'] }, + { tier: 'pro', name: 'Pro版', price: 29, dailyQuota: 50, features: ['每日50次创作', '高清画质', '私有存储', '批量下载'] }, + { tier: 'max', name: 'Max版', price: 99, dailyQuota: -1, features: ['无限创作', '4K超清', '自定义API', '批量处理', '优先队列'] }, + { tier: 'ultra', name: 'Ultra版', price: 499, dailyQuota: -1, features: ['团队协作', '专属额度', '品牌定制', '私有部署', '7x24支持'] }, +]; + +const membershipRank: Record = { + free: 0, + basic: 1, + pro: 1, + max: 2, + enterprise: 3, + ultra: 3, +}; + +function normalizeMembershipTier(tier?: string | null) { + if (tier === 'basic') return 'pro'; + if (tier === 'enterprise') return 'ultra'; + return tier || 'free'; +} + +export default function ProfilePage() { + const { isLoggedIn, user, accessToken, logout, isAdmin, isVip, refreshProfile, updateProfile } = useAuth(); + const { config: siteConfig } = useSiteConfig(); + const router = useRouter(); + const [activeTab, setActiveTab] = useState('account'); + const [mounted, setMounted] = useState(false); + const [accountForm, setAccountForm] = useState({ nickname: '', email: '', phone: '', avatarUrl: '' }); + const [passwordForm, setPasswordForm] = useState({ currentPassword: '', newPassword: '', confirmPassword: '' }); + const [savingAccount, setSavingAccount] = useState(false); + const [processingAvatar, setProcessingAvatar] = useState(false); + const [accountMessage, setAccountMessage] = useState<{ type: 'success' | 'error'; text: string } | null>(null); + const [showEmailVerify, setShowEmailVerify] = useState(false); + const [emailVerifyCode, setEmailVerifyCode] = useState(''); + const [emailVerifyCooldown, setEmailVerifyCooldown] = useState(0); + const [sendingEmailCode, setSendingEmailCode] = useState(false); + const [verifyingEmail, setVerifyingEmail] = useState(false); + const { records: creationRecords } = useCreationHistory(); + const { records: creditRecords } = useCreditRecords(); + const { orders } = useUserOrders(); + const membershipEnabled = siteConfig.membershipEnabled !== false; + + useEffect(() => { + setMounted(true); + }, []); + + // Refresh profile from server on mount to pick up admin changes + useEffect(() => { + if (isLoggedIn) { + refreshProfile(); + } + }, [isLoggedIn, refreshProfile]); + + useEffect(() => { + if (!membershipEnabled && ['membership', 'credits', 'orders'].includes(activeTab)) { + setActiveTab('account'); + } + }, [membershipEnabled, activeTab]); + + useEffect(() => { + if (!user) return; + setAccountForm({ + nickname: user.nickname || '', + email: user.email || '', + phone: user.phone || '', + avatarUrl: user.avatarUrl || '', + }); + }, [user?.id, user?.nickname, user?.email, user?.phone, user?.avatarUrl]); + + useEffect(() => { + if (emailVerifyCooldown <= 0) return; + const timer = window.setInterval(() => setEmailVerifyCooldown(prev => Math.max(0, prev - 1)), 1000); + return () => window.clearInterval(timer); + }, [emailVerifyCooldown]); + + // Use auth store data directly + const profile = { + nickname: user?.nickname || '游客', + email: user?.email || '', + phone: user?.phone || '', + role: user?.role || 'user', + membership_tier: user?.membershipTier || 'free', + credits_balance: user?.creditsBalance ?? 0, + daily_quota_used: user?.dailyQuotaUsed ?? 0, + daily_quota_limit: user?.dailyQuotaLimit ?? 5, + avatar_url: user?.avatarUrl || '', + created_at: user?.createdAt || '', + email_verified: user?.emailVerified === true, + email_verified_at: user?.emailVerifiedAt || '', + }; + + const normalizedMembershipTier = normalizeMembershipTier(profile.membership_tier); + const currentMembershipRank = membershipRank[normalizedMembershipTier] ?? 0; + const tierInfo = membershipTiers.find(t => t.tier === normalizedMembershipTier) || membershipTiers[0]; + + // Role display info + const roleInfo: Record = { + admin: { label: '管理员', color: 'text-primary' }, + enterprise_admin: { label: '企业管理员', color: 'text-primary' }, + vip: { label: 'VIP', color: 'text-primary' }, + user: { label: '普通用户', color: 'text-muted-foreground' }, + }; + const currentRole = roleInfo[profile.role] || roleInfo.user; + + const handleLogout = () => { + logout(); + router.push('/'); + }; + + const handleAvatarChange = (event: React.ChangeEvent) => { + const file = event.target.files?.[0]; + event.target.value = ''; + if (!file) return; + + if (!file.type.startsWith('image/')) { + setAccountMessage({ type: 'error', text: '请选择图片文件作为头像' }); + return; + } + + if (file.size > 5 * 1024 * 1024) { + setAccountMessage({ type: 'error', text: '头像图片不能超过 5MB' }); + return; + } + + setProcessingAvatar(true); + setAccountMessage(null); + + const reader = new FileReader(); + reader.onload = () => { + const image = new window.Image(); + image.onload = () => { + const size = 512; + const canvas = document.createElement('canvas'); + canvas.width = size; + canvas.height = size; + const ctx = canvas.getContext('2d'); + if (!ctx) { + setProcessingAvatar(false); + setAccountMessage({ type: 'error', text: '头像处理失败,请换一张图片' }); + return; + } + + const side = Math.min(image.width, image.height); + const sx = (image.width - side) / 2; + const sy = (image.height - side) / 2; + ctx.drawImage(image, sx, sy, side, side, 0, 0, size, size); + const avatarUrl = canvas.toDataURL('image/jpeg', 0.86); + setAccountForm(prev => ({ ...prev, avatarUrl })); + setProcessingAvatar(false); + }; + image.onerror = () => { + setProcessingAvatar(false); + setAccountMessage({ type: 'error', text: '头像读取失败,请换一张图片' }); + }; + image.src = String(reader.result || ''); + }; + reader.onerror = () => { + setProcessingAvatar(false); + setAccountMessage({ type: 'error', text: '头像读取失败,请换一张图片' }); + }; + reader.readAsDataURL(file); + }; + + const handleAccountSave = async () => { + if (!user || !accessToken) { + setAccountMessage({ type: 'error', text: '请先登录后再修改资料' }); + return; + } + + if (passwordForm.newPassword || passwordForm.confirmPassword || passwordForm.currentPassword) { + if (passwordForm.newPassword.length < 6) { + setAccountMessage({ type: 'error', text: '新密码至少需要 6 位' }); + return; + } + if (passwordForm.newPassword !== passwordForm.confirmPassword) { + setAccountMessage({ type: 'error', text: '两次输入的新密码不一致' }); + return; + } + } + + setSavingAccount(true); + setAccountMessage(null); + + try { + const payload: Record = { + email: accountForm.email, + nickname: accountForm.nickname, + phone: accountForm.phone, + avatarUrl: accountForm.avatarUrl, + }; + + if (passwordForm.newPassword) { + payload.currentPassword = passwordForm.currentPassword; + payload.newPassword = passwordForm.newPassword; + } + + const response = await fetch('/api/profile', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${accessToken}`, + }, + body: JSON.stringify(payload), + }); + const data = await response.json().catch(() => ({})); + + if (!response.ok) { + throw new Error(data.error || '保存失败'); + } + + if (data.profile) { + updateProfile({ + email: data.profile.email, + nickname: data.profile.nickname, + phone: data.profile.phone || null, + membershipTier: data.profile.membership_tier || user.membershipTier, + creditsBalance: data.profile.credits_balance ?? user.creditsBalance, + dailyQuotaUsed: data.profile.daily_quota_used ?? user.dailyQuotaUsed, + dailyQuotaLimit: data.profile.daily_quota_limit ?? user.dailyQuotaLimit, + avatarUrl: data.profile.avatar_url ?? user.avatarUrl, + createdAt: data.profile.created_at ?? user.createdAt, + emailVerified: data.profile.email_verified === true, + emailVerifiedAt: data.profile.email_verified_at ?? null, + }); + } + + setPasswordForm({ currentPassword: '', newPassword: '', confirmPassword: '' }); + setAccountMessage({ type: 'success', text: '账号资料已保存' }); + refreshProfile(); + } catch (error) { + setAccountMessage({ type: 'error', text: error instanceof Error ? error.message : '保存失败' }); + } finally { + setSavingAccount(false); + } + }; + + const handleSendProfileEmailCode = async () => { + if (!accessToken) { + setAccountMessage({ type: 'error', text: '请先登录后再验证邮箱' }); + return; + } + if (!isEmail(accountForm.email)) { + setAccountMessage({ type: 'error', text: '请输入正确的邮箱地址' }); + return; + } + setSendingEmailCode(true); + setAccountMessage(null); + try { + const response = await fetch('/api/email/send-profile-code', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${accessToken}`, + }, + body: JSON.stringify({ email: accountForm.email }), + }); + const data = await response.json().catch(() => ({})); + if (!response.ok) throw new Error(data.error || '验证码发送失败'); + setEmailVerifyCooldown(data.cooldown || 60); + setShowEmailVerify(true); + setAccountMessage({ type: 'success', text: data.message || '验证码已发送,请查收邮箱' }); + } catch (error) { + setAccountMessage({ type: 'error', text: error instanceof Error ? error.message : '验证码发送失败' }); + } finally { + setSendingEmailCode(false); + } + }; + + const handleVerifyProfileEmail = async () => { + if (!accessToken) return; + if (!isEmail(accountForm.email) || !emailVerifyCode) { + setAccountMessage({ type: 'error', text: '请填写邮箱和验证码' }); + return; + } + setVerifyingEmail(true); + try { + const response = await fetch('/api/email/verify-profile', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${accessToken}`, + }, + body: JSON.stringify({ email: accountForm.email, code: emailVerifyCode }), + }); + const data = await response.json().catch(() => ({})); + if (!response.ok) throw new Error(data.error || '邮箱验证失败'); + if (data.profile) { + updateProfile({ + email: data.profile.email, + nickname: data.profile.nickname, + phone: data.profile.phone || null, + membershipTier: data.profile.membership_tier || user?.membershipTier || 'free', + creditsBalance: data.profile.credits_balance ?? user?.creditsBalance ?? 0, + dailyQuotaUsed: data.profile.daily_quota_used ?? user?.dailyQuotaUsed ?? 0, + dailyQuotaLimit: data.profile.daily_quota_limit ?? user?.dailyQuotaLimit ?? 5, + avatarUrl: data.profile.avatar_url ?? user?.avatarUrl ?? null, + createdAt: data.profile.created_at ?? user?.createdAt ?? null, + emailVerified: data.profile.email_verified === true, + emailVerifiedAt: data.profile.email_verified_at ?? null, + }); + } + setShowEmailVerify(false); + setEmailVerifyCode(''); + setAccountMessage({ type: 'success', text: data.message || '邮箱验证成功' }); + refreshProfile(); + } catch (error) { + setAccountMessage({ type: 'error', text: error instanceof Error ? error.message : '邮箱验证失败' }); + } finally { + setVerifyingEmail(false); + } + }; + + // Not logged in (after hydration) - show login prompt + if (mounted && !isLoggedIn) { + return ( +
+ + +
+ +
+

尚未登录

+

登录后可以管理你的创作、积分和 API 密钥

+ +
+
+
+ ); + } + + // Before hydration - render placeholder to avoid SSR/client mismatch + if (!mounted) { + return ( +
+
+
+
+
+
+
+
+
+
+
+
+
+ ); + } + + return ( +
+
+ {/* Profile Header */} +
+
+
+
+ {profile.avatar_url ? ( + {profile.nickname} + ) : ( + profile.nickname[0] + )} +
+
+

{profile.nickname}

+
+ + {profile.role === 'admin' && } + {currentRole.label} + + {membershipEnabled && {tierInfo.name}} + + {profile.email_verified ? '邮箱已验证' : '邮箱未验证'} + + {profile.email} +
+
+
+ +
+ + {/* Quick Stats */} +
+ {membershipEnabled && ( + + +
+ +
+
+

{profile.credits_balance}

+

剩余积分

+
+
+
+ )} + {membershipEnabled && ( + + +
+ +
+
+

{profile.daily_quota_used}/{profile.daily_quota_limit}

+

今日额度

+
+
+
+ )} + + +
+ +
+
+

{creationRecords.length}

+

创作记录

+
+
+
+ {membershipEnabled && ( + + +
+ +
+
+

{tierInfo.name}

+

当前会员

+
+
+
+ )} +
+
+ + {/* Tabs */} + + + 账户 + {membershipEnabled && 会员} + {membershipEnabled && 积分} + {membershipEnabled && 订单} + 历史 + API + + + {/* Account Tab */} + + + + 账户信息 + 管理你的账户基本信息 + + + {accountMessage && ( +
+ {accountMessage.text} +
+ )} + +
+
+ {accountForm.avatarUrl ? ( + 头像预览 + ) : ( + (accountForm.nickname || profile.nickname || '用').slice(0, 1).toUpperCase() + )} + {processingAvatar && ( +
+ +
+ )} +
+
+ +
+ + {accountForm.avatarUrl && ( + + )} +
+

支持 JPG、PNG、WebP,系统会自动裁剪为方形头像。

+
+
+ +
+
+ + setAccountForm(prev => ({ ...prev, nickname: event.target.value }))} + /> +
+
+ +
+ setAccountForm(prev => ({ ...prev, email: event.target.value }))} + /> + +
+

+ {profile.email_verified && accountForm.email === profile.email ? '该邮箱已验证,可用于找回密码。' : '邮箱验证后可用于找回密码和安全通知。'} +

+
+
+ + setAccountForm(prev => ({ ...prev, phone: event.target.value }))} + /> +
+
+ + +
+
+ + + +
+

安全设置

+
+
+ + setPasswordForm(prev => ({ ...prev, currentPassword: event.target.value }))} + autoComplete="current-password" + /> +
+
+ + setPasswordForm(prev => ({ ...prev, newPassword: event.target.value }))} + autoComplete="new-password" + /> +
+
+ + setPasswordForm(prev => ({ ...prev, confirmPassword: event.target.value }))} + autoComplete="new-password" + /> +
+
+
+ +
+ +
+
+
+
+ + {/* Membership Tab */} + {membershipEnabled && +
+ + + 会员订阅 + 升级会员享受更多创作权益 + + +
+ {membershipTiers.map((tier) => { + const tierRank = membershipRank[tier.tier] ?? 0; + const isCurrentTier = tier.tier === normalizedMembershipTier; + const isUnavailableTier = tierRank <= currentMembershipRank; + return ( + + +
+

{tier.name}

+ {isCurrentTier && ( + 当前 + )} +
+
+ ¥{tier.price} + /月 +
+
    + {tier.features.map((f) => ( +
  • +
    + {f} +
  • + ))} +
+ +
+
+ ); + })} +
+
+
} + + {/* Credits Tab */} + {membershipEnabled && + + } + + {/* Orders Tab */} + {membershipEnabled && + + } + + {/* Works Tab */} + + + + + {/* API Tab */} + + + +
+ + + + 验证邮箱 + 验证码已发送至 {accountForm.email},请在有效期内完成验证。 + +
+ + setEmailVerifyCode(sanitizeCode(event.target.value))} + className="uppercase" + maxLength={10} + /> +
+
+ + +
+
+
+
+
+ ); +} diff --git a/src/app/robots.ts b/src/app/robots.ts new file mode 100644 index 0000000..f69940a --- /dev/null +++ b/src/app/robots.ts @@ -0,0 +1,11 @@ +import { MetadataRoute } from 'next'; + +export default function robots(): MetadataRoute.Robots { + return { + rules: { + userAgent: '*', + allow: '/', + disallow: ['/api/', '/_next/', '/static/'], + }, + }; +} diff --git a/src/app/terms/page.tsx b/src/app/terms/page.tsx new file mode 100644 index 0000000..4cd24fb --- /dev/null +++ b/src/app/terms/page.tsx @@ -0,0 +1,5 @@ +import { SitePolicyPage } from '@/components/site-policy-page'; + +export default function TermsPage() { + return ; +} diff --git a/src/components/account-theme-sync.tsx b/src/components/account-theme-sync.tsx new file mode 100644 index 0000000..17c6711 --- /dev/null +++ b/src/components/account-theme-sync.tsx @@ -0,0 +1,19 @@ +'use client'; + +import { useEffect } from 'react'; +import { useTheme } from 'next-themes'; +import { useAuth } from '@/lib/auth-store'; + +export function AccountThemeSync() { + const { isLoggedIn, user } = useAuth(); + const { theme, setTheme } = useTheme(); + + useEffect(() => { + if (!isLoggedIn || !user?.preferredTheme) return; + if (theme !== user.preferredTheme) { + setTheme(user.preferredTheme); + } + }, [isLoggedIn, user?.preferredTheme, theme, setTheme]); + + return null; +} diff --git a/src/components/admin/announcement-tab.tsx b/src/components/admin/announcement-tab.tsx new file mode 100644 index 0000000..243bf4b --- /dev/null +++ b/src/components/admin/announcement-tab.tsx @@ -0,0 +1,388 @@ +'use client'; + +import { useState, useEffect, useRef, useCallback } from 'react'; +import { useAuth } from '@/lib/auth-store'; +import { useAdminConfig, type CreditPricing } from '@/lib/admin-store'; +import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; +import { Badge } from '@/components/ui/badge'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { Separator } from '@/components/ui/separator'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; +import { Textarea } from '@/components/ui/textarea'; +import { Switch } from '@/components/ui/switch'; +import { useSiteConfig } from '@/lib/site-config'; +import ReactMarkdown from 'react-markdown'; +import remarkGfm from 'remark-gfm'; +import { AlertCircle, AlertTriangle, Calendar, Check, CheckCircle2, Coins, CreditCard, Crown, Database, Download, Edit3, FileUp, Gift, Globe, Loader2, Megaphone, Pencil, Plus, Receipt, Save, ToggleLeft, Trash2, Upload, X, Zap } from 'lucide-react'; +import { toast } from 'sonner'; +// ============================================================ +// Tab 5: Announcement Management +// ============================================================ + +interface ServerAnnouncement { + id: string; + title: string; + content: string; + start_date?: string | null; + end_date?: string | null; + starts_at?: string | null; + expires_at?: string | null; + enabled?: boolean; + is_active?: boolean; + created_at: string; +} + +function announcementStartDate(ann: ServerAnnouncement): string { + return ann.start_date || ann.starts_at || ''; +} + +function announcementEndDate(ann: ServerAnnouncement): string { + return ann.end_date || ann.expires_at || ''; +} + +function announcementEnabled(ann: ServerAnnouncement): boolean { + return ann.enabled !== false && ann.is_active !== false; +} + +function formatDateInputValue(value: string): string { + if (!value) return ''; + const date = new Date(value); + if (Number.isNaN(date.getTime())) return ''; + const offset = date.getTimezoneOffset() * 60000; + return new Date(date.getTime() - offset).toISOString().slice(0, 16); +} + +export default function AnnouncementTab() { + const { accessToken } = useAuth(); + const [announcements, setAnnouncements] = useState([]); + const [loading, setLoading] = useState(true); + const [showForm, setShowForm] = useState(false); + const [editingId, setEditingId] = useState(null); + + // Form state + const [formTitle, setFormTitle] = useState(''); + const [formContent, setFormContent] = useState(''); + const [formStartDate, setFormStartDate] = useState(''); + const [formEndDate, setFormEndDate] = useState(''); + const [formEnabled, setFormEnabled] = useState(true); + const [previewMode, setPreviewMode] = useState(false); + const [now, setNow] = useState(0); + const [saving, setSaving] = useState(false); + + useEffect(() => { setNow(Date.now()); }, []); + + // Fetch announcements from server API + const fetchAnnouncements = useCallback(async () => { + try { + const res = await fetch('/api/announcements'); + if (res.ok) { + const data = await res.json(); + setAnnouncements(data || []); + } + } catch (err) { + console.error('[AnnouncementTab] fetch error:', err); + } finally { + setLoading(false); + } + }, []); + + useEffect(() => { fetchAnnouncements(); }, [fetchAnnouncements]); + + const resetForm = () => { + setFormTitle(''); + setFormContent(''); + setFormStartDate(''); + setFormEndDate(''); + setFormEnabled(true); + setEditingId(null); + setShowForm(false); + }; + + const handleEdit = (ann: ServerAnnouncement) => { + setEditingId(ann.id); + setFormTitle(ann.title); + setFormContent(ann.content); + setFormStartDate(formatDateInputValue(announcementStartDate(ann))); + setFormEndDate(formatDateInputValue(announcementEndDate(ann))); + setFormEnabled(announcementEnabled(ann)); + setShowForm(true); + }; + + const handleSave = async () => { + if (!formTitle.trim() || !formContent.trim()) { + toast.error('请填写公告标题和内容'); + return; + } + if (!formStartDate || !formEndDate) { + toast.error('请设置有效期'); + return; + } + + setSaving(true); + try { + const body = { + title: formTitle.trim(), + content: formContent.trim(), + startDate: new Date(formStartDate).toISOString(), + endDate: new Date(formEndDate).toISOString(), + enabled: formEnabled, + }; + + let res: Response; + if (editingId) { + res = await fetch('/api/announcements', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + ...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}), + }, + body: JSON.stringify({ id: editingId, ...body }), + }); + } else { + res = await fetch('/api/announcements', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + ...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}), + }, + body: JSON.stringify(body), + }); + } + + if (res.ok) { + toast.success(editingId ? '公告已更新' : '公告已创建'); + resetForm(); + fetchAnnouncements(); + } else { + const err = await res.json(); + toast.error(err.error || '操作失败'); + } + } catch { + toast.error('网络错误,请重试'); + } finally { + setSaving(false); + } + }; + + const handleDelete = async (id: string) => { + try { + const res = await fetch(`/api/announcements?id=${encodeURIComponent(id)}`, { + method: 'DELETE', + headers: accessToken ? { Authorization: `Bearer ${accessToken}` } : undefined, + }); + if (res.ok) { + toast.success('公告已删除'); + fetchAnnouncements(); + } else { + toast.error('删除失败'); + } + } catch { + toast.error('网络错误,请重试'); + } + }; + + const handleToggleEnabled = async (id: string, enabled: boolean) => { + try { + const res = await fetch('/api/announcements', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + ...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}), + }, + body: JSON.stringify({ id, enabled }), + }); + if (res.ok) { + fetchAnnouncements(); + } + } catch { + toast.error('操作失败'); + } + }; + + const isActive = (ann: ServerAnnouncement) => { + if (!announcementEnabled(ann)) return false; + if (!now) return false; + const startValue = announcementStartDate(ann); + const endValue = announcementEndDate(ann); + const start = startValue ? new Date(startValue).getTime() : 0; + const endDate = endValue ? new Date(endValue) : null; + if (endDate) endDate.setHours(23, 59, 59, 999); + const end = endDate ? endDate.getTime() : Number.POSITIVE_INFINITY; + if (Number.isNaN(start) || Number.isNaN(end)) return false; + return now >= start && now <= end; + }; + + const getStatusBadge = (ann: ServerAnnouncement) => { + if (isActive(ann)) return 生效中; + if (!announcementEnabled(ann)) return 已禁用; + const startValue = announcementStartDate(ann); + if (now && startValue && now < new Date(startValue).getTime()) return 待生效; + return 已过期; + }; + + if (loading) { + return ( + + + 加载中... + + + ); + } + + return ( +
+ + +
+
+ + + 公告管理 + + 创建和管理首页弹窗公告,可设置有效期,所有访客可见 +
+ +
+
+ + {announcements.length === 0 ? ( +
+ +

暂无公告

+
+ ) : ( + announcements.map(ann => ( +
+
+ +
+
+
+ {ann.title} + {getStatusBadge(ann)} +
+

{ann.content}

+
+ + + {announcementStartDate(ann) ? new Date(announcementStartDate(ann)).toLocaleDateString('zh-CN') : '立即'} - {announcementEndDate(ann) ? new Date(announcementEndDate(ann)).toLocaleDateString('zh-CN') : '长期'} + +
+
+
+ handleToggleEnabled(ann.id, checked)} + /> + + +
+
+ )) + )} +
+
+ + {/* Create / Edit Form */} + {showForm && ( + + + {editingId ? '编辑公告' : '新建公告'} + 设置公告标题、内容和有效期 + + +
+ + setFormTitle(e.target.value)} + /> +
+
+
+ +
+ + +
+
+ {previewMode ? ( +
+ {formContent ? ( + {formContent} + ) : ( +

暂无内容,请先在编辑模式输入

+ )} +
+ ) : ( +

VSnJaEEj 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